ucode-mod-html: fix build with gcc 5
[project/luci.git] / contrib / package / ucode-mod-html / src / html.c
1 /*
2 * Copyright (C) 2022 Jo-Philipp Wich <jo@mein.io>
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17 #define _GNU_SOURCE
18 #include <stdlib.h>
19 #include <stdbool.h>
20 #include <stdint.h>
21 #include <string.h>
22 #include <limits.h>
23 #include <unistd.h>
24 #include <ctype.h>
25
26 #include "ucode/module.h"
27
28
29 typedef enum {
30 T_TEXT,
31 T_RAW,
32 T_OPEN,
33 T_ATTR,
34 T_CLOSE,
35 T_COMMENT,
36 T_CDATA,
37 T_PROCINST,
38 T_EOF
39 } html_token_type_t;
40
41 typedef bool (*html_token_callback_t)(html_token_type_t, const char *, size_t, void *);
42
43
44 /* The array below encodes all named character entities as specified in
45 * https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references
46 *
47 * Format of value is:
48 * bit 0 - 20: value of second unicode codepoint
49 * bit 21 - 31: unused
50 * bit 32 - 53: value of first unicode codepoint
51 * bit 54 - 62: unused
52 * bit 63: flag indicating whether semicolon is mandatory
53 *
54 * The array is pre-ordered to allow for efficient binary search.
55 */
56 static const struct { const char *name; uint64_t value; } named_char_refs[] = {
57 { "AElig", 0x000000c600000000ULL },
58 { "AMP", 0x0000002600000000ULL },
59 { "Aacute", 0x000000c100000000ULL },
60 { "Abreve", 0x8000010200000000ULL },
61 { "Acirc", 0x000000c200000000ULL },
62 { "Acy", 0x8000041000000000ULL },
63 { "Afr", 0x8001d50400000000ULL },
64 { "Agrave", 0x000000c000000000ULL },
65 { "Alpha", 0x8000039100000000ULL },
66 { "Amacr", 0x8000010000000000ULL },
67 { "And", 0x80002a5300000000ULL },
68 { "Aogon", 0x8000010400000000ULL },
69 { "Aopf", 0x8001d53800000000ULL },
70 { "ApplyFunction", 0x8000206100000000ULL },
71 { "Aring", 0x000000c500000000ULL },
72 { "Ascr", 0x8001d49c00000000ULL },
73 { "Assign", 0x8000225400000000ULL },
74 { "Atilde", 0x000000c300000000ULL },
75 { "Auml", 0x000000c400000000ULL },
76 { "Backslash", 0x8000221600000000ULL },
77 { "Barv", 0x80002ae700000000ULL },
78 { "Barwed", 0x8000230600000000ULL },
79 { "Bcy", 0x8000041100000000ULL },
80 { "Because", 0x8000223500000000ULL },
81 { "Bernoullis", 0x8000212c00000000ULL },
82 { "Beta", 0x8000039200000000ULL },
83 { "Bfr", 0x8001d50500000000ULL },
84 { "Bopf", 0x8001d53900000000ULL },
85 { "Breve", 0x800002d800000000ULL },
86 { "Bscr", 0x8000212c00000000ULL },
87 { "Bumpeq", 0x8000224e00000000ULL },
88 { "CHcy", 0x8000042700000000ULL },
89 { "COPY", 0x000000a900000000ULL },
90 { "Cacute", 0x8000010600000000ULL },
91 { "Cap", 0x800022d200000000ULL },
92 { "CapitalDifferentialD", 0x8000214500000000ULL },
93 { "Cayleys", 0x8000212d00000000ULL },
94 { "Ccaron", 0x8000010c00000000ULL },
95 { "Ccedil", 0x000000c700000000ULL },
96 { "Ccirc", 0x8000010800000000ULL },
97 { "Cconint", 0x8000223000000000ULL },
98 { "Cdot", 0x8000010a00000000ULL },
99 { "Cedilla", 0x800000b800000000ULL },
100 { "CenterDot", 0x800000b700000000ULL },
101 { "Cfr", 0x8000212d00000000ULL },
102 { "Chi", 0x800003a700000000ULL },
103 { "CircleDot", 0x8000229900000000ULL },
104 { "CircleMinus", 0x8000229600000000ULL },
105 { "CirclePlus", 0x8000229500000000ULL },
106 { "CircleTimes", 0x8000229700000000ULL },
107 { "ClockwiseContourIntegral", 0x8000223200000000ULL },
108 { "CloseCurlyDoubleQuote", 0x8000201d00000000ULL },
109 { "CloseCurlyQuote", 0x8000201900000000ULL },
110 { "Colon", 0x8000223700000000ULL },
111 { "Colone", 0x80002a7400000000ULL },
112 { "Congruent", 0x8000226100000000ULL },
113 { "Conint", 0x8000222f00000000ULL },
114 { "ContourIntegral", 0x8000222e00000000ULL },
115 { "Copf", 0x8000210200000000ULL },
116 { "Coproduct", 0x8000221000000000ULL },
117 { "CounterClockwiseContourIntegral", 0x8000223300000000ULL },
118 { "Cross", 0x80002a2f00000000ULL },
119 { "Cscr", 0x8001d49e00000000ULL },
120 { "Cup", 0x800022d300000000ULL },
121 { "CupCap", 0x8000224d00000000ULL },
122 { "DD", 0x8000214500000000ULL },
123 { "DDotrahd", 0x8000291100000000ULL },
124 { "DJcy", 0x8000040200000000ULL },
125 { "DScy", 0x8000040500000000ULL },
126 { "DZcy", 0x8000040f00000000ULL },
127 { "Dagger", 0x8000202100000000ULL },
128 { "Darr", 0x800021a100000000ULL },
129 { "Dashv", 0x80002ae400000000ULL },
130 { "Dcaron", 0x8000010e00000000ULL },
131 { "Dcy", 0x8000041400000000ULL },
132 { "Del", 0x8000220700000000ULL },
133 { "Delta", 0x8000039400000000ULL },
134 { "Dfr", 0x8001d50700000000ULL },
135 { "DiacriticalAcute", 0x800000b400000000ULL },
136 { "DiacriticalDot", 0x800002d900000000ULL },
137 { "DiacriticalDoubleAcute", 0x800002dd00000000ULL },
138 { "DiacriticalGrave", 0x8000006000000000ULL },
139 { "DiacriticalTilde", 0x800002dc00000000ULL },
140 { "Diamond", 0x800022c400000000ULL },
141 { "DifferentialD", 0x8000214600000000ULL },
142 { "Dopf", 0x8001d53b00000000ULL },
143 { "Dot", 0x800000a800000000ULL },
144 { "DotDot", 0x800020dc00000000ULL },
145 { "DotEqual", 0x8000225000000000ULL },
146 { "DoubleContourIntegral", 0x8000222f00000000ULL },
147 { "DoubleDot", 0x800000a800000000ULL },
148 { "DoubleDownArrow", 0x800021d300000000ULL },
149 { "DoubleLeftArrow", 0x800021d000000000ULL },
150 { "DoubleLeftRightArrow", 0x800021d400000000ULL },
151 { "DoubleLeftTee", 0x80002ae400000000ULL },
152 { "DoubleLongLeftArrow", 0x800027f800000000ULL },
153 { "DoubleLongLeftRightArrow", 0x800027fa00000000ULL },
154 { "DoubleLongRightArrow", 0x800027f900000000ULL },
155 { "DoubleRightArrow", 0x800021d200000000ULL },
156 { "DoubleRightTee", 0x800022a800000000ULL },
157 { "DoubleUpArrow", 0x800021d100000000ULL },
158 { "DoubleUpDownArrow", 0x800021d500000000ULL },
159 { "DoubleVerticalBar", 0x8000222500000000ULL },
160 { "DownArrow", 0x8000219300000000ULL },
161 { "DownArrowBar", 0x8000291300000000ULL },
162 { "DownArrowUpArrow", 0x800021f500000000ULL },
163 { "DownBreve", 0x8000031100000000ULL },
164 { "DownLeftRightVector", 0x8000295000000000ULL },
165 { "DownLeftTeeVector", 0x8000295e00000000ULL },
166 { "DownLeftVector", 0x800021bd00000000ULL },
167 { "DownLeftVectorBar", 0x8000295600000000ULL },
168 { "DownRightTeeVector", 0x8000295f00000000ULL },
169 { "DownRightVector", 0x800021c100000000ULL },
170 { "DownRightVectorBar", 0x8000295700000000ULL },
171 { "DownTee", 0x800022a400000000ULL },
172 { "DownTeeArrow", 0x800021a700000000ULL },
173 { "Downarrow", 0x800021d300000000ULL },
174 { "Dscr", 0x8001d49f00000000ULL },
175 { "Dstrok", 0x8000011000000000ULL },
176 { "ENG", 0x8000014a00000000ULL },
177 { "ETH", 0x000000d000000000ULL },
178 { "Eacute", 0x000000c900000000ULL },
179 { "Ecaron", 0x8000011a00000000ULL },
180 { "Ecirc", 0x000000ca00000000ULL },
181 { "Ecy", 0x8000042d00000000ULL },
182 { "Edot", 0x8000011600000000ULL },
183 { "Efr", 0x8001d50800000000ULL },
184 { "Egrave", 0x000000c800000000ULL },
185 { "Element", 0x8000220800000000ULL },
186 { "Emacr", 0x8000011200000000ULL },
187 { "EmptySmallSquare", 0x800025fb00000000ULL },
188 { "EmptyVerySmallSquare", 0x800025ab00000000ULL },
189 { "Eogon", 0x8000011800000000ULL },
190 { "Eopf", 0x8001d53c00000000ULL },
191 { "Epsilon", 0x8000039500000000ULL },
192 { "Equal", 0x80002a7500000000ULL },
193 { "EqualTilde", 0x8000224200000000ULL },
194 { "Equilibrium", 0x800021cc00000000ULL },
195 { "Escr", 0x8000213000000000ULL },
196 { "Esim", 0x80002a7300000000ULL },
197 { "Eta", 0x8000039700000000ULL },
198 { "Euml", 0x000000cb00000000ULL },
199 { "Exists", 0x8000220300000000ULL },
200 { "ExponentialE", 0x8000214700000000ULL },
201 { "Fcy", 0x8000042400000000ULL },
202 { "Ffr", 0x8001d50900000000ULL },
203 { "FilledSmallSquare", 0x800025fc00000000ULL },
204 { "FilledVerySmallSquare", 0x800025aa00000000ULL },
205 { "Fopf", 0x8001d53d00000000ULL },
206 { "ForAll", 0x8000220000000000ULL },
207 { "Fouriertrf", 0x8000213100000000ULL },
208 { "Fscr", 0x8000213100000000ULL },
209 { "GJcy", 0x8000040300000000ULL },
210 { "GT", 0x0000003e00000000ULL },
211 { "Gamma", 0x8000039300000000ULL },
212 { "Gammad", 0x800003dc00000000ULL },
213 { "Gbreve", 0x8000011e00000000ULL },
214 { "Gcedil", 0x8000012200000000ULL },
215 { "Gcirc", 0x8000011c00000000ULL },
216 { "Gcy", 0x8000041300000000ULL },
217 { "Gdot", 0x8000012000000000ULL },
218 { "Gfr", 0x8001d50a00000000ULL },
219 { "Gg", 0x800022d900000000ULL },
220 { "Gopf", 0x8001d53e00000000ULL },
221 { "GreaterEqual", 0x8000226500000000ULL },
222 { "GreaterEqualLess", 0x800022db00000000ULL },
223 { "GreaterFullEqual", 0x8000226700000000ULL },
224 { "GreaterGreater", 0x80002aa200000000ULL },
225 { "GreaterLess", 0x8000227700000000ULL },
226 { "GreaterSlantEqual", 0x80002a7e00000000ULL },
227 { "GreaterTilde", 0x8000227300000000ULL },
228 { "Gscr", 0x8001d4a200000000ULL },
229 { "Gt", 0x8000226b00000000ULL },
230 { "HARDcy", 0x8000042a00000000ULL },
231 { "Hacek", 0x800002c700000000ULL },
232 { "Hat", 0x8000005e00000000ULL },
233 { "Hcirc", 0x8000012400000000ULL },
234 { "Hfr", 0x8000210c00000000ULL },
235 { "HilbertSpace", 0x8000210b00000000ULL },
236 { "Hopf", 0x8000210d00000000ULL },
237 { "HorizontalLine", 0x8000250000000000ULL },
238 { "Hscr", 0x8000210b00000000ULL },
239 { "Hstrok", 0x8000012600000000ULL },
240 { "HumpDownHump", 0x8000224e00000000ULL },
241 { "HumpEqual", 0x8000224f00000000ULL },
242 { "IEcy", 0x8000041500000000ULL },
243 { "IJlig", 0x8000013200000000ULL },
244 { "IOcy", 0x8000040100000000ULL },
245 { "Iacute", 0x000000cd00000000ULL },
246 { "Icirc", 0x000000ce00000000ULL },
247 { "Icy", 0x8000041800000000ULL },
248 { "Idot", 0x8000013000000000ULL },
249 { "Ifr", 0x8000211100000000ULL },
250 { "Igrave", 0x000000cc00000000ULL },
251 { "Im", 0x8000211100000000ULL },
252 { "Imacr", 0x8000012a00000000ULL },
253 { "ImaginaryI", 0x8000214800000000ULL },
254 { "Implies", 0x800021d200000000ULL },
255 { "Int", 0x8000222c00000000ULL },
256 { "Integral", 0x8000222b00000000ULL },
257 { "Intersection", 0x800022c200000000ULL },
258 { "InvisibleComma", 0x8000206300000000ULL },
259 { "InvisibleTimes", 0x8000206200000000ULL },
260 { "Iogon", 0x8000012e00000000ULL },
261 { "Iopf", 0x8001d54000000000ULL },
262 { "Iota", 0x8000039900000000ULL },
263 { "Iscr", 0x8000211000000000ULL },
264 { "Itilde", 0x8000012800000000ULL },
265 { "Iukcy", 0x8000040600000000ULL },
266 { "Iuml", 0x000000cf00000000ULL },
267 { "Jcirc", 0x8000013400000000ULL },
268 { "Jcy", 0x8000041900000000ULL },
269 { "Jfr", 0x8001d50d00000000ULL },
270 { "Jopf", 0x8001d54100000000ULL },
271 { "Jscr", 0x8001d4a500000000ULL },
272 { "Jsercy", 0x8000040800000000ULL },
273 { "Jukcy", 0x8000040400000000ULL },
274 { "KHcy", 0x8000042500000000ULL },
275 { "KJcy", 0x8000040c00000000ULL },
276 { "Kappa", 0x8000039a00000000ULL },
277 { "Kcedil", 0x8000013600000000ULL },
278 { "Kcy", 0x8000041a00000000ULL },
279 { "Kfr", 0x8001d50e00000000ULL },
280 { "Kopf", 0x8001d54200000000ULL },
281 { "Kscr", 0x8001d4a600000000ULL },
282 { "LJcy", 0x8000040900000000ULL },
283 { "LT", 0x0000003c00000000ULL },
284 { "Lacute", 0x8000013900000000ULL },
285 { "Lambda", 0x8000039b00000000ULL },
286 { "Lang", 0x800027ea00000000ULL },
287 { "Laplacetrf", 0x8000211200000000ULL },
288 { "Larr", 0x8000219e00000000ULL },
289 { "Lcaron", 0x8000013d00000000ULL },
290 { "Lcedil", 0x8000013b00000000ULL },
291 { "Lcy", 0x8000041b00000000ULL },
292 { "LeftAngleBracket", 0x800027e800000000ULL },
293 { "LeftArrow", 0x8000219000000000ULL },
294 { "LeftArrowBar", 0x800021e400000000ULL },
295 { "LeftArrowRightArrow", 0x800021c600000000ULL },
296 { "LeftCeiling", 0x8000230800000000ULL },
297 { "LeftDoubleBracket", 0x800027e600000000ULL },
298 { "LeftDownTeeVector", 0x8000296100000000ULL },
299 { "LeftDownVector", 0x800021c300000000ULL },
300 { "LeftDownVectorBar", 0x8000295900000000ULL },
301 { "LeftFloor", 0x8000230a00000000ULL },
302 { "LeftRightArrow", 0x8000219400000000ULL },
303 { "LeftRightVector", 0x8000294e00000000ULL },
304 { "LeftTee", 0x800022a300000000ULL },
305 { "LeftTeeArrow", 0x800021a400000000ULL },
306 { "LeftTeeVector", 0x8000295a00000000ULL },
307 { "LeftTriangle", 0x800022b200000000ULL },
308 { "LeftTriangleBar", 0x800029cf00000000ULL },
309 { "LeftTriangleEqual", 0x800022b400000000ULL },
310 { "LeftUpDownVector", 0x8000295100000000ULL },
311 { "LeftUpTeeVector", 0x8000296000000000ULL },
312 { "LeftUpVector", 0x800021bf00000000ULL },
313 { "LeftUpVectorBar", 0x8000295800000000ULL },
314 { "LeftVector", 0x800021bc00000000ULL },
315 { "LeftVectorBar", 0x8000295200000000ULL },
316 { "Leftarrow", 0x800021d000000000ULL },
317 { "Leftrightarrow", 0x800021d400000000ULL },
318 { "LessEqualGreater", 0x800022da00000000ULL },
319 { "LessFullEqual", 0x8000226600000000ULL },
320 { "LessGreater", 0x8000227600000000ULL },
321 { "LessLess", 0x80002aa100000000ULL },
322 { "LessSlantEqual", 0x80002a7d00000000ULL },
323 { "LessTilde", 0x8000227200000000ULL },
324 { "Lfr", 0x8001d50f00000000ULL },
325 { "Ll", 0x800022d800000000ULL },
326 { "Lleftarrow", 0x800021da00000000ULL },
327 { "Lmidot", 0x8000013f00000000ULL },
328 { "LongLeftArrow", 0x800027f500000000ULL },
329 { "LongLeftRightArrow", 0x800027f700000000ULL },
330 { "LongRightArrow", 0x800027f600000000ULL },
331 { "Longleftarrow", 0x800027f800000000ULL },
332 { "Longleftrightarrow", 0x800027fa00000000ULL },
333 { "Longrightarrow", 0x800027f900000000ULL },
334 { "Lopf", 0x8001d54300000000ULL },
335 { "LowerLeftArrow", 0x8000219900000000ULL },
336 { "LowerRightArrow", 0x8000219800000000ULL },
337 { "Lscr", 0x8000211200000000ULL },
338 { "Lsh", 0x800021b000000000ULL },
339 { "Lstrok", 0x8000014100000000ULL },
340 { "Lt", 0x8000226a00000000ULL },
341 { "Map", 0x8000290500000000ULL },
342 { "Mcy", 0x8000041c00000000ULL },
343 { "MediumSpace", 0x8000205f00000000ULL },
344 { "Mellintrf", 0x8000213300000000ULL },
345 { "Mfr", 0x8001d51000000000ULL },
346 { "MinusPlus", 0x8000221300000000ULL },
347 { "Mopf", 0x8001d54400000000ULL },
348 { "Mscr", 0x8000213300000000ULL },
349 { "Mu", 0x8000039c00000000ULL },
350 { "NJcy", 0x8000040a00000000ULL },
351 { "Nacute", 0x8000014300000000ULL },
352 { "Ncaron", 0x8000014700000000ULL },
353 { "Ncedil", 0x8000014500000000ULL },
354 { "Ncy", 0x8000041d00000000ULL },
355 { "NegativeMediumSpace", 0x8000200b00000000ULL },
356 { "NegativeThickSpace", 0x8000200b00000000ULL },
357 { "NegativeThinSpace", 0x8000200b00000000ULL },
358 { "NegativeVeryThinSpace", 0x8000200b00000000ULL },
359 { "NestedGreaterGreater", 0x8000226b00000000ULL },
360 { "NestedLessLess", 0x8000226a00000000ULL },
361 { "NewLine", 0x8000000a00000000ULL },
362 { "Nfr", 0x8001d51100000000ULL },
363 { "NoBreak", 0x8000206000000000ULL },
364 { "NonBreakingSpace", 0x800000a000000000ULL },
365 { "Nopf", 0x8000211500000000ULL },
366 { "Not", 0x80002aec00000000ULL },
367 { "NotCongruent", 0x8000226200000000ULL },
368 { "NotCupCap", 0x8000226d00000000ULL },
369 { "NotDoubleVerticalBar", 0x8000222600000000ULL },
370 { "NotElement", 0x8000220900000000ULL },
371 { "NotEqual", 0x8000226000000000ULL },
372 { "NotEqualTilde", 0x8000224200000338ULL },
373 { "NotExists", 0x8000220400000000ULL },
374 { "NotGreater", 0x8000226f00000000ULL },
375 { "NotGreaterEqual", 0x8000227100000000ULL },
376 { "NotGreaterFullEqual", 0x8000226700000338ULL },
377 { "NotGreaterGreater", 0x8000226b00000338ULL },
378 { "NotGreaterLess", 0x8000227900000000ULL },
379 { "NotGreaterSlantEqual", 0x80002a7e00000338ULL },
380 { "NotGreaterTilde", 0x8000227500000000ULL },
381 { "NotHumpDownHump", 0x8000224e00000338ULL },
382 { "NotHumpEqual", 0x8000224f00000338ULL },
383 { "NotLeftTriangle", 0x800022ea00000000ULL },
384 { "NotLeftTriangleBar", 0x800029cf00000338ULL },
385 { "NotLeftTriangleEqual", 0x800022ec00000000ULL },
386 { "NotLess", 0x8000226e00000000ULL },
387 { "NotLessEqual", 0x8000227000000000ULL },
388 { "NotLessGreater", 0x8000227800000000ULL },
389 { "NotLessLess", 0x8000226a00000338ULL },
390 { "NotLessSlantEqual", 0x80002a7d00000338ULL },
391 { "NotLessTilde", 0x8000227400000000ULL },
392 { "NotNestedGreaterGreater", 0x80002aa200000338ULL },
393 { "NotNestedLessLess", 0x80002aa100000338ULL },
394 { "NotPrecedes", 0x8000228000000000ULL },
395 { "NotPrecedesEqual", 0x80002aaf00000338ULL },
396 { "NotPrecedesSlantEqual", 0x800022e000000000ULL },
397 { "NotReverseElement", 0x8000220c00000000ULL },
398 { "NotRightTriangle", 0x800022eb00000000ULL },
399 { "NotRightTriangleBar", 0x800029d000000338ULL },
400 { "NotRightTriangleEqual", 0x800022ed00000000ULL },
401 { "NotSquareSubset", 0x8000228f00000338ULL },
402 { "NotSquareSubsetEqual", 0x800022e200000000ULL },
403 { "NotSquareSuperset", 0x8000229000000338ULL },
404 { "NotSquareSupersetEqual", 0x800022e300000000ULL },
405 { "NotSubset", 0x80002282000020d2ULL },
406 { "NotSubsetEqual", 0x8000228800000000ULL },
407 { "NotSucceeds", 0x8000228100000000ULL },
408 { "NotSucceedsEqual", 0x80002ab000000338ULL },
409 { "NotSucceedsSlantEqual", 0x800022e100000000ULL },
410 { "NotSucceedsTilde", 0x8000227f00000338ULL },
411 { "NotSuperset", 0x80002283000020d2ULL },
412 { "NotSupersetEqual", 0x8000228900000000ULL },
413 { "NotTilde", 0x8000224100000000ULL },
414 { "NotTildeEqual", 0x8000224400000000ULL },
415 { "NotTildeFullEqual", 0x8000224700000000ULL },
416 { "NotTildeTilde", 0x8000224900000000ULL },
417 { "NotVerticalBar", 0x8000222400000000ULL },
418 { "Nscr", 0x8001d4a900000000ULL },
419 { "Ntilde", 0x000000d100000000ULL },
420 { "Nu", 0x8000039d00000000ULL },
421 { "OElig", 0x8000015200000000ULL },
422 { "Oacute", 0x000000d300000000ULL },
423 { "Ocirc", 0x000000d400000000ULL },
424 { "Ocy", 0x8000041e00000000ULL },
425 { "Odblac", 0x8000015000000000ULL },
426 { "Ofr", 0x8001d51200000000ULL },
427 { "Ograve", 0x000000d200000000ULL },
428 { "Omacr", 0x8000014c00000000ULL },
429 { "Omega", 0x800003a900000000ULL },
430 { "Omicron", 0x8000039f00000000ULL },
431 { "Oopf", 0x8001d54600000000ULL },
432 { "OpenCurlyDoubleQuote", 0x8000201c00000000ULL },
433 { "OpenCurlyQuote", 0x8000201800000000ULL },
434 { "Or", 0x80002a5400000000ULL },
435 { "Oscr", 0x8001d4aa00000000ULL },
436 { "Oslash", 0x000000d800000000ULL },
437 { "Otilde", 0x000000d500000000ULL },
438 { "Otimes", 0x80002a3700000000ULL },
439 { "Ouml", 0x000000d600000000ULL },
440 { "OverBar", 0x8000203e00000000ULL },
441 { "OverBrace", 0x800023de00000000ULL },
442 { "OverBracket", 0x800023b400000000ULL },
443 { "OverParenthesis", 0x800023dc00000000ULL },
444 { "PartialD", 0x8000220200000000ULL },
445 { "Pcy", 0x8000041f00000000ULL },
446 { "Pfr", 0x8001d51300000000ULL },
447 { "Phi", 0x800003a600000000ULL },
448 { "Pi", 0x800003a000000000ULL },
449 { "PlusMinus", 0x800000b100000000ULL },
450 { "Poincareplane", 0x8000210c00000000ULL },
451 { "Popf", 0x8000211900000000ULL },
452 { "Pr", 0x80002abb00000000ULL },
453 { "Precedes", 0x8000227a00000000ULL },
454 { "PrecedesEqual", 0x80002aaf00000000ULL },
455 { "PrecedesSlantEqual", 0x8000227c00000000ULL },
456 { "PrecedesTilde", 0x8000227e00000000ULL },
457 { "Prime", 0x8000203300000000ULL },
458 { "Product", 0x8000220f00000000ULL },
459 { "Proportion", 0x8000223700000000ULL },
460 { "Proportional", 0x8000221d00000000ULL },
461 { "Pscr", 0x8001d4ab00000000ULL },
462 { "Psi", 0x800003a800000000ULL },
463 { "QUOT", 0x0000002200000000ULL },
464 { "Qfr", 0x8001d51400000000ULL },
465 { "Qopf", 0x8000211a00000000ULL },
466 { "Qscr", 0x8001d4ac00000000ULL },
467 { "RBarr", 0x8000291000000000ULL },
468 { "REG", 0x000000ae00000000ULL },
469 { "Racute", 0x8000015400000000ULL },
470 { "Rang", 0x800027eb00000000ULL },
471 { "Rarr", 0x800021a000000000ULL },
472 { "Rarrtl", 0x8000291600000000ULL },
473 { "Rcaron", 0x8000015800000000ULL },
474 { "Rcedil", 0x8000015600000000ULL },
475 { "Rcy", 0x8000042000000000ULL },
476 { "Re", 0x8000211c00000000ULL },
477 { "ReverseElement", 0x8000220b00000000ULL },
478 { "ReverseEquilibrium", 0x800021cb00000000ULL },
479 { "ReverseUpEquilibrium", 0x8000296f00000000ULL },
480 { "Rfr", 0x8000211c00000000ULL },
481 { "Rho", 0x800003a100000000ULL },
482 { "RightAngleBracket", 0x800027e900000000ULL },
483 { "RightArrow", 0x8000219200000000ULL },
484 { "RightArrowBar", 0x800021e500000000ULL },
485 { "RightArrowLeftArrow", 0x800021c400000000ULL },
486 { "RightCeiling", 0x8000230900000000ULL },
487 { "RightDoubleBracket", 0x800027e700000000ULL },
488 { "RightDownTeeVector", 0x8000295d00000000ULL },
489 { "RightDownVector", 0x800021c200000000ULL },
490 { "RightDownVectorBar", 0x8000295500000000ULL },
491 { "RightFloor", 0x8000230b00000000ULL },
492 { "RightTee", 0x800022a200000000ULL },
493 { "RightTeeArrow", 0x800021a600000000ULL },
494 { "RightTeeVector", 0x8000295b00000000ULL },
495 { "RightTriangle", 0x800022b300000000ULL },
496 { "RightTriangleBar", 0x800029d000000000ULL },
497 { "RightTriangleEqual", 0x800022b500000000ULL },
498 { "RightUpDownVector", 0x8000294f00000000ULL },
499 { "RightUpTeeVector", 0x8000295c00000000ULL },
500 { "RightUpVector", 0x800021be00000000ULL },
501 { "RightUpVectorBar", 0x8000295400000000ULL },
502 { "RightVector", 0x800021c000000000ULL },
503 { "RightVectorBar", 0x8000295300000000ULL },
504 { "Rightarrow", 0x800021d200000000ULL },
505 { "Ropf", 0x8000211d00000000ULL },
506 { "RoundImplies", 0x8000297000000000ULL },
507 { "Rrightarrow", 0x800021db00000000ULL },
508 { "Rscr", 0x8000211b00000000ULL },
509 { "Rsh", 0x800021b100000000ULL },
510 { "RuleDelayed", 0x800029f400000000ULL },
511 { "SHCHcy", 0x8000042900000000ULL },
512 { "SHcy", 0x8000042800000000ULL },
513 { "SOFTcy", 0x8000042c00000000ULL },
514 { "Sacute", 0x8000015a00000000ULL },
515 { "Sc", 0x80002abc00000000ULL },
516 { "Scaron", 0x8000016000000000ULL },
517 { "Scedil", 0x8000015e00000000ULL },
518 { "Scirc", 0x8000015c00000000ULL },
519 { "Scy", 0x8000042100000000ULL },
520 { "Sfr", 0x8001d51600000000ULL },
521 { "ShortDownArrow", 0x8000219300000000ULL },
522 { "ShortLeftArrow", 0x8000219000000000ULL },
523 { "ShortRightArrow", 0x8000219200000000ULL },
524 { "ShortUpArrow", 0x8000219100000000ULL },
525 { "Sigma", 0x800003a300000000ULL },
526 { "SmallCircle", 0x8000221800000000ULL },
527 { "Sopf", 0x8001d54a00000000ULL },
528 { "Sqrt", 0x8000221a00000000ULL },
529 { "Square", 0x800025a100000000ULL },
530 { "SquareIntersection", 0x8000229300000000ULL },
531 { "SquareSubset", 0x8000228f00000000ULL },
532 { "SquareSubsetEqual", 0x8000229100000000ULL },
533 { "SquareSuperset", 0x8000229000000000ULL },
534 { "SquareSupersetEqual", 0x8000229200000000ULL },
535 { "SquareUnion", 0x8000229400000000ULL },
536 { "Sscr", 0x8001d4ae00000000ULL },
537 { "Star", 0x800022c600000000ULL },
538 { "Sub", 0x800022d000000000ULL },
539 { "Subset", 0x800022d000000000ULL },
540 { "SubsetEqual", 0x8000228600000000ULL },
541 { "Succeeds", 0x8000227b00000000ULL },
542 { "SucceedsEqual", 0x80002ab000000000ULL },
543 { "SucceedsSlantEqual", 0x8000227d00000000ULL },
544 { "SucceedsTilde", 0x8000227f00000000ULL },
545 { "SuchThat", 0x8000220b00000000ULL },
546 { "Sum", 0x8000221100000000ULL },
547 { "Sup", 0x800022d100000000ULL },
548 { "Superset", 0x8000228300000000ULL },
549 { "SupersetEqual", 0x8000228700000000ULL },
550 { "Supset", 0x800022d100000000ULL },
551 { "THORN", 0x000000de00000000ULL },
552 { "TRADE", 0x8000212200000000ULL },
553 { "TSHcy", 0x8000040b00000000ULL },
554 { "TScy", 0x8000042600000000ULL },
555 { "Tab", 0x8000000900000000ULL },
556 { "Tau", 0x800003a400000000ULL },
557 { "Tcaron", 0x8000016400000000ULL },
558 { "Tcedil", 0x8000016200000000ULL },
559 { "Tcy", 0x8000042200000000ULL },
560 { "Tfr", 0x8001d51700000000ULL },
561 { "Therefore", 0x8000223400000000ULL },
562 { "Theta", 0x8000039800000000ULL },
563 { "ThickSpace", 0x8000205f0000200aULL },
564 { "ThinSpace", 0x8000200900000000ULL },
565 { "Tilde", 0x8000223c00000000ULL },
566 { "TildeEqual", 0x8000224300000000ULL },
567 { "TildeFullEqual", 0x8000224500000000ULL },
568 { "TildeTilde", 0x8000224800000000ULL },
569 { "Topf", 0x8001d54b00000000ULL },
570 { "TripleDot", 0x800020db00000000ULL },
571 { "Tscr", 0x8001d4af00000000ULL },
572 { "Tstrok", 0x8000016600000000ULL },
573 { "Uacute", 0x000000da00000000ULL },
574 { "Uarr", 0x8000219f00000000ULL },
575 { "Uarrocir", 0x8000294900000000ULL },
576 { "Ubrcy", 0x8000040e00000000ULL },
577 { "Ubreve", 0x8000016c00000000ULL },
578 { "Ucirc", 0x000000db00000000ULL },
579 { "Ucy", 0x8000042300000000ULL },
580 { "Udblac", 0x8000017000000000ULL },
581 { "Ufr", 0x8001d51800000000ULL },
582 { "Ugrave", 0x000000d900000000ULL },
583 { "Umacr", 0x8000016a00000000ULL },
584 { "UnderBar", 0x8000005f00000000ULL },
585 { "UnderBrace", 0x800023df00000000ULL },
586 { "UnderBracket", 0x800023b500000000ULL },
587 { "UnderParenthesis", 0x800023dd00000000ULL },
588 { "Union", 0x800022c300000000ULL },
589 { "UnionPlus", 0x8000228e00000000ULL },
590 { "Uogon", 0x8000017200000000ULL },
591 { "Uopf", 0x8001d54c00000000ULL },
592 { "UpArrow", 0x8000219100000000ULL },
593 { "UpArrowBar", 0x8000291200000000ULL },
594 { "UpArrowDownArrow", 0x800021c500000000ULL },
595 { "UpDownArrow", 0x8000219500000000ULL },
596 { "UpEquilibrium", 0x8000296e00000000ULL },
597 { "UpTee", 0x800022a500000000ULL },
598 { "UpTeeArrow", 0x800021a500000000ULL },
599 { "Uparrow", 0x800021d100000000ULL },
600 { "Updownarrow", 0x800021d500000000ULL },
601 { "UpperLeftArrow", 0x8000219600000000ULL },
602 { "UpperRightArrow", 0x8000219700000000ULL },
603 { "Upsi", 0x800003d200000000ULL },
604 { "Upsilon", 0x800003a500000000ULL },
605 { "Uring", 0x8000016e00000000ULL },
606 { "Uscr", 0x8001d4b000000000ULL },
607 { "Utilde", 0x8000016800000000ULL },
608 { "Uuml", 0x000000dc00000000ULL },
609 { "VDash", 0x800022ab00000000ULL },
610 { "Vbar", 0x80002aeb00000000ULL },
611 { "Vcy", 0x8000041200000000ULL },
612 { "Vdash", 0x800022a900000000ULL },
613 { "Vdashl", 0x80002ae600000000ULL },
614 { "Vee", 0x800022c100000000ULL },
615 { "Verbar", 0x8000201600000000ULL },
616 { "Vert", 0x8000201600000000ULL },
617 { "VerticalBar", 0x8000222300000000ULL },
618 { "VerticalLine", 0x8000007c00000000ULL },
619 { "VerticalSeparator", 0x8000275800000000ULL },
620 { "VerticalTilde", 0x8000224000000000ULL },
621 { "VeryThinSpace", 0x8000200a00000000ULL },
622 { "Vfr", 0x8001d51900000000ULL },
623 { "Vopf", 0x8001d54d00000000ULL },
624 { "Vscr", 0x8001d4b100000000ULL },
625 { "Vvdash", 0x800022aa00000000ULL },
626 { "Wcirc", 0x8000017400000000ULL },
627 { "Wedge", 0x800022c000000000ULL },
628 { "Wfr", 0x8001d51a00000000ULL },
629 { "Wopf", 0x8001d54e00000000ULL },
630 { "Wscr", 0x8001d4b200000000ULL },
631 { "Xfr", 0x8001d51b00000000ULL },
632 { "Xi", 0x8000039e00000000ULL },
633 { "Xopf", 0x8001d54f00000000ULL },
634 { "Xscr", 0x8001d4b300000000ULL },
635 { "YAcy", 0x8000042f00000000ULL },
636 { "YIcy", 0x8000040700000000ULL },
637 { "YUcy", 0x8000042e00000000ULL },
638 { "Yacute", 0x000000dd00000000ULL },
639 { "Ycirc", 0x8000017600000000ULL },
640 { "Ycy", 0x8000042b00000000ULL },
641 { "Yfr", 0x8001d51c00000000ULL },
642 { "Yopf", 0x8001d55000000000ULL },
643 { "Yscr", 0x8001d4b400000000ULL },
644 { "Yuml", 0x8000017800000000ULL },
645 { "ZHcy", 0x8000041600000000ULL },
646 { "Zacute", 0x8000017900000000ULL },
647 { "Zcaron", 0x8000017d00000000ULL },
648 { "Zcy", 0x8000041700000000ULL },
649 { "Zdot", 0x8000017b00000000ULL },
650 { "ZeroWidthSpace", 0x8000200b00000000ULL },
651 { "Zeta", 0x8000039600000000ULL },
652 { "Zfr", 0x8000212800000000ULL },
653 { "Zopf", 0x8000212400000000ULL },
654 { "Zscr", 0x8001d4b500000000ULL },
655 { "aacute", 0x000000e100000000ULL },
656 { "abreve", 0x8000010300000000ULL },
657 { "ac", 0x8000223e00000000ULL },
658 { "acE", 0x8000223e00000333ULL },
659 { "acd", 0x8000223f00000000ULL },
660 { "acirc", 0x000000e200000000ULL },
661 { "acute", 0x000000b400000000ULL },
662 { "acy", 0x8000043000000000ULL },
663 { "aelig", 0x000000e600000000ULL },
664 { "af", 0x8000206100000000ULL },
665 { "afr", 0x8001d51e00000000ULL },
666 { "agrave", 0x000000e000000000ULL },
667 { "alefsym", 0x8000213500000000ULL },
668 { "aleph", 0x8000213500000000ULL },
669 { "alpha", 0x800003b100000000ULL },
670 { "amacr", 0x8000010100000000ULL },
671 { "amalg", 0x80002a3f00000000ULL },
672 { "amp", 0x0000002600000000ULL },
673 { "and", 0x8000222700000000ULL },
674 { "andand", 0x80002a5500000000ULL },
675 { "andd", 0x80002a5c00000000ULL },
676 { "andslope", 0x80002a5800000000ULL },
677 { "andv", 0x80002a5a00000000ULL },
678 { "ang", 0x8000222000000000ULL },
679 { "ange", 0x800029a400000000ULL },
680 { "angle", 0x8000222000000000ULL },
681 { "angmsd", 0x8000222100000000ULL },
682 { "angmsdaa", 0x800029a800000000ULL },
683 { "angmsdab", 0x800029a900000000ULL },
684 { "angmsdac", 0x800029aa00000000ULL },
685 { "angmsdad", 0x800029ab00000000ULL },
686 { "angmsdae", 0x800029ac00000000ULL },
687 { "angmsdaf", 0x800029ad00000000ULL },
688 { "angmsdag", 0x800029ae00000000ULL },
689 { "angmsdah", 0x800029af00000000ULL },
690 { "angrt", 0x8000221f00000000ULL },
691 { "angrtvb", 0x800022be00000000ULL },
692 { "angrtvbd", 0x8000299d00000000ULL },
693 { "angsph", 0x8000222200000000ULL },
694 { "angst", 0x800000c500000000ULL },
695 { "angzarr", 0x8000237c00000000ULL },
696 { "aogon", 0x8000010500000000ULL },
697 { "aopf", 0x8001d55200000000ULL },
698 { "ap", 0x8000224800000000ULL },
699 { "apE", 0x80002a7000000000ULL },
700 { "apacir", 0x80002a6f00000000ULL },
701 { "ape", 0x8000224a00000000ULL },
702 { "apid", 0x8000224b00000000ULL },
703 { "apos", 0x8000002700000000ULL },
704 { "approx", 0x8000224800000000ULL },
705 { "approxeq", 0x8000224a00000000ULL },
706 { "aring", 0x000000e500000000ULL },
707 { "ascr", 0x8001d4b600000000ULL },
708 { "ast", 0x8000002a00000000ULL },
709 { "asymp", 0x8000224800000000ULL },
710 { "asympeq", 0x8000224d00000000ULL },
711 { "atilde", 0x000000e300000000ULL },
712 { "auml", 0x000000e400000000ULL },
713 { "awconint", 0x8000223300000000ULL },
714 { "awint", 0x80002a1100000000ULL },
715 { "bNot", 0x80002aed00000000ULL },
716 { "backcong", 0x8000224c00000000ULL },
717 { "backepsilon", 0x800003f600000000ULL },
718 { "backprime", 0x8000203500000000ULL },
719 { "backsim", 0x8000223d00000000ULL },
720 { "backsimeq", 0x800022cd00000000ULL },
721 { "barvee", 0x800022bd00000000ULL },
722 { "barwed", 0x8000230500000000ULL },
723 { "barwedge", 0x8000230500000000ULL },
724 { "bbrk", 0x800023b500000000ULL },
725 { "bbrktbrk", 0x800023b600000000ULL },
726 { "bcong", 0x8000224c00000000ULL },
727 { "bcy", 0x8000043100000000ULL },
728 { "bdquo", 0x8000201e00000000ULL },
729 { "becaus", 0x8000223500000000ULL },
730 { "because", 0x8000223500000000ULL },
731 { "bemptyv", 0x800029b000000000ULL },
732 { "bepsi", 0x800003f600000000ULL },
733 { "bernou", 0x8000212c00000000ULL },
734 { "beta", 0x800003b200000000ULL },
735 { "beth", 0x8000213600000000ULL },
736 { "between", 0x8000226c00000000ULL },
737 { "bfr", 0x8001d51f00000000ULL },
738 { "bigcap", 0x800022c200000000ULL },
739 { "bigcirc", 0x800025ef00000000ULL },
740 { "bigcup", 0x800022c300000000ULL },
741 { "bigodot", 0x80002a0000000000ULL },
742 { "bigoplus", 0x80002a0100000000ULL },
743 { "bigotimes", 0x80002a0200000000ULL },
744 { "bigsqcup", 0x80002a0600000000ULL },
745 { "bigstar", 0x8000260500000000ULL },
746 { "bigtriangledown", 0x800025bd00000000ULL },
747 { "bigtriangleup", 0x800025b300000000ULL },
748 { "biguplus", 0x80002a0400000000ULL },
749 { "bigvee", 0x800022c100000000ULL },
750 { "bigwedge", 0x800022c000000000ULL },
751 { "bkarow", 0x8000290d00000000ULL },
752 { "blacklozenge", 0x800029eb00000000ULL },
753 { "blacksquare", 0x800025aa00000000ULL },
754 { "blacktriangle", 0x800025b400000000ULL },
755 { "blacktriangledown", 0x800025be00000000ULL },
756 { "blacktriangleleft", 0x800025c200000000ULL },
757 { "blacktriangleright", 0x800025b800000000ULL },
758 { "blank", 0x8000242300000000ULL },
759 { "blk12", 0x8000259200000000ULL },
760 { "blk14", 0x8000259100000000ULL },
761 { "blk34", 0x8000259300000000ULL },
762 { "block", 0x8000258800000000ULL },
763 { "bne", 0x8000003d000020e5ULL },
764 { "bnequiv", 0x80002261000020e5ULL },
765 { "bnot", 0x8000231000000000ULL },
766 { "bopf", 0x8001d55300000000ULL },
767 { "bot", 0x800022a500000000ULL },
768 { "bottom", 0x800022a500000000ULL },
769 { "bowtie", 0x800022c800000000ULL },
770 { "boxDL", 0x8000255700000000ULL },
771 { "boxDR", 0x8000255400000000ULL },
772 { "boxDl", 0x8000255600000000ULL },
773 { "boxDr", 0x8000255300000000ULL },
774 { "boxH", 0x8000255000000000ULL },
775 { "boxHD", 0x8000256600000000ULL },
776 { "boxHU", 0x8000256900000000ULL },
777 { "boxHd", 0x8000256400000000ULL },
778 { "boxHu", 0x8000256700000000ULL },
779 { "boxUL", 0x8000255d00000000ULL },
780 { "boxUR", 0x8000255a00000000ULL },
781 { "boxUl", 0x8000255c00000000ULL },
782 { "boxUr", 0x8000255900000000ULL },
783 { "boxV", 0x8000255100000000ULL },
784 { "boxVH", 0x8000256c00000000ULL },
785 { "boxVL", 0x8000256300000000ULL },
786 { "boxVR", 0x8000256000000000ULL },
787 { "boxVh", 0x8000256b00000000ULL },
788 { "boxVl", 0x8000256200000000ULL },
789 { "boxVr", 0x8000255f00000000ULL },
790 { "boxbox", 0x800029c900000000ULL },
791 { "boxdL", 0x8000255500000000ULL },
792 { "boxdR", 0x8000255200000000ULL },
793 { "boxdl", 0x8000251000000000ULL },
794 { "boxdr", 0x8000250c00000000ULL },
795 { "boxh", 0x8000250000000000ULL },
796 { "boxhD", 0x8000256500000000ULL },
797 { "boxhU", 0x8000256800000000ULL },
798 { "boxhd", 0x8000252c00000000ULL },
799 { "boxhu", 0x8000253400000000ULL },
800 { "boxminus", 0x8000229f00000000ULL },
801 { "boxplus", 0x8000229e00000000ULL },
802 { "boxtimes", 0x800022a000000000ULL },
803 { "boxuL", 0x8000255b00000000ULL },
804 { "boxuR", 0x8000255800000000ULL },
805 { "boxul", 0x8000251800000000ULL },
806 { "boxur", 0x8000251400000000ULL },
807 { "boxv", 0x8000250200000000ULL },
808 { "boxvH", 0x8000256a00000000ULL },
809 { "boxvL", 0x8000256100000000ULL },
810 { "boxvR", 0x8000255e00000000ULL },
811 { "boxvh", 0x8000253c00000000ULL },
812 { "boxvl", 0x8000252400000000ULL },
813 { "boxvr", 0x8000251c00000000ULL },
814 { "bprime", 0x8000203500000000ULL },
815 { "breve", 0x800002d800000000ULL },
816 { "brvbar", 0x000000a600000000ULL },
817 { "bscr", 0x8001d4b700000000ULL },
818 { "bsemi", 0x8000204f00000000ULL },
819 { "bsim", 0x8000223d00000000ULL },
820 { "bsime", 0x800022cd00000000ULL },
821 { "bsol", 0x8000005c00000000ULL },
822 { "bsolb", 0x800029c500000000ULL },
823 { "bsolhsub", 0x800027c800000000ULL },
824 { "bull", 0x8000202200000000ULL },
825 { "bullet", 0x8000202200000000ULL },
826 { "bump", 0x8000224e00000000ULL },
827 { "bumpE", 0x80002aae00000000ULL },
828 { "bumpe", 0x8000224f00000000ULL },
829 { "bumpeq", 0x8000224f00000000ULL },
830 { "cacute", 0x8000010700000000ULL },
831 { "cap", 0x8000222900000000ULL },
832 { "capand", 0x80002a4400000000ULL },
833 { "capbrcup", 0x80002a4900000000ULL },
834 { "capcap", 0x80002a4b00000000ULL },
835 { "capcup", 0x80002a4700000000ULL },
836 { "capdot", 0x80002a4000000000ULL },
837 { "caps", 0x800022290000fe00ULL },
838 { "caret", 0x8000204100000000ULL },
839 { "caron", 0x800002c700000000ULL },
840 { "ccaps", 0x80002a4d00000000ULL },
841 { "ccaron", 0x8000010d00000000ULL },
842 { "ccedil", 0x000000e700000000ULL },
843 { "ccirc", 0x8000010900000000ULL },
844 { "ccups", 0x80002a4c00000000ULL },
845 { "ccupssm", 0x80002a5000000000ULL },
846 { "cdot", 0x8000010b00000000ULL },
847 { "cedil", 0x000000b800000000ULL },
848 { "cemptyv", 0x800029b200000000ULL },
849 { "cent", 0x000000a200000000ULL },
850 { "centerdot", 0x800000b700000000ULL },
851 { "cfr", 0x8001d52000000000ULL },
852 { "chcy", 0x8000044700000000ULL },
853 { "check", 0x8000271300000000ULL },
854 { "checkmark", 0x8000271300000000ULL },
855 { "chi", 0x800003c700000000ULL },
856 { "cir", 0x800025cb00000000ULL },
857 { "cirE", 0x800029c300000000ULL },
858 { "circ", 0x800002c600000000ULL },
859 { "circeq", 0x8000225700000000ULL },
860 { "circlearrowleft", 0x800021ba00000000ULL },
861 { "circlearrowright", 0x800021bb00000000ULL },
862 { "circledR", 0x800000ae00000000ULL },
863 { "circledS", 0x800024c800000000ULL },
864 { "circledast", 0x8000229b00000000ULL },
865 { "circledcirc", 0x8000229a00000000ULL },
866 { "circleddash", 0x8000229d00000000ULL },
867 { "cire", 0x8000225700000000ULL },
868 { "cirfnint", 0x80002a1000000000ULL },
869 { "cirmid", 0x80002aef00000000ULL },
870 { "cirscir", 0x800029c200000000ULL },
871 { "clubs", 0x8000266300000000ULL },
872 { "clubsuit", 0x8000266300000000ULL },
873 { "colon", 0x8000003a00000000ULL },
874 { "colone", 0x8000225400000000ULL },
875 { "coloneq", 0x8000225400000000ULL },
876 { "comma", 0x8000002c00000000ULL },
877 { "commat", 0x8000004000000000ULL },
878 { "comp", 0x8000220100000000ULL },
879 { "compfn", 0x8000221800000000ULL },
880 { "complement", 0x8000220100000000ULL },
881 { "complexes", 0x8000210200000000ULL },
882 { "cong", 0x8000224500000000ULL },
883 { "congdot", 0x80002a6d00000000ULL },
884 { "conint", 0x8000222e00000000ULL },
885 { "copf", 0x8001d55400000000ULL },
886 { "coprod", 0x8000221000000000ULL },
887 { "copy", 0x000000a900000000ULL },
888 { "copysr", 0x8000211700000000ULL },
889 { "crarr", 0x800021b500000000ULL },
890 { "cross", 0x8000271700000000ULL },
891 { "cscr", 0x8001d4b800000000ULL },
892 { "csub", 0x80002acf00000000ULL },
893 { "csube", 0x80002ad100000000ULL },
894 { "csup", 0x80002ad000000000ULL },
895 { "csupe", 0x80002ad200000000ULL },
896 { "ctdot", 0x800022ef00000000ULL },
897 { "cudarrl", 0x8000293800000000ULL },
898 { "cudarrr", 0x8000293500000000ULL },
899 { "cuepr", 0x800022de00000000ULL },
900 { "cuesc", 0x800022df00000000ULL },
901 { "cularr", 0x800021b600000000ULL },
902 { "cularrp", 0x8000293d00000000ULL },
903 { "cup", 0x8000222a00000000ULL },
904 { "cupbrcap", 0x80002a4800000000ULL },
905 { "cupcap", 0x80002a4600000000ULL },
906 { "cupcup", 0x80002a4a00000000ULL },
907 { "cupdot", 0x8000228d00000000ULL },
908 { "cupor", 0x80002a4500000000ULL },
909 { "cups", 0x8000222a0000fe00ULL },
910 { "curarr", 0x800021b700000000ULL },
911 { "curarrm", 0x8000293c00000000ULL },
912 { "curlyeqprec", 0x800022de00000000ULL },
913 { "curlyeqsucc", 0x800022df00000000ULL },
914 { "curlyvee", 0x800022ce00000000ULL },
915 { "curlywedge", 0x800022cf00000000ULL },
916 { "curren", 0x000000a400000000ULL },
917 { "curvearrowleft", 0x800021b600000000ULL },
918 { "curvearrowright", 0x800021b700000000ULL },
919 { "cuvee", 0x800022ce00000000ULL },
920 { "cuwed", 0x800022cf00000000ULL },
921 { "cwconint", 0x8000223200000000ULL },
922 { "cwint", 0x8000223100000000ULL },
923 { "cylcty", 0x8000232d00000000ULL },
924 { "dArr", 0x800021d300000000ULL },
925 { "dHar", 0x8000296500000000ULL },
926 { "dagger", 0x8000202000000000ULL },
927 { "daleth", 0x8000213800000000ULL },
928 { "darr", 0x8000219300000000ULL },
929 { "dash", 0x8000201000000000ULL },
930 { "dashv", 0x800022a300000000ULL },
931 { "dbkarow", 0x8000290f00000000ULL },
932 { "dblac", 0x800002dd00000000ULL },
933 { "dcaron", 0x8000010f00000000ULL },
934 { "dcy", 0x8000043400000000ULL },
935 { "dd", 0x8000214600000000ULL },
936 { "ddagger", 0x8000202100000000ULL },
937 { "ddarr", 0x800021ca00000000ULL },
938 { "ddotseq", 0x80002a7700000000ULL },
939 { "deg", 0x000000b000000000ULL },
940 { "delta", 0x800003b400000000ULL },
941 { "demptyv", 0x800029b100000000ULL },
942 { "dfisht", 0x8000297f00000000ULL },
943 { "dfr", 0x8001d52100000000ULL },
944 { "dharl", 0x800021c300000000ULL },
945 { "dharr", 0x800021c200000000ULL },
946 { "diam", 0x800022c400000000ULL },
947 { "diamond", 0x800022c400000000ULL },
948 { "diamondsuit", 0x8000266600000000ULL },
949 { "diams", 0x8000266600000000ULL },
950 { "die", 0x800000a800000000ULL },
951 { "digamma", 0x800003dd00000000ULL },
952 { "disin", 0x800022f200000000ULL },
953 { "div", 0x800000f700000000ULL },
954 { "divide", 0x000000f700000000ULL },
955 { "divideontimes", 0x800022c700000000ULL },
956 { "divonx", 0x800022c700000000ULL },
957 { "djcy", 0x8000045200000000ULL },
958 { "dlcorn", 0x8000231e00000000ULL },
959 { "dlcrop", 0x8000230d00000000ULL },
960 { "dollar", 0x8000002400000000ULL },
961 { "dopf", 0x8001d55500000000ULL },
962 { "dot", 0x800002d900000000ULL },
963 { "doteq", 0x8000225000000000ULL },
964 { "doteqdot", 0x8000225100000000ULL },
965 { "dotminus", 0x8000223800000000ULL },
966 { "dotplus", 0x8000221400000000ULL },
967 { "dotsquare", 0x800022a100000000ULL },
968 { "doublebarwedge", 0x8000230600000000ULL },
969 { "downarrow", 0x8000219300000000ULL },
970 { "downdownarrows", 0x800021ca00000000ULL },
971 { "downharpoonleft", 0x800021c300000000ULL },
972 { "downharpoonright", 0x800021c200000000ULL },
973 { "drbkarow", 0x8000291000000000ULL },
974 { "drcorn", 0x8000231f00000000ULL },
975 { "drcrop", 0x8000230c00000000ULL },
976 { "dscr", 0x8001d4b900000000ULL },
977 { "dscy", 0x8000045500000000ULL },
978 { "dsol", 0x800029f600000000ULL },
979 { "dstrok", 0x8000011100000000ULL },
980 { "dtdot", 0x800022f100000000ULL },
981 { "dtri", 0x800025bf00000000ULL },
982 { "dtrif", 0x800025be00000000ULL },
983 { "duarr", 0x800021f500000000ULL },
984 { "duhar", 0x8000296f00000000ULL },
985 { "dwangle", 0x800029a600000000ULL },
986 { "dzcy", 0x8000045f00000000ULL },
987 { "dzigrarr", 0x800027ff00000000ULL },
988 { "eDDot", 0x80002a7700000000ULL },
989 { "eDot", 0x8000225100000000ULL },
990 { "eacute", 0x000000e900000000ULL },
991 { "easter", 0x80002a6e00000000ULL },
992 { "ecaron", 0x8000011b00000000ULL },
993 { "ecir", 0x8000225600000000ULL },
994 { "ecirc", 0x000000ea00000000ULL },
995 { "ecolon", 0x8000225500000000ULL },
996 { "ecy", 0x8000044d00000000ULL },
997 { "edot", 0x8000011700000000ULL },
998 { "ee", 0x8000214700000000ULL },
999 { "efDot", 0x8000225200000000ULL },
1000 { "efr", 0x8001d52200000000ULL },
1001 { "eg", 0x80002a9a00000000ULL },
1002 { "egrave", 0x000000e800000000ULL },
1003 { "egs", 0x80002a9600000000ULL },
1004 { "egsdot", 0x80002a9800000000ULL },
1005 { "el", 0x80002a9900000000ULL },
1006 { "elinters", 0x800023e700000000ULL },
1007 { "ell", 0x8000211300000000ULL },
1008 { "els", 0x80002a9500000000ULL },
1009 { "elsdot", 0x80002a9700000000ULL },
1010 { "emacr", 0x8000011300000000ULL },
1011 { "empty", 0x8000220500000000ULL },
1012 { "emptyset", 0x8000220500000000ULL },
1013 { "emptyv", 0x8000220500000000ULL },
1014 { "emsp", 0x8000200300000000ULL },
1015 { "emsp13", 0x8000200400000000ULL },
1016 { "emsp14", 0x8000200500000000ULL },
1017 { "eng", 0x8000014b00000000ULL },
1018 { "ensp", 0x8000200200000000ULL },
1019 { "eogon", 0x8000011900000000ULL },
1020 { "eopf", 0x8001d55600000000ULL },
1021 { "epar", 0x800022d500000000ULL },
1022 { "eparsl", 0x800029e300000000ULL },
1023 { "eplus", 0x80002a7100000000ULL },
1024 { "epsi", 0x800003b500000000ULL },
1025 { "epsilon", 0x800003b500000000ULL },
1026 { "epsiv", 0x800003f500000000ULL },
1027 { "eqcirc", 0x8000225600000000ULL },
1028 { "eqcolon", 0x8000225500000000ULL },
1029 { "eqsim", 0x8000224200000000ULL },
1030 { "eqslantgtr", 0x80002a9600000000ULL },
1031 { "eqslantless", 0x80002a9500000000ULL },
1032 { "equals", 0x8000003d00000000ULL },
1033 { "equest", 0x8000225f00000000ULL },
1034 { "equiv", 0x8000226100000000ULL },
1035 { "equivDD", 0x80002a7800000000ULL },
1036 { "eqvparsl", 0x800029e500000000ULL },
1037 { "erDot", 0x8000225300000000ULL },
1038 { "erarr", 0x8000297100000000ULL },
1039 { "escr", 0x8000212f00000000ULL },
1040 { "esdot", 0x8000225000000000ULL },
1041 { "esim", 0x8000224200000000ULL },
1042 { "eta", 0x800003b700000000ULL },
1043 { "eth", 0x000000f000000000ULL },
1044 { "euml", 0x000000eb00000000ULL },
1045 { "euro", 0x800020ac00000000ULL },
1046 { "excl", 0x8000002100000000ULL },
1047 { "exist", 0x8000220300000000ULL },
1048 { "expectation", 0x8000213000000000ULL },
1049 { "exponentiale", 0x8000214700000000ULL },
1050 { "fallingdotseq", 0x8000225200000000ULL },
1051 { "fcy", 0x8000044400000000ULL },
1052 { "female", 0x8000264000000000ULL },
1053 { "ffilig", 0x8000fb0300000000ULL },
1054 { "fflig", 0x8000fb0000000000ULL },
1055 { "ffllig", 0x8000fb0400000000ULL },
1056 { "ffr", 0x8001d52300000000ULL },
1057 { "filig", 0x8000fb0100000000ULL },
1058 { "fjlig", 0x800000660000006aULL },
1059 { "flat", 0x8000266d00000000ULL },
1060 { "fllig", 0x8000fb0200000000ULL },
1061 { "fltns", 0x800025b100000000ULL },
1062 { "fnof", 0x8000019200000000ULL },
1063 { "fopf", 0x8001d55700000000ULL },
1064 { "forall", 0x8000220000000000ULL },
1065 { "fork", 0x800022d400000000ULL },
1066 { "forkv", 0x80002ad900000000ULL },
1067 { "fpartint", 0x80002a0d00000000ULL },
1068 { "frac12", 0x000000bd00000000ULL },
1069 { "frac13", 0x8000215300000000ULL },
1070 { "frac14", 0x000000bc00000000ULL },
1071 { "frac15", 0x8000215500000000ULL },
1072 { "frac16", 0x8000215900000000ULL },
1073 { "frac18", 0x8000215b00000000ULL },
1074 { "frac23", 0x8000215400000000ULL },
1075 { "frac25", 0x8000215600000000ULL },
1076 { "frac34", 0x000000be00000000ULL },
1077 { "frac35", 0x8000215700000000ULL },
1078 { "frac38", 0x8000215c00000000ULL },
1079 { "frac45", 0x8000215800000000ULL },
1080 { "frac56", 0x8000215a00000000ULL },
1081 { "frac58", 0x8000215d00000000ULL },
1082 { "frac78", 0x8000215e00000000ULL },
1083 { "frasl", 0x8000204400000000ULL },
1084 { "frown", 0x8000232200000000ULL },
1085 { "fscr", 0x8001d4bb00000000ULL },
1086 { "gE", 0x8000226700000000ULL },
1087 { "gEl", 0x80002a8c00000000ULL },
1088 { "gacute", 0x800001f500000000ULL },
1089 { "gamma", 0x800003b300000000ULL },
1090 { "gammad", 0x800003dd00000000ULL },
1091 { "gap", 0x80002a8600000000ULL },
1092 { "gbreve", 0x8000011f00000000ULL },
1093 { "gcirc", 0x8000011d00000000ULL },
1094 { "gcy", 0x8000043300000000ULL },
1095 { "gdot", 0x8000012100000000ULL },
1096 { "ge", 0x8000226500000000ULL },
1097 { "gel", 0x800022db00000000ULL },
1098 { "geq", 0x8000226500000000ULL },
1099 { "geqq", 0x8000226700000000ULL },
1100 { "geqslant", 0x80002a7e00000000ULL },
1101 { "ges", 0x80002a7e00000000ULL },
1102 { "gescc", 0x80002aa900000000ULL },
1103 { "gesdot", 0x80002a8000000000ULL },
1104 { "gesdoto", 0x80002a8200000000ULL },
1105 { "gesdotol", 0x80002a8400000000ULL },
1106 { "gesl", 0x800022db0000fe00ULL },
1107 { "gesles", 0x80002a9400000000ULL },
1108 { "gfr", 0x8001d52400000000ULL },
1109 { "gg", 0x8000226b00000000ULL },
1110 { "ggg", 0x800022d900000000ULL },
1111 { "gimel", 0x8000213700000000ULL },
1112 { "gjcy", 0x8000045300000000ULL },
1113 { "gl", 0x8000227700000000ULL },
1114 { "glE", 0x80002a9200000000ULL },
1115 { "gla", 0x80002aa500000000ULL },
1116 { "glj", 0x80002aa400000000ULL },
1117 { "gnE", 0x8000226900000000ULL },
1118 { "gnap", 0x80002a8a00000000ULL },
1119 { "gnapprox", 0x80002a8a00000000ULL },
1120 { "gne", 0x80002a8800000000ULL },
1121 { "gneq", 0x80002a8800000000ULL },
1122 { "gneqq", 0x8000226900000000ULL },
1123 { "gnsim", 0x800022e700000000ULL },
1124 { "gopf", 0x8001d55800000000ULL },
1125 { "grave", 0x8000006000000000ULL },
1126 { "gscr", 0x8000210a00000000ULL },
1127 { "gsim", 0x8000227300000000ULL },
1128 { "gsime", 0x80002a8e00000000ULL },
1129 { "gsiml", 0x80002a9000000000ULL },
1130 { "gt", 0x0000003e00000000ULL },
1131 { "gtcc", 0x80002aa700000000ULL },
1132 { "gtcir", 0x80002a7a00000000ULL },
1133 { "gtdot", 0x800022d700000000ULL },
1134 { "gtlPar", 0x8000299500000000ULL },
1135 { "gtquest", 0x80002a7c00000000ULL },
1136 { "gtrapprox", 0x80002a8600000000ULL },
1137 { "gtrarr", 0x8000297800000000ULL },
1138 { "gtrdot", 0x800022d700000000ULL },
1139 { "gtreqless", 0x800022db00000000ULL },
1140 { "gtreqqless", 0x80002a8c00000000ULL },
1141 { "gtrless", 0x8000227700000000ULL },
1142 { "gtrsim", 0x8000227300000000ULL },
1143 { "gvertneqq", 0x800022690000fe00ULL },
1144 { "gvnE", 0x800022690000fe00ULL },
1145 { "hArr", 0x800021d400000000ULL },
1146 { "hairsp", 0x8000200a00000000ULL },
1147 { "half", 0x800000bd00000000ULL },
1148 { "hamilt", 0x8000210b00000000ULL },
1149 { "hardcy", 0x8000044a00000000ULL },
1150 { "harr", 0x8000219400000000ULL },
1151 { "harrcir", 0x8000294800000000ULL },
1152 { "harrw", 0x800021ad00000000ULL },
1153 { "hbar", 0x8000210f00000000ULL },
1154 { "hcirc", 0x8000012500000000ULL },
1155 { "hearts", 0x8000266500000000ULL },
1156 { "heartsuit", 0x8000266500000000ULL },
1157 { "hellip", 0x8000202600000000ULL },
1158 { "hercon", 0x800022b900000000ULL },
1159 { "hfr", 0x8001d52500000000ULL },
1160 { "hksearow", 0x8000292500000000ULL },
1161 { "hkswarow", 0x8000292600000000ULL },
1162 { "hoarr", 0x800021ff00000000ULL },
1163 { "homtht", 0x8000223b00000000ULL },
1164 { "hookleftarrow", 0x800021a900000000ULL },
1165 { "hookrightarrow", 0x800021aa00000000ULL },
1166 { "hopf", 0x8001d55900000000ULL },
1167 { "horbar", 0x8000201500000000ULL },
1168 { "hscr", 0x8001d4bd00000000ULL },
1169 { "hslash", 0x8000210f00000000ULL },
1170 { "hstrok", 0x8000012700000000ULL },
1171 { "hybull", 0x8000204300000000ULL },
1172 { "hyphen", 0x8000201000000000ULL },
1173 { "iacute", 0x000000ed00000000ULL },
1174 { "ic", 0x8000206300000000ULL },
1175 { "icirc", 0x000000ee00000000ULL },
1176 { "icy", 0x8000043800000000ULL },
1177 { "iecy", 0x8000043500000000ULL },
1178 { "iexcl", 0x000000a100000000ULL },
1179 { "iff", 0x800021d400000000ULL },
1180 { "ifr", 0x8001d52600000000ULL },
1181 { "igrave", 0x000000ec00000000ULL },
1182 { "ii", 0x8000214800000000ULL },
1183 { "iiiint", 0x80002a0c00000000ULL },
1184 { "iiint", 0x8000222d00000000ULL },
1185 { "iinfin", 0x800029dc00000000ULL },
1186 { "iiota", 0x8000212900000000ULL },
1187 { "ijlig", 0x8000013300000000ULL },
1188 { "imacr", 0x8000012b00000000ULL },
1189 { "image", 0x8000211100000000ULL },
1190 { "imagline", 0x8000211000000000ULL },
1191 { "imagpart", 0x8000211100000000ULL },
1192 { "imath", 0x8000013100000000ULL },
1193 { "imof", 0x800022b700000000ULL },
1194 { "imped", 0x800001b500000000ULL },
1195 { "in", 0x8000220800000000ULL },
1196 { "incare", 0x8000210500000000ULL },
1197 { "infin", 0x8000221e00000000ULL },
1198 { "infintie", 0x800029dd00000000ULL },
1199 { "inodot", 0x8000013100000000ULL },
1200 { "int", 0x8000222b00000000ULL },
1201 { "intcal", 0x800022ba00000000ULL },
1202 { "integers", 0x8000212400000000ULL },
1203 { "intercal", 0x800022ba00000000ULL },
1204 { "intlarhk", 0x80002a1700000000ULL },
1205 { "intprod", 0x80002a3c00000000ULL },
1206 { "iocy", 0x8000045100000000ULL },
1207 { "iogon", 0x8000012f00000000ULL },
1208 { "iopf", 0x8001d55a00000000ULL },
1209 { "iota", 0x800003b900000000ULL },
1210 { "iprod", 0x80002a3c00000000ULL },
1211 { "iquest", 0x000000bf00000000ULL },
1212 { "iscr", 0x8001d4be00000000ULL },
1213 { "isin", 0x8000220800000000ULL },
1214 { "isinE", 0x800022f900000000ULL },
1215 { "isindot", 0x800022f500000000ULL },
1216 { "isins", 0x800022f400000000ULL },
1217 { "isinsv", 0x800022f300000000ULL },
1218 { "isinv", 0x8000220800000000ULL },
1219 { "it", 0x8000206200000000ULL },
1220 { "itilde", 0x8000012900000000ULL },
1221 { "iukcy", 0x8000045600000000ULL },
1222 { "iuml", 0x000000ef00000000ULL },
1223 { "jcirc", 0x8000013500000000ULL },
1224 { "jcy", 0x8000043900000000ULL },
1225 { "jfr", 0x8001d52700000000ULL },
1226 { "jmath", 0x8000023700000000ULL },
1227 { "jopf", 0x8001d55b00000000ULL },
1228 { "jscr", 0x8001d4bf00000000ULL },
1229 { "jsercy", 0x8000045800000000ULL },
1230 { "jukcy", 0x8000045400000000ULL },
1231 { "kappa", 0x800003ba00000000ULL },
1232 { "kappav", 0x800003f000000000ULL },
1233 { "kcedil", 0x8000013700000000ULL },
1234 { "kcy", 0x8000043a00000000ULL },
1235 { "kfr", 0x8001d52800000000ULL },
1236 { "kgreen", 0x8000013800000000ULL },
1237 { "khcy", 0x8000044500000000ULL },
1238 { "kjcy", 0x8000045c00000000ULL },
1239 { "kopf", 0x8001d55c00000000ULL },
1240 { "kscr", 0x8001d4c000000000ULL },
1241 { "lAarr", 0x800021da00000000ULL },
1242 { "lArr", 0x800021d000000000ULL },
1243 { "lAtail", 0x8000291b00000000ULL },
1244 { "lBarr", 0x8000290e00000000ULL },
1245 { "lE", 0x8000226600000000ULL },
1246 { "lEg", 0x80002a8b00000000ULL },
1247 { "lHar", 0x8000296200000000ULL },
1248 { "lacute", 0x8000013a00000000ULL },
1249 { "laemptyv", 0x800029b400000000ULL },
1250 { "lagran", 0x8000211200000000ULL },
1251 { "lambda", 0x800003bb00000000ULL },
1252 { "lang", 0x800027e800000000ULL },
1253 { "langd", 0x8000299100000000ULL },
1254 { "langle", 0x800027e800000000ULL },
1255 { "lap", 0x80002a8500000000ULL },
1256 { "laquo", 0x000000ab00000000ULL },
1257 { "larr", 0x8000219000000000ULL },
1258 { "larrb", 0x800021e400000000ULL },
1259 { "larrbfs", 0x8000291f00000000ULL },
1260 { "larrfs", 0x8000291d00000000ULL },
1261 { "larrhk", 0x800021a900000000ULL },
1262 { "larrlp", 0x800021ab00000000ULL },
1263 { "larrpl", 0x8000293900000000ULL },
1264 { "larrsim", 0x8000297300000000ULL },
1265 { "larrtl", 0x800021a200000000ULL },
1266 { "lat", 0x80002aab00000000ULL },
1267 { "latail", 0x8000291900000000ULL },
1268 { "late", 0x80002aad00000000ULL },
1269 { "lates", 0x80002aad0000fe00ULL },
1270 { "lbarr", 0x8000290c00000000ULL },
1271 { "lbbrk", 0x8000277200000000ULL },
1272 { "lbrace", 0x8000007b00000000ULL },
1273 { "lbrack", 0x8000005b00000000ULL },
1274 { "lbrke", 0x8000298b00000000ULL },
1275 { "lbrksld", 0x8000298f00000000ULL },
1276 { "lbrkslu", 0x8000298d00000000ULL },
1277 { "lcaron", 0x8000013e00000000ULL },
1278 { "lcedil", 0x8000013c00000000ULL },
1279 { "lceil", 0x8000230800000000ULL },
1280 { "lcub", 0x8000007b00000000ULL },
1281 { "lcy", 0x8000043b00000000ULL },
1282 { "ldca", 0x8000293600000000ULL },
1283 { "ldquo", 0x8000201c00000000ULL },
1284 { "ldquor", 0x8000201e00000000ULL },
1285 { "ldrdhar", 0x8000296700000000ULL },
1286 { "ldrushar", 0x8000294b00000000ULL },
1287 { "ldsh", 0x800021b200000000ULL },
1288 { "le", 0x8000226400000000ULL },
1289 { "leftarrow", 0x8000219000000000ULL },
1290 { "leftarrowtail", 0x800021a200000000ULL },
1291 { "leftharpoondown", 0x800021bd00000000ULL },
1292 { "leftharpoonup", 0x800021bc00000000ULL },
1293 { "leftleftarrows", 0x800021c700000000ULL },
1294 { "leftrightarrow", 0x8000219400000000ULL },
1295 { "leftrightarrows", 0x800021c600000000ULL },
1296 { "leftrightharpoons", 0x800021cb00000000ULL },
1297 { "leftrightsquigarrow", 0x800021ad00000000ULL },
1298 { "leftthreetimes", 0x800022cb00000000ULL },
1299 { "leg", 0x800022da00000000ULL },
1300 { "leq", 0x8000226400000000ULL },
1301 { "leqq", 0x8000226600000000ULL },
1302 { "leqslant", 0x80002a7d00000000ULL },
1303 { "les", 0x80002a7d00000000ULL },
1304 { "lescc", 0x80002aa800000000ULL },
1305 { "lesdot", 0x80002a7f00000000ULL },
1306 { "lesdoto", 0x80002a8100000000ULL },
1307 { "lesdotor", 0x80002a8300000000ULL },
1308 { "lesg", 0x800022da0000fe00ULL },
1309 { "lesges", 0x80002a9300000000ULL },
1310 { "lessapprox", 0x80002a8500000000ULL },
1311 { "lessdot", 0x800022d600000000ULL },
1312 { "lesseqgtr", 0x800022da00000000ULL },
1313 { "lesseqqgtr", 0x80002a8b00000000ULL },
1314 { "lessgtr", 0x8000227600000000ULL },
1315 { "lesssim", 0x8000227200000000ULL },
1316 { "lfisht", 0x8000297c00000000ULL },
1317 { "lfloor", 0x8000230a00000000ULL },
1318 { "lfr", 0x8001d52900000000ULL },
1319 { "lg", 0x8000227600000000ULL },
1320 { "lgE", 0x80002a9100000000ULL },
1321 { "lhard", 0x800021bd00000000ULL },
1322 { "lharu", 0x800021bc00000000ULL },
1323 { "lharul", 0x8000296a00000000ULL },
1324 { "lhblk", 0x8000258400000000ULL },
1325 { "ljcy", 0x8000045900000000ULL },
1326 { "ll", 0x8000226a00000000ULL },
1327 { "llarr", 0x800021c700000000ULL },
1328 { "llcorner", 0x8000231e00000000ULL },
1329 { "llhard", 0x8000296b00000000ULL },
1330 { "lltri", 0x800025fa00000000ULL },
1331 { "lmidot", 0x8000014000000000ULL },
1332 { "lmoust", 0x800023b000000000ULL },
1333 { "lmoustache", 0x800023b000000000ULL },
1334 { "lnE", 0x8000226800000000ULL },
1335 { "lnap", 0x80002a8900000000ULL },
1336 { "lnapprox", 0x80002a8900000000ULL },
1337 { "lne", 0x80002a8700000000ULL },
1338 { "lneq", 0x80002a8700000000ULL },
1339 { "lneqq", 0x8000226800000000ULL },
1340 { "lnsim", 0x800022e600000000ULL },
1341 { "loang", 0x800027ec00000000ULL },
1342 { "loarr", 0x800021fd00000000ULL },
1343 { "lobrk", 0x800027e600000000ULL },
1344 { "longleftarrow", 0x800027f500000000ULL },
1345 { "longleftrightarrow", 0x800027f700000000ULL },
1346 { "longmapsto", 0x800027fc00000000ULL },
1347 { "longrightarrow", 0x800027f600000000ULL },
1348 { "looparrowleft", 0x800021ab00000000ULL },
1349 { "looparrowright", 0x800021ac00000000ULL },
1350 { "lopar", 0x8000298500000000ULL },
1351 { "lopf", 0x8001d55d00000000ULL },
1352 { "loplus", 0x80002a2d00000000ULL },
1353 { "lotimes", 0x80002a3400000000ULL },
1354 { "lowast", 0x8000221700000000ULL },
1355 { "lowbar", 0x8000005f00000000ULL },
1356 { "loz", 0x800025ca00000000ULL },
1357 { "lozenge", 0x800025ca00000000ULL },
1358 { "lozf", 0x800029eb00000000ULL },
1359 { "lpar", 0x8000002800000000ULL },
1360 { "lparlt", 0x8000299300000000ULL },
1361 { "lrarr", 0x800021c600000000ULL },
1362 { "lrcorner", 0x8000231f00000000ULL },
1363 { "lrhar", 0x800021cb00000000ULL },
1364 { "lrhard", 0x8000296d00000000ULL },
1365 { "lrm", 0x8000200e00000000ULL },
1366 { "lrtri", 0x800022bf00000000ULL },
1367 { "lsaquo", 0x8000203900000000ULL },
1368 { "lscr", 0x8001d4c100000000ULL },
1369 { "lsh", 0x800021b000000000ULL },
1370 { "lsim", 0x8000227200000000ULL },
1371 { "lsime", 0x80002a8d00000000ULL },
1372 { "lsimg", 0x80002a8f00000000ULL },
1373 { "lsqb", 0x8000005b00000000ULL },
1374 { "lsquo", 0x8000201800000000ULL },
1375 { "lsquor", 0x8000201a00000000ULL },
1376 { "lstrok", 0x8000014200000000ULL },
1377 { "lt", 0x0000003c00000000ULL },
1378 { "ltcc", 0x80002aa600000000ULL },
1379 { "ltcir", 0x80002a7900000000ULL },
1380 { "ltdot", 0x800022d600000000ULL },
1381 { "lthree", 0x800022cb00000000ULL },
1382 { "ltimes", 0x800022c900000000ULL },
1383 { "ltlarr", 0x8000297600000000ULL },
1384 { "ltquest", 0x80002a7b00000000ULL },
1385 { "ltrPar", 0x8000299600000000ULL },
1386 { "ltri", 0x800025c300000000ULL },
1387 { "ltrie", 0x800022b400000000ULL },
1388 { "ltrif", 0x800025c200000000ULL },
1389 { "lurdshar", 0x8000294a00000000ULL },
1390 { "luruhar", 0x8000296600000000ULL },
1391 { "lvertneqq", 0x800022680000fe00ULL },
1392 { "lvnE", 0x800022680000fe00ULL },
1393 { "mDDot", 0x8000223a00000000ULL },
1394 { "macr", 0x000000af00000000ULL },
1395 { "male", 0x8000264200000000ULL },
1396 { "malt", 0x8000272000000000ULL },
1397 { "maltese", 0x8000272000000000ULL },
1398 { "map", 0x800021a600000000ULL },
1399 { "mapsto", 0x800021a600000000ULL },
1400 { "mapstodown", 0x800021a700000000ULL },
1401 { "mapstoleft", 0x800021a400000000ULL },
1402 { "mapstoup", 0x800021a500000000ULL },
1403 { "marker", 0x800025ae00000000ULL },
1404 { "mcomma", 0x80002a2900000000ULL },
1405 { "mcy", 0x8000043c00000000ULL },
1406 { "mdash", 0x8000201400000000ULL },
1407 { "measuredangle", 0x8000222100000000ULL },
1408 { "mfr", 0x8001d52a00000000ULL },
1409 { "mho", 0x8000212700000000ULL },
1410 { "micro", 0x000000b500000000ULL },
1411 { "mid", 0x8000222300000000ULL },
1412 { "midast", 0x8000002a00000000ULL },
1413 { "midcir", 0x80002af000000000ULL },
1414 { "middot", 0x000000b700000000ULL },
1415 { "minus", 0x8000221200000000ULL },
1416 { "minusb", 0x8000229f00000000ULL },
1417 { "minusd", 0x8000223800000000ULL },
1418 { "minusdu", 0x80002a2a00000000ULL },
1419 { "mlcp", 0x80002adb00000000ULL },
1420 { "mldr", 0x8000202600000000ULL },
1421 { "mnplus", 0x8000221300000000ULL },
1422 { "models", 0x800022a700000000ULL },
1423 { "mopf", 0x8001d55e00000000ULL },
1424 { "mp", 0x8000221300000000ULL },
1425 { "mscr", 0x8001d4c200000000ULL },
1426 { "mstpos", 0x8000223e00000000ULL },
1427 { "mu", 0x800003bc00000000ULL },
1428 { "multimap", 0x800022b800000000ULL },
1429 { "mumap", 0x800022b800000000ULL },
1430 { "nGg", 0x800022d900000338ULL },
1431 { "nGt", 0x8000226b000020d2ULL },
1432 { "nGtv", 0x8000226b00000338ULL },
1433 { "nLeftarrow", 0x800021cd00000000ULL },
1434 { "nLeftrightarrow", 0x800021ce00000000ULL },
1435 { "nLl", 0x800022d800000338ULL },
1436 { "nLt", 0x8000226a000020d2ULL },
1437 { "nLtv", 0x8000226a00000338ULL },
1438 { "nRightarrow", 0x800021cf00000000ULL },
1439 { "nVDash", 0x800022af00000000ULL },
1440 { "nVdash", 0x800022ae00000000ULL },
1441 { "nabla", 0x8000220700000000ULL },
1442 { "nacute", 0x8000014400000000ULL },
1443 { "nang", 0x80002220000020d2ULL },
1444 { "nap", 0x8000224900000000ULL },
1445 { "napE", 0x80002a7000000338ULL },
1446 { "napid", 0x8000224b00000338ULL },
1447 { "napos", 0x8000014900000000ULL },
1448 { "napprox", 0x8000224900000000ULL },
1449 { "natur", 0x8000266e00000000ULL },
1450 { "natural", 0x8000266e00000000ULL },
1451 { "naturals", 0x8000211500000000ULL },
1452 { "nbsp", 0x000000a000000000ULL },
1453 { "nbump", 0x8000224e00000338ULL },
1454 { "nbumpe", 0x8000224f00000338ULL },
1455 { "ncap", 0x80002a4300000000ULL },
1456 { "ncaron", 0x8000014800000000ULL },
1457 { "ncedil", 0x8000014600000000ULL },
1458 { "ncong", 0x8000224700000000ULL },
1459 { "ncongdot", 0x80002a6d00000338ULL },
1460 { "ncup", 0x80002a4200000000ULL },
1461 { "ncy", 0x8000043d00000000ULL },
1462 { "ndash", 0x8000201300000000ULL },
1463 { "ne", 0x8000226000000000ULL },
1464 { "neArr", 0x800021d700000000ULL },
1465 { "nearhk", 0x8000292400000000ULL },
1466 { "nearr", 0x8000219700000000ULL },
1467 { "nearrow", 0x8000219700000000ULL },
1468 { "nedot", 0x8000225000000338ULL },
1469 { "nequiv", 0x8000226200000000ULL },
1470 { "nesear", 0x8000292800000000ULL },
1471 { "nesim", 0x8000224200000338ULL },
1472 { "nexist", 0x8000220400000000ULL },
1473 { "nexists", 0x8000220400000000ULL },
1474 { "nfr", 0x8001d52b00000000ULL },
1475 { "ngE", 0x8000226700000338ULL },
1476 { "nge", 0x8000227100000000ULL },
1477 { "ngeq", 0x8000227100000000ULL },
1478 { "ngeqq", 0x8000226700000338ULL },
1479 { "ngeqslant", 0x80002a7e00000338ULL },
1480 { "nges", 0x80002a7e00000338ULL },
1481 { "ngsim", 0x8000227500000000ULL },
1482 { "ngt", 0x8000226f00000000ULL },
1483 { "ngtr", 0x8000226f00000000ULL },
1484 { "nhArr", 0x800021ce00000000ULL },
1485 { "nharr", 0x800021ae00000000ULL },
1486 { "nhpar", 0x80002af200000000ULL },
1487 { "ni", 0x8000220b00000000ULL },
1488 { "nis", 0x800022fc00000000ULL },
1489 { "nisd", 0x800022fa00000000ULL },
1490 { "niv", 0x8000220b00000000ULL },
1491 { "njcy", 0x8000045a00000000ULL },
1492 { "nlArr", 0x800021cd00000000ULL },
1493 { "nlE", 0x8000226600000338ULL },
1494 { "nlarr", 0x8000219a00000000ULL },
1495 { "nldr", 0x8000202500000000ULL },
1496 { "nle", 0x8000227000000000ULL },
1497 { "nleftarrow", 0x8000219a00000000ULL },
1498 { "nleftrightarrow", 0x800021ae00000000ULL },
1499 { "nleq", 0x8000227000000000ULL },
1500 { "nleqq", 0x8000226600000338ULL },
1501 { "nleqslant", 0x80002a7d00000338ULL },
1502 { "nles", 0x80002a7d00000338ULL },
1503 { "nless", 0x8000226e00000000ULL },
1504 { "nlsim", 0x8000227400000000ULL },
1505 { "nlt", 0x8000226e00000000ULL },
1506 { "nltri", 0x800022ea00000000ULL },
1507 { "nltrie", 0x800022ec00000000ULL },
1508 { "nmid", 0x8000222400000000ULL },
1509 { "nopf", 0x8001d55f00000000ULL },
1510 { "not", 0x000000ac00000000ULL },
1511 { "notin", 0x8000220900000000ULL },
1512 { "notinE", 0x800022f900000338ULL },
1513 { "notindot", 0x800022f500000338ULL },
1514 { "notinva", 0x8000220900000000ULL },
1515 { "notinvb", 0x800022f700000000ULL },
1516 { "notinvc", 0x800022f600000000ULL },
1517 { "notni", 0x8000220c00000000ULL },
1518 { "notniva", 0x8000220c00000000ULL },
1519 { "notnivb", 0x800022fe00000000ULL },
1520 { "notnivc", 0x800022fd00000000ULL },
1521 { "npar", 0x8000222600000000ULL },
1522 { "nparallel", 0x8000222600000000ULL },
1523 { "nparsl", 0x80002afd000020e5ULL },
1524 { "npart", 0x8000220200000338ULL },
1525 { "npolint", 0x80002a1400000000ULL },
1526 { "npr", 0x8000228000000000ULL },
1527 { "nprcue", 0x800022e000000000ULL },
1528 { "npre", 0x80002aaf00000338ULL },
1529 { "nprec", 0x8000228000000000ULL },
1530 { "npreceq", 0x80002aaf00000338ULL },
1531 { "nrArr", 0x800021cf00000000ULL },
1532 { "nrarr", 0x8000219b00000000ULL },
1533 { "nrarrc", 0x8000293300000338ULL },
1534 { "nrarrw", 0x8000219d00000338ULL },
1535 { "nrightarrow", 0x8000219b00000000ULL },
1536 { "nrtri", 0x800022eb00000000ULL },
1537 { "nrtrie", 0x800022ed00000000ULL },
1538 { "nsc", 0x8000228100000000ULL },
1539 { "nsccue", 0x800022e100000000ULL },
1540 { "nsce", 0x80002ab000000338ULL },
1541 { "nscr", 0x8001d4c300000000ULL },
1542 { "nshortmid", 0x8000222400000000ULL },
1543 { "nshortparallel", 0x8000222600000000ULL },
1544 { "nsim", 0x8000224100000000ULL },
1545 { "nsime", 0x8000224400000000ULL },
1546 { "nsimeq", 0x8000224400000000ULL },
1547 { "nsmid", 0x8000222400000000ULL },
1548 { "nspar", 0x8000222600000000ULL },
1549 { "nsqsube", 0x800022e200000000ULL },
1550 { "nsqsupe", 0x800022e300000000ULL },
1551 { "nsub", 0x8000228400000000ULL },
1552 { "nsubE", 0x80002ac500000338ULL },
1553 { "nsube", 0x8000228800000000ULL },
1554 { "nsubset", 0x80002282000020d2ULL },
1555 { "nsubseteq", 0x8000228800000000ULL },
1556 { "nsubseteqq", 0x80002ac500000338ULL },
1557 { "nsucc", 0x8000228100000000ULL },
1558 { "nsucceq", 0x80002ab000000338ULL },
1559 { "nsup", 0x8000228500000000ULL },
1560 { "nsupE", 0x80002ac600000338ULL },
1561 { "nsupe", 0x8000228900000000ULL },
1562 { "nsupset", 0x80002283000020d2ULL },
1563 { "nsupseteq", 0x8000228900000000ULL },
1564 { "nsupseteqq", 0x80002ac600000338ULL },
1565 { "ntgl", 0x8000227900000000ULL },
1566 { "ntilde", 0x000000f100000000ULL },
1567 { "ntlg", 0x8000227800000000ULL },
1568 { "ntriangleleft", 0x800022ea00000000ULL },
1569 { "ntrianglelefteq", 0x800022ec00000000ULL },
1570 { "ntriangleright", 0x800022eb00000000ULL },
1571 { "ntrianglerighteq", 0x800022ed00000000ULL },
1572 { "nu", 0x800003bd00000000ULL },
1573 { "num", 0x8000002300000000ULL },
1574 { "numero", 0x8000211600000000ULL },
1575 { "numsp", 0x8000200700000000ULL },
1576 { "nvDash", 0x800022ad00000000ULL },
1577 { "nvHarr", 0x8000290400000000ULL },
1578 { "nvap", 0x8000224d000020d2ULL },
1579 { "nvdash", 0x800022ac00000000ULL },
1580 { "nvge", 0x80002265000020d2ULL },
1581 { "nvgt", 0x8000003e000020d2ULL },
1582 { "nvinfin", 0x800029de00000000ULL },
1583 { "nvlArr", 0x8000290200000000ULL },
1584 { "nvle", 0x80002264000020d2ULL },
1585 { "nvlt", 0x8000003c000020d2ULL },
1586 { "nvltrie", 0x800022b4000020d2ULL },
1587 { "nvrArr", 0x8000290300000000ULL },
1588 { "nvrtrie", 0x800022b5000020d2ULL },
1589 { "nvsim", 0x8000223c000020d2ULL },
1590 { "nwArr", 0x800021d600000000ULL },
1591 { "nwarhk", 0x8000292300000000ULL },
1592 { "nwarr", 0x8000219600000000ULL },
1593 { "nwarrow", 0x8000219600000000ULL },
1594 { "nwnear", 0x8000292700000000ULL },
1595 { "oS", 0x800024c800000000ULL },
1596 { "oacute", 0x000000f300000000ULL },
1597 { "oast", 0x8000229b00000000ULL },
1598 { "ocir", 0x8000229a00000000ULL },
1599 { "ocirc", 0x000000f400000000ULL },
1600 { "ocy", 0x8000043e00000000ULL },
1601 { "odash", 0x8000229d00000000ULL },
1602 { "odblac", 0x8000015100000000ULL },
1603 { "odiv", 0x80002a3800000000ULL },
1604 { "odot", 0x8000229900000000ULL },
1605 { "odsold", 0x800029bc00000000ULL },
1606 { "oelig", 0x8000015300000000ULL },
1607 { "ofcir", 0x800029bf00000000ULL },
1608 { "ofr", 0x8001d52c00000000ULL },
1609 { "ogon", 0x800002db00000000ULL },
1610 { "ograve", 0x000000f200000000ULL },
1611 { "ogt", 0x800029c100000000ULL },
1612 { "ohbar", 0x800029b500000000ULL },
1613 { "ohm", 0x800003a900000000ULL },
1614 { "oint", 0x8000222e00000000ULL },
1615 { "olarr", 0x800021ba00000000ULL },
1616 { "olcir", 0x800029be00000000ULL },
1617 { "olcross", 0x800029bb00000000ULL },
1618 { "oline", 0x8000203e00000000ULL },
1619 { "olt", 0x800029c000000000ULL },
1620 { "omacr", 0x8000014d00000000ULL },
1621 { "omega", 0x800003c900000000ULL },
1622 { "omicron", 0x800003bf00000000ULL },
1623 { "omid", 0x800029b600000000ULL },
1624 { "ominus", 0x8000229600000000ULL },
1625 { "oopf", 0x8001d56000000000ULL },
1626 { "opar", 0x800029b700000000ULL },
1627 { "operp", 0x800029b900000000ULL },
1628 { "oplus", 0x8000229500000000ULL },
1629 { "or", 0x8000222800000000ULL },
1630 { "orarr", 0x800021bb00000000ULL },
1631 { "ord", 0x80002a5d00000000ULL },
1632 { "order", 0x8000213400000000ULL },
1633 { "orderof", 0x8000213400000000ULL },
1634 { "ordf", 0x000000aa00000000ULL },
1635 { "ordm", 0x000000ba00000000ULL },
1636 { "origof", 0x800022b600000000ULL },
1637 { "oror", 0x80002a5600000000ULL },
1638 { "orslope", 0x80002a5700000000ULL },
1639 { "orv", 0x80002a5b00000000ULL },
1640 { "oscr", 0x8000213400000000ULL },
1641 { "oslash", 0x000000f800000000ULL },
1642 { "osol", 0x8000229800000000ULL },
1643 { "otilde", 0x000000f500000000ULL },
1644 { "otimes", 0x8000229700000000ULL },
1645 { "otimesas", 0x80002a3600000000ULL },
1646 { "ouml", 0x000000f600000000ULL },
1647 { "ovbar", 0x8000233d00000000ULL },
1648 { "par", 0x8000222500000000ULL },
1649 { "para", 0x000000b600000000ULL },
1650 { "parallel", 0x8000222500000000ULL },
1651 { "parsim", 0x80002af300000000ULL },
1652 { "parsl", 0x80002afd00000000ULL },
1653 { "part", 0x8000220200000000ULL },
1654 { "pcy", 0x8000043f00000000ULL },
1655 { "percnt", 0x8000002500000000ULL },
1656 { "period", 0x8000002e00000000ULL },
1657 { "permil", 0x8000203000000000ULL },
1658 { "perp", 0x800022a500000000ULL },
1659 { "pertenk", 0x8000203100000000ULL },
1660 { "pfr", 0x8001d52d00000000ULL },
1661 { "phi", 0x800003c600000000ULL },
1662 { "phiv", 0x800003d500000000ULL },
1663 { "phmmat", 0x8000213300000000ULL },
1664 { "phone", 0x8000260e00000000ULL },
1665 { "pi", 0x800003c000000000ULL },
1666 { "pitchfork", 0x800022d400000000ULL },
1667 { "piv", 0x800003d600000000ULL },
1668 { "planck", 0x8000210f00000000ULL },
1669 { "planckh", 0x8000210e00000000ULL },
1670 { "plankv", 0x8000210f00000000ULL },
1671 { "plus", 0x8000002b00000000ULL },
1672 { "plusacir", 0x80002a2300000000ULL },
1673 { "plusb", 0x8000229e00000000ULL },
1674 { "pluscir", 0x80002a2200000000ULL },
1675 { "plusdo", 0x8000221400000000ULL },
1676 { "plusdu", 0x80002a2500000000ULL },
1677 { "pluse", 0x80002a7200000000ULL },
1678 { "plusmn", 0x000000b100000000ULL },
1679 { "plussim", 0x80002a2600000000ULL },
1680 { "plustwo", 0x80002a2700000000ULL },
1681 { "pm", 0x800000b100000000ULL },
1682 { "pointint", 0x80002a1500000000ULL },
1683 { "popf", 0x8001d56100000000ULL },
1684 { "pound", 0x000000a300000000ULL },
1685 { "pr", 0x8000227a00000000ULL },
1686 { "prE", 0x80002ab300000000ULL },
1687 { "prap", 0x80002ab700000000ULL },
1688 { "prcue", 0x8000227c00000000ULL },
1689 { "pre", 0x80002aaf00000000ULL },
1690 { "prec", 0x8000227a00000000ULL },
1691 { "precapprox", 0x80002ab700000000ULL },
1692 { "preccurlyeq", 0x8000227c00000000ULL },
1693 { "preceq", 0x80002aaf00000000ULL },
1694 { "precnapprox", 0x80002ab900000000ULL },
1695 { "precneqq", 0x80002ab500000000ULL },
1696 { "precnsim", 0x800022e800000000ULL },
1697 { "precsim", 0x8000227e00000000ULL },
1698 { "prime", 0x8000203200000000ULL },
1699 { "primes", 0x8000211900000000ULL },
1700 { "prnE", 0x80002ab500000000ULL },
1701 { "prnap", 0x80002ab900000000ULL },
1702 { "prnsim", 0x800022e800000000ULL },
1703 { "prod", 0x8000220f00000000ULL },
1704 { "profalar", 0x8000232e00000000ULL },
1705 { "profline", 0x8000231200000000ULL },
1706 { "profsurf", 0x8000231300000000ULL },
1707 { "prop", 0x8000221d00000000ULL },
1708 { "propto", 0x8000221d00000000ULL },
1709 { "prsim", 0x8000227e00000000ULL },
1710 { "prurel", 0x800022b000000000ULL },
1711 { "pscr", 0x8001d4c500000000ULL },
1712 { "psi", 0x800003c800000000ULL },
1713 { "puncsp", 0x8000200800000000ULL },
1714 { "qfr", 0x8001d52e00000000ULL },
1715 { "qint", 0x80002a0c00000000ULL },
1716 { "qopf", 0x8001d56200000000ULL },
1717 { "qprime", 0x8000205700000000ULL },
1718 { "qscr", 0x8001d4c600000000ULL },
1719 { "quaternions", 0x8000210d00000000ULL },
1720 { "quatint", 0x80002a1600000000ULL },
1721 { "quest", 0x8000003f00000000ULL },
1722 { "questeq", 0x8000225f00000000ULL },
1723 { "quot", 0x0000002200000000ULL },
1724 { "rAarr", 0x800021db00000000ULL },
1725 { "rArr", 0x800021d200000000ULL },
1726 { "rAtail", 0x8000291c00000000ULL },
1727 { "rBarr", 0x8000290f00000000ULL },
1728 { "rHar", 0x8000296400000000ULL },
1729 { "race", 0x8000223d00000331ULL },
1730 { "racute", 0x8000015500000000ULL },
1731 { "radic", 0x8000221a00000000ULL },
1732 { "raemptyv", 0x800029b300000000ULL },
1733 { "rang", 0x800027e900000000ULL },
1734 { "rangd", 0x8000299200000000ULL },
1735 { "range", 0x800029a500000000ULL },
1736 { "rangle", 0x800027e900000000ULL },
1737 { "raquo", 0x000000bb00000000ULL },
1738 { "rarr", 0x8000219200000000ULL },
1739 { "rarrap", 0x8000297500000000ULL },
1740 { "rarrb", 0x800021e500000000ULL },
1741 { "rarrbfs", 0x8000292000000000ULL },
1742 { "rarrc", 0x8000293300000000ULL },
1743 { "rarrfs", 0x8000291e00000000ULL },
1744 { "rarrhk", 0x800021aa00000000ULL },
1745 { "rarrlp", 0x800021ac00000000ULL },
1746 { "rarrpl", 0x8000294500000000ULL },
1747 { "rarrsim", 0x8000297400000000ULL },
1748 { "rarrtl", 0x800021a300000000ULL },
1749 { "rarrw", 0x8000219d00000000ULL },
1750 { "ratail", 0x8000291a00000000ULL },
1751 { "ratio", 0x8000223600000000ULL },
1752 { "rationals", 0x8000211a00000000ULL },
1753 { "rbarr", 0x8000290d00000000ULL },
1754 { "rbbrk", 0x8000277300000000ULL },
1755 { "rbrace", 0x8000007d00000000ULL },
1756 { "rbrack", 0x8000005d00000000ULL },
1757 { "rbrke", 0x8000298c00000000ULL },
1758 { "rbrksld", 0x8000298e00000000ULL },
1759 { "rbrkslu", 0x8000299000000000ULL },
1760 { "rcaron", 0x8000015900000000ULL },
1761 { "rcedil", 0x8000015700000000ULL },
1762 { "rceil", 0x8000230900000000ULL },
1763 { "rcub", 0x8000007d00000000ULL },
1764 { "rcy", 0x8000044000000000ULL },
1765 { "rdca", 0x8000293700000000ULL },
1766 { "rdldhar", 0x8000296900000000ULL },
1767 { "rdquo", 0x8000201d00000000ULL },
1768 { "rdquor", 0x8000201d00000000ULL },
1769 { "rdsh", 0x800021b300000000ULL },
1770 { "real", 0x8000211c00000000ULL },
1771 { "realine", 0x8000211b00000000ULL },
1772 { "realpart", 0x8000211c00000000ULL },
1773 { "reals", 0x8000211d00000000ULL },
1774 { "rect", 0x800025ad00000000ULL },
1775 { "reg", 0x000000ae00000000ULL },
1776 { "rfisht", 0x8000297d00000000ULL },
1777 { "rfloor", 0x8000230b00000000ULL },
1778 { "rfr", 0x8001d52f00000000ULL },
1779 { "rhard", 0x800021c100000000ULL },
1780 { "rharu", 0x800021c000000000ULL },
1781 { "rharul", 0x8000296c00000000ULL },
1782 { "rho", 0x800003c100000000ULL },
1783 { "rhov", 0x800003f100000000ULL },
1784 { "rightarrow", 0x8000219200000000ULL },
1785 { "rightarrowtail", 0x800021a300000000ULL },
1786 { "rightharpoondown", 0x800021c100000000ULL },
1787 { "rightharpoonup", 0x800021c000000000ULL },
1788 { "rightleftarrows", 0x800021c400000000ULL },
1789 { "rightleftharpoons", 0x800021cc00000000ULL },
1790 { "rightrightarrows", 0x800021c900000000ULL },
1791 { "rightsquigarrow", 0x8000219d00000000ULL },
1792 { "rightthreetimes", 0x800022cc00000000ULL },
1793 { "ring", 0x800002da00000000ULL },
1794 { "risingdotseq", 0x8000225300000000ULL },
1795 { "rlarr", 0x800021c400000000ULL },
1796 { "rlhar", 0x800021cc00000000ULL },
1797 { "rlm", 0x8000200f00000000ULL },
1798 { "rmoust", 0x800023b100000000ULL },
1799 { "rmoustache", 0x800023b100000000ULL },
1800 { "rnmid", 0x80002aee00000000ULL },
1801 { "roang", 0x800027ed00000000ULL },
1802 { "roarr", 0x800021fe00000000ULL },
1803 { "robrk", 0x800027e700000000ULL },
1804 { "ropar", 0x8000298600000000ULL },
1805 { "ropf", 0x8001d56300000000ULL },
1806 { "roplus", 0x80002a2e00000000ULL },
1807 { "rotimes", 0x80002a3500000000ULL },
1808 { "rpar", 0x8000002900000000ULL },
1809 { "rpargt", 0x8000299400000000ULL },
1810 { "rppolint", 0x80002a1200000000ULL },
1811 { "rrarr", 0x800021c900000000ULL },
1812 { "rsaquo", 0x8000203a00000000ULL },
1813 { "rscr", 0x8001d4c700000000ULL },
1814 { "rsh", 0x800021b100000000ULL },
1815 { "rsqb", 0x8000005d00000000ULL },
1816 { "rsquo", 0x8000201900000000ULL },
1817 { "rsquor", 0x8000201900000000ULL },
1818 { "rthree", 0x800022cc00000000ULL },
1819 { "rtimes", 0x800022ca00000000ULL },
1820 { "rtri", 0x800025b900000000ULL },
1821 { "rtrie", 0x800022b500000000ULL },
1822 { "rtrif", 0x800025b800000000ULL },
1823 { "rtriltri", 0x800029ce00000000ULL },
1824 { "ruluhar", 0x8000296800000000ULL },
1825 { "rx", 0x8000211e00000000ULL },
1826 { "sacute", 0x8000015b00000000ULL },
1827 { "sbquo", 0x8000201a00000000ULL },
1828 { "sc", 0x8000227b00000000ULL },
1829 { "scE", 0x80002ab400000000ULL },
1830 { "scap", 0x80002ab800000000ULL },
1831 { "scaron", 0x8000016100000000ULL },
1832 { "sccue", 0x8000227d00000000ULL },
1833 { "sce", 0x80002ab000000000ULL },
1834 { "scedil", 0x8000015f00000000ULL },
1835 { "scirc", 0x8000015d00000000ULL },
1836 { "scnE", 0x80002ab600000000ULL },
1837 { "scnap", 0x80002aba00000000ULL },
1838 { "scnsim", 0x800022e900000000ULL },
1839 { "scpolint", 0x80002a1300000000ULL },
1840 { "scsim", 0x8000227f00000000ULL },
1841 { "scy", 0x8000044100000000ULL },
1842 { "sdot", 0x800022c500000000ULL },
1843 { "sdotb", 0x800022a100000000ULL },
1844 { "sdote", 0x80002a6600000000ULL },
1845 { "seArr", 0x800021d800000000ULL },
1846 { "searhk", 0x8000292500000000ULL },
1847 { "searr", 0x8000219800000000ULL },
1848 { "searrow", 0x8000219800000000ULL },
1849 { "sect", 0x000000a700000000ULL },
1850 { "semi", 0x8000003b00000000ULL },
1851 { "seswar", 0x8000292900000000ULL },
1852 { "setminus", 0x8000221600000000ULL },
1853 { "setmn", 0x8000221600000000ULL },
1854 { "sext", 0x8000273600000000ULL },
1855 { "sfr", 0x8001d53000000000ULL },
1856 { "sfrown", 0x8000232200000000ULL },
1857 { "sharp", 0x8000266f00000000ULL },
1858 { "shchcy", 0x8000044900000000ULL },
1859 { "shcy", 0x8000044800000000ULL },
1860 { "shortmid", 0x8000222300000000ULL },
1861 { "shortparallel", 0x8000222500000000ULL },
1862 { "shy", 0x000000ad00000000ULL },
1863 { "sigma", 0x800003c300000000ULL },
1864 { "sigmaf", 0x800003c200000000ULL },
1865 { "sigmav", 0x800003c200000000ULL },
1866 { "sim", 0x8000223c00000000ULL },
1867 { "simdot", 0x80002a6a00000000ULL },
1868 { "sime", 0x8000224300000000ULL },
1869 { "simeq", 0x8000224300000000ULL },
1870 { "simg", 0x80002a9e00000000ULL },
1871 { "simgE", 0x80002aa000000000ULL },
1872 { "siml", 0x80002a9d00000000ULL },
1873 { "simlE", 0x80002a9f00000000ULL },
1874 { "simne", 0x8000224600000000ULL },
1875 { "simplus", 0x80002a2400000000ULL },
1876 { "simrarr", 0x8000297200000000ULL },
1877 { "slarr", 0x8000219000000000ULL },
1878 { "smallsetminus", 0x8000221600000000ULL },
1879 { "smashp", 0x80002a3300000000ULL },
1880 { "smeparsl", 0x800029e400000000ULL },
1881 { "smid", 0x8000222300000000ULL },
1882 { "smile", 0x8000232300000000ULL },
1883 { "smt", 0x80002aaa00000000ULL },
1884 { "smte", 0x80002aac00000000ULL },
1885 { "smtes", 0x80002aac0000fe00ULL },
1886 { "softcy", 0x8000044c00000000ULL },
1887 { "sol", 0x8000002f00000000ULL },
1888 { "solb", 0x800029c400000000ULL },
1889 { "solbar", 0x8000233f00000000ULL },
1890 { "sopf", 0x8001d56400000000ULL },
1891 { "spades", 0x8000266000000000ULL },
1892 { "spadesuit", 0x8000266000000000ULL },
1893 { "spar", 0x8000222500000000ULL },
1894 { "sqcap", 0x8000229300000000ULL },
1895 { "sqcaps", 0x800022930000fe00ULL },
1896 { "sqcup", 0x8000229400000000ULL },
1897 { "sqcups", 0x800022940000fe00ULL },
1898 { "sqsub", 0x8000228f00000000ULL },
1899 { "sqsube", 0x8000229100000000ULL },
1900 { "sqsubset", 0x8000228f00000000ULL },
1901 { "sqsubseteq", 0x8000229100000000ULL },
1902 { "sqsup", 0x8000229000000000ULL },
1903 { "sqsupe", 0x8000229200000000ULL },
1904 { "sqsupset", 0x8000229000000000ULL },
1905 { "sqsupseteq", 0x8000229200000000ULL },
1906 { "squ", 0x800025a100000000ULL },
1907 { "square", 0x800025a100000000ULL },
1908 { "squarf", 0x800025aa00000000ULL },
1909 { "squf", 0x800025aa00000000ULL },
1910 { "srarr", 0x8000219200000000ULL },
1911 { "sscr", 0x8001d4c800000000ULL },
1912 { "ssetmn", 0x8000221600000000ULL },
1913 { "ssmile", 0x8000232300000000ULL },
1914 { "sstarf", 0x800022c600000000ULL },
1915 { "star", 0x8000260600000000ULL },
1916 { "starf", 0x8000260500000000ULL },
1917 { "straightepsilon", 0x800003f500000000ULL },
1918 { "straightphi", 0x800003d500000000ULL },
1919 { "strns", 0x800000af00000000ULL },
1920 { "sub", 0x8000228200000000ULL },
1921 { "subE", 0x80002ac500000000ULL },
1922 { "subdot", 0x80002abd00000000ULL },
1923 { "sube", 0x8000228600000000ULL },
1924 { "subedot", 0x80002ac300000000ULL },
1925 { "submult", 0x80002ac100000000ULL },
1926 { "subnE", 0x80002acb00000000ULL },
1927 { "subne", 0x8000228a00000000ULL },
1928 { "subplus", 0x80002abf00000000ULL },
1929 { "subrarr", 0x8000297900000000ULL },
1930 { "subset", 0x8000228200000000ULL },
1931 { "subseteq", 0x8000228600000000ULL },
1932 { "subseteqq", 0x80002ac500000000ULL },
1933 { "subsetneq", 0x8000228a00000000ULL },
1934 { "subsetneqq", 0x80002acb00000000ULL },
1935 { "subsim", 0x80002ac700000000ULL },
1936 { "subsub", 0x80002ad500000000ULL },
1937 { "subsup", 0x80002ad300000000ULL },
1938 { "succ", 0x8000227b00000000ULL },
1939 { "succapprox", 0x80002ab800000000ULL },
1940 { "succcurlyeq", 0x8000227d00000000ULL },
1941 { "succeq", 0x80002ab000000000ULL },
1942 { "succnapprox", 0x80002aba00000000ULL },
1943 { "succneqq", 0x80002ab600000000ULL },
1944 { "succnsim", 0x800022e900000000ULL },
1945 { "succsim", 0x8000227f00000000ULL },
1946 { "sum", 0x8000221100000000ULL },
1947 { "sung", 0x8000266a00000000ULL },
1948 { "sup", 0x8000228300000000ULL },
1949 { "sup1", 0x000000b900000000ULL },
1950 { "sup2", 0x000000b200000000ULL },
1951 { "sup3", 0x000000b300000000ULL },
1952 { "supE", 0x80002ac600000000ULL },
1953 { "supdot", 0x80002abe00000000ULL },
1954 { "supdsub", 0x80002ad800000000ULL },
1955 { "supe", 0x8000228700000000ULL },
1956 { "supedot", 0x80002ac400000000ULL },
1957 { "suphsol", 0x800027c900000000ULL },
1958 { "suphsub", 0x80002ad700000000ULL },
1959 { "suplarr", 0x8000297b00000000ULL },
1960 { "supmult", 0x80002ac200000000ULL },
1961 { "supnE", 0x80002acc00000000ULL },
1962 { "supne", 0x8000228b00000000ULL },
1963 { "supplus", 0x80002ac000000000ULL },
1964 { "supset", 0x8000228300000000ULL },
1965 { "supseteq", 0x8000228700000000ULL },
1966 { "supseteqq", 0x80002ac600000000ULL },
1967 { "supsetneq", 0x8000228b00000000ULL },
1968 { "supsetneqq", 0x80002acc00000000ULL },
1969 { "supsim", 0x80002ac800000000ULL },
1970 { "supsub", 0x80002ad400000000ULL },
1971 { "supsup", 0x80002ad600000000ULL },
1972 { "swArr", 0x800021d900000000ULL },
1973 { "swarhk", 0x8000292600000000ULL },
1974 { "swarr", 0x8000219900000000ULL },
1975 { "swarrow", 0x8000219900000000ULL },
1976 { "swnwar", 0x8000292a00000000ULL },
1977 { "szlig", 0x000000df00000000ULL },
1978 { "target", 0x8000231600000000ULL },
1979 { "tau", 0x800003c400000000ULL },
1980 { "tbrk", 0x800023b400000000ULL },
1981 { "tcaron", 0x8000016500000000ULL },
1982 { "tcedil", 0x8000016300000000ULL },
1983 { "tcy", 0x8000044200000000ULL },
1984 { "tdot", 0x800020db00000000ULL },
1985 { "telrec", 0x8000231500000000ULL },
1986 { "tfr", 0x8001d53100000000ULL },
1987 { "there4", 0x8000223400000000ULL },
1988 { "therefore", 0x8000223400000000ULL },
1989 { "theta", 0x800003b800000000ULL },
1990 { "thetasym", 0x800003d100000000ULL },
1991 { "thetav", 0x800003d100000000ULL },
1992 { "thickapprox", 0x8000224800000000ULL },
1993 { "thicksim", 0x8000223c00000000ULL },
1994 { "thinsp", 0x8000200900000000ULL },
1995 { "thkap", 0x8000224800000000ULL },
1996 { "thksim", 0x8000223c00000000ULL },
1997 { "thorn", 0x000000fe00000000ULL },
1998 { "tilde", 0x800002dc00000000ULL },
1999 { "times", 0x000000d700000000ULL },
2000 { "timesb", 0x800022a000000000ULL },
2001 { "timesbar", 0x80002a3100000000ULL },
2002 { "timesd", 0x80002a3000000000ULL },
2003 { "tint", 0x8000222d00000000ULL },
2004 { "toea", 0x8000292800000000ULL },
2005 { "top", 0x800022a400000000ULL },
2006 { "topbot", 0x8000233600000000ULL },
2007 { "topcir", 0x80002af100000000ULL },
2008 { "topf", 0x8001d56500000000ULL },
2009 { "topfork", 0x80002ada00000000ULL },
2010 { "tosa", 0x8000292900000000ULL },
2011 { "tprime", 0x8000203400000000ULL },
2012 { "trade", 0x8000212200000000ULL },
2013 { "triangle", 0x800025b500000000ULL },
2014 { "triangledown", 0x800025bf00000000ULL },
2015 { "triangleleft", 0x800025c300000000ULL },
2016 { "trianglelefteq", 0x800022b400000000ULL },
2017 { "triangleq", 0x8000225c00000000ULL },
2018 { "triangleright", 0x800025b900000000ULL },
2019 { "trianglerighteq", 0x800022b500000000ULL },
2020 { "tridot", 0x800025ec00000000ULL },
2021 { "trie", 0x8000225c00000000ULL },
2022 { "triminus", 0x80002a3a00000000ULL },
2023 { "triplus", 0x80002a3900000000ULL },
2024 { "trisb", 0x800029cd00000000ULL },
2025 { "tritime", 0x80002a3b00000000ULL },
2026 { "trpezium", 0x800023e200000000ULL },
2027 { "tscr", 0x8001d4c900000000ULL },
2028 { "tscy", 0x8000044600000000ULL },
2029 { "tshcy", 0x8000045b00000000ULL },
2030 { "tstrok", 0x8000016700000000ULL },
2031 { "twixt", 0x8000226c00000000ULL },
2032 { "twoheadleftarrow", 0x8000219e00000000ULL },
2033 { "twoheadrightarrow", 0x800021a000000000ULL },
2034 { "uArr", 0x800021d100000000ULL },
2035 { "uHar", 0x8000296300000000ULL },
2036 { "uacute", 0x000000fa00000000ULL },
2037 { "uarr", 0x8000219100000000ULL },
2038 { "ubrcy", 0x8000045e00000000ULL },
2039 { "ubreve", 0x8000016d00000000ULL },
2040 { "ucirc", 0x000000fb00000000ULL },
2041 { "ucy", 0x8000044300000000ULL },
2042 { "udarr", 0x800021c500000000ULL },
2043 { "udblac", 0x8000017100000000ULL },
2044 { "udhar", 0x8000296e00000000ULL },
2045 { "ufisht", 0x8000297e00000000ULL },
2046 { "ufr", 0x8001d53200000000ULL },
2047 { "ugrave", 0x000000f900000000ULL },
2048 { "uharl", 0x800021bf00000000ULL },
2049 { "uharr", 0x800021be00000000ULL },
2050 { "uhblk", 0x8000258000000000ULL },
2051 { "ulcorn", 0x8000231c00000000ULL },
2052 { "ulcorner", 0x8000231c00000000ULL },
2053 { "ulcrop", 0x8000230f00000000ULL },
2054 { "ultri", 0x800025f800000000ULL },
2055 { "umacr", 0x8000016b00000000ULL },
2056 { "uml", 0x000000a800000000ULL },
2057 { "uogon", 0x8000017300000000ULL },
2058 { "uopf", 0x8001d56600000000ULL },
2059 { "uparrow", 0x8000219100000000ULL },
2060 { "updownarrow", 0x8000219500000000ULL },
2061 { "upharpoonleft", 0x800021bf00000000ULL },
2062 { "upharpoonright", 0x800021be00000000ULL },
2063 { "uplus", 0x8000228e00000000ULL },
2064 { "upsi", 0x800003c500000000ULL },
2065 { "upsih", 0x800003d200000000ULL },
2066 { "upsilon", 0x800003c500000000ULL },
2067 { "upuparrows", 0x800021c800000000ULL },
2068 { "urcorn", 0x8000231d00000000ULL },
2069 { "urcorner", 0x8000231d00000000ULL },
2070 { "urcrop", 0x8000230e00000000ULL },
2071 { "uring", 0x8000016f00000000ULL },
2072 { "urtri", 0x800025f900000000ULL },
2073 { "uscr", 0x8001d4ca00000000ULL },
2074 { "utdot", 0x800022f000000000ULL },
2075 { "utilde", 0x8000016900000000ULL },
2076 { "utri", 0x800025b500000000ULL },
2077 { "utrif", 0x800025b400000000ULL },
2078 { "uuarr", 0x800021c800000000ULL },
2079 { "uuml", 0x000000fc00000000ULL },
2080 { "uwangle", 0x800029a700000000ULL },
2081 { "vArr", 0x800021d500000000ULL },
2082 { "vBar", 0x80002ae800000000ULL },
2083 { "vBarv", 0x80002ae900000000ULL },
2084 { "vDash", 0x800022a800000000ULL },
2085 { "vangrt", 0x8000299c00000000ULL },
2086 { "varepsilon", 0x800003f500000000ULL },
2087 { "varkappa", 0x800003f000000000ULL },
2088 { "varnothing", 0x8000220500000000ULL },
2089 { "varphi", 0x800003d500000000ULL },
2090 { "varpi", 0x800003d600000000ULL },
2091 { "varpropto", 0x8000221d00000000ULL },
2092 { "varr", 0x8000219500000000ULL },
2093 { "varrho", 0x800003f100000000ULL },
2094 { "varsigma", 0x800003c200000000ULL },
2095 { "varsubsetneq", 0x8000228a0000fe00ULL },
2096 { "varsubsetneqq", 0x80002acb0000fe00ULL },
2097 { "varsupsetneq", 0x8000228b0000fe00ULL },
2098 { "varsupsetneqq", 0x80002acc0000fe00ULL },
2099 { "vartheta", 0x800003d100000000ULL },
2100 { "vartriangleleft", 0x800022b200000000ULL },
2101 { "vartriangleright", 0x800022b300000000ULL },
2102 { "vcy", 0x8000043200000000ULL },
2103 { "vdash", 0x800022a200000000ULL },
2104 { "vee", 0x8000222800000000ULL },
2105 { "veebar", 0x800022bb00000000ULL },
2106 { "veeeq", 0x8000225a00000000ULL },
2107 { "vellip", 0x800022ee00000000ULL },
2108 { "verbar", 0x8000007c00000000ULL },
2109 { "vert", 0x8000007c00000000ULL },
2110 { "vfr", 0x8001d53300000000ULL },
2111 { "vltri", 0x800022b200000000ULL },
2112 { "vnsub", 0x80002282000020d2ULL },
2113 { "vnsup", 0x80002283000020d2ULL },
2114 { "vopf", 0x8001d56700000000ULL },
2115 { "vprop", 0x8000221d00000000ULL },
2116 { "vrtri", 0x800022b300000000ULL },
2117 { "vscr", 0x8001d4cb00000000ULL },
2118 { "vsubnE", 0x80002acb0000fe00ULL },
2119 { "vsubne", 0x8000228a0000fe00ULL },
2120 { "vsupnE", 0x80002acc0000fe00ULL },
2121 { "vsupne", 0x8000228b0000fe00ULL },
2122 { "vzigzag", 0x8000299a00000000ULL },
2123 { "wcirc", 0x8000017500000000ULL },
2124 { "wedbar", 0x80002a5f00000000ULL },
2125 { "wedge", 0x8000222700000000ULL },
2126 { "wedgeq", 0x8000225900000000ULL },
2127 { "weierp", 0x8000211800000000ULL },
2128 { "wfr", 0x8001d53400000000ULL },
2129 { "wopf", 0x8001d56800000000ULL },
2130 { "wp", 0x8000211800000000ULL },
2131 { "wr", 0x8000224000000000ULL },
2132 { "wreath", 0x8000224000000000ULL },
2133 { "wscr", 0x8001d4cc00000000ULL },
2134 { "xcap", 0x800022c200000000ULL },
2135 { "xcirc", 0x800025ef00000000ULL },
2136 { "xcup", 0x800022c300000000ULL },
2137 { "xdtri", 0x800025bd00000000ULL },
2138 { "xfr", 0x8001d53500000000ULL },
2139 { "xhArr", 0x800027fa00000000ULL },
2140 { "xharr", 0x800027f700000000ULL },
2141 { "xi", 0x800003be00000000ULL },
2142 { "xlArr", 0x800027f800000000ULL },
2143 { "xlarr", 0x800027f500000000ULL },
2144 { "xmap", 0x800027fc00000000ULL },
2145 { "xnis", 0x800022fb00000000ULL },
2146 { "xodot", 0x80002a0000000000ULL },
2147 { "xopf", 0x8001d56900000000ULL },
2148 { "xoplus", 0x80002a0100000000ULL },
2149 { "xotime", 0x80002a0200000000ULL },
2150 { "xrArr", 0x800027f900000000ULL },
2151 { "xrarr", 0x800027f600000000ULL },
2152 { "xscr", 0x8001d4cd00000000ULL },
2153 { "xsqcup", 0x80002a0600000000ULL },
2154 { "xuplus", 0x80002a0400000000ULL },
2155 { "xutri", 0x800025b300000000ULL },
2156 { "xvee", 0x800022c100000000ULL },
2157 { "xwedge", 0x800022c000000000ULL },
2158 { "yacute", 0x000000fd00000000ULL },
2159 { "yacy", 0x8000044f00000000ULL },
2160 { "ycirc", 0x8000017700000000ULL },
2161 { "ycy", 0x8000044b00000000ULL },
2162 { "yen", 0x000000a500000000ULL },
2163 { "yfr", 0x8001d53600000000ULL },
2164 { "yicy", 0x8000045700000000ULL },
2165 { "yopf", 0x8001d56a00000000ULL },
2166 { "yscr", 0x8001d4ce00000000ULL },
2167 { "yucy", 0x8000044e00000000ULL },
2168 { "yuml", 0x000000ff00000000ULL },
2169 { "zacute", 0x8000017a00000000ULL },
2170 { "zcaron", 0x8000017e00000000ULL },
2171 { "zcy", 0x8000043700000000ULL },
2172 { "zdot", 0x8000017c00000000ULL },
2173 { "zeetrf", 0x8000212800000000ULL },
2174 { "zeta", 0x800003b600000000ULL },
2175 { "zfr", 0x8001d53700000000ULL },
2176 { "zhcy", 0x8000043600000000ULL },
2177 { "zigrarr", 0x800021dd00000000ULL },
2178 { "zopf", 0x8001d56b00000000ULL },
2179 { "zscr", 0x8001d4cf00000000ULL },
2180 { "zwj", 0x8000200d00000000ULL },
2181 { "zwnj", 0x8000200c00000000ULL },
2182 };
2183
2184 static void
2185 ucv_stringbuf_addutf8(uc_stringbuf_t *buf, unsigned int code)
2186 {
2187 unsigned char seq[5];
2188 size_t len = 0;
2189
2190 switch (code) {
2191 // disallow CR (https://html.spec.whatwg.org/multipage/syntax.html#character-references)
2192 case 0xD:
2193
2194 // disallow controls (https://infra.spec.whatwg.org/#control) except whitespace
2195 case 0x0 ... 0x8:
2196 case 0xB:
2197 case 0xE ... 0x1F:
2198 case 0x7F ... 0x9F:
2199
2200 // disallow noncharacter (https://infra.spec.whatwg.org/#noncharacter)
2201 case 0xFDD0 ... 0xFDEF:
2202 case 0xFFFE ... 0xFFFF:
2203 case 0x1FFFE ... 0x1FFFF:
2204 case 0x2FFFE ... 0x2FFFF:
2205 case 0x3FFFE ... 0x3FFFF:
2206 case 0x4FFFE ... 0x4FFFF:
2207 case 0x5FFFE ... 0x5FFFF:
2208 case 0x6FFFE ... 0x6FFFF:
2209 case 0x7FFFE ... 0x7FFFF:
2210 case 0x8FFFE ... 0x8FFFF:
2211 case 0x9FFFE ... 0x9FFFF:
2212 case 0xAFFFE ... 0xAFFFF:
2213 case 0xBFFFE ... 0xBFFFF:
2214 case 0xCFFFE ... 0xCFFFF:
2215 case 0xDFFFE ... 0xDFFFF:
2216 case 0xEFFFE ... 0xEFFFF:
2217 case 0xFFFFE ... 0xFFFFF:
2218 case 0x10FFFE ... 0x10FFFF:
2219 return;
2220 }
2221
2222 if (code <= 0x7F) {
2223 seq[len++] = code;
2224 }
2225 else if (code <= 0x7FF) {
2226 seq[len++] = ((code >> 6) & 0x1F) | 0xC0;
2227 seq[len++] = ( code & 0x3F) | 0x80;
2228 }
2229 else if (code <= 0xFFFF) {
2230 seq[len++] = ((code >> 12) & 0x0F) | 0xE0;
2231 seq[len++] = ((code >> 6) & 0x3F) | 0x80;
2232 seq[len++] = ( code & 0x3F) | 0x80;
2233 }
2234 else if (code <= 0x10FFFF) {
2235 seq[len++] = ((code >> 18) & 0x07) | 0xF0;
2236 seq[len++] = ((code >> 12) & 0x3F) | 0x80;
2237 seq[len++] = ((code >> 6) & 0x3F) | 0x80;
2238 seq[len++] = ( code & 0x3F) | 0x80;
2239 }
2240
2241 ucv_stringbuf_addstr(buf, (char *)seq, len);
2242 }
2243
2244 static void
2245 expand_named_char_ref(uc_stringbuf_t *buf, const char *name, size_t len, bool semicolon)
2246 {
2247 ssize_t l = 0;
2248 ssize_t r = sizeof(named_char_refs) / sizeof(named_char_refs[0]) - 1;
2249 ssize_t m;
2250 int c;
2251
2252 while (l <= r) {
2253 m = (l + r) / 2;
2254 c = strncmp(named_char_refs[m].name, name, len);
2255
2256 if (c < 0) {
2257 l = m + 1;
2258 continue;
2259 }
2260
2261 if (c > 0 || named_char_refs[m].name[len] != 0) {
2262 r = m - 1;
2263 continue;
2264 }
2265
2266 if (!(named_char_refs[m].value & (1ULL << 63)) || semicolon) {
2267 ucv_stringbuf_addutf8(buf, (named_char_refs[m].value >> 32) & 0x7FFFFFFFULL);
2268 ucv_stringbuf_addutf8(buf, named_char_refs[m].value & 0xFFFFFFFFULL);
2269
2270 return;
2271 }
2272
2273 break;
2274 }
2275
2276 ucv_stringbuf_append(buf, "&");
2277 ucv_stringbuf_addstr(buf, name, len);
2278
2279 if (semicolon)
2280 ucv_stringbuf_append(buf, ";");
2281 }
2282
2283 static void
2284 expand_char_refs(uc_stringbuf_t *buf, const char *s, size_t len, bool loose)
2285 {
2286 const char *end = s + len, *p;
2287 unsigned int u;
2288 size_t elen;
2289 char *e;
2290
2291 while (s < end) {
2292 p = memchr(s, '&', end - s);
2293 elen = 1;
2294
2295 if (!p) {
2296 ucv_stringbuf_addstr(buf, s, end - s);
2297 break;
2298 }
2299
2300 ucv_stringbuf_addstr(buf, s, p - s);
2301
2302 while (isalpha(p[elen]))
2303 elen++;
2304
2305 if (elen > 1) {
2306 if (p[elen] == ';') {
2307 expand_named_char_ref(buf, p + 1, elen - 1, true);
2308 s = p + elen + 1;
2309 }
2310 else if (loose) {
2311 expand_named_char_ref(buf, p + 1, elen - 1, false);
2312 s = p + elen;
2313 }
2314 else {
2315 ucv_stringbuf_addstr(buf, p, elen);
2316 s = p + elen;
2317 }
2318 }
2319 else if (p[elen] == '#') {
2320 if ((p[++elen] | 32) == 'x') {
2321 u = strtoul(p + ++elen, &e, 16);
2322
2323 if (e > p + elen && *e == ';') {
2324 ucv_stringbuf_addutf8(buf, u);
2325 s = e + 1;
2326 }
2327 else {
2328 ucv_stringbuf_addstr(buf, p, e - p);
2329 s = e;
2330 }
2331 }
2332 else {
2333 u = strtoul(p + elen, &e, 10);
2334
2335 if (e > p + elen && *e == ';') {
2336 ucv_stringbuf_addutf8(buf, u);
2337 s = e + 1;
2338 }
2339 else {
2340 ucv_stringbuf_addstr(buf, p, e - p);
2341 s = e;
2342 }
2343 }
2344 }
2345 else {
2346 ucv_stringbuf_addstr(buf, p, elen);
2347 s = p + elen;
2348 }
2349 }
2350 }
2351
2352 static void
2353 ucv_stringbuf_addtext(uc_stringbuf_t *buf, const char *s, size_t len)
2354 {
2355 bool space = (buf->bpos && isspace(buf->buf[buf->bpos - 1]));
2356
2357 while (space && isspace(*s)) {
2358 s++;
2359 len--;
2360 }
2361
2362 while (len > 1 && isspace(s[len - 1]))
2363 len--;
2364
2365 expand_char_refs(buf, s, len, true);
2366 }
2367
2368 static bool
2369 _invoke_cb(const char *s, size_t len, html_token_callback_t cb,
2370 html_token_type_t type, void *ud)
2371 {
2372 size_t chunksize;
2373
2374 while (len > 0) {
2375 chunksize = (len > 1024) ? 1024 : len;
2376
2377 if (!cb(type, s, chunksize, ud))
2378 return false;
2379
2380 len -= chunksize;
2381 s += chunksize;
2382 }
2383
2384 return true;
2385 }
2386
2387 #define invoke_cb(s, len, cb, type, ud) \
2388 do { \
2389 if (!_invoke_cb(s, len, cb, type, ud)) \
2390 return false; \
2391 } while(0)
2392
2393 static size_t
2394 _memspn(const char *s, size_t n, const char *set, size_t m, bool invert)
2395 {
2396 uint64_t mask[(1 << CHAR_BIT) / (sizeof(uint64_t) * CHAR_BIT)] = { 0 };
2397
2398 #define mask_off(n) mask[((unsigned char)(n) / (sizeof(mask[0]) * CHAR_BIT))]
2399 #define mask_bit(n) (1ULL << ((unsigned char)(n) % (sizeof(mask[0]) * CHAR_BIT)))
2400
2401 /* NB: Nudge clang & gcc to unroll the mask initialization loop below.
2402 * Since we only invoke _memspn() with constant set string literals
2403 * containing only characters up to '>' (62), the loop below should
2404 * be optimized into a single constant load opcode for mask[0].
2405 */
2406 #ifdef __clang__
2407 #pragma unroll 255
2408 #elif __GNUC__
2409 #pragma GCC unroll 255
2410 #endif
2411 for (; m > 0; m--, set++)
2412 mask_off(*set) |= mask_bit(*set);
2413
2414 for (m = 0; m < n; m++)
2415 if (!(mask_off(s[m]) & mask_bit(s[m])) == !invert)
2416 break;
2417
2418 #undef mask_off
2419 #undef mask_bit
2420
2421 return m;
2422 }
2423
2424 #define memspn(s, n, set) _memspn(s, n, set, sizeof(set) - 1, false)
2425 #define memcspn(s, n, set) _memspn(s, n, set, sizeof(set) - 1, true)
2426
2427 static bool
2428 tokenize_html(const char *s, size_t len, html_token_callback_t cb, void *ud)
2429 {
2430 const char *end = s + len, *p;
2431 char raw[16] = { 0 };
2432
2433 enum {
2434 SEARCH,
2435 IDENTIFY,
2436 COMMENT,
2437 ATTR,
2438 END
2439 } state = 0;
2440
2441 while (state != END) {
2442 switch (state) {
2443 case SEARCH:
2444 p = memchr(s, '<', end - s);
2445
2446 if (p) {
2447 if (p != s)
2448 invoke_cb(s, p - s, cb, raw[0] ? T_RAW : T_TEXT, ud);
2449
2450 s = p + 1;
2451 state = IDENTIFY;
2452 }
2453 else {
2454 state = END;
2455 }
2456
2457 break;
2458
2459 case IDENTIFY:
2460 if (*s == '/') {
2461 p = memchr(s, '>', end - s);
2462
2463 if (p) {
2464 while (p != s && isspace(p[-1]))
2465 p--;
2466
2467 if (!raw[0] || !strncasecmp(s + 1, raw, p - s - 1)) {
2468 invoke_cb(s + 1, p - s - 1, cb, T_CLOSE, ud);
2469 raw[0] = 0;
2470 }
2471 else {
2472 invoke_cb(s - 1, p - s + 2, cb, T_RAW, ud);
2473 }
2474
2475 s = p + 1;
2476 state = SEARCH;
2477 }
2478 else {
2479 state = END;
2480 }
2481 }
2482 else if (raw[0]) {
2483 invoke_cb("<", 1, cb, T_RAW, ud);
2484 state = SEARCH;
2485 }
2486 else if (*s == '!') {
2487 state = COMMENT;
2488 s++;
2489 }
2490 else {
2491 p = s + memcspn(s, end - s, "/'\"> \f\r\t\n\0");
2492
2493 if (p != s) {
2494 invoke_cb(s, p - s, cb, T_OPEN, ud);
2495
2496 if (!strncasecmp(s, "script", p - s) ||
2497 !strncasecmp(s, "style", p - s)) {
2498 memset(raw, 0, sizeof(raw));
2499 memcpy(raw, s, p - s);
2500 }
2501
2502 s = p + memspn(p, end - p, " \f\r\t\n\0");
2503 state = ATTR;
2504 }
2505 else {
2506 invoke_cb("<", 1, cb, T_TEXT, ud);
2507 state = SEARCH;
2508 }
2509 }
2510
2511 break;
2512
2513 case COMMENT:
2514 if (!strncmp(s, "--", 2)) {
2515 p = memmem(s + 2, end - s - 2, "-->", 3);
2516
2517 if (p) {
2518 invoke_cb(s + 2, p - s - 2, cb, raw[0] ? T_RAW : T_COMMENT, ud);
2519 s = p + 3;
2520 state = SEARCH;
2521 }
2522 else {
2523 // unterminated comment
2524 invoke_cb(s + 2, end - s - 2, cb, raw[0] ? T_RAW : T_COMMENT, ud);
2525 s = NULL;
2526 state = END;
2527 }
2528 }
2529 else if (!strncasecmp(s, "[CDATA[", 7)) {
2530 p = memmem(s + 7, end - s - 7, "]]>", 3);
2531
2532 if (p) {
2533 invoke_cb(s + 7, p - s - 7, cb, raw[0] ? T_RAW : T_CDATA, ud);
2534 s = p + 3;
2535 state = SEARCH;
2536 }
2537 else {
2538 // unterminated comment
2539 invoke_cb(s + 7, end - s - 7, cb, raw[0] ? T_RAW : T_CDATA, ud);
2540 s = NULL;
2541 state = END;
2542 }
2543 }
2544 else {
2545 p = memchr(s, '>', end - s);
2546
2547 if (p) {
2548 invoke_cb(s, p - s, cb, raw[0] ? T_RAW : T_PROCINST, ud);
2549 s = p + 1;
2550 state = SEARCH;
2551 }
2552 else {
2553 // unterminated comment
2554 invoke_cb(s, end - s, cb, raw[0] ? T_RAW : T_PROCINST, ud);
2555 s = NULL;
2556 state = END;
2557 }
2558 }
2559
2560 break;
2561
2562 case ATTR:
2563 p = s + memcspn(s, end - s, "'\"> \f\r\t\n\0");
2564
2565 if (*p == '>') {
2566 if (p != s) {
2567 if ((p - s) > 1 || *s != '/')
2568 invoke_cb(s, p - s, cb, T_ATTR, ud);
2569 }
2570
2571 s = p + 1;
2572 state = SEARCH;
2573 }
2574 else if (*p == '"' || *p == '\'') {
2575 p = memchr(p + 1, *p, end - p);
2576
2577 if (p) {
2578 invoke_cb(s, p - s + 1, cb, T_ATTR, ud);
2579 s = p + 1;
2580 }
2581 else {
2582 // unterminated quoted string
2583 s = NULL;
2584 state = END;
2585 }
2586 }
2587 else if (*p) {
2588 if (p != s)
2589 invoke_cb(s, p - s, cb, T_ATTR, ud);
2590
2591 s = p + memspn(p, end - p, " \f\r\t\n\0");
2592 }
2593 else {
2594 // eof
2595 state = END;
2596 }
2597
2598 break;
2599
2600 case END:
2601 /* not reached */
2602 break;
2603 }
2604 }
2605
2606 if (s && *s)
2607 invoke_cb(s, end - s, cb, raw[0] ? T_RAW : T_TEXT, ud);
2608
2609 invoke_cb("", 0, cb, T_EOF, ud);
2610
2611 return true;
2612 }
2613
2614
2615 static bool
2616 uc_html_tokenize_cb(html_token_type_t type, const char *s, size_t len, void *ud)
2617 {
2618 const char *end = s + len, *val;
2619 uc_vm_t *vm = ud;
2620
2621 uc_vm_stack_push(vm, ucv_get(uc_vm_stack_peek(vm, 0)));
2622 uc_vm_stack_push(vm, ucv_int64_new(type));
2623
2624 val = (type == T_ATTR && s != NULL) ? memchr(s, '=', len) : NULL;
2625
2626 if (val) {
2627 uc_vm_stack_push(vm, ucv_string_new_length(s, val - s));
2628
2629 val++;
2630
2631 if ((end - val) >= 2 && (*val == '"' || *val == '\'')) {
2632 val++;
2633 end--;
2634 }
2635
2636 uc_vm_stack_push(vm, ucv_string_new_length(val, end - val));
2637 }
2638 else if (type == T_TEXT && s) {
2639 uc_vm_stack_push(vm, ucv_string_new_length(s, end - s));
2640 }
2641 else if (s) {
2642 uc_vm_stack_push(vm, ucv_string_new_length(s, len));
2643 }
2644
2645 if (uc_vm_call(vm, false, 1 + !!s + !!val) == EXCEPTION_NONE) {
2646 ucv_put(uc_vm_stack_pop(vm));
2647
2648 return true;
2649 }
2650
2651 return false;
2652 }
2653
2654 static uc_value_t *
2655 uc_html_tokenize(uc_vm_t *vm, size_t nargs)
2656 {
2657 uc_value_t *input = uc_fn_arg(0);
2658 uc_value_t *callback = uc_fn_arg(1);
2659 bool res;
2660
2661 if (ucv_type(input) != UC_STRING)
2662 return NULL;
2663
2664 if (!ucv_is_callable(callback))
2665 return NULL;
2666
2667 uc_vm_stack_push(vm, ucv_get(callback));
2668
2669 res = tokenize_html(
2670 ucv_string_get(input), ucv_string_length(input),
2671 uc_html_tokenize_cb, vm);
2672
2673 ucv_put(uc_vm_stack_pop(vm));
2674
2675 return ucv_boolean_new(res);
2676 }
2677
2678
2679 static bool
2680 uc_html_striptags_cb(html_token_type_t type, const char *s, size_t len, void *ud)
2681 {
2682 uc_stringbuf_t *buf = ud;
2683
2684 if (type == T_TEXT)
2685 ucv_stringbuf_addtext(buf, s, len);
2686 else if (type == T_OPEN && (unsigned int)buf->bpos > sizeof(uc_string_t))
2687 ucv_stringbuf_append(buf, " ");
2688
2689 return true;
2690 }
2691
2692 static uc_value_t *
2693 uc_html_striptags(uc_vm_t *vm, size_t nargs)
2694 {
2695 uc_value_t *input = uc_fn_arg(0);
2696 uc_stringbuf_t *buf;
2697
2698 if (ucv_type(input) != UC_STRING)
2699 return NULL;
2700
2701 buf = ucv_stringbuf_new();
2702
2703 tokenize_html(
2704 ucv_string_get(input), ucv_string_length(input),
2705 uc_html_striptags_cb, buf);
2706
2707 return ucv_stringbuf_finish(buf);
2708 }
2709
2710
2711 static uc_value_t *
2712 uc_html_entitydecode(uc_vm_t *vm, size_t nargs)
2713 {
2714 uc_value_t *input = uc_fn_arg(0);
2715 uc_value_t *loose = uc_fn_arg(1);
2716 uc_stringbuf_t *buf;
2717
2718 if (ucv_type(input) != UC_STRING)
2719 return NULL;
2720
2721 buf = ucv_stringbuf_new();
2722
2723 expand_char_refs(buf, ucv_string_get(input), ucv_string_length(input),
2724 ucv_is_truish(loose));
2725
2726 return ucv_stringbuf_finish(buf);
2727 }
2728
2729 static uc_value_t *
2730 uc_html_entityencode(uc_vm_t *vm, size_t nargs)
2731 {
2732 uc_value_t *input = uc_fn_arg(0);
2733 uc_value_t *quote = uc_fn_arg(1);
2734 const char *s, *p, *end;
2735 uc_stringbuf_t *buf;
2736
2737 if (ucv_type(input) != UC_STRING)
2738 return NULL;
2739
2740 s = ucv_string_get(input);
2741 end = s + ucv_string_length(input);
2742 buf = ucv_stringbuf_new();
2743
2744 while (s < end) {
2745 if (ucv_is_truish(quote))
2746 p = s + memcspn(s, end - s, "<&'\">\0");
2747 else
2748 p = s + memcspn(s, end - s, "<&>\0");
2749
2750 if (p != s)
2751 ucv_stringbuf_addstr(buf, s, p - s);
2752
2753 if (p < end) {
2754 switch (*p) {
2755 case '"': ucv_stringbuf_append(buf, "&#34;"); break;
2756 case '&': ucv_stringbuf_append(buf, "&#38;"); break;
2757 case '\'': ucv_stringbuf_append(buf, "&#39;"); break;
2758 case '<': ucv_stringbuf_append(buf, "&#60;"); break;
2759 case '>': ucv_stringbuf_append(buf, "&#62;"); break;
2760 default: ucv_stringbuf_append(buf, "&#xfffd;");
2761 }
2762 }
2763
2764 s = p + 1;
2765 }
2766
2767 if (s < end)
2768 ucv_stringbuf_addstr(buf, s, end - s);
2769
2770 return ucv_stringbuf_finish(buf);
2771 }
2772
2773
2774 static const uc_function_list_t html_fns[] = {
2775 { "tokenize", uc_html_tokenize },
2776 { "striptags", uc_html_striptags },
2777 { "entitydecode", uc_html_entitydecode },
2778 { "entityencode", uc_html_entityencode },
2779 };
2780
2781 void uc_module_init(uc_vm_t *vm, uc_value_t *scope)
2782 {
2783 uc_function_list_register(scope, html_fns);
2784
2785 ucv_object_add(scope, "TEXT", ucv_int64_new(T_TEXT));
2786 ucv_object_add(scope, "RAW", ucv_int64_new(T_RAW));
2787 ucv_object_add(scope, "OPEN", ucv_int64_new(T_OPEN));
2788 ucv_object_add(scope, "ATTR", ucv_int64_new(T_ATTR));
2789 ucv_object_add(scope, "CLOSE", ucv_int64_new(T_CLOSE));
2790 ucv_object_add(scope, "COMMENT", ucv_int64_new(T_COMMENT));
2791 ucv_object_add(scope, "CDATA", ucv_int64_new(T_CDATA));
2792 ucv_object_add(scope, "PROCINST", ucv_int64_new(T_PROCINST));
2793 ucv_object_add(scope, "EOF", ucv_int64_new(T_EOF));
2794 }