diff options
author | Titus Wormer <tituswormer@gmail.com> | 2022-07-15 18:22:57 +0200 |
---|---|---|
committer | Titus Wormer <tituswormer@gmail.com> | 2022-07-15 18:22:57 +0200 |
commit | b0a2ce50ecb1a1531b2f7dc4591c9809bb23ed55 (patch) | |
tree | 6ee61075a1d0700fc694d257ed1c7fd4c63db5d2 | |
parent | 437d3f8bd5633194406fb70b3567bfeb76f18ea5 (diff) | |
download | markdown-rs-b0a2ce50ecb1a1531b2f7dc4591c9809bb23ed55.tar.gz markdown-rs-b0a2ce50ecb1a1531b2f7dc4591c9809bb23ed55.tar.bz2 markdown-rs-b0a2ce50ecb1a1531b2f7dc4591c9809bb23ed55.zip |
Fix to use single array for character references
-rw-r--r-- | src/constant.rs | 4396 | ||||
-rw-r--r-- | src/construct/character_reference.rs | 14 | ||||
-rw-r--r-- | src/util/decode_character_reference.rs | 11 | ||||
-rw-r--r-- | tests/character_reference.rs | 2 | ||||
-rw-r--r-- | tests/commonmark.rs | 26 |
5 files changed, 2159 insertions, 2290 deletions
diff --git a/src/constant.rs b/src/constant.rs index a5ace28..b18bf3f 100644 --- a/src/constant.rs +++ b/src/constant.rs @@ -8,8 +8,8 @@ //! //! Some constants are instead lists of things, such as the list of tag names //! considered in the **raw** production of [HTML (flow)][html_flow] -//! ([`HTML_RAW_NAMES`][]), or the list of allowed named character references -//! ([`CHARACTER_REFERENCE_NAMES`][]). +//! ([`HTML_RAW_NAMES`][]), or the list of named character references +//! ([`CHARACTER_REFERENCES`][]). //! //! [code_fenced]: crate::construct::code_fenced //! [heading_atx]: crate::construct::heading_atx @@ -53,7 +53,7 @@ pub const CHARACTER_REFERENCE_HEXADECIMAL_SIZE_MAX: usize = 6; /// The max number of characters in a named /// [character reference][character_reference]. /// -/// This is the number of the longest name in [`CHARACTER_REFERENCE_NAMES`][]. +/// This is the number of the longest name in [`CHARACTER_REFERENCES`][]. /// It allows `∳` and prevents the parser from /// continuing for eons. /// @@ -248,2277 +248,2145 @@ pub const THEMATIC_BREAK_MARKER_COUNT_MIN: usize = 3; // Important: please touch the below lists as few times as possible to keep Git small. -/// List of names that can form a named -/// [character reference][character_reference]. +/// List of names that can form named [character reference][character_reference]s +/// and corresponding values. /// /// This list is sensitive to casing. /// /// The number of the longest name (`CounterClockwiseContourIntegral`) is also /// stored as a constant in [`CHARACTER_REFERENCE_NAMED_SIZE_MAX`][]. /// -/// The corresponding values of this list are stored in -/// [`CHARACTER_REFERENCE_VALUES`][]. -/// They correspond through their index. -/// -/// ## References -/// -/// * [*§ 2.5 Entity and numeric character references* in `CommonMark`](https://spec.commonmark.org/0.30/#entity-and-numeric-character-references) -/// -/// [character_reference]: crate::construct::character_reference -pub const CHARACTER_REFERENCE_NAMES: [&str; 2125] = [ - "AElig", - "AMP", - "Aacute", - "Abreve", - "Acirc", - "Acy", - "Afr", - "Agrave", - "Alpha", - "Amacr", - "And", - "Aogon", - "Aopf", - "ApplyFunction", - "Aring", - "Ascr", - "Assign", - "Atilde", - "Auml", - "Backslash", - "Barv", - "Barwed", - "Bcy", - "Because", - "Bernoullis", - "Beta", - "Bfr", - "Bopf", - "Breve", - "Bscr", - "Bumpeq", - "CHcy", - "COPY", - "Cacute", - "Cap", - "CapitalDifferentialD", - "Cayleys", - "Ccaron", - "Ccedil", - "Ccirc", - "Cconint", - "Cdot", - "Cedilla", - "CenterDot", - "Cfr", - "Chi", - "CircleDot", - "CircleMinus", - "CirclePlus", - "CircleTimes", - "ClockwiseContourIntegral", - "CloseCurlyDoubleQuote", - "CloseCurlyQuote", - "Colon", - "Colone", - "Congruent", - "Conint", - "ContourIntegral", - "Copf", - "Coproduct", - "CounterClockwiseContourIntegral", - "Cross", - "Cscr", - "Cup", - "CupCap", - "DD", - "DDotrahd", - "DJcy", - "DScy", - "DZcy", - "Dagger", - "Darr", - "Dashv", - "Dcaron", - "Dcy", - "Del", - "Delta", - "Dfr", - "DiacriticalAcute", - "DiacriticalDot", - "DiacriticalDoubleAcute", - "DiacriticalGrave", - "DiacriticalTilde", - "Diamond", - "DifferentialD", - "Dopf", - "Dot", - "DotDot", - "DotEqual", - "DoubleContourIntegral", - "DoubleDot", - "DoubleDownArrow", - "DoubleLeftArrow", - "DoubleLeftRightArrow", - "DoubleLeftTee", - "DoubleLongLeftArrow", - "DoubleLongLeftRightArrow", - "DoubleLongRightArrow", - "DoubleRightArrow", - "DoubleRightTee", - "DoubleUpArrow", - "DoubleUpDownArrow", - "DoubleVerticalBar", - "DownArrow", - "DownArrowBar", - "DownArrowUpArrow", - "DownBreve", - "DownLeftRightVector", - "DownLeftTeeVector", - "DownLeftVector", - "DownLeftVectorBar", - "DownRightTeeVector", - "DownRightVector", - "DownRightVectorBar", - "DownTee", - "DownTeeArrow", - "Downarrow", - "Dscr", - "Dstrok", - "ENG", - "ETH", - "Eacute", - "Ecaron", - "Ecirc", - "Ecy", - "Edot", - "Efr", - "Egrave", - "Element", - "Emacr", - "EmptySmallSquare", - "EmptyVerySmallSquare", - "Eogon", - "Eopf", - "Epsilon", - "Equal", - "EqualTilde", - "Equilibrium", - "Escr", - "Esim", - "Eta", - "Euml", - "Exists", - "ExponentialE", - "Fcy", - "Ffr", - "FilledSmallSquare", - "FilledVerySmallSquare", - "Fopf", - "ForAll", - "Fouriertrf", - "Fscr", - "GJcy", - "GT", - "Gamma", - "Gammad", - "Gbreve", - "Gcedil", - "Gcirc", - "Gcy", - "Gdot", - "Gfr", - "Gg", - "Gopf", - "GreaterEqual", - "GreaterEqualLess", - "GreaterFullEqual", - "GreaterGreater", - "GreaterLess", - "GreaterSlantEqual", - "GreaterTilde", - "Gscr", - "Gt", - "HARDcy", - "Hacek", - "Hat", - "Hcirc", - "Hfr", - "HilbertSpace", - "Hopf", - "HorizontalLine", - "Hscr", - "Hstrok", - "HumpDownHump", - "HumpEqual", - "IEcy", - "IJlig", - "IOcy", - "Iacute", - "Icirc", - "Icy", - "Idot", - "Ifr", - "Igrave", - "Im", - "Imacr", - "ImaginaryI", - "Implies", - "Int", - "Integral", - "Intersection", - "InvisibleComma", - "InvisibleTimes", - "Iogon", - "Iopf", - "Iota", - "Iscr", - "Itilde", - "Iukcy", - "Iuml", - "Jcirc", - "Jcy", - "Jfr", - "Jopf", - "Jscr", - "Jsercy", - "Jukcy", - "KHcy", - "KJcy", - "Kappa", - "Kcedil", - "Kcy", - "Kfr", - "Kopf", - "Kscr", - "LJcy", - "LT", - "Lacute", - "Lambda", - "Lang", - "Laplacetrf", - "Larr", - "Lcaron", - "Lcedil", - "Lcy", - "LeftAngleBracket", - "LeftArrow", - "LeftArrowBar", - "LeftArrowRightArrow", - "LeftCeiling", - "LeftDoubleBracket", - "LeftDownTeeVector", - "LeftDownVector", - "LeftDownVectorBar", - "LeftFloor", - "LeftRightArrow", - "LeftRightVector", - "LeftTee", - "LeftTeeArrow", - "LeftTeeVector", - "LeftTriangle", - "LeftTriangleBar", - "LeftTriangleEqual", - "LeftUpDownVector", - "LeftUpTeeVector", - "LeftUpVector", - "LeftUpVectorBar", - "LeftVector", - "LeftVectorBar", - "Leftarrow", - "Leftrightarrow", - "LessEqualGreater", - "LessFullEqual", - "LessGreater", - "LessLess", - "LessSlantEqual", - "LessTilde", - "Lfr", - "Ll", - "Lleftarrow", - "Lmidot", - "LongLeftArrow", - "LongLeftRightArrow", - "LongRightArrow", - "Longleftarrow", - "Longleftrightarrow", - "Longrightarrow", - "Lopf", - "LowerLeftArrow", - "LowerRightArrow", - "Lscr", - "Lsh", - "Lstrok", - "Lt", - "Map", - "Mcy", - "MediumSpace", - "Mellintrf", - "Mfr", - "MinusPlus", - "Mopf", - "Mscr", - "Mu", - "NJcy", - "Nacute", - "Ncaron", - "Ncedil", - "Ncy", - "NegativeMediumSpace", - "NegativeThickSpace", - "NegativeThinSpace", - "NegativeVeryThinSpace", - "NestedGreaterGreater", - "NestedLessLess", - "NewLine", - "Nfr", - "NoBreak", - "NonBreakingSpace", - "Nopf", - "Not", - "NotCongruent", - "NotCupCap", - "NotDoubleVerticalBar", - "NotElement", - "NotEqual", - "NotEqualTilde", - "NotExists", - "NotGreater", - "NotGreaterEqual", - "NotGreaterFullEqual", - "NotGreaterGreater", - "NotGreaterLess", - "NotGreaterSlantEqual", - "NotGreaterTilde", - "NotHumpDownHump", - "NotHumpEqual", - "NotLeftTriangle", - "NotLeftTriangleBar", - "NotLeftTriangleEqual", - "NotLess", - "NotLessEqual", - "NotLessGreater", - "NotLessLess", - "NotLessSlantEqual", - "NotLessTilde", - "NotNestedGreaterGreater", - "NotNestedLessLess", - "NotPrecedes", - "NotPrecedesEqual", - "NotPrecedesSlantEqual", - "NotReverseElement", - "NotRightTriangle", - "NotRightTriangleBar", - "NotRightTriangleEqual", - "NotSquareSubset", - "NotSquareSubsetEqual", - "NotSquareSuperset", - "NotSquareSupersetEqual", - "NotSubset", - "NotSubsetEqual", - "NotSucceeds", - "NotSucceedsEqual", - "NotSucceedsSlantEqual", - "NotSucceedsTilde", - "NotSuperset", - "NotSupersetEqual", - "NotTilde", - "NotTildeEqual", - "NotTildeFullEqual", - "NotTildeTilde", - "NotVerticalBar", - "Nscr", - "Ntilde", - "Nu", - "OElig", - "Oacute", - "Ocirc", - "Ocy", - "Odblac", - "Ofr", - "Ograve", - "Omacr", - "Omega", - "Omicron", - "Oopf", - "OpenCurlyDoubleQuote", - "OpenCurlyQuote", - "Or", - "Oscr", - "Oslash", - "Otilde", - "Otimes", - "Ouml", - "OverBar", - "OverBrace", - "OverBracket", - "OverParenthesis", - "PartialD", - "Pcy", - "Pfr", - "Phi", - "Pi", - "PlusMinus", - "Poincareplane", - "Popf", - "Pr", - "Precedes", - "PrecedesEqual", - "PrecedesSlantEqual", - "PrecedesTilde", - "Prime", - "Product", - "Proportion", - "Proportional", - "Pscr", - "Psi", - "QUOT", - "Qfr", - "Qopf", - "Qscr", - "RBarr", - "REG", - "Racute", - "Rang", - "Rarr", - "Rarrtl", - "Rcaron", - "Rcedil", - "Rcy", - "Re", - "ReverseElement", - "ReverseEquilibrium", - "ReverseUpEquilibrium", - "Rfr", - "Rho", - "RightAngleBracket", - "RightArrow", - "RightArrowBar", - "RightArrowLeftArrow", - "RightCeiling", - "RightDoubleBracket", - "RightDownTeeVector", - "RightDownVector", - "RightDownVectorBar", - "RightFloor", - "RightTee", - "RightTeeArrow", - "RightTeeVector", - "RightTriangle", - "RightTriangleBar", - "RightTriangleEqual", - "RightUpDownVector", - "RightUpTeeVector", - "RightUpVector", - "RightUpVectorBar", - "RightVector", - "RightVectorBar", - "Rightarrow", - "Ropf", - "RoundImplies", - "Rrightarrow", - "Rscr", - "Rsh", - "RuleDelayed", - "SHCHcy", - "SHcy", - "SOFTcy", - "Sacute", - "Sc", - "Scaron", - "Scedil", - "Scirc", - "Scy", - "Sfr", - "ShortDownArrow", - "ShortLeftArrow", - "ShortRightArrow", - "ShortUpArrow", - "Sigma", - "SmallCircle", - "Sopf", - "Sqrt", - "Square", - "SquareIntersection", - "SquareSubset", - "SquareSubsetEqual", - "SquareSuperset", - "SquareSupersetEqual", - "SquareUnion", - "Sscr", - "Star", - "Sub", - "Subset", - "SubsetEqual", - "Succeeds", - "SucceedsEqual", - "SucceedsSlantEqual", - "SucceedsTilde", - "SuchThat", - "Sum", - "Sup", - "Superset", - "SupersetEqual", - "Supset", - "THORN", - "TRADE", - "TSHcy", - "TScy", - "Tab", - "Tau", - "Tcaron", - "Tcedil", - "Tcy", - "Tfr", - "Therefore", - "Theta", - "ThickSpace", - "ThinSpace", - "Tilde", - "TildeEqual", - "TildeFullEqual", - "TildeTilde", - "Topf", - "TripleDot", - "Tscr", - "Tstrok", - "Uacute", - "Uarr", - "Uarrocir", - "Ubrcy", - "Ubreve", - "Ucirc", - "Ucy", - "Udblac", - "Ufr", - "Ugrave", - "Umacr", - "UnderBar", - "UnderBrace", - "UnderBracket", - "UnderParenthesis", - "Union", - "UnionPlus", - "Uogon", - "Uopf", - "UpArrow", - "UpArrowBar", - "UpArrowDownArrow", - "UpDownArrow", - "UpEquilibrium", - "UpTee", - "UpTeeArrow", - "Uparrow", - "Updownarrow", - "UpperLeftArrow", - "UpperRightArrow", - "Upsi", - "Upsilon", - "Uring", - "Uscr", - "Utilde", - "Uuml", - "VDash", - "Vbar", - "Vcy", - "Vdash", - "Vdashl", - "Vee", - "Verbar", - "Vert", - "VerticalBar", - "VerticalLine", - "VerticalSeparator", - "VerticalTilde", - "VeryThinSpace", - "Vfr", - "Vopf", - "Vscr", - "Vvdash", - "Wcirc", - "Wedge", - "Wfr", - "Wopf", - "Wscr", - "Xfr", - "Xi", - "Xopf", - "Xscr", - "YAcy", - "YIcy", - "YUcy", - "Yacute", - "Ycirc", - "Ycy", - "Yfr", - "Yopf", - "Yscr", - "Yuml", - "ZHcy", - "Zacute", - "Zcaron", - "Zcy", - "Zdot", - "ZeroWidthSpace", - "Zeta", - "Zfr", - "Zopf", - "Zscr", - "aacute", - "abreve", - "ac", - "acE", - "acd", - "acirc", - "acute", - "acy", - "aelig", - "af", - "afr", - "agrave", - "alefsym", - "aleph", - "alpha", - "amacr", - "amalg", - "amp", - "and", - "andand", - "andd", - "andslope", - "andv", - "ang", - "ange", - "angle", - "angmsd", - "angmsdaa", - "angmsdab", - "angmsdac", - "angmsdad", - "angmsdae", - "angmsdaf", - "angmsdag", - "angmsdah", - "angrt", - "angrtvb", - "angrtvbd", - "angsph", - "angst", - "angzarr", - "aogon", - "aopf", - "ap", - "apE", - "apacir", - "ape", - "apid", - "apos", - "approx", - "approxeq", - "aring", - "ascr", - "ast", - "asymp", - "asympeq", - "atilde", - "auml", - "awconint", - "awint", - "bNot", - "backcong", - "backepsilon", - "backprime", - "backsim", - "backsimeq", - "barvee", - "barwed", - "barwedge", - "bbrk", - "bbrktbrk", - "bcong", - "bcy", - "bdquo", - "becaus", - "because", - "bemptyv", - "bepsi", - "bernou", - "beta", - "beth", - "between", - "bfr", - "bigcap", - "bigcirc", - "bigcup", - "bigodot", - "bigoplus", - "bigotimes", - "bigsqcup", - "bigstar", - "bigtriangledown", - "bigtriangleup", - "biguplus", - "bigvee", - "bigwedge", - "bkarow", - "blacklozenge", - "blacksquare", - "blacktriangle", - "blacktriangledown", - "blacktriangleleft", - "blacktriangleright", - "blank", - "blk12", - "blk14", - "blk34", - "block", - "bne", - "bnequiv", - "bnot", - "bopf", - "bot", - "bottom", - "bowtie", - "boxDL", - "boxDR", - "boxDl", - "boxDr", - "boxH", - "boxHD", - "boxHU", - "boxHd", - "boxHu", - "boxUL", - "boxUR", - "boxUl", - "boxUr", - "boxV", - "boxVH", - "boxVL", - "boxVR", - "boxVh", - "boxVl", - "boxVr", - "boxbox", - "boxdL", - "boxdR", - "boxdl", - "boxdr", - "boxh", - "boxhD", - "boxhU", - "boxhd", - "boxhu", - "boxminus", - "boxplus", - "boxtimes", - "boxuL", - "boxuR", - "boxul", - "boxur", - "boxv", - "boxvH", - "boxvL", - "boxvR", - "boxvh", - "boxvl", - "boxvr", - "bprime", - "breve", - "brvbar", - "bscr", - "bsemi", - "bsim", - "bsime", - "bsol", - "bsolb", - "bsolhsub", - "bull", - "bullet", - "bump", - "bumpE", - "bumpe", - "bumpeq", - "cacute", - "cap", - "capand", - "capbrcup", - "capcap", - "capcup", - "capdot", - "caps", - "caret", - "caron", - "ccaps", - "ccaron", - "ccedil", - "ccirc", - "ccups", - "ccupssm", - "cdot", - "cedil", - "cemptyv", - "cent", - "centerdot", - "cfr", - "chcy", - "check", - "checkmark", - "chi", - "cir", - "cirE", - "circ", - "circeq", - "circlearrowleft", - "circlearrowright", - "circledR", - "circledS", - "circledast", - "circledcirc", - "circleddash", - "cire", - "cirfnint", - "cirmid", - "cirscir", - "clubs", - "clubsuit", - "colon", - "colone", - "coloneq", - "comma", - "commat", - "comp", - "compfn", - "complement", - "complexes", - "cong", - "congdot", - "conint", - "copf", - "coprod", - "copy", - "copysr", - "crarr", - "cross", - "cscr", - "csub", - "csube", - "csup", - "csupe", - "ctdot", - "cudarrl", - "cudarrr", - "cuepr", - "cuesc", - "cularr", - "cularrp", - "cup", - "cupbrcap", - "cupcap", - "cupcup", - "cupdot", - "cupor", - "cups", - "curarr", - "curarrm", - "curlyeqprec", - "curlyeqsucc", - "curlyvee", - "curlywedge", - "curren", - "curvearrowleft", - "curvearrowright", - "cuvee", - "cuwed", - "cwconint", - "cwint", - "cylcty", - "dArr", - "dHar", - "dagger", - "daleth", - "darr", - "dash", - "dashv", - "dbkarow", - "dblac", - "dcaron", - "dcy", - "dd", - "ddagger", - "ddarr", - "ddotseq", - "deg", - "delta", - "demptyv", - "dfisht", - "dfr", - "dharl", - "dharr", - "diam", - "diamond", - "diamondsuit", - "diams", - "die", - "digamma", - "disin", - "div", - "divide", - "divideontimes", - "divonx", - "djcy", - "dlcorn", - "dlcrop", - "dollar", - "dopf", - "dot", - "doteq", - "doteqdot", - "dotminus", - "dotplus", - "dotsquare", - "doublebarwedge", - "downarrow", - "downdownarrows", - "downharpoonleft", - "downharpoonright", - "drbkarow", - "drcorn", - "drcrop", - "dscr", - "dscy", - "dsol", - "dstrok", - "dtdot", - "dtri", - "dtrif", - "duarr", - "duhar", - "dwangle", - "dzcy", - "dzigrarr", - "eDDot", - "eDot", - "eacute", - "easter", - "ecaron", - "ecir", - "ecirc", - "ecolon", - "ecy", - "edot", - "ee", - "efDot", - "efr", - "eg", - "egrave", - "egs", - "egsdot", - "el", - "elinters", - "ell", - "els", - "elsdot", - "emacr", - "empty", - "emptyset", - "emptyv", - "emsp13", - "emsp14", - "emsp", - "eng", - "ensp", - "eogon", - "eopf", - "epar", - "eparsl", - "eplus", - "epsi", - "epsilon", - "epsiv", - "eqcirc", - "eqcolon", - "eqsim", - "eqslantgtr", - "eqslantless", - "equals", - "equest", - "equiv", - "equivDD", - "eqvparsl", - "erDot", - "erarr", - "escr", - "esdot", - "esim", - "eta", - "eth", - "euml", - "euro", - "excl", - "exist", - "expectation", - "exponentiale", - "fallingdotseq", - "fcy", - "female", - "ffilig", - "fflig", - "ffllig", - "ffr", - "filig", - "fjlig", - "flat", - "fllig", - "fltns", - "fnof", - "fopf", - "forall", - "fork", - "forkv", - "fpartint", - "frac12", - "frac13", - "frac14", - "frac15", - "frac16", - "frac18", - "frac23", - "frac25", - "frac34", - "frac35", - "frac38", - "frac45", - "frac56", - "frac58", - "frac78", - "frasl", - "frown", - "fscr", - "gE", - "gEl", - "gacute", - "gamma", - "gammad", - "gap", - "gbreve", - "gcirc", - "gcy", - "gdot", - "ge", - "gel", - "geq", - "geqq", - "geqslant", - "ges", - "gescc", - "gesdot", - "gesdoto", - "gesdotol", - "gesl", - "gesles", - "gfr", - "gg", - "ggg", - "gimel", - "gjcy", - "gl", - "glE", - "gla", - "glj", - "gnE", - "gnap", - "gnapprox", - "gne", - "gneq", - "gneqq", - "gnsim", - "gopf", - "grave", - "gscr", - "gsim", - "gsime", - "gsiml", - "gt", - "gtcc", - "gtcir", - "gtdot", - "gtlPar", - "gtquest", - "gtrapprox", - "gtrarr", - "gtrdot", - "gtreqless", - "gtreqqless", - "gtrless", - "gtrsim", - "gvertneqq", - "gvnE", - "hArr", - "hairsp", - "half", - "hamilt", - "hardcy", - "harr", - "harrcir", - "harrw", - "hbar", - "hcirc", - "hearts", - "heartsuit", - "hellip", - "hercon", - "hfr", - "hksearow", - "hkswarow", - "hoarr", - "homtht", - "hookleftarrow", - "hookrightarrow", - "hopf", - "horbar", - "hscr", - "hslash", - "hstrok", - "hybull", - "hyphen", - "iacute", - "ic", - "icirc", - "icy", - "iecy", - "iexcl", - "iff", - "ifr", - "igrave", - "ii", - "iiiint", - "iiint", - "iinfin", - "iiota", - "ijlig", - "imacr", - "image", - "imagline", - "imagpart", - "imath", - "imof", - "imped", - "in", - "incare", - "infin", - "infintie", - "inodot", - "int", - "intcal", - "integers", - "intercal", - "intlarhk", - "intprod", - "iocy", - "iogon", - "iopf", - "iota", - "iprod", - "iquest", - "iscr", - "isin", - "isinE", - "isindot", - "isins", - "isinsv", - "isinv", - "it", - "itilde", - "iukcy", - "iuml", - "jcirc", - "jcy", - "jfr", - "jmath", - "jopf", - "jscr", - "jsercy", - "jukcy", - "kappa", - "kappav", - "kcedil", - "kcy", - "kfr", - "kgreen", - "khcy", - "kjcy", - "kopf", - "kscr", - "lAarr", - "lArr", - "lAtail", - "lBarr", - "lE", - "lEg", - "lHar", - "lacute", - "laemptyv", - "lagran", - "lambda", - "lang", - "langd", - "langle", - "lap", - "laquo", - "larr", - "larrb", - "larrbfs", - "larrfs", - "larrhk", - "larrlp", - "larrpl", - "larrsim", - "larrtl", - "lat", - "latail", - "late", - "lates", - "lbarr", - "lbbrk", - "lbrace", - "lbrack", - "lbrke", - "lbrksld", - "lbrkslu", - "lcaron", - "lcedil", - "lceil", - "lcub", - "lcy", - "ldca", - "ldquo", - "ldquor", - "ldrdhar", - "ldrushar", - "ldsh", - "le", - "leftarrow", - "leftarrowtail", - "leftharpoondown", - "leftharpoonup", - "leftleftarrows", - "leftrightarrow", - "leftrightarrows", - "leftrightharpoons", - "leftrightsquigarrow", - "leftthreetimes", - "leg", - "leq", - "leqq", - "leqslant", - "les", - "lescc", - "lesdot", - "lesdoto", - "lesdotor", - "lesg", - "lesges", - "lessapprox", - "lessdot", - "lesseqgtr", - "lesseqqgtr", - "lessgtr", - "lesssim", - "lfisht", - "lfloor", - "lfr", - "lg", - "lgE", - "lhard", - "lharu", - "lharul", - "lhblk", - "ljcy", - "ll", - "llarr", - "llcorner", - "llhard", - "lltri", - "lmidot", - "lmoust", - "lmoustache", - "lnE", - "lnap", - "lnapprox", - "lne", - "lneq", - "lneqq", - "lnsim", - "loang", - "loarr", - "lobrk", - "longleftarrow", - "longleftrightarrow", - "longmapsto", - "longrightarrow", - "looparrowleft", - "looparrowright", - "lopar", - "lopf", - "loplus", - "lotimes", - "lowast", - "lowbar", - "loz", - "lozenge", - "lozf", - "lpar", - "lparlt", - "lrarr", - "lrcorner", - "lrhar", - "lrhard", - "lrm", - "lrtri", - "lsaquo", - "lscr", - "lsh", - "lsim", - "lsime", - "lsimg", - "lsqb", - "lsquo", - "lsquor", - "lstrok", - "lt", - "ltcc", - "ltcir", - "ltdot", - "lthree", - "ltimes", - "ltlarr", - "ltquest", - "ltrPar", - "ltri", - "ltrie", - "ltrif", - "lurdshar", - "luruhar", - "lvertneqq", - "lvnE", - "mDDot", - "macr", - "male", - "malt", - "maltese", - "map", - "mapsto", - "mapstodown", - "mapstoleft", - "mapstoup", - "marker", - "mcomma", - "mcy", - "mdash", - "measuredangle", - "mfr", - "mho", - "micro", - "mid", - "midast", - "midcir", - "middot", - "minus", - "minusb", - "minusd", - "minusdu", - "mlcp", - "mldr", - "mnplus", - "models", - "mopf", - "mp", - "mscr", - "mstpos", - "mu", - "multimap", - "mumap", - "nGg", - "nGt", - "nGtv", - "nLeftarrow", - "nLeftrightarrow", - "nLl", - "nLt", - "nLtv", - "nRightarrow", - "nVDash", - "nVdash", - "nabla", - "nacute", - "nang", - "nap", - "napE", - "napid", - "napos", - "napprox", - "natur", - "natural", - "naturals", - "nbsp", - "nbump", - "nbumpe", - "ncap", - "ncaron", - "ncedil", - "ncong", - "ncongdot", - "ncup", - "ncy", - "ndash", - "ne", - "neArr", - "nearhk", - "nearr", - "nearrow", - "nedot", - "nequiv", - "nesear", - "nesim", - "nexist", - "nexists", - "nfr", - "ngE", - "nge", - "ngeq", - "ngeqq", - "ngeqslant", - "nges", - "ngsim", - "ngt", - "ngtr", - "nhArr", - "nharr", - "nhpar", - "ni", - "nis", - "nisd", - "niv", - "njcy", - "nlArr", - "nlE", - "nlarr", - "nldr", - "nle", - "nleftarrow", - "nleftrightarrow", - "nleq", - "nleqq", - "nleqslant", - "nles", - "nless", - "nlsim", - "nlt", - "nltri", - "nltrie", - "nmid", - "nopf", - "not", - "notin", - "notinE", - "notindot", - "notinva", - "notinvb", - "notinvc", - "notni", - "notniva", - "notnivb", - "notnivc", - "npar", - "nparallel", - "nparsl", - "npart", - "npolint", - "npr", - "nprcue", - "npre", - "nprec", - "npreceq", - "nrArr", - "nrarr", - "nrarrc", - "nrarrw", - "nrightarrow", - "nrtri", - "nrtrie", - "nsc", - "nsccue", - "nsce", - "nscr", - "nshortmid", - "nshortparallel", - "nsim", - "nsime", - "nsimeq", - "nsmid", - "nspar", - "nsqsube", - "nsqsupe", - "nsub", - "nsubE", - "nsube", - "nsubset", - "nsubseteq", - "nsubseteqq", - "nsucc", - "nsucceq", - "nsup", - "nsupE", - "nsupe", - "nsupset", - "nsupseteq", - "nsupseteqq", - "ntgl", - "ntilde", - "ntlg", - "ntriangleleft", - "ntrianglelefteq", - "ntriangleright", - "ntrianglerighteq", - "nu", - "num", - "numero", - "numsp", - "nvDash", - "nvHarr", - "nvap", - "nvdash", - "nvge", - "nvgt", - "nvinfin", - "nvlArr", - "nvle", - "nvlt", - "nvltrie", - "nvrArr", - "nvrtrie", - "nvsim", - "nwArr", - "nwarhk", - "nwarr", - "nwarrow", - "nwnear", - "oS", - "oacute", - "oast", - "ocir", - "ocirc", - "ocy", - "odash", - "odblac", - "odiv", - "odot", - "odsold", - "oelig", - "ofcir", - "ofr", - "ogon", - "ograve", - "ogt", - "ohbar", - "ohm", - "oint", - "olarr", - "olcir", - "olcross", - "oline", - "olt", - "omacr", - "omega", - "omicron", - "omid", - "ominus", - "oopf", - "opar", - "operp", - "oplus", - "or", - "orarr", - "ord", - "order", - "orderof", - "ordf", - "ordm", - "origof", - "oror", - "orslope", - "orv", - "oscr", - "oslash", - "osol", - "otilde", - "otimes", - "otimesas", - "ouml", - "ovbar", - "par", - "para", - "parallel", - "parsim", - "parsl", - "part", - "pcy", - "percnt", - "period", - "permil", - "perp", - "pertenk", - "pfr", - "phi", - "phiv", - "phmmat", - "phone", - "pi", - "pitchfork", - "piv", - "planck", - "planckh", - "plankv", - "plus", - "plusacir", - "plusb", - "pluscir", - "plusdo", - "plusdu", - "pluse", - "plusmn", - "plussim", - "plustwo", - "pm", - "pointint", - "popf", - "pound", - "pr", - "prE", - "prap", - "prcue", - "pre", - "prec", - "precapprox", - "preccurlyeq", - "preceq", - "precnapprox", - "precneqq", - "precnsim", - "precsim", - "prime", - "primes", - "prnE", - "prnap", - "prnsim", - "prod", - "profalar", - "profline", - "profsurf", - "prop", - "propto", - "prsim", - "prurel", - "pscr", - "psi", - "puncsp", - "qfr", - "qint", - "qopf", - "qprime", - "qscr", - "quaternions", - "quatint", - "quest", - "questeq", - "quot", - "rAarr", - "rArr", - "rAtail", - "rBarr", - "rHar", - "race", - "racute", - "radic", - "raemptyv", - "rang", - "rangd", - "range", - "rangle", - "raquo", - "rarr", - "rarrap", - "rarrb", - "rarrbfs", - "rarrc", - "rarrfs", - "rarrhk", - "rarrlp", - "rarrpl", - "rarrsim", - "rarrtl", - "rarrw", - "ratail", - "ratio", - "rationals", - "rbarr", - "rbbrk", - "rbrace", - "rbrack", - "rbrke", - "rbrksld", - "rbrkslu", - "rcaron", - "rcedil", - "rceil", - "rcub", - "rcy", - "rdca", - "rdldhar", - "rdquo", - "rdquor", - "rdsh", - "real", - "realine", - "realpart", - "reals", - "rect", - "reg", - "rfisht", - "rfloor", - "rfr", - "rhard", - "rharu", - "rharul", - "rho", - "rhov", - "rightarrow", - "rightarrowtail", - "rightharpoondown", - "rightharpoonup", - "rightleftarrows", - "rightleftharpoons", - "rightrightarrows", - "rightsquigarrow", - "rightthreetimes", - "ring", - "risingdotseq", - "rlarr", - "rlhar", - "rlm", - "rmoust", - "rmoustache", - "rnmid", - "roang", - "roarr", - "robrk", - "ropar", - "ropf", - "roplus", - "rotimes", - "rpar", - "rpargt", - "rppolint", - "rrarr", - "rsaquo", - "rscr", - "rsh", - "rsqb", - "rsquo", - "rsquor", - "rthree", - "rtimes", - "rtri", - "rtrie", - "rtrif", - "rtriltri", - "ruluhar", - "rx", - "sacute", - "sbquo", - "sc", - "scE", - "scap", - "scaron", - "sccue", - "sce", - "scedil", - "scirc", - "scnE", - "scnap", - "scnsim", - "scpolint", - "scsim", - "scy", - "sdot", - "sdotb", - "sdote", - "seArr", - "searhk", - "searr", - "searrow", - "sect", - "semi", - "seswar", - "setminus", - "setmn", - "sext", - "sfr", - "sfrown", - "sharp", - "shchcy", - "shcy", - "shortmid", - "shortparallel", - "shy", - "sigma", - "sigmaf", - "sigmav", - "sim", - "simdot", - "sime", - "simeq", - "simg", - "simgE", - "siml", - "simlE", - "simne", - "simplus", - "simrarr", - "slarr", - "smallsetminus", - "smashp", - "smeparsl", - "smid", - "smile", - "smt", - "smte", - "smtes", - "softcy", - "sol", - "solb", - "solbar", - "sopf", - "spades", - "spadesuit", - "spar", - "sqcap", - "sqcaps", - "sqcup", - "sqcups", - "sqsub", - "sqsube", - "sqsubset", - "sqsubseteq", - "sqsup", - "sqsupe", - "sqsupset", - "sqsupseteq", - "squ", - "square", - "squarf", - "squf", - "srarr", - "sscr", - "ssetmn", - "ssmile", - "sstarf", - "star", - "starf", - "straightepsilon", - "straightphi", - "strns", - "sub", - "subE", - "subdot", - "sube", - "subedot", - "submult", - "subnE", - "subne", - "subplus", - "subrarr", - "subset", - "subseteq", - "subseteqq", - "subsetneq", - "subsetneqq", - "subsim", - "subsub", - "subsup", - "succ", - "succapprox", - "succcurlyeq", - "succeq", - "succnapprox", - "succneqq", - "succnsim", - "succsim", - "sum", - "sung", - "sup1", - "sup2", - "sup3", - "sup", - "supE", - "supdot", - "supdsub", - "supe", - "supedot", - "suphsol", - "suphsub", - "suplarr", - "supmult", - "supnE", - "supne", - "supplus", - "supset", - "supseteq", - "supseteqq", - "supsetneq", - "supsetneqq", - "supsim", - "supsub", - "supsup", - "swArr", - "swarhk", - "swarr", - "swarrow", - "swnwar", - "szlig", - "target", - "tau", - "tbrk", - "tcaron", - "tcedil", - "tcy", - "tdot", - "telrec", - "tfr", - "there4", - "therefore", - "theta", - "thetasym", - "thetav", - "thickapprox", - "thicksim", - "thinsp", - "thkap", - "thksim", - "thorn", - "tilde", - "times", - "timesb", - "timesbar", - "timesd", - "tint", - "toea", - "top", - "topbot", - "topcir", - "topf", - "topfork", - "tosa", - "tprime", - "trade", - "triangle", - "triangledown", - "triangleleft", - "trianglelefteq", - "triangleq", - "triangleright", - "trianglerighteq", - "tridot", - "trie", - "triminus", - "triplus", - "trisb", - "tritime", - "trpezium", - "tscr", - "tscy", - "tshcy", - "tstrok", - "twixt", - "twoheadleftarrow", - "twoheadrightarrow", - "uArr", - "uHar", - "uacute", - "uarr", - "ubrcy", - "ubreve", - "ucirc", - "ucy", - "udarr", - "udblac", - "udhar", - "ufisht", - "ufr", - "ugrave", - "uharl", - "uharr", - "uhblk", - "ulcorn", - "ulcorner", - "ulcrop", - "ultri", - "umacr", - "uml", - "uogon", - "uopf", - "uparrow", - "updownarrow", - "upharpoonleft", - "upharpoonright", - "uplus", - "upsi", - "upsih", - "upsilon", - "upuparrows", - "urcorn", - "urcorner", - "urcrop", - "uring", - "urtri", - "uscr", - "utdot", - "utilde", - "utri", - "utrif", - "uuarr", - "uuml", - "uwangle", - "vArr", - "vBar", - "vBarv", - "vDash", - "vangrt", - "varepsilon", - "varkappa", - "varnothing", - "varphi", - "varpi", - "varpropto", - "varr", - "varrho", - "varsigma", - "varsubsetneq", - "varsubsetneqq", - "varsupsetneq", - "varsupsetneqq", - "vartheta", - "vartriangleleft", - "vartriangleright", - "vcy", - "vdash", - "vee", - "veebar", - "veeeq", - "vellip", - "verbar", - "vert", - "vfr", - "vltri", - "vnsub", - "vnsup", - "vopf", - "vprop", - "vrtri", - "vscr", - "vsubnE", - "vsubne", - "vsupnE", - "vsupne", - "vzigzag", - "wcirc", - "wedbar", - "wedge", - "wedgeq", - "weierp", - "wfr", - "wopf", - "wp", - "wr", - "wreath", - "wscr", - "xcap", - "xcirc", - "xcup", - "xdtri", - "xfr", - "xhArr", - "xharr", - "xi", - "xlArr", - "xlarr", - "xmap", - "xnis", - "xodot", - "xopf", - "xoplus", - "xotime", - "xrArr", - "xrarr", - "xscr", - "xsqcup", - "xuplus", - "xutri", - "xvee", - "xwedge", - "yacute", - "yacy", - "ycirc", - "ycy", - "yen", - "yfr", - "yicy", - "yopf", - "yscr", - "yucy", - "yuml", - "zacute", - "zcaron", - "zcy", - "zdot", - "zeetrf", - "zeta", - "zfr", - "zhcy", - "zigrarr", - "zopf", - "zscr", - "zwj", - "zwnj", -]; - -/// List of values corresponding to names of named -/// [character references][character_reference]. -/// -/// The corresponding names of this list are stored in -/// [`CHARACTER_REFERENCE_NAMES`][]. -/// They correspond through their index. -/// /// ## References /// /// * [*§ 2.5 Entity and numeric character references* in `CommonMark`](https://spec.commonmark.org/0.30/#entity-and-numeric-character-references) /// /// [character_reference]: crate::construct::character_reference -pub const CHARACTER_REFERENCE_VALUES: [&str; 2125] = [ - "Æ", "&", "Á", "Ă", "Â", "А", "𝔄", "À", "Α", "Ā", "⩓", "Ą", "𝔸", "", "Å", "𝒜", "≔", "Ã", "Ä", - "∖", "⫧", "⌆", "Б", "∵", "ℬ", "Β", "𝔅", "𝔹", "˘", "ℬ", "≎", "Ч", "©", "Ć", "⋒", "ⅅ", "ℭ", "Č", - "Ç", "Ĉ", "∰", "Ċ", "¸", "·", "ℭ", "Χ", "⊙", "⊖", "⊕", "⊗", "∲", "”", "’", "∷", "⩴", "≡", "∯", - "∮", "ℂ", "∐", "∳", "⨯", "𝒞", "⋓", "≍", "ⅅ", "⤑", "Ђ", "Ѕ", "Џ", "‡", "↡", "⫤", "Ď", "Д", "∇", - "Δ", "𝔇", "´", "˙", "˝", "`", "˜", "⋄", "ⅆ", "𝔻", "¨", "⃜", "≐", "∯", "¨", "⇓", "⇐", "⇔", "⫤", - "⟸", "⟺", "⟹", "⇒", "⊨", "⇑", "⇕", "∥", "↓", "⤓", "⇵", "̑", "⥐", "⥞", "↽", "⥖", "⥟", "⇁", "⥗", - "⊤", "↧", "⇓", "𝒟", "Đ", "Ŋ", "Ð", "É", "Ě", "Ê", "Э", "Ė", "𝔈", "È", "∈", "Ē", "◻", "▫", "Ę", - "𝔼", "Ε", "⩵", "≂", "⇌", "ℰ", "⩳", "Η", "Ë", "∃", "ⅇ", "Ф", "𝔉", "◼", "▪", "𝔽", "∀", "ℱ", "ℱ", - "Ѓ", ">", "Γ", "Ϝ", "Ğ", "Ģ", "Ĝ", "Г", "Ġ", "𝔊", "⋙", "𝔾", "≥", "⋛", "≧", "⪢", "≷", "⩾", "≳", - "𝒢", "≫", "Ъ", "ˇ", "^", "Ĥ", "ℌ", "ℋ", "ℍ", "─", "ℋ", "Ħ", "≎", "≏", "Е", "IJ", "Ё", "Í", "Î", - "И", "İ", "ℑ", "Ì", "ℑ", "Ī", "ⅈ", "⇒", "∬", "∫", "⋂", "", "", "Į", "𝕀", "Ι", "ℐ", "Ĩ", "І", - "Ï", "Ĵ", "Й", "𝔍", "𝕁", "𝒥", "Ј", "Є", "Х", "Ќ", "Κ", "Ķ", "К", "𝔎", "𝕂", "𝒦", "Љ", "<", "Ĺ", - "Λ", "⟪", "ℒ", "↞", "Ľ", "Ļ", "Л", "⟨", "←", "⇤", "⇆", "⌈", "⟦", "⥡", "⇃", "⥙", "⌊", "↔", "⥎", - "⊣", "↤", "⥚", "⊲", "⧏", "⊴", "⥑", "⥠", "↿", "⥘", "↼", "⥒", "⇐", "⇔", "⋚", "≦", "≶", "⪡", "⩽", - "≲", "𝔏", "⋘", "⇚", "Ŀ", "⟵", "⟷", "⟶", "⟸", "⟺", "⟹", "𝕃", "↙", "↘", "ℒ", "↰", "Ł", "≪", "⤅", - "М", " ", "ℳ", "𝔐", "∓", "𝕄", "ℳ", "Μ", "Њ", "Ń", "Ň", "Ņ", "Н", "\u{200B}", "\u{200B}", - "\u{200B}", "\u{200B}", "≫", "≪", "\n", "𝔑", "\u{2060}", " ", "ℕ", "⫬", "≢", "≭", "∦", "∉", - "≠", "≂̸", "∄", "≯", "≱", "≧̸", "≫̸", "≹", "⩾̸", "≵", "≎̸", "≏̸", "⋪", "⧏̸", "⋬", "≮", "≰", "≸", "≪̸", - "⩽̸", "≴", "⪢̸", "⪡̸", "⊀", "⪯̸", "⋠", "∌", "⋫", "⧐̸", "⋭", "⊏̸", "⋢", "⊐̸", "⋣", "⊂⃒", "⊈", "⊁", "⪰̸", - "⋡", "≿̸", "⊃⃒", "⊉", "≁", "≄", "≇", "≉", "∤", "𝒩", "Ñ", "Ν", "Œ", "Ó", "Ô", "О", "Ő", "𝔒", "Ò", - "Ō", "Ω", "Ο", "𝕆", "“", "‘", "⩔", "𝒪", "Ø", "Õ", "⨷", "Ö", "‾", "⏞", "⎴", "⏜", "∂", "П", "𝔓", - "Φ", "Π", "±", "ℌ", "ℙ", "⪻", "≺", "⪯", "≼", "≾", "″", "∏", "∷", "∝", "𝒫", "Ψ", "\"", "𝔔", "ℚ", - "𝒬", "⤐", "®", "Ŕ", "⟫", "↠", "⤖", "Ř", "Ŗ", "Р", "ℜ", "∋", "⇋", "⥯", "ℜ", "Ρ", "⟩", "→", "⇥", - "⇄", "⌉", "⟧", "⥝", "⇂", "⥕", "⌋", "⊢", "↦", "⥛", "⊳", "⧐", "⊵", "⥏", "⥜", "↾", "⥔", "⇀", "⥓", - "⇒", "ℝ", "⥰", "⇛", "ℛ", "↱", "⧴", "Щ", "Ш", "Ь", "Ś", "⪼", "Š", "Ş", "Ŝ", "С", "𝔖", "↓", "←", - "→", "↑", "Σ", "∘", "𝕊", "√", "□", "⊓", "⊏", "⊑", "⊐", "⊒", "⊔", "𝒮", "⋆", "⋐", "⋐", "⊆", "≻", - "⪰", "≽", "≿", "∋", "∑", "⋑", "⊃", "⊇", "⋑", "Þ", "™", "Ћ", "Ц", "\t", "Τ", "Ť", "Ţ", "Т", "𝔗", - "∴", "Θ", " ", " ", "∼", "≃", "≅", "≈", "𝕋", "⃛", "𝒯", "Ŧ", "Ú", "↟", "⥉", "Ў", "Ŭ", "Û", "У", - "Ű", "𝔘", "Ù", "Ū", "_", "⏟", "⎵", "⏝", "⋃", "⊎", "Ų", "𝕌", "↑", "⤒", "⇅", "↕", "⥮", "⊥", "↥", - "⇑", "⇕", "↖", "↗", "ϒ", "Υ", "Ů", "𝒰", "Ũ", "Ü", "⊫", "⫫", "В", "⊩", "⫦", "⋁", "‖", "‖", "∣", - "|", "❘", "≀", " ", "𝔙", "𝕍", "𝒱", "⊪", "Ŵ", "⋀", "𝔚", "𝕎", "𝒲", "𝔛", "Ξ", "𝕏", "𝒳", "Я", "Ї", - "Ю", "Ý", "Ŷ", "Ы", "𝔜", "𝕐", "𝒴", "Ÿ", "Ж", "Ź", "Ž", "З", "Ż", "\u{200B}", "Ζ", "ℨ", "ℤ", - "𝒵", "á", "ă", "∾", "∾̳", "∿", "â", "´", "а", "æ", "", "𝔞", "à", "ℵ", "ℵ", "α", "ā", "⨿", "&", - "∧", "⩕", "⩜", "⩘", "⩚", "∠", "⦤", "∠", "∡", "⦨", "⦩", "⦪", "⦫", "⦬", "⦭", "⦮", "⦯", "∟", "⊾", - "⦝", "∢", "Å", "⍼", "ą", "𝕒", "≈", "⩰", "⩯", "≊", "≋", "'", "≈", "≊", "å", "𝒶", "*", "≈", "≍", - "ã", "ä", "∳", "⨑", "⫭", "≌", "϶", "‵", "∽", "⋍", "⊽", "⌅", "⌅", "⎵", "⎶", "≌", "б", "„", "∵", - "∵", "⦰", "϶", "ℬ", "β", "ℶ", "≬", "𝔟", "⋂", "◯", "⋃", "⨀", "⨁", "⨂", "⨆", "★", "▽", "△", "⨄", - "⋁", "⋀", "⤍", "⧫", "▪", "▴", "▾", "◂", "▸", "␣", "▒", "░", "▓", "█", "=⃥", "≡⃥", "⌐", "𝕓", "⊥", - "⊥", "⋈", "╗", "╔", "╖", "╓", "═", "╦", "╩", "╤", "╧", "╝", "╚", "╜", "╙", "║", "╬", "╣", "╠", - "╫", "╢", "╟", "⧉", "╕", "╒", "┐", "┌", "─", "╥", "╨", "┬", "┴", "⊟", "⊞", "⊠", "╛", "╘", "┘", - "└", "│", "╪", "╡", "╞", "┼", "┤", "├", "‵", "˘", "¦", "𝒷", "⁏", "∽", "⋍", "\\", "⧅", "⟈", "•", - "•", "≎", "⪮", "≏", "≏", "ć", "∩", "⩄", "⩉", "⩋", "⩇", "⩀", "∩︀", "⁁", "ˇ", "⩍", "č", "ç", "ĉ", - "⩌", "⩐", "ċ", "¸", "⦲", "¢", "·", "𝔠", "ч", "✓", "✓", "χ", "○", "⧃", "ˆ", "≗", "↺", "↻", "®", - "Ⓢ", "⊛", "⊚", "⊝", "≗", "⨐", "⫯", "⧂", "♣", "♣", ":", "≔", "≔", ",", "@", "∁", "∘", "∁", "ℂ", - "≅", "⩭", "∮", "𝕔", "∐", "©", "℗", "↵", "✗", "𝒸", "⫏", "⫑", "⫐", "⫒", "⋯", "⤸", "⤵", "⋞", "⋟", - "↶", "⤽", "∪", "⩈", "⩆", "⩊", "⊍", "⩅", "∪︀", "↷", "⤼", "⋞", "⋟", "⋎", "⋏", "¤", "↶", "↷", "⋎", - "⋏", "∲", "∱", "⌭", "⇓", "⥥", "†", "ℸ", "↓", "‐", "⊣", "⤏", "˝", "ď", "д", "ⅆ", "‡", "⇊", "⩷", - "°", "δ", "⦱", "⥿", "𝔡", "⇃", "⇂", "⋄", "⋄", "♦", "♦", "¨", "ϝ", "⋲", "÷", "÷", "⋇", "⋇", "ђ", - "⌞", "⌍", "$", "𝕕", "˙", "≐", "≑", "∸", "∔", "⊡", "⌆", "↓", "⇊", "⇃", "⇂", "⤐", "⌟", "⌌", "𝒹", - "ѕ", "⧶", "đ", "⋱", "▿", "▾", "⇵", "⥯", "⦦", "џ", "⟿", "⩷", "≑", "é", "⩮", "ě", "≖", "ê", "≕", - "э", "ė", "ⅇ", "≒", "𝔢", "⪚", "è", "⪖", "⪘", "⪙", "⏧", "ℓ", "⪕", "⪗", "ē", "∅", "∅", "∅", " ", - " ", " ", "ŋ", " ", "ę", "𝕖", "⋕", "⧣", "⩱", "ε", "ε", "ϵ", "≖", "≕", "≂", "⪖", "⪕", "=", "≟", - "≡", "⩸", "⧥", "≓", "⥱", "ℯ", "≐", "≂", "η", "ð", "ë", "€", "!", "∃", "ℰ", "ⅇ", "≒", "ф", "♀", - "ffi", "ff", "ffl", "𝔣", "fi", "fj", "♭", "fl", "▱", "ƒ", "𝕗", "∀", "⋔", "⫙", "⨍", "½", "⅓", "¼", "⅕", - "⅙", "⅛", "⅔", "⅖", "¾", "⅗", "⅜", "⅘", "⅚", "⅝", "⅞", "⁄", "⌢", "𝒻", "≧", "⪌", "ǵ", "γ", "ϝ", - "⪆", "ğ", "ĝ", "г", "ġ", "≥", "⋛", "≥", "≧", "⩾", "⩾", "⪩", "⪀", "⪂", "⪄", "⋛︀", "⪔", "𝔤", "≫", - "⋙", "ℷ", "ѓ", "≷", "⪒", "⪥", "⪤", "≩", "⪊", "⪊", "⪈", "⪈", "≩", "⋧", "𝕘", "`", "ℊ", "≳", "⪎", - "⪐", ">", "⪧", "⩺", "⋗", "⦕", "⩼", "⪆", "⥸", "⋗", "⋛", "⪌", "≷", "≳", "≩︀", "≩︀", "⇔", " ", "½", - "ℋ", "ъ", "↔", "⥈", "↭", "ℏ", "ĥ", "♥", "♥", "…", "⊹", "𝔥", "⤥", "⤦", "⇿", "∻", "↩", "↪", "𝕙", - "―", "𝒽", "ℏ", "ħ", "⁃", "‐", "í", "", "î", "и", "е", "¡", "⇔", "𝔦", "ì", "ⅈ", "⨌", "∭", "⧜", - "℩", "ij", "ī", "ℑ", "ℐ", "ℑ", "ı", "⊷", "Ƶ", "∈", "℅", "∞", "⧝", "ı", "∫", "⊺", "ℤ", "⊺", "⨗", - "⨼", "ё", "į", "𝕚", "ι", "⨼", "¿", "𝒾", "∈", "⋹", "⋵", "⋴", "⋳", "∈", "", "ĩ", "і", "ï", "ĵ", - "й", "𝔧", "ȷ", "𝕛", "𝒿", "ј", "є", "κ", "ϰ", "ķ", "к", "𝔨", "ĸ", "х", "ќ", "𝕜", "𝓀", "⇚", "⇐", - "⤛", "⤎", "≦", "⪋", "⥢", "ĺ", "⦴", "ℒ", "λ", "⟨", "⦑", "⟨", "⪅", "«", "←", "⇤", "⤟", "⤝", "↩", - "↫", "⤹", "⥳", "↢", "⪫", "⤙", "⪭", "⪭︀", "⤌", "❲", "{", "[", "⦋", "⦏", "⦍", "ľ", "ļ", "⌈", "{", - "л", "⤶", "“", "„", "⥧", "⥋", "↲", "≤", "←", "↢", "↽", "↼", "⇇", "↔", "⇆", "⇋", "↭", "⋋", "⋚", - "≤", "≦", "⩽", "⩽", "⪨", "⩿", "⪁", "⪃", "⋚︀", "⪓", "⪅", "⋖", "⋚", "⪋", "≶", "≲", "⥼", "⌊", "𝔩", - "≶", "⪑", "↽", "↼", "⥪", "▄", "љ", "≪", "⇇", "⌞", "⥫", "◺", "ŀ", "⎰", "⎰", "≨", "⪉", "⪉", "⪇", - "⪇", "≨", "⋦", "⟬", "⇽", "⟦", "⟵", "⟷", "⟼", "⟶", "↫", "↬", "⦅", "𝕝", "⨭", "⨴", "∗", "_", "◊", - "◊", "⧫", "(", "⦓", "⇆", "⌟", "⇋", "⥭", "", "⊿", "‹", "𝓁", "↰", "≲", "⪍", "⪏", "[", "‘", "‚", - "ł", "<", "⪦", "⩹", "⋖", "⋋", "⋉", "⥶", "⩻", "⦖", "◃", "⊴", "◂", "⥊", "⥦", "≨︀", "≨︀", "∺", "¯", - "♂", "✠", "✠", "↦", "↦", "↧", "↤", "↥", "▮", "⨩", "м", "—", "∡", "𝔪", "℧", "µ", "∣", "*", "⫰", - "·", "−", "⊟", "∸", "⨪", "⫛", "…", "∓", "⊧", "𝕞", "∓", "𝓂", "∾", "μ", "⊸", "⊸", "⋙̸", "≫⃒", "≫̸", - "⇍", "⇎", "⋘̸", "≪⃒", "≪̸", "⇏", "⊯", "⊮", "∇", "ń", "∠⃒", "≉", "⩰̸", "≋̸", "ʼn", "≉", "♮", "♮", "ℕ", - " ", "≎̸", "≏̸", "⩃", "ň", "ņ", "≇", "⩭̸", "⩂", "н", "–", "≠", "⇗", "⤤", "↗", "↗", "≐̸", "≢", "⤨", - "≂̸", "∄", "∄", "𝔫", "≧̸", "≱", "≱", "≧̸", "⩾̸", "⩾̸", "≵", "≯", "≯", "⇎", "↮", "⫲", "∋", "⋼", "⋺", - "∋", "њ", "⇍", "≦̸", "↚", "‥", "≰", "↚", "↮", "≰", "≦̸", "⩽̸", "⩽̸", "≮", "≴", "≮", "⋪", "⋬", "∤", - "𝕟", "¬", "∉", "⋹̸", "⋵̸", "∉", "⋷", "⋶", "∌", "∌", "⋾", "⋽", "∦", "∦", "⫽⃥", "∂̸", "⨔", "⊀", "⋠", - "⪯̸", "⊀", "⪯̸", "⇏", "↛", "⤳̸", "↝̸", "↛", "⋫", "⋭", "⊁", "⋡", "⪰̸", "𝓃", "∤", "∦", "≁", "≄", "≄", - "∤", "∦", "⋢", "⋣", "⊄", "⫅̸", "⊈", "⊂⃒", "⊈", "⫅̸", "⊁", "⪰̸", "⊅", "⫆̸", "⊉", "⊃⃒", "⊉", "⫆̸", "≹", - "ñ", "≸", "⋪", "⋬", "⋫", "⋭", "ν", "#", "№", " ", "⊭", "⤄", "≍⃒", "⊬", "≥⃒", ">⃒", "⧞", "⤂", "≤⃒", - "<⃒", "⊴⃒", "⤃", "⊵⃒", "∼⃒", "⇖", "⤣", "↖", "↖", "⤧", "Ⓢ", "ó", "⊛", "⊚", "ô", "о", "⊝", "ő", "⨸", - "⊙", "⦼", "œ", "⦿", "𝔬", "˛", "ò", "⧁", "⦵", "Ω", "∮", "↺", "⦾", "⦻", "‾", "⧀", "ō", "ω", "ο", - "⦶", "⊖", "𝕠", "⦷", "⦹", "⊕", "∨", "↻", "⩝", "ℴ", "ℴ", "ª", "º", "⊶", "⩖", "⩗", "⩛", "ℴ", "ø", - "⊘", "õ", "⊗", "⨶", "ö", "⌽", "∥", "¶", "∥", "⫳", "⫽", "∂", "п", "%", ".", "‰", "⊥", "‱", "𝔭", - "φ", "ϕ", "ℳ", "☎", "π", "⋔", "ϖ", "ℏ", "ℎ", "ℏ", "+", "⨣", "⊞", "⨢", "∔", "⨥", "⩲", "±", "⨦", - "⨧", "±", "⨕", "𝕡", "£", "≺", "⪳", "⪷", "≼", "⪯", "≺", "⪷", "≼", "⪯", "⪹", "⪵", "⋨", "≾", "′", - "ℙ", "⪵", "⪹", "⋨", "∏", "⌮", "⌒", "⌓", "∝", "∝", "≾", "⊰", "𝓅", "ψ", " ", "𝔮", "⨌", "𝕢", "⁗", - "𝓆", "ℍ", "⨖", "?", "≟", "\"", "⇛", "⇒", "⤜", "⤏", "⥤", "∽̱", "ŕ", "√", "⦳", "⟩", "⦒", "⦥", "⟩", - "»", "→", "⥵", "⇥", "⤠", "⤳", "⤞", "↪", "↬", "⥅", "⥴", "↣", "↝", "⤚", "∶", "ℚ", "⤍", "❳", "}", - "]", "⦌", "⦎", "⦐", "ř", "ŗ", "⌉", "}", "р", "⤷", "⥩", "”", "”", "↳", "ℜ", "ℛ", "ℜ", "ℝ", "▭", - "®", "⥽", "⌋", "𝔯", "⇁", "⇀", "⥬", "ρ", "ϱ", "→", "↣", "⇁", "⇀", "⇄", "⇌", "⇉", "↝", "⋌", "˚", - "≓", "⇄", "⇌", "", "⎱", "⎱", "⫮", "⟭", "⇾", "⟧", "⦆", "𝕣", "⨮", "⨵", ")", "⦔", "⨒", "⇉", "›", - "𝓇", "↱", "]", "’", "’", "⋌", "⋊", "▹", "⊵", "▸", "⧎", "⥨", "℞", "ś", "‚", "≻", "⪴", "⪸", "š", - "≽", "⪰", "ş", "ŝ", "⪶", "⪺", "⋩", "⨓", "≿", "с", "⋅", "⊡", "⩦", "⇘", "⤥", "↘", "↘", "§", ";", - "⤩", "∖", "∖", "✶", "𝔰", "⌢", "♯", "щ", "ш", "∣", "∥", "\u{AD}", "σ", "ς", "ς", "∼", "⩪", "≃", - "≃", "⪞", "⪠", "⪝", "⪟", "≆", "⨤", "⥲", "←", "∖", "⨳", "⧤", "∣", "⌣", "⪪", "⪬", "⪬︀", "ь", "/", - "⧄", "⌿", "𝕤", "♠", "♠", "∥", "⊓", "⊓︀", "⊔", "⊔︀", "⊏", "⊑", "⊏", "⊑", "⊐", "⊒", "⊐", "⊒", "□", - "□", "▪", "▪", "→", "𝓈", "∖", "⌣", "⋆", "☆", "★", "ϵ", "ϕ", "¯", "⊂", "⫅", "⪽", "⊆", "⫃", "⫁", - "⫋", "⊊", "⪿", "⥹", "⊂", "⊆", "⫅", "⊊", "⫋", "⫇", "⫕", "⫓", "≻", "⪸", "≽", "⪰", "⪺", "⪶", "⋩", - "≿", "∑", "♪", "¹", "²", "³", "⊃", "⫆", "⪾", "⫘", "⊇", "⫄", "⟉", "⫗", "⥻", "⫂", "⫌", "⊋", "⫀", - "⊃", "⊇", "⫆", "⊋", "⫌", "⫈", "⫔", "⫖", "⇙", "⤦", "↙", "↙", "⤪", "ß", "⌖", "τ", "⎴", "ť", "ţ", - "т", "⃛", "⌕", "𝔱", "∴", "∴", "θ", "ϑ", "ϑ", "≈", "∼", " ", "≈", "∼", "þ", "˜", "×", "⊠", "⨱", - "⨰", "∭", "⤨", "⊤", "⌶", "⫱", "𝕥", "⫚", "⤩", "‴", "™", "▵", "▿", "◃", "⊴", "≜", "▹", "⊵", "◬", - "≜", "⨺", "⨹", "⧍", "⨻", "⏢", "𝓉", "ц", "ћ", "ŧ", "≬", "↞", "↠", "⇑", "⥣", "ú", "↑", "ў", "ŭ", - "û", "у", "⇅", "ű", "⥮", "⥾", "𝔲", "ù", "↿", "↾", "▀", "⌜", "⌜", "⌏", "◸", "ū", "¨", "ų", "𝕦", - "↑", "↕", "↿", "↾", "⊎", "υ", "ϒ", "υ", "⇈", "⌝", "⌝", "⌎", "ů", "◹", "𝓊", "⋰", "ũ", "▵", "▴", - "⇈", "ü", "⦧", "⇕", "⫨", "⫩", "⊨", "⦜", "ϵ", "ϰ", "∅", "ϕ", "ϖ", "∝", "↕", "ϱ", "ς", "⊊︀", "⫋︀", - "⊋︀", "⫌︀", "ϑ", "⊲", "⊳", "в", "⊢", "∨", "⊻", "≚", "⋮", "|", "|", "𝔳", "⊲", "⊂⃒", "⊃⃒", "𝕧", "∝", - "⊳", "𝓋", "⫋︀", "⊊︀", "⫌︀", "⊋︀", "⦚", "ŵ", "⩟", "∧", "≙", "℘", "𝔴", "𝕨", "℘", "≀", "≀", "𝓌", "⋂", - "◯", "⋃", "▽", "𝔵", "⟺", "⟷", "ξ", "⟸", "⟵", "⟼", "⋻", "⨀", "𝕩", "⨁", "⨂", "⟹", "⟶", "𝓍", "⨆", - "⨄", "△", "⋁", "⋀", "ý", "я", "ŷ", "ы", "¥", "𝔶", "ї", "𝕪", "𝓎", "ю", "ÿ", "ź", "ž", "з", "ż", - "ℨ", "ζ", "𝔷", "ж", "⇝", "𝕫", "𝓏", "", "", +pub const CHARACTER_REFERENCES: [(&str, &str); 2125] = [ + ("AElig", "Æ"), + ("AMP", "&"), + ("Aacute", "Á"), + ("Abreve", "Ă"), + ("Acirc", "Â"), + ("Acy", "А"), + ("Afr", "𝔄"), + ("Agrave", "À"), + ("Alpha", "Α"), + ("Amacr", "Ā"), + ("And", "⩓"), + ("Aogon", "Ą"), + ("Aopf", "𝔸"), + ("ApplyFunction", ""), + ("Aring", "Å"), + ("Ascr", "𝒜"), + ("Assign", "≔"), + ("Atilde", "Ã"), + ("Auml", "Ä"), + ("Backslash", "∖"), + ("Barv", "⫧"), + ("Barwed", "⌆"), + ("Bcy", "Б"), + ("Because", "∵"), + ("Bernoullis", "ℬ"), + ("Beta", "Β"), + ("Bfr", "𝔅"), + ("Bopf", "𝔹"), + ("Breve", "˘"), + ("Bscr", "ℬ"), + ("Bumpeq", "≎"), + ("CHcy", "Ч"), + ("COPY", "©"), + ("Cacute", "Ć"), + ("Cap", "⋒"), + ("CapitalDifferentialD", "ⅅ"), + ("Cayleys", "ℭ"), + ("Ccaron", "Č"), + ("Ccedil", "Ç"), + ("Ccirc", "Ĉ"), + ("Cconint", "∰"), + ("Cdot", "Ċ"), + ("Cedilla", "¸"), + ("CenterDot", "·"), + ("Cfr", "ℭ"), + ("Chi", "Χ"), + ("CircleDot", "⊙"), + ("CircleMinus", "⊖"), + ("CirclePlus", "⊕"), + ("CircleTimes", "⊗"), + ("ClockwiseContourIntegral", "∲"), + ("CloseCurlyDoubleQuote", "”"), + ("CloseCurlyQuote", "’"), + ("Colon", "∷"), + ("Colone", "⩴"), + ("Congruent", "≡"), + ("Conint", "∯"), + ("ContourIntegral", "∮"), + ("Copf", "ℂ"), + ("Coproduct", "∐"), + ("CounterClockwiseContourIntegral", "∳"), + ("Cross", "⨯"), + ("Cscr", "𝒞"), + ("Cup", "⋓"), + ("CupCap", "≍"), + ("DD", "ⅅ"), + ("DDotrahd", "⤑"), + ("DJcy", "Ђ"), + ("DScy", "Ѕ"), + ("DZcy", "Џ"), + ("Dagger", "‡"), + ("Darr", "↡"), + ("Dashv", "⫤"), + ("Dcaron", "Ď"), + ("Dcy", "Д"), + ("Del", "∇"), + ("Delta", "Δ"), + ("Dfr", "𝔇"), + ("DiacriticalAcute", "´"), + ("DiacriticalDot", "˙"), + ("DiacriticalDoubleAcute", "˝"), + ("DiacriticalGrave", "`"), + ("DiacriticalTilde", "˜"), + ("Diamond", "⋄"), + ("DifferentialD", "ⅆ"), + ("Dopf", "𝔻"), + ("Dot", "¨"), + ("DotDot", "⃜"), + ("DotEqual", "≐"), + ("DoubleContourIntegral", "∯"), + ("DoubleDot", "¨"), + ("DoubleDownArrow", "⇓"), + ("DoubleLeftArrow", "⇐"), + ("DoubleLeftRightArrow", "⇔"), + ("DoubleLeftTee", "⫤"), + ("DoubleLongLeftArrow", "⟸"), + ("DoubleLongLeftRightArrow", "⟺"), + ("DoubleLongRightArrow", "⟹"), + ("DoubleRightArrow", "⇒"), + ("DoubleRightTee", "⊨"), + ("DoubleUpArrow", "⇑"), + ("DoubleUpDownArrow", "⇕"), + ("DoubleVerticalBar", "∥"), + ("DownArrow", "↓"), + ("DownArrowBar", "⤓"), + ("DownArrowUpArrow", "⇵"), + ("DownBreve", "̑"), + ("DownLeftRightVector", "⥐"), + ("DownLeftTeeVector", "⥞"), + ("DownLeftVector", "↽"), + ("DownLeftVectorBar", "⥖"), + ("DownRightTeeVector", "⥟"), + ("DownRightVector", "⇁"), + ("DownRightVectorBar", "⥗"), + ("DownTee", "⊤"), + ("DownTeeArrow", "↧"), + ("Downarrow", "⇓"), + ("Dscr", "𝒟"), + ("Dstrok", "Đ"), + ("ENG", "Ŋ"), + ("ETH", "Ð"), + ("Eacute", "É"), + ("Ecaron", "Ě"), + ("Ecirc", "Ê"), + ("Ecy", "Э"), + ("Edot", "Ė"), + ("Efr", "𝔈"), + ("Egrave", "È"), + ("Element", "∈"), + ("Emacr", "Ē"), + ("EmptySmallSquare", "◻"), + ("EmptyVerySmallSquare", "▫"), + ("Eogon", "Ę"), + ("Eopf", "𝔼"), + ("Epsilon", "Ε"), + ("Equal", "⩵"), + ("EqualTilde", "≂"), + ("Equilibrium", "⇌"), + ("Escr", "ℰ"), + ("Esim", "⩳"), + ("Eta", "Η"), + ("Euml", "Ë"), + ("Exists", "∃"), + ("ExponentialE", "ⅇ"), + ("Fcy", "Ф"), + ("Ffr", "𝔉"), + ("FilledSmallSquare", "◼"), + ("FilledVerySmallSquare", "▪"), + ("Fopf", "𝔽"), + ("ForAll", "∀"), + ("Fouriertrf", "ℱ"), + ("Fscr", "ℱ"), + ("GJcy", "Ѓ"), + ("GT", ">"), + ("Gamma", "Γ"), + ("Gammad", "Ϝ"), + ("Gbreve", "Ğ"), + ("Gcedil", "Ģ"), + ("Gcirc", "Ĝ"), + ("Gcy", "Г"), + ("Gdot", "Ġ"), + ("Gfr", "𝔊"), + ("Gg", "⋙"), + ("Gopf", "𝔾"), + ("GreaterEqual", "≥"), + ("GreaterEqualLess", "⋛"), + ("GreaterFullEqual", "≧"), + ("GreaterGreater", "⪢"), + ("GreaterLess", "≷"), + ("GreaterSlantEqual", "⩾"), + ("GreaterTilde", "≳"), + ("Gscr", "𝒢"), + ("Gt", "≫"), + ("HARDcy", "Ъ"), + ("Hacek", "ˇ"), + ("Hat", "^"), + ("Hcirc", "Ĥ"), + ("Hfr", "ℌ"), + ("HilbertSpace", "ℋ"), + ("Hopf", "ℍ"), + ("HorizontalLine", "─"), + ("Hscr", "ℋ"), + ("Hstrok", "Ħ"), + ("HumpDownHump", "≎"), + ("HumpEqual", "≏"), + ("IEcy", "Е"), + ("IJlig", "IJ"), + ("IOcy", "Ё"), + ("Iacute", "Í"), + ("Icirc", "Î"), + ("Icy", "И"), + ("Idot", "İ"), + ("Ifr", "ℑ"), + ("Igrave", "Ì"), + ("Im", "ℑ"), + ("Imacr", "Ī"), + ("ImaginaryI", "ⅈ"), + ("Implies", "⇒"), + ("Int", "∬"), + ("Integral", "∫"), + ("Intersection", "⋂"), + ("InvisibleComma", ""), + ("InvisibleTimes", ""), + ("Iogon", "Į"), + ("Iopf", "𝕀"), + ("Iota", "Ι"), + ("Iscr", "ℐ"), + ("Itilde", "Ĩ"), + ("Iukcy", "І"), + ("Iuml", "Ï"), + ("Jcirc", "Ĵ"), + ("Jcy", "Й"), + ("Jfr", "𝔍"), + ("Jopf", "𝕁"), + ("Jscr", "𝒥"), + ("Jsercy", "Ј"), + ("Jukcy", "Є"), + ("KHcy", "Х"), + ("KJcy", "Ќ"), + ("Kappa", "Κ"), + ("Kcedil", "Ķ"), + ("Kcy", "К"), + ("Kfr", "𝔎"), + ("Kopf", "𝕂"), + ("Kscr", "𝒦"), + ("LJcy", "Љ"), + ("LT", "<"), + ("Lacute", "Ĺ"), + ("Lambda", "Λ"), + ("Lang", "⟪"), + ("Laplacetrf", "ℒ"), + ("Larr", "↞"), + ("Lcaron", "Ľ"), + ("Lcedil", "Ļ"), + ("Lcy", "Л"), + ("LeftAngleBracket", "⟨"), + ("LeftArrow", "←"), + ("LeftArrowBar", "⇤"), + ("LeftArrowRightArrow", "⇆"), + ("LeftCeiling", "⌈"), + ("LeftDoubleBracket", "⟦"), + ("LeftDownTeeVector", "⥡"), + ("LeftDownVector", "⇃"), + ("LeftDownVectorBar", "⥙"), + ("LeftFloor", "⌊"), + ("LeftRightArrow", "↔"), + ("LeftRightVector", "⥎"), + ("LeftTee", "⊣"), + ("LeftTeeArrow", "↤"), + ("LeftTeeVector", "⥚"), + ("LeftTriangle", "⊲"), + ("LeftTriangleBar", "⧏"), + ("LeftTriangleEqual", "⊴"), + ("LeftUpDownVector", "⥑"), + ("LeftUpTeeVector", "⥠"), + ("LeftUpVector", "↿"), + ("LeftUpVectorBar", "⥘"), + ("LeftVector", "↼"), + ("LeftVectorBar", "⥒"), + ("Leftarrow", "⇐"), + ("Leftrightarrow", "⇔"), + ("LessEqualGreater", "⋚"), + ("LessFullEqual", "≦"), + ("LessGreater", "≶"), + ("LessLess", "⪡"), + ("LessSlantEqual", "⩽"), + ("LessTilde", "≲"), + ("Lfr", "𝔏"), + ("Ll", "⋘"), + ("Lleftarrow", "⇚"), + ("Lmidot", "Ŀ"), + ("LongLeftArrow", "⟵"), + ("LongLeftRightArrow", "⟷"), + ("LongRightArrow", "⟶"), + ("Longleftarrow", "⟸"), + ("Longleftrightarrow", "⟺"), + ("Longrightarrow", "⟹"), + ("Lopf", "𝕃"), + ("LowerLeftArrow", "↙"), + ("LowerRightArrow", "↘"), + ("Lscr", "ℒ"), + ("Lsh", "↰"), + ("Lstrok", "Ł"), + ("Lt", "≪"), + ("Map", "⤅"), + ("Mcy", "М"), + ("MediumSpace", " "), + ("Mellintrf", "ℳ"), + ("Mfr", "𝔐"), + ("MinusPlus", "∓"), + ("Mopf", "𝕄"), + ("Mscr", "ℳ"), + ("Mu", "Μ"), + ("NJcy", "Њ"), + ("Nacute", "Ń"), + ("Ncaron", "Ň"), + ("Ncedil", "Ņ"), + ("Ncy", "Н"), + ("NegativeMediumSpace", "\u{200B}"), + ("NegativeThickSpace", "\u{200B}"), + ("NegativeThinSpace", "\u{200B}"), + ("NegativeVeryThinSpace", "\u{200B}"), + ("NestedGreaterGreater", "≫"), + ("NestedLessLess", "≪"), + ("NewLine", "\n"), + ("Nfr", "𝔑"), + ("NoBreak", "\u{2060}"), + ("NonBreakingSpace", " "), + ("Nopf", "ℕ"), + ("Not", "⫬"), + ("NotCongruent", "≢"), + ("NotCupCap", "≭"), + ("NotDoubleVerticalBar", "∦"), + ("NotElement", "∉"), + ("NotEqual", "≠"), + ("NotEqualTilde", "≂̸"), + ("NotExists", "∄"), + ("NotGreater", "≯"), + ("NotGreaterEqual", "≱"), + ("NotGreaterFullEqual", "≧̸"), + ("NotGreaterGreater", "≫̸"), + ("NotGreaterLess", "≹"), + ("NotGreaterSlantEqual", "⩾̸"), + ("NotGreaterTilde", "≵"), + ("NotHumpDownHump", "≎̸"), + ("NotHumpEqual", "≏̸"), + ("NotLeftTriangle", "⋪"), + ("NotLeftTriangleBar", "⧏̸"), + ("NotLeftTriangleEqual", "⋬"), + ("NotLess", "≮"), + ("NotLessEqual", "≰"), + ("NotLessGreater", "≸"), + ("NotLessLess", "≪̸"), + ("NotLessSlantEqual", "⩽̸"), + ("NotLessTilde", "≴"), + ("NotNestedGreaterGreater", "⪢̸"), + ("NotNestedLessLess", "⪡̸"), + ("NotPrecedes", "⊀"), + ("NotPrecedesEqual", "⪯̸"), + ("NotPrecedesSlantEqual", "⋠"), + ("NotReverseElement", "∌"), + ("NotRightTriangle", "⋫"), + ("NotRightTriangleBar", "⧐̸"), + ("NotRightTriangleEqual", "⋭"), + ("NotSquareSubset", "⊏̸"), + ("NotSquareSubsetEqual", "⋢"), + ("NotSquareSuperset", "⊐̸"), + ("NotSquareSupersetEqual", "⋣"), + ("NotSubset", "⊂⃒"), + ("NotSubsetEqual", "⊈"), + ("NotSucceeds", "⊁"), + ("NotSucceedsEqual", "⪰̸"), + ("NotSucceedsSlantEqual", "⋡"), + ("NotSucceedsTilde", "≿̸"), + ("NotSuperset", "⊃⃒"), + ("NotSupersetEqual", "⊉"), + ("NotTilde", "≁"), + ("NotTildeEqual", "≄"), + ("NotTildeFullEqual", "≇"), + ("NotTildeTilde", "≉"), + ("NotVerticalBar", "∤"), + ("Nscr", "𝒩"), + ("Ntilde", "Ñ"), + ("Nu", "Ν"), + ("OElig", "Œ"), + ("Oacute", "Ó"), + ("Ocirc", "Ô"), + ("Ocy", "О"), + ("Odblac", "Ő"), + ("Ofr", "𝔒"), + ("Ograve", "Ò"), + ("Omacr", "Ō"), + ("Omega", "Ω"), + ("Omicron", "Ο"), + ("Oopf", "𝕆"), + ("OpenCurlyDoubleQuote", "“"), + ("OpenCurlyQuote", "‘"), + ("Or", "⩔"), + ("Oscr", "𝒪"), + ("Oslash", "Ø"), + ("Otilde", "Õ"), + ("Otimes", "⨷"), + ("Ouml", "Ö"), + ("OverBar", "‾"), + ("OverBrace", "⏞"), + ("OverBracket", "⎴"), + ("OverParenthesis", "⏜"), + ("PartialD", "∂"), + ("Pcy", "П"), + ("Pfr", "𝔓"), + ("Phi", "Φ"), + ("Pi", "Π"), + ("PlusMinus", "±"), + ("Poincareplane", "ℌ"), + ("Popf", "ℙ"), + ("Pr", "⪻"), + ("Precedes", "≺"), + ("PrecedesEqual", "⪯"), + ("PrecedesSlantEqual", "≼"), + ("PrecedesTilde", "≾"), + ("Prime", "″"), + ("Product", "∏"), + ("Proportion", "∷"), + ("Proportional", "∝"), + ("Pscr", "𝒫"), + ("Psi", "Ψ"), + ("QUOT", "\""), + ("Qfr", "𝔔"), + ("Qopf", "ℚ"), + ("Qscr", "𝒬"), + ("RBarr", "⤐"), + ("REG", "®"), + ("Racute", "Ŕ"), + ("Rang", "⟫"), + ("Rarr", "↠"), + ("Rarrtl", "⤖"), + ("Rcaron", "Ř"), + ("Rcedil", "Ŗ"), + ("Rcy", "Р"), + ("Re", "ℜ"), + ("ReverseElement", "∋"), + ("ReverseEquilibrium", "⇋"), + ("ReverseUpEquilibrium", "⥯"), + ("Rfr", "ℜ"), + ("Rho", "Ρ"), + ("RightAngleBracket", "⟩"), + ("RightArrow", "→"), + ("RightArrowBar", "⇥"), + ("RightArrowLeftArrow", "⇄"), + ("RightCeiling", "⌉"), + ("RightDoubleBracket", "⟧"), + ("RightDownTeeVector", "⥝"), + ("RightDownVector", "⇂"), + ("RightDownVectorBar", "⥕"), + ("RightFloor", "⌋"), + ("RightTee", "⊢"), + ("RightTeeArrow", "↦"), + ("RightTeeVector", "⥛"), + ("RightTriangle", "⊳"), + ("RightTriangleBar", "⧐"), + ("RightTriangleEqual", "⊵"), + ("RightUpDownVector", "⥏"), + ("RightUpTeeVector", "⥜"), + ("RightUpVector", "↾"), + ("RightUpVectorBar", "⥔"), + ("RightVector", "⇀"), + ("RightVectorBar", "⥓"), + ("Rightarrow", "⇒"), + ("Ropf", "ℝ"), + ("RoundImplies", "⥰"), + ("Rrightarrow", "⇛"), + ("Rscr", "ℛ"), + ("Rsh", "↱"), + ("RuleDelayed", "⧴"), + ("SHCHcy", "Щ"), + ("SHcy", "Ш"), + ("SOFTcy", "Ь"), + ("Sacute", "Ś"), + ("Sc", "⪼"), + ("Scaron", "Š"), + ("Scedil", "Ş"), + ("Scirc", "Ŝ"), + ("Scy", "С"), + ("Sfr", "𝔖"), + ("ShortDownArrow", "↓"), + ("ShortLeftArrow", "←"), + ("ShortRightArrow", "→"), + ("ShortUpArrow", "↑"), + ("Sigma", "Σ"), + ("SmallCircle", "∘"), + ("Sopf", "𝕊"), + ("Sqrt", "√"), + ("Square", "□"), + ("SquareIntersection", "⊓"), + ("SquareSubset", "⊏"), + ("SquareSubsetEqual", "⊑"), + ("SquareSuperset", "⊐"), + ("SquareSupersetEqual", "⊒"), + ("SquareUnion", "⊔"), + ("Sscr", "𝒮"), + ("Star", "⋆"), + ("Sub", "⋐"), + ("Subset", "⋐"), + ("SubsetEqual", "⊆"), + ("Succeeds", "≻"), + ("SucceedsEqual", "⪰"), + ("SucceedsSlantEqual", "≽"), + ("SucceedsTilde", "≿"), + ("SuchThat", "∋"), + ("Sum", "∑"), + ("Sup", "⋑"), + ("Superset", "⊃"), + ("SupersetEqual", "⊇"), + ("Supset", "⋑"), + ("THORN", "Þ"), + ("TRADE", "™"), + ("TSHcy", "Ћ"), + ("TScy", "Ц"), + ("Tab", "\t"), + ("Tau", "Τ"), + ("Tcaron", "Ť"), + ("Tcedil", "Ţ"), + ("Tcy", "Т"), + ("Tfr", "𝔗"), + ("Therefore", "∴"), + ("Theta", "Θ"), + ("ThickSpace", " "), + ("ThinSpace", " "), + ("Tilde", "∼"), + ("TildeEqual", "≃"), + ("TildeFullEqual", "≅"), + ("TildeTilde", "≈"), + ("Topf", "𝕋"), + ("TripleDot", "⃛"), + ("Tscr", "𝒯"), + ("Tstrok", "Ŧ"), + ("Uacute", "Ú"), + ("Uarr", "↟"), + ("Uarrocir", "⥉"), + ("Ubrcy", "Ў"), + ("Ubreve", "Ŭ"), + ("Ucirc", "Û"), + ("Ucy", "У"), + ("Udblac", "Ű"), + ("Ufr", "𝔘"), + ("Ugrave", "Ù"), + ("Umacr", "Ū"), + ("UnderBar", "_"), + ("UnderBrace", "⏟"), + ("UnderBracket", "⎵"), + ("UnderParenthesis", "⏝"), + ("Union", "⋃"), + ("UnionPlus", "⊎"), + ("Uogon", "Ų"), + ("Uopf", "𝕌"), + ("UpArrow", "↑"), + ("UpArrowBar", "⤒"), + ("UpArrowDownArrow", "⇅"), + ("UpDownArrow", "↕"), + ("UpEquilibrium", "⥮"), + ("UpTee", "⊥"), + ("UpTeeArrow", "↥"), + ("Uparrow", "⇑"), + ("Updownarrow", "⇕"), + ("UpperLeftArrow", "↖"), + ("UpperRightArrow", "↗"), + ("Upsi", "ϒ"), + ("Upsilon", "Υ"), + ("Uring", "Ů"), + ("Uscr", "𝒰"), + ("Utilde", "Ũ"), + ("Uuml", "Ü"), + ("VDash", "⊫"), + ("Vbar", "⫫"), + ("Vcy", "В"), + ("Vdash", "⊩"), + ("Vdashl", "⫦"), + ("Vee", "⋁"), + ("Verbar", "‖"), + ("Vert", "‖"), + ("VerticalBar", "∣"), + ("VerticalLine", "|"), + ("VerticalSeparator", "❘"), + ("VerticalTilde", "≀"), + ("VeryThinSpace", " "), + ("Vfr", "𝔙"), + ("Vopf", "𝕍"), + ("Vscr", "𝒱"), + ("Vvdash", "⊪"), + ("Wcirc", "Ŵ"), + ("Wedge", "⋀"), + ("Wfr", "𝔚"), + ("Wopf", "𝕎"), + ("Wscr", "𝒲"), + ("Xfr", "𝔛"), + ("Xi", "Ξ"), + ("Xopf", "𝕏"), + ("Xscr", "𝒳"), + ("YAcy", "Я"), + ("YIcy", "Ї"), + ("YUcy", "Ю"), + ("Yacute", "Ý"), + ("Ycirc", "Ŷ"), + ("Ycy", "Ы"), + ("Yfr", "𝔜"), + ("Yopf", "𝕐"), + ("Yscr", "𝒴"), + ("Yuml", "Ÿ"), + ("ZHcy", "Ж"), + ("Zacute", "Ź"), + ("Zcaron", "Ž"), + ("Zcy", "З"), + ("Zdot", "Ż"), + ("ZeroWidthSpace", "\u{200B}"), + ("Zeta", "Ζ"), + ("Zfr", "ℨ"), + ("Zopf", "ℤ"), + ("Zscr", "𝒵"), + ("aacute", "á"), + ("abreve", "ă"), + ("ac", "∾"), + ("acE", "∾̳"), + ("acd", "∿"), + ("acirc", "â"), + ("acute", "´"), + ("acy", "а"), + ("aelig", "æ"), + ("af", ""), + ("afr", "𝔞"), + ("agrave", "à"), + ("alefsym", "ℵ"), + ("aleph", "ℵ"), + ("alpha", "α"), + ("amacr", "ā"), + ("amalg", "⨿"), + ("amp", "&"), + ("and", "∧"), + ("andand", "⩕"), + ("andd", "⩜"), + ("andslope", "⩘"), + ("andv", "⩚"), + ("ang", "∠"), + ("ange", "⦤"), + ("angle", "∠"), + ("angmsd", "∡"), + ("angmsdaa", "⦨"), + ("angmsdab", "⦩"), + ("angmsdac", "⦪"), + ("angmsdad", "⦫"), + ("angmsdae", "⦬"), + ("angmsdaf", "⦭"), + ("angmsdag", "⦮"), + ("angmsdah", "⦯"), + ("angrt", "∟"), + ("angrtvb", "⊾"), + ("angrtvbd", "⦝"), + ("angsph", "∢"), + ("angst", "Å"), + ("angzarr", "⍼"), + ("aogon", "ą"), + ("aopf", "𝕒"), + ("ap", "≈"), + ("apE", "⩰"), + ("apacir", "⩯"), + ("ape", "≊"), + ("apid", "≋"), + ("apos", "'"), + ("approx", "≈"), + ("approxeq", "≊"), + ("aring", "å"), + ("ascr", "𝒶"), + ("ast", "*"), + ("asymp", "≈"), + ("asympeq", "≍"), + ("atilde", "ã"), + ("auml", "ä"), + ("awconint", "∳"), + ("awint", "⨑"), + ("bNot", "⫭"), + ("backcong", "≌"), + ("backepsilon", "϶"), + ("backprime", "‵"), + ("backsim", "∽"), + ("backsimeq", "⋍"), + ("barvee", "⊽"), + ("barwed", "⌅"), + ("barwedge", "⌅"), + ("bbrk", "⎵"), + ("bbrktbrk", "⎶"), + ("bcong", "≌"), + ("bcy", "б"), + ("bdquo", "„"), + ("becaus", "∵"), + ("because", "∵"), + ("bemptyv", "⦰"), + ("bepsi", "϶"), + ("bernou", "ℬ"), + ("beta", "β"), + ("beth", "ℶ"), + ("between", "≬"), + ("bfr", "𝔟"), + ("bigcap", "⋂"), + ("bigcirc", "◯"), + ("bigcup", "⋃"), + ("bigodot", "⨀"), + ("bigoplus", "⨁"), + ("bigotimes", "⨂"), + ("bigsqcup", "⨆"), + ("bigstar", "★"), + ("bigtriangledown", "▽"), + ("bigtriangleup", "△"), + ("biguplus", "⨄"), + ("bigvee", "⋁"), + ("bigwedge", "⋀"), + ("bkarow", "⤍"), + ("blacklozenge", "⧫"), + ("blacksquare", "▪"), + ("blacktriangle", "▴"), + ("blacktriangledown", "▾"), + ("blacktriangleleft", "◂"), + ("blacktriangleright", "▸"), + ("blank", "␣"), + ("blk12", "▒"), + ("blk14", "░"), + ("blk34", "▓"), + ("block", "█"), + ("bne", "=⃥"), + ("bnequiv", "≡⃥"), + ("bnot", "⌐"), + ("bopf", "𝕓"), + ("bot", "⊥"), + ("bottom", "⊥"), + ("bowtie", "⋈"), + ("boxDL", "╗"), + ("boxDR", "╔"), + ("boxDl", "╖"), + ("boxDr", "╓"), + ("boxH", "═"), + ("boxHD", "╦"), + ("boxHU", "╩"), + ("boxHd", "╤"), + ("boxHu", "╧"), + ("boxUL", "╝"), + ("boxUR", "╚"), + ("boxUl", "╜"), + ("boxUr", "╙"), + ("boxV", "║"), + ("boxVH", "╬"), + ("boxVL", "╣"), + ("boxVR", "╠"), + ("boxVh", "╫"), + ("boxVl", "╢"), + ("boxVr", "╟"), + ("boxbox", "⧉"), + ("boxdL", "╕"), + ("boxdR", "╒"), + ("boxdl", "┐"), + ("boxdr", "┌"), + ("boxh", "─"), + ("boxhD", "╥"), + ("boxhU", "╨"), + ("boxhd", "┬"), + ("boxhu", "┴"), + ("boxminus", "⊟"), + ("boxplus", "⊞"), + ("boxtimes", "⊠"), + ("boxuL", "╛"), + ("boxuR", "╘"), + ("boxul", "┘"), + ("boxur", "└"), + ("boxv", "│"), + ("boxvH", "╪"), + ("boxvL", "╡"), + ("boxvR", "╞"), + ("boxvh", "┼"), + ("boxvl", "┤"), + ("boxvr", "├"), + ("bprime", "‵"), + ("breve", "˘"), + ("brvbar", "¦"), + ("bscr", "𝒷"), + ("bsemi", "⁏"), + ("bsim", "∽"), + ("bsime", "⋍"), + ("bsol", "\\"), + ("bsolb", "⧅"), + ("bsolhsub", "⟈"), + ("bull", "•"), + ("bullet", "•"), + ("bump", "≎"), + ("bumpE", "⪮"), + ("bumpe", "≏"), + ("bumpeq", "≏"), + ("cacute", "ć"), + ("cap", "∩"), + ("capand", "⩄"), + ("capbrcup", "⩉"), + ("capcap", "⩋"), + ("capcup", "⩇"), + ("capdot", "⩀"), + ("caps", "∩︀"), + ("caret", "⁁"), + ("caron", "ˇ"), + ("ccaps", "⩍"), + ("ccaron", "č"), + ("ccedil", "ç"), + ("ccirc", "ĉ"), + ("ccups", "⩌"), + ("ccupssm", "⩐"), + ("cdot", "ċ"), + ("cedil", "¸"), + ("cemptyv", "⦲"), + ("cent", "¢"), + ("centerdot", "·"), + ("cfr", "𝔠"), + ("chcy", "ч"), + ("check", "✓"), + ("checkmark", "✓"), + ("chi", "χ"), + ("cir", "○"), + ("cirE", "⧃"), + ("circ", "ˆ"), + ("circeq", "≗"), + ("circlearrowleft", "↺"), + ("circlearrowright", "↻"), + ("circledR", "®"), + ("circledS", "Ⓢ"), + ("circledast", "⊛"), + ("circledcirc", "⊚"), + ("circleddash", "⊝"), + ("cire", "≗"), + ("cirfnint", "⨐"), + ("cirmid", "⫯"), + ("cirscir", "⧂"), + ("clubs", "♣"), + ("clubsuit", "♣"), + ("colon", ":"), + ("colone", "≔"), + ("coloneq", "≔"), + ("comma", ","), + ("commat", "@"), + ("comp", "∁"), + ("compfn", "∘"), + ("complement", "∁"), + ("complexes", "ℂ"), + ("cong", "≅"), + ("congdot", "⩭"), + ("conint", "∮"), + ("copf", "𝕔"), + ("coprod", "∐"), + ("copy", "©"), + ("copysr", "℗"), + ("crarr", "↵"), + ("cross", "✗"), + ("cscr", "𝒸"), + ("csub", "⫏"), + ("csube", "⫑"), + ("csup", "⫐"), + ("csupe", "⫒"), + ("ctdot", "⋯"), + ("cudarrl", "⤸"), + ("cudarrr", "⤵"), + ("cuepr", "⋞"), + ("cuesc", "⋟"), + ("cularr", "↶"), + ("cularrp", "⤽"), + ("cup", "∪"), + ("cupbrcap", "⩈"), + ("cupcap", "⩆"), + ("cupcup", "⩊"), + ("cupdot", "⊍"), + ("cupor", "⩅"), + ("cups", "∪︀"), + ("curarr", "↷"), + ("curarrm", "⤼"), + ("curlyeqprec", "⋞"), + ("curlyeqsucc", "⋟"), + ("curlyvee", "⋎"), + ("curlywedge", "⋏"), + ("curren", "¤"), + ("curvearrowleft", "↶"), + ("curvearrowright", "↷"), + ("cuvee", "⋎"), + ("cuwed", "⋏"), + ("cwconint", "∲"), + ("cwint", "∱"), + ("cylcty", "⌭"), + ("dArr", "⇓"), + ("dHar", "⥥"), + ("dagger", "†"), + ("daleth", "ℸ"), + ("darr", "↓"), + ("dash", "‐"), + ("dashv", "⊣"), + ("dbkarow", "⤏"), + ("dblac", "˝"), + ("dcaron", "ď"), + ("dcy", "д"), + ("dd", "ⅆ"), + ("ddagger", "‡"), + ("ddarr", "⇊"), + ("ddotseq", "⩷"), + ("deg", "°"), + ("delta", "δ"), + ("demptyv", "⦱"), + ("dfisht", "⥿"), + ("dfr", "𝔡"), + ("dharl", "⇃"), + ("dharr", "⇂"), + ("diam", "⋄"), + ("diamond", "⋄"), + ("diamondsuit", "♦"), + ("diams", "♦"), + ("die", "¨"), + ("digamma", "ϝ"), + ("disin", "⋲"), + ("div", "÷"), + ("divide", "÷"), + ("divideontimes", "⋇"), + ("divonx", "⋇"), + ("djcy", "ђ"), + ("dlcorn", "⌞"), + ("dlcrop", "⌍"), + ("dollar", "$"), + ("dopf", "𝕕"), + ("dot", "˙"), + ("doteq", "≐"), + ("doteqdot", "≑"), + ("dotminus", "∸"), + ("dotplus", "∔"), + ("dotsquare", "⊡"), + ("doublebarwedge", "⌆"), + ("downarrow", "↓"), + ("downdownarrows", "⇊"), + ("downharpoonleft", "⇃"), + ("downharpoonright", "⇂"), + ("drbkarow", "⤐"), + ("drcorn", "⌟"), + ("drcrop", "⌌"), + ("dscr", "𝒹"), + ("dscy", "ѕ"), + ("dsol", "⧶"), + ("dstrok", "đ"), + ("dtdot", "⋱"), + ("dtri", "▿"), + ("dtrif", "▾"), + ("duarr", "⇵"), + ("duhar", "⥯"), + ("dwangle", "⦦"), + ("dzcy", "џ"), + ("dzigrarr", "⟿"), + ("eDDot", "⩷"), + ("eDot", "≑"), + ("eacute", "é"), + ("easter", "⩮"), + ("ecaron", "ě"), + ("ecir", "≖"), + ("ecirc", "ê"), + ("ecolon", "≕"), + ("ecy", "э"), + ("edot", "ė"), + ("ee", "ⅇ"), + ("efDot", "≒"), + ("efr", "𝔢"), + ("eg", "⪚"), + ("egrave", "è"), + ("egs", "⪖"), + ("egsdot", "⪘"), + ("el", "⪙"), + ("elinters", "⏧"), + ("ell", "ℓ"), + ("els", "⪕"), + ("elsdot", "⪗"), + ("emacr", "ē"), + ("empty", "∅"), + ("emptyset", "∅"), + ("emptyv", "∅"), + ("emsp13", " "), + ("emsp14", " "), + ("emsp", " "), + ("eng", "ŋ"), + ("ensp", " "), + ("eogon", "ę"), + ("eopf", "𝕖"), + ("epar", "⋕"), + ("eparsl", "⧣"), + ("eplus", "⩱"), + ("epsi", "ε"), + ("epsilon", "ε"), + ("epsiv", "ϵ"), + ("eqcirc", "≖"), + ("eqcolon", "≕"), + ("eqsim", "≂"), + ("eqslantgtr", "⪖"), + ("eqslantless", "⪕"), + ("equals", "="), + ("equest", "≟"), + ("equiv", "≡"), + ("equivDD", "⩸"), + ("eqvparsl", "⧥"), + ("erDot", "≓"), + ("erarr", "⥱"), + ("escr", "ℯ"), + ("esdot", "≐"), + ("esim", "≂"), + ("eta", "η"), + ("eth", "ð"), + ("euml", "ë"), + ("euro", "€"), + ("excl", "!"), + ("exist", "∃"), + ("expectation", "ℰ"), + ("exponentiale", "ⅇ"), + ("fallingdotseq", "≒"), + ("fcy", "ф"), + ("female", "♀"), + ("ffilig", "ffi"), + ("fflig", "ff"), + ("ffllig", "ffl"), + ("ffr", "𝔣"), + ("filig", "fi"), + ("fjlig", "fj"), + ("flat", "♭"), + ("fllig", "fl"), + ("fltns", "▱"), + ("fnof", "ƒ"), + ("fopf", "𝕗"), + ("forall", "∀"), + ("fork", "⋔"), + ("forkv", "⫙"), + ("fpartint", "⨍"), + ("frac12", "½"), + ("frac13", "⅓"), + ("frac14", "¼"), + ("frac15", "⅕"), + ("frac16", "⅙"), + ("frac18", "⅛"), + ("frac23", "⅔"), + ("frac25", "⅖"), + ("frac34", "¾"), + ("frac35", "⅗"), + ("frac38", "⅜"), + ("frac45", "⅘"), + ("frac56", "⅚"), + ("frac58", "⅝"), + ("frac78", "⅞"), + ("frasl", "⁄"), + ("frown", "⌢"), + ("fscr", "𝒻"), + ("gE", "≧"), + ("gEl", "⪌"), + ("gacute", "ǵ"), + ("gamma", "γ"), + ("gammad", "ϝ"), + ("gap", "⪆"), + ("gbreve", "ğ"), + ("gcirc", "ĝ"), + ("gcy", "г"), + ("gdot", "ġ"), + ("ge", "≥"), + ("gel", "⋛"), + ("geq", "≥"), + ("geqq", "≧"), + ("geqslant", "⩾"), + ("ges", "⩾"), + ("gescc", "⪩"), + ("gesdot", "⪀"), + ("gesdoto", "⪂"), + ("gesdotol", "⪄"), + ("gesl", "⋛︀"), + ("gesles", "⪔"), + ("gfr", "𝔤"), + ("gg", "≫"), + ("ggg", "⋙"), + ("gimel", "ℷ"), + ("gjcy", "ѓ"), + ("gl", "≷"), + ("glE", "⪒"), + ("gla", "⪥"), + ("glj", "⪤"), + ("gnE", "≩"), + ("gnap", "⪊"), + ("gnapprox", "⪊"), + ("gne", "⪈"), + ("gneq", "⪈"), + ("gneqq", "≩"), + ("gnsim", "⋧"), + ("gopf", "𝕘"), + ("grave", "`"), + ("gscr", "ℊ"), + ("gsim", "≳"), + ("gsime", "⪎"), + ("gsiml", "⪐"), + ("gt", ">"), + ("gtcc", "⪧"), + ("gtcir", "⩺"), + ("gtdot", "⋗"), + ("gtlPar", "⦕"), + ("gtquest", "⩼"), + ("gtrapprox", "⪆"), + ("gtrarr", "⥸"), + ("gtrdot", "⋗"), + ("gtreqless", "⋛"), + ("gtreqqless", "⪌"), + ("gtrless", "≷"), + ("gtrsim", "≳"), + ("gvertneqq", "≩︀"), + ("gvnE", "≩︀"), + ("hArr", "⇔"), + ("hairsp", " "), + ("half", "½"), + ("hamilt", "ℋ"), + ("hardcy", "ъ"), + ("harr", "↔"), + ("harrcir", "⥈"), + ("harrw", "↭"), + ("hbar", "ℏ"), + ("hcirc", "ĥ"), + ("hearts", "♥"), + ("heartsuit", "♥"), + ("hellip", "…"), + ("hercon", "⊹"), + ("hfr", "𝔥"), + ("hksearow", "⤥"), + ("hkswarow", "⤦"), + ("hoarr", "⇿"), + ("homtht", "∻"), + ("hookleftarrow", "↩"), + ("hookrightarrow", "↪"), + ("hopf", "𝕙"), + ("horbar", "―"), + ("hscr", "𝒽"), + ("hslash", "ℏ"), + ("hstrok", "ħ"), + ("hybull", "⁃"), + ("hyphen", "‐"), + ("iacute", "í"), + ("ic", ""), + ("icirc", "î"), + ("icy", "и"), + ("iecy", "е"), + ("iexcl", "¡"), + ("iff", "⇔"), + ("ifr", "𝔦"), + ("igrave", "ì"), + ("ii", "ⅈ"), + ("iiiint", "⨌"), + ("iiint", "∭"), + ("iinfin", "⧜"), + ("iiota", "℩"), + ("ijlig", "ij"), + ("imacr", "ī"), + ("image", "ℑ"), + ("imagline", "ℐ"), + ("imagpart", "ℑ"), + ("imath", "ı"), + ("imof", "⊷"), + ("imped", "Ƶ"), + ("in", "∈"), + ("incare", "℅"), + ("infin", "∞"), + ("infintie", "⧝"), + ("inodot", "ı"), + ("int", "∫"), + ("intcal", "⊺"), + ("integers", "ℤ"), + ("intercal", "⊺"), + ("intlarhk", "⨗"), + ("intprod", "⨼"), + ("iocy", "ё"), + ("iogon", "į"), + ("iopf", "𝕚"), + ("iota", "ι"), + ("iprod", "⨼"), + ("iquest", "¿"), + ("iscr", "𝒾"), + ("isin", "∈"), + ("isinE", "⋹"), + ("isindot", "⋵"), + ("isins", "⋴"), + ("isinsv", "⋳"), + ("isinv", "∈"), + ("it", ""), + ("itilde", "ĩ"), + ("iukcy", "і"), + ("iuml", "ï"), + ("jcirc", "ĵ"), + ("jcy", "й"), + ("jfr", "𝔧"), + ("jmath", "ȷ"), + ("jopf", "𝕛"), + ("jscr", "𝒿"), + ("jsercy", "ј"), + ("jukcy", "є"), + ("kappa", "κ"), + ("kappav", "ϰ"), + ("kcedil", "ķ"), + ("kcy", "к"), + ("kfr", "𝔨"), + ("kgreen", "ĸ"), + ("khcy", "х"), + ("kjcy", "ќ"), + ("kopf", "𝕜"), + ("kscr", "𝓀"), + ("lAarr", "⇚"), + ("lArr", "⇐"), + ("lAtail", "⤛"), + ("lBarr", "⤎"), + ("lE", "≦"), + ("lEg", "⪋"), + ("lHar", "⥢"), + ("lacute", "ĺ"), + ("laemptyv", "⦴"), + ("lagran", "ℒ"), + ("lambda", "λ"), + ("lang", "⟨"), + ("langd", "⦑"), + ("langle", "⟨"), + ("lap", "⪅"), + ("laquo", "«"), + ("larr", "←"), + ("larrb", "⇤"), + ("larrbfs", "⤟"), + ("larrfs", "⤝"), + ("larrhk", "↩"), + ("larrlp", "↫"), + ("larrpl", "⤹"), + ("larrsim", "⥳"), + ("larrtl", "↢"), + ("lat", "⪫"), + ("latail", "⤙"), + ("late", "⪭"), + ("lates", "⪭︀"), + ("lbarr", "⤌"), + ("lbbrk", "❲"), + ("lbrace", "{"), + ("lbrack", "["), + ("lbrke", "⦋"), + ("lbrksld", "⦏"), + ("lbrkslu", "⦍"), + ("lcaron", "ľ"), + ("lcedil", "ļ"), + ("lceil", "⌈"), + ("lcub", "{"), + ("lcy", "л"), + ("ldca", "⤶"), + ("ldquo", "“"), + ("ldquor", "„"), + ("ldrdhar", "⥧"), + ("ldrushar", "⥋"), + ("ldsh", "↲"), + ("le", "≤"), + ("leftarrow", "←"), + ("leftarrowtail", "↢"), + ("leftharpoondown", "↽"), + ("leftharpoonup", "↼"), + ("leftleftarrows", "⇇"), + ("leftrightarrow", "↔"), + ("leftrightarrows", "⇆"), + ("leftrightharpoons", "⇋"), + ("leftrightsquigarrow", "↭"), + ("leftthreetimes", "⋋"), + ("leg", "⋚"), + ("leq", "≤"), + ("leqq", "≦"), + ("leqslant", "⩽"), + ("les", "⩽"), + ("lescc", "⪨"), + ("lesdot", "⩿"), + ("lesdoto", "⪁"), + ("lesdotor", "⪃"), + ("lesg", "⋚︀"), + ("lesges", "⪓"), + ("lessapprox", "⪅"), + ("lessdot", "⋖"), + ("lesseqgtr", "⋚"), + ("lesseqqgtr", "⪋"), + ("lessgtr", "≶"), + ("lesssim", "≲"), + ("lfisht", "⥼"), + ("lfloor", "⌊"), + ("lfr", "𝔩"), + ("lg", "≶"), + ("lgE", "⪑"), + ("lhard", "↽"), + ("lharu", "↼"), + ("lharul", "⥪"), + ("lhblk", "▄"), + ("ljcy", "љ"), + ("ll", "≪"), + ("llarr", "⇇"), + ("llcorner", "⌞"), + ("llhard", "⥫"), + ("lltri", "◺"), + ("lmidot", "ŀ"), + ("lmoust", "⎰"), + ("lmoustache", "⎰"), + ("lnE", "≨"), + ("lnap", "⪉"), + ("lnapprox", "⪉"), + ("lne", "⪇"), + ("lneq", "⪇"), + ("lneqq", "≨"), + ("lnsim", "⋦"), + ("loang", "⟬"), + ("loarr", "⇽"), + ("lobrk", "⟦"), + ("longleftarrow", "⟵"), + ("longleftrightarrow", "⟷"), + ("longmapsto", "⟼"), + ("longrightarrow", "⟶"), + ("looparrowleft", "↫"), + ("looparrowright", "↬"), + ("lopar", "⦅"), + ("lopf", "𝕝"), + ("loplus", "⨭"), + ("lotimes", "⨴"), + ("lowast", "∗"), + ("lowbar", "_"), + ("loz", "◊"), + ("lozenge", "◊"), + ("lozf", "⧫"), + ("lpar", "("), + ("lparlt", "⦓"), + ("lrarr", "⇆"), + ("lrcorner", "⌟"), + ("lrhar", "⇋"), + ("lrhard", "⥭"), + ("lrm", ""), + ("lrtri", "⊿"), + ("lsaquo", "‹"), + ("lscr", "𝓁"), + ("lsh", "↰"), + ("lsim", "≲"), + ("lsime", "⪍"), + ("lsimg", "⪏"), + ("lsqb", "["), + ("lsquo", "‘"), + ("lsquor", "‚"), + ("lstrok", "ł"), + ("lt", "<"), + ("ltcc", "⪦"), + ("ltcir", "⩹"), + ("ltdot", "⋖"), + ("lthree", "⋋"), + ("ltimes", "⋉"), + ("ltlarr", "⥶"), + ("ltquest", "⩻"), + ("ltrPar", "⦖"), + ("ltri", "◃"), + ("ltrie", "⊴"), + ("ltrif", "◂"), + ("lurdshar", "⥊"), + ("luruhar", "⥦"), + ("lvertneqq", "≨︀"), + ("lvnE", "≨︀"), + ("mDDot", "∺"), + ("macr", "¯"), + ("male", "♂"), + ("malt", "✠"), + ("maltese", "✠"), + ("map", "↦"), + ("mapsto", "↦"), + ("mapstodown", "↧"), + ("mapstoleft", "↤"), + ("mapstoup", "↥"), + ("marker", "▮"), + ("mcomma", "⨩"), + ("mcy", "м"), + ("mdash", "—"), + ("measuredangle", "∡"), + ("mfr", "𝔪"), + ("mho", "℧"), + ("micro", "µ"), + ("mid", "∣"), + ("midast", "*"), + ("midcir", "⫰"), + ("middot", "·"), + ("minus", "−"), + ("minusb", "⊟"), + ("minusd", "∸"), + ("minusdu", "⨪"), + ("mlcp", "⫛"), + ("mldr", "…"), + ("mnplus", "∓"), + ("models", "⊧"), + ("mopf", "𝕞"), + ("mp", "∓"), + ("mscr", "𝓂"), + ("mstpos", "∾"), + ("mu", "μ"), + ("multimap", "⊸"), + ("mumap", "⊸"), + ("nGg", "⋙̸"), + ("nGt", "≫⃒"), + ("nGtv", "≫̸"), + ("nLeftarrow", "⇍"), + ("nLeftrightarrow", "⇎"), + ("nLl", "⋘̸"), + ("nLt", "≪⃒"), + ("nLtv", "≪̸"), + ("nRightarrow", "⇏"), + ("nVDash", "⊯"), + ("nVdash", "⊮"), + ("nabla", "∇"), + ("nacute", "ń"), + ("nang", "∠⃒"), + ("nap", "≉"), + ("napE", "⩰̸"), + ("napid", "≋̸"), + ("napos", "ʼn"), + ("napprox", "≉"), + ("natur", "♮"), + ("natural", "♮"), + ("naturals", "ℕ"), + ("nbsp", " "), + ("nbump", "≎̸"), + ("nbumpe", "≏̸"), + ("ncap", "⩃"), + ("ncaron", "ň"), + ("ncedil", "ņ"), + ("ncong", "≇"), + ("ncongdot", "⩭̸"), + ("ncup", "⩂"), + ("ncy", "н"), + ("ndash", "–"), + ("ne", "≠"), + ("neArr", "⇗"), + ("nearhk", "⤤"), + ("nearr", "↗"), + ("nearrow", "↗"), + ("nedot", "≐̸"), + ("nequiv", "≢"), + ("nesear", "⤨"), + ("nesim", "≂̸"), + ("nexist", "∄"), + ("nexists", "∄"), + ("nfr", "𝔫"), + ("ngE", "≧̸"), + ("nge", "≱"), + ("ngeq", "≱"), + ("ngeqq", "≧̸"), + ("ngeqslant", "⩾̸"), + ("nges", "⩾̸"), + ("ngsim", "≵"), + ("ngt", "≯"), + ("ngtr", "≯"), + ("nhArr", "⇎"), + ("nharr", "↮"), + ("nhpar", "⫲"), + ("ni", "∋"), + ("nis", "⋼"), + ("nisd", "⋺"), + ("niv", "∋"), + ("njcy", "њ"), + ("nlArr", "⇍"), + ("nlE", "≦̸"), + ("nlarr", "↚"), + ("nldr", "‥"), + ("nle", "≰"), + ("nleftarrow", "↚"), + ("nleftrightarrow", "↮"), + ("nleq", "≰"), + ("nleqq", "≦̸"), + ("nleqslant", "⩽̸"), + ("nles", "⩽̸"), + ("nless", "≮"), + ("nlsim", "≴"), + ("nlt", "≮"), + ("nltri", "⋪"), + ("nltrie", "⋬"), + ("nmid", "∤"), + ("nopf", "𝕟"), + ("not", "¬"), + ("notin", "∉"), + ("notinE", "⋹̸"), + ("notindot", "⋵̸"), + ("notinva", "∉"), + ("notinvb", "⋷"), + ("notinvc", "⋶"), + ("notni", "∌"), + ("notniva", "∌"), + ("notnivb", "⋾"), + ("notnivc", "⋽"), + ("npar", "∦"), + ("nparallel", "∦"), + ("nparsl", "⫽⃥"), + ("npart", "∂̸"), + ("npolint", "⨔"), + ("npr", "⊀"), + ("nprcue", "⋠"), + ("npre", "⪯̸"), + ("nprec", "⊀"), + ("npreceq", "⪯̸"), + ("nrArr", "⇏"), + ("nrarr", "↛"), + ("nrarrc", "⤳̸"), + ("nrarrw", "↝̸"), + ("nrightarrow", "↛"), + ("nrtri", "⋫"), + ("nrtrie", "⋭"), + ("nsc", "⊁"), + ("nsccue", "⋡"), + ("nsce", "⪰̸"), + ("nscr", "𝓃"), + ("nshortmid", "∤"), + ("nshortparallel", "∦"), + ("nsim", "≁"), + ("nsime", "≄"), + ("nsimeq", "≄"), + ("nsmid", "∤"), + ("nspar", "∦"), + ("nsqsube", "⋢"), + ("nsqsupe", "⋣"), + ("nsub", "⊄"), + ("nsubE", "⫅̸"), + ("nsube", "⊈"), + ("nsubset", "⊂⃒"), + ("nsubseteq", "⊈"), + ("nsubseteqq", "⫅̸"), + ("nsucc", "⊁"), + ("nsucceq", "⪰̸"), + ("nsup", "⊅"), + ("nsupE", "⫆̸"), + ("nsupe", "⊉"), + ("nsupset", "⊃⃒"), + ("nsupseteq", "⊉"), + ("nsupseteqq", "⫆̸"), + ("ntgl", "≹"), + ("ntilde", "ñ"), + ("ntlg", "≸"), + ("ntriangleleft", "⋪"), + ("ntrianglelefteq", "⋬"), + ("ntriangleright", "⋫"), + ("ntrianglerighteq", "⋭"), + ("nu", "ν"), + ("num", "#"), + ("numero", "№"), + ("numsp", " "), + ("nvDash", "⊭"), + ("nvHarr", "⤄"), + ("nvap", "≍⃒"), + ("nvdash", "⊬"), + ("nvge", "≥⃒"), + ("nvgt", ">⃒"), + ("nvinfin", "⧞"), + ("nvlArr", "⤂"), + ("nvle", "≤⃒"), + ("nvlt", "<⃒"), + ("nvltrie", "⊴⃒"), + ("nvrArr", "⤃"), + ("nvrtrie", "⊵⃒"), + ("nvsim", "∼⃒"), + ("nwArr", "⇖"), + ("nwarhk", "⤣"), + ("nwarr", "↖"), + ("nwarrow", "↖"), + ("nwnear", "⤧"), + ("oS", "Ⓢ"), + ("oacute", "ó"), + ("oast", "⊛"), + ("ocir", "⊚"), + ("ocirc", "ô"), + ("ocy", "о"), + ("odash", "⊝"), + ("odblac", "ő"), + ("odiv", "⨸"), + ("odot", "⊙"), + ("odsold", "⦼"), + ("oelig", "œ"), + ("ofcir", "⦿"), + ("ofr", "𝔬"), + ("ogon", "˛"), + ("ograve", "ò"), + ("ogt", "⧁"), + ("ohbar", "⦵"), + ("ohm", "Ω"), + ("oint", "∮"), + ("olarr", "↺"), + ("olcir", "⦾"), + ("olcross", "⦻"), + ("oline", "‾"), + ("olt", "⧀"), + ("omacr", "ō"), + ("omega", "ω"), + ("omicron", "ο"), + ("omid", "⦶"), + ("ominus", "⊖"), + ("oopf", "𝕠"), + ("opar", "⦷"), + ("operp", "⦹"), + ("oplus", "⊕"), + ("or", "∨"), + ("orarr", "↻"), + ("ord", "⩝"), + ("order", "ℴ"), + ("orderof", "ℴ"), + ("ordf", "ª"), + ("ordm", "º"), + ("origof", "⊶"), + ("oror", "⩖"), + ("orslope", "⩗"), + ("orv", "⩛"), + ("oscr", "ℴ"), + ("oslash", "ø"), + ("osol", "⊘"), + ("otilde", "õ"), + ("otimes", "⊗"), + ("otimesas", "⨶"), + ("ouml", "ö"), + ("ovbar", "⌽"), + ("par", "∥"), + ("para", "¶"), + ("parallel", "∥"), + ("parsim", "⫳"), + ("parsl", "⫽"), + ("part", "∂"), + ("pcy", "п"), + ("percnt", "%"), + ("period", "."), + ("permil", "‰"), + ("perp", "⊥"), + ("pertenk", "‱"), + ("pfr", "𝔭"), + ("phi", "φ"), + ("phiv", "ϕ"), + ("phmmat", "ℳ"), + ("phone", "☎"), + ("pi", "π"), + ("pitchfork", "⋔"), + ("piv", "ϖ"), + ("planck", "ℏ"), + ("planckh", "ℎ"), + ("plankv", "ℏ"), + ("plus", "+"), + ("plusacir", "⨣"), + ("plusb", "⊞"), + ("pluscir", "⨢"), + ("plusdo", "∔"), + ("plusdu", "⨥"), + ("pluse", "⩲"), + ("plusmn", "±"), + ("plussim", "⨦"), + ("plustwo", "⨧"), + ("pm", "±"), + ("pointint", "⨕"), + ("popf", "𝕡"), + ("pound", "£"), + ("pr", "≺"), + ("prE", "⪳"), + ("prap", "⪷"), + ("prcue", "≼"), + ("pre", "⪯"), + ("prec", "≺"), + ("precapprox", "⪷"), + ("preccurlyeq", "≼"), + ("preceq", "⪯"), + ("precnapprox", "⪹"), + ("precneqq", "⪵"), + ("precnsim", "⋨"), + ("precsim", "≾"), + ("prime", "′"), + ("primes", "ℙ"), + ("prnE", "⪵"), + ("prnap", "⪹"), + ("prnsim", "⋨"), + ("prod", "∏"), + ("profalar", "⌮"), + ("profline", "⌒"), + ("profsurf", "⌓"), + ("prop", "∝"), + ("propto", "∝"), + ("prsim", "≾"), + ("prurel", "⊰"), + ("pscr", "𝓅"), + ("psi", "ψ"), + ("puncsp", " "), + ("qfr", "𝔮"), + ("qint", "⨌"), + ("qopf", "𝕢"), + ("qprime", "⁗"), + ("qscr", "𝓆"), + ("quaternions", "ℍ"), + ("quatint", "⨖"), + ("quest", "?"), + ("questeq", "≟"), + ("quot", "\""), + ("rAarr", "⇛"), + ("rArr", "⇒"), + ("rAtail", "⤜"), + ("rBarr", "⤏"), + ("rHar", "⥤"), + ("race", "∽̱"), + ("racute", "ŕ"), + ("radic", "√"), + ("raemptyv", "⦳"), + ("rang", "⟩"), + ("rangd", "⦒"), + ("range", "⦥"), + ("rangle", "⟩"), + ("raquo", "»"), + ("rarr", "→"), + ("rarrap", "⥵"), + ("rarrb", "⇥"), + ("rarrbfs", "⤠"), + ("rarrc", "⤳"), + ("rarrfs", "⤞"), + ("rarrhk", "↪"), + ("rarrlp", "↬"), + ("rarrpl", "⥅"), + ("rarrsim", "⥴"), + ("rarrtl", "↣"), + ("rarrw", "↝"), + ("ratail", "⤚"), + ("ratio", "∶"), + ("rationals", "ℚ"), + ("rbarr", "⤍"), + ("rbbrk", "❳"), + ("rbrace", "}"), + ("rbrack", "]"), + ("rbrke", "⦌"), + ("rbrksld", "⦎"), + ("rbrkslu", "⦐"), + ("rcaron", "ř"), + ("rcedil", "ŗ"), + ("rceil", "⌉"), + ("rcub", "}"), + ("rcy", "р"), + ("rdca", "⤷"), + ("rdldhar", "⥩"), + ("rdquo", "”"), + ("rdquor", "”"), + ("rdsh", "↳"), + ("real", "ℜ"), + ("realine", "ℛ"), + ("realpart", "ℜ"), + ("reals", "ℝ"), + ("rect", "▭"), + ("reg", "®"), + ("rfisht", "⥽"), + ("rfloor", "⌋"), + ("rfr", "𝔯"), + ("rhard", "⇁"), + ("rharu", "⇀"), + ("rharul", "⥬"), + ("rho", "ρ"), + ("rhov", "ϱ"), + ("rightarrow", "→"), + ("rightarrowtail", "↣"), + ("rightharpoondown", "⇁"), + ("rightharpoonup", "⇀"), + ("rightleftarrows", "⇄"), + ("rightleftharpoons", "⇌"), + ("rightrightarrows", "⇉"), + ("rightsquigarrow", "↝"), + ("rightthreetimes", "⋌"), + ("ring", "˚"), + ("risingdotseq", "≓"), + ("rlarr", "⇄"), + ("rlhar", "⇌"), + ("rlm", ""), + ("rmoust", "⎱"), + ("rmoustache", "⎱"), + ("rnmid", "⫮"), + ("roang", "⟭"), + ("roarr", "⇾"), + ("robrk", "⟧"), + ("ropar", "⦆"), + ("ropf", "𝕣"), + ("roplus", "⨮"), + ("rotimes", "⨵"), + ("rpar", ")"), + ("rpargt", "⦔"), + ("rppolint", "⨒"), + ("rrarr", "⇉"), + ("rsaquo", "›"), + ("rscr", "𝓇"), + ("rsh", "↱"), + ("rsqb", "]"), + ("rsquo", "’"), + ("rsquor", "’"), + ("rthree", "⋌"), + ("rtimes", "⋊"), + ("rtri", "▹"), + ("rtrie", "⊵"), + ("rtrif", "▸"), + ("rtriltri", "⧎"), + ("ruluhar", "⥨"), + ("rx", "℞"), + ("sacute", "ś"), + ("sbquo", "‚"), + ("sc", "≻"), + ("scE", "⪴"), + ("scap", "⪸"), + ("scaron", "š"), + ("sccue", "≽"), + ("sce", "⪰"), + ("scedil", "ş"), + ("scirc", "ŝ"), + ("scnE", "⪶"), + ("scnap", "⪺"), + ("scnsim", "⋩"), + ("scpolint", "⨓"), + ("scsim", "≿"), + ("scy", "с"), + ("sdot", "⋅"), + ("sdotb", "⊡"), + ("sdote", "⩦"), + ("seArr", "⇘"), + ("searhk", "⤥"), + ("searr", "↘"), + ("searrow", "↘"), + ("sect", "§"), + ("semi", ";"), + ("seswar", "⤩"), + ("setminus", "∖"), + ("setmn", "∖"), + ("sext", "✶"), + ("sfr", "𝔰"), + ("sfrown", "⌢"), + ("sharp", "♯"), + ("shchcy", "щ"), + ("shcy", "ш"), + ("shortmid", "∣"), + ("shortparallel", "∥"), + ("shy", "\u{AD}"), + ("sigma", "σ"), + ("sigmaf", "ς"), + ("sigmav", "ς"), + ("sim", "∼"), + ("simdot", "⩪"), + ("sime", "≃"), + ("simeq", "≃"), + ("simg", "⪞"), + ("simgE", "⪠"), + ("siml", "⪝"), + ("simlE", "⪟"), + ("simne", "≆"), + ("simplus", "⨤"), + ("simrarr", "⥲"), + ("slarr", "←"), + ("smallsetminus", "∖"), + ("smashp", "⨳"), + ("smeparsl", "⧤"), + ("smid", "∣"), + ("smile", "⌣"), + ("smt", "⪪"), + ("smte", "⪬"), + ("smtes", "⪬︀"), + ("softcy", "ь"), + ("sol", "/"), + ("solb", "⧄"), + ("solbar", "⌿"), + ("sopf", "𝕤"), + ("spades", "♠"), + ("spadesuit", "♠"), + ("spar", "∥"), + ("sqcap", "⊓"), + ("sqcaps", "⊓︀"), + ("sqcup", "⊔"), + ("sqcups", "⊔︀"), + ("sqsub", "⊏"), + ("sqsube", "⊑"), + ("sqsubset", "⊏"), + ("sqsubseteq", "⊑"), + ("sqsup", "⊐"), + ("sqsupe", "⊒"), + ("sqsupset", "⊐"), + ("sqsupseteq", "⊒"), + ("squ", "□"), + ("square", "□"), + ("squarf", "▪"), + ("squf", "▪"), + ("srarr", "→"), + ("sscr", "𝓈"), + ("ssetmn", "∖"), + ("ssmile", "⌣"), + ("sstarf", "⋆"), + ("star", "☆"), + ("starf", "★"), + ("straightepsilon", "ϵ"), + ("straightphi", "ϕ"), + ("strns", "¯"), + ("sub", "⊂"), + ("subE", "⫅"), + ("subdot", "⪽"), + ("sube", "⊆"), + ("subedot", "⫃"), + ("submult", "⫁"), + ("subnE", "⫋"), + ("subne", "⊊"), + ("subplus", "⪿"), + ("subrarr", "⥹"), + ("subset", "⊂"), + ("subseteq", "⊆"), + ("subseteqq", "⫅"), + ("subsetneq", "⊊"), + ("subsetneqq", "⫋"), + ("subsim", "⫇"), + ("subsub", "⫕"), + ("subsup", "⫓"), + ("succ", "≻"), + ("succapprox", "⪸"), + ("succcurlyeq", "≽"), + ("succeq", "⪰"), + ("succnapprox", "⪺"), + ("succneqq", "⪶"), + ("succnsim", "⋩"), + ("succsim", "≿"), + ("sum", "∑"), + ("sung", "♪"), + ("sup1", "¹"), + ("sup2", "²"), + ("sup3", "³"), + ("sup", "⊃"), + ("supE", "⫆"), + ("supdot", "⪾"), + ("supdsub", "⫘"), + ("supe", "⊇"), + ("supedot", "⫄"), + ("suphsol", "⟉"), + ("suphsub", "⫗"), + ("suplarr", "⥻"), + ("supmult", "⫂"), + ("supnE", "⫌"), + ("supne", "⊋"), + ("supplus", "⫀"), + ("supset", "⊃"), + ("supseteq", "⊇"), + ("supseteqq", "⫆"), + ("supsetneq", "⊋"), + ("supsetneqq", "⫌"), + ("supsim", "⫈"), + ("supsub", "⫔"), + ("supsup", "⫖"), + ("swArr", "⇙"), + ("swarhk", "⤦"), + ("swarr", "↙"), + ("swarrow", "↙"), + ("swnwar", "⤪"), + ("szlig", "ß"), + ("target", "⌖"), + ("tau", "τ"), + ("tbrk", "⎴"), + ("tcaron", "ť"), + ("tcedil", "ţ"), + ("tcy", "т"), + ("tdot", "⃛"), + ("telrec", "⌕"), + ("tfr", "𝔱"), + ("there4", "∴"), + ("therefore", "∴"), + ("theta", "θ"), + ("thetasym", "ϑ"), + ("thetav", "ϑ"), + ("thickapprox", "≈"), + ("thicksim", "∼"), + ("thinsp", " "), + ("thkap", "≈"), + ("thksim", "∼"), + ("thorn", "þ"), + ("tilde", "˜"), + ("times", "×"), + ("timesb", "⊠"), + ("timesbar", "⨱"), + ("timesd", "⨰"), + ("tint", "∭"), + ("toea", "⤨"), + ("top", "⊤"), + ("topbot", "⌶"), + ("topcir", "⫱"), + ("topf", "𝕥"), + ("topfork", "⫚"), + ("tosa", "⤩"), + ("tprime", "‴"), + ("trade", "™"), + ("triangle", "▵"), + ("triangledown", "▿"), + ("triangleleft", "◃"), + ("trianglelefteq", "⊴"), + ("triangleq", "≜"), + ("triangleright", "▹"), + ("trianglerighteq", "⊵"), + ("tridot", "◬"), + ("trie", "≜"), + ("triminus", "⨺"), + ("triplus", "⨹"), + ("trisb", "⧍"), + ("tritime", "⨻"), + ("trpezium", "⏢"), + ("tscr", "𝓉"), + ("tscy", "ц"), + ("tshcy", "ћ"), + ("tstrok", "ŧ"), + ("twixt", "≬"), + ("twoheadleftarrow", "↞"), + ("twoheadrightarrow", "↠"), + ("uArr", "⇑"), + ("uHar", "⥣"), + ("uacute", "ú"), + ("uarr", "↑"), + ("ubrcy", "ў"), + ("ubreve", "ŭ"), + ("ucirc", "û"), + ("ucy", "у"), + ("udarr", "⇅"), + ("udblac", "ű"), + ("udhar", "⥮"), + ("ufisht", "⥾"), + ("ufr", "𝔲"), + ("ugrave", "ù"), + ("uharl", "↿"), + ("uharr", "↾"), + ("uhblk", "▀"), + ("ulcorn", "⌜"), + ("ulcorner", "⌜"), + ("ulcrop", "⌏"), + ("ultri", "◸"), + ("umacr", "ū"), + ("uml", "¨"), + ("uogon", "ų"), + ("uopf", "𝕦"), + ("uparrow", "↑"), + ("updownarrow", "↕"), + ("upharpoonleft", "↿"), + ("upharpoonright", "↾"), + ("uplus", "⊎"), + ("upsi", "υ"), + ("upsih", "ϒ"), + ("upsilon", "υ"), + ("upuparrows", "⇈"), + ("urcorn", "⌝"), + ("urcorner", "⌝"), + ("urcrop", "⌎"), + ("uring", "ů"), + ("urtri", "◹"), + ("uscr", "𝓊"), + ("utdot", "⋰"), + ("utilde", "ũ"), + ("utri", "▵"), + ("utrif", "▴"), + ("uuarr", "⇈"), + ("uuml", "ü"), + ("uwangle", "⦧"), + ("vArr", "⇕"), + ("vBar", "⫨"), + ("vBarv", "⫩"), + ("vDash", "⊨"), + ("vangrt", "⦜"), + ("varepsilon", "ϵ"), + ("varkappa", "ϰ"), + ("varnothing", "∅"), + ("varphi", "ϕ"), + ("varpi", "ϖ"), + ("varpropto", "∝"), + ("varr", "↕"), + ("varrho", "ϱ"), + ("varsigma", "ς"), + ("varsubsetneq", "⊊︀"), + ("varsubsetneqq", "⫋︀"), + ("varsupsetneq", "⊋︀"), + ("varsupsetneqq", "⫌︀"), + ("vartheta", "ϑ"), + ("vartriangleleft", "⊲"), + ("vartriangleright", "⊳"), + ("vcy", "в"), + ("vdash", "⊢"), + ("vee", "∨"), + ("veebar", "⊻"), + ("veeeq", "≚"), + ("vellip", "⋮"), + ("verbar", "|"), + ("vert", "|"), + ("vfr", "𝔳"), + ("vltri", "⊲"), + ("vnsub", "⊂⃒"), + ("vnsup", "⊃⃒"), + ("vopf", "𝕧"), + ("vprop", "∝"), + ("vrtri", "⊳"), + ("vscr", "𝓋"), + ("vsubnE", "⫋︀"), + ("vsubne", "⊊︀"), + ("vsupnE", "⫌︀"), + ("vsupne", "⊋︀"), + ("vzigzag", "⦚"), + ("wcirc", "ŵ"), + ("wedbar", "⩟"), + ("wedge", "∧"), + ("wedgeq", "≙"), + ("weierp", "℘"), + ("wfr", "𝔴"), + ("wopf", "𝕨"), + ("wp", "℘"), + ("wr", "≀"), + ("wreath", "≀"), + ("wscr", "𝓌"), + ("xcap", "⋂"), + ("xcirc", "◯"), + ("xcup", "⋃"), + ("xdtri", "▽"), + ("xfr", "𝔵"), + ("xhArr", "⟺"), + ("xharr", "⟷"), + ("xi", "ξ"), + ("xlArr", "⟸"), + ("xlarr", "⟵"), + ("xmap", "⟼"), + ("xnis", "⋻"), + ("xodot", "⨀"), + ("xopf", "𝕩"), + ("xoplus", "⨁"), + ("xotime", "⨂"), + ("xrArr", "⟹"), + ("xrarr", "⟶"), + ("xscr", "𝓍"), + ("xsqcup", "⨆"), + ("xuplus", "⨄"), + ("xutri", "△"), + ("xvee", "⋁"), + ("xwedge", "⋀"), + ("yacute", "ý"), + ("yacy", "я"), + ("ycirc", "ŷ"), + ("ycy", "ы"), + ("yen", "¥"), + ("yfr", "𝔶"), + ("yicy", "ї"), + ("yopf", "𝕪"), + ("yscr", "𝓎"), + ("yucy", "ю"), + ("yuml", "ÿ"), + ("zacute", "ź"), + ("zcaron", "ž"), + ("zcy", "з"), + ("zdot", "ż"), + ("zeetrf", "ℨ"), + ("zeta", "ζ"), + ("zfr", "𝔷"), + ("zhcy", "ж"), + ("zigrarr", "⇝"), + ("zopf", "𝕫"), + ("zscr", "𝓏"), + ("zwj", ""), + ("zwnj", ""), ]; #[cfg(test)] @@ -2541,7 +2409,7 @@ mod tests { assert_eq!( CHARACTER_REFERENCE_NAMED_SIZE_MAX, - longest(&CHARACTER_REFERENCE_NAMES).unwrap().len(), + longest(&CHARACTER_REFERENCES.map(|d| d.0)).unwrap().len(), "`CHARACTER_REFERENCE_NAMED_SIZE_MAX`" ); diff --git a/src/construct/character_reference.rs b/src/construct/character_reference.rs index 04e89d2..4f2505d 100644 --- a/src/construct/character_reference.rs +++ b/src/construct/character_reference.rs @@ -62,8 +62,8 @@ //! [html]: https://html.spec.whatwg.org/multipage/parsing.html#character-reference-state use crate::constant::{ - CHARACTER_REFERENCE_DECIMAL_SIZE_MAX, CHARACTER_REFERENCE_HEXADECIMAL_SIZE_MAX, - CHARACTER_REFERENCE_NAMED_SIZE_MAX, CHARACTER_REFERENCE_NAMES, + CHARACTER_REFERENCES, CHARACTER_REFERENCE_DECIMAL_SIZE_MAX, + CHARACTER_REFERENCE_HEXADECIMAL_SIZE_MAX, CHARACTER_REFERENCE_NAMED_SIZE_MAX, }; use crate::token::Token; use crate::tokenizer::{Code, State, StateFnResult, Tokenizer}; @@ -189,10 +189,12 @@ fn numeric(tokenizer: &mut Tokenizer, code: Code, mut info: Info) -> StateFnResu fn value(tokenizer: &mut Tokenizer, code: Code, mut info: Info) -> StateFnResult { match code { Code::Char(';') if !info.buffer.is_empty() => { - if Kind::Named == info.kind - && !CHARACTER_REFERENCE_NAMES - .contains(&info.buffer.iter().collect::<String>().as_str()) - { + let unknown_named = Kind::Named == info.kind && { + let value = info.buffer.iter().collect::<String>(); + !CHARACTER_REFERENCES.iter().any(|d| d.0 == value) + }; + + if unknown_named { (State::Nok, None) } else { tokenizer.exit(Token::CharacterReferenceValue); diff --git a/src/util/decode_character_reference.rs b/src/util/decode_character_reference.rs index 874df4d..4619032 100644 --- a/src/util/decode_character_reference.rs +++ b/src/util/decode_character_reference.rs @@ -1,6 +1,6 @@ //! Utilities to decode character references. -use crate::constant::{CHARACTER_REFERENCE_NAMES, CHARACTER_REFERENCE_VALUES}; +use crate::constant::CHARACTER_REFERENCES; /// Decode named character references. /// @@ -35,12 +35,9 @@ use crate::constant::{CHARACTER_REFERENCE_NAMES, CHARACTER_REFERENCE_VALUES}; /// * [`wooorm/decode-named-character-reference`](https://github.com/wooorm/decode-named-character-reference) /// * [*§ 2.5 Entity and numeric character references* in `CommonMark`](https://spec.commonmark.org/0.30/#entity-and-numeric-character-references) pub fn decode_named(value: &str) -> String { - let position = CHARACTER_REFERENCE_NAMES.iter().position(|&x| x == value); - if let Some(index) = position { - CHARACTER_REFERENCE_VALUES[index].to_string() - } else { - unreachable!("expected valid `name`") - } + let entry = CHARACTER_REFERENCES.iter().find(|d| d.0 == value); + let tuple = entry.expect("expected valid `name`"); + tuple.1.to_string() } /// Decode numeric character references. diff --git a/tests/character_reference.rs b/tests/character_reference.rs index fe69a3e..ef2ba0d 100644 --- a/tests/character_reference.rs +++ b/tests/character_reference.rs @@ -13,7 +13,7 @@ fn character_reference() { micromark( " & © Æ Ď\n¾ ℋ ⅆ\n∲ ≧̸" ), - "<p> & © Æ Ď\n¾ ℋ ⅆ\n∲ ≧̸</p>", + "<p>\u{a0} & © Æ Ď\n¾ ℋ ⅆ\n∲ ≧̸</p>", "should support named character references" ); diff --git a/tests/commonmark.rs b/tests/commonmark.rs index dade5ff..79be42a 100644 --- a/tests/commonmark.rs +++ b/tests/commonmark.rs @@ -346,18 +346,20 @@ foo r###"Backslash escapes (23)"### ); - // To do: bug. - // assert_eq!( - // micromark_with_options(r###" & © Æ Ď - // ¾ ℋ ⅆ - // ∲ ≧̸ - // "###, DANGER), - // r###"<p> & © Æ Ď - // ¾ ℋ ⅆ - // ∲ ≧̸</p> - // "###, - // r###"Entity and numeric character references (24)"### - // ); + assert_eq!( + micromark_with_options( + r###" & © Æ Ď +¾ ℋ ⅆ +∲ ≧̸ +"###, + DANGER + ), + r###"<p> & © Æ Ď +¾ ℋ ⅆ +∲ ≧̸</p> +"###, + r###"Entity and numeric character references (24)"### + ); assert_eq!( micromark_with_options( |