1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 //
5 // This file was generated at 2014-10-08 15:25:47.940335
6
7 #include "src/unicode.h"
8 #include "src/unicode-inl.h"
9 #include <stdio.h>
10 #include <stdlib.h>
11
12 namespace unibrow {
13
14 static const int kStartBit = (1 << 30);
15 static const int kChunkBits = (1 << 13);
16 static const uchar kSentinel = static_cast<uchar>(-1);
17
18 /**
19 * \file
20 * Implementations of functions for working with unicode.
21 */
22
23 typedef signed short int16_t; // NOLINT
24 typedef unsigned short uint16_t; // NOLINT
25 typedef int int32_t; // NOLINT
26
27
28 // All access to the character table should go through this function.
29 template <int D>
TableGet(const int32_t * table,int index)30 static inline uchar TableGet(const int32_t* table, int index) {
31 return table[D * index];
32 }
33
34
GetEntry(int32_t entry)35 static inline uchar GetEntry(int32_t entry) {
36 return entry & (kStartBit - 1);
37 }
38
39
IsStart(int32_t entry)40 static inline bool IsStart(int32_t entry) {
41 return (entry & kStartBit) != 0;
42 }
43
44
45 /**
46 * Look up a character in the unicode table using a mix of binary and
47 * interpolation search. For a uniformly distributed array
48 * interpolation search beats binary search by a wide margin. However,
49 * in this case interpolation search degenerates because of some very
50 * high values in the lower end of the table so this function uses a
51 * combination. The average number of steps to look up the information
52 * about a character is around 10, slightly higher if there is no
53 * information available about the character.
54 */
LookupPredicate(const int32_t * table,uint16_t size,uchar chr)55 static bool LookupPredicate(const int32_t* table, uint16_t size, uchar chr) {
56 static const int kEntryDist = 1;
57 uint16_t value = chr & (kChunkBits - 1);
58 unsigned int low = 0;
59 unsigned int high = size - 1;
60 while (high != low) {
61 unsigned int mid = low + ((high - low) >> 1);
62 uchar current_value = GetEntry(TableGet<kEntryDist>(table, mid));
63 // If we've found an entry less than or equal to this one, and the
64 // next one is not also less than this one, we've arrived.
65 if ((current_value <= value) &&
66 (mid + 1 == size ||
67 GetEntry(TableGet<kEntryDist>(table, mid + 1)) > value)) {
68 low = mid;
69 break;
70 } else if (current_value < value) {
71 low = mid + 1;
72 } else if (current_value > value) {
73 // If we've just checked the bottom-most value and it's not
74 // the one we're looking for, we're done.
75 if (mid == 0) break;
76 high = mid - 1;
77 }
78 }
79 int32_t field = TableGet<kEntryDist>(table, low);
80 uchar entry = GetEntry(field);
81 bool is_start = IsStart(field);
82 return (entry == value) || (entry < value && is_start);
83 }
84
85 template <int kW>
86 struct MultiCharacterSpecialCase {
87 static const uchar kEndOfEncoding = kSentinel;
88 uchar chars[kW];
89 };
90
91
92 // Look up the mapping for the given character in the specified table,
93 // which is of the specified length and uses the specified special case
94 // mapping for multi-char mappings. The next parameter is the character
95 // following the one to map. The result will be written in to the result
96 // buffer and the number of characters written will be returned. Finally,
97 // if the allow_caching_ptr is non-null then false will be stored in
98 // it if the result contains multiple characters or depends on the
99 // context.
100 // If ranges are linear, a match between a start and end point is
101 // offset by the distance between the match and the start. Otherwise
102 // the result is the same as for the start point on the entire range.
103 template <bool ranges_are_linear, int kW>
LookupMapping(const int32_t * table,uint16_t size,const MultiCharacterSpecialCase<kW> * multi_chars,uchar chr,uchar next,uchar * result,bool * allow_caching_ptr)104 static int LookupMapping(const int32_t* table,
105 uint16_t size,
106 const MultiCharacterSpecialCase<kW>* multi_chars,
107 uchar chr,
108 uchar next,
109 uchar* result,
110 bool* allow_caching_ptr) {
111 static const int kEntryDist = 2;
112 uint16_t key = chr & (kChunkBits - 1);
113 uint16_t chunk_start = chr - key;
114 unsigned int low = 0;
115 unsigned int high = size - 1;
116 while (high != low) {
117 unsigned int mid = low + ((high - low) >> 1);
118 uchar current_value = GetEntry(TableGet<kEntryDist>(table, mid));
119 // If we've found an entry less than or equal to this one, and the next one
120 // is not also less than this one, we've arrived.
121 if ((current_value <= key) &&
122 (mid + 1 == size ||
123 GetEntry(TableGet<kEntryDist>(table, mid + 1)) > key)) {
124 low = mid;
125 break;
126 } else if (current_value < key) {
127 low = mid + 1;
128 } else if (current_value > key) {
129 // If we've just checked the bottom-most value and it's not
130 // the one we're looking for, we're done.
131 if (mid == 0) break;
132 high = mid - 1;
133 }
134 }
135 int32_t field = TableGet<kEntryDist>(table, low);
136 uchar entry = GetEntry(field);
137 bool is_start = IsStart(field);
138 bool found = (entry == key) || (entry < key && is_start);
139 if (found) {
140 int32_t value = table[2 * low + 1];
141 if (value == 0) {
142 // 0 means not present
143 return 0;
144 } else if ((value & 3) == 0) {
145 // Low bits 0 means a constant offset from the given character.
146 if (ranges_are_linear) {
147 result[0] = chr + (value >> 2);
148 } else {
149 result[0] = entry + chunk_start + (value >> 2);
150 }
151 return 1;
152 } else if ((value & 3) == 1) {
153 // Low bits 1 means a special case mapping
154 if (allow_caching_ptr) *allow_caching_ptr = false;
155 const MultiCharacterSpecialCase<kW>& mapping = multi_chars[value >> 2];
156 int length = 0;
157 for (length = 0; length < kW; length++) {
158 uchar mapped = mapping.chars[length];
159 if (mapped == MultiCharacterSpecialCase<kW>::kEndOfEncoding) break;
160 if (ranges_are_linear) {
161 result[length] = mapped + (key - entry);
162 } else {
163 result[length] = mapped;
164 }
165 }
166 return length;
167 } else {
168 // Low bits 2 means a really really special case
169 if (allow_caching_ptr) *allow_caching_ptr = false;
170 // The cases of this switch are defined in unicode.py in the
171 // really_special_cases mapping.
172 switch (value >> 2) {
173 case 1:
174 // Really special case 1: upper case sigma. This letter
175 // converts to two different lower case sigmas depending on
176 // whether or not it occurs at the end of a word.
177 if (next != 0 && Letter::Is(next)) {
178 result[0] = 0x03C3;
179 } else {
180 result[0] = 0x03C2;
181 }
182 return 1;
183 default:
184 return 0;
185 }
186 return -1;
187 }
188 } else {
189 return 0;
190 }
191 }
192
NonASCIISequenceLength(byte first)193 static inline uint8_t NonASCIISequenceLength(byte first) {
194 // clang-format off
195 static const uint8_t lengths[256] = {
196 // The first 128 entries correspond to ASCII characters.
197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
198 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
200 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
202 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
205 // The following 64 entries correspond to continuation bytes.
206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
210 // The next are two invalid overlong encodings and 30 two-byte sequences.
211 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
212 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
213 // 16 three-byte sequences.
214 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
215 // 5 four-byte sequences, followed by sequences that could only encode
216 // code points outside of the unicode range.
217 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
218 // clang-format on
219 return lengths[first];
220 }
221
222
IsContinuationCharacter(byte chr)223 static inline bool IsContinuationCharacter(byte chr) {
224 return chr >= 0x80 && chr <= 0xBF;
225 }
226
227
228 // This method decodes an UTF-8 value according to RFC 3629.
CalculateValue(const byte * str,size_t max_length,size_t * cursor)229 uchar Utf8::CalculateValue(const byte* str, size_t max_length, size_t* cursor) {
230 size_t length = NonASCIISequenceLength(str[0]);
231
232 // Check continuation characters.
233 size_t max_count = std::min(length, max_length);
234 size_t count = 1;
235 while (count < max_count && IsContinuationCharacter(str[count])) {
236 count++;
237 }
238 *cursor += count;
239
240 // There must be enough continuation characters.
241 if (count != length) return kBadChar;
242
243 // Check overly long sequences & other conditions.
244 if (length == 3) {
245 if (str[0] == 0xE0 && (str[1] < 0xA0 || str[1] > 0xBF)) {
246 // Overlong three-byte sequence?
247 return kBadChar;
248 } else if (str[0] == 0xED && (str[1] < 0x80 || str[1] > 0x9F)) {
249 // High and low surrogate halves?
250 return kBadChar;
251 }
252 } else if (length == 4) {
253 if (str[0] == 0xF0 && (str[1] < 0x90 || str[1] > 0xBF)) {
254 // Overlong four-byte sequence.
255 return kBadChar;
256 } else if (str[0] == 0xF4 && (str[1] < 0x80 || str[1] > 0x8F)) {
257 // Code points outside of the unicode range.
258 return kBadChar;
259 }
260 }
261
262 // All errors have been handled, so we only have to assemble the result.
263 switch (length) {
264 case 1:
265 return str[0];
266 case 2:
267 return ((str[0] << 6) + str[1]) - 0x00003080;
268 case 3:
269 return ((str[0] << 12) + (str[1] << 6) + str[2]) - 0x000E2080;
270 case 4:
271 return ((str[0] << 18) + (str[1] << 12) + (str[2] << 6) + str[3]) -
272 0x03C82080;
273 }
274
275 UNREACHABLE();
276 return kBadChar;
277 }
278
ValueOfIncremental(byte next,Utf8IncrementalBuffer * buffer)279 uchar Utf8::ValueOfIncremental(byte next, Utf8IncrementalBuffer* buffer) {
280 DCHECK_NOT_NULL(buffer);
281
282 // The common case: 1-byte Utf8 (and no incomplete char in the buffer)
283 if (V8_LIKELY(next <= kMaxOneByteChar && *buffer == 0)) {
284 return static_cast<uchar>(next);
285 }
286
287 if (*buffer == 0) {
288 // We're at the start of a new character.
289 uint32_t kind = NonASCIISequenceLength(next);
290 if (kind >= 2 && kind <= 4) {
291 // Start of 2..4 byte character, and no buffer.
292
293 // The mask for the lower bits depends on the kind, and is
294 // 0x1F, 0x0F, 0x07 for kinds 2, 3, 4 respectively. We can get that
295 // with one shift.
296 uint8_t mask = 0x7f >> kind;
297
298 // Store the kind in the top nibble, and kind - 1 (i.e., remaining bytes)
299 // in 2nd nibble, and the value in the bottom three. The 2nd nibble is
300 // intended as a counter about how many bytes are still needed.
301 *buffer = kind << 28 | (kind - 1) << 24 | (next & mask);
302 return kIncomplete;
303 } else {
304 // No buffer, and not the start of a 1-byte char (handled at the
305 // beginning), and not the start of a 2..4 byte char? Bad char.
306 *buffer = 0;
307 return kBadChar;
308 }
309 } else if (*buffer <= 0xff) {
310 // We have one unprocessed byte left (from the last else case in this if
311 // statement).
312 uchar previous = *buffer;
313 *buffer = 0;
314 uchar t = ValueOfIncremental(previous, buffer);
315 if (t == kIncomplete) {
316 // If we have an incomplete character, process both the previous and the
317 // next byte at once.
318 return ValueOfIncremental(next, buffer);
319 } else {
320 // Otherwise, process the previous byte and save the next byte for next
321 // time.
322 DCHECK_EQ(0u, *buffer);
323 *buffer = next;
324 return t;
325 }
326 } else if (IsContinuationCharacter(next)) {
327 // We're inside of a character, as described by buffer.
328
329 // How many bytes (excluding this one) do we still expect?
330 uint8_t bytes_expected = *buffer >> 28;
331 uint8_t bytes_left = (*buffer >> 24) & 0x0f;
332 bytes_left--;
333 // Update the value.
334 uint32_t value = ((*buffer & 0xffffff) << 6) | (next & 0x3F);
335 if (bytes_left) {
336 *buffer = (bytes_expected << 28 | bytes_left << 24 | value);
337 return kIncomplete;
338 } else {
339 *buffer = 0;
340 bool sequence_was_too_long = (bytes_expected == 2 && value < 0x80) ||
341 (bytes_expected == 3 && value < 0x800);
342 return sequence_was_too_long ? kBadChar : value;
343 }
344 } else {
345 // Within a character, but not a continuation character? Then the
346 // previous char was a bad char. But we need to save the current
347 // one.
348 *buffer = next;
349 return kBadChar;
350 }
351 }
352
ValueOfIncrementalFinish(Utf8IncrementalBuffer * buffer)353 uchar Utf8::ValueOfIncrementalFinish(Utf8IncrementalBuffer* buffer) {
354 DCHECK_NOT_NULL(buffer);
355 if (*buffer == 0) {
356 return kBufferEmpty;
357 } else {
358 // Process left-over chars. An incomplete char at the end maps to kBadChar.
359 uchar t = ValueOfIncremental(0, buffer);
360 return (t == kIncomplete) ? kBadChar : t;
361 }
362 }
363
Validate(const byte * bytes,size_t length)364 bool Utf8::Validate(const byte* bytes, size_t length) {
365 size_t cursor = 0;
366
367 // Performance optimization: Skip over single-byte values first.
368 while (cursor < length && bytes[cursor] <= kMaxOneByteChar) {
369 ++cursor;
370 }
371
372 while (cursor < length) {
373 uchar c = ValueOf(bytes + cursor, length - cursor, &cursor);
374 if (!IsValidCharacter(c)) return false;
375 }
376 return true;
377 }
378
379 // Uppercase: point.category == 'Lu'
380
381 static const uint16_t kUppercaseTable0Size = 455;
382 static const int32_t kUppercaseTable0[455] = {
383 1073741889, 90, 1073742016, 214,
384 1073742040, 222, 256, 258, // NOLINT
385 260, 262, 264, 266,
386 268, 270, 272, 274, // NOLINT
387 276, 278, 280, 282,
388 284, 286, 288, 290, // NOLINT
389 292, 294, 296, 298,
390 300, 302, 304, 306, // NOLINT
391 308, 310, 313, 315,
392 317, 319, 321, 323, // NOLINT
393 325, 327, 330, 332,
394 334, 336, 338, 340, // NOLINT
395 342, 344, 346, 348,
396 350, 352, 354, 356, // NOLINT
397 358, 360, 362, 364,
398 366, 368, 370, 372, // NOLINT
399 374, 1073742200, 377, 379,
400 381, 1073742209, 386, 388, // NOLINT
401 1073742214, 391, 1073742217, 395,
402 1073742222, 401, 1073742227, 404, // NOLINT
403 1073742230, 408, 1073742236, 413,
404 1073742239, 416, 418, 420, // NOLINT
405 1073742246, 423, 425, 428,
406 1073742254, 431, 1073742257, 435, // NOLINT
407 437, 1073742263, 440, 444,
408 452, 455, 458, 461, // NOLINT
409 463, 465, 467, 469,
410 471, 473, 475, 478, // NOLINT
411 480, 482, 484, 486,
412 488, 490, 492, 494, // NOLINT
413 497, 500, 1073742326, 504,
414 506, 508, 510, 512, // NOLINT
415 514, 516, 518, 520,
416 522, 524, 526, 528, // NOLINT
417 530, 532, 534, 536,
418 538, 540, 542, 544, // NOLINT
419 546, 548, 550, 552,
420 554, 556, 558, 560, // NOLINT
421 562, 1073742394, 571, 1073742397,
422 574, 577, 1073742403, 582, // NOLINT
423 584, 586, 588, 590,
424 880, 882, 886, 895, // NOLINT
425 902, 1073742728, 906, 908,
426 1073742734, 911, 1073742737, 929, // NOLINT
427 1073742755, 939, 975, 1073742802,
428 980, 984, 986, 988, // NOLINT
429 990, 992, 994, 996,
430 998, 1000, 1002, 1004, // NOLINT
431 1006, 1012, 1015, 1073742841,
432 1018, 1073742845, 1071, 1120, // NOLINT
433 1122, 1124, 1126, 1128,
434 1130, 1132, 1134, 1136, // NOLINT
435 1138, 1140, 1142, 1144,
436 1146, 1148, 1150, 1152, // NOLINT
437 1162, 1164, 1166, 1168,
438 1170, 1172, 1174, 1176, // NOLINT
439 1178, 1180, 1182, 1184,
440 1186, 1188, 1190, 1192, // NOLINT
441 1194, 1196, 1198, 1200,
442 1202, 1204, 1206, 1208, // NOLINT
443 1210, 1212, 1214, 1073743040,
444 1217, 1219, 1221, 1223, // NOLINT
445 1225, 1227, 1229, 1232,
446 1234, 1236, 1238, 1240, // NOLINT
447 1242, 1244, 1246, 1248,
448 1250, 1252, 1254, 1256, // NOLINT
449 1258, 1260, 1262, 1264,
450 1266, 1268, 1270, 1272, // NOLINT
451 1274, 1276, 1278, 1280,
452 1282, 1284, 1286, 1288, // NOLINT
453 1290, 1292, 1294, 1296,
454 1298, 1300, 1302, 1304, // NOLINT
455 1306, 1308, 1310, 1312,
456 1314, 1316, 1318, 1320, // NOLINT
457 1322, 1324, 1326, 1073743153,
458 1366, 1073746080, 4293, 4295, // NOLINT
459 4301, 7680, 7682, 7684,
460 7686, 7688, 7690, 7692, // NOLINT
461 7694, 7696, 7698, 7700,
462 7702, 7704, 7706, 7708, // NOLINT
463 7710, 7712, 7714, 7716,
464 7718, 7720, 7722, 7724, // NOLINT
465 7726, 7728, 7730, 7732,
466 7734, 7736, 7738, 7740, // NOLINT
467 7742, 7744, 7746, 7748,
468 7750, 7752, 7754, 7756, // NOLINT
469 7758, 7760, 7762, 7764,
470 7766, 7768, 7770, 7772, // NOLINT
471 7774, 7776, 7778, 7780,
472 7782, 7784, 7786, 7788, // NOLINT
473 7790, 7792, 7794, 7796,
474 7798, 7800, 7802, 7804, // NOLINT
475 7806, 7808, 7810, 7812,
476 7814, 7816, 7818, 7820, // NOLINT
477 7822, 7824, 7826, 7828,
478 7838, 7840, 7842, 7844, // NOLINT
479 7846, 7848, 7850, 7852,
480 7854, 7856, 7858, 7860, // NOLINT
481 7862, 7864, 7866, 7868,
482 7870, 7872, 7874, 7876, // NOLINT
483 7878, 7880, 7882, 7884,
484 7886, 7888, 7890, 7892, // NOLINT
485 7894, 7896, 7898, 7900,
486 7902, 7904, 7906, 7908, // NOLINT
487 7910, 7912, 7914, 7916,
488 7918, 7920, 7922, 7924, // NOLINT
489 7926, 7928, 7930, 7932,
490 7934, 1073749768, 7951, 1073749784, // NOLINT
491 7965, 1073749800, 7983, 1073749816,
492 7999, 1073749832, 8013, 8025, // NOLINT
493 8027, 8029, 8031, 1073749864,
494 8047, 1073749944, 8123, 1073749960, // NOLINT
495 8139, 1073749976, 8155, 1073749992,
496 8172, 1073750008, 8187}; // NOLINT
497 static const uint16_t kUppercaseTable1Size = 86;
498 static const int32_t kUppercaseTable1[86] = {
499 258, 263, 1073742091, 269, 1073742096, 274, 277, 1073742105, // NOLINT
500 285, 292, 294, 296, 1073742122, 301, 1073742128, 307, // NOLINT
501 1073742142, 319, 325, 387, 1073744896, 3118, 3168, 1073744994, // NOLINT
502 3172, 3175, 3177, 3179, 1073745005, 3184, 3186, 3189, // NOLINT
503 1073745022, 3200, 3202, 3204, 3206, 3208, 3210, 3212, // NOLINT
504 3214, 3216, 3218, 3220, 3222, 3224, 3226, 3228, // NOLINT
505 3230, 3232, 3234, 3236, 3238, 3240, 3242, 3244, // NOLINT
506 3246, 3248, 3250, 3252, 3254, 3256, 3258, 3260, // NOLINT
507 3262, 3264, 3266, 3268, 3270, 3272, 3274, 3276, // NOLINT
508 3278, 3280, 3282, 3284, 3286, 3288, 3290, 3292, // NOLINT
509 3294, 3296, 3298, 3307, 3309, 3314 }; // NOLINT
510 static const uint16_t kUppercaseTable5Size = 101;
511 static const int32_t kUppercaseTable5[101] = {
512 1600, 1602, 1604, 1606, 1608, 1610, 1612, 1614, // NOLINT
513 1616, 1618, 1620, 1622, 1624, 1626, 1628, 1630, // NOLINT
514 1632, 1634, 1636, 1638, 1640, 1642, 1644, 1664, // NOLINT
515 1666, 1668, 1670, 1672, 1674, 1676, 1678, 1680, // NOLINT
516 1682, 1684, 1686, 1688, 1690, 1826, 1828, 1830, // NOLINT
517 1832, 1834, 1836, 1838, 1842, 1844, 1846, 1848, // NOLINT
518 1850, 1852, 1854, 1856, 1858, 1860, 1862, 1864, // NOLINT
519 1866, 1868, 1870, 1872, 1874, 1876, 1878, 1880, // NOLINT
520 1882, 1884, 1886, 1888, 1890, 1892, 1894, 1896, // NOLINT
521 1898, 1900, 1902, 1913, 1915, 1073743741, 1918, 1920, // NOLINT
522 1922, 1924, 1926, 1931, 1933, 1936, 1938, 1942, // NOLINT
523 1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, // NOLINT
524 1960, 1073743786, 1965, 1073743792, 1969}; // NOLINT
525 static const uint16_t kUppercaseTable7Size = 2;
526 static const int32_t kUppercaseTable7[2] = {
527 1073749793, 7994 }; // NOLINT
Is(uchar c)528 bool Uppercase::Is(uchar c) {
529 int chunk_index = c >> 13;
530 switch (chunk_index) {
531 case 0: return LookupPredicate(kUppercaseTable0,
532 kUppercaseTable0Size,
533 c);
534 case 1: return LookupPredicate(kUppercaseTable1,
535 kUppercaseTable1Size,
536 c);
537 case 5: return LookupPredicate(kUppercaseTable5,
538 kUppercaseTable5Size,
539 c);
540 case 7: return LookupPredicate(kUppercaseTable7,
541 kUppercaseTable7Size,
542 c);
543 default: return false;
544 }
545 }
546
547
548 // Lowercase: point.category == 'Ll'
549
550 static const uint16_t kLowercaseTable0Size = 467;
551 static const int32_t kLowercaseTable0[467] = {
552 1073741921, 122, 181, 1073742047,
553 246, 1073742072, 255, 257, // NOLINT
554 259, 261, 263, 265,
555 267, 269, 271, 273, // NOLINT
556 275, 277, 279, 281,
557 283, 285, 287, 289, // NOLINT
558 291, 293, 295, 297,
559 299, 301, 303, 305, // NOLINT
560 307, 309, 1073742135, 312,
561 314, 316, 318, 320, // NOLINT
562 322, 324, 326, 1073742152,
563 329, 331, 333, 335, // NOLINT
564 337, 339, 341, 343,
565 345, 347, 349, 351, // NOLINT
566 353, 355, 357, 359,
567 361, 363, 365, 367, // NOLINT
568 369, 371, 373, 375,
569 378, 380, 1073742206, 384, // NOLINT
570 387, 389, 392, 1073742220,
571 397, 402, 405, 1073742233, // NOLINT
572 411, 414, 417, 419,
573 421, 424, 1073742250, 427, // NOLINT
574 429, 432, 436, 438,
575 1073742265, 442, 1073742269, 447, // NOLINT
576 454, 457, 460, 462,
577 464, 466, 468, 470, // NOLINT
578 472, 474, 1073742300, 477,
579 479, 481, 483, 485, // NOLINT
580 487, 489, 491, 493,
581 1073742319, 496, 499, 501, // NOLINT
582 505, 507, 509, 511,
583 513, 515, 517, 519, // NOLINT
584 521, 523, 525, 527,
585 529, 531, 533, 535, // NOLINT
586 537, 539, 541, 543,
587 545, 547, 549, 551, // NOLINT
588 553, 555, 557, 559,
589 561, 1073742387, 569, 572, // NOLINT
590 1073742399, 576, 578, 583,
591 585, 587, 589, 1073742415, // NOLINT
592 659, 1073742485, 687, 881,
593 883, 887, 1073742715, 893, // NOLINT
594 912, 1073742764, 974, 1073742800,
595 977, 1073742805, 983, 985, // NOLINT
596 987, 989, 991, 993,
597 995, 997, 999, 1001, // NOLINT
598 1003, 1005, 1073742831, 1011,
599 1013, 1016, 1073742843, 1020, // NOLINT
600 1073742896, 1119, 1121, 1123,
601 1125, 1127, 1129, 1131, // NOLINT
602 1133, 1135, 1137, 1139,
603 1141, 1143, 1145, 1147, // NOLINT
604 1149, 1151, 1153, 1163,
605 1165, 1167, 1169, 1171, // NOLINT
606 1173, 1175, 1177, 1179,
607 1181, 1183, 1185, 1187, // NOLINT
608 1189, 1191, 1193, 1195,
609 1197, 1199, 1201, 1203, // NOLINT
610 1205, 1207, 1209, 1211,
611 1213, 1215, 1218, 1220, // NOLINT
612 1222, 1224, 1226, 1228,
613 1073743054, 1231, 1233, 1235, // NOLINT
614 1237, 1239, 1241, 1243,
615 1245, 1247, 1249, 1251, // NOLINT
616 1253, 1255, 1257, 1259,
617 1261, 1263, 1265, 1267, // NOLINT
618 1269, 1271, 1273, 1275,
619 1277, 1279, 1281, 1283, // NOLINT
620 1285, 1287, 1289, 1291,
621 1293, 1295, 1297, 1299, // NOLINT
622 1301, 1303, 1305, 1307,
623 1309, 1311, 1313, 1315, // NOLINT
624 1317, 1319, 1321, 1323,
625 1325, 1327, 1073743201, 1415, // NOLINT
626 1073749248, 7467, 1073749355, 7543,
627 1073749369, 7578, 7681, 7683, // NOLINT
628 7685, 7687, 7689, 7691,
629 7693, 7695, 7697, 7699, // NOLINT
630 7701, 7703, 7705, 7707,
631 7709, 7711, 7713, 7715, // NOLINT
632 7717, 7719, 7721, 7723,
633 7725, 7727, 7729, 7731, // NOLINT
634 7733, 7735, 7737, 7739,
635 7741, 7743, 7745, 7747, // NOLINT
636 7749, 7751, 7753, 7755,
637 7757, 7759, 7761, 7763, // NOLINT
638 7765, 7767, 7769, 7771,
639 7773, 7775, 7777, 7779, // NOLINT
640 7781, 7783, 7785, 7787,
641 7789, 7791, 7793, 7795, // NOLINT
642 7797, 7799, 7801, 7803,
643 7805, 7807, 7809, 7811, // NOLINT
644 7813, 7815, 7817, 7819,
645 7821, 7823, 7825, 7827, // NOLINT
646 1073749653, 7837, 7839, 7841,
647 7843, 7845, 7847, 7849, // NOLINT
648 7851, 7853, 7855, 7857,
649 7859, 7861, 7863, 7865, // NOLINT
650 7867, 7869, 7871, 7873,
651 7875, 7877, 7879, 7881, // NOLINT
652 7883, 7885, 7887, 7889,
653 7891, 7893, 7895, 7897, // NOLINT
654 7899, 7901, 7903, 7905,
655 7907, 7909, 7911, 7913, // NOLINT
656 7915, 7917, 7919, 7921,
657 7923, 7925, 7927, 7929, // NOLINT
658 7931, 7933, 1073749759, 7943,
659 1073749776, 7957, 1073749792, 7975, // NOLINT
660 1073749808, 7991, 1073749824, 8005,
661 1073749840, 8023, 1073749856, 8039, // NOLINT
662 1073749872, 8061, 1073749888, 8071,
663 1073749904, 8087, 1073749920, 8103, // NOLINT
664 1073749936, 8116, 1073749942, 8119,
665 8126, 1073749954, 8132, 1073749958, // NOLINT
666 8135, 1073749968, 8147, 1073749974,
667 8151, 1073749984, 8167, 1073750002, // NOLINT
668 8180, 1073750006, 8183}; // NOLINT
669 static const uint16_t kLowercaseTable1Size = 84;
670 static const int32_t kLowercaseTable1[84] = {
671 266, 1073742094, 271, 275, 303, 308, 313, 1073742140, // NOLINT
672 317, 1073742150, 329, 334, 388, 1073744944, 3166, 3169, // NOLINT
673 1073744997, 3174, 3176, 3178, 3180, 3185, 1073745011, 3188, // NOLINT
674 1073745014, 3195, 3201, 3203, 3205, 3207, 3209, 3211, // NOLINT
675 3213, 3215, 3217, 3219, 3221, 3223, 3225, 3227, // NOLINT
676 3229, 3231, 3233, 3235, 3237, 3239, 3241, 3243, // NOLINT
677 3245, 3247, 3249, 3251, 3253, 3255, 3257, 3259, // NOLINT
678 3261, 3263, 3265, 3267, 3269, 3271, 3273, 3275, // NOLINT
679 3277, 3279, 3281, 3283, 3285, 3287, 3289, 3291, // NOLINT
680 3293, 3295, 3297, 1073745123, 3300, 3308, 3310, 3315, // NOLINT
681 1073745152, 3365, 3367, 3373 }; // NOLINT
682 static const uint16_t kLowercaseTable5Size = 105;
683 static const int32_t kLowercaseTable5[105] = {
684 1601, 1603, 1605, 1607,
685 1609, 1611, 1613, 1615, // NOLINT
686 1617, 1619, 1621, 1623,
687 1625, 1627, 1629, 1631, // NOLINT
688 1633, 1635, 1637, 1639,
689 1641, 1643, 1645, 1665, // NOLINT
690 1667, 1669, 1671, 1673,
691 1675, 1677, 1679, 1681, // NOLINT
692 1683, 1685, 1687, 1689,
693 1691, 1827, 1829, 1831, // NOLINT
694 1833, 1835, 1837, 1073743663,
695 1841, 1843, 1845, 1847, // NOLINT
696 1849, 1851, 1853, 1855,
697 1857, 1859, 1861, 1863, // NOLINT
698 1865, 1867, 1869, 1871,
699 1873, 1875, 1877, 1879, // NOLINT
700 1881, 1883, 1885, 1887,
701 1889, 1891, 1893, 1895, // NOLINT
702 1897, 1899, 1901, 1903,
703 1073743729, 1912, 1914, 1916, // NOLINT
704 1919, 1921, 1923, 1925,
705 1927, 1932, 1934, 1937, // NOLINT
706 1073743763, 1941, 1943, 1945,
707 1947, 1949, 1951, 1953, // NOLINT
708 1955, 1957, 1959, 1961,
709 2042, 1073744688, 2906, 1073744740, // NOLINT
710 2917}; // NOLINT
711 static const uint16_t kLowercaseTable7Size = 6;
712 static const int32_t kLowercaseTable7[6] = {
713 1073748736, 6918, 1073748755, 6935, 1073749825, 8026 }; // NOLINT
Is(uchar c)714 bool Lowercase::Is(uchar c) {
715 int chunk_index = c >> 13;
716 switch (chunk_index) {
717 case 0: return LookupPredicate(kLowercaseTable0,
718 kLowercaseTable0Size,
719 c);
720 case 1: return LookupPredicate(kLowercaseTable1,
721 kLowercaseTable1Size,
722 c);
723 case 5: return LookupPredicate(kLowercaseTable5,
724 kLowercaseTable5Size,
725 c);
726 case 7: return LookupPredicate(kLowercaseTable7,
727 kLowercaseTable7Size,
728 c);
729 default: return false;
730 }
731 }
732
733
734 // Letter: point.category in ['Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl']
735
736 static const uint16_t kLetterTable0Size = 431;
737 static const int32_t kLetterTable0[431] = {
738 1073741889, 90, 1073741921, 122,
739 170, 181, 186, 1073742016, // NOLINT
740 214, 1073742040, 246, 1073742072,
741 705, 1073742534, 721, 1073742560, // NOLINT
742 740, 748, 750, 1073742704,
743 884, 1073742710, 887, 1073742714, // NOLINT
744 893, 895, 902, 1073742728,
745 906, 908, 1073742734, 929, // NOLINT
746 1073742755, 1013, 1073742839, 1153,
747 1073742986, 1327, 1073743153, 1366, // NOLINT
748 1369, 1073743201, 1415, 1073743312,
749 1514, 1073743344, 1522, 1073743392, // NOLINT
750 1610, 1073743470, 1647, 1073743473,
751 1747, 1749, 1073743589, 1766, // NOLINT
752 1073743598, 1775, 1073743610, 1788,
753 1791, 1808, 1073743634, 1839, // NOLINT
754 1073743693, 1957, 1969, 1073743818,
755 2026, 1073743860, 2037, 2042, // NOLINT
756 1073743872, 2069, 2074, 2084,
757 2088, 1073743936, 2136, 1073744032, // NOLINT
758 2226, 1073744132, 2361, 2365,
759 2384, 1073744216, 2401, 1073744241, // NOLINT
760 2432, 1073744261, 2444, 1073744271,
761 2448, 1073744275, 2472, 1073744298, // NOLINT
762 2480, 2482, 1073744310, 2489,
763 2493, 2510, 1073744348, 2525, // NOLINT
764 1073744351, 2529, 1073744368, 2545,
765 1073744389, 2570, 1073744399, 2576, // NOLINT
766 1073744403, 2600, 1073744426, 2608,
767 1073744434, 2611, 1073744437, 2614, // NOLINT
768 1073744440, 2617, 1073744473, 2652,
769 2654, 1073744498, 2676, 1073744517, // NOLINT
770 2701, 1073744527, 2705, 1073744531,
771 2728, 1073744554, 2736, 1073744562, // NOLINT
772 2739, 1073744565, 2745, 2749,
773 2768, 1073744608, 2785, 1073744645, // NOLINT
774 2828, 1073744655, 2832, 1073744659,
775 2856, 1073744682, 2864, 1073744690, // NOLINT
776 2867, 1073744693, 2873, 2877,
777 1073744732, 2909, 1073744735, 2913, // NOLINT
778 2929, 2947, 1073744773, 2954,
779 1073744782, 2960, 1073744786, 2965, // NOLINT
780 1073744793, 2970, 2972, 1073744798,
781 2975, 1073744803, 2980, 1073744808, // NOLINT
782 2986, 1073744814, 3001, 3024,
783 1073744901, 3084, 1073744910, 3088, // NOLINT
784 1073744914, 3112, 1073744938, 3129,
785 3133, 1073744984, 3161, 1073744992, // NOLINT
786 3169, 1073745029, 3212, 1073745038,
787 3216, 1073745042, 3240, 1073745066, // NOLINT
788 3251, 1073745077, 3257, 3261,
789 3294, 1073745120, 3297, 1073745137, // NOLINT
790 3314, 1073745157, 3340, 1073745166,
791 3344, 1073745170, 3386, 3389, // NOLINT
792 3406, 1073745248, 3425, 1073745274,
793 3455, 1073745285, 3478, 1073745306, // NOLINT
794 3505, 1073745331, 3515, 3517,
795 1073745344, 3526, 1073745409, 3632, // NOLINT
796 1073745458, 3635, 1073745472, 3654,
797 1073745537, 3714, 3716, 1073745543, // NOLINT
798 3720, 3722, 3725, 1073745556,
799 3735, 1073745561, 3743, 1073745569, // NOLINT
800 3747, 3749, 3751, 1073745578,
801 3755, 1073745581, 3760, 1073745586, // NOLINT
802 3763, 3773, 1073745600, 3780,
803 3782, 1073745628, 3807, 3840, // NOLINT
804 1073745728, 3911, 1073745737, 3948,
805 1073745800, 3980, 1073745920, 4138, // NOLINT
806 4159, 1073746000, 4181, 1073746010,
807 4189, 4193, 1073746021, 4198, // NOLINT
808 1073746030, 4208, 1073746037, 4225,
809 4238, 1073746080, 4293, 4295, // NOLINT
810 4301, 1073746128, 4346, 1073746172,
811 4680, 1073746506, 4685, 1073746512, // NOLINT
812 4694, 4696, 1073746522, 4701,
813 1073746528, 4744, 1073746570, 4749, // NOLINT
814 1073746576, 4784, 1073746610, 4789,
815 1073746616, 4798, 4800, 1073746626, // NOLINT
816 4805, 1073746632, 4822, 1073746648,
817 4880, 1073746706, 4885, 1073746712, // NOLINT
818 4954, 1073746816, 5007, 1073746848,
819 5108, 1073746945, 5740, 1073747567, // NOLINT
820 5759, 1073747585, 5786, 1073747616,
821 5866, 1073747694, 5880, 1073747712, // NOLINT
822 5900, 1073747726, 5905, 1073747744,
823 5937, 1073747776, 5969, 1073747808, // NOLINT
824 5996, 1073747822, 6000, 1073747840,
825 6067, 6103, 6108, 1073748000, // NOLINT
826 6263, 1073748096, 6312, 6314,
827 1073748144, 6389, 1073748224, 6430, // NOLINT
828 1073748304, 6509, 1073748336, 6516,
829 1073748352, 6571, 1073748417, 6599, // NOLINT
830 1073748480, 6678, 1073748512, 6740,
831 6823, 1073748741, 6963, 1073748805, // NOLINT
832 6987, 1073748867, 7072, 1073748910,
833 7087, 1073748922, 7141, 1073748992, // NOLINT
834 7203, 1073749069, 7247, 1073749082,
835 7293, 1073749225, 7404, 1073749230, // NOLINT
836 7409, 1073749237, 7414, 1073749248,
837 7615, 1073749504, 7957, 1073749784, // NOLINT
838 7965, 1073749792, 8005, 1073749832,
839 8013, 1073749840, 8023, 8025, // NOLINT
840 8027, 8029, 1073749855, 8061,
841 1073749888, 8116, 1073749942, 8124, // NOLINT
842 8126, 1073749954, 8132, 1073749958,
843 8140, 1073749968, 8147, 1073749974, // NOLINT
844 8155, 1073749984, 8172, 1073750002,
845 8180, 1073750006, 8188}; // NOLINT
846 static const uint16_t kLetterTable1Size = 87;
847 static const int32_t kLetterTable1[87] = {
848 113, 127, 1073741968, 156, 258, 263, 1073742090, 275, // NOLINT
849 277, 1073742105, 285, 292, 294, 296, 1073742122, 301, // NOLINT
850 1073742127, 313, 1073742140, 319, 1073742149, 329, 334, 1073742176, // NOLINT
851 392, 1073744896, 3118, 1073744944, 3166, 1073744992, 3300, 1073745131, // NOLINT
852 3310, 1073745138, 3315, 1073745152, 3365, 3367, 3373, 1073745200, // NOLINT
853 3431, 3439, 1073745280, 3478, 1073745312, 3494, 1073745320, 3502, // NOLINT
854 1073745328, 3510, 1073745336, 3518, 1073745344, 3526, 1073745352, 3534, // NOLINT
855 1073745360, 3542, 1073745368, 3550, 3631, 1073745925, 4103, 1073745953, // NOLINT
856 4137, 1073745969, 4149, 1073745976, 4156, 1073745985, 4246, 1073746077, // NOLINT
857 4255, 1073746081, 4346, 1073746172, 4351, 1073746181, 4397, 1073746225, // NOLINT
858 4494, 1073746336, 4538, 1073746416, 4607, 1073746944, 8191 }; // NOLINT
859 static const uint16_t kLetterTable2Size = 4;
860 static const int32_t kLetterTable2[4] = {
861 1073741824, 3509, 1073745408, 8191 }; // NOLINT
862 static const uint16_t kLetterTable3Size = 2;
863 static const int32_t kLetterTable3[2] = {
864 1073741824, 8191 }; // NOLINT
865 static const uint16_t kLetterTable4Size = 2;
866 static const int32_t kLetterTable4[2] = {
867 1073741824, 8140 }; // NOLINT
868 static const uint16_t kLetterTable5Size = 100;
869 static const int32_t kLetterTable5[100] = {
870 1073741824, 1164, 1073743056, 1277,
871 1073743104, 1548, 1073743376, 1567, // NOLINT
872 1073743402, 1579, 1073743424, 1646,
873 1073743487, 1693, 1073743520, 1775, // NOLINT
874 1073743639, 1823, 1073743650, 1928,
875 1073743755, 1934, 1073743760, 1965, // NOLINT
876 1073743792, 1969, 1073743863, 2049,
877 1073743875, 2053, 1073743879, 2058, // NOLINT
878 1073743884, 2082, 1073743936, 2163,
879 1073744002, 2227, 1073744114, 2295, // NOLINT
880 2299, 1073744138, 2341, 1073744176,
881 2374, 1073744224, 2428, 1073744260, // NOLINT
882 2482, 2511, 1073744352, 2532,
883 1073744358, 2543, 1073744378, 2558, // NOLINT
884 1073744384, 2600, 1073744448, 2626,
885 1073744452, 2635, 1073744480, 2678, // NOLINT
886 2682, 1073744510, 2735, 2737,
887 1073744565, 2742, 1073744569, 2749, // NOLINT
888 2752, 2754, 1073744603, 2781,
889 1073744608, 2794, 1073744626, 2804, // NOLINT
890 1073744641, 2822, 1073744649, 2830,
891 1073744657, 2838, 1073744672, 2854, // NOLINT
892 1073744680, 2862, 1073744688, 2906,
893 1073744732, 2911, 1073744740, 2917, // NOLINT
894 1073744832, 3042, 1073744896, 8191}; // NOLINT
895 static const uint16_t kLetterTable6Size = 6;
896 static const int32_t kLetterTable6[6] = {
897 1073741824, 6051, 1073747888, 6086, 1073747915, 6139 }; // NOLINT
898 static const uint16_t kLetterTable7Size = 48;
899 static const int32_t kLetterTable7[48] = {
900 1073748224, 6765, 1073748592, 6873, 1073748736, 6918, 1073748755, 6935, // NOLINT
901 6941, 1073748767, 6952, 1073748778, 6966, 1073748792, 6972, 6974, // NOLINT
902 1073748800, 6977, 1073748803, 6980, 1073748806, 7089, 1073748947, 7485, // NOLINT
903 1073749328, 7567, 1073749394, 7623, 1073749488, 7675, 1073749616, 7796, // NOLINT
904 1073749622, 7932, 1073749793, 7994, 1073749825, 8026, 1073749862, 8126, // NOLINT
905 1073749954, 8135, 1073749962, 8143, 1073749970, 8151, 1073749978, 8156 }; // NOLINT
Is(uchar c)906 bool Letter::Is(uchar c) {
907 int chunk_index = c >> 13;
908 switch (chunk_index) {
909 case 0: return LookupPredicate(kLetterTable0,
910 kLetterTable0Size,
911 c);
912 case 1: return LookupPredicate(kLetterTable1,
913 kLetterTable1Size,
914 c);
915 case 2: return LookupPredicate(kLetterTable2,
916 kLetterTable2Size,
917 c);
918 case 3: return LookupPredicate(kLetterTable3,
919 kLetterTable3Size,
920 c);
921 case 4: return LookupPredicate(kLetterTable4,
922 kLetterTable4Size,
923 c);
924 case 5: return LookupPredicate(kLetterTable5,
925 kLetterTable5Size,
926 c);
927 case 6: return LookupPredicate(kLetterTable6,
928 kLetterTable6Size,
929 c);
930 case 7: return LookupPredicate(kLetterTable7,
931 kLetterTable7Size,
932 c);
933 default: return false;
934 }
935 }
936
937
938 // ID_Start: ((point.category in ['Lu', 'Ll', 'Lt', 'Lm', 'Lo',
939 // 'Nl'] or 'Other_ID_Start' in point.properties) and ('Pattern_Syntax' not in
940 // point.properties) and ('Pattern_White_Space' not in point.properties)) or
941 // ('JS_ID_Start' in point.properties)
942
943 static const uint16_t kID_StartTable0Size = 434;
944 static const int32_t kID_StartTable0[434] = {
945 36, 1073741889, 90, 92,
946 95, 1073741921, 122, 170, // NOLINT
947 181, 186, 1073742016, 214,
948 1073742040, 246, 1073742072, 705, // NOLINT
949 1073742534, 721, 1073742560, 740,
950 748, 750, 1073742704, 884, // NOLINT
951 1073742710, 887, 1073742714, 893,
952 895, 902, 1073742728, 906, // NOLINT
953 908, 1073742734, 929, 1073742755,
954 1013, 1073742839, 1153, 1073742986, // NOLINT
955 1327, 1073743153, 1366, 1369,
956 1073743201, 1415, 1073743312, 1514, // NOLINT
957 1073743344, 1522, 1073743392, 1610,
958 1073743470, 1647, 1073743473, 1747, // NOLINT
959 1749, 1073743589, 1766, 1073743598,
960 1775, 1073743610, 1788, 1791, // NOLINT
961 1808, 1073743634, 1839, 1073743693,
962 1957, 1969, 1073743818, 2026, // NOLINT
963 1073743860, 2037, 2042, 1073743872,
964 2069, 2074, 2084, 2088, // NOLINT
965 1073743936, 2136, 1073744032, 2226,
966 1073744132, 2361, 2365, 2384, // NOLINT
967 1073744216, 2401, 1073744241, 2432,
968 1073744261, 2444, 1073744271, 2448, // NOLINT
969 1073744275, 2472, 1073744298, 2480,
970 2482, 1073744310, 2489, 2493, // NOLINT
971 2510, 1073744348, 2525, 1073744351,
972 2529, 1073744368, 2545, 1073744389, // NOLINT
973 2570, 1073744399, 2576, 1073744403,
974 2600, 1073744426, 2608, 1073744434, // NOLINT
975 2611, 1073744437, 2614, 1073744440,
976 2617, 1073744473, 2652, 2654, // NOLINT
977 1073744498, 2676, 1073744517, 2701,
978 1073744527, 2705, 1073744531, 2728, // NOLINT
979 1073744554, 2736, 1073744562, 2739,
980 1073744565, 2745, 2749, 2768, // NOLINT
981 1073744608, 2785, 1073744645, 2828,
982 1073744655, 2832, 1073744659, 2856, // NOLINT
983 1073744682, 2864, 1073744690, 2867,
984 1073744693, 2873, 2877, 1073744732, // NOLINT
985 2909, 1073744735, 2913, 2929,
986 2947, 1073744773, 2954, 1073744782, // NOLINT
987 2960, 1073744786, 2965, 1073744793,
988 2970, 2972, 1073744798, 2975, // NOLINT
989 1073744803, 2980, 1073744808, 2986,
990 1073744814, 3001, 3024, 1073744901, // NOLINT
991 3084, 1073744910, 3088, 1073744914,
992 3112, 1073744938, 3129, 3133, // NOLINT
993 1073744984, 3161, 1073744992, 3169,
994 1073745029, 3212, 1073745038, 3216, // NOLINT
995 1073745042, 3240, 1073745066, 3251,
996 1073745077, 3257, 3261, 3294, // NOLINT
997 1073745120, 3297, 1073745137, 3314,
998 1073745157, 3340, 1073745166, 3344, // NOLINT
999 1073745170, 3386, 3389, 3406,
1000 1073745248, 3425, 1073745274, 3455, // NOLINT
1001 1073745285, 3478, 1073745306, 3505,
1002 1073745331, 3515, 3517, 1073745344, // NOLINT
1003 3526, 1073745409, 3632, 1073745458,
1004 3635, 1073745472, 3654, 1073745537, // NOLINT
1005 3714, 3716, 1073745543, 3720,
1006 3722, 3725, 1073745556, 3735, // NOLINT
1007 1073745561, 3743, 1073745569, 3747,
1008 3749, 3751, 1073745578, 3755, // NOLINT
1009 1073745581, 3760, 1073745586, 3763,
1010 3773, 1073745600, 3780, 3782, // NOLINT
1011 1073745628, 3807, 3840, 1073745728,
1012 3911, 1073745737, 3948, 1073745800, // NOLINT
1013 3980, 1073745920, 4138, 4159,
1014 1073746000, 4181, 1073746010, 4189, // NOLINT
1015 4193, 1073746021, 4198, 1073746030,
1016 4208, 1073746037, 4225, 4238, // NOLINT
1017 1073746080, 4293, 4295, 4301,
1018 1073746128, 4346, 1073746172, 4680, // NOLINT
1019 1073746506, 4685, 1073746512, 4694,
1020 4696, 1073746522, 4701, 1073746528, // NOLINT
1021 4744, 1073746570, 4749, 1073746576,
1022 4784, 1073746610, 4789, 1073746616, // NOLINT
1023 4798, 4800, 1073746626, 4805,
1024 1073746632, 4822, 1073746648, 4880, // NOLINT
1025 1073746706, 4885, 1073746712, 4954,
1026 1073746816, 5007, 1073746848, 5108, // NOLINT
1027 1073746945, 5740, 1073747567, 5759,
1028 1073747585, 5786, 1073747616, 5866, // NOLINT
1029 1073747694, 5880, 1073747712, 5900,
1030 1073747726, 5905, 1073747744, 5937, // NOLINT
1031 1073747776, 5969, 1073747808, 5996,
1032 1073747822, 6000, 1073747840, 6067, // NOLINT
1033 6103, 6108, 1073748000, 6263,
1034 1073748096, 6312, 6314, 1073748144, // NOLINT
1035 6389, 1073748224, 6430, 1073748304,
1036 6509, 1073748336, 6516, 1073748352, // NOLINT
1037 6571, 1073748417, 6599, 1073748480,
1038 6678, 1073748512, 6740, 6823, // NOLINT
1039 1073748741, 6963, 1073748805, 6987,
1040 1073748867, 7072, 1073748910, 7087, // NOLINT
1041 1073748922, 7141, 1073748992, 7203,
1042 1073749069, 7247, 1073749082, 7293, // NOLINT
1043 1073749225, 7404, 1073749230, 7409,
1044 1073749237, 7414, 1073749248, 7615, // NOLINT
1045 1073749504, 7957, 1073749784, 7965,
1046 1073749792, 8005, 1073749832, 8013, // NOLINT
1047 1073749840, 8023, 8025, 8027,
1048 8029, 1073749855, 8061, 1073749888, // NOLINT
1049 8116, 1073749942, 8124, 8126,
1050 1073749954, 8132, 1073749958, 8140, // NOLINT
1051 1073749968, 8147, 1073749974, 8155,
1052 1073749984, 8172, 1073750002, 8180, // NOLINT
1053 1073750006, 8188}; // NOLINT
1054 static const uint16_t kID_StartTable1Size = 84;
1055 static const int32_t kID_StartTable1[84] = {
1056 113, 127, 1073741968, 156,
1057 258, 263, 1073742090, 275, // NOLINT
1058 277, 1073742104, 285, 292,
1059 294, 296, 1073742122, 313, // NOLINT
1060 1073742140, 319, 1073742149, 329,
1061 334, 1073742176, 392, 1073744896, // NOLINT
1062 3118, 1073744944, 3166, 1073744992,
1063 3300, 1073745131, 3310, 1073745138, // NOLINT
1064 3315, 1073745152, 3365, 3367,
1065 3373, 1073745200, 3431, 3439, // NOLINT
1066 1073745280, 3478, 1073745312, 3494,
1067 1073745320, 3502, 1073745328, 3510, // NOLINT
1068 1073745336, 3518, 1073745344, 3526,
1069 1073745352, 3534, 1073745360, 3542, // NOLINT
1070 1073745368, 3550, 1073745925, 4103,
1071 1073745953, 4137, 1073745969, 4149, // NOLINT
1072 1073745976, 4156, 1073745985, 4246,
1073 1073746075, 4255, 1073746081, 4346, // NOLINT
1074 1073746172, 4351, 1073746181, 4397,
1075 1073746225, 4494, 1073746336, 4538, // NOLINT
1076 1073746416, 4607, 1073746944, 8191}; // NOLINT
1077 static const uint16_t kID_StartTable2Size = 4;
1078 static const int32_t kID_StartTable2[4] = {1073741824, 3509, 1073745408,
1079 8191}; // NOLINT
1080 static const uint16_t kID_StartTable3Size = 2;
1081 static const int32_t kID_StartTable3[2] = {1073741824, 8191}; // NOLINT
1082 static const uint16_t kID_StartTable4Size = 2;
1083 static const int32_t kID_StartTable4[2] = {1073741824, 8140}; // NOLINT
1084 static const uint16_t kID_StartTable5Size = 100;
1085 static const int32_t kID_StartTable5[100] = {
1086 1073741824, 1164, 1073743056, 1277,
1087 1073743104, 1548, 1073743376, 1567, // NOLINT
1088 1073743402, 1579, 1073743424, 1646,
1089 1073743487, 1693, 1073743520, 1775, // NOLINT
1090 1073743639, 1823, 1073743650, 1928,
1091 1073743755, 1934, 1073743760, 1965, // NOLINT
1092 1073743792, 1969, 1073743863, 2049,
1093 1073743875, 2053, 1073743879, 2058, // NOLINT
1094 1073743884, 2082, 1073743936, 2163,
1095 1073744002, 2227, 1073744114, 2295, // NOLINT
1096 2299, 1073744138, 2341, 1073744176,
1097 2374, 1073744224, 2428, 1073744260, // NOLINT
1098 2482, 2511, 1073744352, 2532,
1099 1073744358, 2543, 1073744378, 2558, // NOLINT
1100 1073744384, 2600, 1073744448, 2626,
1101 1073744452, 2635, 1073744480, 2678, // NOLINT
1102 2682, 1073744510, 2735, 2737,
1103 1073744565, 2742, 1073744569, 2749, // NOLINT
1104 2752, 2754, 1073744603, 2781,
1105 1073744608, 2794, 1073744626, 2804, // NOLINT
1106 1073744641, 2822, 1073744649, 2830,
1107 1073744657, 2838, 1073744672, 2854, // NOLINT
1108 1073744680, 2862, 1073744688, 2906,
1109 1073744732, 2911, 1073744740, 2917, // NOLINT
1110 1073744832, 3042, 1073744896, 8191}; // NOLINT
1111 static const uint16_t kID_StartTable6Size = 6;
1112 static const int32_t kID_StartTable6[6] = {1073741824, 6051, 1073747888, 6086,
1113 1073747915, 6139}; // NOLINT
1114 static const uint16_t kID_StartTable7Size = 48;
1115 static const int32_t kID_StartTable7[48] = {
1116 1073748224, 6765, 1073748592, 6873,
1117 1073748736, 6918, 1073748755, 6935, // NOLINT
1118 6941, 1073748767, 6952, 1073748778,
1119 6966, 1073748792, 6972, 6974, // NOLINT
1120 1073748800, 6977, 1073748803, 6980,
1121 1073748806, 7089, 1073748947, 7485, // NOLINT
1122 1073749328, 7567, 1073749394, 7623,
1123 1073749488, 7675, 1073749616, 7796, // NOLINT
1124 1073749622, 7932, 1073749793, 7994,
1125 1073749825, 8026, 1073749862, 8126, // NOLINT
1126 1073749954, 8135, 1073749962, 8143,
1127 1073749970, 8151, 1073749978, 8156}; // NOLINT
Is(uchar c)1128 bool ID_Start::Is(uchar c) {
1129 int chunk_index = c >> 13;
1130 switch (chunk_index) {
1131 case 0:
1132 return LookupPredicate(kID_StartTable0, kID_StartTable0Size, c);
1133 case 1:
1134 return LookupPredicate(kID_StartTable1, kID_StartTable1Size, c);
1135 case 2:
1136 return LookupPredicate(kID_StartTable2, kID_StartTable2Size, c);
1137 case 3:
1138 return LookupPredicate(kID_StartTable3, kID_StartTable3Size, c);
1139 case 4:
1140 return LookupPredicate(kID_StartTable4, kID_StartTable4Size, c);
1141 case 5:
1142 return LookupPredicate(kID_StartTable5, kID_StartTable5Size, c);
1143 case 6:
1144 return LookupPredicate(kID_StartTable6, kID_StartTable6Size, c);
1145 case 7:
1146 return LookupPredicate(kID_StartTable7, kID_StartTable7Size, c);
1147 default:
1148 return false;
1149 }
1150 }
1151
1152
1153 // ID_Continue: point.category in ['Nd', 'Mn', 'Mc', 'Pc'] or
1154 // 'Other_ID_Continue' in point.properties or 'JS_ID_Continue' in
1155 // point.properties
1156
1157 static const uint16_t kID_ContinueTable0Size = 315;
1158 static const int32_t kID_ContinueTable0[315] = {
1159 1073741872, 57, 95, 183,
1160 1073742592, 879, 903, 1073742979, // NOLINT
1161 1159, 1073743249, 1469, 1471,
1162 1073743297, 1474, 1073743300, 1477, // NOLINT
1163 1479, 1073743376, 1562, 1073743435,
1164 1641, 1648, 1073743574, 1756, // NOLINT
1165 1073743583, 1764, 1073743591, 1768,
1166 1073743594, 1773, 1073743600, 1785, // NOLINT
1167 1809, 1073743664, 1866, 1073743782,
1168 1968, 1073743808, 1993, 1073743851, // NOLINT
1169 2035, 1073743894, 2073, 1073743899,
1170 2083, 1073743909, 2087, 1073743913, // NOLINT
1171 2093, 1073743961, 2139, 1073744100,
1172 2307, 1073744186, 2364, 1073744190, // NOLINT
1173 2383, 1073744209, 2391, 1073744226,
1174 2403, 1073744230, 2415, 1073744257, // NOLINT
1175 2435, 2492, 1073744318, 2500,
1176 1073744327, 2504, 1073744331, 2509, // NOLINT
1177 2519, 1073744354, 2531, 1073744358,
1178 2543, 1073744385, 2563, 2620, // NOLINT
1179 1073744446, 2626, 1073744455, 2632,
1180 1073744459, 2637, 2641, 1073744486, // NOLINT
1181 2673, 2677, 1073744513, 2691,
1182 2748, 1073744574, 2757, 1073744583, // NOLINT
1183 2761, 1073744587, 2765, 1073744610,
1184 2787, 1073744614, 2799, 1073744641, // NOLINT
1185 2819, 2876, 1073744702, 2884,
1186 1073744711, 2888, 1073744715, 2893, // NOLINT
1187 1073744726, 2903, 1073744738, 2915,
1188 1073744742, 2927, 2946, 1073744830, // NOLINT
1189 3010, 1073744838, 3016, 1073744842,
1190 3021, 3031, 1073744870, 3055, // NOLINT
1191 1073744896, 3075, 1073744958, 3140,
1192 1073744966, 3144, 1073744970, 3149, // NOLINT
1193 1073744981, 3158, 1073744994, 3171,
1194 1073744998, 3183, 1073745025, 3203, // NOLINT
1195 3260, 1073745086, 3268, 1073745094,
1196 3272, 1073745098, 3277, 1073745109, // NOLINT
1197 3286, 1073745122, 3299, 1073745126,
1198 3311, 1073745153, 3331, 1073745214, // NOLINT
1199 3396, 1073745222, 3400, 1073745226,
1200 3405, 3415, 1073745250, 3427, // NOLINT
1201 1073745254, 3439, 1073745282, 3459,
1202 3530, 1073745359, 3540, 3542, // NOLINT
1203 1073745368, 3551, 1073745382, 3567,
1204 1073745394, 3571, 3633, 1073745460, // NOLINT
1205 3642, 1073745479, 3662, 1073745488,
1206 3673, 3761, 1073745588, 3769, // NOLINT
1207 1073745595, 3772, 1073745608, 3789,
1208 1073745616, 3801, 1073745688, 3865, // NOLINT
1209 1073745696, 3881, 3893, 3895,
1210 3897, 1073745726, 3903, 1073745777, // NOLINT
1211 3972, 1073745798, 3975, 1073745805,
1212 3991, 1073745817, 4028, 4038, // NOLINT
1213 1073745963, 4158, 1073745984, 4169,
1214 1073746006, 4185, 1073746014, 4192, // NOLINT
1215 1073746018, 4196, 1073746023, 4205,
1216 1073746033, 4212, 1073746050, 4237, // NOLINT
1217 1073746063, 4253, 1073746781, 4959,
1218 1073746793, 4977, 1073747730, 5908, // NOLINT
1219 1073747762, 5940, 1073747794, 5971,
1220 1073747826, 6003, 1073747892, 6099, // NOLINT
1221 6109, 1073747936, 6121, 1073747979,
1222 6157, 1073747984, 6169, 6313, // NOLINT
1223 1073748256, 6443, 1073748272, 6459,
1224 1073748294, 6479, 1073748400, 6592, // NOLINT
1225 1073748424, 6601, 1073748432, 6618,
1226 1073748503, 6683, 1073748565, 6750, // NOLINT
1227 1073748576, 6780, 1073748607, 6793,
1228 1073748624, 6809, 1073748656, 6845, // NOLINT
1229 1073748736, 6916, 1073748788, 6980,
1230 1073748816, 7001, 1073748843, 7027, // NOLINT
1231 1073748864, 7042, 1073748897, 7085,
1232 1073748912, 7097, 1073748966, 7155, // NOLINT
1233 1073749028, 7223, 1073749056, 7241,
1234 1073749072, 7257, 1073749200, 7378, // NOLINT
1235 1073749204, 7400, 7405, 1073749234,
1236 7412, 1073749240, 7417, 1073749440, // NOLINT
1237 7669, 1073749500, 7679}; // NOLINT
1238 static const uint16_t kID_ContinueTable1Size = 19;
1239 static const int32_t kID_ContinueTable1[19] = {
1240 1073741836, 13, 1073741887, 64,
1241 84, 1073742032, 220, 225, // NOLINT
1242 1073742053, 240, 1073745135, 3313,
1243 3455, 1073745376, 3583, 1073745962, // NOLINT
1244 4143, 1073746073, 4250}; // NOLINT
1245 static const uint16_t kID_ContinueTable5Size = 63;
1246 static const int32_t kID_ContinueTable5[63] = {
1247 1073743392, 1577, 1647, 1073743476,
1248 1661, 1695, 1073743600, 1777, // NOLINT
1249 2050, 2054, 2059, 1073743907,
1250 2087, 1073744000, 2177, 1073744052, // NOLINT
1251 2244, 1073744080, 2265, 1073744096,
1252 2289, 1073744128, 2313, 1073744166, // NOLINT
1253 2349, 1073744199, 2387, 1073744256,
1254 2435, 1073744307, 2496, 1073744336, // NOLINT
1255 2521, 2533, 1073744368, 2553,
1256 1073744425, 2614, 2627, 1073744460, // NOLINT
1257 2637, 1073744464, 2649, 1073744507,
1258 2685, 2736, 1073744562, 2740, // NOLINT
1259 1073744567, 2744, 1073744574, 2751,
1260 2753, 1073744619, 2799, 1073744629, // NOLINT
1261 2806, 1073744867, 3050, 1073744876,
1262 3053, 1073744880, 3065}; // NOLINT
1263 static const uint16_t kID_ContinueTable7Size = 12;
1264 static const int32_t kID_ContinueTable7[12] = {
1265 6942, 1073749504, 7695, 1073749536,
1266 7725, 1073749555, 7732, 1073749581, // NOLINT
1267 7759, 1073749776, 7961, 7999}; // NOLINT
Is(uchar c)1268 bool ID_Continue::Is(uchar c) {
1269 int chunk_index = c >> 13;
1270 switch (chunk_index) {
1271 case 0:
1272 return LookupPredicate(kID_ContinueTable0, kID_ContinueTable0Size, c);
1273 case 1:
1274 return LookupPredicate(kID_ContinueTable1, kID_ContinueTable1Size, c);
1275 case 5:
1276 return LookupPredicate(kID_ContinueTable5, kID_ContinueTable5Size, c);
1277 case 7:
1278 return LookupPredicate(kID_ContinueTable7, kID_ContinueTable7Size, c);
1279 default: return false;
1280 }
1281 }
1282
1283
1284 // WhiteSpace: (point.category == 'Zs') or ('JS_White_Space' in
1285 // point.properties)
1286
1287 static const uint16_t kWhiteSpaceTable0Size = 7;
1288 static const int32_t kWhiteSpaceTable0[7] = {9, 1073741835, 12, 32,
1289 160, 5760, 6158}; // NOLINT
1290 static const uint16_t kWhiteSpaceTable1Size = 5;
1291 static const int32_t kWhiteSpaceTable1[5] = {
1292 1073741824, 10, 47, 95, 4096 }; // NOLINT
1293 static const uint16_t kWhiteSpaceTable7Size = 1;
1294 static const int32_t kWhiteSpaceTable7[1] = {7935}; // NOLINT
Is(uchar c)1295 bool WhiteSpace::Is(uchar c) {
1296 int chunk_index = c >> 13;
1297 switch (chunk_index) {
1298 case 0: return LookupPredicate(kWhiteSpaceTable0,
1299 kWhiteSpaceTable0Size,
1300 c);
1301 case 1: return LookupPredicate(kWhiteSpaceTable1,
1302 kWhiteSpaceTable1Size,
1303 c);
1304 case 7:
1305 return LookupPredicate(kWhiteSpaceTable7, kWhiteSpaceTable7Size, c);
1306 default: return false;
1307 }
1308 }
1309
1310
1311 // LineTerminator: 'JS_Line_Terminator' in point.properties
1312
1313 static const uint16_t kLineTerminatorTable0Size = 2;
1314 static const int32_t kLineTerminatorTable0[2] = {
1315 10, 13 }; // NOLINT
1316 static const uint16_t kLineTerminatorTable1Size = 2;
1317 static const int32_t kLineTerminatorTable1[2] = {
1318 1073741864, 41 }; // NOLINT
Is(uchar c)1319 bool LineTerminator::Is(uchar c) {
1320 int chunk_index = c >> 13;
1321 switch (chunk_index) {
1322 case 0: return LookupPredicate(kLineTerminatorTable0,
1323 kLineTerminatorTable0Size,
1324 c);
1325 case 1: return LookupPredicate(kLineTerminatorTable1,
1326 kLineTerminatorTable1Size,
1327 c);
1328 default: return false;
1329 }
1330 }
1331
1332 static const MultiCharacterSpecialCase<2> kToLowercaseMultiStrings0[2] = { // NOLINT
1333 {{105, 775}}, {{kSentinel}} }; // NOLINT
1334 static const uint16_t kToLowercaseTable0Size = 488; // NOLINT
1335 static const int32_t kToLowercaseTable0[976] = {
1336 1073741889, 128, 90, 128, 1073742016, 128,
1337 214, 128, 1073742040, 128, 222, 128,
1338 256, 4, 258, 4, // NOLINT
1339 260, 4, 262, 4, 264, 4,
1340 266, 4, 268, 4, 270, 4,
1341 272, 4, 274, 4, // NOLINT
1342 276, 4, 278, 4, 280, 4,
1343 282, 4, 284, 4, 286, 4,
1344 288, 4, 290, 4, // NOLINT
1345 292, 4, 294, 4, 296, 4,
1346 298, 4, 300, 4, 302, 4,
1347 304, 1, 306, 4, // NOLINT
1348 308, 4, 310, 4, 313, 4,
1349 315, 4, 317, 4, 319, 4,
1350 321, 4, 323, 4, // NOLINT
1351 325, 4, 327, 4, 330, 4,
1352 332, 4, 334, 4, 336, 4,
1353 338, 4, 340, 4, // NOLINT
1354 342, 4, 344, 4, 346, 4,
1355 348, 4, 350, 4, 352, 4,
1356 354, 4, 356, 4, // NOLINT
1357 358, 4, 360, 4, 362, 4,
1358 364, 4, 366, 4, 368, 4,
1359 370, 4, 372, 4, // NOLINT
1360 374, 4, 376, -484, 377, 4,
1361 379, 4, 381, 4, 385, 840,
1362 386, 4, 388, 4, // NOLINT
1363 390, 824, 391, 4, 1073742217, 820,
1364 394, 820, 395, 4, 398, 316,
1365 399, 808, 400, 812, // NOLINT
1366 401, 4, 403, 820, 404, 828,
1367 406, 844, 407, 836, 408, 4,
1368 412, 844, 413, 852, // NOLINT
1369 415, 856, 416, 4, 418, 4,
1370 420, 4, 422, 872, 423, 4,
1371 425, 872, 428, 4, // NOLINT
1372 430, 872, 431, 4, 1073742257, 868,
1373 434, 868, 435, 4, 437, 4,
1374 439, 876, 440, 4, // NOLINT
1375 444, 4, 452, 8, 453, 4,
1376 455, 8, 456, 4, 458, 8,
1377 459, 4, 461, 4, // NOLINT
1378 463, 4, 465, 4, 467, 4,
1379 469, 4, 471, 4, 473, 4,
1380 475, 4, 478, 4, // NOLINT
1381 480, 4, 482, 4, 484, 4,
1382 486, 4, 488, 4, 490, 4,
1383 492, 4, 494, 4, // NOLINT
1384 497, 8, 498, 4, 500, 4,
1385 502, -388, 503, -224, 504, 4,
1386 506, 4, 508, 4, // NOLINT
1387 510, 4, 512, 4, 514, 4,
1388 516, 4, 518, 4, 520, 4,
1389 522, 4, 524, 4, // NOLINT
1390 526, 4, 528, 4, 530, 4,
1391 532, 4, 534, 4, 536, 4,
1392 538, 4, 540, 4, // NOLINT
1393 542, 4, 544, -520, 546, 4,
1394 548, 4, 550, 4, 552, 4,
1395 554, 4, 556, 4, // NOLINT
1396 558, 4, 560, 4, 562, 4,
1397 570, 43180, 571, 4, 573, -652,
1398 574, 43168, 577, 4, // NOLINT
1399 579, -780, 580, 276, 581, 284,
1400 582, 4, 584, 4, 586, 4,
1401 588, 4, 590, 4, // NOLINT
1402 880, 4, 882, 4, 886, 4,
1403 895, 464, 902, 152, 1073742728, 148,
1404 906, 148, 908, 256, // NOLINT
1405 1073742734, 252, 911, 252, 1073742737, 128,
1406 929, 128, 931, 6, 1073742756, 128,
1407 939, 128, 975, 32, // NOLINT
1408 984, 4, 986, 4, 988, 4,
1409 990, 4, 992, 4, 994, 4,
1410 996, 4, 998, 4, // NOLINT
1411 1000, 4, 1002, 4, 1004, 4,
1412 1006, 4, 1012, -240, 1015, 4,
1413 1017, -28, 1018, 4, // NOLINT
1414 1073742845, -520, 1023, -520, 1073742848, 320,
1415 1039, 320, 1073742864, 128, 1071, 128,
1416 1120, 4, 1122, 4, // NOLINT
1417 1124, 4, 1126, 4, 1128, 4,
1418 1130, 4, 1132, 4, 1134, 4,
1419 1136, 4, 1138, 4, // NOLINT
1420 1140, 4, 1142, 4, 1144, 4,
1421 1146, 4, 1148, 4, 1150, 4,
1422 1152, 4, 1162, 4, // NOLINT
1423 1164, 4, 1166, 4, 1168, 4,
1424 1170, 4, 1172, 4, 1174, 4,
1425 1176, 4, 1178, 4, // NOLINT
1426 1180, 4, 1182, 4, 1184, 4,
1427 1186, 4, 1188, 4, 1190, 4,
1428 1192, 4, 1194, 4, // NOLINT
1429 1196, 4, 1198, 4, 1200, 4,
1430 1202, 4, 1204, 4, 1206, 4,
1431 1208, 4, 1210, 4, // NOLINT
1432 1212, 4, 1214, 4, 1216, 60,
1433 1217, 4, 1219, 4, 1221, 4,
1434 1223, 4, 1225, 4, // NOLINT
1435 1227, 4, 1229, 4, 1232, 4,
1436 1234, 4, 1236, 4, 1238, 4,
1437 1240, 4, 1242, 4, // NOLINT
1438 1244, 4, 1246, 4, 1248, 4,
1439 1250, 4, 1252, 4, 1254, 4,
1440 1256, 4, 1258, 4, // NOLINT
1441 1260, 4, 1262, 4, 1264, 4,
1442 1266, 4, 1268, 4, 1270, 4,
1443 1272, 4, 1274, 4, // NOLINT
1444 1276, 4, 1278, 4, 1280, 4,
1445 1282, 4, 1284, 4, 1286, 4,
1446 1288, 4, 1290, 4, // NOLINT
1447 1292, 4, 1294, 4, 1296, 4,
1448 1298, 4, 1300, 4, 1302, 4,
1449 1304, 4, 1306, 4, // NOLINT
1450 1308, 4, 1310, 4, 1312, 4,
1451 1314, 4, 1316, 4, 1318, 4,
1452 1320, 4, 1322, 4, // NOLINT
1453 1324, 4, 1326, 4, 1073743153, 192,
1454 1366, 192, 1073746080, 29056, 4293, 29056,
1455 4295, 29056, 4301, 29056, // NOLINT
1456 7680, 4, 7682, 4, 7684, 4,
1457 7686, 4, 7688, 4, 7690, 4,
1458 7692, 4, 7694, 4, // NOLINT
1459 7696, 4, 7698, 4, 7700, 4,
1460 7702, 4, 7704, 4, 7706, 4,
1461 7708, 4, 7710, 4, // NOLINT
1462 7712, 4, 7714, 4, 7716, 4,
1463 7718, 4, 7720, 4, 7722, 4,
1464 7724, 4, 7726, 4, // NOLINT
1465 7728, 4, 7730, 4, 7732, 4,
1466 7734, 4, 7736, 4, 7738, 4,
1467 7740, 4, 7742, 4, // NOLINT
1468 7744, 4, 7746, 4, 7748, 4,
1469 7750, 4, 7752, 4, 7754, 4,
1470 7756, 4, 7758, 4, // NOLINT
1471 7760, 4, 7762, 4, 7764, 4,
1472 7766, 4, 7768, 4, 7770, 4,
1473 7772, 4, 7774, 4, // NOLINT
1474 7776, 4, 7778, 4, 7780, 4,
1475 7782, 4, 7784, 4, 7786, 4,
1476 7788, 4, 7790, 4, // NOLINT
1477 7792, 4, 7794, 4, 7796, 4,
1478 7798, 4, 7800, 4, 7802, 4,
1479 7804, 4, 7806, 4, // NOLINT
1480 7808, 4, 7810, 4, 7812, 4,
1481 7814, 4, 7816, 4, 7818, 4,
1482 7820, 4, 7822, 4, // NOLINT
1483 7824, 4, 7826, 4, 7828, 4,
1484 7838, -30460, 7840, 4, 7842, 4,
1485 7844, 4, 7846, 4, // NOLINT
1486 7848, 4, 7850, 4, 7852, 4,
1487 7854, 4, 7856, 4, 7858, 4,
1488 7860, 4, 7862, 4, // NOLINT
1489 7864, 4, 7866, 4, 7868, 4,
1490 7870, 4, 7872, 4, 7874, 4,
1491 7876, 4, 7878, 4, // NOLINT
1492 7880, 4, 7882, 4, 7884, 4,
1493 7886, 4, 7888, 4, 7890, 4,
1494 7892, 4, 7894, 4, // NOLINT
1495 7896, 4, 7898, 4, 7900, 4,
1496 7902, 4, 7904, 4, 7906, 4,
1497 7908, 4, 7910, 4, // NOLINT
1498 7912, 4, 7914, 4, 7916, 4,
1499 7918, 4, 7920, 4, 7922, 4,
1500 7924, 4, 7926, 4, // NOLINT
1501 7928, 4, 7930, 4, 7932, 4,
1502 7934, 4, 1073749768, -32, 7951, -32,
1503 1073749784, -32, 7965, -32, // NOLINT
1504 1073749800, -32, 7983, -32, 1073749816, -32,
1505 7999, -32, 1073749832, -32, 8013, -32,
1506 8025, -32, 8027, -32, // NOLINT
1507 8029, -32, 8031, -32, 1073749864, -32,
1508 8047, -32, 1073749896, -32, 8079, -32,
1509 1073749912, -32, 8095, -32, // NOLINT
1510 1073749928, -32, 8111, -32, 1073749944, -32,
1511 8121, -32, 1073749946, -296, 8123, -296,
1512 8124, -36, 1073749960, -344, // NOLINT
1513 8139, -344, 8140, -36, 1073749976, -32,
1514 8153, -32, 1073749978, -400, 8155, -400,
1515 1073749992, -32, 8169, -32, // NOLINT
1516 1073749994, -448, 8171, -448, 8172, -28,
1517 1073750008, -512, 8185, -512, 1073750010, -504,
1518 8187, -504, 8188, -36}; // NOLINT
1519 static const uint16_t kToLowercaseMultiStrings0Size = 2; // NOLINT
1520 static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings1[1] = { // NOLINT
1521 {{kSentinel}} }; // NOLINT
1522 static const uint16_t kToLowercaseTable1Size = 79; // NOLINT
1523 static const int32_t kToLowercaseTable1[158] = {
1524 294, -30068, 298, -33532, 299, -33048, 306, 112, 1073742176, 64, 367, 64, 387, 4, 1073743030, 104, // NOLINT
1525 1231, 104, 1073744896, 192, 3118, 192, 3168, 4, 3170, -42972, 3171, -15256, 3172, -42908, 3175, 4, // NOLINT
1526 3177, 4, 3179, 4, 3181, -43120, 3182, -42996, 3183, -43132, 3184, -43128, 3186, 4, 3189, 4, // NOLINT
1527 1073745022, -43260, 3199, -43260, 3200, 4, 3202, 4, 3204, 4, 3206, 4, 3208, 4, 3210, 4, // NOLINT
1528 3212, 4, 3214, 4, 3216, 4, 3218, 4, 3220, 4, 3222, 4, 3224, 4, 3226, 4, // NOLINT
1529 3228, 4, 3230, 4, 3232, 4, 3234, 4, 3236, 4, 3238, 4, 3240, 4, 3242, 4, // NOLINT
1530 3244, 4, 3246, 4, 3248, 4, 3250, 4, 3252, 4, 3254, 4, 3256, 4, 3258, 4, // NOLINT
1531 3260, 4, 3262, 4, 3264, 4, 3266, 4, 3268, 4, 3270, 4, 3272, 4, 3274, 4, // NOLINT
1532 3276, 4, 3278, 4, 3280, 4, 3282, 4, 3284, 4, 3286, 4, 3288, 4, 3290, 4, // NOLINT
1533 3292, 4, 3294, 4, 3296, 4, 3298, 4, 3307, 4, 3309, 4, 3314, 4 }; // NOLINT
1534 static const uint16_t kToLowercaseMultiStrings1Size = 1; // NOLINT
1535 static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings5[1] = { // NOLINT
1536 {{kSentinel}} }; // NOLINT
1537 static const uint16_t kToLowercaseTable5Size = 103; // NOLINT
1538 static const int32_t kToLowercaseTable5[206] = {
1539 1600, 4, 1602, 4, 1604, 4, 1606, 4,
1540 1608, 4, 1610, 4, 1612, 4, 1614, 4, // NOLINT
1541 1616, 4, 1618, 4, 1620, 4, 1622, 4,
1542 1624, 4, 1626, 4, 1628, 4, 1630, 4, // NOLINT
1543 1632, 4, 1634, 4, 1636, 4, 1638, 4,
1544 1640, 4, 1642, 4, 1644, 4, 1664, 4, // NOLINT
1545 1666, 4, 1668, 4, 1670, 4, 1672, 4,
1546 1674, 4, 1676, 4, 1678, 4, 1680, 4, // NOLINT
1547 1682, 4, 1684, 4, 1686, 4, 1688, 4,
1548 1690, 4, 1826, 4, 1828, 4, 1830, 4, // NOLINT
1549 1832, 4, 1834, 4, 1836, 4, 1838, 4,
1550 1842, 4, 1844, 4, 1846, 4, 1848, 4, // NOLINT
1551 1850, 4, 1852, 4, 1854, 4, 1856, 4,
1552 1858, 4, 1860, 4, 1862, 4, 1864, 4, // NOLINT
1553 1866, 4, 1868, 4, 1870, 4, 1872, 4,
1554 1874, 4, 1876, 4, 1878, 4, 1880, 4, // NOLINT
1555 1882, 4, 1884, 4, 1886, 4, 1888, 4,
1556 1890, 4, 1892, 4, 1894, 4, 1896, 4, // NOLINT
1557 1898, 4, 1900, 4, 1902, 4, 1913, 4,
1558 1915, 4, 1917, -141328, 1918, 4, 1920, 4, // NOLINT
1559 1922, 4, 1924, 4, 1926, 4, 1931, 4,
1560 1933, -169120, 1936, 4, 1938, 4, 1942, 4, // NOLINT
1561 1944, 4, 1946, 4, 1948, 4, 1950, 4,
1562 1952, 4, 1954, 4, 1956, 4, 1958, 4, // NOLINT
1563 1960, 4, 1962, -169232, 1963, -169276, 1964, -169260,
1564 1965, -169220, 1968, -169032, 1969, -169128}; // NOLINT
1565 static const uint16_t kToLowercaseMultiStrings5Size = 1; // NOLINT
1566 static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings7[1] = { // NOLINT
1567 {{kSentinel}} }; // NOLINT
1568 static const uint16_t kToLowercaseTable7Size = 2; // NOLINT
1569 static const int32_t kToLowercaseTable7[4] = {
1570 1073749793, 128, 7994, 128 }; // NOLINT
1571 static const uint16_t kToLowercaseMultiStrings7Size = 1; // NOLINT
Convert(uchar c,uchar n,uchar * result,bool * allow_caching_ptr)1572 int ToLowercase::Convert(uchar c,
1573 uchar n,
1574 uchar* result,
1575 bool* allow_caching_ptr) {
1576 int chunk_index = c >> 13;
1577 switch (chunk_index) {
1578 case 0: return LookupMapping<true>(kToLowercaseTable0,
1579 kToLowercaseTable0Size,
1580 kToLowercaseMultiStrings0,
1581 c,
1582 n,
1583 result,
1584 allow_caching_ptr);
1585 case 1: return LookupMapping<true>(kToLowercaseTable1,
1586 kToLowercaseTable1Size,
1587 kToLowercaseMultiStrings1,
1588 c,
1589 n,
1590 result,
1591 allow_caching_ptr);
1592 case 5: return LookupMapping<true>(kToLowercaseTable5,
1593 kToLowercaseTable5Size,
1594 kToLowercaseMultiStrings5,
1595 c,
1596 n,
1597 result,
1598 allow_caching_ptr);
1599 case 7: return LookupMapping<true>(kToLowercaseTable7,
1600 kToLowercaseTable7Size,
1601 kToLowercaseMultiStrings7,
1602 c,
1603 n,
1604 result,
1605 allow_caching_ptr);
1606 default: return 0;
1607 }
1608 }
1609
1610 static const MultiCharacterSpecialCase<3> kToUppercaseMultiStrings0[62] = { // NOLINT
1611 {{83, 83, kSentinel}}, {{700, 78, kSentinel}}, {{74, 780, kSentinel}}, {{921, 776, 769}}, // NOLINT
1612 {{933, 776, 769}}, {{1333, 1362, kSentinel}}, {{72, 817, kSentinel}}, {{84, 776, kSentinel}}, // NOLINT
1613 {{87, 778, kSentinel}}, {{89, 778, kSentinel}}, {{65, 702, kSentinel}}, {{933, 787, kSentinel}}, // NOLINT
1614 {{933, 787, 768}}, {{933, 787, 769}}, {{933, 787, 834}}, {{7944, 921, kSentinel}}, // NOLINT
1615 {{7945, 921, kSentinel}}, {{7946, 921, kSentinel}}, {{7947, 921, kSentinel}}, {{7948, 921, kSentinel}}, // NOLINT
1616 {{7949, 921, kSentinel}}, {{7950, 921, kSentinel}}, {{7951, 921, kSentinel}}, {{7976, 921, kSentinel}}, // NOLINT
1617 {{7977, 921, kSentinel}}, {{7978, 921, kSentinel}}, {{7979, 921, kSentinel}}, {{7980, 921, kSentinel}}, // NOLINT
1618 {{7981, 921, kSentinel}}, {{7982, 921, kSentinel}}, {{7983, 921, kSentinel}}, {{8040, 921, kSentinel}}, // NOLINT
1619 {{8041, 921, kSentinel}}, {{8042, 921, kSentinel}}, {{8043, 921, kSentinel}}, {{8044, 921, kSentinel}}, // NOLINT
1620 {{8045, 921, kSentinel}}, {{8046, 921, kSentinel}}, {{8047, 921, kSentinel}}, {{8122, 921, kSentinel}}, // NOLINT
1621 {{913, 921, kSentinel}}, {{902, 921, kSentinel}}, {{913, 834, kSentinel}}, {{913, 834, 921}}, // NOLINT
1622 {{8138, 921, kSentinel}}, {{919, 921, kSentinel}}, {{905, 921, kSentinel}}, {{919, 834, kSentinel}}, // NOLINT
1623 {{919, 834, 921}}, {{921, 776, 768}}, {{921, 834, kSentinel}}, {{921, 776, 834}}, // NOLINT
1624 {{933, 776, 768}}, {{929, 787, kSentinel}}, {{933, 834, kSentinel}}, {{933, 776, 834}}, // NOLINT
1625 {{8186, 921, kSentinel}}, {{937, 921, kSentinel}}, {{911, 921, kSentinel}}, {{937, 834, kSentinel}}, // NOLINT
1626 {{937, 834, 921}}, {{kSentinel}} }; // NOLINT
1627 static const uint16_t kToUppercaseTable0Size = 590; // NOLINT
1628 static const int32_t kToUppercaseTable0[1180] = {
1629 1073741921, -128, 122, -128, 181, 2972,
1630 223, 1, 1073742048, -128, 246, -128,
1631 1073742072, -128, 254, -128, // NOLINT
1632 255, 484, 257, -4, 259, -4,
1633 261, -4, 263, -4, 265, -4,
1634 267, -4, 269, -4, // NOLINT
1635 271, -4, 273, -4, 275, -4,
1636 277, -4, 279, -4, 281, -4,
1637 283, -4, 285, -4, // NOLINT
1638 287, -4, 289, -4, 291, -4,
1639 293, -4, 295, -4, 297, -4,
1640 299, -4, 301, -4, // NOLINT
1641 303, -4, 305, -928, 307, -4,
1642 309, -4, 311, -4, 314, -4,
1643 316, -4, 318, -4, // NOLINT
1644 320, -4, 322, -4, 324, -4,
1645 326, -4, 328, -4, 329, 5,
1646 331, -4, 333, -4, // NOLINT
1647 335, -4, 337, -4, 339, -4,
1648 341, -4, 343, -4, 345, -4,
1649 347, -4, 349, -4, // NOLINT
1650 351, -4, 353, -4, 355, -4,
1651 357, -4, 359, -4, 361, -4,
1652 363, -4, 365, -4, // NOLINT
1653 367, -4, 369, -4, 371, -4,
1654 373, -4, 375, -4, 378, -4,
1655 380, -4, 382, -4, // NOLINT
1656 383, -1200, 384, 780, 387, -4,
1657 389, -4, 392, -4, 396, -4,
1658 402, -4, 405, 388, // NOLINT
1659 409, -4, 410, 652, 414, 520,
1660 417, -4, 419, -4, 421, -4,
1661 424, -4, 429, -4, // NOLINT
1662 432, -4, 436, -4, 438, -4,
1663 441, -4, 445, -4, 447, 224,
1664 453, -4, 454, -8, // NOLINT
1665 456, -4, 457, -8, 459, -4,
1666 460, -8, 462, -4, 464, -4,
1667 466, -4, 468, -4, // NOLINT
1668 470, -4, 472, -4, 474, -4,
1669 476, -4, 477, -316, 479, -4,
1670 481, -4, 483, -4, // NOLINT
1671 485, -4, 487, -4, 489, -4,
1672 491, -4, 493, -4, 495, -4,
1673 496, 9, 498, -4, // NOLINT
1674 499, -8, 501, -4, 505, -4,
1675 507, -4, 509, -4, 511, -4,
1676 513, -4, 515, -4, // NOLINT
1677 517, -4, 519, -4, 521, -4,
1678 523, -4, 525, -4, 527, -4,
1679 529, -4, 531, -4, // NOLINT
1680 533, -4, 535, -4, 537, -4,
1681 539, -4, 541, -4, 543, -4,
1682 547, -4, 549, -4, // NOLINT
1683 551, -4, 553, -4, 555, -4,
1684 557, -4, 559, -4, 561, -4,
1685 563, -4, 572, -4, // NOLINT
1686 1073742399, 43260, 576, 43260, 578, -4,
1687 583, -4, 585, -4, 587, -4,
1688 589, -4, 591, -4, // NOLINT
1689 592, 43132, 593, 43120, 594, 43128,
1690 595, -840, 596, -824, 1073742422, -820,
1691 599, -820, 601, -808, // NOLINT
1692 603, -812, 604, 169276, 608, -820,
1693 609, 169260, 611, -828, 613, 169120,
1694 614, 169232, 616, -836, // NOLINT
1695 617, -844, 619, 42972, 620, 169220,
1696 623, -844, 625, 42996, 626, -852,
1697 629, -856, 637, 42908, // NOLINT
1698 640, -872, 643, -872, 647, 169128,
1699 648, -872, 649, -276, 1073742474, -868,
1700 651, -868, 652, -284, // NOLINT
1701 658, -876, 670, 169032, 837, 336,
1702 881, -4, 883, -4, 887, -4,
1703 1073742715, 520, 893, 520, // NOLINT
1704 912, 13, 940, -152, 1073742765, -148,
1705 943, -148, 944, 17, 1073742769, -128,
1706 961, -128, 962, -124, // NOLINT
1707 1073742787, -128, 971, -128, 972, -256,
1708 1073742797, -252, 974, -252, 976, -248,
1709 977, -228, 981, -188, // NOLINT
1710 982, -216, 983, -32, 985, -4,
1711 987, -4, 989, -4, 991, -4,
1712 993, -4, 995, -4, // NOLINT
1713 997, -4, 999, -4, 1001, -4,
1714 1003, -4, 1005, -4, 1007, -4,
1715 1008, -344, 1009, -320, // NOLINT
1716 1010, 28, 1011, -464, 1013, -384,
1717 1016, -4, 1019, -4, 1073742896, -128,
1718 1103, -128, 1073742928, -320, // NOLINT
1719 1119, -320, 1121, -4, 1123, -4,
1720 1125, -4, 1127, -4, 1129, -4,
1721 1131, -4, 1133, -4, // NOLINT
1722 1135, -4, 1137, -4, 1139, -4,
1723 1141, -4, 1143, -4, 1145, -4,
1724 1147, -4, 1149, -4, // NOLINT
1725 1151, -4, 1153, -4, 1163, -4,
1726 1165, -4, 1167, -4, 1169, -4,
1727 1171, -4, 1173, -4, // NOLINT
1728 1175, -4, 1177, -4, 1179, -4,
1729 1181, -4, 1183, -4, 1185, -4,
1730 1187, -4, 1189, -4, // NOLINT
1731 1191, -4, 1193, -4, 1195, -4,
1732 1197, -4, 1199, -4, 1201, -4,
1733 1203, -4, 1205, -4, // NOLINT
1734 1207, -4, 1209, -4, 1211, -4,
1735 1213, -4, 1215, -4, 1218, -4,
1736 1220, -4, 1222, -4, // NOLINT
1737 1224, -4, 1226, -4, 1228, -4,
1738 1230, -4, 1231, -60, 1233, -4,
1739 1235, -4, 1237, -4, // NOLINT
1740 1239, -4, 1241, -4, 1243, -4,
1741 1245, -4, 1247, -4, 1249, -4,
1742 1251, -4, 1253, -4, // NOLINT
1743 1255, -4, 1257, -4, 1259, -4,
1744 1261, -4, 1263, -4, 1265, -4,
1745 1267, -4, 1269, -4, // NOLINT
1746 1271, -4, 1273, -4, 1275, -4,
1747 1277, -4, 1279, -4, 1281, -4,
1748 1283, -4, 1285, -4, // NOLINT
1749 1287, -4, 1289, -4, 1291, -4,
1750 1293, -4, 1295, -4, 1297, -4,
1751 1299, -4, 1301, -4, // NOLINT
1752 1303, -4, 1305, -4, 1307, -4,
1753 1309, -4, 1311, -4, 1313, -4,
1754 1315, -4, 1317, -4, // NOLINT
1755 1319, -4, 1321, -4, 1323, -4,
1756 1325, -4, 1327, -4, 1073743201, -192,
1757 1414, -192, 1415, 21, // NOLINT
1758 7545, 141328, 7549, 15256, 7681, -4,
1759 7683, -4, 7685, -4, 7687, -4,
1760 7689, -4, 7691, -4, // NOLINT
1761 7693, -4, 7695, -4, 7697, -4,
1762 7699, -4, 7701, -4, 7703, -4,
1763 7705, -4, 7707, -4, // NOLINT
1764 7709, -4, 7711, -4, 7713, -4,
1765 7715, -4, 7717, -4, 7719, -4,
1766 7721, -4, 7723, -4, // NOLINT
1767 7725, -4, 7727, -4, 7729, -4,
1768 7731, -4, 7733, -4, 7735, -4,
1769 7737, -4, 7739, -4, // NOLINT
1770 7741, -4, 7743, -4, 7745, -4,
1771 7747, -4, 7749, -4, 7751, -4,
1772 7753, -4, 7755, -4, // NOLINT
1773 7757, -4, 7759, -4, 7761, -4,
1774 7763, -4, 7765, -4, 7767, -4,
1775 7769, -4, 7771, -4, // NOLINT
1776 7773, -4, 7775, -4, 7777, -4,
1777 7779, -4, 7781, -4, 7783, -4,
1778 7785, -4, 7787, -4, // NOLINT
1779 7789, -4, 7791, -4, 7793, -4,
1780 7795, -4, 7797, -4, 7799, -4,
1781 7801, -4, 7803, -4, // NOLINT
1782 7805, -4, 7807, -4, 7809, -4,
1783 7811, -4, 7813, -4, 7815, -4,
1784 7817, -4, 7819, -4, // NOLINT
1785 7821, -4, 7823, -4, 7825, -4,
1786 7827, -4, 7829, -4, 7830, 25,
1787 7831, 29, 7832, 33, // NOLINT
1788 7833, 37, 7834, 41, 7835, -236,
1789 7841, -4, 7843, -4, 7845, -4,
1790 7847, -4, 7849, -4, // NOLINT
1791 7851, -4, 7853, -4, 7855, -4,
1792 7857, -4, 7859, -4, 7861, -4,
1793 7863, -4, 7865, -4, // NOLINT
1794 7867, -4, 7869, -4, 7871, -4,
1795 7873, -4, 7875, -4, 7877, -4,
1796 7879, -4, 7881, -4, // NOLINT
1797 7883, -4, 7885, -4, 7887, -4,
1798 7889, -4, 7891, -4, 7893, -4,
1799 7895, -4, 7897, -4, // NOLINT
1800 7899, -4, 7901, -4, 7903, -4,
1801 7905, -4, 7907, -4, 7909, -4,
1802 7911, -4, 7913, -4, // NOLINT
1803 7915, -4, 7917, -4, 7919, -4,
1804 7921, -4, 7923, -4, 7925, -4,
1805 7927, -4, 7929, -4, // NOLINT
1806 7931, -4, 7933, -4, 7935, -4,
1807 1073749760, 32, 7943, 32, 1073749776, 32,
1808 7957, 32, 1073749792, 32, // NOLINT
1809 7975, 32, 1073749808, 32, 7991, 32,
1810 1073749824, 32, 8005, 32, 8016, 45,
1811 8017, 32, 8018, 49, // NOLINT
1812 8019, 32, 8020, 53, 8021, 32,
1813 8022, 57, 8023, 32, 1073749856, 32,
1814 8039, 32, 1073749872, 296, // NOLINT
1815 8049, 296, 1073749874, 344, 8053, 344,
1816 1073749878, 400, 8055, 400, 1073749880, 512,
1817 8057, 512, 1073749882, 448, // NOLINT
1818 8059, 448, 1073749884, 504, 8061, 504,
1819 8064, 61, 8065, 65, 8066, 69,
1820 8067, 73, 8068, 77, // NOLINT
1821 8069, 81, 8070, 85, 8071, 89,
1822 8072, 61, 8073, 65, 8074, 69,
1823 8075, 73, 8076, 77, // NOLINT
1824 8077, 81, 8078, 85, 8079, 89,
1825 8080, 93, 8081, 97, 8082, 101,
1826 8083, 105, 8084, 109, // NOLINT
1827 8085, 113, 8086, 117, 8087, 121,
1828 8088, 93, 8089, 97, 8090, 101,
1829 8091, 105, 8092, 109, // NOLINT
1830 8093, 113, 8094, 117, 8095, 121,
1831 8096, 125, 8097, 129, 8098, 133,
1832 8099, 137, 8100, 141, // NOLINT
1833 8101, 145, 8102, 149, 8103, 153,
1834 8104, 125, 8105, 129, 8106, 133,
1835 8107, 137, 8108, 141, // NOLINT
1836 8109, 145, 8110, 149, 8111, 153,
1837 1073749936, 32, 8113, 32, 8114, 157,
1838 8115, 161, 8116, 165, // NOLINT
1839 8118, 169, 8119, 173, 8124, 161,
1840 8126, -28820, 8130, 177, 8131, 181,
1841 8132, 185, 8134, 189, // NOLINT
1842 8135, 193, 8140, 181, 1073749968, 32,
1843 8145, 32, 8146, 197, 8147, 13,
1844 8150, 201, 8151, 205, // NOLINT
1845 1073749984, 32, 8161, 32, 8162, 209,
1846 8163, 17, 8164, 213, 8165, 28,
1847 8166, 217, 8167, 221, // NOLINT
1848 8178, 225, 8179, 229, 8180, 233,
1849 8182, 237, 8183, 241, 8188, 229}; // NOLINT
1850 static const uint16_t kToUppercaseMultiStrings0Size = 62; // NOLINT
1851 static const MultiCharacterSpecialCase<1> kToUppercaseMultiStrings1[1] = { // NOLINT
1852 {{kSentinel}} }; // NOLINT
1853 static const uint16_t kToUppercaseTable1Size = 73; // NOLINT
1854 static const int32_t kToUppercaseTable1[146] = {
1855 334, -112, 1073742192, -64, 383, -64, 388, -4, 1073743056, -104, 1257, -104, 1073744944, -192, 3166, -192, // NOLINT
1856 3169, -4, 3173, -43180, 3174, -43168, 3176, -4, 3178, -4, 3180, -4, 3187, -4, 3190, -4, // NOLINT
1857 3201, -4, 3203, -4, 3205, -4, 3207, -4, 3209, -4, 3211, -4, 3213, -4, 3215, -4, // NOLINT
1858 3217, -4, 3219, -4, 3221, -4, 3223, -4, 3225, -4, 3227, -4, 3229, -4, 3231, -4, // NOLINT
1859 3233, -4, 3235, -4, 3237, -4, 3239, -4, 3241, -4, 3243, -4, 3245, -4, 3247, -4, // NOLINT
1860 3249, -4, 3251, -4, 3253, -4, 3255, -4, 3257, -4, 3259, -4, 3261, -4, 3263, -4, // NOLINT
1861 3265, -4, 3267, -4, 3269, -4, 3271, -4, 3273, -4, 3275, -4, 3277, -4, 3279, -4, // NOLINT
1862 3281, -4, 3283, -4, 3285, -4, 3287, -4, 3289, -4, 3291, -4, 3293, -4, 3295, -4, // NOLINT
1863 3297, -4, 3299, -4, 3308, -4, 3310, -4, 3315, -4, 1073745152, -29056, 3365, -29056, 3367, -29056, // NOLINT
1864 3373, -29056 }; // NOLINT
1865 static const uint16_t kToUppercaseMultiStrings1Size = 1; // NOLINT
1866 static const MultiCharacterSpecialCase<1> kToUppercaseMultiStrings5[1] = { // NOLINT
1867 {{kSentinel}} }; // NOLINT
1868 static const uint16_t kToUppercaseTable5Size = 95; // NOLINT
1869 static const int32_t
1870 kToUppercaseTable5[190] = {1601, -4, 1603, -4, 1605, -4, 1607, -4, 1609, -4,
1871 1611, -4, 1613, -4, 1615, -4, // NOLINT
1872 1617, -4, 1619, -4, 1621, -4, 1623, -4, 1625, -4,
1873 1627, -4, 1629, -4, 1631, -4, // NOLINT
1874 1633, -4, 1635, -4, 1637, -4, 1639, -4, 1641, -4,
1875 1643, -4, 1645, -4, 1665, -4, // NOLINT
1876 1667, -4, 1669, -4, 1671, -4, 1673, -4, 1675, -4,
1877 1677, -4, 1679, -4, 1681, -4, // NOLINT
1878 1683, -4, 1685, -4, 1687, -4, 1689, -4, 1691, -4,
1879 1827, -4, 1829, -4, 1831, -4, // NOLINT
1880 1833, -4, 1835, -4, 1837, -4, 1839, -4, 1843, -4,
1881 1845, -4, 1847, -4, 1849, -4, // NOLINT
1882 1851, -4, 1853, -4, 1855, -4, 1857, -4, 1859, -4,
1883 1861, -4, 1863, -4, 1865, -4, // NOLINT
1884 1867, -4, 1869, -4, 1871, -4, 1873, -4, 1875, -4,
1885 1877, -4, 1879, -4, 1881, -4, // NOLINT
1886 1883, -4, 1885, -4, 1887, -4, 1889, -4, 1891, -4,
1887 1893, -4, 1895, -4, 1897, -4, // NOLINT
1888 1899, -4, 1901, -4, 1903, -4, 1914, -4, 1916, -4,
1889 1919, -4, 1921, -4, 1923, -4, // NOLINT
1890 1925, -4, 1927, -4, 1932, -4, 1937, -4, 1939, -4,
1891 1943, -4, 1945, -4, 1947, -4, // NOLINT
1892 1949, -4, 1951, -4, 1953, -4, 1955, -4, 1957, -4,
1893 1959, -4, 1961, -4}; // NOLINT
1894 static const uint16_t kToUppercaseMultiStrings5Size = 1; // NOLINT
1895 static const MultiCharacterSpecialCase<3> kToUppercaseMultiStrings7[12] = { // NOLINT
1896 {{70, 70, kSentinel}}, {{70, 73, kSentinel}}, {{70, 76, kSentinel}}, {{70, 70, 73}}, // NOLINT
1897 {{70, 70, 76}}, {{83, 84, kSentinel}}, {{1348, 1350, kSentinel}}, {{1348, 1333, kSentinel}}, // NOLINT
1898 {{1348, 1339, kSentinel}}, {{1358, 1350, kSentinel}}, {{1348, 1341, kSentinel}}, {{kSentinel}} }; // NOLINT
1899 static const uint16_t kToUppercaseTable7Size = 14; // NOLINT
1900 static const int32_t kToUppercaseTable7[28] = {
1901 6912, 1, 6913, 5, 6914, 9, 6915, 13, 6916, 17, 6917, 21, 6918, 21, 6931, 25, // NOLINT
1902 6932, 29, 6933, 33, 6934, 37, 6935, 41, 1073749825, -128, 8026, -128 }; // NOLINT
1903 static const uint16_t kToUppercaseMultiStrings7Size = 12; // NOLINT
Convert(uchar c,uchar n,uchar * result,bool * allow_caching_ptr)1904 int ToUppercase::Convert(uchar c,
1905 uchar n,
1906 uchar* result,
1907 bool* allow_caching_ptr) {
1908 int chunk_index = c >> 13;
1909 switch (chunk_index) {
1910 case 0: return LookupMapping<true>(kToUppercaseTable0,
1911 kToUppercaseTable0Size,
1912 kToUppercaseMultiStrings0,
1913 c,
1914 n,
1915 result,
1916 allow_caching_ptr);
1917 case 1: return LookupMapping<true>(kToUppercaseTable1,
1918 kToUppercaseTable1Size,
1919 kToUppercaseMultiStrings1,
1920 c,
1921 n,
1922 result,
1923 allow_caching_ptr);
1924 case 5: return LookupMapping<true>(kToUppercaseTable5,
1925 kToUppercaseTable5Size,
1926 kToUppercaseMultiStrings5,
1927 c,
1928 n,
1929 result,
1930 allow_caching_ptr);
1931 case 7: return LookupMapping<true>(kToUppercaseTable7,
1932 kToUppercaseTable7Size,
1933 kToUppercaseMultiStrings7,
1934 c,
1935 n,
1936 result,
1937 allow_caching_ptr);
1938 default: return 0;
1939 }
1940 }
1941
1942 static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings0[1] = { // NOLINT
1943 {{kSentinel}} }; // NOLINT
1944 static const uint16_t kEcma262CanonicalizeTable0Size = 498; // NOLINT
1945 static const int32_t kEcma262CanonicalizeTable0[996] = {
1946 1073741921, -128, 122, -128, 181, 2972,
1947 1073742048, -128, 246, -128, 1073742072, -128,
1948 254, -128, 255, 484, // NOLINT
1949 257, -4, 259, -4, 261, -4,
1950 263, -4, 265, -4, 267, -4,
1951 269, -4, 271, -4, // NOLINT
1952 273, -4, 275, -4, 277, -4,
1953 279, -4, 281, -4, 283, -4,
1954 285, -4, 287, -4, // NOLINT
1955 289, -4, 291, -4, 293, -4,
1956 295, -4, 297, -4, 299, -4,
1957 301, -4, 303, -4, // NOLINT
1958 307, -4, 309, -4, 311, -4,
1959 314, -4, 316, -4, 318, -4,
1960 320, -4, 322, -4, // NOLINT
1961 324, -4, 326, -4, 328, -4,
1962 331, -4, 333, -4, 335, -4,
1963 337, -4, 339, -4, // NOLINT
1964 341, -4, 343, -4, 345, -4,
1965 347, -4, 349, -4, 351, -4,
1966 353, -4, 355, -4, // NOLINT
1967 357, -4, 359, -4, 361, -4,
1968 363, -4, 365, -4, 367, -4,
1969 369, -4, 371, -4, // NOLINT
1970 373, -4, 375, -4, 378, -4,
1971 380, -4, 382, -4, 384, 780,
1972 387, -4, 389, -4, // NOLINT
1973 392, -4, 396, -4, 402, -4,
1974 405, 388, 409, -4, 410, 652,
1975 414, 520, 417, -4, // NOLINT
1976 419, -4, 421, -4, 424, -4,
1977 429, -4, 432, -4, 436, -4,
1978 438, -4, 441, -4, // NOLINT
1979 445, -4, 447, 224, 453, -4,
1980 454, -8, 456, -4, 457, -8,
1981 459, -4, 460, -8, // NOLINT
1982 462, -4, 464, -4, 466, -4,
1983 468, -4, 470, -4, 472, -4,
1984 474, -4, 476, -4, // NOLINT
1985 477, -316, 479, -4, 481, -4,
1986 483, -4, 485, -4, 487, -4,
1987 489, -4, 491, -4, // NOLINT
1988 493, -4, 495, -4, 498, -4,
1989 499, -8, 501, -4, 505, -4,
1990 507, -4, 509, -4, // NOLINT
1991 511, -4, 513, -4, 515, -4,
1992 517, -4, 519, -4, 521, -4,
1993 523, -4, 525, -4, // NOLINT
1994 527, -4, 529, -4, 531, -4,
1995 533, -4, 535, -4, 537, -4,
1996 539, -4, 541, -4, // NOLINT
1997 543, -4, 547, -4, 549, -4,
1998 551, -4, 553, -4, 555, -4,
1999 557, -4, 559, -4, // NOLINT
2000 561, -4, 563, -4, 572, -4,
2001 1073742399, 43260, 576, 43260, 578, -4,
2002 583, -4, 585, -4, // NOLINT
2003 587, -4, 589, -4, 591, -4,
2004 592, 43132, 593, 43120, 594, 43128,
2005 595, -840, 596, -824, // NOLINT
2006 1073742422, -820, 599, -820, 601, -808,
2007 603, -812, 604, 169276, 608, -820,
2008 609, 169260, 611, -828, // NOLINT
2009 613, 169120, 614, 169232, 616, -836,
2010 617, -844, 619, 42972, 620, 169220,
2011 623, -844, 625, 42996, // NOLINT
2012 626, -852, 629, -856, 637, 42908,
2013 640, -872, 643, -872, 647, 169128,
2014 648, -872, 649, -276, // NOLINT
2015 1073742474, -868, 651, -868, 652, -284,
2016 658, -876, 670, 169032, 837, 336,
2017 881, -4, 883, -4, // NOLINT
2018 887, -4, 1073742715, 520, 893, 520,
2019 940, -152, 1073742765, -148, 943, -148,
2020 1073742769, -128, 961, -128, // NOLINT
2021 962, -124, 1073742787, -128, 971, -128,
2022 972, -256, 1073742797, -252, 974, -252,
2023 976, -248, 977, -228, // NOLINT
2024 981, -188, 982, -216, 983, -32,
2025 985, -4, 987, -4, 989, -4,
2026 991, -4, 993, -4, // NOLINT
2027 995, -4, 997, -4, 999, -4,
2028 1001, -4, 1003, -4, 1005, -4,
2029 1007, -4, 1008, -344, // NOLINT
2030 1009, -320, 1010, 28, 1011, -464,
2031 1013, -384, 1016, -4, 1019, -4,
2032 1073742896, -128, 1103, -128, // NOLINT
2033 1073742928, -320, 1119, -320, 1121, -4,
2034 1123, -4, 1125, -4, 1127, -4,
2035 1129, -4, 1131, -4, // NOLINT
2036 1133, -4, 1135, -4, 1137, -4,
2037 1139, -4, 1141, -4, 1143, -4,
2038 1145, -4, 1147, -4, // NOLINT
2039 1149, -4, 1151, -4, 1153, -4,
2040 1163, -4, 1165, -4, 1167, -4,
2041 1169, -4, 1171, -4, // NOLINT
2042 1173, -4, 1175, -4, 1177, -4,
2043 1179, -4, 1181, -4, 1183, -4,
2044 1185, -4, 1187, -4, // NOLINT
2045 1189, -4, 1191, -4, 1193, -4,
2046 1195, -4, 1197, -4, 1199, -4,
2047 1201, -4, 1203, -4, // NOLINT
2048 1205, -4, 1207, -4, 1209, -4,
2049 1211, -4, 1213, -4, 1215, -4,
2050 1218, -4, 1220, -4, // NOLINT
2051 1222, -4, 1224, -4, 1226, -4,
2052 1228, -4, 1230, -4, 1231, -60,
2053 1233, -4, 1235, -4, // NOLINT
2054 1237, -4, 1239, -4, 1241, -4,
2055 1243, -4, 1245, -4, 1247, -4,
2056 1249, -4, 1251, -4, // NOLINT
2057 1253, -4, 1255, -4, 1257, -4,
2058 1259, -4, 1261, -4, 1263, -4,
2059 1265, -4, 1267, -4, // NOLINT
2060 1269, -4, 1271, -4, 1273, -4,
2061 1275, -4, 1277, -4, 1279, -4,
2062 1281, -4, 1283, -4, // NOLINT
2063 1285, -4, 1287, -4, 1289, -4,
2064 1291, -4, 1293, -4, 1295, -4,
2065 1297, -4, 1299, -4, // NOLINT
2066 1301, -4, 1303, -4, 1305, -4,
2067 1307, -4, 1309, -4, 1311, -4,
2068 1313, -4, 1315, -4, // NOLINT
2069 1317, -4, 1319, -4, 1321, -4,
2070 1323, -4, 1325, -4, 1327, -4,
2071 1073743201, -192, 1414, -192, // NOLINT
2072 7545, 141328, 7549, 15256, 7681, -4,
2073 7683, -4, 7685, -4, 7687, -4,
2074 7689, -4, 7691, -4, // NOLINT
2075 7693, -4, 7695, -4, 7697, -4,
2076 7699, -4, 7701, -4, 7703, -4,
2077 7705, -4, 7707, -4, // NOLINT
2078 7709, -4, 7711, -4, 7713, -4,
2079 7715, -4, 7717, -4, 7719, -4,
2080 7721, -4, 7723, -4, // NOLINT
2081 7725, -4, 7727, -4, 7729, -4,
2082 7731, -4, 7733, -4, 7735, -4,
2083 7737, -4, 7739, -4, // NOLINT
2084 7741, -4, 7743, -4, 7745, -4,
2085 7747, -4, 7749, -4, 7751, -4,
2086 7753, -4, 7755, -4, // NOLINT
2087 7757, -4, 7759, -4, 7761, -4,
2088 7763, -4, 7765, -4, 7767, -4,
2089 7769, -4, 7771, -4, // NOLINT
2090 7773, -4, 7775, -4, 7777, -4,
2091 7779, -4, 7781, -4, 7783, -4,
2092 7785, -4, 7787, -4, // NOLINT
2093 7789, -4, 7791, -4, 7793, -4,
2094 7795, -4, 7797, -4, 7799, -4,
2095 7801, -4, 7803, -4, // NOLINT
2096 7805, -4, 7807, -4, 7809, -4,
2097 7811, -4, 7813, -4, 7815, -4,
2098 7817, -4, 7819, -4, // NOLINT
2099 7821, -4, 7823, -4, 7825, -4,
2100 7827, -4, 7829, -4, 7835, -236,
2101 7841, -4, 7843, -4, // NOLINT
2102 7845, -4, 7847, -4, 7849, -4,
2103 7851, -4, 7853, -4, 7855, -4,
2104 7857, -4, 7859, -4, // NOLINT
2105 7861, -4, 7863, -4, 7865, -4,
2106 7867, -4, 7869, -4, 7871, -4,
2107 7873, -4, 7875, -4, // NOLINT
2108 7877, -4, 7879, -4, 7881, -4,
2109 7883, -4, 7885, -4, 7887, -4,
2110 7889, -4, 7891, -4, // NOLINT
2111 7893, -4, 7895, -4, 7897, -4,
2112 7899, -4, 7901, -4, 7903, -4,
2113 7905, -4, 7907, -4, // NOLINT
2114 7909, -4, 7911, -4, 7913, -4,
2115 7915, -4, 7917, -4, 7919, -4,
2116 7921, -4, 7923, -4, // NOLINT
2117 7925, -4, 7927, -4, 7929, -4,
2118 7931, -4, 7933, -4, 7935, -4,
2119 1073749760, 32, 7943, 32, // NOLINT
2120 1073749776, 32, 7957, 32, 1073749792, 32,
2121 7975, 32, 1073749808, 32, 7991, 32,
2122 1073749824, 32, 8005, 32, // NOLINT
2123 8017, 32, 8019, 32, 8021, 32,
2124 8023, 32, 1073749856, 32, 8039, 32,
2125 1073749872, 296, 8049, 296, // NOLINT
2126 1073749874, 344, 8053, 344, 1073749878, 400,
2127 8055, 400, 1073749880, 512, 8057, 512,
2128 1073749882, 448, 8059, 448, // NOLINT
2129 1073749884, 504, 8061, 504, 1073749936, 32,
2130 8113, 32, 8126, -28820, 1073749968, 32,
2131 8145, 32, 1073749984, 32, // NOLINT
2132 8161, 32, 8165, 28}; // NOLINT
2133 static const uint16_t kEcma262CanonicalizeMultiStrings0Size = 1; // NOLINT
2134 static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings1[1] = { // NOLINT
2135 {{kSentinel}} }; // NOLINT
2136 static const uint16_t kEcma262CanonicalizeTable1Size = 73; // NOLINT
2137 static const int32_t kEcma262CanonicalizeTable1[146] = {
2138 334, -112, 1073742192, -64, 383, -64, 388, -4, 1073743056, -104, 1257, -104, 1073744944, -192, 3166, -192, // NOLINT
2139 3169, -4, 3173, -43180, 3174, -43168, 3176, -4, 3178, -4, 3180, -4, 3187, -4, 3190, -4, // NOLINT
2140 3201, -4, 3203, -4, 3205, -4, 3207, -4, 3209, -4, 3211, -4, 3213, -4, 3215, -4, // NOLINT
2141 3217, -4, 3219, -4, 3221, -4, 3223, -4, 3225, -4, 3227, -4, 3229, -4, 3231, -4, // NOLINT
2142 3233, -4, 3235, -4, 3237, -4, 3239, -4, 3241, -4, 3243, -4, 3245, -4, 3247, -4, // NOLINT
2143 3249, -4, 3251, -4, 3253, -4, 3255, -4, 3257, -4, 3259, -4, 3261, -4, 3263, -4, // NOLINT
2144 3265, -4, 3267, -4, 3269, -4, 3271, -4, 3273, -4, 3275, -4, 3277, -4, 3279, -4, // NOLINT
2145 3281, -4, 3283, -4, 3285, -4, 3287, -4, 3289, -4, 3291, -4, 3293, -4, 3295, -4, // NOLINT
2146 3297, -4, 3299, -4, 3308, -4, 3310, -4, 3315, -4, 1073745152, -29056, 3365, -29056, 3367, -29056, // NOLINT
2147 3373, -29056 }; // NOLINT
2148 static const uint16_t kEcma262CanonicalizeMultiStrings1Size = 1; // NOLINT
2149 static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings5[1] = { // NOLINT
2150 {{kSentinel}} }; // NOLINT
2151 static const uint16_t kEcma262CanonicalizeTable5Size = 95; // NOLINT
2152 static const int32_t kEcma262CanonicalizeTable5
2153 [190] = {1601, -4, 1603, -4, 1605, -4, 1607, -4,
2154 1609, -4, 1611, -4, 1613, -4, 1615, -4, // NOLINT
2155 1617, -4, 1619, -4, 1621, -4, 1623, -4,
2156 1625, -4, 1627, -4, 1629, -4, 1631, -4, // NOLINT
2157 1633, -4, 1635, -4, 1637, -4, 1639, -4,
2158 1641, -4, 1643, -4, 1645, -4, 1665, -4, // NOLINT
2159 1667, -4, 1669, -4, 1671, -4, 1673, -4,
2160 1675, -4, 1677, -4, 1679, -4, 1681, -4, // NOLINT
2161 1683, -4, 1685, -4, 1687, -4, 1689, -4,
2162 1691, -4, 1827, -4, 1829, -4, 1831, -4, // NOLINT
2163 1833, -4, 1835, -4, 1837, -4, 1839, -4,
2164 1843, -4, 1845, -4, 1847, -4, 1849, -4, // NOLINT
2165 1851, -4, 1853, -4, 1855, -4, 1857, -4,
2166 1859, -4, 1861, -4, 1863, -4, 1865, -4, // NOLINT
2167 1867, -4, 1869, -4, 1871, -4, 1873, -4,
2168 1875, -4, 1877, -4, 1879, -4, 1881, -4, // NOLINT
2169 1883, -4, 1885, -4, 1887, -4, 1889, -4,
2170 1891, -4, 1893, -4, 1895, -4, 1897, -4, // NOLINT
2171 1899, -4, 1901, -4, 1903, -4, 1914, -4,
2172 1916, -4, 1919, -4, 1921, -4, 1923, -4, // NOLINT
2173 1925, -4, 1927, -4, 1932, -4, 1937, -4,
2174 1939, -4, 1943, -4, 1945, -4, 1947, -4, // NOLINT
2175 1949, -4, 1951, -4, 1953, -4, 1955, -4,
2176 1957, -4, 1959, -4, 1961, -4}; // NOLINT
2177 static const uint16_t kEcma262CanonicalizeMultiStrings5Size = 1; // NOLINT
2178 static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings7[1] = { // NOLINT
2179 {{kSentinel}} }; // NOLINT
2180 static const uint16_t kEcma262CanonicalizeTable7Size = 2; // NOLINT
2181 static const int32_t kEcma262CanonicalizeTable7[4] = {
2182 1073749825, -128, 8026, -128 }; // NOLINT
2183 static const uint16_t kEcma262CanonicalizeMultiStrings7Size = 1; // NOLINT
Convert(uchar c,uchar n,uchar * result,bool * allow_caching_ptr)2184 int Ecma262Canonicalize::Convert(uchar c,
2185 uchar n,
2186 uchar* result,
2187 bool* allow_caching_ptr) {
2188 int chunk_index = c >> 13;
2189 switch (chunk_index) {
2190 case 0: return LookupMapping<true>(kEcma262CanonicalizeTable0,
2191 kEcma262CanonicalizeTable0Size,
2192 kEcma262CanonicalizeMultiStrings0,
2193 c,
2194 n,
2195 result,
2196 allow_caching_ptr);
2197 case 1: return LookupMapping<true>(kEcma262CanonicalizeTable1,
2198 kEcma262CanonicalizeTable1Size,
2199 kEcma262CanonicalizeMultiStrings1,
2200 c,
2201 n,
2202 result,
2203 allow_caching_ptr);
2204 case 5: return LookupMapping<true>(kEcma262CanonicalizeTable5,
2205 kEcma262CanonicalizeTable5Size,
2206 kEcma262CanonicalizeMultiStrings5,
2207 c,
2208 n,
2209 result,
2210 allow_caching_ptr);
2211 case 7: return LookupMapping<true>(kEcma262CanonicalizeTable7,
2212 kEcma262CanonicalizeTable7Size,
2213 kEcma262CanonicalizeMultiStrings7,
2214 c,
2215 n,
2216 result,
2217 allow_caching_ptr);
2218 default: return 0;
2219 }
2220 }
2221
2222 static const MultiCharacterSpecialCase<4>
2223 kEcma262UnCanonicalizeMultiStrings0[507] = { // NOLINT
2224 {{65, 97, kSentinel}},
2225 {{90, 122, kSentinel}},
2226 {{181, 924, 956, kSentinel}},
2227 {{192, 224, kSentinel}}, // NOLINT
2228 {{214, 246, kSentinel}},
2229 {{216, 248, kSentinel}},
2230 {{222, 254, kSentinel}},
2231 {{255, 376, kSentinel}}, // NOLINT
2232 {{256, 257, kSentinel}},
2233 {{258, 259, kSentinel}},
2234 {{260, 261, kSentinel}},
2235 {{262, 263, kSentinel}}, // NOLINT
2236 {{264, 265, kSentinel}},
2237 {{266, 267, kSentinel}},
2238 {{268, 269, kSentinel}},
2239 {{270, 271, kSentinel}}, // NOLINT
2240 {{272, 273, kSentinel}},
2241 {{274, 275, kSentinel}},
2242 {{276, 277, kSentinel}},
2243 {{278, 279, kSentinel}}, // NOLINT
2244 {{280, 281, kSentinel}},
2245 {{282, 283, kSentinel}},
2246 {{284, 285, kSentinel}},
2247 {{286, 287, kSentinel}}, // NOLINT
2248 {{288, 289, kSentinel}},
2249 {{290, 291, kSentinel}},
2250 {{292, 293, kSentinel}},
2251 {{294, 295, kSentinel}}, // NOLINT
2252 {{296, 297, kSentinel}},
2253 {{298, 299, kSentinel}},
2254 {{300, 301, kSentinel}},
2255 {{302, 303, kSentinel}}, // NOLINT
2256 {{306, 307, kSentinel}},
2257 {{308, 309, kSentinel}},
2258 {{310, 311, kSentinel}},
2259 {{313, 314, kSentinel}}, // NOLINT
2260 {{315, 316, kSentinel}},
2261 {{317, 318, kSentinel}},
2262 {{319, 320, kSentinel}},
2263 {{321, 322, kSentinel}}, // NOLINT
2264 {{323, 324, kSentinel}},
2265 {{325, 326, kSentinel}},
2266 {{327, 328, kSentinel}},
2267 {{330, 331, kSentinel}}, // NOLINT
2268 {{332, 333, kSentinel}},
2269 {{334, 335, kSentinel}},
2270 {{336, 337, kSentinel}},
2271 {{338, 339, kSentinel}}, // NOLINT
2272 {{340, 341, kSentinel}},
2273 {{342, 343, kSentinel}},
2274 {{344, 345, kSentinel}},
2275 {{346, 347, kSentinel}}, // NOLINT
2276 {{348, 349, kSentinel}},
2277 {{350, 351, kSentinel}},
2278 {{352, 353, kSentinel}},
2279 {{354, 355, kSentinel}}, // NOLINT
2280 {{356, 357, kSentinel}},
2281 {{358, 359, kSentinel}},
2282 {{360, 361, kSentinel}},
2283 {{362, 363, kSentinel}}, // NOLINT
2284 {{364, 365, kSentinel}},
2285 {{366, 367, kSentinel}},
2286 {{368, 369, kSentinel}},
2287 {{370, 371, kSentinel}}, // NOLINT
2288 {{372, 373, kSentinel}},
2289 {{374, 375, kSentinel}},
2290 {{377, 378, kSentinel}},
2291 {{379, 380, kSentinel}}, // NOLINT
2292 {{381, 382, kSentinel}},
2293 {{384, 579, kSentinel}},
2294 {{385, 595, kSentinel}},
2295 {{386, 387, kSentinel}}, // NOLINT
2296 {{388, 389, kSentinel}},
2297 {{390, 596, kSentinel}},
2298 {{391, 392, kSentinel}},
2299 {{393, 598, kSentinel}}, // NOLINT
2300 {{394, 599, kSentinel}},
2301 {{395, 396, kSentinel}},
2302 {{398, 477, kSentinel}},
2303 {{399, 601, kSentinel}}, // NOLINT
2304 {{400, 603, kSentinel}},
2305 {{401, 402, kSentinel}},
2306 {{403, 608, kSentinel}},
2307 {{404, 611, kSentinel}}, // NOLINT
2308 {{405, 502, kSentinel}},
2309 {{406, 617, kSentinel}},
2310 {{407, 616, kSentinel}},
2311 {{408, 409, kSentinel}}, // NOLINT
2312 {{410, 573, kSentinel}},
2313 {{412, 623, kSentinel}},
2314 {{413, 626, kSentinel}},
2315 {{414, 544, kSentinel}}, // NOLINT
2316 {{415, 629, kSentinel}},
2317 {{416, 417, kSentinel}},
2318 {{418, 419, kSentinel}},
2319 {{420, 421, kSentinel}}, // NOLINT
2320 {{422, 640, kSentinel}},
2321 {{423, 424, kSentinel}},
2322 {{425, 643, kSentinel}},
2323 {{428, 429, kSentinel}}, // NOLINT
2324 {{430, 648, kSentinel}},
2325 {{431, 432, kSentinel}},
2326 {{433, 650, kSentinel}},
2327 {{434, 651, kSentinel}}, // NOLINT
2328 {{435, 436, kSentinel}},
2329 {{437, 438, kSentinel}},
2330 {{439, 658, kSentinel}},
2331 {{440, 441, kSentinel}}, // NOLINT
2332 {{444, 445, kSentinel}},
2333 {{447, 503, kSentinel}},
2334 {{452, 453, 454, kSentinel}},
2335 {{455, 456, 457, kSentinel}}, // NOLINT
2336 {{458, 459, 460, kSentinel}},
2337 {{461, 462, kSentinel}},
2338 {{463, 464, kSentinel}},
2339 {{465, 466, kSentinel}}, // NOLINT
2340 {{467, 468, kSentinel}},
2341 {{469, 470, kSentinel}},
2342 {{471, 472, kSentinel}},
2343 {{473, 474, kSentinel}}, // NOLINT
2344 {{475, 476, kSentinel}},
2345 {{478, 479, kSentinel}},
2346 {{480, 481, kSentinel}},
2347 {{482, 483, kSentinel}}, // NOLINT
2348 {{484, 485, kSentinel}},
2349 {{486, 487, kSentinel}},
2350 {{488, 489, kSentinel}},
2351 {{490, 491, kSentinel}}, // NOLINT
2352 {{492, 493, kSentinel}},
2353 {{494, 495, kSentinel}},
2354 {{497, 498, 499, kSentinel}},
2355 {{500, 501, kSentinel}}, // NOLINT
2356 {{504, 505, kSentinel}},
2357 {{506, 507, kSentinel}},
2358 {{508, 509, kSentinel}},
2359 {{510, 511, kSentinel}}, // NOLINT
2360 {{512, 513, kSentinel}},
2361 {{514, 515, kSentinel}},
2362 {{516, 517, kSentinel}},
2363 {{518, 519, kSentinel}}, // NOLINT
2364 {{520, 521, kSentinel}},
2365 {{522, 523, kSentinel}},
2366 {{524, 525, kSentinel}},
2367 {{526, 527, kSentinel}}, // NOLINT
2368 {{528, 529, kSentinel}},
2369 {{530, 531, kSentinel}},
2370 {{532, 533, kSentinel}},
2371 {{534, 535, kSentinel}}, // NOLINT
2372 {{536, 537, kSentinel}},
2373 {{538, 539, kSentinel}},
2374 {{540, 541, kSentinel}},
2375 {{542, 543, kSentinel}}, // NOLINT
2376 {{546, 547, kSentinel}},
2377 {{548, 549, kSentinel}},
2378 {{550, 551, kSentinel}},
2379 {{552, 553, kSentinel}}, // NOLINT
2380 {{554, 555, kSentinel}},
2381 {{556, 557, kSentinel}},
2382 {{558, 559, kSentinel}},
2383 {{560, 561, kSentinel}}, // NOLINT
2384 {{562, 563, kSentinel}},
2385 {{570, 11365, kSentinel}},
2386 {{571, 572, kSentinel}},
2387 {{574, 11366, kSentinel}}, // NOLINT
2388 {{575, 11390, kSentinel}},
2389 {{576, 11391, kSentinel}},
2390 {{577, 578, kSentinel}},
2391 {{580, 649, kSentinel}}, // NOLINT
2392 {{581, 652, kSentinel}},
2393 {{582, 583, kSentinel}},
2394 {{584, 585, kSentinel}},
2395 {{586, 587, kSentinel}}, // NOLINT
2396 {{588, 589, kSentinel}},
2397 {{590, 591, kSentinel}},
2398 {{592, 11375, kSentinel}},
2399 {{593, 11373, kSentinel}}, // NOLINT
2400 {{594, 11376, kSentinel}},
2401 {{604, 42923, kSentinel}},
2402 {{609, 42924, kSentinel}},
2403 {{613, 42893, kSentinel}}, // NOLINT
2404 {{614, 42922, kSentinel}},
2405 {{619, 11362, kSentinel}},
2406 {{620, 42925, kSentinel}},
2407 {{625, 11374, kSentinel}}, // NOLINT
2408 {{637, 11364, kSentinel}},
2409 {{647, 42929, kSentinel}},
2410 {{670, 42928, kSentinel}},
2411 {{837, 921, 953, 8126}}, // NOLINT
2412 {{880, 881, kSentinel}},
2413 {{882, 883, kSentinel}},
2414 {{886, 887, kSentinel}},
2415 {{891, 1021, kSentinel}}, // NOLINT
2416 {{893, 1023, kSentinel}},
2417 {{895, 1011, kSentinel}},
2418 {{902, 940, kSentinel}},
2419 {{904, 941, kSentinel}}, // NOLINT
2420 {{906, 943, kSentinel}},
2421 {{908, 972, kSentinel}},
2422 {{910, 973, kSentinel}},
2423 {{911, 974, kSentinel}}, // NOLINT
2424 {{913, 945, kSentinel}},
2425 {{914, 946, 976, kSentinel}},
2426 {{915, 947, kSentinel}},
2427 {{916, 948, kSentinel}}, // NOLINT
2428 {{917, 949, 1013, kSentinel}},
2429 {{918, 950, kSentinel}},
2430 {{919, 951, kSentinel}},
2431 {{920, 952, 977, kSentinel}}, // NOLINT
2432 {{922, 954, 1008, kSentinel}},
2433 {{923, 955, kSentinel}},
2434 {{925, 957, kSentinel}},
2435 {{927, 959, kSentinel}}, // NOLINT
2436 {{928, 960, 982, kSentinel}},
2437 {{929, 961, 1009, kSentinel}},
2438 {{931, 962, 963, kSentinel}},
2439 {{932, 964, kSentinel}}, // NOLINT
2440 {{933, 965, kSentinel}},
2441 {{934, 966, 981, kSentinel}},
2442 {{935, 967, kSentinel}},
2443 {{939, 971, kSentinel}}, // NOLINT
2444 {{975, 983, kSentinel}},
2445 {{984, 985, kSentinel}},
2446 {{986, 987, kSentinel}},
2447 {{988, 989, kSentinel}}, // NOLINT
2448 {{990, 991, kSentinel}},
2449 {{992, 993, kSentinel}},
2450 {{994, 995, kSentinel}},
2451 {{996, 997, kSentinel}}, // NOLINT
2452 {{998, 999, kSentinel}},
2453 {{1000, 1001, kSentinel}},
2454 {{1002, 1003, kSentinel}},
2455 {{1004, 1005, kSentinel}}, // NOLINT
2456 {{1006, 1007, kSentinel}},
2457 {{1010, 1017, kSentinel}},
2458 {{1015, 1016, kSentinel}},
2459 {{1018, 1019, kSentinel}}, // NOLINT
2460 {{1024, 1104, kSentinel}},
2461 {{1039, 1119, kSentinel}},
2462 {{1040, 1072, kSentinel}},
2463 {{1071, 1103, kSentinel}}, // NOLINT
2464 {{1120, 1121, kSentinel}},
2465 {{1122, 1123, kSentinel}},
2466 {{1124, 1125, kSentinel}},
2467 {{1126, 1127, kSentinel}}, // NOLINT
2468 {{1128, 1129, kSentinel}},
2469 {{1130, 1131, kSentinel}},
2470 {{1132, 1133, kSentinel}},
2471 {{1134, 1135, kSentinel}}, // NOLINT
2472 {{1136, 1137, kSentinel}},
2473 {{1138, 1139, kSentinel}},
2474 {{1140, 1141, kSentinel}},
2475 {{1142, 1143, kSentinel}}, // NOLINT
2476 {{1144, 1145, kSentinel}},
2477 {{1146, 1147, kSentinel}},
2478 {{1148, 1149, kSentinel}},
2479 {{1150, 1151, kSentinel}}, // NOLINT
2480 {{1152, 1153, kSentinel}},
2481 {{1162, 1163, kSentinel}},
2482 {{1164, 1165, kSentinel}},
2483 {{1166, 1167, kSentinel}}, // NOLINT
2484 {{1168, 1169, kSentinel}},
2485 {{1170, 1171, kSentinel}},
2486 {{1172, 1173, kSentinel}},
2487 {{1174, 1175, kSentinel}}, // NOLINT
2488 {{1176, 1177, kSentinel}},
2489 {{1178, 1179, kSentinel}},
2490 {{1180, 1181, kSentinel}},
2491 {{1182, 1183, kSentinel}}, // NOLINT
2492 {{1184, 1185, kSentinel}},
2493 {{1186, 1187, kSentinel}},
2494 {{1188, 1189, kSentinel}},
2495 {{1190, 1191, kSentinel}}, // NOLINT
2496 {{1192, 1193, kSentinel}},
2497 {{1194, 1195, kSentinel}},
2498 {{1196, 1197, kSentinel}},
2499 {{1198, 1199, kSentinel}}, // NOLINT
2500 {{1200, 1201, kSentinel}},
2501 {{1202, 1203, kSentinel}},
2502 {{1204, 1205, kSentinel}},
2503 {{1206, 1207, kSentinel}}, // NOLINT
2504 {{1208, 1209, kSentinel}},
2505 {{1210, 1211, kSentinel}},
2506 {{1212, 1213, kSentinel}},
2507 {{1214, 1215, kSentinel}}, // NOLINT
2508 {{1216, 1231, kSentinel}},
2509 {{1217, 1218, kSentinel}},
2510 {{1219, 1220, kSentinel}},
2511 {{1221, 1222, kSentinel}}, // NOLINT
2512 {{1223, 1224, kSentinel}},
2513 {{1225, 1226, kSentinel}},
2514 {{1227, 1228, kSentinel}},
2515 {{1229, 1230, kSentinel}}, // NOLINT
2516 {{1232, 1233, kSentinel}},
2517 {{1234, 1235, kSentinel}},
2518 {{1236, 1237, kSentinel}},
2519 {{1238, 1239, kSentinel}}, // NOLINT
2520 {{1240, 1241, kSentinel}},
2521 {{1242, 1243, kSentinel}},
2522 {{1244, 1245, kSentinel}},
2523 {{1246, 1247, kSentinel}}, // NOLINT
2524 {{1248, 1249, kSentinel}},
2525 {{1250, 1251, kSentinel}},
2526 {{1252, 1253, kSentinel}},
2527 {{1254, 1255, kSentinel}}, // NOLINT
2528 {{1256, 1257, kSentinel}},
2529 {{1258, 1259, kSentinel}},
2530 {{1260, 1261, kSentinel}},
2531 {{1262, 1263, kSentinel}}, // NOLINT
2532 {{1264, 1265, kSentinel}},
2533 {{1266, 1267, kSentinel}},
2534 {{1268, 1269, kSentinel}},
2535 {{1270, 1271, kSentinel}}, // NOLINT
2536 {{1272, 1273, kSentinel}},
2537 {{1274, 1275, kSentinel}},
2538 {{1276, 1277, kSentinel}},
2539 {{1278, 1279, kSentinel}}, // NOLINT
2540 {{1280, 1281, kSentinel}},
2541 {{1282, 1283, kSentinel}},
2542 {{1284, 1285, kSentinel}},
2543 {{1286, 1287, kSentinel}}, // NOLINT
2544 {{1288, 1289, kSentinel}},
2545 {{1290, 1291, kSentinel}},
2546 {{1292, 1293, kSentinel}},
2547 {{1294, 1295, kSentinel}}, // NOLINT
2548 {{1296, 1297, kSentinel}},
2549 {{1298, 1299, kSentinel}},
2550 {{1300, 1301, kSentinel}},
2551 {{1302, 1303, kSentinel}}, // NOLINT
2552 {{1304, 1305, kSentinel}},
2553 {{1306, 1307, kSentinel}},
2554 {{1308, 1309, kSentinel}},
2555 {{1310, 1311, kSentinel}}, // NOLINT
2556 {{1312, 1313, kSentinel}},
2557 {{1314, 1315, kSentinel}},
2558 {{1316, 1317, kSentinel}},
2559 {{1318, 1319, kSentinel}}, // NOLINT
2560 {{1320, 1321, kSentinel}},
2561 {{1322, 1323, kSentinel}},
2562 {{1324, 1325, kSentinel}},
2563 {{1326, 1327, kSentinel}}, // NOLINT
2564 {{1329, 1377, kSentinel}},
2565 {{1366, 1414, kSentinel}},
2566 {{4256, 11520, kSentinel}},
2567 {{4293, 11557, kSentinel}}, // NOLINT
2568 {{4295, 11559, kSentinel}},
2569 {{4301, 11565, kSentinel}},
2570 {{7545, 42877, kSentinel}},
2571 {{7549, 11363, kSentinel}}, // NOLINT
2572 {{7680, 7681, kSentinel}},
2573 {{7682, 7683, kSentinel}},
2574 {{7684, 7685, kSentinel}},
2575 {{7686, 7687, kSentinel}}, // NOLINT
2576 {{7688, 7689, kSentinel}},
2577 {{7690, 7691, kSentinel}},
2578 {{7692, 7693, kSentinel}},
2579 {{7694, 7695, kSentinel}}, // NOLINT
2580 {{7696, 7697, kSentinel}},
2581 {{7698, 7699, kSentinel}},
2582 {{7700, 7701, kSentinel}},
2583 {{7702, 7703, kSentinel}}, // NOLINT
2584 {{7704, 7705, kSentinel}},
2585 {{7706, 7707, kSentinel}},
2586 {{7708, 7709, kSentinel}},
2587 {{7710, 7711, kSentinel}}, // NOLINT
2588 {{7712, 7713, kSentinel}},
2589 {{7714, 7715, kSentinel}},
2590 {{7716, 7717, kSentinel}},
2591 {{7718, 7719, kSentinel}}, // NOLINT
2592 {{7720, 7721, kSentinel}},
2593 {{7722, 7723, kSentinel}},
2594 {{7724, 7725, kSentinel}},
2595 {{7726, 7727, kSentinel}}, // NOLINT
2596 {{7728, 7729, kSentinel}},
2597 {{7730, 7731, kSentinel}},
2598 {{7732, 7733, kSentinel}},
2599 {{7734, 7735, kSentinel}}, // NOLINT
2600 {{7736, 7737, kSentinel}},
2601 {{7738, 7739, kSentinel}},
2602 {{7740, 7741, kSentinel}},
2603 {{7742, 7743, kSentinel}}, // NOLINT
2604 {{7744, 7745, kSentinel}},
2605 {{7746, 7747, kSentinel}},
2606 {{7748, 7749, kSentinel}},
2607 {{7750, 7751, kSentinel}}, // NOLINT
2608 {{7752, 7753, kSentinel}},
2609 {{7754, 7755, kSentinel}},
2610 {{7756, 7757, kSentinel}},
2611 {{7758, 7759, kSentinel}}, // NOLINT
2612 {{7760, 7761, kSentinel}},
2613 {{7762, 7763, kSentinel}},
2614 {{7764, 7765, kSentinel}},
2615 {{7766, 7767, kSentinel}}, // NOLINT
2616 {{7768, 7769, kSentinel}},
2617 {{7770, 7771, kSentinel}},
2618 {{7772, 7773, kSentinel}},
2619 {{7774, 7775, kSentinel}}, // NOLINT
2620 {{7776, 7777, 7835, kSentinel}},
2621 {{7778, 7779, kSentinel}},
2622 {{7780, 7781, kSentinel}},
2623 {{7782, 7783, kSentinel}}, // NOLINT
2624 {{7784, 7785, kSentinel}},
2625 {{7786, 7787, kSentinel}},
2626 {{7788, 7789, kSentinel}},
2627 {{7790, 7791, kSentinel}}, // NOLINT
2628 {{7792, 7793, kSentinel}},
2629 {{7794, 7795, kSentinel}},
2630 {{7796, 7797, kSentinel}},
2631 {{7798, 7799, kSentinel}}, // NOLINT
2632 {{7800, 7801, kSentinel}},
2633 {{7802, 7803, kSentinel}},
2634 {{7804, 7805, kSentinel}},
2635 {{7806, 7807, kSentinel}}, // NOLINT
2636 {{7808, 7809, kSentinel}},
2637 {{7810, 7811, kSentinel}},
2638 {{7812, 7813, kSentinel}},
2639 {{7814, 7815, kSentinel}}, // NOLINT
2640 {{7816, 7817, kSentinel}},
2641 {{7818, 7819, kSentinel}},
2642 {{7820, 7821, kSentinel}},
2643 {{7822, 7823, kSentinel}}, // NOLINT
2644 {{7824, 7825, kSentinel}},
2645 {{7826, 7827, kSentinel}},
2646 {{7828, 7829, kSentinel}},
2647 {{7840, 7841, kSentinel}}, // NOLINT
2648 {{7842, 7843, kSentinel}},
2649 {{7844, 7845, kSentinel}},
2650 {{7846, 7847, kSentinel}},
2651 {{7848, 7849, kSentinel}}, // NOLINT
2652 {{7850, 7851, kSentinel}},
2653 {{7852, 7853, kSentinel}},
2654 {{7854, 7855, kSentinel}},
2655 {{7856, 7857, kSentinel}}, // NOLINT
2656 {{7858, 7859, kSentinel}},
2657 {{7860, 7861, kSentinel}},
2658 {{7862, 7863, kSentinel}},
2659 {{7864, 7865, kSentinel}}, // NOLINT
2660 {{7866, 7867, kSentinel}},
2661 {{7868, 7869, kSentinel}},
2662 {{7870, 7871, kSentinel}},
2663 {{7872, 7873, kSentinel}}, // NOLINT
2664 {{7874, 7875, kSentinel}},
2665 {{7876, 7877, kSentinel}},
2666 {{7878, 7879, kSentinel}},
2667 {{7880, 7881, kSentinel}}, // NOLINT
2668 {{7882, 7883, kSentinel}},
2669 {{7884, 7885, kSentinel}},
2670 {{7886, 7887, kSentinel}},
2671 {{7888, 7889, kSentinel}}, // NOLINT
2672 {{7890, 7891, kSentinel}},
2673 {{7892, 7893, kSentinel}},
2674 {{7894, 7895, kSentinel}},
2675 {{7896, 7897, kSentinel}}, // NOLINT
2676 {{7898, 7899, kSentinel}},
2677 {{7900, 7901, kSentinel}},
2678 {{7902, 7903, kSentinel}},
2679 {{7904, 7905, kSentinel}}, // NOLINT
2680 {{7906, 7907, kSentinel}},
2681 {{7908, 7909, kSentinel}},
2682 {{7910, 7911, kSentinel}},
2683 {{7912, 7913, kSentinel}}, // NOLINT
2684 {{7914, 7915, kSentinel}},
2685 {{7916, 7917, kSentinel}},
2686 {{7918, 7919, kSentinel}},
2687 {{7920, 7921, kSentinel}}, // NOLINT
2688 {{7922, 7923, kSentinel}},
2689 {{7924, 7925, kSentinel}},
2690 {{7926, 7927, kSentinel}},
2691 {{7928, 7929, kSentinel}}, // NOLINT
2692 {{7930, 7931, kSentinel}},
2693 {{7932, 7933, kSentinel}},
2694 {{7934, 7935, kSentinel}},
2695 {{7936, 7944, kSentinel}}, // NOLINT
2696 {{7943, 7951, kSentinel}},
2697 {{7952, 7960, kSentinel}},
2698 {{7957, 7965, kSentinel}},
2699 {{7968, 7976, kSentinel}}, // NOLINT
2700 {{7975, 7983, kSentinel}},
2701 {{7984, 7992, kSentinel}},
2702 {{7991, 7999, kSentinel}},
2703 {{8000, 8008, kSentinel}}, // NOLINT
2704 {{8005, 8013, kSentinel}},
2705 {{8017, 8025, kSentinel}},
2706 {{8019, 8027, kSentinel}},
2707 {{8021, 8029, kSentinel}}, // NOLINT
2708 {{8023, 8031, kSentinel}},
2709 {{8032, 8040, kSentinel}},
2710 {{8039, 8047, kSentinel}},
2711 {{8048, 8122, kSentinel}}, // NOLINT
2712 {{8049, 8123, kSentinel}},
2713 {{8050, 8136, kSentinel}},
2714 {{8053, 8139, kSentinel}},
2715 {{8054, 8154, kSentinel}}, // NOLINT
2716 {{8055, 8155, kSentinel}},
2717 {{8056, 8184, kSentinel}},
2718 {{8057, 8185, kSentinel}},
2719 {{8058, 8170, kSentinel}}, // NOLINT
2720 {{8059, 8171, kSentinel}},
2721 {{8060, 8186, kSentinel}},
2722 {{8061, 8187, kSentinel}},
2723 {{8112, 8120, kSentinel}}, // NOLINT
2724 {{8113, 8121, kSentinel}},
2725 {{8144, 8152, kSentinel}},
2726 {{8145, 8153, kSentinel}},
2727 {{8160, 8168, kSentinel}}, // NOLINT
2728 {{8161, 8169, kSentinel}},
2729 {{8165, 8172, kSentinel}},
2730 {{kSentinel}}}; // NOLINT
2731 static const uint16_t kEcma262UnCanonicalizeTable0Size = 1005; // NOLINT
2732 static const int32_t kEcma262UnCanonicalizeTable0[2010] = {
2733 1073741889, 1, 90, 5, 1073741921, 1,
2734 122, 5, 181, 9, 1073742016, 13,
2735 214, 17, 1073742040, 21, // NOLINT
2736 222, 25, 1073742048, 13, 246, 17,
2737 1073742072, 21, 254, 25, 255, 29,
2738 256, 33, 257, 33, // NOLINT
2739 258, 37, 259, 37, 260, 41,
2740 261, 41, 262, 45, 263, 45,
2741 264, 49, 265, 49, // NOLINT
2742 266, 53, 267, 53, 268, 57,
2743 269, 57, 270, 61, 271, 61,
2744 272, 65, 273, 65, // NOLINT
2745 274, 69, 275, 69, 276, 73,
2746 277, 73, 278, 77, 279, 77,
2747 280, 81, 281, 81, // NOLINT
2748 282, 85, 283, 85, 284, 89,
2749 285, 89, 286, 93, 287, 93,
2750 288, 97, 289, 97, // NOLINT
2751 290, 101, 291, 101, 292, 105,
2752 293, 105, 294, 109, 295, 109,
2753 296, 113, 297, 113, // NOLINT
2754 298, 117, 299, 117, 300, 121,
2755 301, 121, 302, 125, 303, 125,
2756 306, 129, 307, 129, // NOLINT
2757 308, 133, 309, 133, 310, 137,
2758 311, 137, 313, 141, 314, 141,
2759 315, 145, 316, 145, // NOLINT
2760 317, 149, 318, 149, 319, 153,
2761 320, 153, 321, 157, 322, 157,
2762 323, 161, 324, 161, // NOLINT
2763 325, 165, 326, 165, 327, 169,
2764 328, 169, 330, 173, 331, 173,
2765 332, 177, 333, 177, // NOLINT
2766 334, 181, 335, 181, 336, 185,
2767 337, 185, 338, 189, 339, 189,
2768 340, 193, 341, 193, // NOLINT
2769 342, 197, 343, 197, 344, 201,
2770 345, 201, 346, 205, 347, 205,
2771 348, 209, 349, 209, // NOLINT
2772 350, 213, 351, 213, 352, 217,
2773 353, 217, 354, 221, 355, 221,
2774 356, 225, 357, 225, // NOLINT
2775 358, 229, 359, 229, 360, 233,
2776 361, 233, 362, 237, 363, 237,
2777 364, 241, 365, 241, // NOLINT
2778 366, 245, 367, 245, 368, 249,
2779 369, 249, 370, 253, 371, 253,
2780 372, 257, 373, 257, // NOLINT
2781 374, 261, 375, 261, 376, 29,
2782 377, 265, 378, 265, 379, 269,
2783 380, 269, 381, 273, // NOLINT
2784 382, 273, 384, 277, 385, 281,
2785 386, 285, 387, 285, 388, 289,
2786 389, 289, 390, 293, // NOLINT
2787 391, 297, 392, 297, 1073742217, 301,
2788 394, 305, 395, 309, 396, 309,
2789 398, 313, 399, 317, // NOLINT
2790 400, 321, 401, 325, 402, 325,
2791 403, 329, 404, 333, 405, 337,
2792 406, 341, 407, 345, // NOLINT
2793 408, 349, 409, 349, 410, 353,
2794 412, 357, 413, 361, 414, 365,
2795 415, 369, 416, 373, // NOLINT
2796 417, 373, 418, 377, 419, 377,
2797 420, 381, 421, 381, 422, 385,
2798 423, 389, 424, 389, // NOLINT
2799 425, 393, 428, 397, 429, 397,
2800 430, 401, 431, 405, 432, 405,
2801 1073742257, 409, 434, 413, // NOLINT
2802 435, 417, 436, 417, 437, 421,
2803 438, 421, 439, 425, 440, 429,
2804 441, 429, 444, 433, // NOLINT
2805 445, 433, 447, 437, 452, 441,
2806 453, 441, 454, 441, 455, 445,
2807 456, 445, 457, 445, // NOLINT
2808 458, 449, 459, 449, 460, 449,
2809 461, 453, 462, 453, 463, 457,
2810 464, 457, 465, 461, // NOLINT
2811 466, 461, 467, 465, 468, 465,
2812 469, 469, 470, 469, 471, 473,
2813 472, 473, 473, 477, // NOLINT
2814 474, 477, 475, 481, 476, 481,
2815 477, 313, 478, 485, 479, 485,
2816 480, 489, 481, 489, // NOLINT
2817 482, 493, 483, 493, 484, 497,
2818 485, 497, 486, 501, 487, 501,
2819 488, 505, 489, 505, // NOLINT
2820 490, 509, 491, 509, 492, 513,
2821 493, 513, 494, 517, 495, 517,
2822 497, 521, 498, 521, // NOLINT
2823 499, 521, 500, 525, 501, 525,
2824 502, 337, 503, 437, 504, 529,
2825 505, 529, 506, 533, // NOLINT
2826 507, 533, 508, 537, 509, 537,
2827 510, 541, 511, 541, 512, 545,
2828 513, 545, 514, 549, // NOLINT
2829 515, 549, 516, 553, 517, 553,
2830 518, 557, 519, 557, 520, 561,
2831 521, 561, 522, 565, // NOLINT
2832 523, 565, 524, 569, 525, 569,
2833 526, 573, 527, 573, 528, 577,
2834 529, 577, 530, 581, // NOLINT
2835 531, 581, 532, 585, 533, 585,
2836 534, 589, 535, 589, 536, 593,
2837 537, 593, 538, 597, // NOLINT
2838 539, 597, 540, 601, 541, 601,
2839 542, 605, 543, 605, 544, 365,
2840 546, 609, 547, 609, // NOLINT
2841 548, 613, 549, 613, 550, 617,
2842 551, 617, 552, 621, 553, 621,
2843 554, 625, 555, 625, // NOLINT
2844 556, 629, 557, 629, 558, 633,
2845 559, 633, 560, 637, 561, 637,
2846 562, 641, 563, 641, // NOLINT
2847 570, 645, 571, 649, 572, 649,
2848 573, 353, 574, 653, 1073742399, 657,
2849 576, 661, 577, 665, // NOLINT
2850 578, 665, 579, 277, 580, 669,
2851 581, 673, 582, 677, 583, 677,
2852 584, 681, 585, 681, // NOLINT
2853 586, 685, 587, 685, 588, 689,
2854 589, 689, 590, 693, 591, 693,
2855 592, 697, 593, 701, // NOLINT
2856 594, 705, 595, 281, 596, 293,
2857 1073742422, 301, 599, 305, 601, 317,
2858 603, 321, 604, 709, // NOLINT
2859 608, 329, 609, 713, 611, 333,
2860 613, 717, 614, 721, 616, 345,
2861 617, 341, 619, 725, // NOLINT
2862 620, 729, 623, 357, 625, 733,
2863 626, 361, 629, 369, 637, 737,
2864 640, 385, 643, 393, // NOLINT
2865 647, 741, 648, 401, 649, 669,
2866 1073742474, 409, 651, 413, 652, 673,
2867 658, 425, 670, 745, // NOLINT
2868 837, 749, 880, 753, 881, 753,
2869 882, 757, 883, 757, 886, 761,
2870 887, 761, 1073742715, 765, // NOLINT
2871 893, 769, 895, 773, 902, 777,
2872 1073742728, 781, 906, 785, 908, 789,
2873 1073742734, 793, 911, 797, // NOLINT
2874 913, 801, 914, 805, 1073742739, 809,
2875 916, 813, 917, 817, 1073742742, 821,
2876 919, 825, 920, 829, // NOLINT
2877 921, 749, 922, 833, 923, 837,
2878 924, 9, 1073742749, 841, 927, 845,
2879 928, 849, 929, 853, // NOLINT
2880 931, 857, 1073742756, 861, 933, 865,
2881 934, 869, 1073742759, 873, 939, 877,
2882 940, 777, 1073742765, 781, // NOLINT
2883 943, 785, 945, 801, 946, 805,
2884 1073742771, 809, 948, 813, 949, 817,
2885 1073742774, 821, 951, 825, // NOLINT
2886 952, 829, 953, 749, 954, 833,
2887 955, 837, 956, 9, 1073742781, 841,
2888 959, 845, 960, 849, // NOLINT
2889 961, 853, 962, 857, 963, 857,
2890 1073742788, 861, 965, 865, 966, 869,
2891 1073742791, 873, 971, 877, // NOLINT
2892 972, 789, 1073742797, 793, 974, 797,
2893 975, 881, 976, 805, 977, 829,
2894 981, 869, 982, 849, // NOLINT
2895 983, 881, 984, 885, 985, 885,
2896 986, 889, 987, 889, 988, 893,
2897 989, 893, 990, 897, // NOLINT
2898 991, 897, 992, 901, 993, 901,
2899 994, 905, 995, 905, 996, 909,
2900 997, 909, 998, 913, // NOLINT
2901 999, 913, 1000, 917, 1001, 917,
2902 1002, 921, 1003, 921, 1004, 925,
2903 1005, 925, 1006, 929, // NOLINT
2904 1007, 929, 1008, 833, 1009, 853,
2905 1010, 933, 1011, 773, 1013, 817,
2906 1015, 937, 1016, 937, // NOLINT
2907 1017, 933, 1018, 941, 1019, 941,
2908 1073742845, 765, 1023, 769, 1073742848, 945,
2909 1039, 949, 1073742864, 953, // NOLINT
2910 1071, 957, 1073742896, 953, 1103, 957,
2911 1073742928, 945, 1119, 949, 1120, 961,
2912 1121, 961, 1122, 965, // NOLINT
2913 1123, 965, 1124, 969, 1125, 969,
2914 1126, 973, 1127, 973, 1128, 977,
2915 1129, 977, 1130, 981, // NOLINT
2916 1131, 981, 1132, 985, 1133, 985,
2917 1134, 989, 1135, 989, 1136, 993,
2918 1137, 993, 1138, 997, // NOLINT
2919 1139, 997, 1140, 1001, 1141, 1001,
2920 1142, 1005, 1143, 1005, 1144, 1009,
2921 1145, 1009, 1146, 1013, // NOLINT
2922 1147, 1013, 1148, 1017, 1149, 1017,
2923 1150, 1021, 1151, 1021, 1152, 1025,
2924 1153, 1025, 1162, 1029, // NOLINT
2925 1163, 1029, 1164, 1033, 1165, 1033,
2926 1166, 1037, 1167, 1037, 1168, 1041,
2927 1169, 1041, 1170, 1045, // NOLINT
2928 1171, 1045, 1172, 1049, 1173, 1049,
2929 1174, 1053, 1175, 1053, 1176, 1057,
2930 1177, 1057, 1178, 1061, // NOLINT
2931 1179, 1061, 1180, 1065, 1181, 1065,
2932 1182, 1069, 1183, 1069, 1184, 1073,
2933 1185, 1073, 1186, 1077, // NOLINT
2934 1187, 1077, 1188, 1081, 1189, 1081,
2935 1190, 1085, 1191, 1085, 1192, 1089,
2936 1193, 1089, 1194, 1093, // NOLINT
2937 1195, 1093, 1196, 1097, 1197, 1097,
2938 1198, 1101, 1199, 1101, 1200, 1105,
2939 1201, 1105, 1202, 1109, // NOLINT
2940 1203, 1109, 1204, 1113, 1205, 1113,
2941 1206, 1117, 1207, 1117, 1208, 1121,
2942 1209, 1121, 1210, 1125, // NOLINT
2943 1211, 1125, 1212, 1129, 1213, 1129,
2944 1214, 1133, 1215, 1133, 1216, 1137,
2945 1217, 1141, 1218, 1141, // NOLINT
2946 1219, 1145, 1220, 1145, 1221, 1149,
2947 1222, 1149, 1223, 1153, 1224, 1153,
2948 1225, 1157, 1226, 1157, // NOLINT
2949 1227, 1161, 1228, 1161, 1229, 1165,
2950 1230, 1165, 1231, 1137, 1232, 1169,
2951 1233, 1169, 1234, 1173, // NOLINT
2952 1235, 1173, 1236, 1177, 1237, 1177,
2953 1238, 1181, 1239, 1181, 1240, 1185,
2954 1241, 1185, 1242, 1189, // NOLINT
2955 1243, 1189, 1244, 1193, 1245, 1193,
2956 1246, 1197, 1247, 1197, 1248, 1201,
2957 1249, 1201, 1250, 1205, // NOLINT
2958 1251, 1205, 1252, 1209, 1253, 1209,
2959 1254, 1213, 1255, 1213, 1256, 1217,
2960 1257, 1217, 1258, 1221, // NOLINT
2961 1259, 1221, 1260, 1225, 1261, 1225,
2962 1262, 1229, 1263, 1229, 1264, 1233,
2963 1265, 1233, 1266, 1237, // NOLINT
2964 1267, 1237, 1268, 1241, 1269, 1241,
2965 1270, 1245, 1271, 1245, 1272, 1249,
2966 1273, 1249, 1274, 1253, // NOLINT
2967 1275, 1253, 1276, 1257, 1277, 1257,
2968 1278, 1261, 1279, 1261, 1280, 1265,
2969 1281, 1265, 1282, 1269, // NOLINT
2970 1283, 1269, 1284, 1273, 1285, 1273,
2971 1286, 1277, 1287, 1277, 1288, 1281,
2972 1289, 1281, 1290, 1285, // NOLINT
2973 1291, 1285, 1292, 1289, 1293, 1289,
2974 1294, 1293, 1295, 1293, 1296, 1297,
2975 1297, 1297, 1298, 1301, // NOLINT
2976 1299, 1301, 1300, 1305, 1301, 1305,
2977 1302, 1309, 1303, 1309, 1304, 1313,
2978 1305, 1313, 1306, 1317, // NOLINT
2979 1307, 1317, 1308, 1321, 1309, 1321,
2980 1310, 1325, 1311, 1325, 1312, 1329,
2981 1313, 1329, 1314, 1333, // NOLINT
2982 1315, 1333, 1316, 1337, 1317, 1337,
2983 1318, 1341, 1319, 1341, 1320, 1345,
2984 1321, 1345, 1322, 1349, // NOLINT
2985 1323, 1349, 1324, 1353, 1325, 1353,
2986 1326, 1357, 1327, 1357, 1073743153, 1361,
2987 1366, 1365, 1073743201, 1361, // NOLINT
2988 1414, 1365, 1073746080, 1369, 4293, 1373,
2989 4295, 1377, 4301, 1381, 7545, 1385,
2990 7549, 1389, 7680, 1393, // NOLINT
2991 7681, 1393, 7682, 1397, 7683, 1397,
2992 7684, 1401, 7685, 1401, 7686, 1405,
2993 7687, 1405, 7688, 1409, // NOLINT
2994 7689, 1409, 7690, 1413, 7691, 1413,
2995 7692, 1417, 7693, 1417, 7694, 1421,
2996 7695, 1421, 7696, 1425, // NOLINT
2997 7697, 1425, 7698, 1429, 7699, 1429,
2998 7700, 1433, 7701, 1433, 7702, 1437,
2999 7703, 1437, 7704, 1441, // NOLINT
3000 7705, 1441, 7706, 1445, 7707, 1445,
3001 7708, 1449, 7709, 1449, 7710, 1453,
3002 7711, 1453, 7712, 1457, // NOLINT
3003 7713, 1457, 7714, 1461, 7715, 1461,
3004 7716, 1465, 7717, 1465, 7718, 1469,
3005 7719, 1469, 7720, 1473, // NOLINT
3006 7721, 1473, 7722, 1477, 7723, 1477,
3007 7724, 1481, 7725, 1481, 7726, 1485,
3008 7727, 1485, 7728, 1489, // NOLINT
3009 7729, 1489, 7730, 1493, 7731, 1493,
3010 7732, 1497, 7733, 1497, 7734, 1501,
3011 7735, 1501, 7736, 1505, // NOLINT
3012 7737, 1505, 7738, 1509, 7739, 1509,
3013 7740, 1513, 7741, 1513, 7742, 1517,
3014 7743, 1517, 7744, 1521, // NOLINT
3015 7745, 1521, 7746, 1525, 7747, 1525,
3016 7748, 1529, 7749, 1529, 7750, 1533,
3017 7751, 1533, 7752, 1537, // NOLINT
3018 7753, 1537, 7754, 1541, 7755, 1541,
3019 7756, 1545, 7757, 1545, 7758, 1549,
3020 7759, 1549, 7760, 1553, // NOLINT
3021 7761, 1553, 7762, 1557, 7763, 1557,
3022 7764, 1561, 7765, 1561, 7766, 1565,
3023 7767, 1565, 7768, 1569, // NOLINT
3024 7769, 1569, 7770, 1573, 7771, 1573,
3025 7772, 1577, 7773, 1577, 7774, 1581,
3026 7775, 1581, 7776, 1585, // NOLINT
3027 7777, 1585, 7778, 1589, 7779, 1589,
3028 7780, 1593, 7781, 1593, 7782, 1597,
3029 7783, 1597, 7784, 1601, // NOLINT
3030 7785, 1601, 7786, 1605, 7787, 1605,
3031 7788, 1609, 7789, 1609, 7790, 1613,
3032 7791, 1613, 7792, 1617, // NOLINT
3033 7793, 1617, 7794, 1621, 7795, 1621,
3034 7796, 1625, 7797, 1625, 7798, 1629,
3035 7799, 1629, 7800, 1633, // NOLINT
3036 7801, 1633, 7802, 1637, 7803, 1637,
3037 7804, 1641, 7805, 1641, 7806, 1645,
3038 7807, 1645, 7808, 1649, // NOLINT
3039 7809, 1649, 7810, 1653, 7811, 1653,
3040 7812, 1657, 7813, 1657, 7814, 1661,
3041 7815, 1661, 7816, 1665, // NOLINT
3042 7817, 1665, 7818, 1669, 7819, 1669,
3043 7820, 1673, 7821, 1673, 7822, 1677,
3044 7823, 1677, 7824, 1681, // NOLINT
3045 7825, 1681, 7826, 1685, 7827, 1685,
3046 7828, 1689, 7829, 1689, 7835, 1585,
3047 7840, 1693, 7841, 1693, // NOLINT
3048 7842, 1697, 7843, 1697, 7844, 1701,
3049 7845, 1701, 7846, 1705, 7847, 1705,
3050 7848, 1709, 7849, 1709, // NOLINT
3051 7850, 1713, 7851, 1713, 7852, 1717,
3052 7853, 1717, 7854, 1721, 7855, 1721,
3053 7856, 1725, 7857, 1725, // NOLINT
3054 7858, 1729, 7859, 1729, 7860, 1733,
3055 7861, 1733, 7862, 1737, 7863, 1737,
3056 7864, 1741, 7865, 1741, // NOLINT
3057 7866, 1745, 7867, 1745, 7868, 1749,
3058 7869, 1749, 7870, 1753, 7871, 1753,
3059 7872, 1757, 7873, 1757, // NOLINT
3060 7874, 1761, 7875, 1761, 7876, 1765,
3061 7877, 1765, 7878, 1769, 7879, 1769,
3062 7880, 1773, 7881, 1773, // NOLINT
3063 7882, 1777, 7883, 1777, 7884, 1781,
3064 7885, 1781, 7886, 1785, 7887, 1785,
3065 7888, 1789, 7889, 1789, // NOLINT
3066 7890, 1793, 7891, 1793, 7892, 1797,
3067 7893, 1797, 7894, 1801, 7895, 1801,
3068 7896, 1805, 7897, 1805, // NOLINT
3069 7898, 1809, 7899, 1809, 7900, 1813,
3070 7901, 1813, 7902, 1817, 7903, 1817,
3071 7904, 1821, 7905, 1821, // NOLINT
3072 7906, 1825, 7907, 1825, 7908, 1829,
3073 7909, 1829, 7910, 1833, 7911, 1833,
3074 7912, 1837, 7913, 1837, // NOLINT
3075 7914, 1841, 7915, 1841, 7916, 1845,
3076 7917, 1845, 7918, 1849, 7919, 1849,
3077 7920, 1853, 7921, 1853, // NOLINT
3078 7922, 1857, 7923, 1857, 7924, 1861,
3079 7925, 1861, 7926, 1865, 7927, 1865,
3080 7928, 1869, 7929, 1869, // NOLINT
3081 7930, 1873, 7931, 1873, 7932, 1877,
3082 7933, 1877, 7934, 1881, 7935, 1881,
3083 1073749760, 1885, 7943, 1889, // NOLINT
3084 1073749768, 1885, 7951, 1889, 1073749776, 1893,
3085 7957, 1897, 1073749784, 1893, 7965, 1897,
3086 1073749792, 1901, 7975, 1905, // NOLINT
3087 1073749800, 1901, 7983, 1905, 1073749808, 1909,
3088 7991, 1913, 1073749816, 1909, 7999, 1913,
3089 1073749824, 1917, 8005, 1921, // NOLINT
3090 1073749832, 1917, 8013, 1921, 8017, 1925,
3091 8019, 1929, 8021, 1933, 8023, 1937,
3092 8025, 1925, 8027, 1929, // NOLINT
3093 8029, 1933, 8031, 1937, 1073749856, 1941,
3094 8039, 1945, 1073749864, 1941, 8047, 1945,
3095 1073749872, 1949, 8049, 1953, // NOLINT
3096 1073749874, 1957, 8053, 1961, 1073749878, 1965,
3097 8055, 1969, 1073749880, 1973, 8057, 1977,
3098 1073749882, 1981, 8059, 1985, // NOLINT
3099 1073749884, 1989, 8061, 1993, 1073749936, 1997,
3100 8113, 2001, 1073749944, 1997, 8121, 2001,
3101 1073749946, 1949, 8123, 1953, // NOLINT
3102 8126, 749, 1073749960, 1957, 8139, 1961,
3103 1073749968, 2005, 8145, 2009, 1073749976, 2005,
3104 8153, 2009, 1073749978, 1965, // NOLINT
3105 8155, 1969, 1073749984, 2013, 8161, 2017,
3106 8165, 2021, 1073749992, 2013, 8169, 2017,
3107 1073749994, 1981, 8171, 1985, // NOLINT
3108 8172, 2021, 1073750008, 1973, 8185, 1977,
3109 1073750010, 1989, 8187, 1993}; // NOLINT
3110 static const uint16_t kEcma262UnCanonicalizeMultiStrings0Size = 507; // NOLINT
3111 static const MultiCharacterSpecialCase<2> kEcma262UnCanonicalizeMultiStrings1[83] = { // NOLINT
3112 {{8498, 8526}}, {{8544, 8560}}, {{8559, 8575}}, {{8579, 8580}}, // NOLINT
3113 {{9398, 9424}}, {{9423, 9449}}, {{11264, 11312}}, {{11310, 11358}}, // NOLINT
3114 {{11360, 11361}}, {{619, 11362}}, {{7549, 11363}}, {{637, 11364}}, // NOLINT
3115 {{570, 11365}}, {{574, 11366}}, {{11367, 11368}}, {{11369, 11370}}, // NOLINT
3116 {{11371, 11372}}, {{593, 11373}}, {{625, 11374}}, {{592, 11375}}, // NOLINT
3117 {{594, 11376}}, {{11378, 11379}}, {{11381, 11382}}, {{575, 11390}}, // NOLINT
3118 {{576, 11391}}, {{11392, 11393}}, {{11394, 11395}}, {{11396, 11397}}, // NOLINT
3119 {{11398, 11399}}, {{11400, 11401}}, {{11402, 11403}}, {{11404, 11405}}, // NOLINT
3120 {{11406, 11407}}, {{11408, 11409}}, {{11410, 11411}}, {{11412, 11413}}, // NOLINT
3121 {{11414, 11415}}, {{11416, 11417}}, {{11418, 11419}}, {{11420, 11421}}, // NOLINT
3122 {{11422, 11423}}, {{11424, 11425}}, {{11426, 11427}}, {{11428, 11429}}, // NOLINT
3123 {{11430, 11431}}, {{11432, 11433}}, {{11434, 11435}}, {{11436, 11437}}, // NOLINT
3124 {{11438, 11439}}, {{11440, 11441}}, {{11442, 11443}}, {{11444, 11445}}, // NOLINT
3125 {{11446, 11447}}, {{11448, 11449}}, {{11450, 11451}}, {{11452, 11453}}, // NOLINT
3126 {{11454, 11455}}, {{11456, 11457}}, {{11458, 11459}}, {{11460, 11461}}, // NOLINT
3127 {{11462, 11463}}, {{11464, 11465}}, {{11466, 11467}}, {{11468, 11469}}, // NOLINT
3128 {{11470, 11471}}, {{11472, 11473}}, {{11474, 11475}}, {{11476, 11477}}, // NOLINT
3129 {{11478, 11479}}, {{11480, 11481}}, {{11482, 11483}}, {{11484, 11485}}, // NOLINT
3130 {{11486, 11487}}, {{11488, 11489}}, {{11490, 11491}}, {{11499, 11500}}, // NOLINT
3131 {{11501, 11502}}, {{11506, 11507}}, {{4256, 11520}}, {{4293, 11557}}, // NOLINT
3132 {{4295, 11559}}, {{4301, 11565}}, {{kSentinel}} }; // NOLINT
3133 static const uint16_t kEcma262UnCanonicalizeTable1Size = 149; // NOLINT
3134 static const int32_t kEcma262UnCanonicalizeTable1[298] = {
3135 306, 1, 334, 1, 1073742176, 5, 367, 9, 1073742192, 5, 383, 9, 387, 13, 388, 13, // NOLINT
3136 1073743030, 17, 1231, 21, 1073743056, 17, 1257, 21, 1073744896, 25, 3118, 29, 1073744944, 25, 3166, 29, // NOLINT
3137 3168, 33, 3169, 33, 3170, 37, 3171, 41, 3172, 45, 3173, 49, 3174, 53, 3175, 57, // NOLINT
3138 3176, 57, 3177, 61, 3178, 61, 3179, 65, 3180, 65, 3181, 69, 3182, 73, 3183, 77, // NOLINT
3139 3184, 81, 3186, 85, 3187, 85, 3189, 89, 3190, 89, 1073745022, 93, 3199, 97, 3200, 101, // NOLINT
3140 3201, 101, 3202, 105, 3203, 105, 3204, 109, 3205, 109, 3206, 113, 3207, 113, 3208, 117, // NOLINT
3141 3209, 117, 3210, 121, 3211, 121, 3212, 125, 3213, 125, 3214, 129, 3215, 129, 3216, 133, // NOLINT
3142 3217, 133, 3218, 137, 3219, 137, 3220, 141, 3221, 141, 3222, 145, 3223, 145, 3224, 149, // NOLINT
3143 3225, 149, 3226, 153, 3227, 153, 3228, 157, 3229, 157, 3230, 161, 3231, 161, 3232, 165, // NOLINT
3144 3233, 165, 3234, 169, 3235, 169, 3236, 173, 3237, 173, 3238, 177, 3239, 177, 3240, 181, // NOLINT
3145 3241, 181, 3242, 185, 3243, 185, 3244, 189, 3245, 189, 3246, 193, 3247, 193, 3248, 197, // NOLINT
3146 3249, 197, 3250, 201, 3251, 201, 3252, 205, 3253, 205, 3254, 209, 3255, 209, 3256, 213, // NOLINT
3147 3257, 213, 3258, 217, 3259, 217, 3260, 221, 3261, 221, 3262, 225, 3263, 225, 3264, 229, // NOLINT
3148 3265, 229, 3266, 233, 3267, 233, 3268, 237, 3269, 237, 3270, 241, 3271, 241, 3272, 245, // NOLINT
3149 3273, 245, 3274, 249, 3275, 249, 3276, 253, 3277, 253, 3278, 257, 3279, 257, 3280, 261, // NOLINT
3150 3281, 261, 3282, 265, 3283, 265, 3284, 269, 3285, 269, 3286, 273, 3287, 273, 3288, 277, // NOLINT
3151 3289, 277, 3290, 281, 3291, 281, 3292, 285, 3293, 285, 3294, 289, 3295, 289, 3296, 293, // NOLINT
3152 3297, 293, 3298, 297, 3299, 297, 3307, 301, 3308, 301, 3309, 305, 3310, 305, 3314, 309, // NOLINT
3153 3315, 309, 1073745152, 313, 3365, 317, 3367, 321, 3373, 325 }; // NOLINT
3154 static const uint16_t kEcma262UnCanonicalizeMultiStrings1Size = 83; // NOLINT
3155 static const MultiCharacterSpecialCase<2>
3156 kEcma262UnCanonicalizeMultiStrings5[104] = { // NOLINT
3157 {{42560, 42561}},
3158 {{42562, 42563}},
3159 {{42564, 42565}},
3160 {{42566, 42567}}, // NOLINT
3161 {{42568, 42569}},
3162 {{42570, 42571}},
3163 {{42572, 42573}},
3164 {{42574, 42575}}, // NOLINT
3165 {{42576, 42577}},
3166 {{42578, 42579}},
3167 {{42580, 42581}},
3168 {{42582, 42583}}, // NOLINT
3169 {{42584, 42585}},
3170 {{42586, 42587}},
3171 {{42588, 42589}},
3172 {{42590, 42591}}, // NOLINT
3173 {{42592, 42593}},
3174 {{42594, 42595}},
3175 {{42596, 42597}},
3176 {{42598, 42599}}, // NOLINT
3177 {{42600, 42601}},
3178 {{42602, 42603}},
3179 {{42604, 42605}},
3180 {{42624, 42625}}, // NOLINT
3181 {{42626, 42627}},
3182 {{42628, 42629}},
3183 {{42630, 42631}},
3184 {{42632, 42633}}, // NOLINT
3185 {{42634, 42635}},
3186 {{42636, 42637}},
3187 {{42638, 42639}},
3188 {{42640, 42641}}, // NOLINT
3189 {{42642, 42643}},
3190 {{42644, 42645}},
3191 {{42646, 42647}},
3192 {{42648, 42649}}, // NOLINT
3193 {{42650, 42651}},
3194 {{42786, 42787}},
3195 {{42788, 42789}},
3196 {{42790, 42791}}, // NOLINT
3197 {{42792, 42793}},
3198 {{42794, 42795}},
3199 {{42796, 42797}},
3200 {{42798, 42799}}, // NOLINT
3201 {{42802, 42803}},
3202 {{42804, 42805}},
3203 {{42806, 42807}},
3204 {{42808, 42809}}, // NOLINT
3205 {{42810, 42811}},
3206 {{42812, 42813}},
3207 {{42814, 42815}},
3208 {{42816, 42817}}, // NOLINT
3209 {{42818, 42819}},
3210 {{42820, 42821}},
3211 {{42822, 42823}},
3212 {{42824, 42825}}, // NOLINT
3213 {{42826, 42827}},
3214 {{42828, 42829}},
3215 {{42830, 42831}},
3216 {{42832, 42833}}, // NOLINT
3217 {{42834, 42835}},
3218 {{42836, 42837}},
3219 {{42838, 42839}},
3220 {{42840, 42841}}, // NOLINT
3221 {{42842, 42843}},
3222 {{42844, 42845}},
3223 {{42846, 42847}},
3224 {{42848, 42849}}, // NOLINT
3225 {{42850, 42851}},
3226 {{42852, 42853}},
3227 {{42854, 42855}},
3228 {{42856, 42857}}, // NOLINT
3229 {{42858, 42859}},
3230 {{42860, 42861}},
3231 {{42862, 42863}},
3232 {{42873, 42874}}, // NOLINT
3233 {{42875, 42876}},
3234 {{7545, 42877}},
3235 {{42878, 42879}},
3236 {{42880, 42881}}, // NOLINT
3237 {{42882, 42883}},
3238 {{42884, 42885}},
3239 {{42886, 42887}},
3240 {{42891, 42892}}, // NOLINT
3241 {{613, 42893}},
3242 {{42896, 42897}},
3243 {{42898, 42899}},
3244 {{42902, 42903}}, // NOLINT
3245 {{42904, 42905}},
3246 {{42906, 42907}},
3247 {{42908, 42909}},
3248 {{42910, 42911}}, // NOLINT
3249 {{42912, 42913}},
3250 {{42914, 42915}},
3251 {{42916, 42917}},
3252 {{42918, 42919}}, // NOLINT
3253 {{42920, 42921}},
3254 {{614, 42922}},
3255 {{604, 42923}},
3256 {{609, 42924}}, // NOLINT
3257 {{620, 42925}},
3258 {{670, 42928}},
3259 {{647, 42929}},
3260 {{kSentinel}}}; // NOLINT
3261 static const uint16_t kEcma262UnCanonicalizeTable5Size = 198; // NOLINT
3262 static const int32_t kEcma262UnCanonicalizeTable5
3263 [396] = {1600, 1, 1601, 1, 1602, 5, 1603, 5,
3264 1604, 9, 1605, 9, 1606, 13, 1607, 13, // NOLINT
3265 1608, 17, 1609, 17, 1610, 21, 1611, 21,
3266 1612, 25, 1613, 25, 1614, 29, 1615, 29, // NOLINT
3267 1616, 33, 1617, 33, 1618, 37, 1619, 37,
3268 1620, 41, 1621, 41, 1622, 45, 1623, 45, // NOLINT
3269 1624, 49, 1625, 49, 1626, 53, 1627, 53,
3270 1628, 57, 1629, 57, 1630, 61, 1631, 61, // NOLINT
3271 1632, 65, 1633, 65, 1634, 69, 1635, 69,
3272 1636, 73, 1637, 73, 1638, 77, 1639, 77, // NOLINT
3273 1640, 81, 1641, 81, 1642, 85, 1643, 85,
3274 1644, 89, 1645, 89, 1664, 93, 1665, 93, // NOLINT
3275 1666, 97, 1667, 97, 1668, 101, 1669, 101,
3276 1670, 105, 1671, 105, 1672, 109, 1673, 109, // NOLINT
3277 1674, 113, 1675, 113, 1676, 117, 1677, 117,
3278 1678, 121, 1679, 121, 1680, 125, 1681, 125, // NOLINT
3279 1682, 129, 1683, 129, 1684, 133, 1685, 133,
3280 1686, 137, 1687, 137, 1688, 141, 1689, 141, // NOLINT
3281 1690, 145, 1691, 145, 1826, 149, 1827, 149,
3282 1828, 153, 1829, 153, 1830, 157, 1831, 157, // NOLINT
3283 1832, 161, 1833, 161, 1834, 165, 1835, 165,
3284 1836, 169, 1837, 169, 1838, 173, 1839, 173, // NOLINT
3285 1842, 177, 1843, 177, 1844, 181, 1845, 181,
3286 1846, 185, 1847, 185, 1848, 189, 1849, 189, // NOLINT
3287 1850, 193, 1851, 193, 1852, 197, 1853, 197,
3288 1854, 201, 1855, 201, 1856, 205, 1857, 205, // NOLINT
3289 1858, 209, 1859, 209, 1860, 213, 1861, 213,
3290 1862, 217, 1863, 217, 1864, 221, 1865, 221, // NOLINT
3291 1866, 225, 1867, 225, 1868, 229, 1869, 229,
3292 1870, 233, 1871, 233, 1872, 237, 1873, 237, // NOLINT
3293 1874, 241, 1875, 241, 1876, 245, 1877, 245,
3294 1878, 249, 1879, 249, 1880, 253, 1881, 253, // NOLINT
3295 1882, 257, 1883, 257, 1884, 261, 1885, 261,
3296 1886, 265, 1887, 265, 1888, 269, 1889, 269, // NOLINT
3297 1890, 273, 1891, 273, 1892, 277, 1893, 277,
3298 1894, 281, 1895, 281, 1896, 285, 1897, 285, // NOLINT
3299 1898, 289, 1899, 289, 1900, 293, 1901, 293,
3300 1902, 297, 1903, 297, 1913, 301, 1914, 301, // NOLINT
3301 1915, 305, 1916, 305, 1917, 309, 1918, 313,
3302 1919, 313, 1920, 317, 1921, 317, 1922, 321, // NOLINT
3303 1923, 321, 1924, 325, 1925, 325, 1926, 329,
3304 1927, 329, 1931, 333, 1932, 333, 1933, 337, // NOLINT
3305 1936, 341, 1937, 341, 1938, 345, 1939, 345,
3306 1942, 349, 1943, 349, 1944, 353, 1945, 353, // NOLINT
3307 1946, 357, 1947, 357, 1948, 361, 1949, 361,
3308 1950, 365, 1951, 365, 1952, 369, 1953, 369, // NOLINT
3309 1954, 373, 1955, 373, 1956, 377, 1957, 377,
3310 1958, 381, 1959, 381, 1960, 385, 1961, 385, // NOLINT
3311 1962, 389, 1963, 393, 1964, 397, 1965, 401,
3312 1968, 405, 1969, 409}; // NOLINT
3313 static const uint16_t kEcma262UnCanonicalizeMultiStrings5Size = 104; // NOLINT
3314 static const MultiCharacterSpecialCase<2> kEcma262UnCanonicalizeMultiStrings7[3] = { // NOLINT
3315 {{65313, 65345}}, {{65338, 65370}}, {{kSentinel}} }; // NOLINT
3316 static const uint16_t kEcma262UnCanonicalizeTable7Size = 4; // NOLINT
3317 static const int32_t kEcma262UnCanonicalizeTable7[8] = {
3318 1073749793, 1, 7994, 5, 1073749825, 1, 8026, 5 }; // NOLINT
3319 static const uint16_t kEcma262UnCanonicalizeMultiStrings7Size = 3; // NOLINT
Convert(uchar c,uchar n,uchar * result,bool * allow_caching_ptr)3320 int Ecma262UnCanonicalize::Convert(uchar c,
3321 uchar n,
3322 uchar* result,
3323 bool* allow_caching_ptr) {
3324 int chunk_index = c >> 13;
3325 switch (chunk_index) {
3326 case 0: return LookupMapping<true>(kEcma262UnCanonicalizeTable0,
3327 kEcma262UnCanonicalizeTable0Size,
3328 kEcma262UnCanonicalizeMultiStrings0,
3329 c,
3330 n,
3331 result,
3332 allow_caching_ptr);
3333 case 1: return LookupMapping<true>(kEcma262UnCanonicalizeTable1,
3334 kEcma262UnCanonicalizeTable1Size,
3335 kEcma262UnCanonicalizeMultiStrings1,
3336 c,
3337 n,
3338 result,
3339 allow_caching_ptr);
3340 case 5: return LookupMapping<true>(kEcma262UnCanonicalizeTable5,
3341 kEcma262UnCanonicalizeTable5Size,
3342 kEcma262UnCanonicalizeMultiStrings5,
3343 c,
3344 n,
3345 result,
3346 allow_caching_ptr);
3347 case 7: return LookupMapping<true>(kEcma262UnCanonicalizeTable7,
3348 kEcma262UnCanonicalizeTable7Size,
3349 kEcma262UnCanonicalizeMultiStrings7,
3350 c,
3351 n,
3352 result,
3353 allow_caching_ptr);
3354 default: return 0;
3355 }
3356 }
3357
3358 static const MultiCharacterSpecialCase<1> kCanonicalizationRangeMultiStrings0[1] = { // NOLINT
3359 {{kSentinel}} }; // NOLINT
3360 static const uint16_t kCanonicalizationRangeTable0Size = 70; // NOLINT
3361 static const int32_t kCanonicalizationRangeTable0[140] = {
3362 1073741889, 100, 90, 0, 1073741921, 100, 122, 0, 1073742016, 88, 214, 0, 1073742040, 24, 222, 0, // NOLINT
3363 1073742048, 88, 246, 0, 1073742072, 24, 254, 0, 1073742715, 8, 893, 0, 1073742728, 8, 906, 0, // NOLINT
3364 1073742749, 8, 927, 0, 1073742759, 16, 939, 0, 1073742765, 8, 943, 0, 1073742781, 8, 959, 0, // NOLINT
3365 1073742791, 16, 971, 0, 1073742845, 8, 1023, 0, 1073742848, 60, 1039, 0, 1073742864, 124, 1071, 0, // NOLINT
3366 1073742896, 124, 1103, 0, 1073742928, 60, 1119, 0, 1073743153, 148, 1366, 0, 1073743201, 148, 1414, 0, // NOLINT
3367 1073746080, 148, 4293, 0, 1073749760, 28, 7943, 0, 1073749768, 28, 7951, 0, 1073749776, 20, 7957, 0, // NOLINT
3368 1073749784, 20, 7965, 0, 1073749792, 28, 7975, 0, 1073749800, 28, 7983, 0, 1073749808, 28, 7991, 0, // NOLINT
3369 1073749816, 28, 7999, 0, 1073749824, 20, 8005, 0, 1073749832, 20, 8013, 0, 1073749856, 28, 8039, 0, // NOLINT
3370 1073749864, 28, 8047, 0, 1073749874, 12, 8053, 0, 1073749960, 12, 8139, 0 }; // NOLINT
3371 static const uint16_t kCanonicalizationRangeMultiStrings0Size = 1; // NOLINT
3372 static const MultiCharacterSpecialCase<1> kCanonicalizationRangeMultiStrings1[1] = { // NOLINT
3373 {{kSentinel}} }; // NOLINT
3374 static const uint16_t kCanonicalizationRangeTable1Size = 14; // NOLINT
3375 static const int32_t kCanonicalizationRangeTable1[28] = {
3376 1073742176, 60, 367, 0, 1073742192, 60, 383, 0, 1073743030, 100, 1231, 0, 1073743056, 100, 1257, 0, // NOLINT
3377 1073744896, 184, 3118, 0, 1073744944, 184, 3166, 0, 1073745152, 148, 3365, 0 }; // NOLINT
3378 static const uint16_t kCanonicalizationRangeMultiStrings1Size = 1; // NOLINT
3379 static const MultiCharacterSpecialCase<1> kCanonicalizationRangeMultiStrings7[1] = { // NOLINT
3380 {{kSentinel}} }; // NOLINT
3381 static const uint16_t kCanonicalizationRangeTable7Size = 4; // NOLINT
3382 static const int32_t kCanonicalizationRangeTable7[8] = {
3383 1073749793, 100, 7994, 0, 1073749825, 100, 8026, 0 }; // NOLINT
3384 static const uint16_t kCanonicalizationRangeMultiStrings7Size = 1; // NOLINT
Convert(uchar c,uchar n,uchar * result,bool * allow_caching_ptr)3385 int CanonicalizationRange::Convert(uchar c,
3386 uchar n,
3387 uchar* result,
3388 bool* allow_caching_ptr) {
3389 int chunk_index = c >> 13;
3390 switch (chunk_index) {
3391 case 0: return LookupMapping<false>(kCanonicalizationRangeTable0,
3392 kCanonicalizationRangeTable0Size,
3393 kCanonicalizationRangeMultiStrings0,
3394 c,
3395 n,
3396 result,
3397 allow_caching_ptr);
3398 case 1: return LookupMapping<false>(kCanonicalizationRangeTable1,
3399 kCanonicalizationRangeTable1Size,
3400 kCanonicalizationRangeMultiStrings1,
3401 c,
3402 n,
3403 result,
3404 allow_caching_ptr);
3405 case 7: return LookupMapping<false>(kCanonicalizationRangeTable7,
3406 kCanonicalizationRangeTable7Size,
3407 kCanonicalizationRangeMultiStrings7,
3408 c,
3409 n,
3410 result,
3411 allow_caching_ptr);
3412 default: return 0;
3413 }
3414 }
3415
3416
3417 const uchar UnicodeData::kMaxCodePoint = 65533;
3418
GetByteCount()3419 int UnicodeData::GetByteCount() {
3420 return kUppercaseTable0Size * sizeof(int32_t) // NOLINT
3421 + kUppercaseTable1Size * sizeof(int32_t) // NOLINT
3422 + kUppercaseTable5Size * sizeof(int32_t) // NOLINT
3423 + kUppercaseTable7Size * sizeof(int32_t) // NOLINT
3424 + kLowercaseTable0Size * sizeof(int32_t) // NOLINT
3425 + kLowercaseTable1Size * sizeof(int32_t) // NOLINT
3426 + kLowercaseTable5Size * sizeof(int32_t) // NOLINT
3427 + kLowercaseTable7Size * sizeof(int32_t) // NOLINT
3428 + kLetterTable0Size * sizeof(int32_t) // NOLINT
3429 + kLetterTable1Size * sizeof(int32_t) // NOLINT
3430 + kLetterTable2Size * sizeof(int32_t) // NOLINT
3431 + kLetterTable3Size * sizeof(int32_t) // NOLINT
3432 + kLetterTable4Size * sizeof(int32_t) // NOLINT
3433 + kLetterTable5Size * sizeof(int32_t) // NOLINT
3434 + kLetterTable6Size * sizeof(int32_t) // NOLINT
3435 + kLetterTable7Size * sizeof(int32_t) // NOLINT
3436 + kID_StartTable0Size * sizeof(int32_t) // NOLINT
3437 + kID_StartTable1Size * sizeof(int32_t) // NOLINT
3438 + kID_StartTable2Size * sizeof(int32_t) // NOLINT
3439 + kID_StartTable3Size * sizeof(int32_t) // NOLINT
3440 + kID_StartTable4Size * sizeof(int32_t) // NOLINT
3441 + kID_StartTable5Size * sizeof(int32_t) // NOLINT
3442 + kID_StartTable6Size * sizeof(int32_t) // NOLINT
3443 + kID_StartTable7Size * sizeof(int32_t) // NOLINT
3444 + kID_ContinueTable0Size * sizeof(int32_t) // NOLINT
3445 + kID_ContinueTable1Size * sizeof(int32_t) // NOLINT
3446 + kID_ContinueTable5Size * sizeof(int32_t) // NOLINT
3447 + kID_ContinueTable7Size * sizeof(int32_t) // NOLINT
3448 + kWhiteSpaceTable0Size * sizeof(int32_t) // NOLINT
3449 + kWhiteSpaceTable1Size * sizeof(int32_t) // NOLINT
3450 + kWhiteSpaceTable7Size * sizeof(int32_t) // NOLINT
3451 + kLineTerminatorTable0Size * sizeof(int32_t) // NOLINT
3452 + kLineTerminatorTable1Size * sizeof(int32_t) // NOLINT
3453 +
3454 kToLowercaseMultiStrings0Size *
3455 sizeof(MultiCharacterSpecialCase<2>) // NOLINT
3456 +
3457 kToLowercaseMultiStrings1Size *
3458 sizeof(MultiCharacterSpecialCase<1>) // NOLINT
3459 +
3460 kToLowercaseMultiStrings5Size *
3461 sizeof(MultiCharacterSpecialCase<1>) // NOLINT
3462 +
3463 kToLowercaseMultiStrings7Size *
3464 sizeof(MultiCharacterSpecialCase<1>) // NOLINT
3465 +
3466 kToUppercaseMultiStrings0Size *
3467 sizeof(MultiCharacterSpecialCase<3>) // NOLINT
3468 +
3469 kToUppercaseMultiStrings1Size *
3470 sizeof(MultiCharacterSpecialCase<1>) // NOLINT
3471 +
3472 kToUppercaseMultiStrings5Size *
3473 sizeof(MultiCharacterSpecialCase<1>) // NOLINT
3474 +
3475 kToUppercaseMultiStrings7Size *
3476 sizeof(MultiCharacterSpecialCase<3>) // NOLINT
3477 +
3478 kEcma262CanonicalizeMultiStrings0Size *
3479 sizeof(MultiCharacterSpecialCase<1>) // NOLINT
3480 +
3481 kEcma262CanonicalizeMultiStrings1Size *
3482 sizeof(MultiCharacterSpecialCase<1>) // NOLINT
3483 +
3484 kEcma262CanonicalizeMultiStrings5Size *
3485 sizeof(MultiCharacterSpecialCase<1>) // NOLINT
3486 +
3487 kEcma262CanonicalizeMultiStrings7Size *
3488 sizeof(MultiCharacterSpecialCase<1>) // NOLINT
3489 +
3490 kEcma262UnCanonicalizeMultiStrings0Size *
3491 sizeof(MultiCharacterSpecialCase<4>) // NOLINT
3492 +
3493 kEcma262UnCanonicalizeMultiStrings1Size *
3494 sizeof(MultiCharacterSpecialCase<2>) // NOLINT
3495 +
3496 kEcma262UnCanonicalizeMultiStrings5Size *
3497 sizeof(MultiCharacterSpecialCase<2>) // NOLINT
3498 +
3499 kEcma262UnCanonicalizeMultiStrings7Size *
3500 sizeof(MultiCharacterSpecialCase<2>) // NOLINT
3501 +
3502 kCanonicalizationRangeMultiStrings0Size *
3503 sizeof(MultiCharacterSpecialCase<1>) // NOLINT
3504 +
3505 kCanonicalizationRangeMultiStrings1Size *
3506 sizeof(MultiCharacterSpecialCase<1>) // NOLINT
3507 +
3508 kCanonicalizationRangeMultiStrings7Size *
3509 sizeof(MultiCharacterSpecialCase<1>); // NOLINT
3510 }
3511
3512 } // namespace unibrow
3513