v8/src/unicode.cc
clemensh f0523e3046 [wasm] Add UTF-8 validation
Names passed for imports and exports are checked during decoding,
leading to errors if they are no valid UTF-8. Function names are not
checked during decode, but rather lead to undefined being returned at
runtime if they are not UTF-8.

We need to do these checks on the Wasm side, since the factory
methods assume to get valid UTF-8 strings.

R=titzer@chromium.org, yangguo@chromium.org

Review-Url: https://codereview.chromium.org/1967023004
Cr-Commit-Position: refs/heads/master@{#36208}
2016-05-12 13:02:14 +00:00

3457 lines
169 KiB
C++

// Copyright 2012 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// This file was generated at 2014-10-08 15:25:47.940335
#include "src/unicode.h"
#include "src/unicode-inl.h"
#include <stdio.h>
#include <stdlib.h>
namespace unibrow {
static const int kStartBit = (1 << 30);
static const int kChunkBits = (1 << 13);
static const uchar kSentinel = static_cast<uchar>(-1);
/**
* \file
* Implementations of functions for working with unicode.
*/
typedef signed short int16_t; // NOLINT
typedef unsigned short uint16_t; // NOLINT
typedef int int32_t; // NOLINT
// All access to the character table should go through this function.
template <int D>
static inline uchar TableGet(const int32_t* table, int index) {
return table[D * index];
}
static inline uchar GetEntry(int32_t entry) {
return entry & (kStartBit - 1);
}
static inline bool IsStart(int32_t entry) {
return (entry & kStartBit) != 0;
}
/**
* Look up a character in the unicode table using a mix of binary and
* interpolation search. For a uniformly distributed array
* interpolation search beats binary search by a wide margin. However,
* in this case interpolation search degenerates because of some very
* high values in the lower end of the table so this function uses a
* combination. The average number of steps to look up the information
* about a character is around 10, slightly higher if there is no
* information available about the character.
*/
static bool LookupPredicate(const int32_t* table, uint16_t size, uchar chr) {
static const int kEntryDist = 1;
uint16_t value = chr & (kChunkBits - 1);
unsigned int low = 0;
unsigned int high = size - 1;
while (high != low) {
unsigned int mid = low + ((high - low) >> 1);
uchar current_value = GetEntry(TableGet<kEntryDist>(table, mid));
// If we've found an entry less than or equal to this one, and the
// next one is not also less than this one, we've arrived.
if ((current_value <= value) &&
(mid + 1 == size ||
GetEntry(TableGet<kEntryDist>(table, mid + 1)) > value)) {
low = mid;
break;
} else if (current_value < value) {
low = mid + 1;
} else if (current_value > value) {
// If we've just checked the bottom-most value and it's not
// the one we're looking for, we're done.
if (mid == 0) break;
high = mid - 1;
}
}
int32_t field = TableGet<kEntryDist>(table, low);
uchar entry = GetEntry(field);
bool is_start = IsStart(field);
return (entry == value) || (entry < value && is_start);
}
template <int kW>
struct MultiCharacterSpecialCase {
static const uchar kEndOfEncoding = kSentinel;
uchar chars[kW];
};
// Look up the mapping for the given character in the specified table,
// which is of the specified length and uses the specified special case
// mapping for multi-char mappings. The next parameter is the character
// following the one to map. The result will be written in to the result
// buffer and the number of characters written will be returned. Finally,
// if the allow_caching_ptr is non-null then false will be stored in
// it if the result contains multiple characters or depends on the
// context.
// If ranges are linear, a match between a start and end point is
// offset by the distance between the match and the start. Otherwise
// the result is the same as for the start point on the entire range.
template <bool ranges_are_linear, int kW>
static int LookupMapping(const int32_t* table,
uint16_t size,
const MultiCharacterSpecialCase<kW>* multi_chars,
uchar chr,
uchar next,
uchar* result,
bool* allow_caching_ptr) {
static const int kEntryDist = 2;
uint16_t key = chr & (kChunkBits - 1);
uint16_t chunk_start = chr - key;
unsigned int low = 0;
unsigned int high = size - 1;
while (high != low) {
unsigned int mid = low + ((high - low) >> 1);
uchar current_value = GetEntry(TableGet<kEntryDist>(table, mid));
// If we've found an entry less than or equal to this one, and the next one
// is not also less than this one, we've arrived.
if ((current_value <= key) &&
(mid + 1 == size ||
GetEntry(TableGet<kEntryDist>(table, mid + 1)) > key)) {
low = mid;
break;
} else if (current_value < key) {
low = mid + 1;
} else if (current_value > key) {
// If we've just checked the bottom-most value and it's not
// the one we're looking for, we're done.
if (mid == 0) break;
high = mid - 1;
}
}
int32_t field = TableGet<kEntryDist>(table, low);
uchar entry = GetEntry(field);
bool is_start = IsStart(field);
bool found = (entry == key) || (entry < key && is_start);
if (found) {
int32_t value = table[2 * low + 1];
if (value == 0) {
// 0 means not present
return 0;
} else if ((value & 3) == 0) {
// Low bits 0 means a constant offset from the given character.
if (ranges_are_linear) {
result[0] = chr + (value >> 2);
} else {
result[0] = entry + chunk_start + (value >> 2);
}
return 1;
} else if ((value & 3) == 1) {
// Low bits 1 means a special case mapping
if (allow_caching_ptr) *allow_caching_ptr = false;
const MultiCharacterSpecialCase<kW>& mapping = multi_chars[value >> 2];
int length = 0;
for (length = 0; length < kW; length++) {
uchar mapped = mapping.chars[length];
if (mapped == MultiCharacterSpecialCase<kW>::kEndOfEncoding) break;
if (ranges_are_linear) {
result[length] = mapped + (key - entry);
} else {
result[length] = mapped;
}
}
return length;
} else {
// Low bits 2 means a really really special case
if (allow_caching_ptr) *allow_caching_ptr = false;
// The cases of this switch are defined in unicode.py in the
// really_special_cases mapping.
switch (value >> 2) {
case 1:
// Really special case 1: upper case sigma. This letter
// converts to two different lower case sigmas depending on
// whether or not it occurs at the end of a word.
if (next != 0 && Letter::Is(next)) {
result[0] = 0x03C3;
} else {
result[0] = 0x03C2;
}
return 1;
default:
return 0;
}
return -1;
}
} else {
return 0;
}
}
static inline size_t NonASCIISequenceLength(byte first) {
// clang-format off
static const uint8_t lengths[256] = {
// The first 128 entries correspond to ASCII characters.
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// The following 64 entries correspond to continuation bytes.
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// The next are two invalid overlong encodings and 30 two-byte sequences.
0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
// 16 three-byte sequences.
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
// 5 four-byte sequences, followed by sequences that could only encode
// code points outside of the unicode range.
4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
// clang-format on
return lengths[first];
}
static inline bool IsContinuationCharacter(byte chr) {
return chr >= 0x80 && chr <= 0xBF;
}
// This method decodes an UTF-8 value according to RFC 3629.
uchar Utf8::CalculateValue(const byte* str, size_t max_length, size_t* cursor) {
size_t length = NonASCIISequenceLength(str[0]);
if (length == 0 || max_length < length) {
*cursor += 1;
return kBadChar;
}
if (length == 2) {
if (!IsContinuationCharacter(str[1])) {
*cursor += 1;
return kBadChar;
}
*cursor += 2;
return ((str[0] << 6) + str[1]) - 0x00003080;
}
if (length == 3) {
switch (str[0]) {
case 0xE0:
// Overlong three-byte sequence.
if (str[1] < 0xA0 || str[1] > 0xBF) {
*cursor += 1;
return kBadChar;
}
break;
case 0xED:
// High and low surrogate halves.
if (str[1] < 0x80 || str[1] > 0x9F) {
*cursor += 1;
return kBadChar;
}
break;
default:
if (!IsContinuationCharacter(str[1])) {
*cursor += 1;
return kBadChar;
}
}
if (!IsContinuationCharacter(str[2])) {
*cursor += 1;
return kBadChar;
}
*cursor += 3;
return ((str[0] << 12) + (str[1] << 6) + str[2]) - 0x000E2080;
}
DCHECK(length == 4);
switch (str[0]) {
case 0xF0:
// Overlong four-byte sequence.
if (str[1] < 0x90 || str[1] > 0xBF) {
*cursor += 1;
return kBadChar;
}
break;
case 0xF4:
// Code points outside of the unicode range.
if (str[1] < 0x80 || str[1] > 0x8F) {
*cursor += 1;
return kBadChar;
}
break;
default:
if (!IsContinuationCharacter(str[1])) {
*cursor += 1;
return kBadChar;
}
}
if (!IsContinuationCharacter(str[2])) {
*cursor += 1;
return kBadChar;
}
if (!IsContinuationCharacter(str[3])) {
*cursor += 1;
return kBadChar;
}
*cursor += 4;
return ((str[0] << 18) + (str[1] << 12) + (str[2] << 6) + str[3]) -
0x03C82080;
}
bool Utf8::Validate(const byte* bytes, size_t length) {
size_t cursor = 0;
// Performance optimization: Skip over single-byte values first.
while (cursor < length && bytes[cursor] <= kMaxOneByteChar) {
++cursor;
}
while (cursor < length) {
uchar c = ValueOf(bytes + cursor, length - cursor, &cursor);
if (!IsValidCharacter(c)) return false;
}
return true;
}
// Uppercase: point.category == 'Lu'
static const uint16_t kUppercaseTable0Size = 455;
static const int32_t kUppercaseTable0[455] = {
1073741889, 90, 1073742016, 214,
1073742040, 222, 256, 258, // NOLINT
260, 262, 264, 266,
268, 270, 272, 274, // NOLINT
276, 278, 280, 282,
284, 286, 288, 290, // NOLINT
292, 294, 296, 298,
300, 302, 304, 306, // NOLINT
308, 310, 313, 315,
317, 319, 321, 323, // NOLINT
325, 327, 330, 332,
334, 336, 338, 340, // NOLINT
342, 344, 346, 348,
350, 352, 354, 356, // NOLINT
358, 360, 362, 364,
366, 368, 370, 372, // NOLINT
374, 1073742200, 377, 379,
381, 1073742209, 386, 388, // NOLINT
1073742214, 391, 1073742217, 395,
1073742222, 401, 1073742227, 404, // NOLINT
1073742230, 408, 1073742236, 413,
1073742239, 416, 418, 420, // NOLINT
1073742246, 423, 425, 428,
1073742254, 431, 1073742257, 435, // NOLINT
437, 1073742263, 440, 444,
452, 455, 458, 461, // NOLINT
463, 465, 467, 469,
471, 473, 475, 478, // NOLINT
480, 482, 484, 486,
488, 490, 492, 494, // NOLINT
497, 500, 1073742326, 504,
506, 508, 510, 512, // NOLINT
514, 516, 518, 520,
522, 524, 526, 528, // NOLINT
530, 532, 534, 536,
538, 540, 542, 544, // NOLINT
546, 548, 550, 552,
554, 556, 558, 560, // NOLINT
562, 1073742394, 571, 1073742397,
574, 577, 1073742403, 582, // NOLINT
584, 586, 588, 590,
880, 882, 886, 895, // NOLINT
902, 1073742728, 906, 908,
1073742734, 911, 1073742737, 929, // NOLINT
1073742755, 939, 975, 1073742802,
980, 984, 986, 988, // NOLINT
990, 992, 994, 996,
998, 1000, 1002, 1004, // NOLINT
1006, 1012, 1015, 1073742841,
1018, 1073742845, 1071, 1120, // NOLINT
1122, 1124, 1126, 1128,
1130, 1132, 1134, 1136, // NOLINT
1138, 1140, 1142, 1144,
1146, 1148, 1150, 1152, // NOLINT
1162, 1164, 1166, 1168,
1170, 1172, 1174, 1176, // NOLINT
1178, 1180, 1182, 1184,
1186, 1188, 1190, 1192, // NOLINT
1194, 1196, 1198, 1200,
1202, 1204, 1206, 1208, // NOLINT
1210, 1212, 1214, 1073743040,
1217, 1219, 1221, 1223, // NOLINT
1225, 1227, 1229, 1232,
1234, 1236, 1238, 1240, // NOLINT
1242, 1244, 1246, 1248,
1250, 1252, 1254, 1256, // NOLINT
1258, 1260, 1262, 1264,
1266, 1268, 1270, 1272, // NOLINT
1274, 1276, 1278, 1280,
1282, 1284, 1286, 1288, // NOLINT
1290, 1292, 1294, 1296,
1298, 1300, 1302, 1304, // NOLINT
1306, 1308, 1310, 1312,
1314, 1316, 1318, 1320, // NOLINT
1322, 1324, 1326, 1073743153,
1366, 1073746080, 4293, 4295, // NOLINT
4301, 7680, 7682, 7684,
7686, 7688, 7690, 7692, // NOLINT
7694, 7696, 7698, 7700,
7702, 7704, 7706, 7708, // NOLINT
7710, 7712, 7714, 7716,
7718, 7720, 7722, 7724, // NOLINT
7726, 7728, 7730, 7732,
7734, 7736, 7738, 7740, // NOLINT
7742, 7744, 7746, 7748,
7750, 7752, 7754, 7756, // NOLINT
7758, 7760, 7762, 7764,
7766, 7768, 7770, 7772, // NOLINT
7774, 7776, 7778, 7780,
7782, 7784, 7786, 7788, // NOLINT
7790, 7792, 7794, 7796,
7798, 7800, 7802, 7804, // NOLINT
7806, 7808, 7810, 7812,
7814, 7816, 7818, 7820, // NOLINT
7822, 7824, 7826, 7828,
7838, 7840, 7842, 7844, // NOLINT
7846, 7848, 7850, 7852,
7854, 7856, 7858, 7860, // NOLINT
7862, 7864, 7866, 7868,
7870, 7872, 7874, 7876, // NOLINT
7878, 7880, 7882, 7884,
7886, 7888, 7890, 7892, // NOLINT
7894, 7896, 7898, 7900,
7902, 7904, 7906, 7908, // NOLINT
7910, 7912, 7914, 7916,
7918, 7920, 7922, 7924, // NOLINT
7926, 7928, 7930, 7932,
7934, 1073749768, 7951, 1073749784, // NOLINT
7965, 1073749800, 7983, 1073749816,
7999, 1073749832, 8013, 8025, // NOLINT
8027, 8029, 8031, 1073749864,
8047, 1073749944, 8123, 1073749960, // NOLINT
8139, 1073749976, 8155, 1073749992,
8172, 1073750008, 8187}; // NOLINT
static const uint16_t kUppercaseTable1Size = 86;
static const int32_t kUppercaseTable1[86] = {
258, 263, 1073742091, 269, 1073742096, 274, 277, 1073742105, // NOLINT
285, 292, 294, 296, 1073742122, 301, 1073742128, 307, // NOLINT
1073742142, 319, 325, 387, 1073744896, 3118, 3168, 1073744994, // NOLINT
3172, 3175, 3177, 3179, 1073745005, 3184, 3186, 3189, // NOLINT
1073745022, 3200, 3202, 3204, 3206, 3208, 3210, 3212, // NOLINT
3214, 3216, 3218, 3220, 3222, 3224, 3226, 3228, // NOLINT
3230, 3232, 3234, 3236, 3238, 3240, 3242, 3244, // NOLINT
3246, 3248, 3250, 3252, 3254, 3256, 3258, 3260, // NOLINT
3262, 3264, 3266, 3268, 3270, 3272, 3274, 3276, // NOLINT
3278, 3280, 3282, 3284, 3286, 3288, 3290, 3292, // NOLINT
3294, 3296, 3298, 3307, 3309, 3314 }; // NOLINT
static const uint16_t kUppercaseTable5Size = 101;
static const int32_t kUppercaseTable5[101] = {
1600, 1602, 1604, 1606, 1608, 1610, 1612, 1614, // NOLINT
1616, 1618, 1620, 1622, 1624, 1626, 1628, 1630, // NOLINT
1632, 1634, 1636, 1638, 1640, 1642, 1644, 1664, // NOLINT
1666, 1668, 1670, 1672, 1674, 1676, 1678, 1680, // NOLINT
1682, 1684, 1686, 1688, 1690, 1826, 1828, 1830, // NOLINT
1832, 1834, 1836, 1838, 1842, 1844, 1846, 1848, // NOLINT
1850, 1852, 1854, 1856, 1858, 1860, 1862, 1864, // NOLINT
1866, 1868, 1870, 1872, 1874, 1876, 1878, 1880, // NOLINT
1882, 1884, 1886, 1888, 1890, 1892, 1894, 1896, // NOLINT
1898, 1900, 1902, 1913, 1915, 1073743741, 1918, 1920, // NOLINT
1922, 1924, 1926, 1931, 1933, 1936, 1938, 1942, // NOLINT
1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, // NOLINT
1960, 1073743786, 1965, 1073743792, 1969}; // NOLINT
static const uint16_t kUppercaseTable7Size = 2;
static const int32_t kUppercaseTable7[2] = {
1073749793, 7994 }; // NOLINT
bool Uppercase::Is(uchar c) {
int chunk_index = c >> 13;
switch (chunk_index) {
case 0: return LookupPredicate(kUppercaseTable0,
kUppercaseTable0Size,
c);
case 1: return LookupPredicate(kUppercaseTable1,
kUppercaseTable1Size,
c);
case 5: return LookupPredicate(kUppercaseTable5,
kUppercaseTable5Size,
c);
case 7: return LookupPredicate(kUppercaseTable7,
kUppercaseTable7Size,
c);
default: return false;
}
}
// Lowercase: point.category == 'Ll'
static const uint16_t kLowercaseTable0Size = 467;
static const int32_t kLowercaseTable0[467] = {
1073741921, 122, 181, 1073742047,
246, 1073742072, 255, 257, // NOLINT
259, 261, 263, 265,
267, 269, 271, 273, // NOLINT
275, 277, 279, 281,
283, 285, 287, 289, // NOLINT
291, 293, 295, 297,
299, 301, 303, 305, // NOLINT
307, 309, 1073742135, 312,
314, 316, 318, 320, // NOLINT
322, 324, 326, 1073742152,
329, 331, 333, 335, // NOLINT
337, 339, 341, 343,
345, 347, 349, 351, // NOLINT
353, 355, 357, 359,
361, 363, 365, 367, // NOLINT
369, 371, 373, 375,
378, 380, 1073742206, 384, // NOLINT
387, 389, 392, 1073742220,
397, 402, 405, 1073742233, // NOLINT
411, 414, 417, 419,
421, 424, 1073742250, 427, // NOLINT
429, 432, 436, 438,
1073742265, 442, 1073742269, 447, // NOLINT
454, 457, 460, 462,
464, 466, 468, 470, // NOLINT
472, 474, 1073742300, 477,
479, 481, 483, 485, // NOLINT
487, 489, 491, 493,
1073742319, 496, 499, 501, // NOLINT
505, 507, 509, 511,
513, 515, 517, 519, // NOLINT
521, 523, 525, 527,
529, 531, 533, 535, // NOLINT
537, 539, 541, 543,
545, 547, 549, 551, // NOLINT
553, 555, 557, 559,
561, 1073742387, 569, 572, // NOLINT
1073742399, 576, 578, 583,
585, 587, 589, 1073742415, // NOLINT
659, 1073742485, 687, 881,
883, 887, 1073742715, 893, // NOLINT
912, 1073742764, 974, 1073742800,
977, 1073742805, 983, 985, // NOLINT
987, 989, 991, 993,
995, 997, 999, 1001, // NOLINT
1003, 1005, 1073742831, 1011,
1013, 1016, 1073742843, 1020, // NOLINT
1073742896, 1119, 1121, 1123,
1125, 1127, 1129, 1131, // NOLINT
1133, 1135, 1137, 1139,
1141, 1143, 1145, 1147, // NOLINT
1149, 1151, 1153, 1163,
1165, 1167, 1169, 1171, // NOLINT
1173, 1175, 1177, 1179,
1181, 1183, 1185, 1187, // NOLINT
1189, 1191, 1193, 1195,
1197, 1199, 1201, 1203, // NOLINT
1205, 1207, 1209, 1211,
1213, 1215, 1218, 1220, // NOLINT
1222, 1224, 1226, 1228,
1073743054, 1231, 1233, 1235, // NOLINT
1237, 1239, 1241, 1243,
1245, 1247, 1249, 1251, // NOLINT
1253, 1255, 1257, 1259,
1261, 1263, 1265, 1267, // NOLINT
1269, 1271, 1273, 1275,
1277, 1279, 1281, 1283, // NOLINT
1285, 1287, 1289, 1291,
1293, 1295, 1297, 1299, // NOLINT
1301, 1303, 1305, 1307,
1309, 1311, 1313, 1315, // NOLINT
1317, 1319, 1321, 1323,
1325, 1327, 1073743201, 1415, // NOLINT
1073749248, 7467, 1073749355, 7543,
1073749369, 7578, 7681, 7683, // NOLINT
7685, 7687, 7689, 7691,
7693, 7695, 7697, 7699, // NOLINT
7701, 7703, 7705, 7707,
7709, 7711, 7713, 7715, // NOLINT
7717, 7719, 7721, 7723,
7725, 7727, 7729, 7731, // NOLINT
7733, 7735, 7737, 7739,
7741, 7743, 7745, 7747, // NOLINT
7749, 7751, 7753, 7755,
7757, 7759, 7761, 7763, // NOLINT
7765, 7767, 7769, 7771,
7773, 7775, 7777, 7779, // NOLINT
7781, 7783, 7785, 7787,
7789, 7791, 7793, 7795, // NOLINT
7797, 7799, 7801, 7803,
7805, 7807, 7809, 7811, // NOLINT
7813, 7815, 7817, 7819,
7821, 7823, 7825, 7827, // NOLINT
1073749653, 7837, 7839, 7841,
7843, 7845, 7847, 7849, // NOLINT
7851, 7853, 7855, 7857,
7859, 7861, 7863, 7865, // NOLINT
7867, 7869, 7871, 7873,
7875, 7877, 7879, 7881, // NOLINT
7883, 7885, 7887, 7889,
7891, 7893, 7895, 7897, // NOLINT
7899, 7901, 7903, 7905,
7907, 7909, 7911, 7913, // NOLINT
7915, 7917, 7919, 7921,
7923, 7925, 7927, 7929, // NOLINT
7931, 7933, 1073749759, 7943,
1073749776, 7957, 1073749792, 7975, // NOLINT
1073749808, 7991, 1073749824, 8005,
1073749840, 8023, 1073749856, 8039, // NOLINT
1073749872, 8061, 1073749888, 8071,
1073749904, 8087, 1073749920, 8103, // NOLINT
1073749936, 8116, 1073749942, 8119,
8126, 1073749954, 8132, 1073749958, // NOLINT
8135, 1073749968, 8147, 1073749974,
8151, 1073749984, 8167, 1073750002, // NOLINT
8180, 1073750006, 8183}; // NOLINT
static const uint16_t kLowercaseTable1Size = 84;
static const int32_t kLowercaseTable1[84] = {
266, 1073742094, 271, 275, 303, 308, 313, 1073742140, // NOLINT
317, 1073742150, 329, 334, 388, 1073744944, 3166, 3169, // NOLINT
1073744997, 3174, 3176, 3178, 3180, 3185, 1073745011, 3188, // NOLINT
1073745014, 3195, 3201, 3203, 3205, 3207, 3209, 3211, // NOLINT
3213, 3215, 3217, 3219, 3221, 3223, 3225, 3227, // NOLINT
3229, 3231, 3233, 3235, 3237, 3239, 3241, 3243, // NOLINT
3245, 3247, 3249, 3251, 3253, 3255, 3257, 3259, // NOLINT
3261, 3263, 3265, 3267, 3269, 3271, 3273, 3275, // NOLINT
3277, 3279, 3281, 3283, 3285, 3287, 3289, 3291, // NOLINT
3293, 3295, 3297, 1073745123, 3300, 3308, 3310, 3315, // NOLINT
1073745152, 3365, 3367, 3373 }; // NOLINT
static const uint16_t kLowercaseTable5Size = 105;
static const int32_t kLowercaseTable5[105] = {
1601, 1603, 1605, 1607,
1609, 1611, 1613, 1615, // NOLINT
1617, 1619, 1621, 1623,
1625, 1627, 1629, 1631, // NOLINT
1633, 1635, 1637, 1639,
1641, 1643, 1645, 1665, // NOLINT
1667, 1669, 1671, 1673,
1675, 1677, 1679, 1681, // NOLINT
1683, 1685, 1687, 1689,
1691, 1827, 1829, 1831, // NOLINT
1833, 1835, 1837, 1073743663,
1841, 1843, 1845, 1847, // NOLINT
1849, 1851, 1853, 1855,
1857, 1859, 1861, 1863, // NOLINT
1865, 1867, 1869, 1871,
1873, 1875, 1877, 1879, // NOLINT
1881, 1883, 1885, 1887,
1889, 1891, 1893, 1895, // NOLINT
1897, 1899, 1901, 1903,
1073743729, 1912, 1914, 1916, // NOLINT
1919, 1921, 1923, 1925,
1927, 1932, 1934, 1937, // NOLINT
1073743763, 1941, 1943, 1945,
1947, 1949, 1951, 1953, // NOLINT
1955, 1957, 1959, 1961,
2042, 1073744688, 2906, 1073744740, // NOLINT
2917}; // NOLINT
static const uint16_t kLowercaseTable7Size = 6;
static const int32_t kLowercaseTable7[6] = {
1073748736, 6918, 1073748755, 6935, 1073749825, 8026 }; // NOLINT
bool Lowercase::Is(uchar c) {
int chunk_index = c >> 13;
switch (chunk_index) {
case 0: return LookupPredicate(kLowercaseTable0,
kLowercaseTable0Size,
c);
case 1: return LookupPredicate(kLowercaseTable1,
kLowercaseTable1Size,
c);
case 5: return LookupPredicate(kLowercaseTable5,
kLowercaseTable5Size,
c);
case 7: return LookupPredicate(kLowercaseTable7,
kLowercaseTable7Size,
c);
default: return false;
}
}
// Letter: point.category in ['Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl']
static const uint16_t kLetterTable0Size = 431;
static const int32_t kLetterTable0[431] = {
1073741889, 90, 1073741921, 122,
170, 181, 186, 1073742016, // NOLINT
214, 1073742040, 246, 1073742072,
705, 1073742534, 721, 1073742560, // NOLINT
740, 748, 750, 1073742704,
884, 1073742710, 887, 1073742714, // NOLINT
893, 895, 902, 1073742728,
906, 908, 1073742734, 929, // NOLINT
1073742755, 1013, 1073742839, 1153,
1073742986, 1327, 1073743153, 1366, // NOLINT
1369, 1073743201, 1415, 1073743312,
1514, 1073743344, 1522, 1073743392, // NOLINT
1610, 1073743470, 1647, 1073743473,
1747, 1749, 1073743589, 1766, // NOLINT
1073743598, 1775, 1073743610, 1788,
1791, 1808, 1073743634, 1839, // NOLINT
1073743693, 1957, 1969, 1073743818,
2026, 1073743860, 2037, 2042, // NOLINT
1073743872, 2069, 2074, 2084,
2088, 1073743936, 2136, 1073744032, // NOLINT
2226, 1073744132, 2361, 2365,
2384, 1073744216, 2401, 1073744241, // NOLINT
2432, 1073744261, 2444, 1073744271,
2448, 1073744275, 2472, 1073744298, // NOLINT
2480, 2482, 1073744310, 2489,
2493, 2510, 1073744348, 2525, // NOLINT
1073744351, 2529, 1073744368, 2545,
1073744389, 2570, 1073744399, 2576, // NOLINT
1073744403, 2600, 1073744426, 2608,
1073744434, 2611, 1073744437, 2614, // NOLINT
1073744440, 2617, 1073744473, 2652,
2654, 1073744498, 2676, 1073744517, // NOLINT
2701, 1073744527, 2705, 1073744531,
2728, 1073744554, 2736, 1073744562, // NOLINT
2739, 1073744565, 2745, 2749,
2768, 1073744608, 2785, 1073744645, // NOLINT
2828, 1073744655, 2832, 1073744659,
2856, 1073744682, 2864, 1073744690, // NOLINT
2867, 1073744693, 2873, 2877,
1073744732, 2909, 1073744735, 2913, // NOLINT
2929, 2947, 1073744773, 2954,
1073744782, 2960, 1073744786, 2965, // NOLINT
1073744793, 2970, 2972, 1073744798,
2975, 1073744803, 2980, 1073744808, // NOLINT
2986, 1073744814, 3001, 3024,
1073744901, 3084, 1073744910, 3088, // NOLINT
1073744914, 3112, 1073744938, 3129,
3133, 1073744984, 3161, 1073744992, // NOLINT
3169, 1073745029, 3212, 1073745038,
3216, 1073745042, 3240, 1073745066, // NOLINT
3251, 1073745077, 3257, 3261,
3294, 1073745120, 3297, 1073745137, // NOLINT
3314, 1073745157, 3340, 1073745166,
3344, 1073745170, 3386, 3389, // NOLINT
3406, 1073745248, 3425, 1073745274,
3455, 1073745285, 3478, 1073745306, // NOLINT
3505, 1073745331, 3515, 3517,
1073745344, 3526, 1073745409, 3632, // NOLINT
1073745458, 3635, 1073745472, 3654,
1073745537, 3714, 3716, 1073745543, // NOLINT
3720, 3722, 3725, 1073745556,
3735, 1073745561, 3743, 1073745569, // NOLINT
3747, 3749, 3751, 1073745578,
3755, 1073745581, 3760, 1073745586, // NOLINT
3763, 3773, 1073745600, 3780,
3782, 1073745628, 3807, 3840, // NOLINT
1073745728, 3911, 1073745737, 3948,
1073745800, 3980, 1073745920, 4138, // NOLINT
4159, 1073746000, 4181, 1073746010,
4189, 4193, 1073746021, 4198, // NOLINT
1073746030, 4208, 1073746037, 4225,
4238, 1073746080, 4293, 4295, // NOLINT
4301, 1073746128, 4346, 1073746172,
4680, 1073746506, 4685, 1073746512, // NOLINT
4694, 4696, 1073746522, 4701,
1073746528, 4744, 1073746570, 4749, // NOLINT
1073746576, 4784, 1073746610, 4789,
1073746616, 4798, 4800, 1073746626, // NOLINT
4805, 1073746632, 4822, 1073746648,
4880, 1073746706, 4885, 1073746712, // NOLINT
4954, 1073746816, 5007, 1073746848,
5108, 1073746945, 5740, 1073747567, // NOLINT
5759, 1073747585, 5786, 1073747616,
5866, 1073747694, 5880, 1073747712, // NOLINT
5900, 1073747726, 5905, 1073747744,
5937, 1073747776, 5969, 1073747808, // NOLINT
5996, 1073747822, 6000, 1073747840,
6067, 6103, 6108, 1073748000, // NOLINT
6263, 1073748096, 6312, 6314,
1073748144, 6389, 1073748224, 6430, // NOLINT
1073748304, 6509, 1073748336, 6516,
1073748352, 6571, 1073748417, 6599, // NOLINT
1073748480, 6678, 1073748512, 6740,
6823, 1073748741, 6963, 1073748805, // NOLINT
6987, 1073748867, 7072, 1073748910,
7087, 1073748922, 7141, 1073748992, // NOLINT
7203, 1073749069, 7247, 1073749082,
7293, 1073749225, 7404, 1073749230, // NOLINT
7409, 1073749237, 7414, 1073749248,
7615, 1073749504, 7957, 1073749784, // NOLINT
7965, 1073749792, 8005, 1073749832,
8013, 1073749840, 8023, 8025, // NOLINT
8027, 8029, 1073749855, 8061,
1073749888, 8116, 1073749942, 8124, // NOLINT
8126, 1073749954, 8132, 1073749958,
8140, 1073749968, 8147, 1073749974, // NOLINT
8155, 1073749984, 8172, 1073750002,
8180, 1073750006, 8188}; // NOLINT
static const uint16_t kLetterTable1Size = 87;
static const int32_t kLetterTable1[87] = {
113, 127, 1073741968, 156, 258, 263, 1073742090, 275, // NOLINT
277, 1073742105, 285, 292, 294, 296, 1073742122, 301, // NOLINT
1073742127, 313, 1073742140, 319, 1073742149, 329, 334, 1073742176, // NOLINT
392, 1073744896, 3118, 1073744944, 3166, 1073744992, 3300, 1073745131, // NOLINT
3310, 1073745138, 3315, 1073745152, 3365, 3367, 3373, 1073745200, // NOLINT
3431, 3439, 1073745280, 3478, 1073745312, 3494, 1073745320, 3502, // NOLINT
1073745328, 3510, 1073745336, 3518, 1073745344, 3526, 1073745352, 3534, // NOLINT
1073745360, 3542, 1073745368, 3550, 3631, 1073745925, 4103, 1073745953, // NOLINT
4137, 1073745969, 4149, 1073745976, 4156, 1073745985, 4246, 1073746077, // NOLINT
4255, 1073746081, 4346, 1073746172, 4351, 1073746181, 4397, 1073746225, // NOLINT
4494, 1073746336, 4538, 1073746416, 4607, 1073746944, 8191 }; // NOLINT
static const uint16_t kLetterTable2Size = 4;
static const int32_t kLetterTable2[4] = {
1073741824, 3509, 1073745408, 8191 }; // NOLINT
static const uint16_t kLetterTable3Size = 2;
static const int32_t kLetterTable3[2] = {
1073741824, 8191 }; // NOLINT
static const uint16_t kLetterTable4Size = 2;
static const int32_t kLetterTable4[2] = {
1073741824, 8140 }; // NOLINT
static const uint16_t kLetterTable5Size = 100;
static const int32_t kLetterTable5[100] = {
1073741824, 1164, 1073743056, 1277,
1073743104, 1548, 1073743376, 1567, // NOLINT
1073743402, 1579, 1073743424, 1646,
1073743487, 1693, 1073743520, 1775, // NOLINT
1073743639, 1823, 1073743650, 1928,
1073743755, 1934, 1073743760, 1965, // NOLINT
1073743792, 1969, 1073743863, 2049,
1073743875, 2053, 1073743879, 2058, // NOLINT
1073743884, 2082, 1073743936, 2163,
1073744002, 2227, 1073744114, 2295, // NOLINT
2299, 1073744138, 2341, 1073744176,
2374, 1073744224, 2428, 1073744260, // NOLINT
2482, 2511, 1073744352, 2532,
1073744358, 2543, 1073744378, 2558, // NOLINT
1073744384, 2600, 1073744448, 2626,
1073744452, 2635, 1073744480, 2678, // NOLINT
2682, 1073744510, 2735, 2737,
1073744565, 2742, 1073744569, 2749, // NOLINT
2752, 2754, 1073744603, 2781,
1073744608, 2794, 1073744626, 2804, // NOLINT
1073744641, 2822, 1073744649, 2830,
1073744657, 2838, 1073744672, 2854, // NOLINT
1073744680, 2862, 1073744688, 2906,
1073744732, 2911, 1073744740, 2917, // NOLINT
1073744832, 3042, 1073744896, 8191}; // NOLINT
static const uint16_t kLetterTable6Size = 6;
static const int32_t kLetterTable6[6] = {
1073741824, 6051, 1073747888, 6086, 1073747915, 6139 }; // NOLINT
static const uint16_t kLetterTable7Size = 48;
static const int32_t kLetterTable7[48] = {
1073748224, 6765, 1073748592, 6873, 1073748736, 6918, 1073748755, 6935, // NOLINT
6941, 1073748767, 6952, 1073748778, 6966, 1073748792, 6972, 6974, // NOLINT
1073748800, 6977, 1073748803, 6980, 1073748806, 7089, 1073748947, 7485, // NOLINT
1073749328, 7567, 1073749394, 7623, 1073749488, 7675, 1073749616, 7796, // NOLINT
1073749622, 7932, 1073749793, 7994, 1073749825, 8026, 1073749862, 8126, // NOLINT
1073749954, 8135, 1073749962, 8143, 1073749970, 8151, 1073749978, 8156 }; // NOLINT
bool Letter::Is(uchar c) {
int chunk_index = c >> 13;
switch (chunk_index) {
case 0: return LookupPredicate(kLetterTable0,
kLetterTable0Size,
c);
case 1: return LookupPredicate(kLetterTable1,
kLetterTable1Size,
c);
case 2: return LookupPredicate(kLetterTable2,
kLetterTable2Size,
c);
case 3: return LookupPredicate(kLetterTable3,
kLetterTable3Size,
c);
case 4: return LookupPredicate(kLetterTable4,
kLetterTable4Size,
c);
case 5: return LookupPredicate(kLetterTable5,
kLetterTable5Size,
c);
case 6: return LookupPredicate(kLetterTable6,
kLetterTable6Size,
c);
case 7: return LookupPredicate(kLetterTable7,
kLetterTable7Size,
c);
default: return false;
}
}
// ID_Start: ((point.category in ['Lu', 'Ll', 'Lt', 'Lm', 'Lo',
// 'Nl'] or 'Other_ID_Start' in point.properties) and ('Pattern_Syntax' not in
// point.properties) and ('Pattern_White_Space' not in point.properties)) or
// ('JS_ID_Start' in point.properties)
static const uint16_t kID_StartTable0Size = 434;
static const int32_t kID_StartTable0[434] = {
36, 1073741889, 90, 92,
95, 1073741921, 122, 170, // NOLINT
181, 186, 1073742016, 214,
1073742040, 246, 1073742072, 705, // NOLINT
1073742534, 721, 1073742560, 740,
748, 750, 1073742704, 884, // NOLINT
1073742710, 887, 1073742714, 893,
895, 902, 1073742728, 906, // NOLINT
908, 1073742734, 929, 1073742755,
1013, 1073742839, 1153, 1073742986, // NOLINT
1327, 1073743153, 1366, 1369,
1073743201, 1415, 1073743312, 1514, // NOLINT
1073743344, 1522, 1073743392, 1610,
1073743470, 1647, 1073743473, 1747, // NOLINT
1749, 1073743589, 1766, 1073743598,
1775, 1073743610, 1788, 1791, // NOLINT
1808, 1073743634, 1839, 1073743693,
1957, 1969, 1073743818, 2026, // NOLINT
1073743860, 2037, 2042, 1073743872,
2069, 2074, 2084, 2088, // NOLINT
1073743936, 2136, 1073744032, 2226,
1073744132, 2361, 2365, 2384, // NOLINT
1073744216, 2401, 1073744241, 2432,
1073744261, 2444, 1073744271, 2448, // NOLINT
1073744275, 2472, 1073744298, 2480,
2482, 1073744310, 2489, 2493, // NOLINT
2510, 1073744348, 2525, 1073744351,
2529, 1073744368, 2545, 1073744389, // NOLINT
2570, 1073744399, 2576, 1073744403,
2600, 1073744426, 2608, 1073744434, // NOLINT
2611, 1073744437, 2614, 1073744440,
2617, 1073744473, 2652, 2654, // NOLINT
1073744498, 2676, 1073744517, 2701,
1073744527, 2705, 1073744531, 2728, // NOLINT
1073744554, 2736, 1073744562, 2739,
1073744565, 2745, 2749, 2768, // NOLINT
1073744608, 2785, 1073744645, 2828,
1073744655, 2832, 1073744659, 2856, // NOLINT
1073744682, 2864, 1073744690, 2867,
1073744693, 2873, 2877, 1073744732, // NOLINT
2909, 1073744735, 2913, 2929,
2947, 1073744773, 2954, 1073744782, // NOLINT
2960, 1073744786, 2965, 1073744793,
2970, 2972, 1073744798, 2975, // NOLINT
1073744803, 2980, 1073744808, 2986,
1073744814, 3001, 3024, 1073744901, // NOLINT
3084, 1073744910, 3088, 1073744914,
3112, 1073744938, 3129, 3133, // NOLINT
1073744984, 3161, 1073744992, 3169,
1073745029, 3212, 1073745038, 3216, // NOLINT
1073745042, 3240, 1073745066, 3251,
1073745077, 3257, 3261, 3294, // NOLINT
1073745120, 3297, 1073745137, 3314,
1073745157, 3340, 1073745166, 3344, // NOLINT
1073745170, 3386, 3389, 3406,
1073745248, 3425, 1073745274, 3455, // NOLINT
1073745285, 3478, 1073745306, 3505,
1073745331, 3515, 3517, 1073745344, // NOLINT
3526, 1073745409, 3632, 1073745458,
3635, 1073745472, 3654, 1073745537, // NOLINT
3714, 3716, 1073745543, 3720,
3722, 3725, 1073745556, 3735, // NOLINT
1073745561, 3743, 1073745569, 3747,
3749, 3751, 1073745578, 3755, // NOLINT
1073745581, 3760, 1073745586, 3763,
3773, 1073745600, 3780, 3782, // NOLINT
1073745628, 3807, 3840, 1073745728,
3911, 1073745737, 3948, 1073745800, // NOLINT
3980, 1073745920, 4138, 4159,
1073746000, 4181, 1073746010, 4189, // NOLINT
4193, 1073746021, 4198, 1073746030,
4208, 1073746037, 4225, 4238, // NOLINT
1073746080, 4293, 4295, 4301,
1073746128, 4346, 1073746172, 4680, // NOLINT
1073746506, 4685, 1073746512, 4694,
4696, 1073746522, 4701, 1073746528, // NOLINT
4744, 1073746570, 4749, 1073746576,
4784, 1073746610, 4789, 1073746616, // NOLINT
4798, 4800, 1073746626, 4805,
1073746632, 4822, 1073746648, 4880, // NOLINT
1073746706, 4885, 1073746712, 4954,
1073746816, 5007, 1073746848, 5108, // NOLINT
1073746945, 5740, 1073747567, 5759,
1073747585, 5786, 1073747616, 5866, // NOLINT
1073747694, 5880, 1073747712, 5900,
1073747726, 5905, 1073747744, 5937, // NOLINT
1073747776, 5969, 1073747808, 5996,
1073747822, 6000, 1073747840, 6067, // NOLINT
6103, 6108, 1073748000, 6263,
1073748096, 6312, 6314, 1073748144, // NOLINT
6389, 1073748224, 6430, 1073748304,
6509, 1073748336, 6516, 1073748352, // NOLINT
6571, 1073748417, 6599, 1073748480,
6678, 1073748512, 6740, 6823, // NOLINT
1073748741, 6963, 1073748805, 6987,
1073748867, 7072, 1073748910, 7087, // NOLINT
1073748922, 7141, 1073748992, 7203,
1073749069, 7247, 1073749082, 7293, // NOLINT
1073749225, 7404, 1073749230, 7409,
1073749237, 7414, 1073749248, 7615, // NOLINT
1073749504, 7957, 1073749784, 7965,
1073749792, 8005, 1073749832, 8013, // NOLINT
1073749840, 8023, 8025, 8027,
8029, 1073749855, 8061, 1073749888, // NOLINT
8116, 1073749942, 8124, 8126,
1073749954, 8132, 1073749958, 8140, // NOLINT
1073749968, 8147, 1073749974, 8155,
1073749984, 8172, 1073750002, 8180, // NOLINT
1073750006, 8188}; // NOLINT
static const uint16_t kID_StartTable1Size = 84;
static const int32_t kID_StartTable1[84] = {
113, 127, 1073741968, 156,
258, 263, 1073742090, 275, // NOLINT
277, 1073742104, 285, 292,
294, 296, 1073742122, 313, // NOLINT
1073742140, 319, 1073742149, 329,
334, 1073742176, 392, 1073744896, // NOLINT
3118, 1073744944, 3166, 1073744992,
3300, 1073745131, 3310, 1073745138, // NOLINT
3315, 1073745152, 3365, 3367,
3373, 1073745200, 3431, 3439, // NOLINT
1073745280, 3478, 1073745312, 3494,
1073745320, 3502, 1073745328, 3510, // NOLINT
1073745336, 3518, 1073745344, 3526,
1073745352, 3534, 1073745360, 3542, // NOLINT
1073745368, 3550, 1073745925, 4103,
1073745953, 4137, 1073745969, 4149, // NOLINT
1073745976, 4156, 1073745985, 4246,
1073746075, 4255, 1073746081, 4346, // NOLINT
1073746172, 4351, 1073746181, 4397,
1073746225, 4494, 1073746336, 4538, // NOLINT
1073746416, 4607, 1073746944, 8191}; // NOLINT
static const uint16_t kID_StartTable2Size = 4;
static const int32_t kID_StartTable2[4] = {1073741824, 3509, 1073745408,
8191}; // NOLINT
static const uint16_t kID_StartTable3Size = 2;
static const int32_t kID_StartTable3[2] = {1073741824, 8191}; // NOLINT
static const uint16_t kID_StartTable4Size = 2;
static const int32_t kID_StartTable4[2] = {1073741824, 8140}; // NOLINT
static const uint16_t kID_StartTable5Size = 100;
static const int32_t kID_StartTable5[100] = {
1073741824, 1164, 1073743056, 1277,
1073743104, 1548, 1073743376, 1567, // NOLINT
1073743402, 1579, 1073743424, 1646,
1073743487, 1693, 1073743520, 1775, // NOLINT
1073743639, 1823, 1073743650, 1928,
1073743755, 1934, 1073743760, 1965, // NOLINT
1073743792, 1969, 1073743863, 2049,
1073743875, 2053, 1073743879, 2058, // NOLINT
1073743884, 2082, 1073743936, 2163,
1073744002, 2227, 1073744114, 2295, // NOLINT
2299, 1073744138, 2341, 1073744176,
2374, 1073744224, 2428, 1073744260, // NOLINT
2482, 2511, 1073744352, 2532,
1073744358, 2543, 1073744378, 2558, // NOLINT
1073744384, 2600, 1073744448, 2626,
1073744452, 2635, 1073744480, 2678, // NOLINT
2682, 1073744510, 2735, 2737,
1073744565, 2742, 1073744569, 2749, // NOLINT
2752, 2754, 1073744603, 2781,
1073744608, 2794, 1073744626, 2804, // NOLINT
1073744641, 2822, 1073744649, 2830,
1073744657, 2838, 1073744672, 2854, // NOLINT
1073744680, 2862, 1073744688, 2906,
1073744732, 2911, 1073744740, 2917, // NOLINT
1073744832, 3042, 1073744896, 8191}; // NOLINT
static const uint16_t kID_StartTable6Size = 6;
static const int32_t kID_StartTable6[6] = {1073741824, 6051, 1073747888, 6086,
1073747915, 6139}; // NOLINT
static const uint16_t kID_StartTable7Size = 48;
static const int32_t kID_StartTable7[48] = {
1073748224, 6765, 1073748592, 6873,
1073748736, 6918, 1073748755, 6935, // NOLINT
6941, 1073748767, 6952, 1073748778,
6966, 1073748792, 6972, 6974, // NOLINT
1073748800, 6977, 1073748803, 6980,
1073748806, 7089, 1073748947, 7485, // NOLINT
1073749328, 7567, 1073749394, 7623,
1073749488, 7675, 1073749616, 7796, // NOLINT
1073749622, 7932, 1073749793, 7994,
1073749825, 8026, 1073749862, 8126, // NOLINT
1073749954, 8135, 1073749962, 8143,
1073749970, 8151, 1073749978, 8156}; // NOLINT
bool ID_Start::Is(uchar c) {
int chunk_index = c >> 13;
switch (chunk_index) {
case 0:
return LookupPredicate(kID_StartTable0, kID_StartTable0Size, c);
case 1:
return LookupPredicate(kID_StartTable1, kID_StartTable1Size, c);
case 2:
return LookupPredicate(kID_StartTable2, kID_StartTable2Size, c);
case 3:
return LookupPredicate(kID_StartTable3, kID_StartTable3Size, c);
case 4:
return LookupPredicate(kID_StartTable4, kID_StartTable4Size, c);
case 5:
return LookupPredicate(kID_StartTable5, kID_StartTable5Size, c);
case 6:
return LookupPredicate(kID_StartTable6, kID_StartTable6Size, c);
case 7:
return LookupPredicate(kID_StartTable7, kID_StartTable7Size, c);
default:
return false;
}
}
// ID_Continue: point.category in ['Nd', 'Mn', 'Mc', 'Pc'] or
// 'Other_ID_Continue' in point.properties or 'JS_ID_Continue' in
// point.properties
static const uint16_t kID_ContinueTable0Size = 315;
static const int32_t kID_ContinueTable0[315] = {
1073741872, 57, 95, 183,
1073742592, 879, 903, 1073742979, // NOLINT
1159, 1073743249, 1469, 1471,
1073743297, 1474, 1073743300, 1477, // NOLINT
1479, 1073743376, 1562, 1073743435,
1641, 1648, 1073743574, 1756, // NOLINT
1073743583, 1764, 1073743591, 1768,
1073743594, 1773, 1073743600, 1785, // NOLINT
1809, 1073743664, 1866, 1073743782,
1968, 1073743808, 1993, 1073743851, // NOLINT
2035, 1073743894, 2073, 1073743899,
2083, 1073743909, 2087, 1073743913, // NOLINT
2093, 1073743961, 2139, 1073744100,
2307, 1073744186, 2364, 1073744190, // NOLINT
2383, 1073744209, 2391, 1073744226,
2403, 1073744230, 2415, 1073744257, // NOLINT
2435, 2492, 1073744318, 2500,
1073744327, 2504, 1073744331, 2509, // NOLINT
2519, 1073744354, 2531, 1073744358,
2543, 1073744385, 2563, 2620, // NOLINT
1073744446, 2626, 1073744455, 2632,
1073744459, 2637, 2641, 1073744486, // NOLINT
2673, 2677, 1073744513, 2691,
2748, 1073744574, 2757, 1073744583, // NOLINT
2761, 1073744587, 2765, 1073744610,
2787, 1073744614, 2799, 1073744641, // NOLINT
2819, 2876, 1073744702, 2884,
1073744711, 2888, 1073744715, 2893, // NOLINT
1073744726, 2903, 1073744738, 2915,
1073744742, 2927, 2946, 1073744830, // NOLINT
3010, 1073744838, 3016, 1073744842,
3021, 3031, 1073744870, 3055, // NOLINT
1073744896, 3075, 1073744958, 3140,
1073744966, 3144, 1073744970, 3149, // NOLINT
1073744981, 3158, 1073744994, 3171,
1073744998, 3183, 1073745025, 3203, // NOLINT
3260, 1073745086, 3268, 1073745094,
3272, 1073745098, 3277, 1073745109, // NOLINT
3286, 1073745122, 3299, 1073745126,
3311, 1073745153, 3331, 1073745214, // NOLINT
3396, 1073745222, 3400, 1073745226,
3405, 3415, 1073745250, 3427, // NOLINT
1073745254, 3439, 1073745282, 3459,
3530, 1073745359, 3540, 3542, // NOLINT
1073745368, 3551, 1073745382, 3567,
1073745394, 3571, 3633, 1073745460, // NOLINT
3642, 1073745479, 3662, 1073745488,
3673, 3761, 1073745588, 3769, // NOLINT
1073745595, 3772, 1073745608, 3789,
1073745616, 3801, 1073745688, 3865, // NOLINT
1073745696, 3881, 3893, 3895,
3897, 1073745726, 3903, 1073745777, // NOLINT
3972, 1073745798, 3975, 1073745805,
3991, 1073745817, 4028, 4038, // NOLINT
1073745963, 4158, 1073745984, 4169,
1073746006, 4185, 1073746014, 4192, // NOLINT
1073746018, 4196, 1073746023, 4205,
1073746033, 4212, 1073746050, 4237, // NOLINT
1073746063, 4253, 1073746781, 4959,
1073746793, 4977, 1073747730, 5908, // NOLINT
1073747762, 5940, 1073747794, 5971,
1073747826, 6003, 1073747892, 6099, // NOLINT
6109, 1073747936, 6121, 1073747979,
6157, 1073747984, 6169, 6313, // NOLINT
1073748256, 6443, 1073748272, 6459,
1073748294, 6479, 1073748400, 6592, // NOLINT
1073748424, 6601, 1073748432, 6618,
1073748503, 6683, 1073748565, 6750, // NOLINT
1073748576, 6780, 1073748607, 6793,
1073748624, 6809, 1073748656, 6845, // NOLINT
1073748736, 6916, 1073748788, 6980,
1073748816, 7001, 1073748843, 7027, // NOLINT
1073748864, 7042, 1073748897, 7085,
1073748912, 7097, 1073748966, 7155, // NOLINT
1073749028, 7223, 1073749056, 7241,
1073749072, 7257, 1073749200, 7378, // NOLINT
1073749204, 7400, 7405, 1073749234,
7412, 1073749240, 7417, 1073749440, // NOLINT
7669, 1073749500, 7679}; // NOLINT
static const uint16_t kID_ContinueTable1Size = 19;
static const int32_t kID_ContinueTable1[19] = {
1073741836, 13, 1073741887, 64,
84, 1073742032, 220, 225, // NOLINT
1073742053, 240, 1073745135, 3313,
3455, 1073745376, 3583, 1073745962, // NOLINT
4143, 1073746073, 4250}; // NOLINT
static const uint16_t kID_ContinueTable5Size = 63;
static const int32_t kID_ContinueTable5[63] = {
1073743392, 1577, 1647, 1073743476,
1661, 1695, 1073743600, 1777, // NOLINT
2050, 2054, 2059, 1073743907,
2087, 1073744000, 2177, 1073744052, // NOLINT
2244, 1073744080, 2265, 1073744096,
2289, 1073744128, 2313, 1073744166, // NOLINT
2349, 1073744199, 2387, 1073744256,
2435, 1073744307, 2496, 1073744336, // NOLINT
2521, 2533, 1073744368, 2553,
1073744425, 2614, 2627, 1073744460, // NOLINT
2637, 1073744464, 2649, 1073744507,
2685, 2736, 1073744562, 2740, // NOLINT
1073744567, 2744, 1073744574, 2751,
2753, 1073744619, 2799, 1073744629, // NOLINT
2806, 1073744867, 3050, 1073744876,
3053, 1073744880, 3065}; // NOLINT
static const uint16_t kID_ContinueTable7Size = 12;
static const int32_t kID_ContinueTable7[12] = {
6942, 1073749504, 7695, 1073749536,
7725, 1073749555, 7732, 1073749581, // NOLINT
7759, 1073749776, 7961, 7999}; // NOLINT
bool ID_Continue::Is(uchar c) {
int chunk_index = c >> 13;
switch (chunk_index) {
case 0:
return LookupPredicate(kID_ContinueTable0, kID_ContinueTable0Size, c);
case 1:
return LookupPredicate(kID_ContinueTable1, kID_ContinueTable1Size, c);
case 5:
return LookupPredicate(kID_ContinueTable5, kID_ContinueTable5Size, c);
case 7:
return LookupPredicate(kID_ContinueTable7, kID_ContinueTable7Size, c);
default: return false;
}
}
// WhiteSpace: (point.category == 'Zs') or ('JS_White_Space' in
// point.properties)
static const uint16_t kWhiteSpaceTable0Size = 7;
static const int32_t kWhiteSpaceTable0[7] = {9, 1073741835, 12, 32,
160, 5760, 6158}; // NOLINT
static const uint16_t kWhiteSpaceTable1Size = 5;
static const int32_t kWhiteSpaceTable1[5] = {
1073741824, 10, 47, 95, 4096 }; // NOLINT
static const uint16_t kWhiteSpaceTable7Size = 1;
static const int32_t kWhiteSpaceTable7[1] = {7935}; // NOLINT
bool WhiteSpace::Is(uchar c) {
int chunk_index = c >> 13;
switch (chunk_index) {
case 0: return LookupPredicate(kWhiteSpaceTable0,
kWhiteSpaceTable0Size,
c);
case 1: return LookupPredicate(kWhiteSpaceTable1,
kWhiteSpaceTable1Size,
c);
case 7:
return LookupPredicate(kWhiteSpaceTable7, kWhiteSpaceTable7Size, c);
default: return false;
}
}
// LineTerminator: 'JS_Line_Terminator' in point.properties
static const uint16_t kLineTerminatorTable0Size = 2;
static const int32_t kLineTerminatorTable0[2] = {
10, 13 }; // NOLINT
static const uint16_t kLineTerminatorTable1Size = 2;
static const int32_t kLineTerminatorTable1[2] = {
1073741864, 41 }; // NOLINT
bool LineTerminator::Is(uchar c) {
int chunk_index = c >> 13;
switch (chunk_index) {
case 0: return LookupPredicate(kLineTerminatorTable0,
kLineTerminatorTable0Size,
c);
case 1: return LookupPredicate(kLineTerminatorTable1,
kLineTerminatorTable1Size,
c);
default: return false;
}
}
static const MultiCharacterSpecialCase<2> kToLowercaseMultiStrings0[2] = { // NOLINT
{{105, 775}}, {{kSentinel}} }; // NOLINT
static const uint16_t kToLowercaseTable0Size = 488; // NOLINT
static const int32_t kToLowercaseTable0[976] = {
1073741889, 128, 90, 128, 1073742016, 128,
214, 128, 1073742040, 128, 222, 128,
256, 4, 258, 4, // NOLINT
260, 4, 262, 4, 264, 4,
266, 4, 268, 4, 270, 4,
272, 4, 274, 4, // NOLINT
276, 4, 278, 4, 280, 4,
282, 4, 284, 4, 286, 4,
288, 4, 290, 4, // NOLINT
292, 4, 294, 4, 296, 4,
298, 4, 300, 4, 302, 4,
304, 1, 306, 4, // NOLINT
308, 4, 310, 4, 313, 4,
315, 4, 317, 4, 319, 4,
321, 4, 323, 4, // NOLINT
325, 4, 327, 4, 330, 4,
332, 4, 334, 4, 336, 4,
338, 4, 340, 4, // NOLINT
342, 4, 344, 4, 346, 4,
348, 4, 350, 4, 352, 4,
354, 4, 356, 4, // NOLINT
358, 4, 360, 4, 362, 4,
364, 4, 366, 4, 368, 4,
370, 4, 372, 4, // NOLINT
374, 4, 376, -484, 377, 4,
379, 4, 381, 4, 385, 840,
386, 4, 388, 4, // NOLINT
390, 824, 391, 4, 1073742217, 820,
394, 820, 395, 4, 398, 316,
399, 808, 400, 812, // NOLINT
401, 4, 403, 820, 404, 828,
406, 844, 407, 836, 408, 4,
412, 844, 413, 852, // NOLINT
415, 856, 416, 4, 418, 4,
420, 4, 422, 872, 423, 4,
425, 872, 428, 4, // NOLINT
430, 872, 431, 4, 1073742257, 868,
434, 868, 435, 4, 437, 4,
439, 876, 440, 4, // NOLINT
444, 4, 452, 8, 453, 4,
455, 8, 456, 4, 458, 8,
459, 4, 461, 4, // NOLINT
463, 4, 465, 4, 467, 4,
469, 4, 471, 4, 473, 4,
475, 4, 478, 4, // NOLINT
480, 4, 482, 4, 484, 4,
486, 4, 488, 4, 490, 4,
492, 4, 494, 4, // NOLINT
497, 8, 498, 4, 500, 4,
502, -388, 503, -224, 504, 4,
506, 4, 508, 4, // NOLINT
510, 4, 512, 4, 514, 4,
516, 4, 518, 4, 520, 4,
522, 4, 524, 4, // NOLINT
526, 4, 528, 4, 530, 4,
532, 4, 534, 4, 536, 4,
538, 4, 540, 4, // NOLINT
542, 4, 544, -520, 546, 4,
548, 4, 550, 4, 552, 4,
554, 4, 556, 4, // NOLINT
558, 4, 560, 4, 562, 4,
570, 43180, 571, 4, 573, -652,
574, 43168, 577, 4, // NOLINT
579, -780, 580, 276, 581, 284,
582, 4, 584, 4, 586, 4,
588, 4, 590, 4, // NOLINT
880, 4, 882, 4, 886, 4,
895, 464, 902, 152, 1073742728, 148,
906, 148, 908, 256, // NOLINT
1073742734, 252, 911, 252, 1073742737, 128,
929, 128, 931, 6, 1073742756, 128,
939, 128, 975, 32, // NOLINT
984, 4, 986, 4, 988, 4,
990, 4, 992, 4, 994, 4,
996, 4, 998, 4, // NOLINT
1000, 4, 1002, 4, 1004, 4,
1006, 4, 1012, -240, 1015, 4,
1017, -28, 1018, 4, // NOLINT
1073742845, -520, 1023, -520, 1073742848, 320,
1039, 320, 1073742864, 128, 1071, 128,
1120, 4, 1122, 4, // NOLINT
1124, 4, 1126, 4, 1128, 4,
1130, 4, 1132, 4, 1134, 4,
1136, 4, 1138, 4, // NOLINT
1140, 4, 1142, 4, 1144, 4,
1146, 4, 1148, 4, 1150, 4,
1152, 4, 1162, 4, // NOLINT
1164, 4, 1166, 4, 1168, 4,
1170, 4, 1172, 4, 1174, 4,
1176, 4, 1178, 4, // NOLINT
1180, 4, 1182, 4, 1184, 4,
1186, 4, 1188, 4, 1190, 4,
1192, 4, 1194, 4, // NOLINT
1196, 4, 1198, 4, 1200, 4,
1202, 4, 1204, 4, 1206, 4,
1208, 4, 1210, 4, // NOLINT
1212, 4, 1214, 4, 1216, 60,
1217, 4, 1219, 4, 1221, 4,
1223, 4, 1225, 4, // NOLINT
1227, 4, 1229, 4, 1232, 4,
1234, 4, 1236, 4, 1238, 4,
1240, 4, 1242, 4, // NOLINT
1244, 4, 1246, 4, 1248, 4,
1250, 4, 1252, 4, 1254, 4,
1256, 4, 1258, 4, // NOLINT
1260, 4, 1262, 4, 1264, 4,
1266, 4, 1268, 4, 1270, 4,
1272, 4, 1274, 4, // NOLINT
1276, 4, 1278, 4, 1280, 4,
1282, 4, 1284, 4, 1286, 4,
1288, 4, 1290, 4, // NOLINT
1292, 4, 1294, 4, 1296, 4,
1298, 4, 1300, 4, 1302, 4,
1304, 4, 1306, 4, // NOLINT
1308, 4, 1310, 4, 1312, 4,
1314, 4, 1316, 4, 1318, 4,
1320, 4, 1322, 4, // NOLINT
1324, 4, 1326, 4, 1073743153, 192,
1366, 192, 1073746080, 29056, 4293, 29056,
4295, 29056, 4301, 29056, // NOLINT
7680, 4, 7682, 4, 7684, 4,
7686, 4, 7688, 4, 7690, 4,
7692, 4, 7694, 4, // NOLINT
7696, 4, 7698, 4, 7700, 4,
7702, 4, 7704, 4, 7706, 4,
7708, 4, 7710, 4, // NOLINT
7712, 4, 7714, 4, 7716, 4,
7718, 4, 7720, 4, 7722, 4,
7724, 4, 7726, 4, // NOLINT
7728, 4, 7730, 4, 7732, 4,
7734, 4, 7736, 4, 7738, 4,
7740, 4, 7742, 4, // NOLINT
7744, 4, 7746, 4, 7748, 4,
7750, 4, 7752, 4, 7754, 4,
7756, 4, 7758, 4, // NOLINT
7760, 4, 7762, 4, 7764, 4,
7766, 4, 7768, 4, 7770, 4,
7772, 4, 7774, 4, // NOLINT
7776, 4, 7778, 4, 7780, 4,
7782, 4, 7784, 4, 7786, 4,
7788, 4, 7790, 4, // NOLINT
7792, 4, 7794, 4, 7796, 4,
7798, 4, 7800, 4, 7802, 4,
7804, 4, 7806, 4, // NOLINT
7808, 4, 7810, 4, 7812, 4,
7814, 4, 7816, 4, 7818, 4,
7820, 4, 7822, 4, // NOLINT
7824, 4, 7826, 4, 7828, 4,
7838, -30460, 7840, 4, 7842, 4,
7844, 4, 7846, 4, // NOLINT
7848, 4, 7850, 4, 7852, 4,
7854, 4, 7856, 4, 7858, 4,
7860, 4, 7862, 4, // NOLINT
7864, 4, 7866, 4, 7868, 4,
7870, 4, 7872, 4, 7874, 4,
7876, 4, 7878, 4, // NOLINT
7880, 4, 7882, 4, 7884, 4,
7886, 4, 7888, 4, 7890, 4,
7892, 4, 7894, 4, // NOLINT
7896, 4, 7898, 4, 7900, 4,
7902, 4, 7904, 4, 7906, 4,
7908, 4, 7910, 4, // NOLINT
7912, 4, 7914, 4, 7916, 4,
7918, 4, 7920, 4, 7922, 4,
7924, 4, 7926, 4, // NOLINT
7928, 4, 7930, 4, 7932, 4,
7934, 4, 1073749768, -32, 7951, -32,
1073749784, -32, 7965, -32, // NOLINT
1073749800, -32, 7983, -32, 1073749816, -32,
7999, -32, 1073749832, -32, 8013, -32,
8025, -32, 8027, -32, // NOLINT
8029, -32, 8031, -32, 1073749864, -32,
8047, -32, 1073749896, -32, 8079, -32,
1073749912, -32, 8095, -32, // NOLINT
1073749928, -32, 8111, -32, 1073749944, -32,
8121, -32, 1073749946, -296, 8123, -296,
8124, -36, 1073749960, -344, // NOLINT
8139, -344, 8140, -36, 1073749976, -32,
8153, -32, 1073749978, -400, 8155, -400,
1073749992, -32, 8169, -32, // NOLINT
1073749994, -448, 8171, -448, 8172, -28,
1073750008, -512, 8185, -512, 1073750010, -504,
8187, -504, 8188, -36}; // NOLINT
static const uint16_t kToLowercaseMultiStrings0Size = 2; // NOLINT
static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings1[1] = { // NOLINT
{{kSentinel}} }; // NOLINT
static const uint16_t kToLowercaseTable1Size = 79; // NOLINT
static const int32_t kToLowercaseTable1[158] = {
294, -30068, 298, -33532, 299, -33048, 306, 112, 1073742176, 64, 367, 64, 387, 4, 1073743030, 104, // NOLINT
1231, 104, 1073744896, 192, 3118, 192, 3168, 4, 3170, -42972, 3171, -15256, 3172, -42908, 3175, 4, // NOLINT
3177, 4, 3179, 4, 3181, -43120, 3182, -42996, 3183, -43132, 3184, -43128, 3186, 4, 3189, 4, // NOLINT
1073745022, -43260, 3199, -43260, 3200, 4, 3202, 4, 3204, 4, 3206, 4, 3208, 4, 3210, 4, // NOLINT
3212, 4, 3214, 4, 3216, 4, 3218, 4, 3220, 4, 3222, 4, 3224, 4, 3226, 4, // NOLINT
3228, 4, 3230, 4, 3232, 4, 3234, 4, 3236, 4, 3238, 4, 3240, 4, 3242, 4, // NOLINT
3244, 4, 3246, 4, 3248, 4, 3250, 4, 3252, 4, 3254, 4, 3256, 4, 3258, 4, // NOLINT
3260, 4, 3262, 4, 3264, 4, 3266, 4, 3268, 4, 3270, 4, 3272, 4, 3274, 4, // NOLINT
3276, 4, 3278, 4, 3280, 4, 3282, 4, 3284, 4, 3286, 4, 3288, 4, 3290, 4, // NOLINT
3292, 4, 3294, 4, 3296, 4, 3298, 4, 3307, 4, 3309, 4, 3314, 4 }; // NOLINT
static const uint16_t kToLowercaseMultiStrings1Size = 1; // NOLINT
static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings5[1] = { // NOLINT
{{kSentinel}} }; // NOLINT
static const uint16_t kToLowercaseTable5Size = 103; // NOLINT
static const int32_t kToLowercaseTable5[206] = {
1600, 4, 1602, 4, 1604, 4, 1606, 4,
1608, 4, 1610, 4, 1612, 4, 1614, 4, // NOLINT
1616, 4, 1618, 4, 1620, 4, 1622, 4,
1624, 4, 1626, 4, 1628, 4, 1630, 4, // NOLINT
1632, 4, 1634, 4, 1636, 4, 1638, 4,
1640, 4, 1642, 4, 1644, 4, 1664, 4, // NOLINT
1666, 4, 1668, 4, 1670, 4, 1672, 4,
1674, 4, 1676, 4, 1678, 4, 1680, 4, // NOLINT
1682, 4, 1684, 4, 1686, 4, 1688, 4,
1690, 4, 1826, 4, 1828, 4, 1830, 4, // NOLINT
1832, 4, 1834, 4, 1836, 4, 1838, 4,
1842, 4, 1844, 4, 1846, 4, 1848, 4, // NOLINT
1850, 4, 1852, 4, 1854, 4, 1856, 4,
1858, 4, 1860, 4, 1862, 4, 1864, 4, // NOLINT
1866, 4, 1868, 4, 1870, 4, 1872, 4,
1874, 4, 1876, 4, 1878, 4, 1880, 4, // NOLINT
1882, 4, 1884, 4, 1886, 4, 1888, 4,
1890, 4, 1892, 4, 1894, 4, 1896, 4, // NOLINT
1898, 4, 1900, 4, 1902, 4, 1913, 4,
1915, 4, 1917, -141328, 1918, 4, 1920, 4, // NOLINT
1922, 4, 1924, 4, 1926, 4, 1931, 4,
1933, -169120, 1936, 4, 1938, 4, 1942, 4, // NOLINT
1944, 4, 1946, 4, 1948, 4, 1950, 4,
1952, 4, 1954, 4, 1956, 4, 1958, 4, // NOLINT
1960, 4, 1962, -169232, 1963, -169276, 1964, -169260,
1965, -169220, 1968, -169032, 1969, -169128}; // NOLINT
static const uint16_t kToLowercaseMultiStrings5Size = 1; // NOLINT
static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings7[1] = { // NOLINT
{{kSentinel}} }; // NOLINT
static const uint16_t kToLowercaseTable7Size = 2; // NOLINT
static const int32_t kToLowercaseTable7[4] = {
1073749793, 128, 7994, 128 }; // NOLINT
static const uint16_t kToLowercaseMultiStrings7Size = 1; // NOLINT
int ToLowercase::Convert(uchar c,
uchar n,
uchar* result,
bool* allow_caching_ptr) {
int chunk_index = c >> 13;
switch (chunk_index) {
case 0: return LookupMapping<true>(kToLowercaseTable0,
kToLowercaseTable0Size,
kToLowercaseMultiStrings0,
c,
n,
result,
allow_caching_ptr);
case 1: return LookupMapping<true>(kToLowercaseTable1,
kToLowercaseTable1Size,
kToLowercaseMultiStrings1,
c,
n,
result,
allow_caching_ptr);
case 5: return LookupMapping<true>(kToLowercaseTable5,
kToLowercaseTable5Size,
kToLowercaseMultiStrings5,
c,
n,
result,
allow_caching_ptr);
case 7: return LookupMapping<true>(kToLowercaseTable7,
kToLowercaseTable7Size,
kToLowercaseMultiStrings7,
c,
n,
result,
allow_caching_ptr);
default: return 0;
}
}
static const MultiCharacterSpecialCase<3> kToUppercaseMultiStrings0[62] = { // NOLINT
{{83, 83, kSentinel}}, {{700, 78, kSentinel}}, {{74, 780, kSentinel}}, {{921, 776, 769}}, // NOLINT
{{933, 776, 769}}, {{1333, 1362, kSentinel}}, {{72, 817, kSentinel}}, {{84, 776, kSentinel}}, // NOLINT
{{87, 778, kSentinel}}, {{89, 778, kSentinel}}, {{65, 702, kSentinel}}, {{933, 787, kSentinel}}, // NOLINT
{{933, 787, 768}}, {{933, 787, 769}}, {{933, 787, 834}}, {{7944, 921, kSentinel}}, // NOLINT
{{7945, 921, kSentinel}}, {{7946, 921, kSentinel}}, {{7947, 921, kSentinel}}, {{7948, 921, kSentinel}}, // NOLINT
{{7949, 921, kSentinel}}, {{7950, 921, kSentinel}}, {{7951, 921, kSentinel}}, {{7976, 921, kSentinel}}, // NOLINT
{{7977, 921, kSentinel}}, {{7978, 921, kSentinel}}, {{7979, 921, kSentinel}}, {{7980, 921, kSentinel}}, // NOLINT
{{7981, 921, kSentinel}}, {{7982, 921, kSentinel}}, {{7983, 921, kSentinel}}, {{8040, 921, kSentinel}}, // NOLINT
{{8041, 921, kSentinel}}, {{8042, 921, kSentinel}}, {{8043, 921, kSentinel}}, {{8044, 921, kSentinel}}, // NOLINT
{{8045, 921, kSentinel}}, {{8046, 921, kSentinel}}, {{8047, 921, kSentinel}}, {{8122, 921, kSentinel}}, // NOLINT
{{913, 921, kSentinel}}, {{902, 921, kSentinel}}, {{913, 834, kSentinel}}, {{913, 834, 921}}, // NOLINT
{{8138, 921, kSentinel}}, {{919, 921, kSentinel}}, {{905, 921, kSentinel}}, {{919, 834, kSentinel}}, // NOLINT
{{919, 834, 921}}, {{921, 776, 768}}, {{921, 834, kSentinel}}, {{921, 776, 834}}, // NOLINT
{{933, 776, 768}}, {{929, 787, kSentinel}}, {{933, 834, kSentinel}}, {{933, 776, 834}}, // NOLINT
{{8186, 921, kSentinel}}, {{937, 921, kSentinel}}, {{911, 921, kSentinel}}, {{937, 834, kSentinel}}, // NOLINT
{{937, 834, 921}}, {{kSentinel}} }; // NOLINT
static const uint16_t kToUppercaseTable0Size = 590; // NOLINT
static const int32_t kToUppercaseTable0[1180] = {
1073741921, -128, 122, -128, 181, 2972,
223, 1, 1073742048, -128, 246, -128,
1073742072, -128, 254, -128, // NOLINT
255, 484, 257, -4, 259, -4,
261, -4, 263, -4, 265, -4,
267, -4, 269, -4, // NOLINT
271, -4, 273, -4, 275, -4,
277, -4, 279, -4, 281, -4,
283, -4, 285, -4, // NOLINT
287, -4, 289, -4, 291, -4,
293, -4, 295, -4, 297, -4,
299, -4, 301, -4, // NOLINT
303, -4, 305, -928, 307, -4,
309, -4, 311, -4, 314, -4,
316, -4, 318, -4, // NOLINT
320, -4, 322, -4, 324, -4,
326, -4, 328, -4, 329, 5,
331, -4, 333, -4, // NOLINT
335, -4, 337, -4, 339, -4,
341, -4, 343, -4, 345, -4,
347, -4, 349, -4, // NOLINT
351, -4, 353, -4, 355, -4,
357, -4, 359, -4, 361, -4,
363, -4, 365, -4, // NOLINT
367, -4, 369, -4, 371, -4,
373, -4, 375, -4, 378, -4,
380, -4, 382, -4, // NOLINT
383, -1200, 384, 780, 387, -4,
389, -4, 392, -4, 396, -4,
402, -4, 405, 388, // NOLINT
409, -4, 410, 652, 414, 520,
417, -4, 419, -4, 421, -4,
424, -4, 429, -4, // NOLINT
432, -4, 436, -4, 438, -4,
441, -4, 445, -4, 447, 224,
453, -4, 454, -8, // NOLINT
456, -4, 457, -8, 459, -4,
460, -8, 462, -4, 464, -4,
466, -4, 468, -4, // NOLINT
470, -4, 472, -4, 474, -4,
476, -4, 477, -316, 479, -4,
481, -4, 483, -4, // NOLINT
485, -4, 487, -4, 489, -4,
491, -4, 493, -4, 495, -4,
496, 9, 498, -4, // NOLINT
499, -8, 501, -4, 505, -4,
507, -4, 509, -4, 511, -4,
513, -4, 515, -4, // NOLINT
517, -4, 519, -4, 521, -4,
523, -4, 525, -4, 527, -4,
529, -4, 531, -4, // NOLINT
533, -4, 535, -4, 537, -4,
539, -4, 541, -4, 543, -4,
547, -4, 549, -4, // NOLINT
551, -4, 553, -4, 555, -4,
557, -4, 559, -4, 561, -4,
563, -4, 572, -4, // NOLINT
1073742399, 43260, 576, 43260, 578, -4,
583, -4, 585, -4, 587, -4,
589, -4, 591, -4, // NOLINT
592, 43132, 593, 43120, 594, 43128,
595, -840, 596, -824, 1073742422, -820,
599, -820, 601, -808, // NOLINT
603, -812, 604, 169276, 608, -820,
609, 169260, 611, -828, 613, 169120,
614, 169232, 616, -836, // NOLINT
617, -844, 619, 42972, 620, 169220,
623, -844, 625, 42996, 626, -852,
629, -856, 637, 42908, // NOLINT
640, -872, 643, -872, 647, 169128,
648, -872, 649, -276, 1073742474, -868,
651, -868, 652, -284, // NOLINT
658, -876, 670, 169032, 837, 336,
881, -4, 883, -4, 887, -4,
1073742715, 520, 893, 520, // NOLINT
912, 13, 940, -152, 1073742765, -148,
943, -148, 944, 17, 1073742769, -128,
961, -128, 962, -124, // NOLINT
1073742787, -128, 971, -128, 972, -256,
1073742797, -252, 974, -252, 976, -248,
977, -228, 981, -188, // NOLINT
982, -216, 983, -32, 985, -4,
987, -4, 989, -4, 991, -4,
993, -4, 995, -4, // NOLINT
997, -4, 999, -4, 1001, -4,
1003, -4, 1005, -4, 1007, -4,
1008, -344, 1009, -320, // NOLINT
1010, 28, 1011, -464, 1013, -384,
1016, -4, 1019, -4, 1073742896, -128,
1103, -128, 1073742928, -320, // NOLINT
1119, -320, 1121, -4, 1123, -4,
1125, -4, 1127, -4, 1129, -4,
1131, -4, 1133, -4, // NOLINT
1135, -4, 1137, -4, 1139, -4,
1141, -4, 1143, -4, 1145, -4,
1147, -4, 1149, -4, // NOLINT
1151, -4, 1153, -4, 1163, -4,
1165, -4, 1167, -4, 1169, -4,
1171, -4, 1173, -4, // NOLINT
1175, -4, 1177, -4, 1179, -4,
1181, -4, 1183, -4, 1185, -4,
1187, -4, 1189, -4, // NOLINT
1191, -4, 1193, -4, 1195, -4,
1197, -4, 1199, -4, 1201, -4,
1203, -4, 1205, -4, // NOLINT
1207, -4, 1209, -4, 1211, -4,
1213, -4, 1215, -4, 1218, -4,
1220, -4, 1222, -4, // NOLINT
1224, -4, 1226, -4, 1228, -4,
1230, -4, 1231, -60, 1233, -4,
1235, -4, 1237, -4, // NOLINT
1239, -4, 1241, -4, 1243, -4,
1245, -4, 1247, -4, 1249, -4,
1251, -4, 1253, -4, // NOLINT
1255, -4, 1257, -4, 1259, -4,
1261, -4, 1263, -4, 1265, -4,
1267, -4, 1269, -4, // NOLINT
1271, -4, 1273, -4, 1275, -4,
1277, -4, 1279, -4, 1281, -4,
1283, -4, 1285, -4, // NOLINT
1287, -4, 1289, -4, 1291, -4,
1293, -4, 1295, -4, 1297, -4,
1299, -4, 1301, -4, // NOLINT
1303, -4, 1305, -4, 1307, -4,
1309, -4, 1311, -4, 1313, -4,
1315, -4, 1317, -4, // NOLINT
1319, -4, 1321, -4, 1323, -4,
1325, -4, 1327, -4, 1073743201, -192,
1414, -192, 1415, 21, // NOLINT
7545, 141328, 7549, 15256, 7681, -4,
7683, -4, 7685, -4, 7687, -4,
7689, -4, 7691, -4, // NOLINT
7693, -4, 7695, -4, 7697, -4,
7699, -4, 7701, -4, 7703, -4,
7705, -4, 7707, -4, // NOLINT
7709, -4, 7711, -4, 7713, -4,
7715, -4, 7717, -4, 7719, -4,
7721, -4, 7723, -4, // NOLINT
7725, -4, 7727, -4, 7729, -4,
7731, -4, 7733, -4, 7735, -4,
7737, -4, 7739, -4, // NOLINT
7741, -4, 7743, -4, 7745, -4,
7747, -4, 7749, -4, 7751, -4,
7753, -4, 7755, -4, // NOLINT
7757, -4, 7759, -4, 7761, -4,
7763, -4, 7765, -4, 7767, -4,
7769, -4, 7771, -4, // NOLINT
7773, -4, 7775, -4, 7777, -4,
7779, -4, 7781, -4, 7783, -4,
7785, -4, 7787, -4, // NOLINT
7789, -4, 7791, -4, 7793, -4,
7795, -4, 7797, -4, 7799, -4,
7801, -4, 7803, -4, // NOLINT
7805, -4, 7807, -4, 7809, -4,
7811, -4, 7813, -4, 7815, -4,
7817, -4, 7819, -4, // NOLINT
7821, -4, 7823, -4, 7825, -4,
7827, -4, 7829, -4, 7830, 25,
7831, 29, 7832, 33, // NOLINT
7833, 37, 7834, 41, 7835, -236,
7841, -4, 7843, -4, 7845, -4,
7847, -4, 7849, -4, // NOLINT
7851, -4, 7853, -4, 7855, -4,
7857, -4, 7859, -4, 7861, -4,
7863, -4, 7865, -4, // NOLINT
7867, -4, 7869, -4, 7871, -4,
7873, -4, 7875, -4, 7877, -4,
7879, -4, 7881, -4, // NOLINT
7883, -4, 7885, -4, 7887, -4,
7889, -4, 7891, -4, 7893, -4,
7895, -4, 7897, -4, // NOLINT
7899, -4, 7901, -4, 7903, -4,
7905, -4, 7907, -4, 7909, -4,
7911, -4, 7913, -4, // NOLINT
7915, -4, 7917, -4, 7919, -4,
7921, -4, 7923, -4, 7925, -4,
7927, -4, 7929, -4, // NOLINT
7931, -4, 7933, -4, 7935, -4,
1073749760, 32, 7943, 32, 1073749776, 32,
7957, 32, 1073749792, 32, // NOLINT
7975, 32, 1073749808, 32, 7991, 32,
1073749824, 32, 8005, 32, 8016, 45,
8017, 32, 8018, 49, // NOLINT
8019, 32, 8020, 53, 8021, 32,
8022, 57, 8023, 32, 1073749856, 32,
8039, 32, 1073749872, 296, // NOLINT
8049, 296, 1073749874, 344, 8053, 344,
1073749878, 400, 8055, 400, 1073749880, 512,
8057, 512, 1073749882, 448, // NOLINT
8059, 448, 1073749884, 504, 8061, 504,
8064, 61, 8065, 65, 8066, 69,
8067, 73, 8068, 77, // NOLINT
8069, 81, 8070, 85, 8071, 89,
8072, 61, 8073, 65, 8074, 69,
8075, 73, 8076, 77, // NOLINT
8077, 81, 8078, 85, 8079, 89,
8080, 93, 8081, 97, 8082, 101,
8083, 105, 8084, 109, // NOLINT
8085, 113, 8086, 117, 8087, 121,
8088, 93, 8089, 97, 8090, 101,
8091, 105, 8092, 109, // NOLINT
8093, 113, 8094, 117, 8095, 121,
8096, 125, 8097, 129, 8098, 133,
8099, 137, 8100, 141, // NOLINT
8101, 145, 8102, 149, 8103, 153,
8104, 125, 8105, 129, 8106, 133,
8107, 137, 8108, 141, // NOLINT
8109, 145, 8110, 149, 8111, 153,
1073749936, 32, 8113, 32, 8114, 157,
8115, 161, 8116, 165, // NOLINT
8118, 169, 8119, 173, 8124, 161,
8126, -28820, 8130, 177, 8131, 181,
8132, 185, 8134, 189, // NOLINT
8135, 193, 8140, 181, 1073749968, 32,
8145, 32, 8146, 197, 8147, 13,
8150, 201, 8151, 205, // NOLINT
1073749984, 32, 8161, 32, 8162, 209,
8163, 17, 8164, 213, 8165, 28,
8166, 217, 8167, 221, // NOLINT
8178, 225, 8179, 229, 8180, 233,
8182, 237, 8183, 241, 8188, 229}; // NOLINT
static const uint16_t kToUppercaseMultiStrings0Size = 62; // NOLINT
static const MultiCharacterSpecialCase<1> kToUppercaseMultiStrings1[1] = { // NOLINT
{{kSentinel}} }; // NOLINT
static const uint16_t kToUppercaseTable1Size = 73; // NOLINT
static const int32_t kToUppercaseTable1[146] = {
334, -112, 1073742192, -64, 383, -64, 388, -4, 1073743056, -104, 1257, -104, 1073744944, -192, 3166, -192, // NOLINT
3169, -4, 3173, -43180, 3174, -43168, 3176, -4, 3178, -4, 3180, -4, 3187, -4, 3190, -4, // NOLINT
3201, -4, 3203, -4, 3205, -4, 3207, -4, 3209, -4, 3211, -4, 3213, -4, 3215, -4, // NOLINT
3217, -4, 3219, -4, 3221, -4, 3223, -4, 3225, -4, 3227, -4, 3229, -4, 3231, -4, // NOLINT
3233, -4, 3235, -4, 3237, -4, 3239, -4, 3241, -4, 3243, -4, 3245, -4, 3247, -4, // NOLINT
3249, -4, 3251, -4, 3253, -4, 3255, -4, 3257, -4, 3259, -4, 3261, -4, 3263, -4, // NOLINT
3265, -4, 3267, -4, 3269, -4, 3271, -4, 3273, -4, 3275, -4, 3277, -4, 3279, -4, // NOLINT
3281, -4, 3283, -4, 3285, -4, 3287, -4, 3289, -4, 3291, -4, 3293, -4, 3295, -4, // NOLINT
3297, -4, 3299, -4, 3308, -4, 3310, -4, 3315, -4, 1073745152, -29056, 3365, -29056, 3367, -29056, // NOLINT
3373, -29056 }; // NOLINT
static const uint16_t kToUppercaseMultiStrings1Size = 1; // NOLINT
static const MultiCharacterSpecialCase<1> kToUppercaseMultiStrings5[1] = { // NOLINT
{{kSentinel}} }; // NOLINT
static const uint16_t kToUppercaseTable5Size = 95; // NOLINT
static const int32_t
kToUppercaseTable5[190] = {1601, -4, 1603, -4, 1605, -4, 1607, -4, 1609, -4,
1611, -4, 1613, -4, 1615, -4, // NOLINT
1617, -4, 1619, -4, 1621, -4, 1623, -4, 1625, -4,
1627, -4, 1629, -4, 1631, -4, // NOLINT
1633, -4, 1635, -4, 1637, -4, 1639, -4, 1641, -4,
1643, -4, 1645, -4, 1665, -4, // NOLINT
1667, -4, 1669, -4, 1671, -4, 1673, -4, 1675, -4,
1677, -4, 1679, -4, 1681, -4, // NOLINT
1683, -4, 1685, -4, 1687, -4, 1689, -4, 1691, -4,
1827, -4, 1829, -4, 1831, -4, // NOLINT
1833, -4, 1835, -4, 1837, -4, 1839, -4, 1843, -4,
1845, -4, 1847, -4, 1849, -4, // NOLINT
1851, -4, 1853, -4, 1855, -4, 1857, -4, 1859, -4,
1861, -4, 1863, -4, 1865, -4, // NOLINT
1867, -4, 1869, -4, 1871, -4, 1873, -4, 1875, -4,
1877, -4, 1879, -4, 1881, -4, // NOLINT
1883, -4, 1885, -4, 1887, -4, 1889, -4, 1891, -4,
1893, -4, 1895, -4, 1897, -4, // NOLINT
1899, -4, 1901, -4, 1903, -4, 1914, -4, 1916, -4,
1919, -4, 1921, -4, 1923, -4, // NOLINT
1925, -4, 1927, -4, 1932, -4, 1937, -4, 1939, -4,
1943, -4, 1945, -4, 1947, -4, // NOLINT
1949, -4, 1951, -4, 1953, -4, 1955, -4, 1957, -4,
1959, -4, 1961, -4}; // NOLINT
static const uint16_t kToUppercaseMultiStrings5Size = 1; // NOLINT
static const MultiCharacterSpecialCase<3> kToUppercaseMultiStrings7[12] = { // NOLINT
{{70, 70, kSentinel}}, {{70, 73, kSentinel}}, {{70, 76, kSentinel}}, {{70, 70, 73}}, // NOLINT
{{70, 70, 76}}, {{83, 84, kSentinel}}, {{1348, 1350, kSentinel}}, {{1348, 1333, kSentinel}}, // NOLINT
{{1348, 1339, kSentinel}}, {{1358, 1350, kSentinel}}, {{1348, 1341, kSentinel}}, {{kSentinel}} }; // NOLINT
static const uint16_t kToUppercaseTable7Size = 14; // NOLINT
static const int32_t kToUppercaseTable7[28] = {
6912, 1, 6913, 5, 6914, 9, 6915, 13, 6916, 17, 6917, 21, 6918, 21, 6931, 25, // NOLINT
6932, 29, 6933, 33, 6934, 37, 6935, 41, 1073749825, -128, 8026, -128 }; // NOLINT
static const uint16_t kToUppercaseMultiStrings7Size = 12; // NOLINT
int ToUppercase::Convert(uchar c,
uchar n,
uchar* result,
bool* allow_caching_ptr) {
int chunk_index = c >> 13;
switch (chunk_index) {
case 0: return LookupMapping<true>(kToUppercaseTable0,
kToUppercaseTable0Size,
kToUppercaseMultiStrings0,
c,
n,
result,
allow_caching_ptr);
case 1: return LookupMapping<true>(kToUppercaseTable1,
kToUppercaseTable1Size,
kToUppercaseMultiStrings1,
c,
n,
result,
allow_caching_ptr);
case 5: return LookupMapping<true>(kToUppercaseTable5,
kToUppercaseTable5Size,
kToUppercaseMultiStrings5,
c,
n,
result,
allow_caching_ptr);
case 7: return LookupMapping<true>(kToUppercaseTable7,
kToUppercaseTable7Size,
kToUppercaseMultiStrings7,
c,
n,
result,
allow_caching_ptr);
default: return 0;
}
}
static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings0[1] = { // NOLINT
{{kSentinel}} }; // NOLINT
static const uint16_t kEcma262CanonicalizeTable0Size = 498; // NOLINT
static const int32_t kEcma262CanonicalizeTable0[996] = {
1073741921, -128, 122, -128, 181, 2972,
1073742048, -128, 246, -128, 1073742072, -128,
254, -128, 255, 484, // NOLINT
257, -4, 259, -4, 261, -4,
263, -4, 265, -4, 267, -4,
269, -4, 271, -4, // NOLINT
273, -4, 275, -4, 277, -4,
279, -4, 281, -4, 283, -4,
285, -4, 287, -4, // NOLINT
289, -4, 291, -4, 293, -4,
295, -4, 297, -4, 299, -4,
301, -4, 303, -4, // NOLINT
307, -4, 309, -4, 311, -4,
314, -4, 316, -4, 318, -4,
320, -4, 322, -4, // NOLINT
324, -4, 326, -4, 328, -4,
331, -4, 333, -4, 335, -4,
337, -4, 339, -4, // NOLINT
341, -4, 343, -4, 345, -4,
347, -4, 349, -4, 351, -4,
353, -4, 355, -4, // NOLINT
357, -4, 359, -4, 361, -4,
363, -4, 365, -4, 367, -4,
369, -4, 371, -4, // NOLINT
373, -4, 375, -4, 378, -4,
380, -4, 382, -4, 384, 780,
387, -4, 389, -4, // NOLINT
392, -4, 396, -4, 402, -4,
405, 388, 409, -4, 410, 652,
414, 520, 417, -4, // NOLINT
419, -4, 421, -4, 424, -4,
429, -4, 432, -4, 436, -4,
438, -4, 441, -4, // NOLINT
445, -4, 447, 224, 453, -4,
454, -8, 456, -4, 457, -8,
459, -4, 460, -8, // NOLINT
462, -4, 464, -4, 466, -4,
468, -4, 470, -4, 472, -4,
474, -4, 476, -4, // NOLINT
477, -316, 479, -4, 481, -4,
483, -4, 485, -4, 487, -4,
489, -4, 491, -4, // NOLINT
493, -4, 495, -4, 498, -4,
499, -8, 501, -4, 505, -4,
507, -4, 509, -4, // NOLINT
511, -4, 513, -4, 515, -4,
517, -4, 519, -4, 521, -4,
523, -4, 525, -4, // NOLINT
527, -4, 529, -4, 531, -4,
533, -4, 535, -4, 537, -4,
539, -4, 541, -4, // NOLINT
543, -4, 547, -4, 549, -4,
551, -4, 553, -4, 555, -4,
557, -4, 559, -4, // NOLINT
561, -4, 563, -4, 572, -4,
1073742399, 43260, 576, 43260, 578, -4,
583, -4, 585, -4, // NOLINT
587, -4, 589, -4, 591, -4,
592, 43132, 593, 43120, 594, 43128,
595, -840, 596, -824, // NOLINT
1073742422, -820, 599, -820, 601, -808,
603, -812, 604, 169276, 608, -820,
609, 169260, 611, -828, // NOLINT
613, 169120, 614, 169232, 616, -836,
617, -844, 619, 42972, 620, 169220,
623, -844, 625, 42996, // NOLINT
626, -852, 629, -856, 637, 42908,
640, -872, 643, -872, 647, 169128,
648, -872, 649, -276, // NOLINT
1073742474, -868, 651, -868, 652, -284,
658, -876, 670, 169032, 837, 336,
881, -4, 883, -4, // NOLINT
887, -4, 1073742715, 520, 893, 520,
940, -152, 1073742765, -148, 943, -148,
1073742769, -128, 961, -128, // NOLINT
962, -124, 1073742787, -128, 971, -128,
972, -256, 1073742797, -252, 974, -252,
976, -248, 977, -228, // NOLINT
981, -188, 982, -216, 983, -32,
985, -4, 987, -4, 989, -4,
991, -4, 993, -4, // NOLINT
995, -4, 997, -4, 999, -4,
1001, -4, 1003, -4, 1005, -4,
1007, -4, 1008, -344, // NOLINT
1009, -320, 1010, 28, 1011, -464,
1013, -384, 1016, -4, 1019, -4,
1073742896, -128, 1103, -128, // NOLINT
1073742928, -320, 1119, -320, 1121, -4,
1123, -4, 1125, -4, 1127, -4,
1129, -4, 1131, -4, // NOLINT
1133, -4, 1135, -4, 1137, -4,
1139, -4, 1141, -4, 1143, -4,
1145, -4, 1147, -4, // NOLINT
1149, -4, 1151, -4, 1153, -4,
1163, -4, 1165, -4, 1167, -4,
1169, -4, 1171, -4, // NOLINT
1173, -4, 1175, -4, 1177, -4,
1179, -4, 1181, -4, 1183, -4,
1185, -4, 1187, -4, // NOLINT
1189, -4, 1191, -4, 1193, -4,
1195, -4, 1197, -4, 1199, -4,
1201, -4, 1203, -4, // NOLINT
1205, -4, 1207, -4, 1209, -4,
1211, -4, 1213, -4, 1215, -4,
1218, -4, 1220, -4, // NOLINT
1222, -4, 1224, -4, 1226, -4,
1228, -4, 1230, -4, 1231, -60,
1233, -4, 1235, -4, // NOLINT
1237, -4, 1239, -4, 1241, -4,
1243, -4, 1245, -4, 1247, -4,
1249, -4, 1251, -4, // NOLINT
1253, -4, 1255, -4, 1257, -4,
1259, -4, 1261, -4, 1263, -4,
1265, -4, 1267, -4, // NOLINT
1269, -4, 1271, -4, 1273, -4,
1275, -4, 1277, -4, 1279, -4,
1281, -4, 1283, -4, // NOLINT
1285, -4, 1287, -4, 1289, -4,
1291, -4, 1293, -4, 1295, -4,
1297, -4, 1299, -4, // NOLINT
1301, -4, 1303, -4, 1305, -4,
1307, -4, 1309, -4, 1311, -4,
1313, -4, 1315, -4, // NOLINT
1317, -4, 1319, -4, 1321, -4,
1323, -4, 1325, -4, 1327, -4,
1073743201, -192, 1414, -192, // NOLINT
7545, 141328, 7549, 15256, 7681, -4,
7683, -4, 7685, -4, 7687, -4,
7689, -4, 7691, -4, // NOLINT
7693, -4, 7695, -4, 7697, -4,
7699, -4, 7701, -4, 7703, -4,
7705, -4, 7707, -4, // NOLINT
7709, -4, 7711, -4, 7713, -4,
7715, -4, 7717, -4, 7719, -4,
7721, -4, 7723, -4, // NOLINT
7725, -4, 7727, -4, 7729, -4,
7731, -4, 7733, -4, 7735, -4,
7737, -4, 7739, -4, // NOLINT
7741, -4, 7743, -4, 7745, -4,
7747, -4, 7749, -4, 7751, -4,
7753, -4, 7755, -4, // NOLINT
7757, -4, 7759, -4, 7761, -4,
7763, -4, 7765, -4, 7767, -4,
7769, -4, 7771, -4, // NOLINT
7773, -4, 7775, -4, 7777, -4,
7779, -4, 7781, -4, 7783, -4,
7785, -4, 7787, -4, // NOLINT
7789, -4, 7791, -4, 7793, -4,
7795, -4, 7797, -4, 7799, -4,
7801, -4, 7803, -4, // NOLINT
7805, -4, 7807, -4, 7809, -4,
7811, -4, 7813, -4, 7815, -4,
7817, -4, 7819, -4, // NOLINT
7821, -4, 7823, -4, 7825, -4,
7827, -4, 7829, -4, 7835, -236,
7841, -4, 7843, -4, // NOLINT
7845, -4, 7847, -4, 7849, -4,
7851, -4, 7853, -4, 7855, -4,
7857, -4, 7859, -4, // NOLINT
7861, -4, 7863, -4, 7865, -4,
7867, -4, 7869, -4, 7871, -4,
7873, -4, 7875, -4, // NOLINT
7877, -4, 7879, -4, 7881, -4,
7883, -4, 7885, -4, 7887, -4,
7889, -4, 7891, -4, // NOLINT
7893, -4, 7895, -4, 7897, -4,
7899, -4, 7901, -4, 7903, -4,
7905, -4, 7907, -4, // NOLINT
7909, -4, 7911, -4, 7913, -4,
7915, -4, 7917, -4, 7919, -4,
7921, -4, 7923, -4, // NOLINT
7925, -4, 7927, -4, 7929, -4,
7931, -4, 7933, -4, 7935, -4,
1073749760, 32, 7943, 32, // NOLINT
1073749776, 32, 7957, 32, 1073749792, 32,
7975, 32, 1073749808, 32, 7991, 32,
1073749824, 32, 8005, 32, // NOLINT
8017, 32, 8019, 32, 8021, 32,
8023, 32, 1073749856, 32, 8039, 32,
1073749872, 296, 8049, 296, // NOLINT
1073749874, 344, 8053, 344, 1073749878, 400,
8055, 400, 1073749880, 512, 8057, 512,
1073749882, 448, 8059, 448, // NOLINT
1073749884, 504, 8061, 504, 1073749936, 32,
8113, 32, 8126, -28820, 1073749968, 32,
8145, 32, 1073749984, 32, // NOLINT
8161, 32, 8165, 28}; // NOLINT
static const uint16_t kEcma262CanonicalizeMultiStrings0Size = 1; // NOLINT
static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings1[1] = { // NOLINT
{{kSentinel}} }; // NOLINT
static const uint16_t kEcma262CanonicalizeTable1Size = 73; // NOLINT
static const int32_t kEcma262CanonicalizeTable1[146] = {
334, -112, 1073742192, -64, 383, -64, 388, -4, 1073743056, -104, 1257, -104, 1073744944, -192, 3166, -192, // NOLINT
3169, -4, 3173, -43180, 3174, -43168, 3176, -4, 3178, -4, 3180, -4, 3187, -4, 3190, -4, // NOLINT
3201, -4, 3203, -4, 3205, -4, 3207, -4, 3209, -4, 3211, -4, 3213, -4, 3215, -4, // NOLINT
3217, -4, 3219, -4, 3221, -4, 3223, -4, 3225, -4, 3227, -4, 3229, -4, 3231, -4, // NOLINT
3233, -4, 3235, -4, 3237, -4, 3239, -4, 3241, -4, 3243, -4, 3245, -4, 3247, -4, // NOLINT
3249, -4, 3251, -4, 3253, -4, 3255, -4, 3257, -4, 3259, -4, 3261, -4, 3263, -4, // NOLINT
3265, -4, 3267, -4, 3269, -4, 3271, -4, 3273, -4, 3275, -4, 3277, -4, 3279, -4, // NOLINT
3281, -4, 3283, -4, 3285, -4, 3287, -4, 3289, -4, 3291, -4, 3293, -4, 3295, -4, // NOLINT
3297, -4, 3299, -4, 3308, -4, 3310, -4, 3315, -4, 1073745152, -29056, 3365, -29056, 3367, -29056, // NOLINT
3373, -29056 }; // NOLINT
static const uint16_t kEcma262CanonicalizeMultiStrings1Size = 1; // NOLINT
static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings5[1] = { // NOLINT
{{kSentinel}} }; // NOLINT
static const uint16_t kEcma262CanonicalizeTable5Size = 95; // NOLINT
static const int32_t kEcma262CanonicalizeTable5
[190] = {1601, -4, 1603, -4, 1605, -4, 1607, -4,
1609, -4, 1611, -4, 1613, -4, 1615, -4, // NOLINT
1617, -4, 1619, -4, 1621, -4, 1623, -4,
1625, -4, 1627, -4, 1629, -4, 1631, -4, // NOLINT
1633, -4, 1635, -4, 1637, -4, 1639, -4,
1641, -4, 1643, -4, 1645, -4, 1665, -4, // NOLINT
1667, -4, 1669, -4, 1671, -4, 1673, -4,
1675, -4, 1677, -4, 1679, -4, 1681, -4, // NOLINT
1683, -4, 1685, -4, 1687, -4, 1689, -4,
1691, -4, 1827, -4, 1829, -4, 1831, -4, // NOLINT
1833, -4, 1835, -4, 1837, -4, 1839, -4,
1843, -4, 1845, -4, 1847, -4, 1849, -4, // NOLINT
1851, -4, 1853, -4, 1855, -4, 1857, -4,
1859, -4, 1861, -4, 1863, -4, 1865, -4, // NOLINT
1867, -4, 1869, -4, 1871, -4, 1873, -4,
1875, -4, 1877, -4, 1879, -4, 1881, -4, // NOLINT
1883, -4, 1885, -4, 1887, -4, 1889, -4,
1891, -4, 1893, -4, 1895, -4, 1897, -4, // NOLINT
1899, -4, 1901, -4, 1903, -4, 1914, -4,
1916, -4, 1919, -4, 1921, -4, 1923, -4, // NOLINT
1925, -4, 1927, -4, 1932, -4, 1937, -4,
1939, -4, 1943, -4, 1945, -4, 1947, -4, // NOLINT
1949, -4, 1951, -4, 1953, -4, 1955, -4,
1957, -4, 1959, -4, 1961, -4}; // NOLINT
static const uint16_t kEcma262CanonicalizeMultiStrings5Size = 1; // NOLINT
static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings7[1] = { // NOLINT
{{kSentinel}} }; // NOLINT
static const uint16_t kEcma262CanonicalizeTable7Size = 2; // NOLINT
static const int32_t kEcma262CanonicalizeTable7[4] = {
1073749825, -128, 8026, -128 }; // NOLINT
static const uint16_t kEcma262CanonicalizeMultiStrings7Size = 1; // NOLINT
int Ecma262Canonicalize::Convert(uchar c,
uchar n,
uchar* result,
bool* allow_caching_ptr) {
int chunk_index = c >> 13;
switch (chunk_index) {
case 0: return LookupMapping<true>(kEcma262CanonicalizeTable0,
kEcma262CanonicalizeTable0Size,
kEcma262CanonicalizeMultiStrings0,
c,
n,
result,
allow_caching_ptr);
case 1: return LookupMapping<true>(kEcma262CanonicalizeTable1,
kEcma262CanonicalizeTable1Size,
kEcma262CanonicalizeMultiStrings1,
c,
n,
result,
allow_caching_ptr);
case 5: return LookupMapping<true>(kEcma262CanonicalizeTable5,
kEcma262CanonicalizeTable5Size,
kEcma262CanonicalizeMultiStrings5,
c,
n,
result,
allow_caching_ptr);
case 7: return LookupMapping<true>(kEcma262CanonicalizeTable7,
kEcma262CanonicalizeTable7Size,
kEcma262CanonicalizeMultiStrings7,
c,
n,
result,
allow_caching_ptr);
default: return 0;
}
}
static const MultiCharacterSpecialCase<4>
kEcma262UnCanonicalizeMultiStrings0[507] = { // NOLINT
{{65, 97, kSentinel}},
{{90, 122, kSentinel}},
{{181, 924, 956, kSentinel}},
{{192, 224, kSentinel}}, // NOLINT
{{214, 246, kSentinel}},
{{216, 248, kSentinel}},
{{222, 254, kSentinel}},
{{255, 376, kSentinel}}, // NOLINT
{{256, 257, kSentinel}},
{{258, 259, kSentinel}},
{{260, 261, kSentinel}},
{{262, 263, kSentinel}}, // NOLINT
{{264, 265, kSentinel}},
{{266, 267, kSentinel}},
{{268, 269, kSentinel}},
{{270, 271, kSentinel}}, // NOLINT
{{272, 273, kSentinel}},
{{274, 275, kSentinel}},
{{276, 277, kSentinel}},
{{278, 279, kSentinel}}, // NOLINT
{{280, 281, kSentinel}},
{{282, 283, kSentinel}},
{{284, 285, kSentinel}},
{{286, 287, kSentinel}}, // NOLINT
{{288, 289, kSentinel}},
{{290, 291, kSentinel}},
{{292, 293, kSentinel}},
{{294, 295, kSentinel}}, // NOLINT
{{296, 297, kSentinel}},
{{298, 299, kSentinel}},
{{300, 301, kSentinel}},
{{302, 303, kSentinel}}, // NOLINT
{{306, 307, kSentinel}},
{{308, 309, kSentinel}},
{{310, 311, kSentinel}},
{{313, 314, kSentinel}}, // NOLINT
{{315, 316, kSentinel}},
{{317, 318, kSentinel}},
{{319, 320, kSentinel}},
{{321, 322, kSentinel}}, // NOLINT
{{323, 324, kSentinel}},
{{325, 326, kSentinel}},
{{327, 328, kSentinel}},
{{330, 331, kSentinel}}, // NOLINT
{{332, 333, kSentinel}},
{{334, 335, kSentinel}},
{{336, 337, kSentinel}},
{{338, 339, kSentinel}}, // NOLINT
{{340, 341, kSentinel}},
{{342, 343, kSentinel}},
{{344, 345, kSentinel}},
{{346, 347, kSentinel}}, // NOLINT
{{348, 349, kSentinel}},
{{350, 351, kSentinel}},
{{352, 353, kSentinel}},
{{354, 355, kSentinel}}, // NOLINT
{{356, 357, kSentinel}},
{{358, 359, kSentinel}},
{{360, 361, kSentinel}},
{{362, 363, kSentinel}}, // NOLINT
{{364, 365, kSentinel}},
{{366, 367, kSentinel}},
{{368, 369, kSentinel}},
{{370, 371, kSentinel}}, // NOLINT
{{372, 373, kSentinel}},
{{374, 375, kSentinel}},
{{377, 378, kSentinel}},
{{379, 380, kSentinel}}, // NOLINT
{{381, 382, kSentinel}},
{{384, 579, kSentinel}},
{{385, 595, kSentinel}},
{{386, 387, kSentinel}}, // NOLINT
{{388, 389, kSentinel}},
{{390, 596, kSentinel}},
{{391, 392, kSentinel}},
{{393, 598, kSentinel}}, // NOLINT
{{394, 599, kSentinel}},
{{395, 396, kSentinel}},
{{398, 477, kSentinel}},
{{399, 601, kSentinel}}, // NOLINT
{{400, 603, kSentinel}},
{{401, 402, kSentinel}},
{{403, 608, kSentinel}},
{{404, 611, kSentinel}}, // NOLINT
{{405, 502, kSentinel}},
{{406, 617, kSentinel}},
{{407, 616, kSentinel}},
{{408, 409, kSentinel}}, // NOLINT
{{410, 573, kSentinel}},
{{412, 623, kSentinel}},
{{413, 626, kSentinel}},
{{414, 544, kSentinel}}, // NOLINT
{{415, 629, kSentinel}},
{{416, 417, kSentinel}},
{{418, 419, kSentinel}},
{{420, 421, kSentinel}}, // NOLINT
{{422, 640, kSentinel}},
{{423, 424, kSentinel}},
{{425, 643, kSentinel}},
{{428, 429, kSentinel}}, // NOLINT
{{430, 648, kSentinel}},
{{431, 432, kSentinel}},
{{433, 650, kSentinel}},
{{434, 651, kSentinel}}, // NOLINT
{{435, 436, kSentinel}},
{{437, 438, kSentinel}},
{{439, 658, kSentinel}},
{{440, 441, kSentinel}}, // NOLINT
{{444, 445, kSentinel}},
{{447, 503, kSentinel}},
{{452, 453, 454, kSentinel}},
{{455, 456, 457, kSentinel}}, // NOLINT
{{458, 459, 460, kSentinel}},
{{461, 462, kSentinel}},
{{463, 464, kSentinel}},
{{465, 466, kSentinel}}, // NOLINT
{{467, 468, kSentinel}},
{{469, 470, kSentinel}},
{{471, 472, kSentinel}},
{{473, 474, kSentinel}}, // NOLINT
{{475, 476, kSentinel}},
{{478, 479, kSentinel}},
{{480, 481, kSentinel}},
{{482, 483, kSentinel}}, // NOLINT
{{484, 485, kSentinel}},
{{486, 487, kSentinel}},
{{488, 489, kSentinel}},
{{490, 491, kSentinel}}, // NOLINT
{{492, 493, kSentinel}},
{{494, 495, kSentinel}},
{{497, 498, 499, kSentinel}},
{{500, 501, kSentinel}}, // NOLINT
{{504, 505, kSentinel}},
{{506, 507, kSentinel}},
{{508, 509, kSentinel}},
{{510, 511, kSentinel}}, // NOLINT
{{512, 513, kSentinel}},
{{514, 515, kSentinel}},
{{516, 517, kSentinel}},
{{518, 519, kSentinel}}, // NOLINT
{{520, 521, kSentinel}},
{{522, 523, kSentinel}},
{{524, 525, kSentinel}},
{{526, 527, kSentinel}}, // NOLINT
{{528, 529, kSentinel}},
{{530, 531, kSentinel}},
{{532, 533, kSentinel}},
{{534, 535, kSentinel}}, // NOLINT
{{536, 537, kSentinel}},
{{538, 539, kSentinel}},
{{540, 541, kSentinel}},
{{542, 543, kSentinel}}, // NOLINT
{{546, 547, kSentinel}},
{{548, 549, kSentinel}},
{{550, 551, kSentinel}},
{{552, 553, kSentinel}}, // NOLINT
{{554, 555, kSentinel}},
{{556, 557, kSentinel}},
{{558, 559, kSentinel}},
{{560, 561, kSentinel}}, // NOLINT
{{562, 563, kSentinel}},
{{570, 11365, kSentinel}},
{{571, 572, kSentinel}},
{{574, 11366, kSentinel}}, // NOLINT
{{575, 11390, kSentinel}},
{{576, 11391, kSentinel}},
{{577, 578, kSentinel}},
{{580, 649, kSentinel}}, // NOLINT
{{581, 652, kSentinel}},
{{582, 583, kSentinel}},
{{584, 585, kSentinel}},
{{586, 587, kSentinel}}, // NOLINT
{{588, 589, kSentinel}},
{{590, 591, kSentinel}},
{{592, 11375, kSentinel}},
{{593, 11373, kSentinel}}, // NOLINT
{{594, 11376, kSentinel}},
{{604, 42923, kSentinel}},
{{609, 42924, kSentinel}},
{{613, 42893, kSentinel}}, // NOLINT
{{614, 42922, kSentinel}},
{{619, 11362, kSentinel}},
{{620, 42925, kSentinel}},
{{625, 11374, kSentinel}}, // NOLINT
{{637, 11364, kSentinel}},
{{647, 42929, kSentinel}},
{{670, 42928, kSentinel}},
{{837, 921, 953, 8126}}, // NOLINT
{{880, 881, kSentinel}},
{{882, 883, kSentinel}},
{{886, 887, kSentinel}},
{{891, 1021, kSentinel}}, // NOLINT
{{893, 1023, kSentinel}},
{{895, 1011, kSentinel}},
{{902, 940, kSentinel}},
{{904, 941, kSentinel}}, // NOLINT
{{906, 943, kSentinel}},
{{908, 972, kSentinel}},
{{910, 973, kSentinel}},
{{911, 974, kSentinel}}, // NOLINT
{{913, 945, kSentinel}},
{{914, 946, 976, kSentinel}},
{{915, 947, kSentinel}},
{{916, 948, kSentinel}}, // NOLINT
{{917, 949, 1013, kSentinel}},
{{918, 950, kSentinel}},
{{919, 951, kSentinel}},
{{920, 952, 977, kSentinel}}, // NOLINT
{{922, 954, 1008, kSentinel}},
{{923, 955, kSentinel}},
{{925, 957, kSentinel}},
{{927, 959, kSentinel}}, // NOLINT
{{928, 960, 982, kSentinel}},
{{929, 961, 1009, kSentinel}},
{{931, 962, 963, kSentinel}},
{{932, 964, kSentinel}}, // NOLINT
{{933, 965, kSentinel}},
{{934, 966, 981, kSentinel}},
{{935, 967, kSentinel}},
{{939, 971, kSentinel}}, // NOLINT
{{975, 983, kSentinel}},
{{984, 985, kSentinel}},
{{986, 987, kSentinel}},
{{988, 989, kSentinel}}, // NOLINT
{{990, 991, kSentinel}},
{{992, 993, kSentinel}},
{{994, 995, kSentinel}},
{{996, 997, kSentinel}}, // NOLINT
{{998, 999, kSentinel}},
{{1000, 1001, kSentinel}},
{{1002, 1003, kSentinel}},
{{1004, 1005, kSentinel}}, // NOLINT
{{1006, 1007, kSentinel}},
{{1010, 1017, kSentinel}},
{{1015, 1016, kSentinel}},
{{1018, 1019, kSentinel}}, // NOLINT
{{1024, 1104, kSentinel}},
{{1039, 1119, kSentinel}},
{{1040, 1072, kSentinel}},
{{1071, 1103, kSentinel}}, // NOLINT
{{1120, 1121, kSentinel}},
{{1122, 1123, kSentinel}},
{{1124, 1125, kSentinel}},
{{1126, 1127, kSentinel}}, // NOLINT
{{1128, 1129, kSentinel}},
{{1130, 1131, kSentinel}},
{{1132, 1133, kSentinel}},
{{1134, 1135, kSentinel}}, // NOLINT
{{1136, 1137, kSentinel}},
{{1138, 1139, kSentinel}},
{{1140, 1141, kSentinel}},
{{1142, 1143, kSentinel}}, // NOLINT
{{1144, 1145, kSentinel}},
{{1146, 1147, kSentinel}},
{{1148, 1149, kSentinel}},
{{1150, 1151, kSentinel}}, // NOLINT
{{1152, 1153, kSentinel}},
{{1162, 1163, kSentinel}},
{{1164, 1165, kSentinel}},
{{1166, 1167, kSentinel}}, // NOLINT
{{1168, 1169, kSentinel}},
{{1170, 1171, kSentinel}},
{{1172, 1173, kSentinel}},
{{1174, 1175, kSentinel}}, // NOLINT
{{1176, 1177, kSentinel}},
{{1178, 1179, kSentinel}},
{{1180, 1181, kSentinel}},
{{1182, 1183, kSentinel}}, // NOLINT
{{1184, 1185, kSentinel}},
{{1186, 1187, kSentinel}},
{{1188, 1189, kSentinel}},
{{1190, 1191, kSentinel}}, // NOLINT
{{1192, 1193, kSentinel}},
{{1194, 1195, kSentinel}},
{{1196, 1197, kSentinel}},
{{1198, 1199, kSentinel}}, // NOLINT
{{1200, 1201, kSentinel}},
{{1202, 1203, kSentinel}},
{{1204, 1205, kSentinel}},
{{1206, 1207, kSentinel}}, // NOLINT
{{1208, 1209, kSentinel}},
{{1210, 1211, kSentinel}},
{{1212, 1213, kSentinel}},
{{1214, 1215, kSentinel}}, // NOLINT
{{1216, 1231, kSentinel}},
{{1217, 1218, kSentinel}},
{{1219, 1220, kSentinel}},
{{1221, 1222, kSentinel}}, // NOLINT
{{1223, 1224, kSentinel}},
{{1225, 1226, kSentinel}},
{{1227, 1228, kSentinel}},
{{1229, 1230, kSentinel}}, // NOLINT
{{1232, 1233, kSentinel}},
{{1234, 1235, kSentinel}},
{{1236, 1237, kSentinel}},
{{1238, 1239, kSentinel}}, // NOLINT
{{1240, 1241, kSentinel}},
{{1242, 1243, kSentinel}},
{{1244, 1245, kSentinel}},
{{1246, 1247, kSentinel}}, // NOLINT
{{1248, 1249, kSentinel}},
{{1250, 1251, kSentinel}},
{{1252, 1253, kSentinel}},
{{1254, 1255, kSentinel}}, // NOLINT
{{1256, 1257, kSentinel}},
{{1258, 1259, kSentinel}},
{{1260, 1261, kSentinel}},
{{1262, 1263, kSentinel}}, // NOLINT
{{1264, 1265, kSentinel}},
{{1266, 1267, kSentinel}},
{{1268, 1269, kSentinel}},
{{1270, 1271, kSentinel}}, // NOLINT
{{1272, 1273, kSentinel}},
{{1274, 1275, kSentinel}},
{{1276, 1277, kSentinel}},
{{1278, 1279, kSentinel}}, // NOLINT
{{1280, 1281, kSentinel}},
{{1282, 1283, kSentinel}},
{{1284, 1285, kSentinel}},
{{1286, 1287, kSentinel}}, // NOLINT
{{1288, 1289, kSentinel}},
{{1290, 1291, kSentinel}},
{{1292, 1293, kSentinel}},
{{1294, 1295, kSentinel}}, // NOLINT
{{1296, 1297, kSentinel}},
{{1298, 1299, kSentinel}},
{{1300, 1301, kSentinel}},
{{1302, 1303, kSentinel}}, // NOLINT
{{1304, 1305, kSentinel}},
{{1306, 1307, kSentinel}},
{{1308, 1309, kSentinel}},
{{1310, 1311, kSentinel}}, // NOLINT
{{1312, 1313, kSentinel}},
{{1314, 1315, kSentinel}},
{{1316, 1317, kSentinel}},
{{1318, 1319, kSentinel}}, // NOLINT
{{1320, 1321, kSentinel}},
{{1322, 1323, kSentinel}},
{{1324, 1325, kSentinel}},
{{1326, 1327, kSentinel}}, // NOLINT
{{1329, 1377, kSentinel}},
{{1366, 1414, kSentinel}},
{{4256, 11520, kSentinel}},
{{4293, 11557, kSentinel}}, // NOLINT
{{4295, 11559, kSentinel}},
{{4301, 11565, kSentinel}},
{{7545, 42877, kSentinel}},
{{7549, 11363, kSentinel}}, // NOLINT
{{7680, 7681, kSentinel}},
{{7682, 7683, kSentinel}},
{{7684, 7685, kSentinel}},
{{7686, 7687, kSentinel}}, // NOLINT
{{7688, 7689, kSentinel}},
{{7690, 7691, kSentinel}},
{{7692, 7693, kSentinel}},
{{7694, 7695, kSentinel}}, // NOLINT
{{7696, 7697, kSentinel}},
{{7698, 7699, kSentinel}},
{{7700, 7701, kSentinel}},
{{7702, 7703, kSentinel}}, // NOLINT
{{7704, 7705, kSentinel}},
{{7706, 7707, kSentinel}},
{{7708, 7709, kSentinel}},
{{7710, 7711, kSentinel}}, // NOLINT
{{7712, 7713, kSentinel}},
{{7714, 7715, kSentinel}},
{{7716, 7717, kSentinel}},
{{7718, 7719, kSentinel}}, // NOLINT
{{7720, 7721, kSentinel}},
{{7722, 7723, kSentinel}},
{{7724, 7725, kSentinel}},
{{7726, 7727, kSentinel}}, // NOLINT
{{7728, 7729, kSentinel}},
{{7730, 7731, kSentinel}},
{{7732, 7733, kSentinel}},
{{7734, 7735, kSentinel}}, // NOLINT
{{7736, 7737, kSentinel}},
{{7738, 7739, kSentinel}},
{{7740, 7741, kSentinel}},
{{7742, 7743, kSentinel}}, // NOLINT
{{7744, 7745, kSentinel}},
{{7746, 7747, kSentinel}},
{{7748, 7749, kSentinel}},
{{7750, 7751, kSentinel}}, // NOLINT
{{7752, 7753, kSentinel}},
{{7754, 7755, kSentinel}},
{{7756, 7757, kSentinel}},
{{7758, 7759, kSentinel}}, // NOLINT
{{7760, 7761, kSentinel}},
{{7762, 7763, kSentinel}},
{{7764, 7765, kSentinel}},
{{7766, 7767, kSentinel}}, // NOLINT
{{7768, 7769, kSentinel}},
{{7770, 7771, kSentinel}},
{{7772, 7773, kSentinel}},
{{7774, 7775, kSentinel}}, // NOLINT
{{7776, 7777, 7835, kSentinel}},
{{7778, 7779, kSentinel}},
{{7780, 7781, kSentinel}},
{{7782, 7783, kSentinel}}, // NOLINT
{{7784, 7785, kSentinel}},
{{7786, 7787, kSentinel}},
{{7788, 7789, kSentinel}},
{{7790, 7791, kSentinel}}, // NOLINT
{{7792, 7793, kSentinel}},
{{7794, 7795, kSentinel}},
{{7796, 7797, kSentinel}},
{{7798, 7799, kSentinel}}, // NOLINT
{{7800, 7801, kSentinel}},
{{7802, 7803, kSentinel}},
{{7804, 7805, kSentinel}},
{{7806, 7807, kSentinel}}, // NOLINT
{{7808, 7809, kSentinel}},
{{7810, 7811, kSentinel}},
{{7812, 7813, kSentinel}},
{{7814, 7815, kSentinel}}, // NOLINT
{{7816, 7817, kSentinel}},
{{7818, 7819, kSentinel}},
{{7820, 7821, kSentinel}},
{{7822, 7823, kSentinel}}, // NOLINT
{{7824, 7825, kSentinel}},
{{7826, 7827, kSentinel}},
{{7828, 7829, kSentinel}},
{{7840, 7841, kSentinel}}, // NOLINT
{{7842, 7843, kSentinel}},
{{7844, 7845, kSentinel}},
{{7846, 7847, kSentinel}},
{{7848, 7849, kSentinel}}, // NOLINT
{{7850, 7851, kSentinel}},
{{7852, 7853, kSentinel}},
{{7854, 7855, kSentinel}},
{{7856, 7857, kSentinel}}, // NOLINT
{{7858, 7859, kSentinel}},
{{7860, 7861, kSentinel}},
{{7862, 7863, kSentinel}},
{{7864, 7865, kSentinel}}, // NOLINT
{{7866, 7867, kSentinel}},
{{7868, 7869, kSentinel}},
{{7870, 7871, kSentinel}},
{{7872, 7873, kSentinel}}, // NOLINT
{{7874, 7875, kSentinel}},
{{7876, 7877, kSentinel}},
{{7878, 7879, kSentinel}},
{{7880, 7881, kSentinel}}, // NOLINT
{{7882, 7883, kSentinel}},
{{7884, 7885, kSentinel}},
{{7886, 7887, kSentinel}},
{{7888, 7889, kSentinel}}, // NOLINT
{{7890, 7891, kSentinel}},
{{7892, 7893, kSentinel}},
{{7894, 7895, kSentinel}},
{{7896, 7897, kSentinel}}, // NOLINT
{{7898, 7899, kSentinel}},
{{7900, 7901, kSentinel}},
{{7902, 7903, kSentinel}},
{{7904, 7905, kSentinel}}, // NOLINT
{{7906, 7907, kSentinel}},
{{7908, 7909, kSentinel}},
{{7910, 7911, kSentinel}},
{{7912, 7913, kSentinel}}, // NOLINT
{{7914, 7915, kSentinel}},
{{7916, 7917, kSentinel}},
{{7918, 7919, kSentinel}},
{{7920, 7921, kSentinel}}, // NOLINT
{{7922, 7923, kSentinel}},
{{7924, 7925, kSentinel}},
{{7926, 7927, kSentinel}},
{{7928, 7929, kSentinel}}, // NOLINT
{{7930, 7931, kSentinel}},
{{7932, 7933, kSentinel}},
{{7934, 7935, kSentinel}},
{{7936, 7944, kSentinel}}, // NOLINT
{{7943, 7951, kSentinel}},
{{7952, 7960, kSentinel}},
{{7957, 7965, kSentinel}},
{{7968, 7976, kSentinel}}, // NOLINT
{{7975, 7983, kSentinel}},
{{7984, 7992, kSentinel}},
{{7991, 7999, kSentinel}},
{{8000, 8008, kSentinel}}, // NOLINT
{{8005, 8013, kSentinel}},
{{8017, 8025, kSentinel}},
{{8019, 8027, kSentinel}},
{{8021, 8029, kSentinel}}, // NOLINT
{{8023, 8031, kSentinel}},
{{8032, 8040, kSentinel}},
{{8039, 8047, kSentinel}},
{{8048, 8122, kSentinel}}, // NOLINT
{{8049, 8123, kSentinel}},
{{8050, 8136, kSentinel}},
{{8053, 8139, kSentinel}},
{{8054, 8154, kSentinel}}, // NOLINT
{{8055, 8155, kSentinel}},
{{8056, 8184, kSentinel}},
{{8057, 8185, kSentinel}},
{{8058, 8170, kSentinel}}, // NOLINT
{{8059, 8171, kSentinel}},
{{8060, 8186, kSentinel}},
{{8061, 8187, kSentinel}},
{{8112, 8120, kSentinel}}, // NOLINT
{{8113, 8121, kSentinel}},
{{8144, 8152, kSentinel}},
{{8145, 8153, kSentinel}},
{{8160, 8168, kSentinel}}, // NOLINT
{{8161, 8169, kSentinel}},
{{8165, 8172, kSentinel}},
{{kSentinel}}}; // NOLINT
static const uint16_t kEcma262UnCanonicalizeTable0Size = 1005; // NOLINT
static const int32_t kEcma262UnCanonicalizeTable0[2010] = {
1073741889, 1, 90, 5, 1073741921, 1,
122, 5, 181, 9, 1073742016, 13,
214, 17, 1073742040, 21, // NOLINT
222, 25, 1073742048, 13, 246, 17,
1073742072, 21, 254, 25, 255, 29,
256, 33, 257, 33, // NOLINT
258, 37, 259, 37, 260, 41,
261, 41, 262, 45, 263, 45,
264, 49, 265, 49, // NOLINT
266, 53, 267, 53, 268, 57,
269, 57, 270, 61, 271, 61,
272, 65, 273, 65, // NOLINT
274, 69, 275, 69, 276, 73,
277, 73, 278, 77, 279, 77,
280, 81, 281, 81, // NOLINT
282, 85, 283, 85, 284, 89,
285, 89, 286, 93, 287, 93,
288, 97, 289, 97, // NOLINT
290, 101, 291, 101, 292, 105,
293, 105, 294, 109, 295, 109,
296, 113, 297, 113, // NOLINT
298, 117, 299, 117, 300, 121,
301, 121, 302, 125, 303, 125,
306, 129, 307, 129, // NOLINT
308, 133, 309, 133, 310, 137,
311, 137, 313, 141, 314, 141,
315, 145, 316, 145, // NOLINT
317, 149, 318, 149, 319, 153,
320, 153, 321, 157, 322, 157,
323, 161, 324, 161, // NOLINT
325, 165, 326, 165, 327, 169,
328, 169, 330, 173, 331, 173,
332, 177, 333, 177, // NOLINT
334, 181, 335, 181, 336, 185,
337, 185, 338, 189, 339, 189,
340, 193, 341, 193, // NOLINT
342, 197, 343, 197, 344, 201,
345, 201, 346, 205, 347, 205,
348, 209, 349, 209, // NOLINT
350, 213, 351, 213, 352, 217,
353, 217, 354, 221, 355, 221,
356, 225, 357, 225, // NOLINT
358, 229, 359, 229, 360, 233,
361, 233, 362, 237, 363, 237,
364, 241, 365, 241, // NOLINT
366, 245, 367, 245, 368, 249,
369, 249, 370, 253, 371, 253,
372, 257, 373, 257, // NOLINT
374, 261, 375, 261, 376, 29,
377, 265, 378, 265, 379, 269,
380, 269, 381, 273, // NOLINT
382, 273, 384, 277, 385, 281,
386, 285, 387, 285, 388, 289,
389, 289, 390, 293, // NOLINT
391, 297, 392, 297, 1073742217, 301,
394, 305, 395, 309, 396, 309,
398, 313, 399, 317, // NOLINT
400, 321, 401, 325, 402, 325,
403, 329, 404, 333, 405, 337,
406, 341, 407, 345, // NOLINT
408, 349, 409, 349, 410, 353,
412, 357, 413, 361, 414, 365,
415, 369, 416, 373, // NOLINT
417, 373, 418, 377, 419, 377,
420, 381, 421, 381, 422, 385,
423, 389, 424, 389, // NOLINT
425, 393, 428, 397, 429, 397,
430, 401, 431, 405, 432, 405,
1073742257, 409, 434, 413, // NOLINT
435, 417, 436, 417, 437, 421,
438, 421, 439, 425, 440, 429,
441, 429, 444, 433, // NOLINT
445, 433, 447, 437, 452, 441,
453, 441, 454, 441, 455, 445,
456, 445, 457, 445, // NOLINT
458, 449, 459, 449, 460, 449,
461, 453, 462, 453, 463, 457,
464, 457, 465, 461, // NOLINT
466, 461, 467, 465, 468, 465,
469, 469, 470, 469, 471, 473,
472, 473, 473, 477, // NOLINT
474, 477, 475, 481, 476, 481,
477, 313, 478, 485, 479, 485,
480, 489, 481, 489, // NOLINT
482, 493, 483, 493, 484, 497,
485, 497, 486, 501, 487, 501,
488, 505, 489, 505, // NOLINT
490, 509, 491, 509, 492, 513,
493, 513, 494, 517, 495, 517,
497, 521, 498, 521, // NOLINT
499, 521, 500, 525, 501, 525,
502, 337, 503, 437, 504, 529,
505, 529, 506, 533, // NOLINT
507, 533, 508, 537, 509, 537,
510, 541, 511, 541, 512, 545,
513, 545, 514, 549, // NOLINT
515, 549, 516, 553, 517, 553,
518, 557, 519, 557, 520, 561,
521, 561, 522, 565, // NOLINT
523, 565, 524, 569, 525, 569,
526, 573, 527, 573, 528, 577,
529, 577, 530, 581, // NOLINT
531, 581, 532, 585, 533, 585,
534, 589, 535, 589, 536, 593,
537, 593, 538, 597, // NOLINT
539, 597, 540, 601, 541, 601,
542, 605, 543, 605, 544, 365,
546, 609, 547, 609, // NOLINT
548, 613, 549, 613, 550, 617,
551, 617, 552, 621, 553, 621,
554, 625, 555, 625, // NOLINT
556, 629, 557, 629, 558, 633,
559, 633, 560, 637, 561, 637,
562, 641, 563, 641, // NOLINT
570, 645, 571, 649, 572, 649,
573, 353, 574, 653, 1073742399, 657,
576, 661, 577, 665, // NOLINT
578, 665, 579, 277, 580, 669,
581, 673, 582, 677, 583, 677,
584, 681, 585, 681, // NOLINT
586, 685, 587, 685, 588, 689,
589, 689, 590, 693, 591, 693,
592, 697, 593, 701, // NOLINT
594, 705, 595, 281, 596, 293,
1073742422, 301, 599, 305, 601, 317,
603, 321, 604, 709, // NOLINT
608, 329, 609, 713, 611, 333,
613, 717, 614, 721, 616, 345,
617, 341, 619, 725, // NOLINT
620, 729, 623, 357, 625, 733,
626, 361, 629, 369, 637, 737,
640, 385, 643, 393, // NOLINT
647, 741, 648, 401, 649, 669,
1073742474, 409, 651, 413, 652, 673,
658, 425, 670, 745, // NOLINT
837, 749, 880, 753, 881, 753,
882, 757, 883, 757, 886, 761,
887, 761, 1073742715, 765, // NOLINT
893, 769, 895, 773, 902, 777,
1073742728, 781, 906, 785, 908, 789,
1073742734, 793, 911, 797, // NOLINT
913, 801, 914, 805, 1073742739, 809,
916, 813, 917, 817, 1073742742, 821,
919, 825, 920, 829, // NOLINT
921, 749, 922, 833, 923, 837,
924, 9, 1073742749, 841, 927, 845,
928, 849, 929, 853, // NOLINT
931, 857, 1073742756, 861, 933, 865,
934, 869, 1073742759, 873, 939, 877,
940, 777, 1073742765, 781, // NOLINT
943, 785, 945, 801, 946, 805,
1073742771, 809, 948, 813, 949, 817,
1073742774, 821, 951, 825, // NOLINT
952, 829, 953, 749, 954, 833,
955, 837, 956, 9, 1073742781, 841,
959, 845, 960, 849, // NOLINT
961, 853, 962, 857, 963, 857,
1073742788, 861, 965, 865, 966, 869,
1073742791, 873, 971, 877, // NOLINT
972, 789, 1073742797, 793, 974, 797,
975, 881, 976, 805, 977, 829,
981, 869, 982, 849, // NOLINT
983, 881, 984, 885, 985, 885,
986, 889, 987, 889, 988, 893,
989, 893, 990, 897, // NOLINT
991, 897, 992, 901, 993, 901,
994, 905, 995, 905, 996, 909,
997, 909, 998, 913, // NOLINT
999, 913, 1000, 917, 1001, 917,
1002, 921, 1003, 921, 1004, 925,
1005, 925, 1006, 929, // NOLINT
1007, 929, 1008, 833, 1009, 853,
1010, 933, 1011, 773, 1013, 817,
1015, 937, 1016, 937, // NOLINT
1017, 933, 1018, 941, 1019, 941,
1073742845, 765, 1023, 769, 1073742848, 945,
1039, 949, 1073742864, 953, // NOLINT
1071, 957, 1073742896, 953, 1103, 957,
1073742928, 945, 1119, 949, 1120, 961,
1121, 961, 1122, 965, // NOLINT
1123, 965, 1124, 969, 1125, 969,
1126, 973, 1127, 973, 1128, 977,
1129, 977, 1130, 981, // NOLINT
1131, 981, 1132, 985, 1133, 985,
1134, 989, 1135, 989, 1136, 993,
1137, 993, 1138, 997, // NOLINT
1139, 997, 1140, 1001, 1141, 1001,
1142, 1005, 1143, 1005, 1144, 1009,
1145, 1009, 1146, 1013, // NOLINT
1147, 1013, 1148, 1017, 1149, 1017,
1150, 1021, 1151, 1021, 1152, 1025,
1153, 1025, 1162, 1029, // NOLINT
1163, 1029, 1164, 1033, 1165, 1033,
1166, 1037, 1167, 1037, 1168, 1041,
1169, 1041, 1170, 1045, // NOLINT
1171, 1045, 1172, 1049, 1173, 1049,
1174, 1053, 1175, 1053, 1176, 1057,
1177, 1057, 1178, 1061, // NOLINT
1179, 1061, 1180, 1065, 1181, 1065,
1182, 1069, 1183, 1069, 1184, 1073,
1185, 1073, 1186, 1077, // NOLINT
1187, 1077, 1188, 1081, 1189, 1081,
1190, 1085, 1191, 1085, 1192, 1089,
1193, 1089, 1194, 1093, // NOLINT
1195, 1093, 1196, 1097, 1197, 1097,
1198, 1101, 1199, 1101, 1200, 1105,
1201, 1105, 1202, 1109, // NOLINT
1203, 1109, 1204, 1113, 1205, 1113,
1206, 1117, 1207, 1117, 1208, 1121,
1209, 1121, 1210, 1125, // NOLINT
1211, 1125, 1212, 1129, 1213, 1129,
1214, 1133, 1215, 1133, 1216, 1137,
1217, 1141, 1218, 1141, // NOLINT
1219, 1145, 1220, 1145, 1221, 1149,
1222, 1149, 1223, 1153, 1224, 1153,
1225, 1157, 1226, 1157, // NOLINT
1227, 1161, 1228, 1161, 1229, 1165,
1230, 1165, 1231, 1137, 1232, 1169,
1233, 1169, 1234, 1173, // NOLINT
1235, 1173, 1236, 1177, 1237, 1177,
1238, 1181, 1239, 1181, 1240, 1185,
1241, 1185, 1242, 1189, // NOLINT
1243, 1189, 1244, 1193, 1245, 1193,
1246, 1197, 1247, 1197, 1248, 1201,
1249, 1201, 1250, 1205, // NOLINT
1251, 1205, 1252, 1209, 1253, 1209,
1254, 1213, 1255, 1213, 1256, 1217,
1257, 1217, 1258, 1221, // NOLINT
1259, 1221, 1260, 1225, 1261, 1225,
1262, 1229, 1263, 1229, 1264, 1233,
1265, 1233, 1266, 1237, // NOLINT
1267, 1237, 1268, 1241, 1269, 1241,
1270, 1245, 1271, 1245, 1272, 1249,
1273, 1249, 1274, 1253, // NOLINT
1275, 1253, 1276, 1257, 1277, 1257,
1278, 1261, 1279, 1261, 1280, 1265,
1281, 1265, 1282, 1269, // NOLINT
1283, 1269, 1284, 1273, 1285, 1273,
1286, 1277, 1287, 1277, 1288, 1281,
1289, 1281, 1290, 1285, // NOLINT
1291, 1285, 1292, 1289, 1293, 1289,
1294, 1293, 1295, 1293, 1296, 1297,
1297, 1297, 1298, 1301, // NOLINT
1299, 1301, 1300, 1305, 1301, 1305,
1302, 1309, 1303, 1309, 1304, 1313,
1305, 1313, 1306, 1317, // NOLINT
1307, 1317, 1308, 1321, 1309, 1321,
1310, 1325, 1311, 1325, 1312, 1329,
1313, 1329, 1314, 1333, // NOLINT
1315, 1333, 1316, 1337, 1317, 1337,
1318, 1341, 1319, 1341, 1320, 1345,
1321, 1345, 1322, 1349, // NOLINT
1323, 1349, 1324, 1353, 1325, 1353,
1326, 1357, 1327, 1357, 1073743153, 1361,
1366, 1365, 1073743201, 1361, // NOLINT
1414, 1365, 1073746080, 1369, 4293, 1373,
4295, 1377, 4301, 1381, 7545, 1385,
7549, 1389, 7680, 1393, // NOLINT
7681, 1393, 7682, 1397, 7683, 1397,
7684, 1401, 7685, 1401, 7686, 1405,
7687, 1405, 7688, 1409, // NOLINT
7689, 1409, 7690, 1413, 7691, 1413,
7692, 1417, 7693, 1417, 7694, 1421,
7695, 1421, 7696, 1425, // NOLINT
7697, 1425, 7698, 1429, 7699, 1429,
7700, 1433, 7701, 1433, 7702, 1437,
7703, 1437, 7704, 1441, // NOLINT
7705, 1441, 7706, 1445, 7707, 1445,
7708, 1449, 7709, 1449, 7710, 1453,
7711, 1453, 7712, 1457, // NOLINT
7713, 1457, 7714, 1461, 7715, 1461,
7716, 1465, 7717, 1465, 7718, 1469,
7719, 1469, 7720, 1473, // NOLINT
7721, 1473, 7722, 1477, 7723, 1477,
7724, 1481, 7725, 1481, 7726, 1485,
7727, 1485, 7728, 1489, // NOLINT
7729, 1489, 7730, 1493, 7731, 1493,
7732, 1497, 7733, 1497, 7734, 1501,
7735, 1501, 7736, 1505, // NOLINT
7737, 1505, 7738, 1509, 7739, 1509,
7740, 1513, 7741, 1513, 7742, 1517,
7743, 1517, 7744, 1521, // NOLINT
7745, 1521, 7746, 1525, 7747, 1525,
7748, 1529, 7749, 1529, 7750, 1533,
7751, 1533, 7752, 1537, // NOLINT
7753, 1537, 7754, 1541, 7755, 1541,
7756, 1545, 7757, 1545, 7758, 1549,
7759, 1549, 7760, 1553, // NOLINT
7761, 1553, 7762, 1557, 7763, 1557,
7764, 1561, 7765, 1561, 7766, 1565,
7767, 1565, 7768, 1569, // NOLINT
7769, 1569, 7770, 1573, 7771, 1573,
7772, 1577, 7773, 1577, 7774, 1581,
7775, 1581, 7776, 1585, // NOLINT
7777, 1585, 7778, 1589, 7779, 1589,
7780, 1593, 7781, 1593, 7782, 1597,
7783, 1597, 7784, 1601, // NOLINT
7785, 1601, 7786, 1605, 7787, 1605,
7788, 1609, 7789, 1609, 7790, 1613,
7791, 1613, 7792, 1617, // NOLINT
7793, 1617, 7794, 1621, 7795, 1621,
7796, 1625, 7797, 1625, 7798, 1629,
7799, 1629, 7800, 1633, // NOLINT
7801, 1633, 7802, 1637, 7803, 1637,
7804, 1641, 7805, 1641, 7806, 1645,
7807, 1645, 7808, 1649, // NOLINT
7809, 1649, 7810, 1653, 7811, 1653,
7812, 1657, 7813, 1657, 7814, 1661,
7815, 1661, 7816, 1665, // NOLINT
7817, 1665, 7818, 1669, 7819, 1669,
7820, 1673, 7821, 1673, 7822, 1677,
7823, 1677, 7824, 1681, // NOLINT
7825, 1681, 7826, 1685, 7827, 1685,
7828, 1689, 7829, 1689, 7835, 1585,
7840, 1693, 7841, 1693, // NOLINT
7842, 1697, 7843, 1697, 7844, 1701,
7845, 1701, 7846, 1705, 7847, 1705,
7848, 1709, 7849, 1709, // NOLINT
7850, 1713, 7851, 1713, 7852, 1717,
7853, 1717, 7854, 1721, 7855, 1721,
7856, 1725, 7857, 1725, // NOLINT
7858, 1729, 7859, 1729, 7860, 1733,
7861, 1733, 7862, 1737, 7863, 1737,
7864, 1741, 7865, 1741, // NOLINT
7866, 1745, 7867, 1745, 7868, 1749,
7869, 1749, 7870, 1753, 7871, 1753,
7872, 1757, 7873, 1757, // NOLINT
7874, 1761, 7875, 1761, 7876, 1765,
7877, 1765, 7878, 1769, 7879, 1769,
7880, 1773, 7881, 1773, // NOLINT
7882, 1777, 7883, 1777, 7884, 1781,
7885, 1781, 7886, 1785, 7887, 1785,
7888, 1789, 7889, 1789, // NOLINT
7890, 1793, 7891, 1793, 7892, 1797,
7893, 1797, 7894, 1801, 7895, 1801,
7896, 1805, 7897, 1805, // NOLINT
7898, 1809, 7899, 1809, 7900, 1813,
7901, 1813, 7902, 1817, 7903, 1817,
7904, 1821, 7905, 1821, // NOLINT
7906, 1825, 7907, 1825, 7908, 1829,
7909, 1829, 7910, 1833, 7911, 1833,
7912, 1837, 7913, 1837, // NOLINT
7914, 1841, 7915, 1841, 7916, 1845,
7917, 1845, 7918, 1849, 7919, 1849,
7920, 1853, 7921, 1853, // NOLINT
7922, 1857, 7923, 1857, 7924, 1861,
7925, 1861, 7926, 1865, 7927, 1865,
7928, 1869, 7929, 1869, // NOLINT
7930, 1873, 7931, 1873, 7932, 1877,
7933, 1877, 7934, 1881, 7935, 1881,
1073749760, 1885, 7943, 1889, // NOLINT
1073749768, 1885, 7951, 1889, 1073749776, 1893,
7957, 1897, 1073749784, 1893, 7965, 1897,
1073749792, 1901, 7975, 1905, // NOLINT
1073749800, 1901, 7983, 1905, 1073749808, 1909,
7991, 1913, 1073749816, 1909, 7999, 1913,
1073749824, 1917, 8005, 1921, // NOLINT
1073749832, 1917, 8013, 1921, 8017, 1925,
8019, 1929, 8021, 1933, 8023, 1937,
8025, 1925, 8027, 1929, // NOLINT
8029, 1933, 8031, 1937, 1073749856, 1941,
8039, 1945, 1073749864, 1941, 8047, 1945,
1073749872, 1949, 8049, 1953, // NOLINT
1073749874, 1957, 8053, 1961, 1073749878, 1965,
8055, 1969, 1073749880, 1973, 8057, 1977,
1073749882, 1981, 8059, 1985, // NOLINT
1073749884, 1989, 8061, 1993, 1073749936, 1997,
8113, 2001, 1073749944, 1997, 8121, 2001,
1073749946, 1949, 8123, 1953, // NOLINT
8126, 749, 1073749960, 1957, 8139, 1961,
1073749968, 2005, 8145, 2009, 1073749976, 2005,
8153, 2009, 1073749978, 1965, // NOLINT
8155, 1969, 1073749984, 2013, 8161, 2017,
8165, 2021, 1073749992, 2013, 8169, 2017,
1073749994, 1981, 8171, 1985, // NOLINT
8172, 2021, 1073750008, 1973, 8185, 1977,
1073750010, 1989, 8187, 1993}; // NOLINT
static const uint16_t kEcma262UnCanonicalizeMultiStrings0Size = 507; // NOLINT
static const MultiCharacterSpecialCase<2> kEcma262UnCanonicalizeMultiStrings1[83] = { // NOLINT
{{8498, 8526}}, {{8544, 8560}}, {{8559, 8575}}, {{8579, 8580}}, // NOLINT
{{9398, 9424}}, {{9423, 9449}}, {{11264, 11312}}, {{11310, 11358}}, // NOLINT
{{11360, 11361}}, {{619, 11362}}, {{7549, 11363}}, {{637, 11364}}, // NOLINT
{{570, 11365}}, {{574, 11366}}, {{11367, 11368}}, {{11369, 11370}}, // NOLINT
{{11371, 11372}}, {{593, 11373}}, {{625, 11374}}, {{592, 11375}}, // NOLINT
{{594, 11376}}, {{11378, 11379}}, {{11381, 11382}}, {{575, 11390}}, // NOLINT
{{576, 11391}}, {{11392, 11393}}, {{11394, 11395}}, {{11396, 11397}}, // NOLINT
{{11398, 11399}}, {{11400, 11401}}, {{11402, 11403}}, {{11404, 11405}}, // NOLINT
{{11406, 11407}}, {{11408, 11409}}, {{11410, 11411}}, {{11412, 11413}}, // NOLINT
{{11414, 11415}}, {{11416, 11417}}, {{11418, 11419}}, {{11420, 11421}}, // NOLINT
{{11422, 11423}}, {{11424, 11425}}, {{11426, 11427}}, {{11428, 11429}}, // NOLINT
{{11430, 11431}}, {{11432, 11433}}, {{11434, 11435}}, {{11436, 11437}}, // NOLINT
{{11438, 11439}}, {{11440, 11441}}, {{11442, 11443}}, {{11444, 11445}}, // NOLINT
{{11446, 11447}}, {{11448, 11449}}, {{11450, 11451}}, {{11452, 11453}}, // NOLINT
{{11454, 11455}}, {{11456, 11457}}, {{11458, 11459}}, {{11460, 11461}}, // NOLINT
{{11462, 11463}}, {{11464, 11465}}, {{11466, 11467}}, {{11468, 11469}}, // NOLINT
{{11470, 11471}}, {{11472, 11473}}, {{11474, 11475}}, {{11476, 11477}}, // NOLINT
{{11478, 11479}}, {{11480, 11481}}, {{11482, 11483}}, {{11484, 11485}}, // NOLINT
{{11486, 11487}}, {{11488, 11489}}, {{11490, 11491}}, {{11499, 11500}}, // NOLINT
{{11501, 11502}}, {{11506, 11507}}, {{4256, 11520}}, {{4293, 11557}}, // NOLINT
{{4295, 11559}}, {{4301, 11565}}, {{kSentinel}} }; // NOLINT
static const uint16_t kEcma262UnCanonicalizeTable1Size = 149; // NOLINT
static const int32_t kEcma262UnCanonicalizeTable1[298] = {
306, 1, 334, 1, 1073742176, 5, 367, 9, 1073742192, 5, 383, 9, 387, 13, 388, 13, // NOLINT
1073743030, 17, 1231, 21, 1073743056, 17, 1257, 21, 1073744896, 25, 3118, 29, 1073744944, 25, 3166, 29, // NOLINT
3168, 33, 3169, 33, 3170, 37, 3171, 41, 3172, 45, 3173, 49, 3174, 53, 3175, 57, // NOLINT
3176, 57, 3177, 61, 3178, 61, 3179, 65, 3180, 65, 3181, 69, 3182, 73, 3183, 77, // NOLINT
3184, 81, 3186, 85, 3187, 85, 3189, 89, 3190, 89, 1073745022, 93, 3199, 97, 3200, 101, // NOLINT
3201, 101, 3202, 105, 3203, 105, 3204, 109, 3205, 109, 3206, 113, 3207, 113, 3208, 117, // NOLINT
3209, 117, 3210, 121, 3211, 121, 3212, 125, 3213, 125, 3214, 129, 3215, 129, 3216, 133, // NOLINT
3217, 133, 3218, 137, 3219, 137, 3220, 141, 3221, 141, 3222, 145, 3223, 145, 3224, 149, // NOLINT
3225, 149, 3226, 153, 3227, 153, 3228, 157, 3229, 157, 3230, 161, 3231, 161, 3232, 165, // NOLINT
3233, 165, 3234, 169, 3235, 169, 3236, 173, 3237, 173, 3238, 177, 3239, 177, 3240, 181, // NOLINT
3241, 181, 3242, 185, 3243, 185, 3244, 189, 3245, 189, 3246, 193, 3247, 193, 3248, 197, // NOLINT
3249, 197, 3250, 201, 3251, 201, 3252, 205, 3253, 205, 3254, 209, 3255, 209, 3256, 213, // NOLINT
3257, 213, 3258, 217, 3259, 217, 3260, 221, 3261, 221, 3262, 225, 3263, 225, 3264, 229, // NOLINT
3265, 229, 3266, 233, 3267, 233, 3268, 237, 3269, 237, 3270, 241, 3271, 241, 3272, 245, // NOLINT
3273, 245, 3274, 249, 3275, 249, 3276, 253, 3277, 253, 3278, 257, 3279, 257, 3280, 261, // NOLINT
3281, 261, 3282, 265, 3283, 265, 3284, 269, 3285, 269, 3286, 273, 3287, 273, 3288, 277, // NOLINT
3289, 277, 3290, 281, 3291, 281, 3292, 285, 3293, 285, 3294, 289, 3295, 289, 3296, 293, // NOLINT
3297, 293, 3298, 297, 3299, 297, 3307, 301, 3308, 301, 3309, 305, 3310, 305, 3314, 309, // NOLINT
3315, 309, 1073745152, 313, 3365, 317, 3367, 321, 3373, 325 }; // NOLINT
static const uint16_t kEcma262UnCanonicalizeMultiStrings1Size = 83; // NOLINT
static const MultiCharacterSpecialCase<2>
kEcma262UnCanonicalizeMultiStrings5[104] = { // NOLINT
{{42560, 42561}},
{{42562, 42563}},
{{42564, 42565}},
{{42566, 42567}}, // NOLINT
{{42568, 42569}},
{{42570, 42571}},
{{42572, 42573}},
{{42574, 42575}}, // NOLINT
{{42576, 42577}},
{{42578, 42579}},
{{42580, 42581}},
{{42582, 42583}}, // NOLINT
{{42584, 42585}},
{{42586, 42587}},
{{42588, 42589}},
{{42590, 42591}}, // NOLINT
{{42592, 42593}},
{{42594, 42595}},
{{42596, 42597}},
{{42598, 42599}}, // NOLINT
{{42600, 42601}},
{{42602, 42603}},
{{42604, 42605}},
{{42624, 42625}}, // NOLINT
{{42626, 42627}},
{{42628, 42629}},
{{42630, 42631}},
{{42632, 42633}}, // NOLINT
{{42634, 42635}},
{{42636, 42637}},
{{42638, 42639}},
{{42640, 42641}}, // NOLINT
{{42642, 42643}},
{{42644, 42645}},
{{42646, 42647}},
{{42648, 42649}}, // NOLINT
{{42650, 42651}},
{{42786, 42787}},
{{42788, 42789}},
{{42790, 42791}}, // NOLINT
{{42792, 42793}},
{{42794, 42795}},
{{42796, 42797}},
{{42798, 42799}}, // NOLINT
{{42802, 42803}},
{{42804, 42805}},
{{42806, 42807}},
{{42808, 42809}}, // NOLINT
{{42810, 42811}},
{{42812, 42813}},
{{42814, 42815}},
{{42816, 42817}}, // NOLINT
{{42818, 42819}},
{{42820, 42821}},
{{42822, 42823}},
{{42824, 42825}}, // NOLINT
{{42826, 42827}},
{{42828, 42829}},
{{42830, 42831}},
{{42832, 42833}}, // NOLINT
{{42834, 42835}},
{{42836, 42837}},
{{42838, 42839}},
{{42840, 42841}}, // NOLINT
{{42842, 42843}},
{{42844, 42845}},
{{42846, 42847}},
{{42848, 42849}}, // NOLINT
{{42850, 42851}},
{{42852, 42853}},
{{42854, 42855}},
{{42856, 42857}}, // NOLINT
{{42858, 42859}},
{{42860, 42861}},
{{42862, 42863}},
{{42873, 42874}}, // NOLINT
{{42875, 42876}},
{{7545, 42877}},
{{42878, 42879}},
{{42880, 42881}}, // NOLINT
{{42882, 42883}},
{{42884, 42885}},
{{42886, 42887}},
{{42891, 42892}}, // NOLINT
{{613, 42893}},
{{42896, 42897}},
{{42898, 42899}},
{{42902, 42903}}, // NOLINT
{{42904, 42905}},
{{42906, 42907}},
{{42908, 42909}},
{{42910, 42911}}, // NOLINT
{{42912, 42913}},
{{42914, 42915}},
{{42916, 42917}},
{{42918, 42919}}, // NOLINT
{{42920, 42921}},
{{614, 42922}},
{{604, 42923}},
{{609, 42924}}, // NOLINT
{{620, 42925}},
{{670, 42928}},
{{647, 42929}},
{{kSentinel}}}; // NOLINT
static const uint16_t kEcma262UnCanonicalizeTable5Size = 198; // NOLINT
static const int32_t kEcma262UnCanonicalizeTable5
[396] = {1600, 1, 1601, 1, 1602, 5, 1603, 5,
1604, 9, 1605, 9, 1606, 13, 1607, 13, // NOLINT
1608, 17, 1609, 17, 1610, 21, 1611, 21,
1612, 25, 1613, 25, 1614, 29, 1615, 29, // NOLINT
1616, 33, 1617, 33, 1618, 37, 1619, 37,
1620, 41, 1621, 41, 1622, 45, 1623, 45, // NOLINT
1624, 49, 1625, 49, 1626, 53, 1627, 53,
1628, 57, 1629, 57, 1630, 61, 1631, 61, // NOLINT
1632, 65, 1633, 65, 1634, 69, 1635, 69,
1636, 73, 1637, 73, 1638, 77, 1639, 77, // NOLINT
1640, 81, 1641, 81, 1642, 85, 1643, 85,
1644, 89, 1645, 89, 1664, 93, 1665, 93, // NOLINT
1666, 97, 1667, 97, 1668, 101, 1669, 101,
1670, 105, 1671, 105, 1672, 109, 1673, 109, // NOLINT
1674, 113, 1675, 113, 1676, 117, 1677, 117,
1678, 121, 1679, 121, 1680, 125, 1681, 125, // NOLINT
1682, 129, 1683, 129, 1684, 133, 1685, 133,
1686, 137, 1687, 137, 1688, 141, 1689, 141, // NOLINT
1690, 145, 1691, 145, 1826, 149, 1827, 149,
1828, 153, 1829, 153, 1830, 157, 1831, 157, // NOLINT
1832, 161, 1833, 161, 1834, 165, 1835, 165,
1836, 169, 1837, 169, 1838, 173, 1839, 173, // NOLINT
1842, 177, 1843, 177, 1844, 181, 1845, 181,
1846, 185, 1847, 185, 1848, 189, 1849, 189, // NOLINT
1850, 193, 1851, 193, 1852, 197, 1853, 197,
1854, 201, 1855, 201, 1856, 205, 1857, 205, // NOLINT
1858, 209, 1859, 209, 1860, 213, 1861, 213,
1862, 217, 1863, 217, 1864, 221, 1865, 221, // NOLINT
1866, 225, 1867, 225, 1868, 229, 1869, 229,
1870, 233, 1871, 233, 1872, 237, 1873, 237, // NOLINT
1874, 241, 1875, 241, 1876, 245, 1877, 245,
1878, 249, 1879, 249, 1880, 253, 1881, 253, // NOLINT
1882, 257, 1883, 257, 1884, 261, 1885, 261,
1886, 265, 1887, 265, 1888, 269, 1889, 269, // NOLINT
1890, 273, 1891, 273, 1892, 277, 1893, 277,
1894, 281, 1895, 281, 1896, 285, 1897, 285, // NOLINT
1898, 289, 1899, 289, 1900, 293, 1901, 293,
1902, 297, 1903, 297, 1913, 301, 1914, 301, // NOLINT
1915, 305, 1916, 305, 1917, 309, 1918, 313,
1919, 313, 1920, 317, 1921, 317, 1922, 321, // NOLINT
1923, 321, 1924, 325, 1925, 325, 1926, 329,
1927, 329, 1931, 333, 1932, 333, 1933, 337, // NOLINT
1936, 341, 1937, 341, 1938, 345, 1939, 345,
1942, 349, 1943, 349, 1944, 353, 1945, 353, // NOLINT
1946, 357, 1947, 357, 1948, 361, 1949, 361,
1950, 365, 1951, 365, 1952, 369, 1953, 369, // NOLINT
1954, 373, 1955, 373, 1956, 377, 1957, 377,
1958, 381, 1959, 381, 1960, 385, 1961, 385, // NOLINT
1962, 389, 1963, 393, 1964, 397, 1965, 401,
1968, 405, 1969, 409}; // NOLINT
static const uint16_t kEcma262UnCanonicalizeMultiStrings5Size = 104; // NOLINT
static const MultiCharacterSpecialCase<2> kEcma262UnCanonicalizeMultiStrings7[3] = { // NOLINT
{{65313, 65345}}, {{65338, 65370}}, {{kSentinel}} }; // NOLINT
static const uint16_t kEcma262UnCanonicalizeTable7Size = 4; // NOLINT
static const int32_t kEcma262UnCanonicalizeTable7[8] = {
1073749793, 1, 7994, 5, 1073749825, 1, 8026, 5 }; // NOLINT
static const uint16_t kEcma262UnCanonicalizeMultiStrings7Size = 3; // NOLINT
int Ecma262UnCanonicalize::Convert(uchar c,
uchar n,
uchar* result,
bool* allow_caching_ptr) {
int chunk_index = c >> 13;
switch (chunk_index) {
case 0: return LookupMapping<true>(kEcma262UnCanonicalizeTable0,
kEcma262UnCanonicalizeTable0Size,
kEcma262UnCanonicalizeMultiStrings0,
c,
n,
result,
allow_caching_ptr);
case 1: return LookupMapping<true>(kEcma262UnCanonicalizeTable1,
kEcma262UnCanonicalizeTable1Size,
kEcma262UnCanonicalizeMultiStrings1,
c,
n,
result,
allow_caching_ptr);
case 5: return LookupMapping<true>(kEcma262UnCanonicalizeTable5,
kEcma262UnCanonicalizeTable5Size,
kEcma262UnCanonicalizeMultiStrings5,
c,
n,
result,
allow_caching_ptr);
case 7: return LookupMapping<true>(kEcma262UnCanonicalizeTable7,
kEcma262UnCanonicalizeTable7Size,
kEcma262UnCanonicalizeMultiStrings7,
c,
n,
result,
allow_caching_ptr);
default: return 0;
}
}
static const MultiCharacterSpecialCase<1> kCanonicalizationRangeMultiStrings0[1] = { // NOLINT
{{kSentinel}} }; // NOLINT
static const uint16_t kCanonicalizationRangeTable0Size = 70; // NOLINT
static const int32_t kCanonicalizationRangeTable0[140] = {
1073741889, 100, 90, 0, 1073741921, 100, 122, 0, 1073742016, 88, 214, 0, 1073742040, 24, 222, 0, // NOLINT
1073742048, 88, 246, 0, 1073742072, 24, 254, 0, 1073742715, 8, 893, 0, 1073742728, 8, 906, 0, // NOLINT
1073742749, 8, 927, 0, 1073742759, 16, 939, 0, 1073742765, 8, 943, 0, 1073742781, 8, 959, 0, // NOLINT
1073742791, 16, 971, 0, 1073742845, 8, 1023, 0, 1073742848, 60, 1039, 0, 1073742864, 124, 1071, 0, // NOLINT
1073742896, 124, 1103, 0, 1073742928, 60, 1119, 0, 1073743153, 148, 1366, 0, 1073743201, 148, 1414, 0, // NOLINT
1073746080, 148, 4293, 0, 1073749760, 28, 7943, 0, 1073749768, 28, 7951, 0, 1073749776, 20, 7957, 0, // NOLINT
1073749784, 20, 7965, 0, 1073749792, 28, 7975, 0, 1073749800, 28, 7983, 0, 1073749808, 28, 7991, 0, // NOLINT
1073749816, 28, 7999, 0, 1073749824, 20, 8005, 0, 1073749832, 20, 8013, 0, 1073749856, 28, 8039, 0, // NOLINT
1073749864, 28, 8047, 0, 1073749874, 12, 8053, 0, 1073749960, 12, 8139, 0 }; // NOLINT
static const uint16_t kCanonicalizationRangeMultiStrings0Size = 1; // NOLINT
static const MultiCharacterSpecialCase<1> kCanonicalizationRangeMultiStrings1[1] = { // NOLINT
{{kSentinel}} }; // NOLINT
static const uint16_t kCanonicalizationRangeTable1Size = 14; // NOLINT
static const int32_t kCanonicalizationRangeTable1[28] = {
1073742176, 60, 367, 0, 1073742192, 60, 383, 0, 1073743030, 100, 1231, 0, 1073743056, 100, 1257, 0, // NOLINT
1073744896, 184, 3118, 0, 1073744944, 184, 3166, 0, 1073745152, 148, 3365, 0 }; // NOLINT
static const uint16_t kCanonicalizationRangeMultiStrings1Size = 1; // NOLINT
static const MultiCharacterSpecialCase<1> kCanonicalizationRangeMultiStrings7[1] = { // NOLINT
{{kSentinel}} }; // NOLINT
static const uint16_t kCanonicalizationRangeTable7Size = 4; // NOLINT
static const int32_t kCanonicalizationRangeTable7[8] = {
1073749793, 100, 7994, 0, 1073749825, 100, 8026, 0 }; // NOLINT
static const uint16_t kCanonicalizationRangeMultiStrings7Size = 1; // NOLINT
int CanonicalizationRange::Convert(uchar c,
uchar n,
uchar* result,
bool* allow_caching_ptr) {
int chunk_index = c >> 13;
switch (chunk_index) {
case 0: return LookupMapping<false>(kCanonicalizationRangeTable0,
kCanonicalizationRangeTable0Size,
kCanonicalizationRangeMultiStrings0,
c,
n,
result,
allow_caching_ptr);
case 1: return LookupMapping<false>(kCanonicalizationRangeTable1,
kCanonicalizationRangeTable1Size,
kCanonicalizationRangeMultiStrings1,
c,
n,
result,
allow_caching_ptr);
case 7: return LookupMapping<false>(kCanonicalizationRangeTable7,
kCanonicalizationRangeTable7Size,
kCanonicalizationRangeMultiStrings7,
c,
n,
result,
allow_caching_ptr);
default: return 0;
}
}
const uchar UnicodeData::kMaxCodePoint = 65533;
int UnicodeData::GetByteCount() {
return kUppercaseTable0Size * sizeof(int32_t) // NOLINT
+ kUppercaseTable1Size * sizeof(int32_t) // NOLINT
+ kUppercaseTable5Size * sizeof(int32_t) // NOLINT
+ kUppercaseTable7Size * sizeof(int32_t) // NOLINT
+ kLowercaseTable0Size * sizeof(int32_t) // NOLINT
+ kLowercaseTable1Size * sizeof(int32_t) // NOLINT
+ kLowercaseTable5Size * sizeof(int32_t) // NOLINT
+ kLowercaseTable7Size * sizeof(int32_t) // NOLINT
+ kLetterTable0Size * sizeof(int32_t) // NOLINT
+ kLetterTable1Size * sizeof(int32_t) // NOLINT
+ kLetterTable2Size * sizeof(int32_t) // NOLINT
+ kLetterTable3Size * sizeof(int32_t) // NOLINT
+ kLetterTable4Size * sizeof(int32_t) // NOLINT
+ kLetterTable5Size * sizeof(int32_t) // NOLINT
+ kLetterTable6Size * sizeof(int32_t) // NOLINT
+ kLetterTable7Size * sizeof(int32_t) // NOLINT
+ kID_StartTable0Size * sizeof(int32_t) // NOLINT
+ kID_StartTable1Size * sizeof(int32_t) // NOLINT
+ kID_StartTable2Size * sizeof(int32_t) // NOLINT
+ kID_StartTable3Size * sizeof(int32_t) // NOLINT
+ kID_StartTable4Size * sizeof(int32_t) // NOLINT
+ kID_StartTable5Size * sizeof(int32_t) // NOLINT
+ kID_StartTable6Size * sizeof(int32_t) // NOLINT
+ kID_StartTable7Size * sizeof(int32_t) // NOLINT
+ kID_ContinueTable0Size * sizeof(int32_t) // NOLINT
+ kID_ContinueTable1Size * sizeof(int32_t) // NOLINT
+ kID_ContinueTable5Size * sizeof(int32_t) // NOLINT
+ kID_ContinueTable7Size * sizeof(int32_t) // NOLINT
+ kWhiteSpaceTable0Size * sizeof(int32_t) // NOLINT
+ kWhiteSpaceTable1Size * sizeof(int32_t) // NOLINT
+ kWhiteSpaceTable7Size * sizeof(int32_t) // NOLINT
+ kLineTerminatorTable0Size * sizeof(int32_t) // NOLINT
+ kLineTerminatorTable1Size * sizeof(int32_t) // NOLINT
+
kToLowercaseMultiStrings0Size *
sizeof(MultiCharacterSpecialCase<2>) // NOLINT
+
kToLowercaseMultiStrings1Size *
sizeof(MultiCharacterSpecialCase<1>) // NOLINT
+
kToLowercaseMultiStrings5Size *
sizeof(MultiCharacterSpecialCase<1>) // NOLINT
+
kToLowercaseMultiStrings7Size *
sizeof(MultiCharacterSpecialCase<1>) // NOLINT
+
kToUppercaseMultiStrings0Size *
sizeof(MultiCharacterSpecialCase<3>) // NOLINT
+
kToUppercaseMultiStrings1Size *
sizeof(MultiCharacterSpecialCase<1>) // NOLINT
+
kToUppercaseMultiStrings5Size *
sizeof(MultiCharacterSpecialCase<1>) // NOLINT
+
kToUppercaseMultiStrings7Size *
sizeof(MultiCharacterSpecialCase<3>) // NOLINT
+
kEcma262CanonicalizeMultiStrings0Size *
sizeof(MultiCharacterSpecialCase<1>) // NOLINT
+
kEcma262CanonicalizeMultiStrings1Size *
sizeof(MultiCharacterSpecialCase<1>) // NOLINT
+
kEcma262CanonicalizeMultiStrings5Size *
sizeof(MultiCharacterSpecialCase<1>) // NOLINT
+
kEcma262CanonicalizeMultiStrings7Size *
sizeof(MultiCharacterSpecialCase<1>) // NOLINT
+
kEcma262UnCanonicalizeMultiStrings0Size *
sizeof(MultiCharacterSpecialCase<4>) // NOLINT
+
kEcma262UnCanonicalizeMultiStrings1Size *
sizeof(MultiCharacterSpecialCase<2>) // NOLINT
+
kEcma262UnCanonicalizeMultiStrings5Size *
sizeof(MultiCharacterSpecialCase<2>) // NOLINT
+
kEcma262UnCanonicalizeMultiStrings7Size *
sizeof(MultiCharacterSpecialCase<2>) // NOLINT
+
kCanonicalizationRangeMultiStrings0Size *
sizeof(MultiCharacterSpecialCase<1>) // NOLINT
+
kCanonicalizationRangeMultiStrings1Size *
sizeof(MultiCharacterSpecialCase<1>) // NOLINT
+
kCanonicalizationRangeMultiStrings7Size *
sizeof(MultiCharacterSpecialCase<1>); // NOLINT
}
} // namespace unibrow