1use std::char::REPLACEMENT_CHARACTER;
8
9pub fn add_html_token(result: &mut String, token: &[u8], add_space: bool) {
10 if add_space {
11 result.push(' ');
12 }
13
14 if let [b'&', entity @ .., b';'] = token {
15 let entity_code = if let [b'#', code @ ..] = entity {
16 let (code, radix) = if let [b'x' | b'X', code @ ..] = code {
17 (code, 16)
18 } else {
19 (code, 10)
20 };
21
22 std::str::from_utf8(code)
23 .ok()
24 .and_then(|code| u32::from_str_radix(code, radix).ok())
25 } else {
26 lookup_entity(entity).copied()
27 };
28
29 if let Some(entity_code) = entity_code {
30 result.push(char::from_u32(entity_code).unwrap_or(REPLACEMENT_CHARACTER));
31 return;
32 }
33 }
34
35 result.push_str(std::str::from_utf8(token).unwrap());
36}
37
38pub fn html_to_text(input: &str) -> String {
39 let mut result = String::with_capacity(input.len());
40 let input = input.as_bytes();
41
42 let mut in_tag = false;
43 let mut in_head = false;
44 let mut in_comment = false;
45
46 let mut is_token_start = true;
47 let mut is_after_space = false;
48 let mut is_tag_close = false;
49 let mut is_new_line = true;
50
51 let mut token_start = 0;
52 let mut token_end = 0;
53
54 let mut tag_token_pos = 0;
55 let mut comment_pos = 0;
56
57 for (pos, ch) in input.iter().enumerate() {
58 if !in_comment {
59 match ch {
60 b'<' => {
61 if !in_tag && !in_head && !is_token_start {
62 add_html_token(
63 &mut result,
64 &input[token_start..token_end + 1],
65 is_after_space,
66 );
67 is_after_space = false;
68 }
69
70 tag_token_pos = 0;
71 in_tag = true;
72 is_token_start = true;
73 is_tag_close = false;
74 continue;
75 }
76 b'>' if in_tag => {
77 if tag_token_pos == 1 {
78 match input.get(token_start..token_end + 1) {
79 Some(tag)
80 if tag.eq_ignore_ascii_case(b"br")
81 || (tag.eq_ignore_ascii_case(b"p") && is_tag_close) =>
82 {
83 result.push('\n');
84 is_after_space = false;
85 is_new_line = true;
86 }
87 Some(tag) if tag.eq_ignore_ascii_case(b"head") => {
88 in_head = !is_tag_close;
89 }
90 _ => (),
91 }
92 }
93
94 in_tag = false;
95 is_token_start = true;
96
97 continue;
98 }
99 b'/' if in_tag => {
100 if tag_token_pos == 0 {
101 is_tag_close = true;
102 }
103 continue;
104 }
105 b'!' if in_tag && tag_token_pos == 0 => {
106 if let Some(b"--") = input.get(pos + 1..pos + 3) {
107 in_comment = true;
108 continue;
109 }
110 }
111 b' ' | b'\t' | b'\r' | b'\n' => {
112 if !in_tag && !in_head {
113 if !is_token_start {
114 add_html_token(
115 &mut result,
116 &input[token_start..token_end + 1],
117 is_after_space && !is_new_line,
118 );
119 is_new_line = false;
120 }
121 is_after_space = true;
122 }
123
124 is_token_start = true;
125
126 continue;
127 }
128 b'&' if !in_tag && !is_token_start && !in_head => {
129 add_html_token(
130 &mut result,
131 &input[token_start..token_end + 1],
132 is_after_space && !is_new_line,
133 );
134 is_new_line = false;
135 is_token_start = true;
136 is_after_space = false;
137 }
138 b';' if !in_tag && !is_token_start && !in_head => {
139 add_html_token(
140 &mut result,
141 &input[token_start..pos + 1],
142 is_after_space && !is_new_line,
143 );
144 is_token_start = true;
145 is_after_space = false;
146 is_new_line = false;
147 continue;
148 }
149 _ => (),
150 }
151 if is_token_start {
152 token_start = pos;
153 is_token_start = false;
154 if in_tag {
155 tag_token_pos += 1;
156 }
157 }
158 token_end = pos;
159 } else {
160 match ch {
161 b'-' => comment_pos += 1,
162 b'>' if comment_pos == 2 => {
163 comment_pos = 0;
164 in_comment = false;
165 in_tag = false;
166 is_token_start = true;
167 }
168 _ => comment_pos = 0,
169 }
170 }
171 }
172
173 if !in_tag && !is_token_start && !in_head {
174 add_html_token(
175 &mut result,
176 &input[token_start..token_end + 1],
177 is_after_space && !is_new_line,
178 );
179 }
180
181 result.shrink_to_fit();
182 result
183}
184
185pub fn text_to_html(input: &str) -> String {
186 let input = input.as_bytes();
187 let mut result = Vec::with_capacity(input.len() + 26);
188
189 result.extend_from_slice(b"<html><body>");
190
191 for &ch in input {
192 match ch {
193 b'\n' => result.extend_from_slice(b"<br/>"),
194 b'<' => result.extend_from_slice(b"<"),
195 b'\r' => (),
196 _ => result.push(ch),
197 }
198 }
199 result.extend_from_slice(b"</body></html>");
200
201 String::from_utf8(result).unwrap()
202}
203
204fn lookup_entity(key: &[u8]) -> Option<&u32> {
205 hashify::map! {
206 key,
207 u32,
208 "AElig" => 198,
209 "AMP" => 38,
210 "Aacute" => 193,
211 "Abreve" => 258,
212 "Acirc" => 194,
213 "Acy" => 1040,
214 "Afr" => 120068,
215 "Agrave" => 192,
216 "Alpha" => 913,
217 "Amacr" => 256,
218 "And" => 10835,
219 "Aogon" => 260,
220 "Aopf" => 120120,
221 "ApplyFunction" => 8289,
222 "Aring" => 197,
223 "Ascr" => 119964,
224 "Assign" => 8788,
225 "Atilde" => 195,
226 "Auml" => 196,
227 "Backslash" => 8726,
228 "Barv" => 10983,
229 "Barwed" => 8966,
230 "Bcy" => 1041,
231 "Because" => 8757,
232 "Bernoullis" => 8492,
233 "Beta" => 914,
234 "Bfr" => 120069,
235 "Bopf" => 120121,
236 "Breve" => 728,
237 "Bscr" => 8492,
238 "Bumpeq" => 8782,
239 "CHcy" => 1063,
240 "COPY" => 169,
241 "Cacute" => 262,
242 "Cap" => 8914,
243 "CapitalDifferentialD" => 8517,
244 "Cayleys" => 8493,
245 "Ccaron" => 268,
246 "Ccedil" => 199,
247 "Ccirc" => 264,
248 "Cconint" => 8752,
249 "Cdot" => 266,
250 "Cedilla" => 184,
251 "CenterDot" => 183,
252 "Cfr" => 8493,
253 "Chi" => 935,
254 "CircleDot" => 8857,
255 "CircleMinus" => 8854,
256 "CirclePlus" => 8853,
257 "CircleTimes" => 8855,
258 "ClockwiseContourIntegral" => 8754,
259 "CloseCurlyDoubleQuote" => 8221,
260 "CloseCurlyQuote" => 8217,
261 "Colon" => 8759,
262 "Colone" => 10868,
263 "Congruent" => 8801,
264 "Conint" => 8751,
265 "ContourIntegral" => 8750,
266 "Copf" => 8450,
267 "Coproduct" => 8720,
268 "CounterClockwiseContourIntegral" => 8755,
269 "Cross" => 10799,
270 "Cscr" => 119966,
271 "Cup" => 8915,
272 "CupCap" => 8781,
273 "DD" => 8517,
274 "DDotrahd" => 10513,
275 "DJcy" => 1026,
276 "DScy" => 1029,
277 "DZcy" => 1039,
278 "Dagger" => 8225,
279 "Darr" => 8609,
280 "Dashv" => 10980,
281 "Dcaron" => 270,
282 "Dcy" => 1044,
283 "Del" => 8711,
284 "Delta" => 916,
285 "Dfr" => 120071,
286 "DiacriticalAcute" => 180,
287 "DiacriticalDot" => 729,
288 "DiacriticalDoubleAcute" => 733,
289 "DiacriticalGrave" => 96,
290 "DiacriticalTilde" => 732,
291 "Diamond" => 8900,
292 "DifferentialD" => 8518,
293 "Dopf" => 120123,
294 "Dot" => 168,
295 "DotDot" => 8412,
296 "DotEqual" => 8784,
297 "DoubleContourIntegral" => 8751,
298 "DoubleDot" => 168,
299 "DoubleDownArrow" => 8659,
300 "DoubleLeftArrow" => 8656,
301 "DoubleLeftRightArrow" => 8660,
302 "DoubleLeftTee" => 10980,
303 "DoubleLongLeftArrow" => 10232,
304 "DoubleLongLeftRightArrow" => 10234,
305 "DoubleLongRightArrow" => 10233,
306 "DoubleRightArrow" => 8658,
307 "DoubleRightTee" => 8872,
308 "DoubleUpArrow" => 8657,
309 "DoubleUpDownArrow" => 8661,
310 "DoubleVerticalBar" => 8741,
311 "DownArrow" => 8595,
312 "DownArrowBar" => 10515,
313 "DownArrowUpArrow" => 8693,
314 "DownBreve" => 785,
315 "DownLeftRightVector" => 10576,
316 "DownLeftTeeVector" => 10590,
317 "DownLeftVector" => 8637,
318 "DownLeftVectorBar" => 10582,
319 "DownRightTeeVector" => 10591,
320 "DownRightVector" => 8641,
321 "DownRightVectorBar" => 10583,
322 "DownTee" => 8868,
323 "DownTeeArrow" => 8615,
324 "Downarrow" => 8659,
325 "Dscr" => 119967,
326 "Dstrok" => 272,
327 "ENG" => 330,
328 "ETH" => 208,
329 "Eacute" => 201,
330 "Ecaron" => 282,
331 "Ecirc" => 202,
332 "Ecy" => 1069,
333 "Edot" => 278,
334 "Efr" => 120072,
335 "Egrave" => 200,
336 "Element" => 8712,
337 "Emacr" => 274,
338 "EmptySmallSquare" => 9723,
339 "EmptyVerySmallSquare" => 9643,
340 "Eogon" => 280,
341 "Eopf" => 120124,
342 "Epsilon" => 917,
343 "Equal" => 10869,
344 "EqualTilde" => 8770,
345 "Equilibrium" => 8652,
346 "Escr" => 8496,
347 "Esim" => 10867,
348 "Eta" => 919,
349 "Euml" => 203,
350 "Exists" => 8707,
351 "ExponentialE" => 8519,
352 "Fcy" => 1060,
353 "Ffr" => 120073,
354 "FilledSmallSquare" => 9724,
355 "FilledVerySmallSquare" => 9642,
356 "Fopf" => 120125,
357 "ForAll" => 8704,
358 "Fouriertrf" => 8497,
359 "Fscr" => 8497,
360 "GJcy" => 1027,
361 "GT" => 62,
362 "Gamma" => 915,
363 "Gammad" => 988,
364 "Gbreve" => 286,
365 "Gcedil" => 290,
366 "Gcirc" => 284,
367 "Gcy" => 1043,
368 "Gdot" => 288,
369 "Gfr" => 120074,
370 "Gg" => 8921,
371 "Gopf" => 120126,
372 "GreaterEqual" => 8805,
373 "GreaterEqualLess" => 8923,
374 "GreaterFullEqual" => 8807,
375 "GreaterGreater" => 10914,
376 "GreaterLess" => 8823,
377 "GreaterSlantEqual" => 10878,
378 "GreaterTilde" => 8819,
379 "Gscr" => 119970,
380 "Gt" => 8811,
381 "HARDcy" => 1066,
382 "Hacek" => 711,
383 "Hat" => 94,
384 "Hcirc" => 292,
385 "Hfr" => 8460,
386 "HilbertSpace" => 8459,
387 "Hopf" => 8461,
388 "HorizontalLine" => 9472,
389 "Hscr" => 8459,
390 "Hstrok" => 294,
391 "HumpDownHump" => 8782,
392 "HumpEqual" => 8783,
393 "IEcy" => 1045,
394 "IJlig" => 306,
395 "IOcy" => 1025,
396 "Iacute" => 205,
397 "Icirc" => 206,
398 "Icy" => 1048,
399 "Idot" => 304,
400 "Ifr" => 8465,
401 "Igrave" => 204,
402 "Im" => 8465,
403 "Imacr" => 298,
404 "ImaginaryI" => 8520,
405 "Implies" => 8658,
406 "Int" => 8748,
407 "Integral" => 8747,
408 "Intersection" => 8898,
409 "InvisibleComma" => 8291,
410 "InvisibleTimes" => 8290,
411 "Iogon" => 302,
412 "Iopf" => 120128,
413 "Iota" => 921,
414 "Iscr" => 8464,
415 "Itilde" => 296,
416 "Iukcy" => 1030,
417 "Iuml" => 207,
418 "Jcirc" => 308,
419 "Jcy" => 1049,
420 "Jfr" => 120077,
421 "Jopf" => 120129,
422 "Jscr" => 119973,
423 "Jsercy" => 1032,
424 "Jukcy" => 1028,
425 "KHcy" => 1061,
426 "KJcy" => 1036,
427 "Kappa" => 922,
428 "Kcedil" => 310,
429 "Kcy" => 1050,
430 "Kfr" => 120078,
431 "Kopf" => 120130,
432 "Kscr" => 119974,
433 "LJcy" => 1033,
434 "LT" => 60,
435 "Lacute" => 313,
436 "Lambda" => 923,
437 "Lang" => 10218,
438 "Laplacetrf" => 8466,
439 "Larr" => 8606,
440 "Lcaron" => 317,
441 "Lcedil" => 315,
442 "Lcy" => 1051,
443 "LeftAngleBracket" => 10216,
444 "LeftArrow" => 8592,
445 "LeftArrowBar" => 8676,
446 "LeftArrowRightArrow" => 8646,
447 "LeftCeiling" => 8968,
448 "LeftDoubleBracket" => 10214,
449 "LeftDownTeeVector" => 10593,
450 "LeftDownVector" => 8643,
451 "LeftDownVectorBar" => 10585,
452 "LeftFloor" => 8970,
453 "LeftRightArrow" => 8596,
454 "LeftRightVector" => 10574,
455 "LeftTee" => 8867,
456 "LeftTeeArrow" => 8612,
457 "LeftTeeVector" => 10586,
458 "LeftTriangle" => 8882,
459 "LeftTriangleBar" => 10703,
460 "LeftTriangleEqual" => 8884,
461 "LeftUpDownVector" => 10577,
462 "LeftUpTeeVector" => 10592,
463 "LeftUpVector" => 8639,
464 "LeftUpVectorBar" => 10584,
465 "LeftVector" => 8636,
466 "LeftVectorBar" => 10578,
467 "Leftarrow" => 8656,
468 "Leftrightarrow" => 8660,
469 "LessEqualGreater" => 8922,
470 "LessFullEqual" => 8806,
471 "LessGreater" => 8822,
472 "LessLess" => 10913,
473 "LessSlantEqual" => 10877,
474 "LessTilde" => 8818,
475 "Lfr" => 120079,
476 "Ll" => 8920,
477 "Lleftarrow" => 8666,
478 "Lmidot" => 319,
479 "LongLeftArrow" => 10229,
480 "LongLeftRightArrow" => 10231,
481 "LongRightArrow" => 10230,
482 "Longleftarrow" => 10232,
483 "Longleftrightarrow" => 10234,
484 "Longrightarrow" => 10233,
485 "Lopf" => 120131,
486 "LowerLeftArrow" => 8601,
487 "LowerRightArrow" => 8600,
488 "Lscr" => 8466,
489 "Lsh" => 8624,
490 "Lstrok" => 321,
491 "Lt" => 8810,
492 "Map" => 10501,
493 "Mcy" => 1052,
494 "MediumSpace" => 8287,
495 "Mellintrf" => 8499,
496 "Mfr" => 120080,
497 "MinusPlus" => 8723,
498 "Mopf" => 120132,
499 "Mscr" => 8499,
500 "Mu" => 924,
501 "NJcy" => 1034,
502 "Nacute" => 323,
503 "Ncaron" => 327,
504 "Ncedil" => 325,
505 "Ncy" => 1053,
506 "NegativeMediumSpace" => 8203,
507 "NegativeThickSpace" => 8203,
508 "NegativeThinSpace" => 8203,
509 "NegativeVeryThinSpace" => 8203,
510 "NestedGreaterGreater" => 8811,
511 "NestedLessLess" => 8810,
512 "NewLine" => 10,
513 "Nfr" => 120081,
514 "NoBreak" => 8288,
515 "NonBreakingSpace" => 160,
516 "Nopf" => 8469,
517 "Not" => 10988,
518 "NotCongruent" => 8802,
519 "NotCupCap" => 8813,
520 "NotDoubleVerticalBar" => 8742,
521 "NotElement" => 8713,
522 "NotEqual" => 8800,
523 "NotEqualTilde" => 8770,
524 "NotExists" => 8708,
525 "NotGreater" => 8815,
526 "NotGreaterEqual" => 8817,
527 "NotGreaterFullEqual" => 8807,
528 "NotGreaterGreater" => 8811,
529 "NotGreaterLess" => 8825,
530 "NotGreaterSlantEqual" => 10878,
531 "NotGreaterTilde" => 8821,
532 "NotHumpDownHump" => 8782,
533 "NotHumpEqual" => 8783,
534 "NotLeftTriangle" => 8938,
535 "NotLeftTriangleBar" => 10703,
536 "NotLeftTriangleEqual" => 8940,
537 "NotLess" => 8814,
538 "NotLessEqual" => 8816,
539 "NotLessGreater" => 8824,
540 "NotLessLess" => 8810,
541 "NotLessSlantEqual" => 10877,
542 "NotLessTilde" => 8820,
543 "NotNestedGreaterGreater" => 10914,
544 "NotNestedLessLess" => 10913,
545 "NotPrecedes" => 8832,
546 "NotPrecedesEqual" => 10927,
547 "NotPrecedesSlantEqual" => 8928,
548 "NotReverseElement" => 8716,
549 "NotRightTriangle" => 8939,
550 "NotRightTriangleBar" => 10704,
551 "NotRightTriangleEqual" => 8941,
552 "NotSquareSubset" => 8847,
553 "NotSquareSubsetEqual" => 8930,
554 "NotSquareSuperset" => 8848,
555 "NotSquareSupersetEqual" => 8931,
556 "NotSubset" => 8834,
557 "NotSubsetEqual" => 8840,
558 "NotSucceeds" => 8833,
559 "NotSucceedsEqual" => 10928,
560 "NotSucceedsSlantEqual" => 8929,
561 "NotSucceedsTilde" => 8831,
562 "NotSuperset" => 8835,
563 "NotSupersetEqual" => 8841,
564 "NotTilde" => 8769,
565 "NotTildeEqual" => 8772,
566 "NotTildeFullEqual" => 8775,
567 "NotTildeTilde" => 8777,
568 "NotVerticalBar" => 8740,
569 "Nscr" => 119977,
570 "Ntilde" => 209,
571 "Nu" => 925,
572 "OElig" => 338,
573 "Oacute" => 211,
574 "Ocirc" => 212,
575 "Ocy" => 1054,
576 "Odblac" => 336,
577 "Ofr" => 120082,
578 "Ograve" => 210,
579 "Omacr" => 332,
580 "Omega" => 937,
581 "Omicron" => 927,
582 "Oopf" => 120134,
583 "OpenCurlyDoubleQuote" => 8220,
584 "OpenCurlyQuote" => 8216,
585 "Or" => 10836,
586 "Oscr" => 119978,
587 "Oslash" => 216,
588 "Otilde" => 213,
589 "Otimes" => 10807,
590 "Ouml" => 214,
591 "OverBar" => 8254,
592 "OverBrace" => 9182,
593 "OverBracket" => 9140,
594 "OverParenthesis" => 9180,
595 "PartialD" => 8706,
596 "Pcy" => 1055,
597 "Pfr" => 120083,
598 "Phi" => 934,
599 "Pi" => 928,
600 "PlusMinus" => 177,
601 "Poincareplane" => 8460,
602 "Popf" => 8473,
603 "Pr" => 10939,
604 "Precedes" => 8826,
605 "PrecedesEqual" => 10927,
606 "PrecedesSlantEqual" => 8828,
607 "PrecedesTilde" => 8830,
608 "Prime" => 8243,
609 "Product" => 8719,
610 "Proportion" => 8759,
611 "Proportional" => 8733,
612 "Pscr" => 119979,
613 "Psi" => 936,
614 "QUOT" => 34,
615 "Qfr" => 120084,
616 "Qopf" => 8474,
617 "Qscr" => 119980,
618 "RBarr" => 10512,
619 "REG" => 174,
620 "Racute" => 340,
621 "Rang" => 10219,
622 "Rarr" => 8608,
623 "Rarrtl" => 10518,
624 "Rcaron" => 344,
625 "Rcedil" => 342,
626 "Rcy" => 1056,
627 "Re" => 8476,
628 "ReverseElement" => 8715,
629 "ReverseEquilibrium" => 8651,
630 "ReverseUpEquilibrium" => 10607,
631 "Rfr" => 8476,
632 "Rho" => 929,
633 "RightAngleBracket" => 10217,
634 "RightArrow" => 8594,
635 "RightArrowBar" => 8677,
636 "RightArrowLeftArrow" => 8644,
637 "RightCeiling" => 8969,
638 "RightDoubleBracket" => 10215,
639 "RightDownTeeVector" => 10589,
640 "RightDownVector" => 8642,
641 "RightDownVectorBar" => 10581,
642 "RightFloor" => 8971,
643 "RightTee" => 8866,
644 "RightTeeArrow" => 8614,
645 "RightTeeVector" => 10587,
646 "RightTriangle" => 8883,
647 "RightTriangleBar" => 10704,
648 "RightTriangleEqual" => 8885,
649 "RightUpDownVector" => 10575,
650 "RightUpTeeVector" => 10588,
651 "RightUpVector" => 8638,
652 "RightUpVectorBar" => 10580,
653 "RightVector" => 8640,
654 "RightVectorBar" => 10579,
655 "Rightarrow" => 8658,
656 "Ropf" => 8477,
657 "RoundImplies" => 10608,
658 "Rrightarrow" => 8667,
659 "Rscr" => 8475,
660 "Rsh" => 8625,
661 "RuleDelayed" => 10740,
662 "SHCHcy" => 1065,
663 "SHcy" => 1064,
664 "SOFTcy" => 1068,
665 "Sacute" => 346,
666 "Sc" => 10940,
667 "Scaron" => 352,
668 "Scedil" => 350,
669 "Scirc" => 348,
670 "Scy" => 1057,
671 "Sfr" => 120086,
672 "ShortDownArrow" => 8595,
673 "ShortLeftArrow" => 8592,
674 "ShortRightArrow" => 8594,
675 "ShortUpArrow" => 8593,
676 "Sigma" => 931,
677 "SmallCircle" => 8728,
678 "Sopf" => 120138,
679 "Sqrt" => 8730,
680 "Square" => 9633,
681 "SquareIntersection" => 8851,
682 "SquareSubset" => 8847,
683 "SquareSubsetEqual" => 8849,
684 "SquareSuperset" => 8848,
685 "SquareSupersetEqual" => 8850,
686 "SquareUnion" => 8852,
687 "Sscr" => 119982,
688 "Star" => 8902,
689 "Sub" => 8912,
690 "Subset" => 8912,
691 "SubsetEqual" => 8838,
692 "Succeeds" => 8827,
693 "SucceedsEqual" => 10928,
694 "SucceedsSlantEqual" => 8829,
695 "SucceedsTilde" => 8831,
696 "SuchThat" => 8715,
697 "Sum" => 8721,
698 "Sup" => 8913,
699 "Superset" => 8835,
700 "SupersetEqual" => 8839,
701 "Supset" => 8913,
702 "THORN" => 222,
703 "TRADE" => 8482,
704 "TSHcy" => 1035,
705 "TScy" => 1062,
706 "Tab" => 9,
707 "Tau" => 932,
708 "Tcaron" => 356,
709 "Tcedil" => 354,
710 "Tcy" => 1058,
711 "Tfr" => 120087,
712 "Therefore" => 8756,
713 "Theta" => 920,
714 "ThickSpace" => 8287,
715 "ThinSpace" => 8201,
716 "Tilde" => 8764,
717 "TildeEqual" => 8771,
718 "TildeFullEqual" => 8773,
719 "TildeTilde" => 8776,
720 "Topf" => 120139,
721 "TripleDot" => 8411,
722 "Tscr" => 119983,
723 "Tstrok" => 358,
724 "Uacute" => 218,
725 "Uarr" => 8607,
726 "Uarrocir" => 10569,
727 "Ubrcy" => 1038,
728 "Ubreve" => 364,
729 "Ucirc" => 219,
730 "Ucy" => 1059,
731 "Udblac" => 368,
732 "Ufr" => 120088,
733 "Ugrave" => 217,
734 "Umacr" => 362,
735 "UnderBar" => 95,
736 "UnderBrace" => 9183,
737 "UnderBracket" => 9141,
738 "UnderParenthesis" => 9181,
739 "Union" => 8899,
740 "UnionPlus" => 8846,
741 "Uogon" => 370,
742 "Uopf" => 120140,
743 "UpArrow" => 8593,
744 "UpArrowBar" => 10514,
745 "UpArrowDownArrow" => 8645,
746 "UpDownArrow" => 8597,
747 "UpEquilibrium" => 10606,
748 "UpTee" => 8869,
749 "UpTeeArrow" => 8613,
750 "Uparrow" => 8657,
751 "Updownarrow" => 8661,
752 "UpperLeftArrow" => 8598,
753 "UpperRightArrow" => 8599,
754 "Upsi" => 978,
755 "Upsilon" => 933,
756 "Uring" => 366,
757 "Uscr" => 119984,
758 "Utilde" => 360,
759 "Uuml" => 220,
760 "VDash" => 8875,
761 "Vbar" => 10987,
762 "Vcy" => 1042,
763 "Vdash" => 8873,
764 "Vdashl" => 10982,
765 "Vee" => 8897,
766 "Verbar" => 8214,
767 "Vert" => 8214,
768 "VerticalBar" => 8739,
769 "VerticalLine" => 124,
770 "VerticalSeparator" => 10072,
771 "VerticalTilde" => 8768,
772 "VeryThinSpace" => 8202,
773 "Vfr" => 120089,
774 "Vopf" => 120141,
775 "Vscr" => 119985,
776 "Vvdash" => 8874,
777 "Wcirc" => 372,
778 "Wedge" => 8896,
779 "Wfr" => 120090,
780 "Wopf" => 120142,
781 "Wscr" => 119986,
782 "Xfr" => 120091,
783 "Xi" => 926,
784 "Xopf" => 120143,
785 "Xscr" => 119987,
786 "YAcy" => 1071,
787 "YIcy" => 1031,
788 "YUcy" => 1070,
789 "Yacute" => 221,
790 "Ycirc" => 374,
791 "Ycy" => 1067,
792 "Yfr" => 120092,
793 "Yopf" => 120144,
794 "Yscr" => 119988,
795 "Yuml" => 376,
796 "ZHcy" => 1046,
797 "Zacute" => 377,
798 "Zcaron" => 381,
799 "Zcy" => 1047,
800 "Zdot" => 379,
801 "ZeroWidthSpace" => 8203,
802 "Zeta" => 918,
803 "Zfr" => 8488,
804 "Zopf" => 8484,
805 "Zscr" => 119989,
806 "aacute" => 225,
807 "abreve" => 259,
808 "ac" => 8766,
809 "acE" => 8766,
810 "acd" => 8767,
811 "acirc" => 226,
812 "acute" => 180,
813 "acy" => 1072,
814 "aelig" => 230,
815 "af" => 8289,
816 "afr" => 120094,
817 "agrave" => 224,
818 "alefsym" => 8501,
819 "aleph" => 8501,
820 "alpha" => 945,
821 "amacr" => 257,
822 "amalg" => 10815,
823 "amp" => 38,
824 "and" => 8743,
825 "andand" => 10837,
826 "andd" => 10844,
827 "andslope" => 10840,
828 "andv" => 10842,
829 "ang" => 8736,
830 "ange" => 10660,
831 "angle" => 8736,
832 "angmsd" => 8737,
833 "angmsdaa" => 10664,
834 "angmsdab" => 10665,
835 "angmsdac" => 10666,
836 "angmsdad" => 10667,
837 "angmsdae" => 10668,
838 "angmsdaf" => 10669,
839 "angmsdag" => 10670,
840 "angmsdah" => 10671,
841 "angrt" => 8735,
842 "angrtvb" => 8894,
843 "angrtvbd" => 10653,
844 "angsph" => 8738,
845 "angst" => 197,
846 "angzarr" => 9084,
847 "aogon" => 261,
848 "aopf" => 120146,
849 "ap" => 8776,
850 "apE" => 10864,
851 "apacir" => 10863,
852 "ape" => 8778,
853 "apid" => 8779,
854 "apos" => 39,
855 "approx" => 8776,
856 "approxeq" => 8778,
857 "aring" => 229,
858 "ascr" => 119990,
859 "ast" => 42,
860 "asymp" => 8776,
861 "asympeq" => 8781,
862 "atilde" => 227,
863 "auml" => 228,
864 "awconint" => 8755,
865 "awint" => 10769,
866 "bNot" => 10989,
867 "backcong" => 8780,
868 "backepsilon" => 1014,
869 "backprime" => 8245,
870 "backsim" => 8765,
871 "backsimeq" => 8909,
872 "barvee" => 8893,
873 "barwed" => 8965,
874 "barwedge" => 8965,
875 "bbrk" => 9141,
876 "bbrktbrk" => 9142,
877 "bcong" => 8780,
878 "bcy" => 1073,
879 "bdquo" => 8222,
880 "becaus" => 8757,
881 "because" => 8757,
882 "bemptyv" => 10672,
883 "bepsi" => 1014,
884 "bernou" => 8492,
885 "beta" => 946,
886 "beth" => 8502,
887 "between" => 8812,
888 "bfr" => 120095,
889 "bigcap" => 8898,
890 "bigcirc" => 9711,
891 "bigcup" => 8899,
892 "bigodot" => 10752,
893 "bigoplus" => 10753,
894 "bigotimes" => 10754,
895 "bigsqcup" => 10758,
896 "bigstar" => 9733,
897 "bigtriangledown" => 9661,
898 "bigtriangleup" => 9651,
899 "biguplus" => 10756,
900 "bigvee" => 8897,
901 "bigwedge" => 8896,
902 "bkarow" => 10509,
903 "blacklozenge" => 10731,
904 "blacksquare" => 9642,
905 "blacktriangle" => 9652,
906 "blacktriangledown" => 9662,
907 "blacktriangleleft" => 9666,
908 "blacktriangleright" => 9656,
909 "blank" => 9251,
910 "blk12" => 9618,
911 "blk14" => 9617,
912 "blk34" => 9619,
913 "block" => 9608,
914 "bne" => 61,
915 "bnequiv" => 8801,
916 "bnot" => 8976,
917 "bopf" => 120147,
918 "bot" => 8869,
919 "bottom" => 8869,
920 "bowtie" => 8904,
921 "boxDL" => 9559,
922 "boxDR" => 9556,
923 "boxDl" => 9558,
924 "boxDr" => 9555,
925 "boxH" => 9552,
926 "boxHD" => 9574,
927 "boxHU" => 9577,
928 "boxHd" => 9572,
929 "boxHu" => 9575,
930 "boxUL" => 9565,
931 "boxUR" => 9562,
932 "boxUl" => 9564,
933 "boxUr" => 9561,
934 "boxV" => 9553,
935 "boxVH" => 9580,
936 "boxVL" => 9571,
937 "boxVR" => 9568,
938 "boxVh" => 9579,
939 "boxVl" => 9570,
940 "boxVr" => 9567,
941 "boxbox" => 10697,
942 "boxdL" => 9557,
943 "boxdR" => 9554,
944 "boxdl" => 9488,
945 "boxdr" => 9484,
946 "boxh" => 9472,
947 "boxhD" => 9573,
948 "boxhU" => 9576,
949 "boxhd" => 9516,
950 "boxhu" => 9524,
951 "boxminus" => 8863,
952 "boxplus" => 8862,
953 "boxtimes" => 8864,
954 "boxuL" => 9563,
955 "boxuR" => 9560,
956 "boxul" => 9496,
957 "boxur" => 9492,
958 "boxv" => 9474,
959 "boxvH" => 9578,
960 "boxvL" => 9569,
961 "boxvR" => 9566,
962 "boxvh" => 9532,
963 "boxvl" => 9508,
964 "boxvr" => 9500,
965 "bprime" => 8245,
966 "breve" => 728,
967 "brvbar" => 166,
968 "bscr" => 119991,
969 "bsemi" => 8271,
970 "bsim" => 8765,
971 "bsime" => 8909,
972 "bsol" => 92,
973 "bsolb" => 10693,
974 "bsolhsub" => 10184,
975 "bull" => 8226,
976 "bullet" => 8226,
977 "bump" => 8782,
978 "bumpE" => 10926,
979 "bumpe" => 8783,
980 "bumpeq" => 8783,
981 "cacute" => 263,
982 "cap" => 8745,
983 "capand" => 10820,
984 "capbrcup" => 10825,
985 "capcap" => 10827,
986 "capcup" => 10823,
987 "capdot" => 10816,
988 "caps" => 8745,
989 "caret" => 8257,
990 "caron" => 711,
991 "ccaps" => 10829,
992 "ccaron" => 269,
993 "ccedil" => 231,
994 "ccirc" => 265,
995 "ccups" => 10828,
996 "ccupssm" => 10832,
997 "cdot" => 267,
998 "cedil" => 184,
999 "cemptyv" => 10674,
1000 "cent" => 162,
1001 "centerdot" => 183,
1002 "cfr" => 120096,
1003 "chcy" => 1095,
1004 "check" => 10003,
1005 "checkmark" => 10003,
1006 "chi" => 967,
1007 "cir" => 9675,
1008 "cirE" => 10691,
1009 "circ" => 710,
1010 "circeq" => 8791,
1011 "circlearrowleft" => 8634,
1012 "circlearrowright" => 8635,
1013 "circledR" => 174,
1014 "circledS" => 9416,
1015 "circledast" => 8859,
1016 "circledcirc" => 8858,
1017 "circleddash" => 8861,
1018 "cire" => 8791,
1019 "cirfnint" => 10768,
1020 "cirmid" => 10991,
1021 "cirscir" => 10690,
1022 "clubs" => 9827,
1023 "clubsuit" => 9827,
1024 "colon" => 58,
1025 "colone" => 8788,
1026 "coloneq" => 8788,
1027 "comma" => 44,
1028 "commat" => 64,
1029 "comp" => 8705,
1030 "compfn" => 8728,
1031 "complement" => 8705,
1032 "complexes" => 8450,
1033 "cong" => 8773,
1034 "congdot" => 10861,
1035 "conint" => 8750,
1036 "copf" => 120148,
1037 "coprod" => 8720,
1038 "copy" => 169,
1039 "copysr" => 8471,
1040 "crarr" => 8629,
1041 "cross" => 10007,
1042 "cscr" => 119992,
1043 "csub" => 10959,
1044 "csube" => 10961,
1045 "csup" => 10960,
1046 "csupe" => 10962,
1047 "ctdot" => 8943,
1048 "cudarrl" => 10552,
1049 "cudarrr" => 10549,
1050 "cuepr" => 8926,
1051 "cuesc" => 8927,
1052 "cularr" => 8630,
1053 "cularrp" => 10557,
1054 "cup" => 8746,
1055 "cupbrcap" => 10824,
1056 "cupcap" => 10822,
1057 "cupcup" => 10826,
1058 "cupdot" => 8845,
1059 "cupor" => 10821,
1060 "cups" => 8746,
1061 "curarr" => 8631,
1062 "curarrm" => 10556,
1063 "curlyeqprec" => 8926,
1064 "curlyeqsucc" => 8927,
1065 "curlyvee" => 8910,
1066 "curlywedge" => 8911,
1067 "curren" => 164,
1068 "curvearrowleft" => 8630,
1069 "curvearrowright" => 8631,
1070 "cuvee" => 8910,
1071 "cuwed" => 8911,
1072 "cwconint" => 8754,
1073 "cwint" => 8753,
1074 "cylcty" => 9005,
1075 "dArr" => 8659,
1076 "dHar" => 10597,
1077 "dagger" => 8224,
1078 "daleth" => 8504,
1079 "darr" => 8595,
1080 "dash" => 8208,
1081 "dashv" => 8867,
1082 "dbkarow" => 10511,
1083 "dblac" => 733,
1084 "dcaron" => 271,
1085 "dcy" => 1076,
1086 "dd" => 8518,
1087 "ddagger" => 8225,
1088 "ddarr" => 8650,
1089 "ddotseq" => 10871,
1090 "deg" => 176,
1091 "delta" => 948,
1092 "demptyv" => 10673,
1093 "dfisht" => 10623,
1094 "dfr" => 120097,
1095 "dharl" => 8643,
1096 "dharr" => 8642,
1097 "diam" => 8900,
1098 "diamond" => 8900,
1099 "diamondsuit" => 9830,
1100 "diams" => 9830,
1101 "die" => 168,
1102 "digamma" => 989,
1103 "disin" => 8946,
1104 "div" => 247,
1105 "divide" => 247,
1106 "divideontimes" => 8903,
1107 "divonx" => 8903,
1108 "djcy" => 1106,
1109 "dlcorn" => 8990,
1110 "dlcrop" => 8973,
1111 "dollar" => 36,
1112 "dopf" => 120149,
1113 "dot" => 729,
1114 "doteq" => 8784,
1115 "doteqdot" => 8785,
1116 "dotminus" => 8760,
1117 "dotplus" => 8724,
1118 "dotsquare" => 8865,
1119 "doublebarwedge" => 8966,
1120 "downarrow" => 8595,
1121 "downdownarrows" => 8650,
1122 "downharpoonleft" => 8643,
1123 "downharpoonright" => 8642,
1124 "drbkarow" => 10512,
1125 "drcorn" => 8991,
1126 "drcrop" => 8972,
1127 "dscr" => 119993,
1128 "dscy" => 1109,
1129 "dsol" => 10742,
1130 "dstrok" => 273,
1131 "dtdot" => 8945,
1132 "dtri" => 9663,
1133 "dtrif" => 9662,
1134 "duarr" => 8693,
1135 "duhar" => 10607,
1136 "dwangle" => 10662,
1137 "dzcy" => 1119,
1138 "dzigrarr" => 10239,
1139 "eDDot" => 10871,
1140 "eDot" => 8785,
1141 "eacute" => 233,
1142 "easter" => 10862,
1143 "ecaron" => 283,
1144 "ecir" => 8790,
1145 "ecirc" => 234,
1146 "ecolon" => 8789,
1147 "ecy" => 1101,
1148 "edot" => 279,
1149 "ee" => 8519,
1150 "efDot" => 8786,
1151 "efr" => 120098,
1152 "eg" => 10906,
1153 "egrave" => 232,
1154 "egs" => 10902,
1155 "egsdot" => 10904,
1156 "el" => 10905,
1157 "elinters" => 9191,
1158 "ell" => 8467,
1159 "els" => 10901,
1160 "elsdot" => 10903,
1161 "emacr" => 275,
1162 "empty" => 8709,
1163 "emptyset" => 8709,
1164 "emptyv" => 8709,
1165 "emsp" => 8195,
1166 "emsp13" => 8196,
1167 "emsp14" => 8197,
1168 "eng" => 331,
1169 "ensp" => 8194,
1170 "eogon" => 281,
1171 "eopf" => 120150,
1172 "epar" => 8917,
1173 "eparsl" => 10723,
1174 "eplus" => 10865,
1175 "epsi" => 949,
1176 "epsilon" => 949,
1177 "epsiv" => 1013,
1178 "eqcirc" => 8790,
1179 "eqcolon" => 8789,
1180 "eqsim" => 8770,
1181 "eqslantgtr" => 10902,
1182 "eqslantless" => 10901,
1183 "equals" => 61,
1184 "equest" => 8799,
1185 "equiv" => 8801,
1186 "equivDD" => 10872,
1187 "eqvparsl" => 10725,
1188 "erDot" => 8787,
1189 "erarr" => 10609,
1190 "escr" => 8495,
1191 "esdot" => 8784,
1192 "esim" => 8770,
1193 "eta" => 951,
1194 "eth" => 240,
1195 "euml" => 235,
1196 "euro" => 8364,
1197 "excl" => 33,
1198 "exist" => 8707,
1199 "expectation" => 8496,
1200 "exponentiale" => 8519,
1201 "fallingdotseq" => 8786,
1202 "fcy" => 1092,
1203 "female" => 9792,
1204 "ffilig" => 64259,
1205 "fflig" => 64256,
1206 "ffllig" => 64260,
1207 "ffr" => 120099,
1208 "filig" => 64257,
1209 "fjlig" => 102,
1210 "flat" => 9837,
1211 "fllig" => 64258,
1212 "fltns" => 9649,
1213 "fnof" => 402,
1214 "fopf" => 120151,
1215 "forall" => 8704,
1216 "fork" => 8916,
1217 "forkv" => 10969,
1218 "fpartint" => 10765,
1219 "frac12" => 189,
1220 "frac13" => 8531,
1221 "frac14" => 188,
1222 "frac15" => 8533,
1223 "frac16" => 8537,
1224 "frac18" => 8539,
1225 "frac23" => 8532,
1226 "frac25" => 8534,
1227 "frac34" => 190,
1228 "frac35" => 8535,
1229 "frac38" => 8540,
1230 "frac45" => 8536,
1231 "frac56" => 8538,
1232 "frac58" => 8541,
1233 "frac78" => 8542,
1234 "frasl" => 8260,
1235 "frown" => 8994,
1236 "fscr" => 119995,
1237 "gE" => 8807,
1238 "gEl" => 10892,
1239 "gacute" => 501,
1240 "gamma" => 947,
1241 "gammad" => 989,
1242 "gap" => 10886,
1243 "gbreve" => 287,
1244 "gcirc" => 285,
1245 "gcy" => 1075,
1246 "gdot" => 289,
1247 "ge" => 8805,
1248 "gel" => 8923,
1249 "geq" => 8805,
1250 "geqq" => 8807,
1251 "geqslant" => 10878,
1252 "ges" => 10878,
1253 "gescc" => 10921,
1254 "gesdot" => 10880,
1255 "gesdoto" => 10882,
1256 "gesdotol" => 10884,
1257 "gesl" => 8923,
1258 "gesles" => 10900,
1259 "gfr" => 120100,
1260 "gg" => 8811,
1261 "ggg" => 8921,
1262 "gimel" => 8503,
1263 "gjcy" => 1107,
1264 "gl" => 8823,
1265 "glE" => 10898,
1266 "gla" => 10917,
1267 "glj" => 10916,
1268 "gnE" => 8809,
1269 "gnap" => 10890,
1270 "gnapprox" => 10890,
1271 "gne" => 10888,
1272 "gneq" => 10888,
1273 "gneqq" => 8809,
1274 "gnsim" => 8935,
1275 "gopf" => 120152,
1276 "grave" => 96,
1277 "gscr" => 8458,
1278 "gsim" => 8819,
1279 "gsime" => 10894,
1280 "gsiml" => 10896,
1281 "gt" => 62,
1282 "gtcc" => 10919,
1283 "gtcir" => 10874,
1284 "gtdot" => 8919,
1285 "gtlPar" => 10645,
1286 "gtquest" => 10876,
1287 "gtrapprox" => 10886,
1288 "gtrarr" => 10616,
1289 "gtrdot" => 8919,
1290 "gtreqless" => 8923,
1291 "gtreqqless" => 10892,
1292 "gtrless" => 8823,
1293 "gtrsim" => 8819,
1294 "gvertneqq" => 8809,
1295 "gvnE" => 8809,
1296 "hArr" => 8660,
1297 "hairsp" => 8202,
1298 "half" => 189,
1299 "hamilt" => 8459,
1300 "hardcy" => 1098,
1301 "harr" => 8596,
1302 "harrcir" => 10568,
1303 "harrw" => 8621,
1304 "hbar" => 8463,
1305 "hcirc" => 293,
1306 "hearts" => 9829,
1307 "heartsuit" => 9829,
1308 "hellip" => 8230,
1309 "hercon" => 8889,
1310 "hfr" => 120101,
1311 "hksearow" => 10533,
1312 "hkswarow" => 10534,
1313 "hoarr" => 8703,
1314 "homtht" => 8763,
1315 "hookleftarrow" => 8617,
1316 "hookrightarrow" => 8618,
1317 "hopf" => 120153,
1318 "horbar" => 8213,
1319 "hscr" => 119997,
1320 "hslash" => 8463,
1321 "hstrok" => 295,
1322 "hybull" => 8259,
1323 "hyphen" => 8208,
1324 "iacute" => 237,
1325 "ic" => 8291,
1326 "icirc" => 238,
1327 "icy" => 1080,
1328 "iecy" => 1077,
1329 "iexcl" => 161,
1330 "iff" => 8660,
1331 "ifr" => 120102,
1332 "igrave" => 236,
1333 "ii" => 8520,
1334 "iiiint" => 10764,
1335 "iiint" => 8749,
1336 "iinfin" => 10716,
1337 "iiota" => 8489,
1338 "ijlig" => 307,
1339 "imacr" => 299,
1340 "image" => 8465,
1341 "imagline" => 8464,
1342 "imagpart" => 8465,
1343 "imath" => 305,
1344 "imof" => 8887,
1345 "imped" => 437,
1346 "in" => 8712,
1347 "incare" => 8453,
1348 "infin" => 8734,
1349 "infintie" => 10717,
1350 "inodot" => 305,
1351 "int" => 8747,
1352 "intcal" => 8890,
1353 "integers" => 8484,
1354 "intercal" => 8890,
1355 "intlarhk" => 10775,
1356 "intprod" => 10812,
1357 "iocy" => 1105,
1358 "iogon" => 303,
1359 "iopf" => 120154,
1360 "iota" => 953,
1361 "iprod" => 10812,
1362 "iquest" => 191,
1363 "iscr" => 119998,
1364 "isin" => 8712,
1365 "isinE" => 8953,
1366 "isindot" => 8949,
1367 "isins" => 8948,
1368 "isinsv" => 8947,
1369 "isinv" => 8712,
1370 "it" => 8290,
1371 "itilde" => 297,
1372 "iukcy" => 1110,
1373 "iuml" => 239,
1374 "jcirc" => 309,
1375 "jcy" => 1081,
1376 "jfr" => 120103,
1377 "jmath" => 567,
1378 "jopf" => 120155,
1379 "jscr" => 119999,
1380 "jsercy" => 1112,
1381 "jukcy" => 1108,
1382 "kappa" => 954,
1383 "kappav" => 1008,
1384 "kcedil" => 311,
1385 "kcy" => 1082,
1386 "kfr" => 120104,
1387 "kgreen" => 312,
1388 "khcy" => 1093,
1389 "kjcy" => 1116,
1390 "kopf" => 120156,
1391 "kscr" => 120000,
1392 "lAarr" => 8666,
1393 "lArr" => 8656,
1394 "lAtail" => 10523,
1395 "lBarr" => 10510,
1396 "lE" => 8806,
1397 "lEg" => 10891,
1398 "lHar" => 10594,
1399 "lacute" => 314,
1400 "laemptyv" => 10676,
1401 "lagran" => 8466,
1402 "lambda" => 955,
1403 "lang" => 10216,
1404 "langd" => 10641,
1405 "langle" => 10216,
1406 "lap" => 10885,
1407 "laquo" => 171,
1408 "larr" => 8592,
1409 "larrb" => 8676,
1410 "larrbfs" => 10527,
1411 "larrfs" => 10525,
1412 "larrhk" => 8617,
1413 "larrlp" => 8619,
1414 "larrpl" => 10553,
1415 "larrsim" => 10611,
1416 "larrtl" => 8610,
1417 "lat" => 10923,
1418 "latail" => 10521,
1419 "late" => 10925,
1420 "lates" => 10925,
1421 "lbarr" => 10508,
1422 "lbbrk" => 10098,
1423 "lbrace" => 123,
1424 "lbrack" => 91,
1425 "lbrke" => 10635,
1426 "lbrksld" => 10639,
1427 "lbrkslu" => 10637,
1428 "lcaron" => 318,
1429 "lcedil" => 316,
1430 "lceil" => 8968,
1431 "lcub" => 123,
1432 "lcy" => 1083,
1433 "ldca" => 10550,
1434 "ldquo" => 8220,
1435 "ldquor" => 8222,
1436 "ldrdhar" => 10599,
1437 "ldrushar" => 10571,
1438 "ldsh" => 8626,
1439 "le" => 8804,
1440 "leftarrow" => 8592,
1441 "leftarrowtail" => 8610,
1442 "leftharpoondown" => 8637,
1443 "leftharpoonup" => 8636,
1444 "leftleftarrows" => 8647,
1445 "leftrightarrow" => 8596,
1446 "leftrightarrows" => 8646,
1447 "leftrightharpoons" => 8651,
1448 "leftrightsquigarrow" => 8621,
1449 "leftthreetimes" => 8907,
1450 "leg" => 8922,
1451 "leq" => 8804,
1452 "leqq" => 8806,
1453 "leqslant" => 10877,
1454 "les" => 10877,
1455 "lescc" => 10920,
1456 "lesdot" => 10879,
1457 "lesdoto" => 10881,
1458 "lesdotor" => 10883,
1459 "lesg" => 8922,
1460 "lesges" => 10899,
1461 "lessapprox" => 10885,
1462 "lessdot" => 8918,
1463 "lesseqgtr" => 8922,
1464 "lesseqqgtr" => 10891,
1465 "lessgtr" => 8822,
1466 "lesssim" => 8818,
1467 "lfisht" => 10620,
1468 "lfloor" => 8970,
1469 "lfr" => 120105,
1470 "lg" => 8822,
1471 "lgE" => 10897,
1472 "lhard" => 8637,
1473 "lharu" => 8636,
1474 "lharul" => 10602,
1475 "lhblk" => 9604,
1476 "ljcy" => 1113,
1477 "ll" => 8810,
1478 "llarr" => 8647,
1479 "llcorner" => 8990,
1480 "llhard" => 10603,
1481 "lltri" => 9722,
1482 "lmidot" => 320,
1483 "lmoust" => 9136,
1484 "lmoustache" => 9136,
1485 "lnE" => 8808,
1486 "lnap" => 10889,
1487 "lnapprox" => 10889,
1488 "lne" => 10887,
1489 "lneq" => 10887,
1490 "lneqq" => 8808,
1491 "lnsim" => 8934,
1492 "loang" => 10220,
1493 "loarr" => 8701,
1494 "lobrk" => 10214,
1495 "longleftarrow" => 10229,
1496 "longleftrightarrow" => 10231,
1497 "longmapsto" => 10236,
1498 "longrightarrow" => 10230,
1499 "looparrowleft" => 8619,
1500 "looparrowright" => 8620,
1501 "lopar" => 10629,
1502 "lopf" => 120157,
1503 "loplus" => 10797,
1504 "lotimes" => 10804,
1505 "lowast" => 8727,
1506 "lowbar" => 95,
1507 "loz" => 9674,
1508 "lozenge" => 9674,
1509 "lozf" => 10731,
1510 "lpar" => 40,
1511 "lparlt" => 10643,
1512 "lrarr" => 8646,
1513 "lrcorner" => 8991,
1514 "lrhar" => 8651,
1515 "lrhard" => 10605,
1516 "lrm" => 8206,
1517 "lrtri" => 8895,
1518 "lsaquo" => 8249,
1519 "lscr" => 120001,
1520 "lsh" => 8624,
1521 "lsim" => 8818,
1522 "lsime" => 10893,
1523 "lsimg" => 10895,
1524 "lsqb" => 91,
1525 "lsquo" => 8216,
1526 "lsquor" => 8218,
1527 "lstrok" => 322,
1528 "lt" => 60,
1529 "ltcc" => 10918,
1530 "ltcir" => 10873,
1531 "ltdot" => 8918,
1532 "lthree" => 8907,
1533 "ltimes" => 8905,
1534 "ltlarr" => 10614,
1535 "ltquest" => 10875,
1536 "ltrPar" => 10646,
1537 "ltri" => 9667,
1538 "ltrie" => 8884,
1539 "ltrif" => 9666,
1540 "lurdshar" => 10570,
1541 "luruhar" => 10598,
1542 "lvertneqq" => 8808,
1543 "lvnE" => 8808,
1544 "mDDot" => 8762,
1545 "macr" => 175,
1546 "male" => 9794,
1547 "malt" => 10016,
1548 "maltese" => 10016,
1549 "map" => 8614,
1550 "mapsto" => 8614,
1551 "mapstodown" => 8615,
1552 "mapstoleft" => 8612,
1553 "mapstoup" => 8613,
1554 "marker" => 9646,
1555 "mcomma" => 10793,
1556 "mcy" => 1084,
1557 "mdash" => 8212,
1558 "measuredangle" => 8737,
1559 "mfr" => 120106,
1560 "mho" => 8487,
1561 "micro" => 181,
1562 "mid" => 8739,
1563 "midast" => 42,
1564 "midcir" => 10992,
1565 "middot" => 183,
1566 "minus" => 8722,
1567 "minusb" => 8863,
1568 "minusd" => 8760,
1569 "minusdu" => 10794,
1570 "mlcp" => 10971,
1571 "mldr" => 8230,
1572 "mnplus" => 8723,
1573 "models" => 8871,
1574 "mopf" => 120158,
1575 "mp" => 8723,
1576 "mscr" => 120002,
1577 "mstpos" => 8766,
1578 "mu" => 956,
1579 "multimap" => 8888,
1580 "mumap" => 8888,
1581 "nGg" => 8921,
1582 "nGt" => 8811,
1583 "nGtv" => 8811,
1584 "nLeftarrow" => 8653,
1585 "nLeftrightarrow" => 8654,
1586 "nLl" => 8920,
1587 "nLt" => 8810,
1588 "nLtv" => 8810,
1589 "nRightarrow" => 8655,
1590 "nVDash" => 8879,
1591 "nVdash" => 8878,
1592 "nabla" => 8711,
1593 "nacute" => 324,
1594 "nang" => 8736,
1595 "nap" => 8777,
1596 "napE" => 10864,
1597 "napid" => 8779,
1598 "napos" => 329,
1599 "napprox" => 8777,
1600 "natur" => 9838,
1601 "natural" => 9838,
1602 "naturals" => 8469,
1603 "nbsp" => 160,
1604 "nbump" => 8782,
1605 "nbumpe" => 8783,
1606 "ncap" => 10819,
1607 "ncaron" => 328,
1608 "ncedil" => 326,
1609 "ncong" => 8775,
1610 "ncongdot" => 10861,
1611 "ncup" => 10818,
1612 "ncy" => 1085,
1613 "ndash" => 8211,
1614 "ne" => 8800,
1615 "neArr" => 8663,
1616 "nearhk" => 10532,
1617 "nearr" => 8599,
1618 "nearrow" => 8599,
1619 "nedot" => 8784,
1620 "nequiv" => 8802,
1621 "nesear" => 10536,
1622 "nesim" => 8770,
1623 "nexist" => 8708,
1624 "nexists" => 8708,
1625 "nfr" => 120107,
1626 "ngE" => 8807,
1627 "nge" => 8817,
1628 "ngeq" => 8817,
1629 "ngeqq" => 8807,
1630 "ngeqslant" => 10878,
1631 "nges" => 10878,
1632 "ngsim" => 8821,
1633 "ngt" => 8815,
1634 "ngtr" => 8815,
1635 "nhArr" => 8654,
1636 "nharr" => 8622,
1637 "nhpar" => 10994,
1638 "ni" => 8715,
1639 "nis" => 8956,
1640 "nisd" => 8954,
1641 "niv" => 8715,
1642 "njcy" => 1114,
1643 "nlArr" => 8653,
1644 "nlE" => 8806,
1645 "nlarr" => 8602,
1646 "nldr" => 8229,
1647 "nle" => 8816,
1648 "nleftarrow" => 8602,
1649 "nleftrightarrow" => 8622,
1650 "nleq" => 8816,
1651 "nleqq" => 8806,
1652 "nleqslant" => 10877,
1653 "nles" => 10877,
1654 "nless" => 8814,
1655 "nlsim" => 8820,
1656 "nlt" => 8814,
1657 "nltri" => 8938,
1658 "nltrie" => 8940,
1659 "nmid" => 8740,
1660 "nopf" => 120159,
1661 "not" => 172,
1662 "notin" => 8713,
1663 "notinE" => 8953,
1664 "notindot" => 8949,
1665 "notinva" => 8713,
1666 "notinvb" => 8951,
1667 "notinvc" => 8950,
1668 "notni" => 8716,
1669 "notniva" => 8716,
1670 "notnivb" => 8958,
1671 "notnivc" => 8957,
1672 "npar" => 8742,
1673 "nparallel" => 8742,
1674 "nparsl" => 11005,
1675 "npart" => 8706,
1676 "npolint" => 10772,
1677 "npr" => 8832,
1678 "nprcue" => 8928,
1679 "npre" => 10927,
1680 "nprec" => 8832,
1681 "npreceq" => 10927,
1682 "nrArr" => 8655,
1683 "nrarr" => 8603,
1684 "nrarrc" => 10547,
1685 "nrarrw" => 8605,
1686 "nrightarrow" => 8603,
1687 "nrtri" => 8939,
1688 "nrtrie" => 8941,
1689 "nsc" => 8833,
1690 "nsccue" => 8929,
1691 "nsce" => 10928,
1692 "nscr" => 120003,
1693 "nshortmid" => 8740,
1694 "nshortparallel" => 8742,
1695 "nsim" => 8769,
1696 "nsime" => 8772,
1697 "nsimeq" => 8772,
1698 "nsmid" => 8740,
1699 "nspar" => 8742,
1700 "nsqsube" => 8930,
1701 "nsqsupe" => 8931,
1702 "nsub" => 8836,
1703 "nsubE" => 10949,
1704 "nsube" => 8840,
1705 "nsubset" => 8834,
1706 "nsubseteq" => 8840,
1707 "nsubseteqq" => 10949,
1708 "nsucc" => 8833,
1709 "nsucceq" => 10928,
1710 "nsup" => 8837,
1711 "nsupE" => 10950,
1712 "nsupe" => 8841,
1713 "nsupset" => 8835,
1714 "nsupseteq" => 8841,
1715 "nsupseteqq" => 10950,
1716 "ntgl" => 8825,
1717 "ntilde" => 241,
1718 "ntlg" => 8824,
1719 "ntriangleleft" => 8938,
1720 "ntrianglelefteq" => 8940,
1721 "ntriangleright" => 8939,
1722 "ntrianglerighteq" => 8941,
1723 "nu" => 957,
1724 "num" => 35,
1725 "numero" => 8470,
1726 "numsp" => 8199,
1727 "nvDash" => 8877,
1728 "nvHarr" => 10500,
1729 "nvap" => 8781,
1730 "nvdash" => 8876,
1731 "nvge" => 8805,
1732 "nvgt" => 62,
1733 "nvinfin" => 10718,
1734 "nvlArr" => 10498,
1735 "nvle" => 8804,
1736 "nvlt" => 60,
1737 "nvltrie" => 8884,
1738 "nvrArr" => 10499,
1739 "nvrtrie" => 8885,
1740 "nvsim" => 8764,
1741 "nwArr" => 8662,
1742 "nwarhk" => 10531,
1743 "nwarr" => 8598,
1744 "nwarrow" => 8598,
1745 "nwnear" => 10535,
1746 "oS" => 9416,
1747 "oacute" => 243,
1748 "oast" => 8859,
1749 "ocir" => 8858,
1750 "ocirc" => 244,
1751 "ocy" => 1086,
1752 "odash" => 8861,
1753 "odblac" => 337,
1754 "odiv" => 10808,
1755 "odot" => 8857,
1756 "odsold" => 10684,
1757 "oelig" => 339,
1758 "ofcir" => 10687,
1759 "ofr" => 120108,
1760 "ogon" => 731,
1761 "ograve" => 242,
1762 "ogt" => 10689,
1763 "ohbar" => 10677,
1764 "ohm" => 937,
1765 "oint" => 8750,
1766 "olarr" => 8634,
1767 "olcir" => 10686,
1768 "olcross" => 10683,
1769 "oline" => 8254,
1770 "olt" => 10688,
1771 "omacr" => 333,
1772 "omega" => 969,
1773 "omicron" => 959,
1774 "omid" => 10678,
1775 "ominus" => 8854,
1776 "oopf" => 120160,
1777 "opar" => 10679,
1778 "operp" => 10681,
1779 "oplus" => 8853,
1780 "or" => 8744,
1781 "orarr" => 8635,
1782 "ord" => 10845,
1783 "order" => 8500,
1784 "orderof" => 8500,
1785 "ordf" => 170,
1786 "ordm" => 186,
1787 "origof" => 8886,
1788 "oror" => 10838,
1789 "orslope" => 10839,
1790 "orv" => 10843,
1791 "oscr" => 8500,
1792 "oslash" => 248,
1793 "osol" => 8856,
1794 "otilde" => 245,
1795 "otimes" => 8855,
1796 "otimesas" => 10806,
1797 "ouml" => 246,
1798 "ovbar" => 9021,
1799 "par" => 8741,
1800 "para" => 182,
1801 "parallel" => 8741,
1802 "parsim" => 10995,
1803 "parsl" => 11005,
1804 "part" => 8706,
1805 "pcy" => 1087,
1806 "percnt" => 37,
1807 "period" => 46,
1808 "permil" => 8240,
1809 "perp" => 8869,
1810 "pertenk" => 8241,
1811 "pfr" => 120109,
1812 "phi" => 966,
1813 "phiv" => 981,
1814 "phmmat" => 8499,
1815 "phone" => 9742,
1816 "pi" => 960,
1817 "pitchfork" => 8916,
1818 "piv" => 982,
1819 "planck" => 8463,
1820 "planckh" => 8462,
1821 "plankv" => 8463,
1822 "plus" => 43,
1823 "plusacir" => 10787,
1824 "plusb" => 8862,
1825 "pluscir" => 10786,
1826 "plusdo" => 8724,
1827 "plusdu" => 10789,
1828 "pluse" => 10866,
1829 "plusmn" => 177,
1830 "plussim" => 10790,
1831 "plustwo" => 10791,
1832 "pm" => 177,
1833 "pointint" => 10773,
1834 "popf" => 120161,
1835 "pound" => 163,
1836 "pr" => 8826,
1837 "prE" => 10931,
1838 "prap" => 10935,
1839 "prcue" => 8828,
1840 "pre" => 10927,
1841 "prec" => 8826,
1842 "precapprox" => 10935,
1843 "preccurlyeq" => 8828,
1844 "preceq" => 10927,
1845 "precnapprox" => 10937,
1846 "precneqq" => 10933,
1847 "precnsim" => 8936,
1848 "precsim" => 8830,
1849 "prime" => 8242,
1850 "primes" => 8473,
1851 "prnE" => 10933,
1852 "prnap" => 10937,
1853 "prnsim" => 8936,
1854 "prod" => 8719,
1855 "profalar" => 9006,
1856 "profline" => 8978,
1857 "profsurf" => 8979,
1858 "prop" => 8733,
1859 "propto" => 8733,
1860 "prsim" => 8830,
1861 "prurel" => 8880,
1862 "pscr" => 120005,
1863 "psi" => 968,
1864 "puncsp" => 8200,
1865 "qfr" => 120110,
1866 "qint" => 10764,
1867 "qopf" => 120162,
1868 "qprime" => 8279,
1869 "qscr" => 120006,
1870 "quaternions" => 8461,
1871 "quatint" => 10774,
1872 "quest" => 63,
1873 "questeq" => 8799,
1874 "quot" => 34,
1875 "rAarr" => 8667,
1876 "rArr" => 8658,
1877 "rAtail" => 10524,
1878 "rBarr" => 10511,
1879 "rHar" => 10596,
1880 "race" => 8765,
1881 "racute" => 341,
1882 "radic" => 8730,
1883 "raemptyv" => 10675,
1884 "rang" => 10217,
1885 "rangd" => 10642,
1886 "range" => 10661,
1887 "rangle" => 10217,
1888 "raquo" => 187,
1889 "rarr" => 8594,
1890 "rarrap" => 10613,
1891 "rarrb" => 8677,
1892 "rarrbfs" => 10528,
1893 "rarrc" => 10547,
1894 "rarrfs" => 10526,
1895 "rarrhk" => 8618,
1896 "rarrlp" => 8620,
1897 "rarrpl" => 10565,
1898 "rarrsim" => 10612,
1899 "rarrtl" => 8611,
1900 "rarrw" => 8605,
1901 "ratail" => 10522,
1902 "ratio" => 8758,
1903 "rationals" => 8474,
1904 "rbarr" => 10509,
1905 "rbbrk" => 10099,
1906 "rbrace" => 125,
1907 "rbrack" => 93,
1908 "rbrke" => 10636,
1909 "rbrksld" => 10638,
1910 "rbrkslu" => 10640,
1911 "rcaron" => 345,
1912 "rcedil" => 343,
1913 "rceil" => 8969,
1914 "rcub" => 125,
1915 "rcy" => 1088,
1916 "rdca" => 10551,
1917 "rdldhar" => 10601,
1918 "rdquo" => 8221,
1919 "rdquor" => 8221,
1920 "rdsh" => 8627,
1921 "real" => 8476,
1922 "realine" => 8475,
1923 "realpart" => 8476,
1924 "reals" => 8477,
1925 "rect" => 9645,
1926 "reg" => 174,
1927 "rfisht" => 10621,
1928 "rfloor" => 8971,
1929 "rfr" => 120111,
1930 "rhard" => 8641,
1931 "rharu" => 8640,
1932 "rharul" => 10604,
1933 "rho" => 961,
1934 "rhov" => 1009,
1935 "rightarrow" => 8594,
1936 "rightarrowtail" => 8611,
1937 "rightharpoondown" => 8641,
1938 "rightharpoonup" => 8640,
1939 "rightleftarrows" => 8644,
1940 "rightleftharpoons" => 8652,
1941 "rightrightarrows" => 8649,
1942 "rightsquigarrow" => 8605,
1943 "rightthreetimes" => 8908,
1944 "ring" => 730,
1945 "risingdotseq" => 8787,
1946 "rlarr" => 8644,
1947 "rlhar" => 8652,
1948 "rlm" => 8207,
1949 "rmoust" => 9137,
1950 "rmoustache" => 9137,
1951 "rnmid" => 10990,
1952 "roang" => 10221,
1953 "roarr" => 8702,
1954 "robrk" => 10215,
1955 "ropar" => 10630,
1956 "ropf" => 120163,
1957 "roplus" => 10798,
1958 "rotimes" => 10805,
1959 "rpar" => 41,
1960 "rpargt" => 10644,
1961 "rppolint" => 10770,
1962 "rrarr" => 8649,
1963 "rsaquo" => 8250,
1964 "rscr" => 120007,
1965 "rsh" => 8625,
1966 "rsqb" => 93,
1967 "rsquo" => 8217,
1968 "rsquor" => 8217,
1969 "rthree" => 8908,
1970 "rtimes" => 8906,
1971 "rtri" => 9657,
1972 "rtrie" => 8885,
1973 "rtrif" => 9656,
1974 "rtriltri" => 10702,
1975 "ruluhar" => 10600,
1976 "rx" => 8478,
1977 "sacute" => 347,
1978 "sbquo" => 8218,
1979 "sc" => 8827,
1980 "scE" => 10932,
1981 "scap" => 10936,
1982 "scaron" => 353,
1983 "sccue" => 8829,
1984 "sce" => 10928,
1985 "scedil" => 351,
1986 "scirc" => 349,
1987 "scnE" => 10934,
1988 "scnap" => 10938,
1989 "scnsim" => 8937,
1990 "scpolint" => 10771,
1991 "scsim" => 8831,
1992 "scy" => 1089,
1993 "sdot" => 8901,
1994 "sdotb" => 8865,
1995 "sdote" => 10854,
1996 "seArr" => 8664,
1997 "searhk" => 10533,
1998 "searr" => 8600,
1999 "searrow" => 8600,
2000 "sect" => 167,
2001 "semi" => 59,
2002 "seswar" => 10537,
2003 "setminus" => 8726,
2004 "setmn" => 8726,
2005 "sext" => 10038,
2006 "sfr" => 120112,
2007 "sfrown" => 8994,
2008 "sharp" => 9839,
2009 "shchcy" => 1097,
2010 "shcy" => 1096,
2011 "shortmid" => 8739,
2012 "shortparallel" => 8741,
2013 "shy" => 173,
2014 "sigma" => 963,
2015 "sigmaf" => 962,
2016 "sigmav" => 962,
2017 "sim" => 8764,
2018 "simdot" => 10858,
2019 "sime" => 8771,
2020 "simeq" => 8771,
2021 "simg" => 10910,
2022 "simgE" => 10912,
2023 "siml" => 10909,
2024 "simlE" => 10911,
2025 "simne" => 8774,
2026 "simplus" => 10788,
2027 "simrarr" => 10610,
2028 "slarr" => 8592,
2029 "smallsetminus" => 8726,
2030 "smashp" => 10803,
2031 "smeparsl" => 10724,
2032 "smid" => 8739,
2033 "smile" => 8995,
2034 "smt" => 10922,
2035 "smte" => 10924,
2036 "smtes" => 10924,
2037 "softcy" => 1100,
2038 "sol" => 47,
2039 "solb" => 10692,
2040 "solbar" => 9023,
2041 "sopf" => 120164,
2042 "spades" => 9824,
2043 "spadesuit" => 9824,
2044 "spar" => 8741,
2045 "sqcap" => 8851,
2046 "sqcaps" => 8851,
2047 "sqcup" => 8852,
2048 "sqcups" => 8852,
2049 "sqsub" => 8847,
2050 "sqsube" => 8849,
2051 "sqsubset" => 8847,
2052 "sqsubseteq" => 8849,
2053 "sqsup" => 8848,
2054 "sqsupe" => 8850,
2055 "sqsupset" => 8848,
2056 "sqsupseteq" => 8850,
2057 "squ" => 9633,
2058 "square" => 9633,
2059 "squarf" => 9642,
2060 "squf" => 9642,
2061 "srarr" => 8594,
2062 "sscr" => 120008,
2063 "ssetmn" => 8726,
2064 "ssmile" => 8995,
2065 "sstarf" => 8902,
2066 "star" => 9734,
2067 "starf" => 9733,
2068 "straightepsilon" => 1013,
2069 "straightphi" => 981,
2070 "strns" => 175,
2071 "sub" => 8834,
2072 "subE" => 10949,
2073 "subdot" => 10941,
2074 "sube" => 8838,
2075 "subedot" => 10947,
2076 "submult" => 10945,
2077 "subnE" => 10955,
2078 "subne" => 8842,
2079 "subplus" => 10943,
2080 "subrarr" => 10617,
2081 "subset" => 8834,
2082 "subseteq" => 8838,
2083 "subseteqq" => 10949,
2084 "subsetneq" => 8842,
2085 "subsetneqq" => 10955,
2086 "subsim" => 10951,
2087 "subsub" => 10965,
2088 "subsup" => 10963,
2089 "succ" => 8827,
2090 "succapprox" => 10936,
2091 "succcurlyeq" => 8829,
2092 "succeq" => 10928,
2093 "succnapprox" => 10938,
2094 "succneqq" => 10934,
2095 "succnsim" => 8937,
2096 "succsim" => 8831,
2097 "sum" => 8721,
2098 "sung" => 9834,
2099 "sup" => 8835,
2100 "sup1" => 185,
2101 "sup2" => 178,
2102 "sup3" => 179,
2103 "supE" => 10950,
2104 "supdot" => 10942,
2105 "supdsub" => 10968,
2106 "supe" => 8839,
2107 "supedot" => 10948,
2108 "suphsol" => 10185,
2109 "suphsub" => 10967,
2110 "suplarr" => 10619,
2111 "supmult" => 10946,
2112 "supnE" => 10956,
2113 "supne" => 8843,
2114 "supplus" => 10944,
2115 "supset" => 8835,
2116 "supseteq" => 8839,
2117 "supseteqq" => 10950,
2118 "supsetneq" => 8843,
2119 "supsetneqq" => 10956,
2120 "supsim" => 10952,
2121 "supsub" => 10964,
2122 "supsup" => 10966,
2123 "swArr" => 8665,
2124 "swarhk" => 10534,
2125 "swarr" => 8601,
2126 "swarrow" => 8601,
2127 "swnwar" => 10538,
2128 "szlig" => 223,
2129 "target" => 8982,
2130 "tau" => 964,
2131 "tbrk" => 9140,
2132 "tcaron" => 357,
2133 "tcedil" => 355,
2134 "tcy" => 1090,
2135 "tdot" => 8411,
2136 "telrec" => 8981,
2137 "tfr" => 120113,
2138 "there4" => 8756,
2139 "therefore" => 8756,
2140 "theta" => 952,
2141 "thetasym" => 977,
2142 "thetav" => 977,
2143 "thickapprox" => 8776,
2144 "thicksim" => 8764,
2145 "thinsp" => 8201,
2146 "thkap" => 8776,
2147 "thksim" => 8764,
2148 "thorn" => 254,
2149 "tilde" => 732,
2150 "times" => 215,
2151 "timesb" => 8864,
2152 "timesbar" => 10801,
2153 "timesd" => 10800,
2154 "tint" => 8749,
2155 "toea" => 10536,
2156 "top" => 8868,
2157 "topbot" => 9014,
2158 "topcir" => 10993,
2159 "topf" => 120165,
2160 "topfork" => 10970,
2161 "tosa" => 10537,
2162 "tprime" => 8244,
2163 "trade" => 8482,
2164 "triangle" => 9653,
2165 "triangledown" => 9663,
2166 "triangleleft" => 9667,
2167 "trianglelefteq" => 8884,
2168 "triangleq" => 8796,
2169 "triangleright" => 9657,
2170 "trianglerighteq" => 8885,
2171 "tridot" => 9708,
2172 "trie" => 8796,
2173 "triminus" => 10810,
2174 "triplus" => 10809,
2175 "trisb" => 10701,
2176 "tritime" => 10811,
2177 "trpezium" => 9186,
2178 "tscr" => 120009,
2179 "tscy" => 1094,
2180 "tshcy" => 1115,
2181 "tstrok" => 359,
2182 "twixt" => 8812,
2183 "twoheadleftarrow" => 8606,
2184 "twoheadrightarrow" => 8608,
2185 "uArr" => 8657,
2186 "uHar" => 10595,
2187 "uacute" => 250,
2188 "uarr" => 8593,
2189 "ubrcy" => 1118,
2190 "ubreve" => 365,
2191 "ucirc" => 251,
2192 "ucy" => 1091,
2193 "udarr" => 8645,
2194 "udblac" => 369,
2195 "udhar" => 10606,
2196 "ufisht" => 10622,
2197 "ufr" => 120114,
2198 "ugrave" => 249,
2199 "uharl" => 8639,
2200 "uharr" => 8638,
2201 "uhblk" => 9600,
2202 "ulcorn" => 8988,
2203 "ulcorner" => 8988,
2204 "ulcrop" => 8975,
2205 "ultri" => 9720,
2206 "umacr" => 363,
2207 "uml" => 168,
2208 "uogon" => 371,
2209 "uopf" => 120166,
2210 "uparrow" => 8593,
2211 "updownarrow" => 8597,
2212 "upharpoonleft" => 8639,
2213 "upharpoonright" => 8638,
2214 "uplus" => 8846,
2215 "upsi" => 965,
2216 "upsih" => 978,
2217 "upsilon" => 965,
2218 "upuparrows" => 8648,
2219 "urcorn" => 8989,
2220 "urcorner" => 8989,
2221 "urcrop" => 8974,
2222 "uring" => 367,
2223 "urtri" => 9721,
2224 "uscr" => 120010,
2225 "utdot" => 8944,
2226 "utilde" => 361,
2227 "utri" => 9653,
2228 "utrif" => 9652,
2229 "uuarr" => 8648,
2230 "uuml" => 252,
2231 "uwangle" => 10663,
2232 "vArr" => 8661,
2233 "vBar" => 10984,
2234 "vBarv" => 10985,
2235 "vDash" => 8872,
2236 "vangrt" => 10652,
2237 "varepsilon" => 1013,
2238 "varkappa" => 1008,
2239 "varnothing" => 8709,
2240 "varphi" => 981,
2241 "varpi" => 982,
2242 "varpropto" => 8733,
2243 "varr" => 8597,
2244 "varrho" => 1009,
2245 "varsigma" => 962,
2246 "varsubsetneq" => 8842,
2247 "varsubsetneqq" => 10955,
2248 "varsupsetneq" => 8843,
2249 "varsupsetneqq" => 10956,
2250 "vartheta" => 977,
2251 "vartriangleleft" => 8882,
2252 "vartriangleright" => 8883,
2253 "vcy" => 1074,
2254 "vdash" => 8866,
2255 "vee" => 8744,
2256 "veebar" => 8891,
2257 "veeeq" => 8794,
2258 "vellip" => 8942,
2259 "verbar" => 124,
2260 "vert" => 124,
2261 "vfr" => 120115,
2262 "vltri" => 8882,
2263 "vnsub" => 8834,
2264 "vnsup" => 8835,
2265 "vopf" => 120167,
2266 "vprop" => 8733,
2267 "vrtri" => 8883,
2268 "vscr" => 120011,
2269 "vsubnE" => 10955,
2270 "vsubne" => 8842,
2271 "vsupnE" => 10956,
2272 "vsupne" => 8843,
2273 "vzigzag" => 10650,
2274 "wcirc" => 373,
2275 "wedbar" => 10847,
2276 "wedge" => 8743,
2277 "wedgeq" => 8793,
2278 "weierp" => 8472,
2279 "wfr" => 120116,
2280 "wopf" => 120168,
2281 "wp" => 8472,
2282 "wr" => 8768,
2283 "wreath" => 8768,
2284 "wscr" => 120012,
2285 "xcap" => 8898,
2286 "xcirc" => 9711,
2287 "xcup" => 8899,
2288 "xdtri" => 9661,
2289 "xfr" => 120117,
2290 "xhArr" => 10234,
2291 "xharr" => 10231,
2292 "xi" => 958,
2293 "xlArr" => 10232,
2294 "xlarr" => 10229,
2295 "xmap" => 10236,
2296 "xnis" => 8955,
2297 "xodot" => 10752,
2298 "xopf" => 120169,
2299 "xoplus" => 10753,
2300 "xotime" => 10754,
2301 "xrArr" => 10233,
2302 "xrarr" => 10230,
2303 "xscr" => 120013,
2304 "xsqcup" => 10758,
2305 "xuplus" => 10756,
2306 "xutri" => 9651,
2307 "xvee" => 8897,
2308 "xwedge" => 8896,
2309 "yacute" => 253,
2310 "yacy" => 1103,
2311 "ycirc" => 375,
2312 "ycy" => 1099,
2313 "yen" => 165,
2314 "yfr" => 120118,
2315 "yicy" => 1111,
2316 "yopf" => 120170,
2317 "yscr" => 120014,
2318 "yucy" => 1102,
2319 "yuml" => 255,
2320 "zacute" => 378,
2321 "zcaron" => 382,
2322 "zcy" => 1079,
2323 "zdot" => 380,
2324 "zeetrf" => 8488,
2325 "zeta" => 950,
2326 "zfr" => 120119,
2327 "zhcy" => 1078,
2328 "zigrarr" => 8669,
2329 "zopf" => 120171,
2330 "zscr" => 120015,
2331 "zwj" => 8205,
2332 "zwnj" => 8204,
2333 }
2334}
2335
2336#[cfg(test)]
2337mod tests {
2338
2339 use crate::decoders::html::{add_html_token, html_to_text, text_to_html};
2340
2341 #[test]
2342 fn convert_text_to_html() {
2343 let inputs = [
2344 (
2345 "hello\nworld\n",
2346 "<html><body>hello<br/>world<br/></body></html>",
2347 ),
2348 ("using <>\n", "<html><body>using <><br/></body></html>"),
2349 ];
2350
2351 for input in inputs {
2352 assert_eq!(text_to_html(input.0), input.1);
2353 }
2354 }
2355
2356 #[test]
2357 fn convert_html_to_text() {
2358 let inputs = [
2359 ("<html>hello<br/>world<br/></html>", "hello\nworld\n"),
2360 ("<html>using <><br/></html>", "using <>\n"),
2361 ("test <not br/>tag<br />", "test tag\n"),
2362 ("<>< ><tag\n/>>hello world< br \n />", ">hello world\n"),
2363 (
2364 concat!(
2365 "<head><title>ignore head</title><not head>xyz</not head></head>",
2366 "<h1><body></h1>"
2367 ),
2368 "<body>",
2369 ),
2370 (
2371 concat!(
2372 "<p>what is ♥?</p><p>ßĂΒγ ",
2373 "don't hurt me.</p>"
2374 ),
2375 "what is ♥?\nßĂΒγ don't hurt me.\n",
2376 ),
2377 (
2378 concat!(
2379 "<!--[if mso]><style type=\"text/css\">body, table, td, a, p, ",
2380 "span, ul, li {font-family: Arial, sans-serif!important;}</style><![endif]-->",
2381 "this is <!-- <> < < < < ignore > -> here -->the actual<!--> text"
2382 ),
2383 "this is the actual text",
2384 ),
2385 (
2386 " < p > hello < / p > < p > world < / p > !!! < br > ",
2387 "hello\nworld\n!!!\n",
2388 ),
2389 (
2390 " <p>please unsubscribe <a href=#>here</a>.</p> ",
2391 "please unsubscribe here.\n",
2392 ),
2393 ];
2394
2395 for input in inputs {
2396 assert_eq!(html_to_text(input.0), input.1, "Failed for '{:?}'", input.0);
2397 }
2398 }
2399
2400 #[test]
2401 fn convert_html_entity() {
2402 let inputs = [
2403 ("<", "<"),
2404 (" ", " "),
2405 (" ", " "),
2406 (" ", "\u{a0}"),
2407 ("∳", "∳"),
2408 ("↷", "↷"),
2409 ("→", "→"),
2410 ("�", "�"),
2411 ("&hmmm", "&hmmm"),
2412 ];
2413
2414 for input in inputs {
2415 let mut result = String::with_capacity(input.0.len());
2416 add_html_token(&mut result, input.0.as_bytes(), false);
2417 assert_eq!(result, input.1, "Failed for '{:?}", input.0);
2418 }
2419 }
2420}