hb-ot-shaper-use-machine.hh (37116B)
1 #line 1 "hb-ot-shaper-use-machine.rl" 2 /* 3 * Copyright © 2015 Mozilla Foundation. 4 * Copyright © 2015 Google, Inc. 5 * 6 * This is part of HarfBuzz, a text shaping library. 7 * 8 * Permission is hereby granted, without written agreement and without 9 * license or royalty fees, to use, copy, modify, and distribute this 10 * software and its documentation for any purpose, provided that the 11 * above copyright notice and the following two paragraphs appear in 12 * all copies of this software. 13 * 14 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 15 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 16 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 17 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 18 * DAMAGE. 19 * 20 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 21 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 22 * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 23 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 24 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 25 * 26 * Mozilla Author(s): Jonathan Kew 27 * Google Author(s): Behdad Esfahbod 28 */ 29 30 #ifndef HB_OT_SHAPER_USE_MACHINE_HH 31 #define HB_OT_SHAPER_USE_MACHINE_HH 32 33 #include "hb.hh" 34 35 #include "hb-ot-shaper-syllabic.hh" 36 37 /* buffer var allocations */ 38 #define use_category() ot_shaper_var_u8_category() 39 40 #define USE(Cat) use_syllable_machine_ex_##Cat 41 42 enum use_syllable_type_t { 43 use_virama_terminated_cluster, 44 use_sakot_terminated_cluster, 45 use_standard_cluster, 46 use_number_joiner_terminated_cluster, 47 use_numeral_cluster, 48 use_symbol_cluster, 49 use_hieroglyph_cluster, 50 use_broken_cluster, 51 use_non_cluster, 52 }; 53 54 55 #line 54 "hb-ot-shaper-use-machine.hh" 56 #define use_syllable_machine_ex_B 1u 57 #define use_syllable_machine_ex_CGJ 6u 58 #define use_syllable_machine_ex_CMAbv 31u 59 #define use_syllable_machine_ex_CMBlw 32u 60 #define use_syllable_machine_ex_CS 43u 61 #define use_syllable_machine_ex_FAbv 24u 62 #define use_syllable_machine_ex_FBlw 25u 63 #define use_syllable_machine_ex_FMAbv 45u 64 #define use_syllable_machine_ex_FMBlw 46u 65 #define use_syllable_machine_ex_FMPst 47u 66 #define use_syllable_machine_ex_FPst 26u 67 #define use_syllable_machine_ex_G 49u 68 #define use_syllable_machine_ex_GB 5u 69 #define use_syllable_machine_ex_H 12u 70 #define use_syllable_machine_ex_HM 54u 71 #define use_syllable_machine_ex_HN 13u 72 #define use_syllable_machine_ex_HR 55u 73 #define use_syllable_machine_ex_HVM 53u 74 #define use_syllable_machine_ex_IS 44u 75 #define use_syllable_machine_ex_J 50u 76 #define use_syllable_machine_ex_MAbv 27u 77 #define use_syllable_machine_ex_MBlw 28u 78 #define use_syllable_machine_ex_MPre 30u 79 #define use_syllable_machine_ex_MPst 29u 80 #define use_syllable_machine_ex_N 4u 81 #define use_syllable_machine_ex_O 0u 82 #define use_syllable_machine_ex_R 18u 83 #define use_syllable_machine_ex_RK 56u 84 #define use_syllable_machine_ex_SB 51u 85 #define use_syllable_machine_ex_SE 52u 86 #define use_syllable_machine_ex_SMAbv 41u 87 #define use_syllable_machine_ex_SMBlw 42u 88 #define use_syllable_machine_ex_SUB 11u 89 #define use_syllable_machine_ex_Sk 48u 90 #define use_syllable_machine_ex_VAbv 33u 91 #define use_syllable_machine_ex_VBlw 34u 92 #define use_syllable_machine_ex_VMAbv 37u 93 #define use_syllable_machine_ex_VMBlw 38u 94 #define use_syllable_machine_ex_VMPre 23u 95 #define use_syllable_machine_ex_VMPst 39u 96 #define use_syllable_machine_ex_VPre 22u 97 #define use_syllable_machine_ex_VPst 35u 98 #define use_syllable_machine_ex_WJ 16u 99 #define use_syllable_machine_ex_ZWNJ 14u 100 101 102 #line 99 "hb-ot-shaper-use-machine.hh" 103 static const unsigned char _use_syllable_machine_trans_keys[] = { 104 49u, 51u, 0u, 56u, 11u, 56u, 11u, 56u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 105 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 106 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 107 12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u, 1u, 48u, 14u, 42u, 14u, 42u, 11u, 56u, 108 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 109 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 110 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u, 111 1u, 14u, 1u, 48u, 14u, 14u, 13u, 14u, 4u, 14u, 11u, 56u, 11u, 56u, 1u, 53u, 112 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 113 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 114 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u, 1u, 14u, 115 1u, 48u, 14u, 14u, 11u, 56u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 116 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 117 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 118 12u, 53u, 11u, 56u, 1u, 14u, 1u, 48u, 4u, 14u, 13u, 14u, 1u, 56u, 14u, 42u, 119 14u, 42u, 1u, 5u, 14u, 55u, 14u, 51u, 14u, 52u, 14u, 54u, 11u, 56u, 0 120 }; 121 122 static const char _use_syllable_machine_key_spans[] = { 123 3, 57, 46, 46, 53, 35, 34, 34, 124 34, 33, 33, 1, 35, 35, 35, 14, 125 35, 40, 40, 40, 40, 42, 40, 42, 126 42, 42, 46, 14, 48, 29, 29, 46, 127 53, 35, 34, 34, 34, 33, 33, 1, 128 35, 35, 35, 14, 35, 40, 40, 40, 129 40, 42, 40, 42, 42, 42, 46, 14, 130 14, 48, 1, 2, 11, 46, 46, 53, 131 35, 34, 34, 34, 33, 33, 1, 35, 132 35, 35, 14, 35, 40, 40, 40, 40, 133 42, 40, 42, 42, 42, 46, 14, 14, 134 48, 1, 46, 53, 35, 34, 34, 34, 135 33, 33, 1, 35, 35, 35, 14, 35, 136 40, 40, 40, 40, 42, 40, 42, 42, 137 42, 46, 14, 48, 11, 2, 56, 29, 138 29, 5, 42, 38, 39, 41, 46 139 }; 140 141 static const short _use_syllable_machine_index_offsets[] = { 142 0, 4, 62, 109, 156, 210, 246, 281, 143 316, 351, 385, 419, 421, 457, 493, 529, 144 544, 580, 621, 662, 703, 744, 787, 828, 145 871, 914, 957, 1004, 1019, 1068, 1098, 1128, 146 1175, 1229, 1265, 1300, 1335, 1370, 1404, 1438, 147 1440, 1476, 1512, 1548, 1563, 1599, 1640, 1681, 148 1722, 1763, 1806, 1847, 1890, 1933, 1976, 2023, 149 2038, 2053, 2102, 2104, 2107, 2119, 2166, 2213, 150 2267, 2303, 2338, 2373, 2408, 2442, 2476, 2478, 151 2514, 2550, 2586, 2601, 2637, 2678, 2719, 2760, 152 2801, 2844, 2885, 2928, 2971, 3014, 3061, 3076, 153 3091, 3140, 3142, 3189, 3243, 3279, 3314, 3349, 154 3384, 3418, 3452, 3454, 3490, 3526, 3562, 3577, 155 3613, 3654, 3695, 3736, 3777, 3820, 3861, 3904, 156 3947, 3990, 4037, 4052, 4101, 4113, 4116, 4173, 157 4203, 4233, 4239, 4282, 4321, 4361, 4403 158 }; 159 160 static const unsigned char _use_syllable_machine_indicies[] = { 161 1, 0, 2, 0, 3, 4, 5, 5, 162 6, 7, 5, 5, 5, 5, 5, 8, 163 9, 10, 11, 5, 5, 5, 12, 5, 164 5, 5, 13, 14, 15, 16, 17, 18, 165 19, 20, 21, 8, 22, 23, 24, 25, 166 5, 26, 27, 28, 5, 29, 30, 31, 167 32, 33, 34, 35, 32, 1, 5, 36, 168 5, 37, 5, 5, 38, 5, 40, 41, 169 39, 42, 39, 39, 39, 39, 39, 39, 170 39, 43, 44, 45, 46, 47, 48, 49, 171 50, 51, 40, 52, 53, 54, 55, 39, 172 56, 57, 58, 39, 59, 60, 39, 61, 173 62, 63, 64, 61, 39, 39, 39, 39, 174 65, 39, 39, 64, 39, 40, 41, 39, 175 42, 39, 39, 39, 39, 39, 39, 39, 176 43, 44, 45, 46, 47, 48, 49, 50, 177 51, 40, 52, 53, 54, 55, 39, 56, 178 57, 58, 39, 39, 39, 39, 61, 62, 179 63, 64, 61, 39, 39, 39, 39, 65, 180 39, 39, 64, 39, 40, 39, 39, 39, 181 39, 39, 39, 39, 39, 39, 39, 39, 182 39, 42, 39, 39, 39, 39, 39, 39, 183 39, 39, 44, 45, 46, 47, 39, 39, 184 39, 39, 39, 39, 39, 39, 39, 39, 185 56, 57, 58, 39, 39, 39, 39, 39, 186 62, 63, 64, 66, 39, 39, 39, 39, 187 44, 39, 42, 39, 39, 39, 39, 39, 188 39, 39, 39, 44, 45, 46, 47, 39, 189 39, 39, 39, 39, 39, 39, 39, 39, 190 39, 56, 57, 58, 39, 39, 39, 39, 191 39, 62, 63, 64, 66, 39, 42, 39, 192 39, 39, 39, 39, 39, 39, 39, 39, 193 45, 46, 47, 39, 39, 39, 39, 39, 194 39, 39, 39, 39, 39, 39, 39, 39, 195 39, 39, 39, 39, 39, 62, 63, 64, 196 39, 42, 39, 39, 39, 39, 39, 39, 197 39, 39, 39, 39, 46, 47, 39, 39, 198 39, 39, 39, 39, 39, 39, 39, 39, 199 39, 39, 39, 39, 39, 39, 39, 39, 200 62, 63, 64, 39, 42, 39, 39, 39, 201 39, 39, 39, 39, 39, 39, 39, 39, 202 47, 39, 39, 39, 39, 39, 39, 39, 203 39, 39, 39, 39, 39, 39, 39, 39, 204 39, 39, 39, 62, 63, 64, 39, 42, 205 39, 39, 39, 39, 39, 39, 39, 39, 206 39, 39, 39, 39, 39, 39, 39, 39, 207 39, 39, 39, 39, 39, 39, 39, 39, 208 39, 39, 39, 39, 39, 39, 62, 63, 209 39, 42, 39, 39, 39, 39, 39, 39, 210 39, 39, 39, 39, 39, 39, 39, 39, 211 39, 39, 39, 39, 39, 39, 39, 39, 212 39, 39, 39, 39, 39, 39, 39, 39, 213 39, 63, 39, 42, 39, 42, 39, 39, 214 39, 39, 39, 39, 39, 39, 39, 45, 215 46, 47, 39, 39, 39, 39, 39, 39, 216 39, 39, 39, 39, 56, 57, 58, 39, 217 39, 39, 39, 39, 62, 63, 64, 66, 218 39, 42, 39, 39, 39, 39, 39, 39, 219 39, 39, 39, 45, 46, 47, 39, 39, 220 39, 39, 39, 39, 39, 39, 39, 39, 221 39, 57, 58, 39, 39, 39, 39, 39, 222 62, 63, 64, 66, 39, 42, 39, 39, 223 39, 39, 39, 39, 39, 39, 39, 45, 224 46, 47, 39, 39, 39, 39, 39, 39, 225 39, 39, 39, 39, 39, 39, 58, 39, 226 39, 39, 39, 39, 62, 63, 64, 66, 227 39, 67, 39, 39, 39, 39, 39, 39, 228 39, 39, 39, 39, 39, 39, 42, 39, 229 42, 39, 39, 39, 39, 39, 39, 39, 230 39, 39, 45, 46, 47, 39, 39, 39, 231 39, 39, 39, 39, 39, 39, 39, 39, 232 39, 39, 39, 39, 39, 39, 39, 62, 233 63, 64, 66, 39, 42, 39, 39, 39, 234 39, 39, 39, 39, 43, 44, 45, 46, 235 47, 39, 39, 39, 39, 39, 39, 53, 236 54, 55, 39, 56, 57, 58, 39, 39, 237 39, 39, 39, 62, 63, 64, 66, 39, 238 39, 39, 39, 44, 39, 42, 39, 39, 239 39, 39, 39, 39, 39, 39, 44, 45, 240 46, 47, 39, 39, 39, 39, 39, 39, 241 53, 54, 55, 39, 56, 57, 58, 39, 242 39, 39, 39, 39, 62, 63, 64, 66, 243 39, 39, 39, 39, 44, 39, 42, 39, 244 39, 39, 39, 39, 39, 39, 39, 44, 245 45, 46, 47, 39, 39, 39, 39, 39, 246 39, 39, 54, 55, 39, 56, 57, 58, 247 39, 39, 39, 39, 39, 62, 63, 64, 248 66, 39, 39, 39, 39, 44, 39, 42, 249 39, 39, 39, 39, 39, 39, 39, 39, 250 44, 45, 46, 47, 39, 39, 39, 39, 251 39, 39, 39, 39, 55, 39, 56, 57, 252 58, 39, 39, 39, 39, 39, 62, 63, 253 64, 66, 39, 39, 39, 39, 44, 39, 254 68, 39, 42, 39, 39, 39, 39, 39, 255 39, 39, 43, 44, 45, 46, 47, 39, 256 49, 50, 39, 39, 39, 53, 54, 55, 257 39, 56, 57, 58, 39, 39, 39, 39, 258 39, 62, 63, 64, 66, 39, 39, 39, 259 39, 44, 39, 42, 39, 39, 39, 39, 260 39, 39, 39, 39, 44, 45, 46, 47, 261 39, 39, 39, 39, 39, 39, 39, 39, 262 39, 39, 56, 57, 58, 39, 39, 39, 263 39, 39, 62, 63, 64, 66, 39, 39, 264 39, 39, 44, 39, 68, 39, 42, 39, 265 39, 39, 39, 39, 39, 39, 43, 44, 266 45, 46, 47, 39, 39, 50, 39, 39, 267 39, 53, 54, 55, 39, 56, 57, 58, 268 39, 39, 39, 39, 39, 62, 63, 64, 269 66, 39, 39, 39, 39, 44, 39, 68, 270 39, 42, 39, 39, 39, 39, 39, 39, 271 39, 43, 44, 45, 46, 47, 39, 39, 272 39, 39, 39, 39, 53, 54, 55, 39, 273 56, 57, 58, 39, 39, 39, 39, 39, 274 62, 63, 64, 66, 39, 39, 39, 39, 275 44, 39, 68, 39, 42, 39, 39, 39, 276 39, 39, 39, 39, 43, 44, 45, 46, 277 47, 48, 49, 50, 39, 39, 39, 53, 278 54, 55, 39, 56, 57, 58, 39, 39, 279 39, 39, 39, 62, 63, 64, 66, 39, 280 39, 39, 39, 44, 39, 40, 41, 39, 281 42, 39, 39, 39, 39, 39, 39, 39, 282 43, 44, 45, 46, 47, 48, 49, 50, 283 51, 39, 52, 53, 54, 55, 39, 56, 284 57, 58, 39, 39, 39, 39, 61, 62, 285 63, 64, 61, 39, 39, 39, 39, 65, 286 39, 39, 64, 39, 40, 39, 39, 39, 287 39, 39, 39, 39, 39, 39, 39, 39, 288 39, 42, 39, 40, 39, 39, 39, 39, 289 39, 39, 39, 39, 39, 39, 39, 39, 290 42, 39, 39, 39, 39, 39, 39, 39, 291 39, 44, 45, 46, 47, 39, 39, 39, 292 39, 39, 39, 39, 39, 39, 39, 56, 293 57, 58, 39, 39, 39, 39, 39, 62, 294 63, 64, 66, 39, 42, 39, 39, 39, 295 39, 39, 39, 39, 39, 39, 39, 39, 296 39, 39, 39, 39, 39, 39, 39, 39, 297 39, 39, 39, 39, 39, 39, 39, 59, 298 60, 39, 42, 39, 39, 39, 39, 39, 299 39, 39, 39, 39, 39, 39, 39, 39, 300 39, 39, 39, 39, 39, 39, 39, 39, 301 39, 39, 39, 39, 39, 39, 60, 39, 302 4, 70, 69, 71, 69, 69, 69, 69, 303 69, 69, 69, 72, 73, 74, 75, 76, 304 77, 78, 79, 80, 4, 81, 82, 83, 305 84, 69, 85, 86, 87, 69, 69, 69, 306 69, 88, 89, 90, 91, 92, 69, 69, 307 69, 69, 93, 69, 69, 94, 69, 4, 308 69, 69, 69, 69, 69, 69, 69, 69, 309 69, 69, 69, 69, 71, 69, 69, 69, 310 69, 69, 69, 69, 69, 73, 74, 75, 311 76, 69, 69, 69, 69, 69, 69, 69, 312 69, 69, 69, 85, 86, 87, 69, 69, 313 69, 69, 69, 89, 90, 91, 95, 69, 314 69, 69, 69, 73, 69, 71, 69, 69, 315 69, 69, 69, 69, 69, 69, 73, 74, 316 75, 76, 69, 69, 69, 69, 69, 69, 317 69, 69, 69, 69, 85, 86, 87, 69, 318 69, 69, 69, 69, 89, 90, 91, 95, 319 69, 71, 69, 69, 69, 69, 69, 69, 320 69, 69, 69, 74, 75, 76, 69, 69, 321 69, 69, 69, 69, 69, 69, 69, 69, 322 69, 69, 69, 69, 69, 69, 69, 69, 323 89, 90, 91, 69, 71, 69, 69, 69, 324 69, 69, 69, 69, 69, 69, 69, 75, 325 76, 69, 69, 69, 69, 69, 69, 69, 326 69, 69, 69, 69, 69, 69, 69, 69, 327 69, 69, 69, 89, 90, 91, 69, 71, 328 69, 69, 69, 69, 69, 69, 69, 69, 329 69, 69, 69, 76, 69, 69, 69, 69, 330 69, 69, 69, 69, 69, 69, 69, 69, 331 69, 69, 69, 69, 69, 69, 89, 90, 332 91, 69, 71, 69, 69, 69, 69, 69, 333 69, 69, 69, 69, 69, 69, 69, 69, 334 69, 69, 69, 69, 69, 69, 69, 69, 335 69, 69, 69, 69, 69, 69, 69, 69, 336 69, 89, 90, 69, 71, 69, 69, 69, 337 69, 69, 69, 69, 69, 69, 69, 69, 338 69, 69, 69, 69, 69, 69, 69, 69, 339 69, 69, 69, 69, 69, 69, 69, 69, 340 69, 69, 69, 69, 90, 69, 71, 69, 341 71, 69, 69, 69, 69, 69, 69, 69, 342 69, 69, 74, 75, 76, 69, 69, 69, 343 69, 69, 69, 69, 69, 69, 69, 85, 344 86, 87, 69, 69, 69, 69, 69, 89, 345 90, 91, 95, 69, 71, 69, 69, 69, 346 69, 69, 69, 69, 69, 69, 74, 75, 347 76, 69, 69, 69, 69, 69, 69, 69, 348 69, 69, 69, 69, 86, 87, 69, 69, 349 69, 69, 69, 89, 90, 91, 95, 69, 350 71, 69, 69, 69, 69, 69, 69, 69, 351 69, 69, 74, 75, 76, 69, 69, 69, 352 69, 69, 69, 69, 69, 69, 69, 69, 353 69, 87, 69, 69, 69, 69, 69, 89, 354 90, 91, 95, 69, 97, 96, 96, 96, 355 96, 96, 96, 96, 96, 96, 96, 96, 356 96, 98, 96, 71, 69, 69, 69, 69, 357 69, 69, 69, 69, 69, 74, 75, 76, 358 69, 69, 69, 69, 69, 69, 69, 69, 359 69, 69, 69, 69, 69, 69, 69, 69, 360 69, 69, 89, 90, 91, 95, 69, 71, 361 69, 69, 69, 69, 69, 69, 69, 72, 362 73, 74, 75, 76, 69, 69, 69, 69, 363 69, 69, 82, 83, 84, 69, 85, 86, 364 87, 69, 69, 69, 69, 69, 89, 90, 365 91, 95, 69, 69, 69, 69, 73, 69, 366 71, 69, 69, 69, 69, 69, 69, 69, 367 69, 73, 74, 75, 76, 69, 69, 69, 368 69, 69, 69, 82, 83, 84, 69, 85, 369 86, 87, 69, 69, 69, 69, 69, 89, 370 90, 91, 95, 69, 69, 69, 69, 73, 371 69, 71, 69, 69, 69, 69, 69, 69, 372 69, 69, 73, 74, 75, 76, 69, 69, 373 69, 69, 69, 69, 69, 83, 84, 69, 374 85, 86, 87, 69, 69, 69, 69, 69, 375 89, 90, 91, 95, 69, 69, 69, 69, 376 73, 69, 71, 69, 69, 69, 69, 69, 377 69, 69, 69, 73, 74, 75, 76, 69, 378 69, 69, 69, 69, 69, 69, 69, 84, 379 69, 85, 86, 87, 69, 69, 69, 69, 380 69, 89, 90, 91, 95, 69, 69, 69, 381 69, 73, 69, 99, 69, 71, 69, 69, 382 69, 69, 69, 69, 69, 72, 73, 74, 383 75, 76, 69, 78, 79, 69, 69, 69, 384 82, 83, 84, 69, 85, 86, 87, 69, 385 69, 69, 69, 69, 89, 90, 91, 95, 386 69, 69, 69, 69, 73, 69, 71, 69, 387 69, 69, 69, 69, 69, 69, 69, 73, 388 74, 75, 76, 69, 69, 69, 69, 69, 389 69, 69, 69, 69, 69, 85, 86, 87, 390 69, 69, 69, 69, 69, 89, 90, 91, 391 95, 69, 69, 69, 69, 73, 69, 99, 392 69, 71, 69, 69, 69, 69, 69, 69, 393 69, 72, 73, 74, 75, 76, 69, 69, 394 79, 69, 69, 69, 82, 83, 84, 69, 395 85, 86, 87, 69, 69, 69, 69, 69, 396 89, 90, 91, 95, 69, 69, 69, 69, 397 73, 69, 99, 69, 71, 69, 69, 69, 398 69, 69, 69, 69, 72, 73, 74, 75, 399 76, 69, 69, 69, 69, 69, 69, 82, 400 83, 84, 69, 85, 86, 87, 69, 69, 401 69, 69, 69, 89, 90, 91, 95, 69, 402 69, 69, 69, 73, 69, 99, 69, 71, 403 69, 69, 69, 69, 69, 69, 69, 72, 404 73, 74, 75, 76, 77, 78, 79, 69, 405 69, 69, 82, 83, 84, 69, 85, 86, 406 87, 69, 69, 69, 69, 69, 89, 90, 407 91, 95, 69, 69, 69, 69, 73, 69, 408 4, 70, 69, 71, 69, 69, 69, 69, 409 69, 69, 69, 72, 73, 74, 75, 76, 410 77, 78, 79, 80, 69, 81, 82, 83, 411 84, 69, 85, 86, 87, 69, 69, 69, 412 69, 88, 89, 90, 91, 92, 69, 69, 413 69, 69, 93, 69, 69, 94, 69, 4, 414 100, 100, 100, 100, 100, 100, 100, 100, 415 100, 100, 100, 100, 101, 100, 4, 96, 416 96, 96, 96, 96, 96, 96, 96, 96, 417 96, 96, 96, 98, 96, 4, 69, 69, 418 69, 69, 69, 69, 69, 69, 69, 69, 419 69, 69, 71, 69, 69, 69, 69, 69, 420 69, 69, 69, 73, 74, 75, 76, 69, 421 69, 69, 69, 69, 69, 69, 69, 69, 422 69, 85, 86, 87, 69, 69, 69, 69, 423 69, 89, 90, 91, 95, 69, 101, 100, 424 103, 104, 102, 6, 105, 105, 105, 105, 425 105, 105, 105, 105, 105, 106, 105, 107, 426 108, 69, 71, 69, 69, 69, 69, 69, 427 69, 69, 109, 110, 111, 112, 113, 114, 428 115, 116, 117, 107, 118, 119, 120, 121, 429 69, 122, 123, 124, 69, 59, 60, 69, 430 125, 126, 127, 128, 129, 69, 69, 69, 431 69, 130, 69, 69, 131, 69, 107, 108, 432 69, 71, 69, 69, 69, 69, 69, 69, 433 69, 109, 110, 111, 112, 113, 114, 115, 434 116, 117, 107, 118, 119, 120, 121, 69, 435 122, 123, 124, 69, 69, 69, 69, 125, 436 126, 127, 128, 129, 69, 69, 69, 69, 437 130, 69, 69, 131, 69, 107, 69, 69, 438 69, 69, 69, 69, 69, 69, 69, 69, 439 69, 69, 71, 69, 69, 69, 69, 69, 440 69, 69, 69, 110, 111, 112, 113, 69, 441 69, 69, 69, 69, 69, 69, 69, 69, 442 69, 122, 123, 124, 69, 69, 69, 69, 443 69, 126, 127, 128, 132, 69, 69, 69, 444 69, 110, 69, 71, 69, 69, 69, 69, 445 69, 69, 69, 69, 110, 111, 112, 113, 446 69, 69, 69, 69, 69, 69, 69, 69, 447 69, 69, 122, 123, 124, 69, 69, 69, 448 69, 69, 126, 127, 128, 132, 69, 71, 449 69, 69, 69, 69, 69, 69, 69, 69, 450 69, 111, 112, 113, 69, 69, 69, 69, 451 69, 69, 69, 69, 69, 69, 69, 69, 452 69, 69, 69, 69, 69, 69, 126, 127, 453 128, 69, 71, 69, 69, 69, 69, 69, 454 69, 69, 69, 69, 69, 112, 113, 69, 455 69, 69, 69, 69, 69, 69, 69, 69, 456 69, 69, 69, 69, 69, 69, 69, 69, 457 69, 126, 127, 128, 69, 71, 69, 69, 458 69, 69, 69, 69, 69, 69, 69, 69, 459 69, 113, 69, 69, 69, 69, 69, 69, 460 69, 69, 69, 69, 69, 69, 69, 69, 461 69, 69, 69, 69, 126, 127, 128, 69, 462 71, 69, 69, 69, 69, 69, 69, 69, 463 69, 69, 69, 69, 69, 69, 69, 69, 464 69, 69, 69, 69, 69, 69, 69, 69, 465 69, 69, 69, 69, 69, 69, 69, 126, 466 127, 69, 71, 69, 69, 69, 69, 69, 467 69, 69, 69, 69, 69, 69, 69, 69, 468 69, 69, 69, 69, 69, 69, 69, 69, 469 69, 69, 69, 69, 69, 69, 69, 69, 470 69, 69, 127, 69, 71, 69, 71, 69, 471 69, 69, 69, 69, 69, 69, 69, 69, 472 111, 112, 113, 69, 69, 69, 69, 69, 473 69, 69, 69, 69, 69, 122, 123, 124, 474 69, 69, 69, 69, 69, 126, 127, 128, 475 132, 69, 71, 69, 69, 69, 69, 69, 476 69, 69, 69, 69, 111, 112, 113, 69, 477 69, 69, 69, 69, 69, 69, 69, 69, 478 69, 69, 123, 124, 69, 69, 69, 69, 479 69, 126, 127, 128, 132, 69, 71, 69, 480 69, 69, 69, 69, 69, 69, 69, 69, 481 111, 112, 113, 69, 69, 69, 69, 69, 482 69, 69, 69, 69, 69, 69, 69, 124, 483 69, 69, 69, 69, 69, 126, 127, 128, 484 132, 69, 133, 96, 96, 96, 96, 96, 485 96, 96, 96, 96, 96, 96, 96, 98, 486 96, 71, 69, 69, 69, 69, 69, 69, 487 69, 69, 69, 111, 112, 113, 69, 69, 488 69, 69, 69, 69, 69, 69, 69, 69, 489 69, 69, 69, 69, 69, 69, 69, 69, 490 126, 127, 128, 132, 69, 71, 69, 69, 491 69, 69, 69, 69, 69, 109, 110, 111, 492 112, 113, 69, 69, 69, 69, 69, 69, 493 119, 120, 121, 69, 122, 123, 124, 69, 494 69, 69, 69, 69, 126, 127, 128, 132, 495 69, 69, 69, 69, 110, 69, 71, 69, 496 69, 69, 69, 69, 69, 69, 69, 110, 497 111, 112, 113, 69, 69, 69, 69, 69, 498 69, 119, 120, 121, 69, 122, 123, 124, 499 69, 69, 69, 69, 69, 126, 127, 128, 500 132, 69, 69, 69, 69, 110, 69, 71, 501 69, 69, 69, 69, 69, 69, 69, 69, 502 110, 111, 112, 113, 69, 69, 69, 69, 503 69, 69, 69, 120, 121, 69, 122, 123, 504 124, 69, 69, 69, 69, 69, 126, 127, 505 128, 132, 69, 69, 69, 69, 110, 69, 506 71, 69, 69, 69, 69, 69, 69, 69, 507 69, 110, 111, 112, 113, 69, 69, 69, 508 69, 69, 69, 69, 69, 121, 69, 122, 509 123, 124, 69, 69, 69, 69, 69, 126, 510 127, 128, 132, 69, 69, 69, 69, 110, 511 69, 134, 69, 71, 69, 69, 69, 69, 512 69, 69, 69, 109, 110, 111, 112, 113, 513 69, 115, 116, 69, 69, 69, 119, 120, 514 121, 69, 122, 123, 124, 69, 69, 69, 515 69, 69, 126, 127, 128, 132, 69, 69, 516 69, 69, 110, 69, 71, 69, 69, 69, 517 69, 69, 69, 69, 69, 110, 111, 112, 518 113, 69, 69, 69, 69, 69, 69, 69, 519 69, 69, 69, 122, 123, 124, 69, 69, 520 69, 69, 69, 126, 127, 128, 132, 69, 521 69, 69, 69, 110, 69, 134, 69, 71, 522 69, 69, 69, 69, 69, 69, 69, 109, 523 110, 111, 112, 113, 69, 69, 116, 69, 524 69, 69, 119, 120, 121, 69, 122, 123, 525 124, 69, 69, 69, 69, 69, 126, 127, 526 128, 132, 69, 69, 69, 69, 110, 69, 527 134, 69, 71, 69, 69, 69, 69, 69, 528 69, 69, 109, 110, 111, 112, 113, 69, 529 69, 69, 69, 69, 69, 119, 120, 121, 530 69, 122, 123, 124, 69, 69, 69, 69, 531 69, 126, 127, 128, 132, 69, 69, 69, 532 69, 110, 69, 134, 69, 71, 69, 69, 533 69, 69, 69, 69, 69, 109, 110, 111, 534 112, 113, 114, 115, 116, 69, 69, 69, 535 119, 120, 121, 69, 122, 123, 124, 69, 536 69, 69, 69, 69, 126, 127, 128, 132, 537 69, 69, 69, 69, 110, 69, 107, 108, 538 69, 71, 69, 69, 69, 69, 69, 69, 539 69, 109, 110, 111, 112, 113, 114, 115, 540 116, 117, 69, 118, 119, 120, 121, 69, 541 122, 123, 124, 69, 69, 69, 69, 125, 542 126, 127, 128, 129, 69, 69, 69, 69, 543 130, 69, 69, 131, 69, 107, 100, 100, 544 100, 100, 100, 100, 100, 100, 100, 100, 545 100, 100, 101, 100, 107, 96, 96, 96, 546 96, 96, 96, 96, 96, 96, 96, 96, 547 96, 98, 96, 107, 69, 69, 69, 69, 548 69, 69, 69, 69, 69, 69, 69, 69, 549 71, 69, 69, 69, 69, 69, 69, 69, 550 69, 110, 111, 112, 113, 69, 69, 69, 551 69, 69, 69, 69, 69, 69, 69, 122, 552 123, 124, 69, 69, 69, 69, 69, 126, 553 127, 128, 132, 69, 101, 100, 8, 9, 554 135, 11, 135, 135, 135, 135, 135, 135, 555 135, 13, 14, 15, 16, 17, 18, 19, 556 20, 21, 8, 22, 23, 24, 25, 135, 557 26, 27, 28, 135, 135, 135, 135, 32, 558 33, 34, 38, 32, 135, 135, 135, 135, 559 37, 135, 135, 38, 135, 8, 135, 135, 560 135, 135, 135, 135, 135, 135, 135, 135, 561 135, 135, 11, 135, 135, 135, 135, 135, 562 135, 135, 135, 14, 15, 16, 17, 135, 563 135, 135, 135, 135, 135, 135, 135, 135, 564 135, 26, 27, 28, 135, 135, 135, 135, 565 135, 33, 34, 38, 136, 135, 135, 135, 566 135, 14, 135, 11, 135, 135, 135, 135, 567 135, 135, 135, 135, 14, 15, 16, 17, 568 135, 135, 135, 135, 135, 135, 135, 135, 569 135, 135, 26, 27, 28, 135, 135, 135, 570 135, 135, 33, 34, 38, 136, 135, 11, 571 135, 135, 135, 135, 135, 135, 135, 135, 572 135, 15, 16, 17, 135, 135, 135, 135, 573 135, 135, 135, 135, 135, 135, 135, 135, 574 135, 135, 135, 135, 135, 135, 33, 34, 575 38, 135, 11, 135, 135, 135, 135, 135, 576 135, 135, 135, 135, 135, 16, 17, 135, 577 135, 135, 135, 135, 135, 135, 135, 135, 578 135, 135, 135, 135, 135, 135, 135, 135, 579 135, 33, 34, 38, 135, 11, 135, 135, 580 135, 135, 135, 135, 135, 135, 135, 135, 581 135, 17, 135, 135, 135, 135, 135, 135, 582 135, 135, 135, 135, 135, 135, 135, 135, 583 135, 135, 135, 135, 33, 34, 38, 135, 584 11, 135, 135, 135, 135, 135, 135, 135, 585 135, 135, 135, 135, 135, 135, 135, 135, 586 135, 135, 135, 135, 135, 135, 135, 135, 587 135, 135, 135, 135, 135, 135, 135, 33, 588 34, 135, 11, 135, 135, 135, 135, 135, 589 135, 135, 135, 135, 135, 135, 135, 135, 590 135, 135, 135, 135, 135, 135, 135, 135, 591 135, 135, 135, 135, 135, 135, 135, 135, 592 135, 135, 34, 135, 11, 137, 11, 135, 593 135, 135, 135, 135, 135, 135, 135, 135, 594 15, 16, 17, 135, 135, 135, 135, 135, 595 135, 135, 135, 135, 135, 26, 27, 28, 596 135, 135, 135, 135, 135, 33, 34, 38, 597 136, 135, 11, 135, 135, 135, 135, 135, 598 135, 135, 135, 135, 15, 16, 17, 135, 599 135, 135, 135, 135, 135, 135, 135, 135, 600 135, 135, 27, 28, 135, 135, 135, 135, 601 135, 33, 34, 38, 136, 135, 11, 135, 602 135, 135, 135, 135, 135, 135, 135, 135, 603 15, 16, 17, 135, 135, 135, 135, 135, 604 135, 135, 135, 135, 135, 135, 135, 28, 605 135, 135, 135, 135, 135, 33, 34, 38, 606 136, 135, 138, 135, 135, 135, 135, 135, 607 135, 135, 135, 135, 135, 135, 135, 11, 608 135, 11, 135, 135, 135, 135, 135, 135, 609 135, 135, 135, 15, 16, 17, 135, 135, 610 135, 135, 135, 135, 135, 135, 135, 135, 611 135, 135, 135, 135, 135, 135, 135, 135, 612 33, 34, 38, 136, 135, 11, 135, 135, 613 135, 135, 135, 135, 135, 13, 14, 15, 614 16, 17, 135, 135, 135, 135, 135, 135, 615 23, 24, 25, 135, 26, 27, 28, 135, 616 135, 135, 135, 135, 33, 34, 38, 136, 617 135, 135, 135, 135, 14, 135, 11, 135, 618 135, 135, 135, 135, 135, 135, 135, 14, 619 15, 16, 17, 135, 135, 135, 135, 135, 620 135, 23, 24, 25, 135, 26, 27, 28, 621 135, 135, 135, 135, 135, 33, 34, 38, 622 136, 135, 135, 135, 135, 14, 135, 11, 623 135, 135, 135, 135, 135, 135, 135, 135, 624 14, 15, 16, 17, 135, 135, 135, 135, 625 135, 135, 135, 24, 25, 135, 26, 27, 626 28, 135, 135, 135, 135, 135, 33, 34, 627 38, 136, 135, 135, 135, 135, 14, 135, 628 11, 135, 135, 135, 135, 135, 135, 135, 629 135, 14, 15, 16, 17, 135, 135, 135, 630 135, 135, 135, 135, 135, 25, 135, 26, 631 27, 28, 135, 135, 135, 135, 135, 33, 632 34, 38, 136, 135, 135, 135, 135, 14, 633 135, 139, 135, 11, 135, 135, 135, 135, 634 135, 135, 135, 13, 14, 15, 16, 17, 635 135, 19, 20, 135, 135, 135, 23, 24, 636 25, 135, 26, 27, 28, 135, 135, 135, 637 135, 135, 33, 34, 38, 136, 135, 135, 638 135, 135, 14, 135, 11, 135, 135, 135, 639 135, 135, 135, 135, 135, 14, 15, 16, 640 17, 135, 135, 135, 135, 135, 135, 135, 641 135, 135, 135, 26, 27, 28, 135, 135, 642 135, 135, 135, 33, 34, 38, 136, 135, 643 135, 135, 135, 14, 135, 139, 135, 11, 644 135, 135, 135, 135, 135, 135, 135, 13, 645 14, 15, 16, 17, 135, 135, 20, 135, 646 135, 135, 23, 24, 25, 135, 26, 27, 647 28, 135, 135, 135, 135, 135, 33, 34, 648 38, 136, 135, 135, 135, 135, 14, 135, 649 139, 135, 11, 135, 135, 135, 135, 135, 650 135, 135, 13, 14, 15, 16, 17, 135, 651 135, 135, 135, 135, 135, 23, 24, 25, 652 135, 26, 27, 28, 135, 135, 135, 135, 653 135, 33, 34, 38, 136, 135, 135, 135, 654 135, 14, 135, 139, 135, 11, 135, 135, 655 135, 135, 135, 135, 135, 13, 14, 15, 656 16, 17, 18, 19, 20, 135, 135, 135, 657 23, 24, 25, 135, 26, 27, 28, 135, 658 135, 135, 135, 135, 33, 34, 38, 136, 659 135, 135, 135, 135, 14, 135, 8, 9, 660 135, 11, 135, 135, 135, 135, 135, 135, 661 135, 13, 14, 15, 16, 17, 18, 19, 662 20, 21, 135, 22, 23, 24, 25, 135, 663 26, 27, 28, 135, 135, 135, 135, 32, 664 33, 34, 38, 32, 135, 135, 135, 135, 665 37, 135, 135, 38, 135, 8, 135, 135, 666 135, 135, 135, 135, 135, 135, 135, 135, 667 135, 135, 11, 135, 8, 135, 135, 135, 668 135, 135, 135, 135, 135, 135, 135, 135, 669 135, 11, 135, 135, 135, 135, 135, 135, 670 135, 135, 14, 15, 16, 17, 135, 135, 671 135, 135, 135, 135, 135, 135, 135, 135, 672 26, 27, 28, 135, 135, 135, 135, 135, 673 33, 34, 38, 136, 135, 140, 135, 135, 674 135, 135, 135, 135, 135, 135, 135, 11, 675 135, 10, 11, 135, 4, 135, 135, 135, 676 4, 135, 135, 135, 135, 135, 8, 9, 677 10, 11, 135, 135, 135, 135, 135, 135, 678 135, 13, 14, 15, 16, 17, 18, 19, 679 20, 21, 8, 22, 23, 24, 25, 135, 680 26, 27, 28, 135, 29, 30, 135, 32, 681 33, 34, 38, 32, 135, 135, 135, 135, 682 37, 135, 135, 38, 135, 11, 135, 135, 683 135, 135, 135, 135, 135, 135, 135, 135, 684 135, 135, 135, 135, 135, 135, 135, 135, 685 135, 135, 135, 135, 135, 135, 135, 135, 686 29, 30, 135, 11, 135, 135, 135, 135, 687 135, 135, 135, 135, 135, 135, 135, 135, 688 135, 135, 135, 135, 135, 135, 135, 135, 689 135, 135, 135, 135, 135, 135, 135, 30, 690 135, 4, 141, 141, 141, 4, 141, 143, 691 142, 142, 142, 142, 142, 142, 142, 142, 692 142, 142, 142, 142, 142, 142, 142, 142, 693 142, 142, 142, 142, 142, 142, 142, 142, 694 142, 142, 142, 142, 142, 142, 142, 142, 695 142, 142, 142, 144, 142, 145, 142, 145, 696 146, 142, 143, 142, 142, 142, 142, 142, 697 142, 142, 142, 142, 142, 142, 142, 142, 698 142, 142, 142, 142, 142, 142, 142, 142, 699 142, 142, 142, 142, 142, 142, 142, 142, 700 142, 142, 142, 142, 142, 1, 144, 144, 701 142, 143, 142, 142, 142, 142, 142, 142, 702 142, 142, 142, 142, 142, 142, 142, 142, 703 142, 142, 142, 142, 142, 142, 142, 142, 704 142, 142, 142, 142, 142, 142, 142, 142, 705 142, 142, 142, 142, 142, 144, 142, 145, 706 142, 143, 142, 142, 142, 142, 142, 142, 707 142, 142, 142, 142, 142, 142, 142, 142, 708 142, 142, 142, 142, 142, 142, 142, 142, 709 142, 142, 142, 142, 142, 142, 142, 142, 710 142, 142, 142, 142, 142, 144, 142, 145, 711 142, 145, 142, 40, 41, 39, 42, 39, 712 39, 39, 39, 39, 39, 39, 43, 44, 713 45, 46, 47, 48, 49, 50, 51, 40, 714 52, 53, 54, 55, 39, 56, 57, 58, 715 39, 59, 60, 39, 61, 62, 63, 64, 716 61, 1, 39, 2, 39, 65, 39, 39, 717 64, 39, 0 718 }; 719 720 static const char _use_syllable_machine_trans_targs[] = { 721 1, 122, 0, 2, 31, 1, 59, 61, 722 90, 91, 116, 1, 118, 104, 92, 93, 723 94, 95, 108, 110, 111, 112, 113, 105, 724 106, 107, 99, 100, 101, 119, 120, 121, 725 114, 96, 97, 98, 126, 115, 98, 1, 726 3, 4, 1, 17, 5, 6, 7, 8, 727 21, 23, 24, 25, 26, 18, 19, 20, 728 12, 13, 14, 29, 30, 27, 9, 10, 729 11, 28, 15, 16, 22, 1, 32, 1, 730 45, 33, 34, 35, 36, 49, 51, 52, 731 53, 54, 46, 47, 48, 40, 41, 42, 732 55, 37, 38, 39, 56, 57, 58, 43, 733 1, 44, 1, 50, 1, 1, 1, 60, 734 1, 1, 1, 62, 63, 76, 64, 65, 735 66, 67, 80, 82, 83, 84, 85, 77, 736 78, 79, 71, 72, 73, 86, 68, 69, 737 70, 87, 88, 89, 74, 75, 81, 1, 738 102, 1, 103, 109, 117, 1, 1, 1, 739 123, 124, 125 740 }; 741 742 static const char _use_syllable_machine_trans_actions[] = { 743 1, 0, 0, 0, 0, 4, 0, 0, 744 0, 0, 0, 5, 0, 0, 0, 0, 745 0, 0, 0, 0, 0, 0, 0, 0, 746 0, 0, 0, 0, 0, 0, 0, 0, 747 0, 0, 0, 6, 7, 0, 8, 9, 748 0, 0, 10, 0, 0, 0, 0, 0, 749 0, 0, 0, 0, 0, 0, 0, 0, 750 0, 0, 0, 0, 0, 0, 0, 0, 751 0, 0, 0, 0, 0, 11, 0, 12, 752 0, 0, 0, 0, 0, 0, 0, 0, 753 0, 0, 0, 0, 0, 0, 0, 0, 754 0, 0, 0, 0, 0, 0, 0, 0, 755 13, 0, 14, 0, 15, 16, 17, 0, 756 18, 19, 20, 0, 0, 0, 0, 0, 757 0, 0, 0, 0, 0, 0, 0, 0, 758 0, 0, 0, 0, 0, 0, 0, 0, 759 0, 0, 0, 0, 0, 0, 0, 21, 760 0, 22, 0, 0, 0, 23, 24, 25, 761 0, 0, 0 762 }; 763 764 static const char _use_syllable_machine_to_state_actions[] = { 765 0, 2, 0, 0, 0, 0, 0, 0, 766 0, 0, 0, 0, 0, 0, 0, 0, 767 0, 0, 0, 0, 0, 0, 0, 0, 768 0, 0, 0, 0, 0, 0, 0, 0, 769 0, 0, 0, 0, 0, 0, 0, 0, 770 0, 0, 0, 0, 0, 0, 0, 0, 771 0, 0, 0, 0, 0, 0, 0, 0, 772 0, 0, 0, 0, 0, 0, 0, 0, 773 0, 0, 0, 0, 0, 0, 0, 0, 774 0, 0, 0, 0, 0, 0, 0, 0, 775 0, 0, 0, 0, 0, 0, 0, 0, 776 0, 0, 0, 0, 0, 0, 0, 0, 777 0, 0, 0, 0, 0, 0, 0, 0, 778 0, 0, 0, 0, 0, 0, 0, 0, 779 0, 0, 0, 0, 0, 0, 0, 0, 780 0, 0, 0, 0, 0, 0, 0 781 }; 782 783 static const char _use_syllable_machine_from_state_actions[] = { 784 0, 3, 0, 0, 0, 0, 0, 0, 785 0, 0, 0, 0, 0, 0, 0, 0, 786 0, 0, 0, 0, 0, 0, 0, 0, 787 0, 0, 0, 0, 0, 0, 0, 0, 788 0, 0, 0, 0, 0, 0, 0, 0, 789 0, 0, 0, 0, 0, 0, 0, 0, 790 0, 0, 0, 0, 0, 0, 0, 0, 791 0, 0, 0, 0, 0, 0, 0, 0, 792 0, 0, 0, 0, 0, 0, 0, 0, 793 0, 0, 0, 0, 0, 0, 0, 0, 794 0, 0, 0, 0, 0, 0, 0, 0, 795 0, 0, 0, 0, 0, 0, 0, 0, 796 0, 0, 0, 0, 0, 0, 0, 0, 797 0, 0, 0, 0, 0, 0, 0, 0, 798 0, 0, 0, 0, 0, 0, 0, 0, 799 0, 0, 0, 0, 0, 0, 0 800 }; 801 802 static const short _use_syllable_machine_eof_trans[] = { 803 1, 0, 40, 40, 40, 40, 40, 40, 804 40, 40, 40, 40, 40, 40, 40, 40, 805 40, 40, 40, 40, 40, 40, 40, 40, 806 40, 40, 40, 40, 40, 40, 40, 70, 807 70, 70, 70, 70, 70, 70, 70, 70, 808 70, 70, 70, 97, 70, 70, 70, 70, 809 70, 70, 70, 70, 70, 70, 70, 101, 810 97, 70, 101, 103, 106, 70, 70, 70, 811 70, 70, 70, 70, 70, 70, 70, 70, 812 70, 70, 97, 70, 70, 70, 70, 70, 813 70, 70, 70, 70, 70, 70, 101, 97, 814 70, 101, 136, 136, 136, 136, 136, 136, 815 136, 136, 138, 136, 136, 136, 136, 136, 816 136, 136, 136, 136, 136, 136, 136, 136, 817 136, 136, 136, 136, 136, 136, 136, 136, 818 136, 142, 143, 143, 143, 143, 40 819 }; 820 821 static const int use_syllable_machine_start = 1; 822 static const int use_syllable_machine_first_final = 1; 823 static const int use_syllable_machine_error = -1; 824 825 static const int use_syllable_machine_en_main = 1; 826 827 828 #line 58 "hb-ot-shaper-use-machine.rl" 829 830 831 832 #line 186 "hb-ot-shaper-use-machine.rl" 833 834 835 #define found_syllable(syllable_type) \ 836 HB_STMT_START { \ 837 if (0) fprintf (stderr, "syllable %u..%u %s\n", (*ts).second.first, (*te).second.first, #syllable_type); \ 838 for (unsigned i = (*ts).second.first; i < (*te).second.first; ++i) \ 839 info[i].syllable() = (syllable_serial << 4) | syllable_type; \ 840 syllable_serial++; \ 841 if (syllable_serial == 16) syllable_serial = 1; \ 842 } HB_STMT_END 843 844 845 template <typename Iter> 846 struct machine_index_t : 847 hb_iter_with_fallback_t<machine_index_t<Iter>, 848 typename Iter::item_t> 849 { 850 machine_index_t (const Iter& it) : it (it) {} 851 machine_index_t (const machine_index_t& o) : hb_iter_with_fallback_t<machine_index_t<Iter>, 852 typename Iter::item_t> (), 853 it (o.it), is_null (o.is_null) {} 854 855 static constexpr bool is_random_access_iterator = Iter::is_random_access_iterator; 856 static constexpr bool is_sorted_iterator = Iter::is_sorted_iterator; 857 858 typename Iter::item_t __item__ () const { return *it; } 859 typename Iter::item_t __item_at__ (unsigned i) const { return it[i]; } 860 unsigned __len__ () const { return it.len (); } 861 void __next__ () { ++it; } 862 void __forward__ (unsigned n) { it += n; } 863 void __prev__ () { --it; } 864 void __rewind__ (unsigned n) { it -= n; } 865 866 void operator = (unsigned n) 867 { 868 assert (n == 0); 869 is_null = true; 870 } 871 explicit operator bool () { return !is_null; } 872 873 void operator = (const machine_index_t& o) 874 { 875 is_null = o.is_null; 876 unsigned index = (*it).first; 877 unsigned n = (*o.it).first; 878 if (index < n) it += n - index; else if (index > n) it -= index - n; 879 } 880 bool operator == (const machine_index_t& o) const 881 { return is_null ? o.is_null : !o.is_null && (*it).first == (*o.it).first; } 882 bool operator != (const machine_index_t& o) const { return !(*this == o); } 883 884 private: 885 Iter it; 886 bool is_null = false; 887 }; 888 struct 889 { 890 template <typename Iter, 891 hb_requires (hb_is_iterable (Iter))> 892 machine_index_t<hb_iter_type<Iter>> 893 operator () (Iter&& it) const 894 { return machine_index_t<hb_iter_type<Iter>> (hb_iter (it)); } 895 } 896 HB_FUNCOBJ (machine_index); 897 898 899 900 static bool 901 not_ccs_default_ignorable (const hb_glyph_info_t &i) 902 { return i.use_category() != USE(CGJ); } 903 904 static inline void 905 find_syllables_use (hb_buffer_t *buffer) 906 { 907 hb_glyph_info_t *info = buffer->info; 908 auto p = 909 + hb_iter (info, buffer->len) 910 | hb_enumerate 911 | hb_filter ([] (const hb_glyph_info_t &i) { return not_ccs_default_ignorable (i); }, 912 hb_second) 913 | hb_filter ([&] (const hb_pair_t<unsigned, const hb_glyph_info_t &> p) 914 { 915 if (p.second.use_category() == USE(ZWNJ)) 916 for (unsigned i = p.first + 1; i < buffer->len; ++i) 917 if (not_ccs_default_ignorable (info[i])) 918 return !_hb_glyph_info_is_unicode_mark (&info[i]); 919 return true; 920 }) 921 | hb_enumerate 922 | machine_index 923 ; 924 auto pe = p + p.len (); 925 auto eof = +pe; 926 auto ts = +p; 927 auto te = +p; 928 unsigned int act HB_UNUSED; 929 int cs; 930 931 #line 922 "hb-ot-shaper-use-machine.hh" 932 { 933 cs = use_syllable_machine_start; 934 ts = 0; 935 te = 0; 936 act = 0; 937 } 938 939 #line 286 "hb-ot-shaper-use-machine.rl" 940 941 942 unsigned int syllable_serial = 1; 943 944 #line 931 "hb-ot-shaper-use-machine.hh" 945 { 946 int _slen; 947 int _trans; 948 const unsigned char *_keys; 949 const unsigned char *_inds; 950 if ( p == pe ) 951 goto _test_eof; 952 _resume: 953 switch ( _use_syllable_machine_from_state_actions[cs] ) { 954 case 3: 955 #line 1 "NONE" 956 {ts = p;} 957 break; 958 #line 943 "hb-ot-shaper-use-machine.hh" 959 } 960 961 _keys = _use_syllable_machine_trans_keys + (cs<<1); 962 _inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs]; 963 964 _slen = _use_syllable_machine_key_spans[cs]; 965 _trans = _inds[ _slen > 0 && _keys[0] <=( (*p).second.second.use_category()) && 966 ( (*p).second.second.use_category()) <= _keys[1] ? 967 ( (*p).second.second.use_category()) - _keys[0] : _slen ]; 968 969 _eof_trans: 970 cs = _use_syllable_machine_trans_targs[_trans]; 971 972 if ( _use_syllable_machine_trans_actions[_trans] == 0 ) 973 goto _again; 974 975 switch ( _use_syllable_machine_trans_actions[_trans] ) { 976 case 7: 977 #line 1 "NONE" 978 {te = p+1;} 979 break; 980 case 16: 981 #line 173 "hb-ot-shaper-use-machine.rl" 982 {te = p+1;{ found_syllable (use_virama_terminated_cluster); }} 983 break; 984 case 14: 985 #line 174 "hb-ot-shaper-use-machine.rl" 986 {te = p+1;{ found_syllable (use_sakot_terminated_cluster); }} 987 break; 988 case 12: 989 #line 175 "hb-ot-shaper-use-machine.rl" 990 {te = p+1;{ found_syllable (use_standard_cluster); }} 991 break; 992 case 20: 993 #line 176 "hb-ot-shaper-use-machine.rl" 994 {te = p+1;{ found_syllable (use_number_joiner_terminated_cluster); }} 995 break; 996 case 18: 997 #line 177 "hb-ot-shaper-use-machine.rl" 998 {te = p+1;{ found_syllable (use_numeral_cluster); }} 999 break; 1000 case 10: 1001 #line 178 "hb-ot-shaper-use-machine.rl" 1002 {te = p+1;{ found_syllable (use_symbol_cluster); }} 1003 break; 1004 case 25: 1005 #line 179 "hb-ot-shaper-use-machine.rl" 1006 {te = p+1;{ found_syllable (use_hieroglyph_cluster); }} 1007 break; 1008 case 5: 1009 #line 181 "hb-ot-shaper-use-machine.rl" 1010 {te = p+1;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }} 1011 break; 1012 case 4: 1013 #line 182 "hb-ot-shaper-use-machine.rl" 1014 {te = p+1;{ found_syllable (use_non_cluster); }} 1015 break; 1016 case 15: 1017 #line 173 "hb-ot-shaper-use-machine.rl" 1018 {te = p;p--;{ found_syllable (use_virama_terminated_cluster); }} 1019 break; 1020 case 13: 1021 #line 174 "hb-ot-shaper-use-machine.rl" 1022 {te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }} 1023 break; 1024 case 11: 1025 #line 175 "hb-ot-shaper-use-machine.rl" 1026 {te = p;p--;{ found_syllable (use_standard_cluster); }} 1027 break; 1028 case 19: 1029 #line 176 "hb-ot-shaper-use-machine.rl" 1030 {te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }} 1031 break; 1032 case 17: 1033 #line 177 "hb-ot-shaper-use-machine.rl" 1034 {te = p;p--;{ found_syllable (use_numeral_cluster); }} 1035 break; 1036 case 9: 1037 #line 178 "hb-ot-shaper-use-machine.rl" 1038 {te = p;p--;{ found_syllable (use_symbol_cluster); }} 1039 break; 1040 case 24: 1041 #line 179 "hb-ot-shaper-use-machine.rl" 1042 {te = p;p--;{ found_syllable (use_hieroglyph_cluster); }} 1043 break; 1044 case 21: 1045 #line 181 "hb-ot-shaper-use-machine.rl" 1046 {te = p;p--;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }} 1047 break; 1048 case 23: 1049 #line 182 "hb-ot-shaper-use-machine.rl" 1050 {te = p;p--;{ found_syllable (use_non_cluster); }} 1051 break; 1052 case 1: 1053 #line 178 "hb-ot-shaper-use-machine.rl" 1054 {{p = ((te))-1;}{ found_syllable (use_symbol_cluster); }} 1055 break; 1056 case 22: 1057 #line 1 "NONE" 1058 { switch( act ) { 1059 case 8: 1060 {{p = ((te))-1;} found_syllable (use_non_cluster); } 1061 break; 1062 case 9: 1063 {{p = ((te))-1;} found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; } 1064 break; 1065 } 1066 } 1067 break; 1068 case 6: 1069 #line 1 "NONE" 1070 {te = p+1;} 1071 #line 180 "hb-ot-shaper-use-machine.rl" 1072 {act = 8;} 1073 break; 1074 case 8: 1075 #line 1 "NONE" 1076 {te = p+1;} 1077 #line 181 "hb-ot-shaper-use-machine.rl" 1078 {act = 9;} 1079 break; 1080 #line 1039 "hb-ot-shaper-use-machine.hh" 1081 } 1082 1083 _again: 1084 switch ( _use_syllable_machine_to_state_actions[cs] ) { 1085 case 2: 1086 #line 1 "NONE" 1087 {ts = 0;} 1088 break; 1089 #line 1046 "hb-ot-shaper-use-machine.hh" 1090 } 1091 1092 if ( ++p != pe ) 1093 goto _resume; 1094 _test_eof: {} 1095 if ( p == eof ) 1096 { 1097 if ( _use_syllable_machine_eof_trans[cs] > 0 ) { 1098 _trans = _use_syllable_machine_eof_trans[cs] - 1; 1099 goto _eof_trans; 1100 } 1101 } 1102 1103 } 1104 1105 #line 291 "hb-ot-shaper-use-machine.rl" 1106 1107 } 1108 1109 #undef found_syllable 1110 1111 #endif /* HB_OT_SHAPER_USE_MACHINE_HH */