/*****************************************************************************/ /* HTML.c Processing associated with reading and composing HTML-format messages. COPYRIGHT --------- Copyright (C) 2005-2025 Mark G.Daniel This program, comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under the conditions of the GNU GENERAL PUBLIC LICENSE, version 3, or any later version. VERSION HISTORY --------------- 01-JUL-2025 MGD HtmlDeEntify() allow for UTF-8 charset 25-FEB-2010 MGD HtmlToPlain() supply charset for UTF-8 deentify HtmlCharacterDeEntify() allow for UTF-8 charset 04-JUL-2006 MGD bugfix; HtmlSkipTagTo() quotes outside of tags 20-JUN-2006 MGD HtmlInDisguise() is it really not plain but HTML text? 14-MAR-2006 MGD refine HtmlNumericDeEntify() and HtmlCharacterDeEntify() 13-MAR-2006 MGD HtmlSanitise() suppress "background-image" 01-FEB-2005 MGD initial */ /*****************************************************************************/ #ifdef SOYMAIL_VMS_V7 #undef _VMS_V6_SOURCE #define _VMS_V6_SOURCE #undef __VMS_VER #define __VMS_VER 70000000 #undef __CRTL_VER #define __CRTL_VER 70000000 #endif #pragma nomember_alignment /* standard C header files */ #include #include #include #include #include #include #include #include /* VMS related header files */ #include #include #include /* application header file */ #include "soymail.h" #include "cgilib.h" #include "config.h" #include "html.h" #include "message.h" #define FI_LI "HTML", __LINE__ /******************/ /* global storage */ /******************/ /********************/ /* external storage */ /********************/ extern BOOL Debug, WatchEnabled; extern CONFIG_DATA SoyMailConfig; /*****************************************************************************/ /* Reduce HTML markup down to a semblance of plain-text. Relies on the underlying HTML to provide white-space, indenting, etc. Essentially just strips the markup out and adds carriage-control as necessary. Will format ordered and unordered lists. */ int HtmlToPlain ( char *HtmlPtr, char *CharSetPtr ) { #define MAX_LIST_DEPTH 16 int ListIndex; int ListType [MAX_LIST_DEPTH+1]; char *cptr, *sptr, *tptr; /*********/ /* begin */ /*********/ if (WatchEnabled) WatchThis (FI_LI, "HtmlToPlain()"); /* ensure all potentially 'interesting' entities are revealed */ HtmlDeEntify (HtmlPtr, CharSetPtr); ListIndex = 0; memset (&ListType, 0, sizeof(ListType)); cptr = sptr = HtmlPtr; while (*cptr) { while (*cptr && *cptr != '<') *sptr++ = *cptr++; if (!*cptr) break; if (!memcmp (cptr, ""); continue; } if (HtmlThisTag (cptr, "SCRIPT")) { cptr += HtmlSkipTagTo (cptr, ""); continue; } if (HtmlThisTag (cptr, "STYLE")) { cptr += HtmlSkipTagTo (cptr, ""); continue; } if (HtmlThisTag (cptr, "IMG")) { cptr += HtmlSkipTagTo (cptr, ">"); continue; } if (HtmlThisTag (cptr, "P")) *sptr++ = '\n'; else if (HtmlThisTag (cptr, "B")) *sptr++ = '*'; else if (HtmlThisTag (cptr, "U")) *sptr++ = '_'; else if (HtmlThisTag (cptr, "I")) *sptr++ = '/'; else if (HtmlThisEndTag (cptr, "LI")) *sptr = '\0'; else if (HtmlThisTag (cptr, "LI")) { if (ListType[ListIndex] < 0) { *sptr++ = ' '; *sptr++ = '*'; *sptr++ = ' '; *sptr++ = ' '; } else { *sptr++ = ' '; *sptr++ = ListType[ListIndex]; *sptr++ = '.'; *sptr++ = ' '; if (ListType[ListIndex] < 'z') ListType[ListIndex]++; if (ListType[ListIndex] == '9' + 1) ListType[ListIndex] = 'a'; } } else if (HtmlThisEndTag (cptr, "UL")) { if (ListIndex > 1) ListIndex--; } else if (HtmlThisTag (cptr, "UL")) { if (ListIndex < MAX_LIST_DEPTH) ListIndex++; ListType[ListIndex] = -1; } else if (HtmlThisEndTag (cptr, "OL")) { if (ListIndex > 1) ListIndex--; } else if (HtmlThisTag (cptr, "OL")) { if (ListIndex < MAX_LIST_DEPTH) ListIndex++; ListType[ListIndex] = '1'; } cptr += HtmlSkipTagTo (cptr, ">"); } *sptr = '\0'; HtmlDeEntify (HtmlPtr, CharSetPtr); return (MessageCollapseLineBreaks (HtmlPtr, 2)); } /*****************************************************************************/ /* Remove all HTML tags except those (probably) harmless tags permitted in the tests. Ensure only known anchor HREFs schemes are permitted. In particular try to disable all scripting capabilities. Bit rude and crude and with lots of assumptions! Done in situ because resultant text will always be smaller or the same size. Return number of characters remaining. CAUTION!! Sanitising anything is like skating on thin ice! */ int HtmlSanitise ( char *HtmlPtr, char *CharSetPtr ) { char *cptr, *sptr, *tptr; /*********/ /* begin */ /*********/ if (WatchEnabled) WatchThis (FI_LI, "HtmlSanitise()"); /* ensure all potentially 'interesting' entities are revealed */ HtmlDeEntify (HtmlPtr, CharSetPtr); /* sanitise */ cptr = sptr = HtmlPtr; while (*cptr) { while (*cptr && *cptr != '<') *sptr++ = *cptr++; if (!*cptr) break; if (!memcmp (cptr, ""); continue; } if (HtmlThisTag (cptr, "TITLE")) { /* absorb the title */ cptr += HtmlSkipTagTo (cptr, ""); continue; } if (HtmlThisTag (cptr, "SCRIPT")) { /**********/ /* script */ /**********/ /* absorb and add the following warning to the displayed page */ static char ScriptHere [] = "<SCRIPT>"; cptr += HtmlSkipTagTo (tptr = cptr, ""); if (cptr - tptr >= sizeof(ScriptHere)) for (tptr = ScriptHere; *tptr; *sptr++ = *tptr++); continue; } if (HtmlThisTag (cptr, "IMG")) { /*********/ /* image */ /*********/ /* absorb and add the following informational to the displayed page */ static char ImgHere [] = "<IMG>"; cptr += HtmlSkipTagTo (tptr = cptr, ">"); if (cptr - tptr >= sizeof(ImgHere)) for (tptr = ImgHere; *tptr; *sptr++ = *tptr++); continue; } if (HtmlThisTag (cptr, "STYLE")) { /*********/ /* style */ /*********/ /* lose all attributes other than what's specifically allowed */ while (*cptr && *cptr != '>' && !isspace(*cptr)) *sptr++ = *cptr++; while (*cptr) { while (isspace (*cptr)) cptr++; if (!*cptr || *cptr == '>') break; if (strsame (cptr, "type=", 5)) { *sptr++ = ' '; cptr += HtmlSpanAttrib (tptr = cptr); while (tptr < cptr) *sptr++ = *tptr++; continue; } /* absorb the attribute */ cptr += HtmlSpanAttrib (cptr); } /* now, include any intervening embedded style */ cptr += HtmlSkipTagTo (tptr = cptr, ""); while (tptr < cptr) { /* do not allow any importing of style sheets! */ if (*tptr == '@' && strsame (tptr, "@import", 7)) { memcpy (sptr, "_imp0rt", 7); sptr += 7; tptr += 7; } else if (tolower(*tptr) == 'b' && strsame (tptr, "background-image", 16)) { memcpy (sptr, "backgr0und_image", 16); sptr += 16; tptr += 16; } else *sptr++ = *tptr++; } continue; } if (HtmlThisTag (cptr, "A")) { /**********/ /* anchor */ /**********/ /* lose all attributes other than what's specifically allowed */ while (*cptr && *cptr != '>' && !isspace(*cptr)) *sptr++ = *cptr++; while (*cptr) { while (isspace (*cptr)) cptr++; if (!*cptr || *cptr == '>') break; /* lose everything but a known HREF */ if (strsame (cptr, "href=", 5)) { /* only allow this subset of known schemes to be specified */ if (strsame (cptr+6, "http://", 7) || strsame (cptr+6, "https://", 8) || strsame (cptr+6, "ftp://", 6) || strsame (cptr+6, "mailto:", 7)) { *sptr++ = ' '; cptr += HtmlSpanAttrib (tptr = cptr); while (tptr < cptr) *sptr++ = *tptr++; } else cptr += HtmlSpanAttrib (cptr); continue; } /* absorb the attribute */ cptr += HtmlSpanAttrib (cptr); } continue; } if (HtmlThisTag (cptr, "B") || HtmlThisTag (cptr, "BLOCKQUOTE") || HtmlThisTag (cptr, "BODY") || HtmlThisTag (cptr, "BR") || HtmlThisTag (cptr, "EM") || HtmlThisTag (cptr, "HR") || HtmlThisTag (cptr, "I") || HtmlThisTag (cptr, "LI") || HtmlThisTag (cptr, "NOSCRIPT") || HtmlThisTag (cptr, "OL") || HtmlThisTag (cptr, "P") || HtmlThisTag (cptr, "PRE") || HtmlThisTag (cptr, "SPAN") || HtmlThisTag (cptr, "STRONG") || HtmlThisTag (cptr, "TABLE") || HtmlThisTag (cptr, "TD") || HtmlThisTag (cptr, "TH") || HtmlThisTag (cptr, "TR") || HtmlThisTag (cptr, "U") || HtmlThisTag (cptr, "UL")) { /***********/ /* allowed */ /***********/ /* lose all attributes other than what's specifically allowed */ while (*cptr && *cptr != '>' && !isspace(*cptr)) *sptr++ = *cptr++; while (*cptr) { while (isspace (*cptr)) cptr++; if (!*cptr || *cptr == '>') break; /* of course not all of these apply to every tag! */ if (strsame (cptr, "align=", 6) || strsame (cptr, "Alink=", 6) || strsame (cptr, "BGCOLOR=", 8) || strsame (cptr, "border=", 7) || strsame (cptr, "cellspacing=", 12) || strsame (cptr, "cellpadding=", 12) || strsame (cptr, "class=", 6) || strsame (cptr, "colspan=", 8) || strsame (cptr, "HEIGHT=", 7) || strsame (cptr, "id=", 3) || strsame (cptr, "link=", 5) || strsame (cptr, "name=", 5) || strsame (cptr, "nowrap", 6) || strsame (cptr, "RULES=", 6) || strsame (cptr, "rowspan=", 8) || strsame (cptr, "style=", 6) || strsame (cptr, "TEXT=", 5) || strsame (cptr, "valign=", 7) || strsame (cptr, "Vlink=", 6) || strsame (cptr, "width=", 6)) { *sptr++ = ' '; cptr += HtmlSpanAttrib (tptr = cptr); while (tptr < cptr) *sptr++ = *tptr++; continue; } /* absorb the attribute */ cptr += HtmlSpanAttrib (cptr); } continue; } /**************/ /* disallowed */ /**************/ cptr += HtmlSkipTagTo (cptr, ">"); } *sptr = '\0'; return (MessageCollapseLineBreaks (HtmlPtr, 1)); } /*****************************************************************************/ /* Return true if the next characters in the string represent the specified tag. */ int HtmlThisTag ( char *sptr, char *tagptr ) { /*********/ /* begin */ /*********/ /* if oops */ if (*sptr++ != '<') return (FALSE); /* if end of tag */ if (*sptr == '/') sptr++; while (*sptr && *tagptr) if (toupper (*sptr++) != toupper (*tagptr++)) return (FALSE); if (*tagptr || (*sptr != '>' && !isspace(*sptr))) return (FALSE); return (TRUE); } /*****************************************************************************/ /* Return true if the next characters in the string represent the specified end-of-tag. */ int HtmlThisEndTag ( char *sptr, char *tagptr ) { /*********/ /* begin */ /*********/ /* if oops */ if (*sptr++ != '<') return (FALSE); /* if not end of tag */ if (*sptr != '/') return (FALSE); sptr++; while (*sptr && *tagptr) if (toupper (*sptr++) != toupper (*tagptr++)) return (FALSE); if (*tagptr || (*sptr != '>' && !isspace(*sptr))) return (FALSE); return (TRUE); } /*****************************************************************************/ /* Find the specified tag (to close a tag with intervening text) taking into account quoting. Return the number of characters consumed. */ int HtmlSkipTagTo ( char *HtmlPtr, char *CloseTag ) { BOOL InsideTag; int taglen; char *cptr; /*********/ /* begin */ /*********/ if (WatchEnabled) WatchThis (FI_LI, "HtmlSkipTagTo() !AZ", CloseTag); InsideTag = FALSE; cptr = HtmlPtr; taglen = strlen(CloseTag); while (*cptr) { while (*cptr && *cptr != *CloseTag && *cptr != '<' && *cptr != '>' && *cptr != '\"' && *cptr != '\'') cptr++; if (*cptr == '\"') { cptr++; if (!InsideTag) continue; while (*cptr && *cptr != '\"') cptr++; if (*cptr) cptr++; continue; } if (*cptr == '\'') { cptr++; if (!InsideTag) continue; while (*cptr && *cptr != '\'') cptr++; if (*cptr) cptr++; continue; } if (*cptr == '<') InsideTag = TRUE; else if (*cptr == '>') { if (taglen == 1) { cptr += taglen; break; } InsideTag = FALSE; } if (taglen > 1 && strsame (cptr, CloseTag, taglen)) { cptr += taglen; break; } cptr++; } return (cptr-HtmlPtr); } /*****************************************************************************/ /* */ int HtmlSpanAttrib (char *HtmlPtr) { char *cptr; /*********/ /* begin */ /*********/ if (WatchEnabled) WatchThis (FI_LI, "HtmlSpanAttrib()"); cptr = HtmlPtr; while (*cptr) { while (*cptr && !isspace(*cptr) && *cptr != '>' && *cptr != '\"' && *cptr != '\'') cptr++; if (*cptr == '\"') { cptr++; while (*cptr && *cptr != '\"') cptr++; if (*cptr) cptr++; continue; } if (*cptr == '\'') { cptr++; while (*cptr && *cptr != '\'') cptr++; if (*cptr) cptr++; continue; } break; } return (cptr-HtmlPtr); } /*****************************************************************************/ /* Convert numeric HTML entities in a string into their character equivalents (e.g. "&" to '&', "� to 0x00, etc.) Also converts common alphabetic entities (e.g. "&",  ", <", etc.) but not all (any that are not recognised are left untouched). Does not URL-decode! Resultant string is always the same size or smaller so it can be done in-situ! Returns the size of the resultant string. Copied from CgiLibHtmlDeEntify() and modified so that control characters (<=0x1f) are just absorbed. Optional, elementary UTF-8 encoding. */ int HtmlDeEntify ( char *HtmlPtr, char *CharsetPtr ) { // adapted from: https://html.spec.whatwg.org/entities.json struct HtmlEntityStruct { char *ent; int len, val; } HtmlEntity [] = { // { "Æ", sizeof("Æ")-1, 198 }, { "Æ", sizeof("Æ")-1, 198 }, // { "&", sizeof("&")-1, 38 }, { "&", sizeof("&")-1, 38 }, // { "Á", sizeof("Á")-1, 193 }, { "Á", sizeof("Á")-1, 193 }, { "Ă", sizeof("Ă")-1, 258 }, // { "Â", sizeof("Â")-1, 194 }, { "Â", sizeof("Â")-1, 194 }, { "А", sizeof("А")-1, 1040 }, { "𝔄", sizeof("𝔄")-1, 120068 }, // { "À", sizeof("À")-1, 192 }, { "À", sizeof("À")-1, 192 }, { "Α", sizeof("Α")-1, 913 }, { "Ā", sizeof("Ā")-1, 256 }, { "⩓", sizeof("⩓")-1, 10835 }, { "Ą", sizeof("Ą")-1, 260 }, { "𝔸", sizeof("𝔸")-1, 120120 }, { "⁡", sizeof("⁡")-1, 8289 }, // { "Å", sizeof("Å")-1, 197 }, { "Å", sizeof("Å")-1, 197 }, { "𝒜", sizeof("𝒜")-1, 119964 }, { "≔", sizeof("≔")-1, 8788 }, // { "Ã", sizeof("Ã")-1, 195 }, { "Ã", sizeof("Ã")-1, 195 }, // { "Ä", sizeof("Ä")-1, 196 }, { "Ä", sizeof("Ä")-1, 196 }, { "∖", sizeof("∖")-1, 8726 }, { "⫧", sizeof("⫧")-1, 10983 }, { "⌆", sizeof("⌆")-1, 8966 }, { "Б", sizeof("Б")-1, 1041 }, { "∵", sizeof("∵")-1, 8757 }, { "ℬ", sizeof("ℬ")-1, 8492 }, { "Β", sizeof("Β")-1, 914 }, { "𝔅", sizeof("𝔅")-1, 120069 }, { "𝔹", sizeof("𝔹")-1, 120121 }, { "˘", sizeof("˘")-1, 728 }, { "ℬ", sizeof("ℬ")-1, 8492 }, { "≎", sizeof("≎")-1, 8782 }, { "Ч", sizeof("Ч")-1, 1063 }, // { "©", sizeof("©")-1, 169 }, { "©", sizeof("©")-1, 169 }, { "Ć", sizeof("Ć")-1, 262 }, { "⋒", sizeof("⋒")-1, 8914 }, { "ⅅ", sizeof("ⅅ")-1, 8517 }, { "ℭ", sizeof("ℭ")-1, 8493 }, { "Č", sizeof("Č")-1, 268 }, // { "Ç", sizeof("Ç")-1, 199 }, { "Ç", sizeof("Ç")-1, 199 }, { "Ĉ", sizeof("Ĉ")-1, 264 }, { "∰", sizeof("∰")-1, 8752 }, { "Ċ", sizeof("Ċ")-1, 266 }, { "¸", sizeof("¸")-1, 184 }, { "·", sizeof("·")-1, 183 }, { "ℭ", sizeof("ℭ")-1, 8493 }, { "Χ", sizeof("Χ")-1, 935 }, { "⊙", sizeof("⊙")-1, 8857 }, { "⊖", sizeof("⊖")-1, 8854 }, { "⊕", sizeof("⊕")-1, 8853 }, { "⊗", sizeof("⊗")-1, 8855 }, { "∲", sizeof("∲")-1, 8754 }, { "”", sizeof("”")-1, 8221 }, { "’", sizeof("’")-1, 8217 }, { "∷", sizeof("∷")-1, 8759 }, { "⩴", sizeof("⩴")-1, 10868 }, { "≡", sizeof("≡")-1, 8801 }, { "∯", sizeof("∯")-1, 8751 }, { "∮", sizeof("∮")-1, 8750 }, { "ℂ", sizeof("ℂ")-1, 8450 }, { "∐", sizeof("∐")-1, 8720 }, { "∳", sizeof("∳")-1, 8755 }, { "⨯", sizeof("⨯")-1, 10799 }, { "𝒞", sizeof("𝒞")-1, 119966 }, { "⋓", sizeof("⋓")-1, 8915 }, { "≍", sizeof("≍")-1, 8781 }, { "ⅅ", sizeof("ⅅ")-1, 8517 }, { "⤑", sizeof("⤑")-1, 10513 }, { "Ђ", sizeof("Ђ")-1, 1026 }, { "Ѕ", sizeof("Ѕ")-1, 1029 }, { "Џ", sizeof("Џ")-1, 1039 }, { "‡", sizeof("‡")-1, 8225 }, { "↡", sizeof("↡")-1, 8609 }, { "⫤", sizeof("⫤")-1, 10980 }, { "Ď", sizeof("Ď")-1, 270 }, { "Д", sizeof("Д")-1, 1044 }, { "∇", sizeof("∇")-1, 8711 }, { "Δ", sizeof("Δ")-1, 916 }, { "𝔇", sizeof("𝔇")-1, 120071 }, { "´", sizeof("´")-1, 180 }, { "˙", sizeof("˙")-1, 729 }, { "˝", sizeof("˝")-1, 733 }, { "`", sizeof("`")-1, 96 }, { "˜", sizeof("˜")-1, 732 }, { "⋄", sizeof("⋄")-1, 8900 }, { "ⅆ", sizeof("ⅆ")-1, 8518 }, { "𝔻", sizeof("𝔻")-1, 120123 }, { "¨", sizeof("¨")-1, 168 }, { "⃜", sizeof("⃜")-1, 8412 }, { "≐", sizeof("≐")-1, 8784 }, { "∯", sizeof("∯")-1, 8751 }, { "¨", sizeof("¨")-1, 168 }, { "⇓", sizeof("⇓")-1, 8659 }, { "⇐", sizeof("⇐")-1, 8656 }, { "⇔", sizeof("⇔")-1, 8660 }, { "⫤", sizeof("⫤")-1, 10980 }, { "⟸", sizeof("⟸")-1, 10232 }, { "⟺", sizeof("⟺")-1, 10234 }, { "⟹", sizeof("⟹")-1, 10233 }, { "⇒", sizeof("⇒")-1, 8658 }, { "⊨", sizeof("⊨")-1, 8872 }, { "⇑", sizeof("⇑")-1, 8657 }, { "⇕", sizeof("⇕")-1, 8661 }, { "∥", sizeof("∥")-1, 8741 }, { "↓", sizeof("↓")-1, 8595 }, { "⤓", sizeof("⤓")-1, 10515 }, { "⇵", sizeof("⇵")-1, 8693 }, { "̑", sizeof("̑")-1, 785 }, { "⥐", sizeof("⥐")-1, 10576 }, { "⥞", sizeof("⥞")-1, 10590 }, { "↽", sizeof("↽")-1, 8637 }, { "⥖", sizeof("⥖")-1, 10582 }, { "⥟", sizeof("⥟")-1, 10591 }, { "⇁", sizeof("⇁")-1, 8641 }, { "⥗", sizeof("⥗")-1, 10583 }, { "⊤", sizeof("⊤")-1, 8868 }, { "↧", sizeof("↧")-1, 8615 }, { "⇓", sizeof("⇓")-1, 8659 }, { "𝒟", sizeof("𝒟")-1, 119967 }, { "Đ", sizeof("Đ")-1, 272 }, { "Ŋ", sizeof("Ŋ")-1, 330 }, // { "Ð", sizeof("Ð")-1, 208 }, { "Ð", sizeof("Ð")-1, 208 }, // { "É", sizeof("É")-1, 201 }, { "É", sizeof("É")-1, 201 }, { "Ě", sizeof("Ě")-1, 282 }, // { "Ê", sizeof("Ê")-1, 202 }, { "Ê", sizeof("Ê")-1, 202 }, { "Э", sizeof("Э")-1, 1069 }, { "Ė", sizeof("Ė")-1, 278 }, { "𝔈", sizeof("𝔈")-1, 120072 }, // { "È", sizeof("È")-1, 200 }, { "È", sizeof("È")-1, 200 }, { "∈", sizeof("∈")-1, 8712 }, { "Ē", sizeof("Ē")-1, 274 }, { "◻", sizeof("◻")-1, 9723 }, { "▫", sizeof("▫")-1, 9643 }, { "Ę", sizeof("Ę")-1, 280 }, { "𝔼", sizeof("𝔼")-1, 120124 }, { "Ε", sizeof("Ε")-1, 917 }, { "⩵", sizeof("⩵")-1, 10869 }, { "≂", sizeof("≂")-1, 8770 }, { "⇌", sizeof("⇌")-1, 8652 }, { "ℰ", sizeof("ℰ")-1, 8496 }, { "⩳", sizeof("⩳")-1, 10867 }, { "Η", sizeof("Η")-1, 919 }, // { "Ë", sizeof("Ë")-1, 203 }, { "Ë", sizeof("Ë")-1, 203 }, { "∃", sizeof("∃")-1, 8707 }, { "ⅇ", sizeof("ⅇ")-1, 8519 }, { "Ф", sizeof("Ф")-1, 1060 }, { "𝔉", sizeof("𝔉")-1, 120073 }, { "◼", sizeof("◼")-1, 9724 }, { "▪", sizeof("▪")-1, 9642 }, { "𝔽", sizeof("𝔽")-1, 120125 }, { "∀", sizeof("∀")-1, 8704 }, { "ℱ", sizeof("ℱ")-1, 8497 }, { "ℱ", sizeof("ℱ")-1, 8497 }, { "Ѓ", sizeof("Ѓ")-1, 1027 }, // { ">", sizeof(">")-1, 62 }, { ">", sizeof(">")-1, 62 }, { "Γ", sizeof("Γ")-1, 915 }, { "Ϝ", sizeof("Ϝ")-1, 988 }, { "Ğ", sizeof("Ğ")-1, 286 }, { "Ģ", sizeof("Ģ")-1, 290 }, { "Ĝ", sizeof("Ĝ")-1, 284 }, { "Г", sizeof("Г")-1, 1043 }, { "Ġ", sizeof("Ġ")-1, 288 }, { "𝔊", sizeof("𝔊")-1, 120074 }, { "⋙", sizeof("⋙")-1, 8921 }, { "𝔾", sizeof("𝔾")-1, 120126 }, { "≥", sizeof("≥")-1, 8805 }, { "⋛", sizeof("⋛")-1, 8923 }, { "≧", sizeof("≧")-1, 8807 }, { "⪢", sizeof("⪢")-1, 10914 }, { "≷", sizeof("≷")-1, 8823 }, { "⩾", sizeof("⩾")-1, 10878 }, { "≳", sizeof("≳")-1, 8819 }, { "𝒢", sizeof("𝒢")-1, 119970 }, { "≫", sizeof("≫")-1, 8811 }, { "Ъ", sizeof("Ъ")-1, 1066 }, { "ˇ", sizeof("ˇ")-1, 711 }, { "^", sizeof("^")-1, 94 }, { "Ĥ", sizeof("Ĥ")-1, 292 }, { "ℌ", sizeof("ℌ")-1, 8460 }, { "ℋ", sizeof("ℋ")-1, 8459 }, { "ℍ", sizeof("ℍ")-1, 8461 }, { "─", sizeof("─")-1, 9472 }, { "ℋ", sizeof("ℋ")-1, 8459 }, { "Ħ", sizeof("Ħ")-1, 294 }, { "≎", sizeof("≎")-1, 8782 }, { "≏", sizeof("≏")-1, 8783 }, { "Е", sizeof("Е")-1, 1045 }, { "IJ", sizeof("IJ")-1, 306 }, { "Ё", sizeof("Ё")-1, 1025 }, // { "Í", sizeof("Í")-1, 205 }, { "Í", sizeof("Í")-1, 205 }, // { "Î", sizeof("Î")-1, 206 }, { "Î", sizeof("Î")-1, 206 }, { "И", sizeof("И")-1, 1048 }, { "İ", sizeof("İ")-1, 304 }, { "ℑ", sizeof("ℑ")-1, 8465 }, // { "Ì", sizeof("Ì")-1, 204 }, { "Ì", sizeof("Ì")-1, 204 }, { "ℑ", sizeof("ℑ")-1, 8465 }, { "Ī", sizeof("Ī")-1, 298 }, { "ⅈ", sizeof("ⅈ")-1, 8520 }, { "⇒", sizeof("⇒")-1, 8658 }, { "∬", sizeof("∬")-1, 8748 }, { "∫", sizeof("∫")-1, 8747 }, { "⋂", sizeof("⋂")-1, 8898 }, { "⁣", sizeof("⁣")-1, 8291 }, { "⁢", sizeof("⁢")-1, 8290 }, { "Į", sizeof("Į")-1, 302 }, { "𝕀", sizeof("𝕀")-1, 120128 }, { "Ι", sizeof("Ι")-1, 921 }, { "ℐ", sizeof("ℐ")-1, 8464 }, { "Ĩ", sizeof("Ĩ")-1, 296 }, { "І", sizeof("І")-1, 1030 }, // { "Ï", sizeof("Ï")-1, 207 }, { "Ï", sizeof("Ï")-1, 207 }, { "Ĵ", sizeof("Ĵ")-1, 308 }, { "Й", sizeof("Й")-1, 1049 }, { "𝔍", sizeof("𝔍")-1, 120077 }, { "𝕁", sizeof("𝕁")-1, 120129 }, { "𝒥", sizeof("𝒥")-1, 119973 }, { "Ј", sizeof("Ј")-1, 1032 }, { "Є", sizeof("Є")-1, 1028 }, { "Х", sizeof("Х")-1, 1061 }, { "Ќ", sizeof("Ќ")-1, 1036 }, { "Κ", sizeof("Κ")-1, 922 }, { "Ķ", sizeof("Ķ")-1, 310 }, { "К", sizeof("К")-1, 1050 }, { "𝔎", sizeof("𝔎")-1, 120078 }, { "𝕂", sizeof("𝕂")-1, 120130 }, { "𝒦", sizeof("𝒦")-1, 119974 }, { "Љ", sizeof("Љ")-1, 1033 }, // { "<", sizeof("<")-1, 60 }, { "<", sizeof("<")-1, 60 }, { "Ĺ", sizeof("Ĺ")-1, 313 }, { "Λ", sizeof("Λ")-1, 923 }, { "⟪", sizeof("⟪")-1, 10218 }, { "ℒ", sizeof("ℒ")-1, 8466 }, { "↞", sizeof("↞")-1, 8606 }, { "Ľ", sizeof("Ľ")-1, 317 }, { "Ļ", sizeof("Ļ")-1, 315 }, { "Л", sizeof("Л")-1, 1051 }, { "⟨", sizeof("⟨")-1, 10216 }, { "←", sizeof("←")-1, 8592 }, { "⇤", sizeof("⇤")-1, 8676 }, { "⇆", sizeof("⇆")-1, 8646 }, { "⌈", sizeof("⌈")-1, 8968 }, { "⟦", sizeof("⟦")-1, 10214 }, { "⥡", sizeof("⥡")-1, 10593 }, { "⇃", sizeof("⇃")-1, 8643 }, { "⥙", sizeof("⥙")-1, 10585 }, { "⌊", sizeof("⌊")-1, 8970 }, { "↔", sizeof("↔")-1, 8596 }, { "⥎", sizeof("⥎")-1, 10574 }, { "⊣", sizeof("⊣")-1, 8867 }, { "↤", sizeof("↤")-1, 8612 }, { "⥚", sizeof("⥚")-1, 10586 }, { "⊲", sizeof("⊲")-1, 8882 }, { "⧏", sizeof("⧏")-1, 10703 }, { "⊴", sizeof("⊴")-1, 8884 }, { "⥑", sizeof("⥑")-1, 10577 }, { "⥠", sizeof("⥠")-1, 10592 }, { "↿", sizeof("↿")-1, 8639 }, { "⥘", sizeof("⥘")-1, 10584 }, { "↼", sizeof("↼")-1, 8636 }, { "⥒", sizeof("⥒")-1, 10578 }, { "⇐", sizeof("⇐")-1, 8656 }, { "⇔", sizeof("⇔")-1, 8660 }, { "⋚", sizeof("⋚")-1, 8922 }, { "≦", sizeof("≦")-1, 8806 }, { "≶", sizeof("≶")-1, 8822 }, { "⪡", sizeof("⪡")-1, 10913 }, { "⩽", sizeof("⩽")-1, 10877 }, { "≲", sizeof("≲")-1, 8818 }, { "𝔏", sizeof("𝔏")-1, 120079 }, { "⋘", sizeof("⋘")-1, 8920 }, { "⇚", sizeof("⇚")-1, 8666 }, { "Ŀ", sizeof("Ŀ")-1, 319 }, { "⟵", sizeof("⟵")-1, 10229 }, { "⟷", sizeof("⟷")-1, 10231 }, { "⟶", sizeof("⟶")-1, 10230 }, { "⟸", sizeof("⟸")-1, 10232 }, { "⟺", sizeof("⟺")-1, 10234 }, { "⟹", sizeof("⟹")-1, 10233 }, { "𝕃", sizeof("𝕃")-1, 120131 }, { "↙", sizeof("↙")-1, 8601 }, { "↘", sizeof("↘")-1, 8600 }, { "ℒ", sizeof("ℒ")-1, 8466 }, { "↰", sizeof("↰")-1, 8624 }, { "Ł", sizeof("Ł")-1, 321 }, { "≪", sizeof("≪")-1, 8810 }, { "⤅", sizeof("⤅")-1, 10501 }, { "М", sizeof("М")-1, 1052 }, { " ", sizeof(" ")-1, 8287 }, { "ℳ", sizeof("ℳ")-1, 8499 }, { "𝔐", sizeof("𝔐")-1, 120080 }, { "∓", sizeof("∓")-1, 8723 }, { "𝕄", sizeof("𝕄")-1, 120132 }, { "ℳ", sizeof("ℳ")-1, 8499 }, { "Μ", sizeof("Μ")-1, 924 }, { "Њ", sizeof("Њ")-1, 1034 }, { "Ń", sizeof("Ń")-1, 323 }, { "Ň", sizeof("Ň")-1, 327 }, { "Ņ", sizeof("Ņ")-1, 325 }, { "Н", sizeof("Н")-1, 1053 }, { "​", sizeof("​")-1, 8203 }, { "​", sizeof("​")-1, 8203 }, { "​", sizeof("​")-1, 8203 }, { "​", sizeof("​")-1, 8203 }, { "≫", sizeof("≫")-1, 8811 }, { "≪", sizeof("≪")-1, 8810 }, { " ", sizeof(" ")-1, 10 }, { "𝔑", sizeof("𝔑")-1, 120081 }, { "⁠", sizeof("⁠")-1, 8288 }, { " ", sizeof(" ")-1, 160 }, { "ℕ", sizeof("ℕ")-1, 8469 }, { "⫬", sizeof("⫬")-1, 10988 }, { "≢", sizeof("≢")-1, 8802 }, { "≭", sizeof("≭")-1, 8813 }, { "∦", sizeof("∦")-1, 8742 }, { "∉", sizeof("∉")-1, 8713 }, { "≠", sizeof("≠")-1, 8800 }, // { "≂̸", sizeof("≂̸")-1, 8770, 824 }, { "∄", sizeof("∄")-1, 8708 }, { "≯", sizeof("≯")-1, 8815 }, { "≱", sizeof("≱")-1, 8817 }, // { "≧̸", sizeof("≧̸")-1, 8807, 824 }, // { "≫̸", sizeof("≫̸")-1, 8811, 824 }, { "≹", sizeof("≹")-1, 8825 }, // { "⩾̸", sizeof("⩾̸")-1, 10878, 824 }, { "≵", sizeof("≵")-1, 8821 }, // { "≎̸", sizeof("≎̸")-1, 8782, 824 }, // { "≏̸", sizeof("≏̸")-1, 8783, 824 }, { "⋪", sizeof("⋪")-1, 8938 }, // { "⧏̸", sizeof("⧏̸")-1, 10703, 824 }, { "⋬", sizeof("⋬")-1, 8940 }, { "≮", sizeof("≮")-1, 8814 }, { "≰", sizeof("≰")-1, 8816 }, { "≸", sizeof("≸")-1, 8824 }, // { "≪̸", sizeof("≪̸")-1, 8810, 824 }, // { "⩽̸", sizeof("⩽̸")-1, 10877, 824 }, { "≴", sizeof("≴")-1, 8820 }, // { "⪢̸", sizeof("⪢̸")-1, 10914, 824 }, // { "⪡̸", sizeof("⪡̸")-1, 10913, 824 }, { "⊀", sizeof("⊀")-1, 8832 }, // { "⪯̸", sizeof("⪯̸")-1, 10927, 824 }, { "⋠", sizeof("⋠")-1, 8928 }, { "∌", sizeof("∌")-1, 8716 }, { "⋫", sizeof("⋫")-1, 8939 }, // { "⧐̸", sizeof("⧐̸")-1, 10704, 824 }, { "⋭", sizeof("⋭")-1, 8941 }, // { "⊏̸", sizeof("⊏̸")-1, 8847, 824 }, { "⋢", sizeof("⋢")-1, 8930 }, // { "⊐̸", sizeof("⊐̸")-1, 8848, 824 }, { "⋣", sizeof("⋣")-1, 8931 }, // { "⊂⃒", sizeof("⊂⃒")-1, 8834, 8402 }, { "⊈", sizeof("⊈")-1, 8840 }, { "⊁", sizeof("⊁")-1, 8833 }, // { "⪰̸", sizeof("⪰̸")-1, 10928, 824 }, { "⋡", sizeof("⋡")-1, 8929 }, // { "≿̸", sizeof("≿̸")-1, 8831, 824 }, // { "⊃⃒", sizeof("⊃⃒")-1, 8835, 8402 }, { "⊉", sizeof("⊉")-1, 8841 }, { "≁", sizeof("≁")-1, 8769 }, { "≄", sizeof("≄")-1, 8772 }, { "≇", sizeof("≇")-1, 8775 }, { "≉", sizeof("≉")-1, 8777 }, { "∤", sizeof("∤")-1, 8740 }, { "𝒩", sizeof("𝒩")-1, 119977 }, // { "Ñ", sizeof("Ñ")-1, 209 }, { "Ñ", sizeof("Ñ")-1, 209 }, { "Ν", sizeof("Ν")-1, 925 }, { "Œ", sizeof("Œ")-1, 338 }, // { "Ó", sizeof("Ó")-1, 211 }, { "Ó", sizeof("Ó")-1, 211 }, // { "Ô", sizeof("Ô")-1, 212 }, { "Ô", sizeof("Ô")-1, 212 }, { "О", sizeof("О")-1, 1054 }, { "Ő", sizeof("Ő")-1, 336 }, { "𝔒", sizeof("𝔒")-1, 120082 }, // { "Ò", sizeof("Ò")-1, 210 }, { "Ò", sizeof("Ò")-1, 210 }, { "Ō", sizeof("Ō")-1, 332 }, { "Ω", sizeof("Ω")-1, 937 }, { "Ο", sizeof("Ο")-1, 927 }, { "𝕆", sizeof("𝕆")-1, 120134 }, { "“", sizeof("“")-1, 8220 }, { "‘", sizeof("‘")-1, 8216 }, { "⩔", sizeof("⩔")-1, 10836 }, { "𝒪", sizeof("𝒪")-1, 119978 }, // { "Ø", sizeof("Ø")-1, 216 }, { "Ø", sizeof("Ø")-1, 216 }, // { "Õ", sizeof("Õ")-1, 213 }, { "Õ", sizeof("Õ")-1, 213 }, { "⨷", sizeof("⨷")-1, 10807 }, // { "Ö", sizeof("Ö")-1, 214 }, { "Ö", sizeof("Ö")-1, 214 }, { "‾", sizeof("‾")-1, 8254 }, { "⏞", sizeof("⏞")-1, 9182 }, { "⎴", sizeof("⎴")-1, 9140 }, { "⏜", sizeof("⏜")-1, 9180 }, { "∂", sizeof("∂")-1, 8706 }, { "П", sizeof("П")-1, 1055 }, { "𝔓", sizeof("𝔓")-1, 120083 }, { "Φ", sizeof("Φ")-1, 934 }, { "Π", sizeof("Π")-1, 928 }, { "±", sizeof("±")-1, 177 }, { "ℌ", sizeof("ℌ")-1, 8460 }, { "ℙ", sizeof("ℙ")-1, 8473 }, { "⪻", sizeof("⪻")-1, 10939 }, { "≺", sizeof("≺")-1, 8826 }, { "⪯", sizeof("⪯")-1, 10927 }, { "≼", sizeof("≼")-1, 8828 }, { "≾", sizeof("≾")-1, 8830 }, { "″", sizeof("″")-1, 8243 }, { "∏", sizeof("∏")-1, 8719 }, { "∷", sizeof("∷")-1, 8759 }, { "∝", sizeof("∝")-1, 8733 }, { "𝒫", sizeof("𝒫")-1, 119979 }, { "Ψ", sizeof("Ψ")-1, 936 }, // { """, sizeof(""")-1, 34 }, { """, sizeof(""")-1, 34 }, { "𝔔", sizeof("𝔔")-1, 120084 }, { "ℚ", sizeof("ℚ")-1, 8474 }, { "𝒬", sizeof("𝒬")-1, 119980 }, { "⤐", sizeof("⤐")-1, 10512 }, // { "®", sizeof("®")-1, 174 }, { "®", sizeof("®")-1, 174 }, { "Ŕ", sizeof("Ŕ")-1, 340 }, { "⟫", sizeof("⟫")-1, 10219 }, { "↠", sizeof("↠")-1, 8608 }, { "⤖", sizeof("⤖")-1, 10518 }, { "Ř", sizeof("Ř")-1, 344 }, { "Ŗ", sizeof("Ŗ")-1, 342 }, { "Р", sizeof("Р")-1, 1056 }, { "ℜ", sizeof("ℜ")-1, 8476 }, { "∋", sizeof("∋")-1, 8715 }, { "⇋", sizeof("⇋")-1, 8651 }, { "⥯", sizeof("⥯")-1, 10607 }, { "ℜ", sizeof("ℜ")-1, 8476 }, { "Ρ", sizeof("Ρ")-1, 929 }, { "⟩", sizeof("⟩")-1, 10217 }, { "→", sizeof("→")-1, 8594 }, { "⇥", sizeof("⇥")-1, 8677 }, { "⇄", sizeof("⇄")-1, 8644 }, { "⌉", sizeof("⌉")-1, 8969 }, { "⟧", sizeof("⟧")-1, 10215 }, { "⥝", sizeof("⥝")-1, 10589 }, { "⇂", sizeof("⇂")-1, 8642 }, { "⥕", sizeof("⥕")-1, 10581 }, { "⌋", sizeof("⌋")-1, 8971 }, { "⊢", sizeof("⊢")-1, 8866 }, { "↦", sizeof("↦")-1, 8614 }, { "⥛", sizeof("⥛")-1, 10587 }, { "⊳", sizeof("⊳")-1, 8883 }, { "⧐", sizeof("⧐")-1, 10704 }, { "⊵", sizeof("⊵")-1, 8885 }, { "⥏", sizeof("⥏")-1, 10575 }, { "⥜", sizeof("⥜")-1, 10588 }, { "↾", sizeof("↾")-1, 8638 }, { "⥔", sizeof("⥔")-1, 10580 }, { "⇀", sizeof("⇀")-1, 8640 }, { "⥓", sizeof("⥓")-1, 10579 }, { "⇒", sizeof("⇒")-1, 8658 }, { "ℝ", sizeof("ℝ")-1, 8477 }, { "⥰", sizeof("⥰")-1, 10608 }, { "⇛", sizeof("⇛")-1, 8667 }, { "ℛ", sizeof("ℛ")-1, 8475 }, { "↱", sizeof("↱")-1, 8625 }, { "⧴", sizeof("⧴")-1, 10740 }, { "Щ", sizeof("Щ")-1, 1065 }, { "Ш", sizeof("Ш")-1, 1064 }, { "Ь", sizeof("Ь")-1, 1068 }, { "Ś", sizeof("Ś")-1, 346 }, { "⪼", sizeof("⪼")-1, 10940 }, { "Š", sizeof("Š")-1, 352 }, { "Ş", sizeof("Ş")-1, 350 }, { "Ŝ", sizeof("Ŝ")-1, 348 }, { "С", sizeof("С")-1, 1057 }, { "𝔖", sizeof("𝔖")-1, 120086 }, { "↓", sizeof("↓")-1, 8595 }, { "←", sizeof("←")-1, 8592 }, { "→", sizeof("→")-1, 8594 }, { "↑", sizeof("↑")-1, 8593 }, { "Σ", sizeof("Σ")-1, 931 }, { "∘", sizeof("∘")-1, 8728 }, { "𝕊", sizeof("𝕊")-1, 120138 }, { "√", sizeof("√")-1, 8730 }, { "□", sizeof("□")-1, 9633 }, { "⊓", sizeof("⊓")-1, 8851 }, { "⊏", sizeof("⊏")-1, 8847 }, { "⊑", sizeof("⊑")-1, 8849 }, { "⊐", sizeof("⊐")-1, 8848 }, { "⊒", sizeof("⊒")-1, 8850 }, { "⊔", sizeof("⊔")-1, 8852 }, { "𝒮", sizeof("𝒮")-1, 119982 }, { "⋆", sizeof("⋆")-1, 8902 }, { "⋐", sizeof("⋐")-1, 8912 }, { "⋐", sizeof("⋐")-1, 8912 }, { "⊆", sizeof("⊆")-1, 8838 }, { "≻", sizeof("≻")-1, 8827 }, { "⪰", sizeof("⪰")-1, 10928 }, { "≽", sizeof("≽")-1, 8829 }, { "≿", sizeof("≿")-1, 8831 }, { "∋", sizeof("∋")-1, 8715 }, { "∑", sizeof("∑")-1, 8721 }, { "⋑", sizeof("⋑")-1, 8913 }, { "⊃", sizeof("⊃")-1, 8835 }, { "⊇", sizeof("⊇")-1, 8839 }, { "⋑", sizeof("⋑")-1, 8913 }, // { "Þ", sizeof("Þ")-1, 222 }, { "Þ", sizeof("Þ")-1, 222 }, { "™", sizeof("™")-1, 8482 }, { "Ћ", sizeof("Ћ")-1, 1035 }, { "Ц", sizeof("Ц")-1, 1062 }, { " ", sizeof(" ")-1, 9 }, { "Τ", sizeof("Τ")-1, 932 }, { "Ť", sizeof("Ť")-1, 356 }, { "Ţ", sizeof("Ţ")-1, 354 }, { "Т", sizeof("Т")-1, 1058 }, { "𝔗", sizeof("𝔗")-1, 120087 }, { "∴", sizeof("∴")-1, 8756 }, { "Θ", sizeof("Θ")-1, 920 }, // { "  ", sizeof("  ")-1, 8287, 8202 }, { " ", sizeof(" ")-1, 8201 }, { "∼", sizeof("∼")-1, 8764 }, { "≃", sizeof("≃")-1, 8771 }, { "≅", sizeof("≅")-1, 8773 }, { "≈", sizeof("≈")-1, 8776 }, { "𝕋", sizeof("𝕋")-1, 120139 }, { "⃛", sizeof("⃛")-1, 8411 }, { "𝒯", sizeof("𝒯")-1, 119983 }, { "Ŧ", sizeof("Ŧ")-1, 358 }, // { "Ú", sizeof("Ú")-1, 218 }, { "Ú", sizeof("Ú")-1, 218 }, { "↟", sizeof("↟")-1, 8607 }, { "⥉", sizeof("⥉")-1, 10569 }, { "Ў", sizeof("Ў")-1, 1038 }, { "Ŭ", sizeof("Ŭ")-1, 364 }, // { "Û", sizeof("Û")-1, 219 }, { "Û", sizeof("Û")-1, 219 }, { "У", sizeof("У")-1, 1059 }, { "Ű", sizeof("Ű")-1, 368 }, { "𝔘", sizeof("𝔘")-1, 120088 }, // { "Ù", sizeof("Ù")-1, 217 }, { "Ù", sizeof("Ù")-1, 217 }, { "Ū", sizeof("Ū")-1, 362 }, { "_", sizeof("_")-1, 95 }, { "⏟", sizeof("⏟")-1, 9183 }, { "⎵", sizeof("⎵")-1, 9141 }, { "⏝", sizeof("⏝")-1, 9181 }, { "⋃", sizeof("⋃")-1, 8899 }, { "⊎", sizeof("⊎")-1, 8846 }, { "Ų", sizeof("Ų")-1, 370 }, { "𝕌", sizeof("𝕌")-1, 120140 }, { "↑", sizeof("↑")-1, 8593 }, { "⤒", sizeof("⤒")-1, 10514 }, { "⇅", sizeof("⇅")-1, 8645 }, { "↕", sizeof("↕")-1, 8597 }, { "⥮", sizeof("⥮")-1, 10606 }, { "⊥", sizeof("⊥")-1, 8869 }, { "↥", sizeof("↥")-1, 8613 }, { "⇑", sizeof("⇑")-1, 8657 }, { "⇕", sizeof("⇕")-1, 8661 }, { "↖", sizeof("↖")-1, 8598 }, { "↗", sizeof("↗")-1, 8599 }, { "ϒ", sizeof("ϒ")-1, 978 }, { "Υ", sizeof("Υ")-1, 933 }, { "Ů", sizeof("Ů")-1, 366 }, { "𝒰", sizeof("𝒰")-1, 119984 }, { "Ũ", sizeof("Ũ")-1, 360 }, // { "Ü", sizeof("Ü")-1, 220 }, { "Ü", sizeof("Ü")-1, 220 }, { "⊫", sizeof("⊫")-1, 8875 }, { "⫫", sizeof("⫫")-1, 10987 }, { "В", sizeof("В")-1, 1042 }, { "⊩", sizeof("⊩")-1, 8873 }, { "⫦", sizeof("⫦")-1, 10982 }, { "⋁", sizeof("⋁")-1, 8897 }, { "‖", sizeof("‖")-1, 8214 }, { "‖", sizeof("‖")-1, 8214 }, { "∣", sizeof("∣")-1, 8739 }, { "|", sizeof("|")-1, 124 }, { "❘", sizeof("❘")-1, 10072 }, { "≀", sizeof("≀")-1, 8768 }, { " ", sizeof(" ")-1, 8202 }, { "𝔙", sizeof("𝔙")-1, 120089 }, { "𝕍", sizeof("𝕍")-1, 120141 }, { "𝒱", sizeof("𝒱")-1, 119985 }, { "⊪", sizeof("⊪")-1, 8874 }, { "Ŵ", sizeof("Ŵ")-1, 372 }, { "⋀", sizeof("⋀")-1, 8896 }, { "𝔚", sizeof("𝔚")-1, 120090 }, { "𝕎", sizeof("𝕎")-1, 120142 }, { "𝒲", sizeof("𝒲")-1, 119986 }, { "𝔛", sizeof("𝔛")-1, 120091 }, { "Ξ", sizeof("Ξ")-1, 926 }, { "𝕏", sizeof("𝕏")-1, 120143 }, { "𝒳", sizeof("𝒳")-1, 119987 }, { "Я", sizeof("Я")-1, 1071 }, { "Ї", sizeof("Ї")-1, 1031 }, { "Ю", sizeof("Ю")-1, 1070 }, // { "Ý", sizeof("Ý")-1, 221 }, { "Ý", sizeof("Ý")-1, 221 }, { "Ŷ", sizeof("Ŷ")-1, 374 }, { "Ы", sizeof("Ы")-1, 1067 }, { "𝔜", sizeof("𝔜")-1, 120092 }, { "𝕐", sizeof("𝕐")-1, 120144 }, { "𝒴", sizeof("𝒴")-1, 119988 }, { "Ÿ", sizeof("Ÿ")-1, 376 }, { "Ж", sizeof("Ж")-1, 1046 }, { "Ź", sizeof("Ź")-1, 377 }, { "Ž", sizeof("Ž")-1, 381 }, { "З", sizeof("З")-1, 1047 }, { "Ż", sizeof("Ż")-1, 379 }, { "​", sizeof("​")-1, 8203 }, { "Ζ", sizeof("Ζ")-1, 918 }, { "ℨ", sizeof("ℨ")-1, 8488 }, { "ℤ", sizeof("ℤ")-1, 8484 }, { "𝒵", sizeof("𝒵")-1, 119989 }, // { "á", sizeof("á")-1, 225 }, { "á", sizeof("á")-1, 225 }, { "ă", sizeof("ă")-1, 259 }, { "∾", sizeof("∾")-1, 8766 }, // { "∾̳", sizeof("∾̳")-1, 8766, 819 }, { "∿", sizeof("∿")-1, 8767 }, // { "â", sizeof("â")-1, 226 }, { "â", sizeof("â")-1, 226 }, // { "´", sizeof("´")-1, 180 }, { "´", sizeof("´")-1, 180 }, { "а", sizeof("а")-1, 1072 }, // { "æ", sizeof("æ")-1, 230 }, { "æ", sizeof("æ")-1, 230 }, { "⁡", sizeof("⁡")-1, 8289 }, { "𝔞", sizeof("𝔞")-1, 120094 }, // { "à", sizeof("à")-1, 224 }, { "à", sizeof("à")-1, 224 }, { "ℵ", sizeof("ℵ")-1, 8501 }, { "ℵ", sizeof("ℵ")-1, 8501 }, { "α", sizeof("α")-1, 945 }, { "ā", sizeof("ā")-1, 257 }, { "⨿", sizeof("⨿")-1, 10815 }, // { "&", sizeof("&")-1, 38 }, { "&", sizeof("&")-1, 38 }, { "∧", sizeof("∧")-1, 8743 }, { "⩕", sizeof("⩕")-1, 10837 }, { "⩜", sizeof("⩜")-1, 10844 }, { "⩘", sizeof("⩘")-1, 10840 }, { "⩚", sizeof("⩚")-1, 10842 }, { "∠", sizeof("∠")-1, 8736 }, { "⦤", sizeof("⦤")-1, 10660 }, { "∠", sizeof("∠")-1, 8736 }, { "∡", sizeof("∡")-1, 8737 }, { "⦨", sizeof("⦨")-1, 10664 }, { "⦩", sizeof("⦩")-1, 10665 }, { "⦪", sizeof("⦪")-1, 10666 }, { "⦫", sizeof("⦫")-1, 10667 }, { "⦬", sizeof("⦬")-1, 10668 }, { "⦭", sizeof("⦭")-1, 10669 }, { "⦮", sizeof("⦮")-1, 10670 }, { "⦯", sizeof("⦯")-1, 10671 }, { "∟", sizeof("∟")-1, 8735 }, { "⊾", sizeof("⊾")-1, 8894 }, { "⦝", sizeof("⦝")-1, 10653 }, { "∢", sizeof("∢")-1, 8738 }, { "Å", sizeof("Å")-1, 197 }, { "⍼", sizeof("⍼")-1, 9084 }, { "ą", sizeof("ą")-1, 261 }, { "𝕒", sizeof("𝕒")-1, 120146 }, { "≈", sizeof("≈")-1, 8776 }, { "⩰", sizeof("⩰")-1, 10864 }, { "⩯", sizeof("⩯")-1, 10863 }, { "≊", sizeof("≊")-1, 8778 }, { "≋", sizeof("≋")-1, 8779 }, { "'", sizeof("'")-1, 39 }, { "≈", sizeof("≈")-1, 8776 }, { "≊", sizeof("≊")-1, 8778 }, // { "å", sizeof("å")-1, 229 }, { "å", sizeof("å")-1, 229 }, { "𝒶", sizeof("𝒶")-1, 119990 }, { "*", sizeof("*")-1, 42 }, { "≈", sizeof("≈")-1, 8776 }, { "≍", sizeof("≍")-1, 8781 }, // { "ã", sizeof("ã")-1, 227 }, { "ã", sizeof("ã")-1, 227 }, // { "ä", sizeof("ä")-1, 228 }, { "ä", sizeof("ä")-1, 228 }, { "∳", sizeof("∳")-1, 8755 }, { "⨑", sizeof("⨑")-1, 10769 }, { "⫭", sizeof("⫭")-1, 10989 }, { "≌", sizeof("≌")-1, 8780 }, { "϶", sizeof("϶")-1, 1014 }, { "‵", sizeof("‵")-1, 8245 }, { "∽", sizeof("∽")-1, 8765 }, { "⋍", sizeof("⋍")-1, 8909 }, { "⊽", sizeof("⊽")-1, 8893 }, { "⌅", sizeof("⌅")-1, 8965 }, { "⌅", sizeof("⌅")-1, 8965 }, { "⎵", sizeof("⎵")-1, 9141 }, { "⎶", sizeof("⎶")-1, 9142 }, { "≌", sizeof("≌")-1, 8780 }, { "б", sizeof("б")-1, 1073 }, { "„", sizeof("„")-1, 8222 }, { "∵", sizeof("∵")-1, 8757 }, { "∵", sizeof("∵")-1, 8757 }, { "⦰", sizeof("⦰")-1, 10672 }, { "϶", sizeof("϶")-1, 1014 }, { "ℬ", sizeof("ℬ")-1, 8492 }, { "β", sizeof("β")-1, 946 }, { "ℶ", sizeof("ℶ")-1, 8502 }, { "≬", sizeof("≬")-1, 8812 }, { "𝔟", sizeof("𝔟")-1, 120095 }, { "⋂", sizeof("⋂")-1, 8898 }, { "◯", sizeof("◯")-1, 9711 }, { "⋃", sizeof("⋃")-1, 8899 }, { "⨀", sizeof("⨀")-1, 10752 }, { "⨁", sizeof("⨁")-1, 10753 }, { "⨂", sizeof("⨂")-1, 10754 }, { "⨆", sizeof("⨆")-1, 10758 }, { "★", sizeof("★")-1, 9733 }, { "▽", sizeof("▽")-1, 9661 }, { "△", sizeof("△")-1, 9651 }, { "⨄", sizeof("⨄")-1, 10756 }, { "⋁", sizeof("⋁")-1, 8897 }, { "⋀", sizeof("⋀")-1, 8896 }, { "⤍", sizeof("⤍")-1, 10509 }, { "⧫", sizeof("⧫")-1, 10731 }, { "▪", sizeof("▪")-1, 9642 }, { "▴", sizeof("▴")-1, 9652 }, { "▾", sizeof("▾")-1, 9662 }, { "◂", sizeof("◂")-1, 9666 }, { "▸", sizeof("▸")-1, 9656 }, { "␣", sizeof("␣")-1, 9251 }, { "▒", sizeof("▒")-1, 9618 }, { "░", sizeof("░")-1, 9617 }, { "▓", sizeof("▓")-1, 9619 }, { "█", sizeof("█")-1, 9608 }, // { "=⃥", sizeof("=⃥")-1, 61, 8421 }, // { "≡⃥", sizeof("≡⃥")-1, 8801, 8421 }, { "⌐", sizeof("⌐")-1, 8976 }, { "𝕓", sizeof("𝕓")-1, 120147 }, { "⊥", sizeof("⊥")-1, 8869 }, { "⊥", sizeof("⊥")-1, 8869 }, { "⋈", sizeof("⋈")-1, 8904 }, { "╗", sizeof("╗")-1, 9559 }, { "╔", sizeof("╔")-1, 9556 }, { "╖", sizeof("╖")-1, 9558 }, { "╓", sizeof("╓")-1, 9555 }, { "═", sizeof("═")-1, 9552 }, { "╦", sizeof("╦")-1, 9574 }, { "╩", sizeof("╩")-1, 9577 }, { "╤", sizeof("╤")-1, 9572 }, { "╧", sizeof("╧")-1, 9575 }, { "╝", sizeof("╝")-1, 9565 }, { "╚", sizeof("╚")-1, 9562 }, { "╜", sizeof("╜")-1, 9564 }, { "╙", sizeof("╙")-1, 9561 }, { "║", sizeof("║")-1, 9553 }, { "╬", sizeof("╬")-1, 9580 }, { "╣", sizeof("╣")-1, 9571 }, { "╠", sizeof("╠")-1, 9568 }, { "╫", sizeof("╫")-1, 9579 }, { "╢", sizeof("╢")-1, 9570 }, { "╟", sizeof("╟")-1, 9567 }, { "⧉", sizeof("⧉")-1, 10697 }, { "╕", sizeof("╕")-1, 9557 }, { "╒", sizeof("╒")-1, 9554 }, { "┐", sizeof("┐")-1, 9488 }, { "┌", sizeof("┌")-1, 9484 }, { "─", sizeof("─")-1, 9472 }, { "╥", sizeof("╥")-1, 9573 }, { "╨", sizeof("╨")-1, 9576 }, { "┬", sizeof("┬")-1, 9516 }, { "┴", sizeof("┴")-1, 9524 }, { "⊟", sizeof("⊟")-1, 8863 }, { "⊞", sizeof("⊞")-1, 8862 }, { "⊠", sizeof("⊠")-1, 8864 }, { "╛", sizeof("╛")-1, 9563 }, { "╘", sizeof("╘")-1, 9560 }, { "┘", sizeof("┘")-1, 9496 }, { "└", sizeof("└")-1, 9492 }, { "│", sizeof("│")-1, 9474 }, { "╪", sizeof("╪")-1, 9578 }, { "╡", sizeof("╡")-1, 9569 }, { "╞", sizeof("╞")-1, 9566 }, { "┼", sizeof("┼")-1, 9532 }, { "┤", sizeof("┤")-1, 9508 }, { "├", sizeof("├")-1, 9500 }, { "‵", sizeof("‵")-1, 8245 }, { "˘", sizeof("˘")-1, 728 }, // { "¦", sizeof("¦")-1, 166 }, { "¦", sizeof("¦")-1, 166 }, { "𝒷", sizeof("𝒷")-1, 119991 }, { "⁏", sizeof("⁏")-1, 8271 }, { "∽", sizeof("∽")-1, 8765 }, { "⋍", sizeof("⋍")-1, 8909 }, { "\", sizeof("\")-1, 92 }, { "⧅", sizeof("⧅")-1, 10693 }, { "⟈", sizeof("⟈")-1, 10184 }, { "•", sizeof("•")-1, 8226 }, { "•", sizeof("•")-1, 8226 }, { "≎", sizeof("≎")-1, 8782 }, { "⪮", sizeof("⪮")-1, 10926 }, { "≏", sizeof("≏")-1, 8783 }, { "≏", sizeof("≏")-1, 8783 }, { "ć", sizeof("ć")-1, 263 }, { "∩", sizeof("∩")-1, 8745 }, { "⩄", sizeof("⩄")-1, 10820 }, { "⩉", sizeof("⩉")-1, 10825 }, { "⩋", sizeof("⩋")-1, 10827 }, { "⩇", sizeof("⩇")-1, 10823 }, { "⩀", sizeof("⩀")-1, 10816 }, // { "∩︀", sizeof("∩︀")-1, 8745, 65024 }, { "⁁", sizeof("⁁")-1, 8257 }, { "ˇ", sizeof("ˇ")-1, 711 }, { "⩍", sizeof("⩍")-1, 10829 }, { "č", sizeof("č")-1, 269 }, // { "ç", sizeof("ç")-1, 231 }, { "ç", sizeof("ç")-1, 231 }, { "ĉ", sizeof("ĉ")-1, 265 }, { "⩌", sizeof("⩌")-1, 10828 }, { "⩐", sizeof("⩐")-1, 10832 }, { "ċ", sizeof("ċ")-1, 267 }, // { "¸", sizeof("¸")-1, 184 }, { "¸", sizeof("¸")-1, 184 }, { "⦲", sizeof("⦲")-1, 10674 }, // { "¢", sizeof("¢")-1, 162 }, { "¢", sizeof("¢")-1, 162 }, { "·", sizeof("·")-1, 183 }, { "𝔠", sizeof("𝔠")-1, 120096 }, { "ч", sizeof("ч")-1, 1095 }, { "✓", sizeof("✓")-1, 10003 }, { "✓", sizeof("✓")-1, 10003 }, { "χ", sizeof("χ")-1, 967 }, { "○", sizeof("○")-1, 9675 }, { "⧃", sizeof("⧃")-1, 10691 }, { "ˆ", sizeof("ˆ")-1, 710 }, { "≗", sizeof("≗")-1, 8791 }, { "↺", sizeof("↺")-1, 8634 }, { "↻", sizeof("↻")-1, 8635 }, { "®", sizeof("®")-1, 174 }, { "Ⓢ", sizeof("Ⓢ")-1, 9416 }, { "⊛", sizeof("⊛")-1, 8859 }, { "⊚", sizeof("⊚")-1, 8858 }, { "⊝", sizeof("⊝")-1, 8861 }, { "≗", sizeof("≗")-1, 8791 }, { "⨐", sizeof("⨐")-1, 10768 }, { "⫯", sizeof("⫯")-1, 10991 }, { "⧂", sizeof("⧂")-1, 10690 }, { "♣", sizeof("♣")-1, 9827 }, { "♣", sizeof("♣")-1, 9827 }, { ":", sizeof(":")-1, 58 }, { "≔", sizeof("≔")-1, 8788 }, { "≔", sizeof("≔")-1, 8788 }, { ",", sizeof(",")-1, 44 }, { "@", sizeof("@")-1, 64 }, { "∁", sizeof("∁")-1, 8705 }, { "∘", sizeof("∘")-1, 8728 }, { "∁", sizeof("∁")-1, 8705 }, { "ℂ", sizeof("ℂ")-1, 8450 }, { "≅", sizeof("≅")-1, 8773 }, { "⩭", sizeof("⩭")-1, 10861 }, { "∮", sizeof("∮")-1, 8750 }, { "𝕔", sizeof("𝕔")-1, 120148 }, { "∐", sizeof("∐")-1, 8720 }, // { "©", sizeof("©")-1, 169 }, { "©", sizeof("©")-1, 169 }, { "℗", sizeof("℗")-1, 8471 }, { "↵", sizeof("↵")-1, 8629 }, { "✗", sizeof("✗")-1, 10007 }, { "𝒸", sizeof("𝒸")-1, 119992 }, { "⫏", sizeof("⫏")-1, 10959 }, { "⫑", sizeof("⫑")-1, 10961 }, { "⫐", sizeof("⫐")-1, 10960 }, { "⫒", sizeof("⫒")-1, 10962 }, { "⋯", sizeof("⋯")-1, 8943 }, { "⤸", sizeof("⤸")-1, 10552 }, { "⤵", sizeof("⤵")-1, 10549 }, { "⋞", sizeof("⋞")-1, 8926 }, { "⋟", sizeof("⋟")-1, 8927 }, { "↶", sizeof("↶")-1, 8630 }, { "⤽", sizeof("⤽")-1, 10557 }, { "∪", sizeof("∪")-1, 8746 }, { "⩈", sizeof("⩈")-1, 10824 }, { "⩆", sizeof("⩆")-1, 10822 }, { "⩊", sizeof("⩊")-1, 10826 }, { "⊍", sizeof("⊍")-1, 8845 }, { "⩅", sizeof("⩅")-1, 10821 }, // { "∪︀", sizeof("∪︀")-1, 8746, 65024 }, { "↷", sizeof("↷")-1, 8631 }, { "⤼", sizeof("⤼")-1, 10556 }, { "⋞", sizeof("⋞")-1, 8926 }, { "⋟", sizeof("⋟")-1, 8927 }, { "⋎", sizeof("⋎")-1, 8910 }, { "⋏", sizeof("⋏")-1, 8911 }, // { "¤", sizeof("¤")-1, 164 }, { "¤", sizeof("¤")-1, 164 }, { "↶", sizeof("↶")-1, 8630 }, { "↷", sizeof("↷")-1, 8631 }, { "⋎", sizeof("⋎")-1, 8910 }, { "⋏", sizeof("⋏")-1, 8911 }, { "∲", sizeof("∲")-1, 8754 }, { "∱", sizeof("∱")-1, 8753 }, { "⌭", sizeof("⌭")-1, 9005 }, { "⇓", sizeof("⇓")-1, 8659 }, { "⥥", sizeof("⥥")-1, 10597 }, { "†", sizeof("†")-1, 8224 }, { "ℸ", sizeof("ℸ")-1, 8504 }, { "↓", sizeof("↓")-1, 8595 }, { "‐", sizeof("‐")-1, 8208 }, { "⊣", sizeof("⊣")-1, 8867 }, { "⤏", sizeof("⤏")-1, 10511 }, { "˝", sizeof("˝")-1, 733 }, { "ď", sizeof("ď")-1, 271 }, { "д", sizeof("д")-1, 1076 }, { "ⅆ", sizeof("ⅆ")-1, 8518 }, { "‡", sizeof("‡")-1, 8225 }, { "⇊", sizeof("⇊")-1, 8650 }, { "⩷", sizeof("⩷")-1, 10871 }, // { "°", sizeof("°")-1, 176 }, { "°", sizeof("°")-1, 176 }, { "δ", sizeof("δ")-1, 948 }, { "⦱", sizeof("⦱")-1, 10673 }, { "⥿", sizeof("⥿")-1, 10623 }, { "𝔡", sizeof("𝔡")-1, 120097 }, { "⇃", sizeof("⇃")-1, 8643 }, { "⇂", sizeof("⇂")-1, 8642 }, { "⋄", sizeof("⋄")-1, 8900 }, { "⋄", sizeof("⋄")-1, 8900 }, { "♦", sizeof("♦")-1, 9830 }, { "♦", sizeof("♦")-1, 9830 }, { "¨", sizeof("¨")-1, 168 }, { "ϝ", sizeof("ϝ")-1, 989 }, { "⋲", sizeof("⋲")-1, 8946 }, { "÷", sizeof("÷")-1, 247 }, // { "÷", sizeof("÷")-1, 247 }, { "÷", sizeof("÷")-1, 247 }, { "⋇", sizeof("⋇")-1, 8903 }, { "⋇", sizeof("⋇")-1, 8903 }, { "ђ", sizeof("ђ")-1, 1106 }, { "⌞", sizeof("⌞")-1, 8990 }, { "⌍", sizeof("⌍")-1, 8973 }, { "$", sizeof("$")-1, 36 }, { "𝕕", sizeof("𝕕")-1, 120149 }, { "˙", sizeof("˙")-1, 729 }, { "≐", sizeof("≐")-1, 8784 }, { "≑", sizeof("≑")-1, 8785 }, { "∸", sizeof("∸")-1, 8760 }, { "∔", sizeof("∔")-1, 8724 }, { "⊡", sizeof("⊡")-1, 8865 }, { "⌆", sizeof("⌆")-1, 8966 }, { "↓", sizeof("↓")-1, 8595 }, { "⇊", sizeof("⇊")-1, 8650 }, { "⇃", sizeof("⇃")-1, 8643 }, { "⇂", sizeof("⇂")-1, 8642 }, { "⤐", sizeof("⤐")-1, 10512 }, { "⌟", sizeof("⌟")-1, 8991 }, { "⌌", sizeof("⌌")-1, 8972 }, { "𝒹", sizeof("𝒹")-1, 119993 }, { "ѕ", sizeof("ѕ")-1, 1109 }, { "⧶", sizeof("⧶")-1, 10742 }, { "đ", sizeof("đ")-1, 273 }, { "⋱", sizeof("⋱")-1, 8945 }, { "▿", sizeof("▿")-1, 9663 }, { "▾", sizeof("▾")-1, 9662 }, { "⇵", sizeof("⇵")-1, 8693 }, { "⥯", sizeof("⥯")-1, 10607 }, { "⦦", sizeof("⦦")-1, 10662 }, { "џ", sizeof("џ")-1, 1119 }, { "⟿", sizeof("⟿")-1, 10239 }, { "⩷", sizeof("⩷")-1, 10871 }, { "≑", sizeof("≑")-1, 8785 }, // { "é", sizeof("é")-1, 233 }, { "é", sizeof("é")-1, 233 }, { "⩮", sizeof("⩮")-1, 10862 }, { "ě", sizeof("ě")-1, 283 }, { "≖", sizeof("≖")-1, 8790 }, // { "ê", sizeof("ê")-1, 234 }, { "ê", sizeof("ê")-1, 234 }, { "≕", sizeof("≕")-1, 8789 }, { "э", sizeof("э")-1, 1101 }, { "ė", sizeof("ė")-1, 279 }, { "ⅇ", sizeof("ⅇ")-1, 8519 }, { "≒", sizeof("≒")-1, 8786 }, { "𝔢", sizeof("𝔢")-1, 120098 }, { "⪚", sizeof("⪚")-1, 10906 }, // { "è", sizeof("è")-1, 232 }, { "è", sizeof("è")-1, 232 }, { "⪖", sizeof("⪖")-1, 10902 }, { "⪘", sizeof("⪘")-1, 10904 }, { "⪙", sizeof("⪙")-1, 10905 }, { "⏧", sizeof("⏧")-1, 9191 }, { "ℓ", sizeof("ℓ")-1, 8467 }, { "⪕", sizeof("⪕")-1, 10901 }, { "⪗", sizeof("⪗")-1, 10903 }, { "ē", sizeof("ē")-1, 275 }, { "∅", sizeof("∅")-1, 8709 }, { "∅", sizeof("∅")-1, 8709 }, { "∅", sizeof("∅")-1, 8709 }, { " ", sizeof(" ")-1, 8196 }, { " ", sizeof(" ")-1, 8197 }, { " ", sizeof(" ")-1, 8195 }, { "ŋ", sizeof("ŋ")-1, 331 }, { " ", sizeof(" ")-1, 8194 }, { "ę", sizeof("ę")-1, 281 }, { "𝕖", sizeof("𝕖")-1, 120150 }, { "⋕", sizeof("⋕")-1, 8917 }, { "⧣", sizeof("⧣")-1, 10723 }, { "⩱", sizeof("⩱")-1, 10865 }, { "ε", sizeof("ε")-1, 949 }, { "ε", sizeof("ε")-1, 949 }, { "ϵ", sizeof("ϵ")-1, 1013 }, { "≖", sizeof("≖")-1, 8790 }, { "≕", sizeof("≕")-1, 8789 }, { "≂", sizeof("≂")-1, 8770 }, { "⪖", sizeof("⪖")-1, 10902 }, { "⪕", sizeof("⪕")-1, 10901 }, { "=", sizeof("=")-1, 61 }, { "≟", sizeof("≟")-1, 8799 }, { "≡", sizeof("≡")-1, 8801 }, { "⩸", sizeof("⩸")-1, 10872 }, { "⧥", sizeof("⧥")-1, 10725 }, { "≓", sizeof("≓")-1, 8787 }, { "⥱", sizeof("⥱")-1, 10609 }, { "ℯ", sizeof("ℯ")-1, 8495 }, { "≐", sizeof("≐")-1, 8784 }, { "≂", sizeof("≂")-1, 8770 }, { "η", sizeof("η")-1, 951 }, // { "ð", sizeof("ð")-1, 240 }, { "ð", sizeof("ð")-1, 240 }, // { "ë", sizeof("ë")-1, 235 }, { "ë", sizeof("ë")-1, 235 }, { "€", sizeof("€")-1, 8364 }, { "!", sizeof("!")-1, 33 }, { "∃", sizeof("∃")-1, 8707 }, { "ℰ", sizeof("ℰ")-1, 8496 }, { "ⅇ", sizeof("ⅇ")-1, 8519 }, { "≒", sizeof("≒")-1, 8786 }, { "ф", sizeof("ф")-1, 1092 }, { "♀", sizeof("♀")-1, 9792 }, { "ffi", sizeof("ffi")-1, 64259 }, { "ff", sizeof("ff")-1, 64256 }, { "ffl", sizeof("ffl")-1, 64260 }, { "𝔣", sizeof("𝔣")-1, 120099 }, { "fi", sizeof("fi")-1, 64257 }, // { "fj", sizeof("fj")-1, 102, 106 }, { "♭", sizeof("♭")-1, 9837 }, { "fl", sizeof("fl")-1, 64258 }, { "▱", sizeof("▱")-1, 9649 }, { "ƒ", sizeof("ƒ")-1, 402 }, { "𝕗", sizeof("𝕗")-1, 120151 }, { "∀", sizeof("∀")-1, 8704 }, { "⋔", sizeof("⋔")-1, 8916 }, { "⫙", sizeof("⫙")-1, 10969 }, { "⨍", sizeof("⨍")-1, 10765 }, // { "½", sizeof("½")-1, 189 }, { "½", sizeof("½")-1, 189 }, { "⅓", sizeof("⅓")-1, 8531 }, // { "¼", sizeof("¼")-1, 188 }, { "¼", sizeof("¼")-1, 188 }, { "⅕", sizeof("⅕")-1, 8533 }, { "⅙", sizeof("⅙")-1, 8537 }, { "⅛", sizeof("⅛")-1, 8539 }, { "⅔", sizeof("⅔")-1, 8532 }, { "⅖", sizeof("⅖")-1, 8534 }, // { "¾", sizeof("¾")-1, 190 }, { "¾", sizeof("¾")-1, 190 }, { "⅗", sizeof("⅗")-1, 8535 }, { "⅜", sizeof("⅜")-1, 8540 }, { "⅘", sizeof("⅘")-1, 8536 }, { "⅚", sizeof("⅚")-1, 8538 }, { "⅝", sizeof("⅝")-1, 8541 }, { "⅞", sizeof("⅞")-1, 8542 }, { "⁄", sizeof("⁄")-1, 8260 }, { "⌢", sizeof("⌢")-1, 8994 }, { "𝒻", sizeof("𝒻")-1, 119995 }, { "≧", sizeof("≧")-1, 8807 }, { "⪌", sizeof("⪌")-1, 10892 }, { "ǵ", sizeof("ǵ")-1, 501 }, { "γ", sizeof("γ")-1, 947 }, { "ϝ", sizeof("ϝ")-1, 989 }, { "⪆", sizeof("⪆")-1, 10886 }, { "ğ", sizeof("ğ")-1, 287 }, { "ĝ", sizeof("ĝ")-1, 285 }, { "г", sizeof("г")-1, 1075 }, { "ġ", sizeof("ġ")-1, 289 }, { "≥", sizeof("≥")-1, 8805 }, { "⋛", sizeof("⋛")-1, 8923 }, { "≥", sizeof("≥")-1, 8805 }, { "≧", sizeof("≧")-1, 8807 }, { "⩾", sizeof("⩾")-1, 10878 }, { "⩾", sizeof("⩾")-1, 10878 }, { "⪩", sizeof("⪩")-1, 10921 }, { "⪀", sizeof("⪀")-1, 10880 }, { "⪂", sizeof("⪂")-1, 10882 }, { "⪄", sizeof("⪄")-1, 10884 }, // { "⋛︀", sizeof("⋛︀")-1, 8923, 65024 }, { "⪔", sizeof("⪔")-1, 10900 }, { "𝔤", sizeof("𝔤")-1, 120100 }, { "≫", sizeof("≫")-1, 8811 }, { "⋙", sizeof("⋙")-1, 8921 }, { "ℷ", sizeof("ℷ")-1, 8503 }, { "ѓ", sizeof("ѓ")-1, 1107 }, { "≷", sizeof("≷")-1, 8823 }, { "⪒", sizeof("⪒")-1, 10898 }, { "⪥", sizeof("⪥")-1, 10917 }, { "⪤", sizeof("⪤")-1, 10916 }, { "≩", sizeof("≩")-1, 8809 }, { "⪊", sizeof("⪊")-1, 10890 }, { "⪊", sizeof("⪊")-1, 10890 }, { "⪈", sizeof("⪈")-1, 10888 }, { "⪈", sizeof("⪈")-1, 10888 }, { "≩", sizeof("≩")-1, 8809 }, { "⋧", sizeof("⋧")-1, 8935 }, { "𝕘", sizeof("𝕘")-1, 120152 }, { "`", sizeof("`")-1, 96 }, { "ℊ", sizeof("ℊ")-1, 8458 }, { "≳", sizeof("≳")-1, 8819 }, { "⪎", sizeof("⪎")-1, 10894 }, { "⪐", sizeof("⪐")-1, 10896 }, // { ">", sizeof(">")-1, 62 }, { ">", sizeof(">")-1, 62 }, { "⪧", sizeof("⪧")-1, 10919 }, { "⩺", sizeof("⩺")-1, 10874 }, { "⋗", sizeof("⋗")-1, 8919 }, { "⦕", sizeof("⦕")-1, 10645 }, { "⩼", sizeof("⩼")-1, 10876 }, { "⪆", sizeof("⪆")-1, 10886 }, { "⥸", sizeof("⥸")-1, 10616 }, { "⋗", sizeof("⋗")-1, 8919 }, { "⋛", sizeof("⋛")-1, 8923 }, { "⪌", sizeof("⪌")-1, 10892 }, { "≷", sizeof("≷")-1, 8823 }, { "≳", sizeof("≳")-1, 8819 }, // { "≩︀", sizeof("≩︀")-1, 8809, 65024 }, // { "≩︀", sizeof("≩︀")-1, 8809, 65024 }, { "⇔", sizeof("⇔")-1, 8660 }, { " ", sizeof(" ")-1, 8202 }, { "½", sizeof("½")-1, 189 }, { "ℋ", sizeof("ℋ")-1, 8459 }, { "ъ", sizeof("ъ")-1, 1098 }, { "↔", sizeof("↔")-1, 8596 }, { "⥈", sizeof("⥈")-1, 10568 }, { "↭", sizeof("↭")-1, 8621 }, { "ℏ", sizeof("ℏ")-1, 8463 }, { "ĥ", sizeof("ĥ")-1, 293 }, { "♥", sizeof("♥")-1, 9829 }, { "♥", sizeof("♥")-1, 9829 }, { "…", sizeof("…")-1, 8230 }, { "⊹", sizeof("⊹")-1, 8889 }, { "𝔥", sizeof("𝔥")-1, 120101 }, { "⤥", sizeof("⤥")-1, 10533 }, { "⤦", sizeof("⤦")-1, 10534 }, { "⇿", sizeof("⇿")-1, 8703 }, { "∻", sizeof("∻")-1, 8763 }, { "↩", sizeof("↩")-1, 8617 }, { "↪", sizeof("↪")-1, 8618 }, { "𝕙", sizeof("𝕙")-1, 120153 }, { "―", sizeof("―")-1, 8213 }, { "𝒽", sizeof("𝒽")-1, 119997 }, { "ℏ", sizeof("ℏ")-1, 8463 }, { "ħ", sizeof("ħ")-1, 295 }, { "⁃", sizeof("⁃")-1, 8259 }, { "‐", sizeof("‐")-1, 8208 }, // { "í", sizeof("í")-1, 237 }, { "í", sizeof("í")-1, 237 }, { "⁣", sizeof("⁣")-1, 8291 }, // { "î", sizeof("î")-1, 238 }, { "î", sizeof("î")-1, 238 }, { "и", sizeof("и")-1, 1080 }, { "е", sizeof("е")-1, 1077 }, // { "¡", sizeof("¡")-1, 161 }, { "¡", sizeof("¡")-1, 161 }, { "⇔", sizeof("⇔")-1, 8660 }, { "𝔦", sizeof("𝔦")-1, 120102 }, // { "ì", sizeof("ì")-1, 236 }, { "ì", sizeof("ì")-1, 236 }, { "ⅈ", sizeof("ⅈ")-1, 8520 }, { "⨌", sizeof("⨌")-1, 10764 }, { "∭", sizeof("∭")-1, 8749 }, { "⧜", sizeof("⧜")-1, 10716 }, { "℩", sizeof("℩")-1, 8489 }, { "ij", sizeof("ij")-1, 307 }, { "ī", sizeof("ī")-1, 299 }, { "ℑ", sizeof("ℑ")-1, 8465 }, { "ℐ", sizeof("ℐ")-1, 8464 }, { "ℑ", sizeof("ℑ")-1, 8465 }, { "ı", sizeof("ı")-1, 305 }, { "⊷", sizeof("⊷")-1, 8887 }, { "Ƶ", sizeof("Ƶ")-1, 437 }, { "∈", sizeof("∈")-1, 8712 }, { "℅", sizeof("℅")-1, 8453 }, { "∞", sizeof("∞")-1, 8734 }, { "⧝", sizeof("⧝")-1, 10717 }, { "ı", sizeof("ı")-1, 305 }, { "∫", sizeof("∫")-1, 8747 }, { "⊺", sizeof("⊺")-1, 8890 }, { "ℤ", sizeof("ℤ")-1, 8484 }, { "⊺", sizeof("⊺")-1, 8890 }, { "⨗", sizeof("⨗")-1, 10775 }, { "⨼", sizeof("⨼")-1, 10812 }, { "ё", sizeof("ё")-1, 1105 }, { "į", sizeof("į")-1, 303 }, { "𝕚", sizeof("𝕚")-1, 120154 }, { "ι", sizeof("ι")-1, 953 }, { "⨼", sizeof("⨼")-1, 10812 }, // { "¿", sizeof("¿")-1, 191 }, { "¿", sizeof("¿")-1, 191 }, { "𝒾", sizeof("𝒾")-1, 119998 }, { "∈", sizeof("∈")-1, 8712 }, { "⋹", sizeof("⋹")-1, 8953 }, { "⋵", sizeof("⋵")-1, 8949 }, { "⋴", sizeof("⋴")-1, 8948 }, { "⋳", sizeof("⋳")-1, 8947 }, { "∈", sizeof("∈")-1, 8712 }, { "⁢", sizeof("⁢")-1, 8290 }, { "ĩ", sizeof("ĩ")-1, 297 }, { "і", sizeof("і")-1, 1110 }, // { "ï", sizeof("ï")-1, 239 }, { "ï", sizeof("ï")-1, 239 }, { "ĵ", sizeof("ĵ")-1, 309 }, { "й", sizeof("й")-1, 1081 }, { "𝔧", sizeof("𝔧")-1, 120103 }, { "ȷ", sizeof("ȷ")-1, 567 }, { "𝕛", sizeof("𝕛")-1, 120155 }, { "𝒿", sizeof("𝒿")-1, 119999 }, { "ј", sizeof("ј")-1, 1112 }, { "є", sizeof("є")-1, 1108 }, { "κ", sizeof("κ")-1, 954 }, { "ϰ", sizeof("ϰ")-1, 1008 }, { "ķ", sizeof("ķ")-1, 311 }, { "к", sizeof("к")-1, 1082 }, { "𝔨", sizeof("𝔨")-1, 120104 }, { "ĸ", sizeof("ĸ")-1, 312 }, { "х", sizeof("х")-1, 1093 }, { "ќ", sizeof("ќ")-1, 1116 }, { "𝕜", sizeof("𝕜")-1, 120156 }, { "𝓀", sizeof("𝓀")-1, 120000 }, { "⇚", sizeof("⇚")-1, 8666 }, { "⇐", sizeof("⇐")-1, 8656 }, { "⤛", sizeof("⤛")-1, 10523 }, { "⤎", sizeof("⤎")-1, 10510 }, { "≦", sizeof("≦")-1, 8806 }, { "⪋", sizeof("⪋")-1, 10891 }, { "⥢", sizeof("⥢")-1, 10594 }, { "ĺ", sizeof("ĺ")-1, 314 }, { "⦴", sizeof("⦴")-1, 10676 }, { "ℒ", sizeof("ℒ")-1, 8466 }, { "λ", sizeof("λ")-1, 955 }, { "⟨", sizeof("⟨")-1, 10216 }, { "⦑", sizeof("⦑")-1, 10641 }, { "⟨", sizeof("⟨")-1, 10216 }, { "⪅", sizeof("⪅")-1, 10885 }, // { "«", sizeof("«")-1, 171 }, { "«", sizeof("«")-1, 171 }, { "←", sizeof("←")-1, 8592 }, { "⇤", sizeof("⇤")-1, 8676 }, { "⤟", sizeof("⤟")-1, 10527 }, { "⤝", sizeof("⤝")-1, 10525 }, { "↩", sizeof("↩")-1, 8617 }, { "↫", sizeof("↫")-1, 8619 }, { "⤹", sizeof("⤹")-1, 10553 }, { "⥳", sizeof("⥳")-1, 10611 }, { "↢", sizeof("↢")-1, 8610 }, { "⪫", sizeof("⪫")-1, 10923 }, { "⤙", sizeof("⤙")-1, 10521 }, { "⪭", sizeof("⪭")-1, 10925 }, // { "⪭︀", sizeof("⪭︀")-1, 10925, 65024 }, { "⤌", sizeof("⤌")-1, 10508 }, { "❲", sizeof("❲")-1, 10098 }, { "{", sizeof("{")-1, 123 }, { "[", sizeof("[")-1, 91 }, { "⦋", sizeof("⦋")-1, 10635 }, { "⦏", sizeof("⦏")-1, 10639 }, { "⦍", sizeof("⦍")-1, 10637 }, { "ľ", sizeof("ľ")-1, 318 }, { "ļ", sizeof("ļ")-1, 316 }, { "⌈", sizeof("⌈")-1, 8968 }, { "{", sizeof("{")-1, 123 }, { "л", sizeof("л")-1, 1083 }, { "⤶", sizeof("⤶")-1, 10550 }, { "“", sizeof("“")-1, 8220 }, { "„", sizeof("„")-1, 8222 }, { "⥧", sizeof("⥧")-1, 10599 }, { "⥋", sizeof("⥋")-1, 10571 }, { "↲", sizeof("↲")-1, 8626 }, { "≤", sizeof("≤")-1, 8804 }, { "←", sizeof("←")-1, 8592 }, { "↢", sizeof("↢")-1, 8610 }, { "↽", sizeof("↽")-1, 8637 }, { "↼", sizeof("↼")-1, 8636 }, { "⇇", sizeof("⇇")-1, 8647 }, { "↔", sizeof("↔")-1, 8596 }, { "⇆", sizeof("⇆")-1, 8646 }, { "⇋", sizeof("⇋")-1, 8651 }, { "↭", sizeof("↭")-1, 8621 }, { "⋋", sizeof("⋋")-1, 8907 }, { "⋚", sizeof("⋚")-1, 8922 }, { "≤", sizeof("≤")-1, 8804 }, { "≦", sizeof("≦")-1, 8806 }, { "⩽", sizeof("⩽")-1, 10877 }, { "⩽", sizeof("⩽")-1, 10877 }, { "⪨", sizeof("⪨")-1, 10920 }, { "⩿", sizeof("⩿")-1, 10879 }, { "⪁", sizeof("⪁")-1, 10881 }, { "⪃", sizeof("⪃")-1, 10883 }, // { "⋚︀", sizeof("⋚︀")-1, 8922, 65024 }, { "⪓", sizeof("⪓")-1, 10899 }, { "⪅", sizeof("⪅")-1, 10885 }, { "⋖", sizeof("⋖")-1, 8918 }, { "⋚", sizeof("⋚")-1, 8922 }, { "⪋", sizeof("⪋")-1, 10891 }, { "≶", sizeof("≶")-1, 8822 }, { "≲", sizeof("≲")-1, 8818 }, { "⥼", sizeof("⥼")-1, 10620 }, { "⌊", sizeof("⌊")-1, 8970 }, { "𝔩", sizeof("𝔩")-1, 120105 }, { "≶", sizeof("≶")-1, 8822 }, { "⪑", sizeof("⪑")-1, 10897 }, { "↽", sizeof("↽")-1, 8637 }, { "↼", sizeof("↼")-1, 8636 }, { "⥪", sizeof("⥪")-1, 10602 }, { "▄", sizeof("▄")-1, 9604 }, { "љ", sizeof("љ")-1, 1113 }, { "≪", sizeof("≪")-1, 8810 }, { "⇇", sizeof("⇇")-1, 8647 }, { "⌞", sizeof("⌞")-1, 8990 }, { "⥫", sizeof("⥫")-1, 10603 }, { "◺", sizeof("◺")-1, 9722 }, { "ŀ", sizeof("ŀ")-1, 320 }, { "⎰", sizeof("⎰")-1, 9136 }, { "⎰", sizeof("⎰")-1, 9136 }, { "≨", sizeof("≨")-1, 8808 }, { "⪉", sizeof("⪉")-1, 10889 }, { "⪉", sizeof("⪉")-1, 10889 }, { "⪇", sizeof("⪇")-1, 10887 }, { "⪇", sizeof("⪇")-1, 10887 }, { "≨", sizeof("≨")-1, 8808 }, { "⋦", sizeof("⋦")-1, 8934 }, { "⟬", sizeof("⟬")-1, 10220 }, { "⇽", sizeof("⇽")-1, 8701 }, { "⟦", sizeof("⟦")-1, 10214 }, { "⟵", sizeof("⟵")-1, 10229 }, { "⟷", sizeof("⟷")-1, 10231 }, { "⟼", sizeof("⟼")-1, 10236 }, { "⟶", sizeof("⟶")-1, 10230 }, { "↫", sizeof("↫")-1, 8619 }, { "↬", sizeof("↬")-1, 8620 }, { "⦅", sizeof("⦅")-1, 10629 }, { "𝕝", sizeof("𝕝")-1, 120157 }, { "⨭", sizeof("⨭")-1, 10797 }, { "⨴", sizeof("⨴")-1, 10804 }, { "∗", sizeof("∗")-1, 8727 }, { "_", sizeof("_")-1, 95 }, { "◊", sizeof("◊")-1, 9674 }, { "◊", sizeof("◊")-1, 9674 }, { "⧫", sizeof("⧫")-1, 10731 }, { "(", sizeof("(")-1, 40 }, { "⦓", sizeof("⦓")-1, 10643 }, { "⇆", sizeof("⇆")-1, 8646 }, { "⌟", sizeof("⌟")-1, 8991 }, { "⇋", sizeof("⇋")-1, 8651 }, { "⥭", sizeof("⥭")-1, 10605 }, { "‎", sizeof("‎")-1, 8206 }, { "⊿", sizeof("⊿")-1, 8895 }, { "‹", sizeof("‹")-1, 8249 }, { "𝓁", sizeof("𝓁")-1, 120001 }, { "↰", sizeof("↰")-1, 8624 }, { "≲", sizeof("≲")-1, 8818 }, { "⪍", sizeof("⪍")-1, 10893 }, { "⪏", sizeof("⪏")-1, 10895 }, { "[", sizeof("[")-1, 91 }, { "‘", sizeof("‘")-1, 8216 }, { "‚", sizeof("‚")-1, 8218 }, { "ł", sizeof("ł")-1, 322 }, // { "<", sizeof("<")-1, 60 }, { "<", sizeof("<")-1, 60 }, { "⪦", sizeof("⪦")-1, 10918 }, { "⩹", sizeof("⩹")-1, 10873 }, { "⋖", sizeof("⋖")-1, 8918 }, { "⋋", sizeof("⋋")-1, 8907 }, { "⋉", sizeof("⋉")-1, 8905 }, { "⥶", sizeof("⥶")-1, 10614 }, { "⩻", sizeof("⩻")-1, 10875 }, { "⦖", sizeof("⦖")-1, 10646 }, { "◃", sizeof("◃")-1, 9667 }, { "⊴", sizeof("⊴")-1, 8884 }, { "◂", sizeof("◂")-1, 9666 }, { "⥊", sizeof("⥊")-1, 10570 }, { "⥦", sizeof("⥦")-1, 10598 }, // { "≨︀", sizeof("≨︀")-1, 8808, 65024 }, // { "≨︀", sizeof("≨︀")-1, 8808, 65024 }, { "∺", sizeof("∺")-1, 8762 }, // { "¯", sizeof("¯")-1, 175 }, { "¯", sizeof("¯")-1, 175 }, { "♂", sizeof("♂")-1, 9794 }, { "✠", sizeof("✠")-1, 10016 }, { "✠", sizeof("✠")-1, 10016 }, { "↦", sizeof("↦")-1, 8614 }, { "↦", sizeof("↦")-1, 8614 }, { "↧", sizeof("↧")-1, 8615 }, { "↤", sizeof("↤")-1, 8612 }, { "↥", sizeof("↥")-1, 8613 }, { "▮", sizeof("▮")-1, 9646 }, { "⨩", sizeof("⨩")-1, 10793 }, { "м", sizeof("м")-1, 1084 }, { "—", sizeof("—")-1, 8212 }, { "∡", sizeof("∡")-1, 8737 }, { "𝔪", sizeof("𝔪")-1, 120106 }, { "℧", sizeof("℧")-1, 8487 }, // { "µ", sizeof("µ")-1, 181 }, { "µ", sizeof("µ")-1, 181 }, { "∣", sizeof("∣")-1, 8739 }, { "*", sizeof("*")-1, 42 }, { "⫰", sizeof("⫰")-1, 10992 }, // { "·", sizeof("·")-1, 183 }, { "·", sizeof("·")-1, 183 }, { "−", sizeof("−")-1, 8722 }, { "⊟", sizeof("⊟")-1, 8863 }, { "∸", sizeof("∸")-1, 8760 }, { "⨪", sizeof("⨪")-1, 10794 }, { "⫛", sizeof("⫛")-1, 10971 }, { "…", sizeof("…")-1, 8230 }, { "∓", sizeof("∓")-1, 8723 }, { "⊧", sizeof("⊧")-1, 8871 }, { "𝕞", sizeof("𝕞")-1, 120158 }, { "∓", sizeof("∓")-1, 8723 }, { "𝓂", sizeof("𝓂")-1, 120002 }, { "∾", sizeof("∾")-1, 8766 }, { "μ", sizeof("μ")-1, 956 }, { "⊸", sizeof("⊸")-1, 8888 }, { "⊸", sizeof("⊸")-1, 8888 }, // { "⋙̸", sizeof("⋙̸")-1, 8921, 824 }, // { "≫⃒", sizeof("≫⃒")-1, 8811, 8402 }, // { "≫̸", sizeof("≫̸")-1, 8811, 824 }, { "⇍", sizeof("⇍")-1, 8653 }, { "⇎", sizeof("⇎")-1, 8654 }, // { "⋘̸", sizeof("⋘̸")-1, 8920, 824 }, // { "≪⃒", sizeof("≪⃒")-1, 8810, 8402 }, // { "≪̸", sizeof("≪̸")-1, 8810, 824 }, { "⇏", sizeof("⇏")-1, 8655 }, { "⊯", sizeof("⊯")-1, 8879 }, { "⊮", sizeof("⊮")-1, 8878 }, { "∇", sizeof("∇")-1, 8711 }, { "ń", sizeof("ń")-1, 324 }, // { "∠⃒", sizeof("∠⃒")-1, 8736, 8402 }, { "≉", sizeof("≉")-1, 8777 }, // { "⩰̸", sizeof("⩰̸")-1, 10864, 824 }, // { "≋̸", sizeof("≋̸")-1, 8779, 824 }, { "ʼn", sizeof("ʼn")-1, 329 }, { "≉", sizeof("≉")-1, 8777 }, { "♮", sizeof("♮")-1, 9838 }, { "♮", sizeof("♮")-1, 9838 }, { "ℕ", sizeof("ℕ")-1, 8469 }, // { " ", sizeof(" ")-1, 160 }, { " ", sizeof(" ")-1, 160 }, // { "≎̸", sizeof("≎̸")-1, 8782, 824 }, // { "≏̸", sizeof("≏̸")-1, 8783, 824 }, { "⩃", sizeof("⩃")-1, 10819 }, { "ň", sizeof("ň")-1, 328 }, { "ņ", sizeof("ņ")-1, 326 }, { "≇", sizeof("≇")-1, 8775 }, // { "⩭̸", sizeof("⩭̸")-1, 10861, 824 }, { "⩂", sizeof("⩂")-1, 10818 }, { "н", sizeof("н")-1, 1085 }, { "–", sizeof("–")-1, 8211 }, { "≠", sizeof("≠")-1, 8800 }, { "⇗", sizeof("⇗")-1, 8663 }, { "⤤", sizeof("⤤")-1, 10532 }, { "↗", sizeof("↗")-1, 8599 }, { "↗", sizeof("↗")-1, 8599 }, // { "≐̸", sizeof("≐̸")-1, 8784, 824 }, { "≢", sizeof("≢")-1, 8802 }, { "⤨", sizeof("⤨")-1, 10536 }, // { "≂̸", sizeof("≂̸")-1, 8770, 824 }, { "∄", sizeof("∄")-1, 8708 }, { "∄", sizeof("∄")-1, 8708 }, { "𝔫", sizeof("𝔫")-1, 120107 }, // { "≧̸", sizeof("≧̸")-1, 8807, 824 }, { "≱", sizeof("≱")-1, 8817 }, { "≱", sizeof("≱")-1, 8817 }, // { "≧̸", sizeof("≧̸")-1, 8807, 824 }, // { "⩾̸", sizeof("⩾̸")-1, 10878, 824 }, // { "⩾̸", sizeof("⩾̸")-1, 10878, 824 }, { "≵", sizeof("≵")-1, 8821 }, { "≯", sizeof("≯")-1, 8815 }, { "≯", sizeof("≯")-1, 8815 }, { "⇎", sizeof("⇎")-1, 8654 }, { "↮", sizeof("↮")-1, 8622 }, { "⫲", sizeof("⫲")-1, 10994 }, { "∋", sizeof("∋")-1, 8715 }, { "⋼", sizeof("⋼")-1, 8956 }, { "⋺", sizeof("⋺")-1, 8954 }, { "∋", sizeof("∋")-1, 8715 }, { "њ", sizeof("њ")-1, 1114 }, { "⇍", sizeof("⇍")-1, 8653 }, // { "≦̸", sizeof("≦̸")-1, 8806, 824 }, { "↚", sizeof("↚")-1, 8602 }, { "‥", sizeof("‥")-1, 8229 }, { "≰", sizeof("≰")-1, 8816 }, { "↚", sizeof("↚")-1, 8602 }, { "↮", sizeof("↮")-1, 8622 }, { "≰", sizeof("≰")-1, 8816 }, // { "≦̸", sizeof("≦̸")-1, 8806, 824 }, // { "⩽̸", sizeof("⩽̸")-1, 10877, 824 }, // { "⩽̸", sizeof("⩽̸")-1, 10877, 824 }, { "≮", sizeof("≮")-1, 8814 }, { "≴", sizeof("≴")-1, 8820 }, { "≮", sizeof("≮")-1, 8814 }, { "⋪", sizeof("⋪")-1, 8938 }, { "⋬", sizeof("⋬")-1, 8940 }, { "∤", sizeof("∤")-1, 8740 }, { "𝕟", sizeof("𝕟")-1, 120159 }, // { "¬", sizeof("¬")-1, 172 }, { "¬", sizeof("¬")-1, 172 }, { "∉", sizeof("∉")-1, 8713 }, // { "⋹̸", sizeof("⋹̸")-1, 8953, 824 }, // { "⋵̸", sizeof("⋵̸")-1, 8949, 824 }, { "∉", sizeof("∉")-1, 8713 }, { "⋷", sizeof("⋷")-1, 8951 }, { "⋶", sizeof("⋶")-1, 8950 }, { "∌", sizeof("∌")-1, 8716 }, { "∌", sizeof("∌")-1, 8716 }, { "⋾", sizeof("⋾")-1, 8958 }, { "⋽", sizeof("⋽")-1, 8957 }, { "∦", sizeof("∦")-1, 8742 }, { "∦", sizeof("∦")-1, 8742 }, // { "⫽⃥", sizeof("⫽⃥")-1, 11005, 8421 }, // { "∂̸", sizeof("∂̸")-1, 8706, 824 }, { "⨔", sizeof("⨔")-1, 10772 }, { "⊀", sizeof("⊀")-1, 8832 }, { "⋠", sizeof("⋠")-1, 8928 }, // { "⪯̸", sizeof("⪯̸")-1, 10927, 824 }, { "⊀", sizeof("⊀")-1, 8832 }, // { "⪯̸", sizeof("⪯̸")-1, 10927, 824 }, { "⇏", sizeof("⇏")-1, 8655 }, { "↛", sizeof("↛")-1, 8603 }, // { "⤳̸", sizeof("⤳̸")-1, 10547, 824 }, // { "↝̸", sizeof("↝̸")-1, 8605, 824 }, { "↛", sizeof("↛")-1, 8603 }, { "⋫", sizeof("⋫")-1, 8939 }, { "⋭", sizeof("⋭")-1, 8941 }, { "⊁", sizeof("⊁")-1, 8833 }, { "⋡", sizeof("⋡")-1, 8929 }, // { "⪰̸", sizeof("⪰̸")-1, 10928, 824 }, { "𝓃", sizeof("𝓃")-1, 120003 }, { "∤", sizeof("∤")-1, 8740 }, { "∦", sizeof("∦")-1, 8742 }, { "≁", sizeof("≁")-1, 8769 }, { "≄", sizeof("≄")-1, 8772 }, { "≄", sizeof("≄")-1, 8772 }, { "∤", sizeof("∤")-1, 8740 }, { "∦", sizeof("∦")-1, 8742 }, { "⋢", sizeof("⋢")-1, 8930 }, { "⋣", sizeof("⋣")-1, 8931 }, { "⊄", sizeof("⊄")-1, 8836 }, // { "⫅̸", sizeof("⫅̸")-1, 10949, 824 }, { "⊈", sizeof("⊈")-1, 8840 }, // { "⊂⃒", sizeof("⊂⃒")-1, 8834, 8402 }, { "⊈", sizeof("⊈")-1, 8840 }, // { "⫅̸", sizeof("⫅̸")-1, 10949, 824 }, { "⊁", sizeof("⊁")-1, 8833 }, // { "⪰̸", sizeof("⪰̸")-1, 10928, 824 }, { "⊅", sizeof("⊅")-1, 8837 }, // { "⫆̸", sizeof("⫆̸")-1, 10950, 824 }, { "⊉", sizeof("⊉")-1, 8841 }, // { "⊃⃒", sizeof("⊃⃒")-1, 8835, 8402 }, { "⊉", sizeof("⊉")-1, 8841 }, // { "⫆̸", sizeof("⫆̸")-1, 10950, 824 }, { "≹", sizeof("≹")-1, 8825 }, // { "ñ", sizeof("ñ")-1, 241 }, { "ñ", sizeof("ñ")-1, 241 }, { "≸", sizeof("≸")-1, 8824 }, { "⋪", sizeof("⋪")-1, 8938 }, { "⋬", sizeof("⋬")-1, 8940 }, { "⋫", sizeof("⋫")-1, 8939 }, { "⋭", sizeof("⋭")-1, 8941 }, { "ν", sizeof("ν")-1, 957 }, { "#", sizeof("#")-1, 35 }, { "№", sizeof("№")-1, 8470 }, { " ", sizeof(" ")-1, 8199 }, { "⊭", sizeof("⊭")-1, 8877 }, { "⤄", sizeof("⤄")-1, 10500 }, // { "≍⃒", sizeof("≍⃒")-1, 8781, 8402 }, { "⊬", sizeof("⊬")-1, 8876 }, // { "≥⃒", sizeof("≥⃒")-1, 8805, 8402 }, // { ">⃒", sizeof(">⃒")-1, 62, 8402 }, { "⧞", sizeof("⧞")-1, 10718 }, { "⤂", sizeof("⤂")-1, 10498 }, // { "≤⃒", sizeof("≤⃒")-1, 8804, 8402 }, // { "<⃒", sizeof("<⃒")-1, 60, 8402 }, // { "⊴⃒", sizeof("⊴⃒")-1, 8884, 8402 }, { "⤃", sizeof("⤃")-1, 10499 }, // { "⊵⃒", sizeof("⊵⃒")-1, 8885, 8402 }, // { "∼⃒", sizeof("∼⃒")-1, 8764, 8402 }, { "⇖", sizeof("⇖")-1, 8662 }, { "⤣", sizeof("⤣")-1, 10531 }, { "↖", sizeof("↖")-1, 8598 }, { "↖", sizeof("↖")-1, 8598 }, { "⤧", sizeof("⤧")-1, 10535 }, { "Ⓢ", sizeof("Ⓢ")-1, 9416 }, // { "ó", sizeof("ó")-1, 243 }, { "ó", sizeof("ó")-1, 243 }, { "⊛", sizeof("⊛")-1, 8859 }, { "⊚", sizeof("⊚")-1, 8858 }, // { "ô", sizeof("ô")-1, 244 }, { "ô", sizeof("ô")-1, 244 }, { "о", sizeof("о")-1, 1086 }, { "⊝", sizeof("⊝")-1, 8861 }, { "ő", sizeof("ő")-1, 337 }, { "⨸", sizeof("⨸")-1, 10808 }, { "⊙", sizeof("⊙")-1, 8857 }, { "⦼", sizeof("⦼")-1, 10684 }, { "œ", sizeof("œ")-1, 339 }, { "⦿", sizeof("⦿")-1, 10687 }, { "𝔬", sizeof("𝔬")-1, 120108 }, { "˛", sizeof("˛")-1, 731 }, // { "ò", sizeof("ò")-1, 242 }, { "ò", sizeof("ò")-1, 242 }, { "⧁", sizeof("⧁")-1, 10689 }, { "⦵", sizeof("⦵")-1, 10677 }, { "Ω", sizeof("Ω")-1, 937 }, { "∮", sizeof("∮")-1, 8750 }, { "↺", sizeof("↺")-1, 8634 }, { "⦾", sizeof("⦾")-1, 10686 }, { "⦻", sizeof("⦻")-1, 10683 }, { "‾", sizeof("‾")-1, 8254 }, { "⧀", sizeof("⧀")-1, 10688 }, { "ō", sizeof("ō")-1, 333 }, { "ω", sizeof("ω")-1, 969 }, { "ο", sizeof("ο")-1, 959 }, { "⦶", sizeof("⦶")-1, 10678 }, { "⊖", sizeof("⊖")-1, 8854 }, { "𝕠", sizeof("𝕠")-1, 120160 }, { "⦷", sizeof("⦷")-1, 10679 }, { "⦹", sizeof("⦹")-1, 10681 }, { "⊕", sizeof("⊕")-1, 8853 }, { "∨", sizeof("∨")-1, 8744 }, { "↻", sizeof("↻")-1, 8635 }, { "⩝", sizeof("⩝")-1, 10845 }, { "ℴ", sizeof("ℴ")-1, 8500 }, { "ℴ", sizeof("ℴ")-1, 8500 }, // { "ª", sizeof("ª")-1, 170 }, { "ª", sizeof("ª")-1, 170 }, // { "º", sizeof("º")-1, 186 }, { "º", sizeof("º")-1, 186 }, { "⊶", sizeof("⊶")-1, 8886 }, { "⩖", sizeof("⩖")-1, 10838 }, { "⩗", sizeof("⩗")-1, 10839 }, { "⩛", sizeof("⩛")-1, 10843 }, { "ℴ", sizeof("ℴ")-1, 8500 }, // { "ø", sizeof("ø")-1, 248 }, { "ø", sizeof("ø")-1, 248 }, { "⊘", sizeof("⊘")-1, 8856 }, // { "õ", sizeof("õ")-1, 245 }, { "õ", sizeof("õ")-1, 245 }, { "⊗", sizeof("⊗")-1, 8855 }, { "⨶", sizeof("⨶")-1, 10806 }, // { "ö", sizeof("ö")-1, 246 }, { "ö", sizeof("ö")-1, 246 }, { "⌽", sizeof("⌽")-1, 9021 }, { "∥", sizeof("∥")-1, 8741 }, // { "¶", sizeof("¶")-1, 182 }, { "¶", sizeof("¶")-1, 182 }, { "∥", sizeof("∥")-1, 8741 }, { "⫳", sizeof("⫳")-1, 10995 }, { "⫽", sizeof("⫽")-1, 11005 }, { "∂", sizeof("∂")-1, 8706 }, { "п", sizeof("п")-1, 1087 }, { "%", sizeof("%")-1, 37 }, { ".", sizeof(".")-1, 46 }, { "‰", sizeof("‰")-1, 8240 }, { "⊥", sizeof("⊥")-1, 8869 }, { "‱", sizeof("‱")-1, 8241 }, { "𝔭", sizeof("𝔭")-1, 120109 }, { "φ", sizeof("φ")-1, 966 }, { "ϕ", sizeof("ϕ")-1, 981 }, { "ℳ", sizeof("ℳ")-1, 8499 }, { "☎", sizeof("☎")-1, 9742 }, { "π", sizeof("π")-1, 960 }, { "⋔", sizeof("⋔")-1, 8916 }, { "ϖ", sizeof("ϖ")-1, 982 }, { "ℏ", sizeof("ℏ")-1, 8463 }, { "ℎ", sizeof("ℎ")-1, 8462 }, { "ℏ", sizeof("ℏ")-1, 8463 }, { "+", sizeof("+")-1, 43 }, { "⨣", sizeof("⨣")-1, 10787 }, { "⊞", sizeof("⊞")-1, 8862 }, { "⨢", sizeof("⨢")-1, 10786 }, { "∔", sizeof("∔")-1, 8724 }, { "⨥", sizeof("⨥")-1, 10789 }, { "⩲", sizeof("⩲")-1, 10866 }, // { "±", sizeof("±")-1, 177 }, { "±", sizeof("±")-1, 177 }, { "⨦", sizeof("⨦")-1, 10790 }, { "⨧", sizeof("⨧")-1, 10791 }, { "±", sizeof("±")-1, 177 }, { "⨕", sizeof("⨕")-1, 10773 }, { "𝕡", sizeof("𝕡")-1, 120161 }, // { "£", sizeof("£")-1, 163 }, { "£", sizeof("£")-1, 163 }, { "≺", sizeof("≺")-1, 8826 }, { "⪳", sizeof("⪳")-1, 10931 }, { "⪷", sizeof("⪷")-1, 10935 }, { "≼", sizeof("≼")-1, 8828 }, { "⪯", sizeof("⪯")-1, 10927 }, { "≺", sizeof("≺")-1, 8826 }, { "⪷", sizeof("⪷")-1, 10935 }, { "≼", sizeof("≼")-1, 8828 }, { "⪯", sizeof("⪯")-1, 10927 }, { "⪹", sizeof("⪹")-1, 10937 }, { "⪵", sizeof("⪵")-1, 10933 }, { "⋨", sizeof("⋨")-1, 8936 }, { "≾", sizeof("≾")-1, 8830 }, { "′", sizeof("′")-1, 8242 }, { "ℙ", sizeof("ℙ")-1, 8473 }, { "⪵", sizeof("⪵")-1, 10933 }, { "⪹", sizeof("⪹")-1, 10937 }, { "⋨", sizeof("⋨")-1, 8936 }, { "∏", sizeof("∏")-1, 8719 }, { "⌮", sizeof("⌮")-1, 9006 }, { "⌒", sizeof("⌒")-1, 8978 }, { "⌓", sizeof("⌓")-1, 8979 }, { "∝", sizeof("∝")-1, 8733 }, { "∝", sizeof("∝")-1, 8733 }, { "≾", sizeof("≾")-1, 8830 }, { "⊰", sizeof("⊰")-1, 8880 }, { "𝓅", sizeof("𝓅")-1, 120005 }, { "ψ", sizeof("ψ")-1, 968 }, { " ", sizeof(" ")-1, 8200 }, { "𝔮", sizeof("𝔮")-1, 120110 }, { "⨌", sizeof("⨌")-1, 10764 }, { "𝕢", sizeof("𝕢")-1, 120162 }, { "⁗", sizeof("⁗")-1, 8279 }, { "𝓆", sizeof("𝓆")-1, 120006 }, { "ℍ", sizeof("ℍ")-1, 8461 }, { "⨖", sizeof("⨖")-1, 10774 }, { "?", sizeof("?")-1, 63 }, { "≟", sizeof("≟")-1, 8799 }, // { """, sizeof(""")-1, 34 }, { """, sizeof(""")-1, 34 }, { "⇛", sizeof("⇛")-1, 8667 }, { "⇒", sizeof("⇒")-1, 8658 }, { "⤜", sizeof("⤜")-1, 10524 }, { "⤏", sizeof("⤏")-1, 10511 }, { "⥤", sizeof("⥤")-1, 10596 }, // { "∽̱", sizeof("∽̱")-1, 8765, 817 }, { "ŕ", sizeof("ŕ")-1, 341 }, { "√", sizeof("√")-1, 8730 }, { "⦳", sizeof("⦳")-1, 10675 }, { "⟩", sizeof("⟩")-1, 10217 }, { "⦒", sizeof("⦒")-1, 10642 }, { "⦥", sizeof("⦥")-1, 10661 }, { "⟩", sizeof("⟩")-1, 10217 }, // { "»", sizeof("»")-1, 187 }, { "»", sizeof("»")-1, 187 }, { "→", sizeof("→")-1, 8594 }, { "⥵", sizeof("⥵")-1, 10613 }, { "⇥", sizeof("⇥")-1, 8677 }, { "⤠", sizeof("⤠")-1, 10528 }, { "⤳", sizeof("⤳")-1, 10547 }, { "⤞", sizeof("⤞")-1, 10526 }, { "↪", sizeof("↪")-1, 8618 }, { "↬", sizeof("↬")-1, 8620 }, { "⥅", sizeof("⥅")-1, 10565 }, { "⥴", sizeof("⥴")-1, 10612 }, { "↣", sizeof("↣")-1, 8611 }, { "↝", sizeof("↝")-1, 8605 }, { "⤚", sizeof("⤚")-1, 10522 }, { "∶", sizeof("∶")-1, 8758 }, { "ℚ", sizeof("ℚ")-1, 8474 }, { "⤍", sizeof("⤍")-1, 10509 }, { "❳", sizeof("❳")-1, 10099 }, { "}", sizeof("}")-1, 125 }, { "]", sizeof("]")-1, 93 }, { "⦌", sizeof("⦌")-1, 10636 }, { "⦎", sizeof("⦎")-1, 10638 }, { "⦐", sizeof("⦐")-1, 10640 }, { "ř", sizeof("ř")-1, 345 }, { "ŗ", sizeof("ŗ")-1, 343 }, { "⌉", sizeof("⌉")-1, 8969 }, { "}", sizeof("}")-1, 125 }, { "р", sizeof("р")-1, 1088 }, { "⤷", sizeof("⤷")-1, 10551 }, { "⥩", sizeof("⥩")-1, 10601 }, { "”", sizeof("”")-1, 8221 }, { "”", sizeof("”")-1, 8221 }, { "↳", sizeof("↳")-1, 8627 }, { "ℜ", sizeof("ℜ")-1, 8476 }, { "ℛ", sizeof("ℛ")-1, 8475 }, { "ℜ", sizeof("ℜ")-1, 8476 }, { "ℝ", sizeof("ℝ")-1, 8477 }, { "▭", sizeof("▭")-1, 9645 }, // { "®", sizeof("®")-1, 174 }, { "®", sizeof("®")-1, 174 }, { "⥽", sizeof("⥽")-1, 10621 }, { "⌋", sizeof("⌋")-1, 8971 }, { "𝔯", sizeof("𝔯")-1, 120111 }, { "⇁", sizeof("⇁")-1, 8641 }, { "⇀", sizeof("⇀")-1, 8640 }, { "⥬", sizeof("⥬")-1, 10604 }, { "ρ", sizeof("ρ")-1, 961 }, { "ϱ", sizeof("ϱ")-1, 1009 }, { "→", sizeof("→")-1, 8594 }, { "↣", sizeof("↣")-1, 8611 }, { "⇁", sizeof("⇁")-1, 8641 }, { "⇀", sizeof("⇀")-1, 8640 }, { "⇄", sizeof("⇄")-1, 8644 }, { "⇌", sizeof("⇌")-1, 8652 }, { "⇉", sizeof("⇉")-1, 8649 }, { "↝", sizeof("↝")-1, 8605 }, { "⋌", sizeof("⋌")-1, 8908 }, { "˚", sizeof("˚")-1, 730 }, { "≓", sizeof("≓")-1, 8787 }, { "⇄", sizeof("⇄")-1, 8644 }, { "⇌", sizeof("⇌")-1, 8652 }, { "‏", sizeof("‏")-1, 8207 }, { "⎱", sizeof("⎱")-1, 9137 }, { "⎱", sizeof("⎱")-1, 9137 }, { "⫮", sizeof("⫮")-1, 10990 }, { "⟭", sizeof("⟭")-1, 10221 }, { "⇾", sizeof("⇾")-1, 8702 }, { "⟧", sizeof("⟧")-1, 10215 }, { "⦆", sizeof("⦆")-1, 10630 }, { "𝕣", sizeof("𝕣")-1, 120163 }, { "⨮", sizeof("⨮")-1, 10798 }, { "⨵", sizeof("⨵")-1, 10805 }, { ")", sizeof(")")-1, 41 }, { "⦔", sizeof("⦔")-1, 10644 }, { "⨒", sizeof("⨒")-1, 10770 }, { "⇉", sizeof("⇉")-1, 8649 }, { "›", sizeof("›")-1, 8250 }, { "𝓇", sizeof("𝓇")-1, 120007 }, { "↱", sizeof("↱")-1, 8625 }, { "]", sizeof("]")-1, 93 }, { "’", sizeof("’")-1, 8217 }, { "’", sizeof("’")-1, 8217 }, { "⋌", sizeof("⋌")-1, 8908 }, { "⋊", sizeof("⋊")-1, 8906 }, { "▹", sizeof("▹")-1, 9657 }, { "⊵", sizeof("⊵")-1, 8885 }, { "▸", sizeof("▸")-1, 9656 }, { "⧎", sizeof("⧎")-1, 10702 }, { "⥨", sizeof("⥨")-1, 10600 }, { "℞", sizeof("℞")-1, 8478 }, { "ś", sizeof("ś")-1, 347 }, { "‚", sizeof("‚")-1, 8218 }, { "≻", sizeof("≻")-1, 8827 }, { "⪴", sizeof("⪴")-1, 10932 }, { "⪸", sizeof("⪸")-1, 10936 }, { "š", sizeof("š")-1, 353 }, { "≽", sizeof("≽")-1, 8829 }, { "⪰", sizeof("⪰")-1, 10928 }, { "ş", sizeof("ş")-1, 351 }, { "ŝ", sizeof("ŝ")-1, 349 }, { "⪶", sizeof("⪶")-1, 10934 }, { "⪺", sizeof("⪺")-1, 10938 }, { "⋩", sizeof("⋩")-1, 8937 }, { "⨓", sizeof("⨓")-1, 10771 }, { "≿", sizeof("≿")-1, 8831 }, { "с", sizeof("с")-1, 1089 }, { "⋅", sizeof("⋅")-1, 8901 }, { "⊡", sizeof("⊡")-1, 8865 }, { "⩦", sizeof("⩦")-1, 10854 }, { "⇘", sizeof("⇘")-1, 8664 }, { "⤥", sizeof("⤥")-1, 10533 }, { "↘", sizeof("↘")-1, 8600 }, { "↘", sizeof("↘")-1, 8600 }, // { "§", sizeof("§")-1, 167 }, { "§", sizeof("§")-1, 167 }, { ";", sizeof(";")-1, 59 }, { "⤩", sizeof("⤩")-1, 10537 }, { "∖", sizeof("∖")-1, 8726 }, { "∖", sizeof("∖")-1, 8726 }, { "✶", sizeof("✶")-1, 10038 }, { "𝔰", sizeof("𝔰")-1, 120112 }, { "⌢", sizeof("⌢")-1, 8994 }, { "♯", sizeof("♯")-1, 9839 }, { "щ", sizeof("щ")-1, 1097 }, { "ш", sizeof("ш")-1, 1096 }, { "∣", sizeof("∣")-1, 8739 }, { "∥", sizeof("∥")-1, 8741 }, // { "­", sizeof("­")-1, 173 }, { "­", sizeof("­")-1, 173 }, { "σ", sizeof("σ")-1, 963 }, { "ς", sizeof("ς")-1, 962 }, { "ς", sizeof("ς")-1, 962 }, { "∼", sizeof("∼")-1, 8764 }, { "⩪", sizeof("⩪")-1, 10858 }, { "≃", sizeof("≃")-1, 8771 }, { "≃", sizeof("≃")-1, 8771 }, { "⪞", sizeof("⪞")-1, 10910 }, { "⪠", sizeof("⪠")-1, 10912 }, { "⪝", sizeof("⪝")-1, 10909 }, { "⪟", sizeof("⪟")-1, 10911 }, { "≆", sizeof("≆")-1, 8774 }, { "⨤", sizeof("⨤")-1, 10788 }, { "⥲", sizeof("⥲")-1, 10610 }, { "←", sizeof("←")-1, 8592 }, { "∖", sizeof("∖")-1, 8726 }, { "⨳", sizeof("⨳")-1, 10803 }, { "⧤", sizeof("⧤")-1, 10724 }, { "∣", sizeof("∣")-1, 8739 }, { "⌣", sizeof("⌣")-1, 8995 }, { "⪪", sizeof("⪪")-1, 10922 }, { "⪬", sizeof("⪬")-1, 10924 }, // { "⪬︀", sizeof("⪬︀")-1, 10924, 65024 }, { "ь", sizeof("ь")-1, 1100 }, { "/", sizeof("/")-1, 47 }, { "⧄", sizeof("⧄")-1, 10692 }, { "⌿", sizeof("⌿")-1, 9023 }, { "𝕤", sizeof("𝕤")-1, 120164 }, { "♠", sizeof("♠")-1, 9824 }, { "♠", sizeof("♠")-1, 9824 }, { "∥", sizeof("∥")-1, 8741 }, { "⊓", sizeof("⊓")-1, 8851 }, // { "⊓︀", sizeof("⊓︀")-1, 8851, 65024 }, { "⊔", sizeof("⊔")-1, 8852 }, // { "⊔︀", sizeof("⊔︀")-1, 8852, 65024 }, { "⊏", sizeof("⊏")-1, 8847 }, { "⊑", sizeof("⊑")-1, 8849 }, { "⊏", sizeof("⊏")-1, 8847 }, { "⊑", sizeof("⊑")-1, 8849 }, { "⊐", sizeof("⊐")-1, 8848 }, { "⊒", sizeof("⊒")-1, 8850 }, { "⊐", sizeof("⊐")-1, 8848 }, { "⊒", sizeof("⊒")-1, 8850 }, { "□", sizeof("□")-1, 9633 }, { "□", sizeof("□")-1, 9633 }, { "▪", sizeof("▪")-1, 9642 }, { "▪", sizeof("▪")-1, 9642 }, { "→", sizeof("→")-1, 8594 }, { "𝓈", sizeof("𝓈")-1, 120008 }, { "∖", sizeof("∖")-1, 8726 }, { "⌣", sizeof("⌣")-1, 8995 }, { "⋆", sizeof("⋆")-1, 8902 }, { "☆", sizeof("☆")-1, 9734 }, { "★", sizeof("★")-1, 9733 }, { "ϵ", sizeof("ϵ")-1, 1013 }, { "ϕ", sizeof("ϕ")-1, 981 }, { "¯", sizeof("¯")-1, 175 }, { "⊂", sizeof("⊂")-1, 8834 }, { "⫅", sizeof("⫅")-1, 10949 }, { "⪽", sizeof("⪽")-1, 10941 }, { "⊆", sizeof("⊆")-1, 8838 }, { "⫃", sizeof("⫃")-1, 10947 }, { "⫁", sizeof("⫁")-1, 10945 }, { "⫋", sizeof("⫋")-1, 10955 }, { "⊊", sizeof("⊊")-1, 8842 }, { "⪿", sizeof("⪿")-1, 10943 }, { "⥹", sizeof("⥹")-1, 10617 }, { "⊂", sizeof("⊂")-1, 8834 }, { "⊆", sizeof("⊆")-1, 8838 }, { "⫅", sizeof("⫅")-1, 10949 }, { "⊊", sizeof("⊊")-1, 8842 }, { "⫋", sizeof("⫋")-1, 10955 }, { "⫇", sizeof("⫇")-1, 10951 }, { "⫕", sizeof("⫕")-1, 10965 }, { "⫓", sizeof("⫓")-1, 10963 }, { "≻", sizeof("≻")-1, 8827 }, { "⪸", sizeof("⪸")-1, 10936 }, { "≽", sizeof("≽")-1, 8829 }, { "⪰", sizeof("⪰")-1, 10928 }, { "⪺", sizeof("⪺")-1, 10938 }, { "⪶", sizeof("⪶")-1, 10934 }, { "⋩", sizeof("⋩")-1, 8937 }, { "≿", sizeof("≿")-1, 8831 }, { "∑", sizeof("∑")-1, 8721 }, { "♪", sizeof("♪")-1, 9834 }, // { "¹", sizeof("¹")-1, 185 }, { "¹", sizeof("¹")-1, 185 }, // { "²", sizeof("²")-1, 178 }, { "²", sizeof("²")-1, 178 }, // { "³", sizeof("³")-1, 179 }, { "³", sizeof("³")-1, 179 }, { "⊃", sizeof("⊃")-1, 8835 }, { "⫆", sizeof("⫆")-1, 10950 }, { "⪾", sizeof("⪾")-1, 10942 }, { "⫘", sizeof("⫘")-1, 10968 }, { "⊇", sizeof("⊇")-1, 8839 }, { "⫄", sizeof("⫄")-1, 10948 }, { "⟉", sizeof("⟉")-1, 10185 }, { "⫗", sizeof("⫗")-1, 10967 }, { "⥻", sizeof("⥻")-1, 10619 }, { "⫂", sizeof("⫂")-1, 10946 }, { "⫌", sizeof("⫌")-1, 10956 }, { "⊋", sizeof("⊋")-1, 8843 }, { "⫀", sizeof("⫀")-1, 10944 }, { "⊃", sizeof("⊃")-1, 8835 }, { "⊇", sizeof("⊇")-1, 8839 }, { "⫆", sizeof("⫆")-1, 10950 }, { "⊋", sizeof("⊋")-1, 8843 }, { "⫌", sizeof("⫌")-1, 10956 }, { "⫈", sizeof("⫈")-1, 10952 }, { "⫔", sizeof("⫔")-1, 10964 }, { "⫖", sizeof("⫖")-1, 10966 }, { "⇙", sizeof("⇙")-1, 8665 }, { "⤦", sizeof("⤦")-1, 10534 }, { "↙", sizeof("↙")-1, 8601 }, { "↙", sizeof("↙")-1, 8601 }, { "⤪", sizeof("⤪")-1, 10538 }, // { "ß", sizeof("ß")-1, 223 }, { "ß", sizeof("ß")-1, 223 }, { "⌖", sizeof("⌖")-1, 8982 }, { "τ", sizeof("τ")-1, 964 }, { "⎴", sizeof("⎴")-1, 9140 }, { "ť", sizeof("ť")-1, 357 }, { "ţ", sizeof("ţ")-1, 355 }, { "т", sizeof("т")-1, 1090 }, { "⃛", sizeof("⃛")-1, 8411 }, { "⌕", sizeof("⌕")-1, 8981 }, { "𝔱", sizeof("𝔱")-1, 120113 }, { "∴", sizeof("∴")-1, 8756 }, { "∴", sizeof("∴")-1, 8756 }, { "θ", sizeof("θ")-1, 952 }, { "ϑ", sizeof("ϑ")-1, 977 }, { "ϑ", sizeof("ϑ")-1, 977 }, { "≈", sizeof("≈")-1, 8776 }, { "∼", sizeof("∼")-1, 8764 }, { " ", sizeof(" ")-1, 8201 }, { "≈", sizeof("≈")-1, 8776 }, { "∼", sizeof("∼")-1, 8764 }, // { "þ", sizeof("þ")-1, 254 }, { "þ", sizeof("þ")-1, 254 }, { "˜", sizeof("˜")-1, 732 }, // { "×", sizeof("×")-1, 215 }, { "×", sizeof("×")-1, 215 }, { "⊠", sizeof("⊠")-1, 8864 }, { "⨱", sizeof("⨱")-1, 10801 }, { "⨰", sizeof("⨰")-1, 10800 }, { "∭", sizeof("∭")-1, 8749 }, { "⤨", sizeof("⤨")-1, 10536 }, { "⊤", sizeof("⊤")-1, 8868 }, { "⌶", sizeof("⌶")-1, 9014 }, { "⫱", sizeof("⫱")-1, 10993 }, { "𝕥", sizeof("𝕥")-1, 120165 }, { "⫚", sizeof("⫚")-1, 10970 }, { "⤩", sizeof("⤩")-1, 10537 }, { "‴", sizeof("‴")-1, 8244 }, { "™", sizeof("™")-1, 8482 }, { "▵", sizeof("▵")-1, 9653 }, { "▿", sizeof("▿")-1, 9663 }, { "◃", sizeof("◃")-1, 9667 }, { "⊴", sizeof("⊴")-1, 8884 }, { "≜", sizeof("≜")-1, 8796 }, { "▹", sizeof("▹")-1, 9657 }, { "⊵", sizeof("⊵")-1, 8885 }, { "◬", sizeof("◬")-1, 9708 }, { "≜", sizeof("≜")-1, 8796 }, { "⨺", sizeof("⨺")-1, 10810 }, { "⨹", sizeof("⨹")-1, 10809 }, { "⧍", sizeof("⧍")-1, 10701 }, { "⨻", sizeof("⨻")-1, 10811 }, { "⏢", sizeof("⏢")-1, 9186 }, { "𝓉", sizeof("𝓉")-1, 120009 }, { "ц", sizeof("ц")-1, 1094 }, { "ћ", sizeof("ћ")-1, 1115 }, { "ŧ", sizeof("ŧ")-1, 359 }, { "≬", sizeof("≬")-1, 8812 }, { "↞", sizeof("↞")-1, 8606 }, { "↠", sizeof("↠")-1, 8608 }, { "⇑", sizeof("⇑")-1, 8657 }, { "⥣", sizeof("⥣")-1, 10595 }, // { "ú", sizeof("ú")-1, 250 }, { "ú", sizeof("ú")-1, 250 }, { "↑", sizeof("↑")-1, 8593 }, { "ў", sizeof("ў")-1, 1118 }, { "ŭ", sizeof("ŭ")-1, 365 }, // { "û", sizeof("û")-1, 251 }, { "û", sizeof("û")-1, 251 }, { "у", sizeof("у")-1, 1091 }, { "⇅", sizeof("⇅")-1, 8645 }, { "ű", sizeof("ű")-1, 369 }, { "⥮", sizeof("⥮")-1, 10606 }, { "⥾", sizeof("⥾")-1, 10622 }, { "𝔲", sizeof("𝔲")-1, 120114 }, // { "ù", sizeof("ù")-1, 249 }, { "ù", sizeof("ù")-1, 249 }, { "↿", sizeof("↿")-1, 8639 }, { "↾", sizeof("↾")-1, 8638 }, { "▀", sizeof("▀")-1, 9600 }, { "⌜", sizeof("⌜")-1, 8988 }, { "⌜", sizeof("⌜")-1, 8988 }, { "⌏", sizeof("⌏")-1, 8975 }, { "◸", sizeof("◸")-1, 9720 }, { "ū", sizeof("ū")-1, 363 }, // { "¨", sizeof("¨")-1, 168 }, { "¨", sizeof("¨")-1, 168 }, { "ų", sizeof("ų")-1, 371 }, { "𝕦", sizeof("𝕦")-1, 120166 }, { "↑", sizeof("↑")-1, 8593 }, { "↕", sizeof("↕")-1, 8597 }, { "↿", sizeof("↿")-1, 8639 }, { "↾", sizeof("↾")-1, 8638 }, { "⊎", sizeof("⊎")-1, 8846 }, { "υ", sizeof("υ")-1, 965 }, { "ϒ", sizeof("ϒ")-1, 978 }, { "υ", sizeof("υ")-1, 965 }, { "⇈", sizeof("⇈")-1, 8648 }, { "⌝", sizeof("⌝")-1, 8989 }, { "⌝", sizeof("⌝")-1, 8989 }, { "⌎", sizeof("⌎")-1, 8974 }, { "ů", sizeof("ů")-1, 367 }, { "◹", sizeof("◹")-1, 9721 }, { "𝓊", sizeof("𝓊")-1, 120010 }, { "⋰", sizeof("⋰")-1, 8944 }, { "ũ", sizeof("ũ")-1, 361 }, { "▵", sizeof("▵")-1, 9653 }, { "▴", sizeof("▴")-1, 9652 }, { "⇈", sizeof("⇈")-1, 8648 }, // { "ü", sizeof("ü")-1, 252 }, { "ü", sizeof("ü")-1, 252 }, { "⦧", sizeof("⦧")-1, 10663 }, { "⇕", sizeof("⇕")-1, 8661 }, { "⫨", sizeof("⫨")-1, 10984 }, { "⫩", sizeof("⫩")-1, 10985 }, { "⊨", sizeof("⊨")-1, 8872 }, { "⦜", sizeof("⦜")-1, 10652 }, { "ϵ", sizeof("ϵ")-1, 1013 }, { "ϰ", sizeof("ϰ")-1, 1008 }, { "∅", sizeof("∅")-1, 8709 }, { "ϕ", sizeof("ϕ")-1, 981 }, { "ϖ", sizeof("ϖ")-1, 982 }, { "∝", sizeof("∝")-1, 8733 }, { "↕", sizeof("↕")-1, 8597 }, { "ϱ", sizeof("ϱ")-1, 1009 }, { "ς", sizeof("ς")-1, 962 }, // { "⊊︀", sizeof("⊊︀")-1, 8842, 65024 }, // { "⫋︀", sizeof("⫋︀")-1, 10955, 65024 }, // { "⊋︀", sizeof("⊋︀")-1, 8843, 65024 }, // { "⫌︀", sizeof("⫌︀")-1, 10956, 65024 }, { "ϑ", sizeof("ϑ")-1, 977 }, { "⊲", sizeof("⊲")-1, 8882 }, { "⊳", sizeof("⊳")-1, 8883 }, { "в", sizeof("в")-1, 1074 }, { "⊢", sizeof("⊢")-1, 8866 }, { "∨", sizeof("∨")-1, 8744 }, { "⊻", sizeof("⊻")-1, 8891 }, { "≚", sizeof("≚")-1, 8794 }, { "⋮", sizeof("⋮")-1, 8942 }, { "|", sizeof("|")-1, 124 }, { "|", sizeof("|")-1, 124 }, { "𝔳", sizeof("𝔳")-1, 120115 }, { "⊲", sizeof("⊲")-1, 8882 }, // { "⊂⃒", sizeof("⊂⃒")-1, 8834, 8402 }, // { "⊃⃒", sizeof("⊃⃒")-1, 8835, 8402 }, { "𝕧", sizeof("𝕧")-1, 120167 }, { "∝", sizeof("∝")-1, 8733 }, { "⊳", sizeof("⊳")-1, 8883 }, { "𝓋", sizeof("𝓋")-1, 120011 }, // { "⫋︀", sizeof("⫋︀")-1, 10955, 65024 }, // { "⊊︀", sizeof("⊊︀")-1, 8842, 65024 }, // { "⫌︀", sizeof("⫌︀")-1, 10956, 65024 }, // { "⊋︀", sizeof("⊋︀")-1, 8843, 65024 }, { "⦚", sizeof("⦚")-1, 10650 }, { "ŵ", sizeof("ŵ")-1, 373 }, { "⩟", sizeof("⩟")-1, 10847 }, { "∧", sizeof("∧")-1, 8743 }, { "≙", sizeof("≙")-1, 8793 }, { "℘", sizeof("℘")-1, 8472 }, { "𝔴", sizeof("𝔴")-1, 120116 }, { "𝕨", sizeof("𝕨")-1, 120168 }, { "℘", sizeof("℘")-1, 8472 }, { "≀", sizeof("≀")-1, 8768 }, { "≀", sizeof("≀")-1, 8768 }, { "𝓌", sizeof("𝓌")-1, 120012 }, { "⋂", sizeof("⋂")-1, 8898 }, { "◯", sizeof("◯")-1, 9711 }, { "⋃", sizeof("⋃")-1, 8899 }, { "▽", sizeof("▽")-1, 9661 }, { "𝔵", sizeof("𝔵")-1, 120117 }, { "⟺", sizeof("⟺")-1, 10234 }, { "⟷", sizeof("⟷")-1, 10231 }, { "ξ", sizeof("ξ")-1, 958 }, { "⟸", sizeof("⟸")-1, 10232 }, { "⟵", sizeof("⟵")-1, 10229 }, { "⟼", sizeof("⟼")-1, 10236 }, { "⋻", sizeof("⋻")-1, 8955 }, { "⨀", sizeof("⨀")-1, 10752 }, { "𝕩", sizeof("𝕩")-1, 120169 }, { "⨁", sizeof("⨁")-1, 10753 }, { "⨂", sizeof("⨂")-1, 10754 }, { "⟹", sizeof("⟹")-1, 10233 }, { "⟶", sizeof("⟶")-1, 10230 }, { "𝓍", sizeof("𝓍")-1, 120013 }, { "⨆", sizeof("⨆")-1, 10758 }, { "⨄", sizeof("⨄")-1, 10756 }, { "△", sizeof("△")-1, 9651 }, { "⋁", sizeof("⋁")-1, 8897 }, { "⋀", sizeof("⋀")-1, 8896 }, // { "ý", sizeof("ý")-1, 253 }, { "ý", sizeof("ý")-1, 253 }, { "я", sizeof("я")-1, 1103 }, { "ŷ", sizeof("ŷ")-1, 375 }, { "ы", sizeof("ы")-1, 1099 }, // { "¥", sizeof("¥")-1, 165 }, { "¥", sizeof("¥")-1, 165 }, { "𝔶", sizeof("𝔶")-1, 120118 }, { "ї", sizeof("ї")-1, 1111 }, { "𝕪", sizeof("𝕪")-1, 120170 }, { "𝓎", sizeof("𝓎")-1, 120014 }, { "ю", sizeof("ю")-1, 1102 }, // { "ÿ", sizeof("ÿ")-1, 255 }, { "ÿ", sizeof("ÿ")-1, 255 }, { "ź", sizeof("ź")-1, 378 }, { "ž", sizeof("ž")-1, 382 }, { "з", sizeof("з")-1, 1079 }, { "ż", sizeof("ż")-1, 380 }, { "ℨ", sizeof("ℨ")-1, 8488 }, { "ζ", sizeof("ζ")-1, 950 }, { "𝔷", sizeof("𝔷")-1, 120119 }, { "ж", sizeof("ж")-1, 1078 }, { "⇝", sizeof("⇝")-1, 8669 }, { "𝕫", sizeof("𝕫")-1, 120171 }, { "𝓏", sizeof("𝓏")-1, 120015 }, { "‍", sizeof("‍")-1, 8205 }, { "‌", sizeof("‌")-1, 8204 }, { "&", 1, 0 } }; int ch, idx, utf8; char *cptr, *sptr; /*********/ /* begin */ /*********/ if (Debug) WatchThis (FI_LI, "HtmlDeEntify() !AZ |!AZ|", CharsetPtr, HtmlPtr); if (CharsetPtr) utf8 = !strstr (CharsetPtr, "UTF-8"); else utf8 = FALSE; cptr = sptr = HtmlPtr; while (*cptr) { if (*cptr != '&') { *sptr++ = *cptr++; continue; } /* entity */ cptr++; if (*cptr == '#') { /* convert a numeric entity to it's character equivalent */ cptr++; if (*cptr == 'x') ch = (uint)strtol(cptr+1, NULL, 16); else ch = (uint)atol(cptr); while (*cptr && *cptr != ';') cptr++; /* if badly formed entity */ if (!*cptr) break; cptr++; if (ch < 32) continue; if (!utf8) { if (ch > 255) continue; *sptr++ = (ch & 0xff); continue; } /* drop thru to UTF-8 encode */ } else { ch = 0; /* find the first instance of the alaphabetic list */ for (idx = 0; HtmlEntity[idx].ent[1]; idx++) if (HtmlEntity[idx].ent[1] == cptr[0]) break; /* check each instance of the alphabetic */ for (; HtmlEntity[idx].ent[1]; idx++) { /* break on the first non-natching alphabetic */ if (HtmlEntity[idx].ent[1] != cptr[0]) break; if (strncmp (cptr, HtmlEntity[idx].ent+1, HtmlEntity[idx].len-1)) continue; /* some entries are not terminated with a ';' */ if (HtmlEntity[idx].ent[HtmlEntity[idx].len-1] != ';') continue; ch = HtmlEntity[idx].val; break; } while (*cptr && *cptr != ';') cptr++; if (*cptr) cptr++; if (!ch) { /* unknown entity */ continue; } if (!utf8) { *sptr++ = (ch & 0xff); continue; } /* drop thru to UTF-8 encode */ } /* UTF-8 */ if (ch > 255) { *sptr++ = 0xe0 | ((ch & 0xf000) >> 12); *sptr++ = 0x80 | ((ch & 0x0f00) >> 6) | ((ch & 0xc0) >> 6); *sptr++ = 0x80 | (ch & 0x3f); } else if (ch > 127) { *sptr++ = 0xc0 | ((ch & 0xc0) >> 6); *sptr++ = 0x80 | (ch & 0x3f); } else *sptr++ = ch; } *sptr = '\0'; return (sptr-HtmlPtr); } /*****************************************************************************/ /* Elementary UTF-8 encoding for characters > 127. */ char* HtmlUtf8Encode (char *TextPtr) { int ch, cnt; uchar *cptr, *sptr, *tptr; /*********/ /* begin */ /*********/ if (Debug) WatchThis (FI_LI, "HtmlUtf8Encode() |!AZ|", TextPtr); for (cptr = (uchar*)TextPtr; *cptr && *cptr <= 127; cptr++); if (!*cptr) return (TextPtr); cnt = cptr - (uchar*)TextPtr; /* worst case for UTF-8 is plus 3 chars */ for (cptr = (uchar*)TextPtr; *cptr && *cptr > 127; cptr++) cnt += 3; tptr = CgiLibVeeMemCalloc (cnt+4); if (!tptr) ErrorExit (vaxc$errno, FI_LI); sptr = tptr; cptr = (uchar*)TextPtr; for (cptr = (uchar*)TextPtr; *cptr; cptr++) { if (*cptr <= 127) *sptr++ = *cptr; else sptr += HtmlUtf8EncodeChar (sptr, (uint)*cptr); } *sptr = '\0'; if (Debug) WatchThis (FI_LI, "!UL |!AZ|", sptr-tptr, tptr); return ((char*)tptr); } /*****************************************************************************/ /* UTF-8 encode a single character. Return the number of chars generated. */ int HtmlUtf8EncodeChar (uchar *out, uint utf) { /*********/ /* begin */ /*********/ if (utf <= 0x7F) { /* plain ASCII */ out[0] = (char) utf; out[1] = 0; return (1); } else if (utf <= 0x07FF) { /* 2-byte unicode */ out[0] = (char) (((utf >> 6) & 0x1F) | 0xC0); out[1] = (char) (((utf >> 0) & 0x3F) | 0x80); out[2] = 0; return (2); } else if (utf <= 0xFFFF) { /* 3-byte unicode */ out[0] = (char) (((utf >> 12) & 0x0F) | 0xE0); out[1] = (char) (((utf >> 6) & 0x3F) | 0x80); out[2] = (char) (((utf >> 0) & 0x3F) | 0x80); out[3] = 0; return (3); } else if (utf <= 0x10FFFF) { /* 4-byte unicode */ out[0] = (char) (((utf >> 18) & 0x07) | 0xF0); out[1] = (char) (((utf >> 12) & 0x3F) | 0x80); out[2] = (char) (((utf >> 6) & 0x3F) | 0x80); out[3] = (char) (((utf >> 0) & 0x3F) | 0x80); out[4] = 0; return (4); } else { /* error - use replacement character */ out[0] = (char) 0xEF; out[1] = (char) 0xBF; out[2] = (char) 0xBD; out[3] = 0; return (0); } } /*****************************************************************************/ /* Check the leading text for what looks like a common HTML tag. */ BOOL HtmlInDisguise (char *TextPtr) { char *cptr; /*********/ /* begin */ /*********/ if (Debug) fprintf (stdout, "HtmlInDisguise()\n"); if (!TextPtr) return (FALSE); for (cptr = TextPtr; *cptr && isspace(*cptr); cptr++); if (WatchEnabled) WatchThis (FI_LI, "!8AZ", cptr); if (*cptr != '<') return (FALSE); if (!memcmp (cptr, "