diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py index 1383fae540..fdfb91d7bb 100644 --- a/src/calibre/__init__.py +++ b/src/calibre/__init__.py @@ -562,9 +562,9 @@ def entity_to_unicode(match, exceptions=[], encoding='cp1252', return check(chr(num).decode(encoding)) except UnicodeDecodeError: return check(my_unichr(num)) - from calibre.utils.html5_entities import entity_map + from html5lib.constants import entities try: - return check(entity_map[ent]) + return check(entities[ent]) except KeyError: pass from htmlentitydefs import name2codepoint diff --git a/src/calibre/ebooks/oeb/parse_utils.py b/src/calibre/ebooks/oeb/parse_utils.py index 7ee02a27ac..df315df775 100644 --- a/src/calibre/ebooks/oeb/parse_utils.py +++ b/src/calibre/ebooks/oeb/parse_utils.py @@ -81,11 +81,14 @@ def node_depth(node): return ans def html5_parse(data, max_nesting_depth=100): - import html5lib - # html5lib bug: http://code.google.com/p/html5lib/issues/detail?id=195 - data = re.sub(r'<\s*(title|style|script|textarea)\s*[^>]*/\s*>', r'<\1>', data, flags=re.I) + import html5lib, warnings + from html5lib.constants import cdataElements, rcdataElements + # HTML5 parsing algorithm idiocy: http://code.google.com/p/html5lib/issues/detail?id=195 + data = re.sub(r'<\s*(%s)\s*[^>]*/\s*>' % ('|'.join(cdataElements|rcdataElements)), r'<\1>', data, flags=re.I) - data = html5lib.parse(data, treebuilder='lxml').getroot() + with warnings.catch_warnings(): + warnings.simplefilter('ignore') + data = html5lib.parse(data, treebuilder='lxml').getroot() # Check that the asinine HTML 5 algorithm did not result in a tree with # insane nesting depths diff --git a/src/calibre/ebooks/oeb/polish/tests/parsing.py b/src/calibre/ebooks/oeb/polish/tests/parsing.py index ba47735018..7b9bda7e21 100644 --- a/src/calibre/ebooks/oeb/polish/tests/parsing.py +++ b/src/calibre/ebooks/oeb/polish/tests/parsing.py @@ -7,6 +7,7 @@ __license__ = 'GPL v3' __copyright__ = '2013, Kovid Goyal ' from lxml import etree +from html5lib.constants import cdataElements, rcdataElements from calibre.ebooks.oeb.polish.tests.base import BaseTest from calibre.ebooks.oeb.base import XPath, XHTML_NS, SVG_NS, XLINK_NS @@ -18,7 +19,7 @@ def nonvoid_cdata_elements(test, parse_function): markup = ''' <{0}/> ''' - for tag in ('title', 'style', 'script', 'textarea'): + for tag in cdataElements | rcdataElements: for x in (tag, tag.upper(), '\n' + tag, tag + ' id="xxx" '): root = parse_function(markup.format(x)) test.assertEqual( diff --git a/src/calibre/utils/html5_entities.py b/src/calibre/utils/html5_entities.py deleted file mode 100644 index 0c4caef8fc..0000000000 --- a/src/calibre/utils/html5_entities.py +++ /dev/null @@ -1,2125 +0,0 @@ -entity_map = {'AElig': u'\xc6', - 'AMP': u'&', - 'Aacute': u'\xc1', - 'Abreve': u'\u0102', - 'Acirc': u'\xc2', - 'Acy': u'\u0410', - 'Afr': u'\U0001d504', - 'Agrave': u'\xc0', - 'Alpha': u'\u0391', - 'Amacr': u'\u0100', - 'And': u'\u2a53', - 'Aogon': u'\u0104', - 'Aopf': u'\U0001d538', - 'ApplyFunction': u'\u2061', - 'Aring': u'\xc5', - 'Ascr': u'\U0001d49c', - 'Assign': u'\u2254', - 'Atilde': u'\xc3', - 'Auml': u'\xc4', - 'Backslash': u'\u2216', - 'Barv': u'\u2ae7', - 'Barwed': u'\u2306', - 'Bcy': u'\u0411', - 'Because': u'\u2235', - 'Bernoullis': u'\u212c', - 'Beta': u'\u0392', - 'Bfr': u'\U0001d505', - 'Bopf': u'\U0001d539', - 'Breve': u'\u02d8', - 'Bscr': u'\u212c', - 'Bumpeq': u'\u224e', - 'CHcy': u'\u0427', - 'COPY': u'\xa9', - 'Cacute': u'\u0106', - 'Cap': u'\u22d2', - 'CapitalDifferentialD': u'\u2145', - 'Cayleys': u'\u212d', - 'Ccaron': u'\u010c', - 'Ccedil': u'\xc7', - 'Ccirc': u'\u0108', - 'Cconint': u'\u2230', - 'Cdot': u'\u010a', - 'Cedilla': u'\xb8', - 'CenterDot': u'\xb7', - 'Cfr': u'\u212d', - 'Chi': u'\u03a7', - 'CircleDot': u'\u2299', - 'CircleMinus': u'\u2296', - 'CirclePlus': u'\u2295', - 'CircleTimes': u'\u2297', - 'ClockwiseContourIntegral': u'\u2232', - 'CloseCurlyDoubleQuote': u'\u201d', - 'CloseCurlyQuote': u'\u2019', - 'Colon': u'\u2237', - 'Colone': u'\u2a74', - 'Congruent': u'\u2261', - 'Conint': u'\u222f', - 'ContourIntegral': u'\u222e', - 'Copf': u'\u2102', - 'Coproduct': u'\u2210', - 'CounterClockwiseContourIntegral': u'\u2233', - 'Cross': u'\u2a2f', - 'Cscr': u'\U0001d49e', - 'Cup': u'\u22d3', - 'CupCap': u'\u224d', - 'DD': u'\u2145', - 'DDotrahd': u'\u2911', - 'DJcy': u'\u0402', - 'DScy': u'\u0405', - 'DZcy': u'\u040f', - 'Dagger': u'\u2021', - 'Darr': u'\u21a1', - 'Dashv': u'\u2ae4', - 'Dcaron': u'\u010e', - 'Dcy': u'\u0414', - 'Del': u'\u2207', - 'Delta': u'\u0394', - 'Dfr': u'\U0001d507', - 'DiacriticalAcute': u'\xb4', - 'DiacriticalDot': u'\u02d9', - 'DiacriticalDoubleAcute': u'\u02dd', - 'DiacriticalGrave': u'`', - 'DiacriticalTilde': u'\u02dc', - 'Diamond': u'\u22c4', - 'DifferentialD': u'\u2146', - 'Dopf': u'\U0001d53b', - 'Dot': u'\xa8', - 'DotDot': u'\u20dc', - 'DotEqual': u'\u2250', - 'DoubleContourIntegral': u'\u222f', - 'DoubleDot': u'\xa8', - 'DoubleDownArrow': u'\u21d3', - 'DoubleLeftArrow': u'\u21d0', - 'DoubleLeftRightArrow': u'\u21d4', - 'DoubleLeftTee': u'\u2ae4', - 'DoubleLongLeftArrow': u'\u27f8', - 'DoubleLongLeftRightArrow': u'\u27fa', - 'DoubleLongRightArrow': u'\u27f9', - 'DoubleRightArrow': u'\u21d2', - 'DoubleRightTee': u'\u22a8', - 'DoubleUpArrow': u'\u21d1', - 'DoubleUpDownArrow': u'\u21d5', - 'DoubleVerticalBar': u'\u2225', - 'DownArrow': u'\u2193', - 'DownArrowBar': u'\u2913', - 'DownArrowUpArrow': u'\u21f5', - 'DownBreve': u'\u0311', - 'DownLeftRightVector': u'\u2950', - 'DownLeftTeeVector': u'\u295e', - 'DownLeftVector': u'\u21bd', - 'DownLeftVectorBar': u'\u2956', - 'DownRightTeeVector': u'\u295f', - 'DownRightVector': u'\u21c1', - 'DownRightVectorBar': u'\u2957', - 'DownTee': u'\u22a4', - 'DownTeeArrow': u'\u21a7', - 'Downarrow': u'\u21d3', - 'Dscr': u'\U0001d49f', - 'Dstrok': u'\u0110', - 'ENG': u'\u014a', - 'ETH': u'\xd0', - 'Eacute': u'\xc9', - 'Ecaron': u'\u011a', - 'Ecirc': u'\xca', - 'Ecy': u'\u042d', - 'Edot': u'\u0116', - 'Efr': u'\U0001d508', - 'Egrave': u'\xc8', - 'Element': u'\u2208', - 'Emacr': u'\u0112', - 'EmptySmallSquare': u'\u25fb', - 'EmptyVerySmallSquare': u'\u25ab', - 'Eogon': u'\u0118', - 'Eopf': u'\U0001d53c', - 'Epsilon': u'\u0395', - 'Equal': u'\u2a75', - 'EqualTilde': u'\u2242', - 'Equilibrium': u'\u21cc', - 'Escr': u'\u2130', - 'Esim': u'\u2a73', - 'Eta': u'\u0397', - 'Euml': u'\xcb', - 'Exists': u'\u2203', - 'ExponentialE': u'\u2147', - 'Fcy': u'\u0424', - 'Ffr': u'\U0001d509', - 'FilledSmallSquare': u'\u25fc', - 'FilledVerySmallSquare': u'\u25aa', - 'Fopf': u'\U0001d53d', - 'ForAll': u'\u2200', - 'Fouriertrf': u'\u2131', - 'Fscr': u'\u2131', - 'GJcy': u'\u0403', - 'GT': u'>', - 'Gamma': u'\u0393', - 'Gammad': u'\u03dc', - 'Gbreve': u'\u011e', - 'Gcedil': u'\u0122', - 'Gcirc': u'\u011c', - 'Gcy': u'\u0413', - 'Gdot': u'\u0120', - 'Gfr': u'\U0001d50a', - 'Gg': u'\u22d9', - 'Gopf': u'\U0001d53e', - 'GreaterEqual': u'\u2265', - 'GreaterEqualLess': u'\u22db', - 'GreaterFullEqual': u'\u2267', - 'GreaterGreater': u'\u2aa2', - 'GreaterLess': u'\u2277', - 'GreaterSlantEqual': u'\u2a7e', - 'GreaterTilde': u'\u2273', - 'Gscr': u'\U0001d4a2', - 'Gt': u'\u226b', - 'HARDcy': u'\u042a', - 'Hacek': u'\u02c7', - 'Hat': u'^', - 'Hcirc': u'\u0124', - 'Hfr': u'\u210c', - 'HilbertSpace': u'\u210b', - 'Hopf': u'\u210d', - 'HorizontalLine': u'\u2500', - 'Hscr': u'\u210b', - 'Hstrok': u'\u0126', - 'HumpDownHump': u'\u224e', - 'HumpEqual': u'\u224f', - 'IEcy': u'\u0415', - 'IJlig': u'\u0132', - 'IOcy': u'\u0401', - 'Iacute': u'\xcd', - 'Icirc': u'\xce', - 'Icy': u'\u0418', - 'Idot': u'\u0130', - 'Ifr': u'\u2111', - 'Igrave': u'\xcc', - 'Im': u'\u2111', - 'Imacr': u'\u012a', - 'ImaginaryI': u'\u2148', - 'Implies': u'\u21d2', - 'Int': u'\u222c', - 'Integral': u'\u222b', - 'Intersection': u'\u22c2', - 'InvisibleComma': u'\u2063', - 'InvisibleTimes': u'\u2062', - 'Iogon': u'\u012e', - 'Iopf': u'\U0001d540', - 'Iota': u'\u0399', - 'Iscr': u'\u2110', - 'Itilde': u'\u0128', - 'Iukcy': u'\u0406', - 'Iuml': u'\xcf', - 'Jcirc': u'\u0134', - 'Jcy': u'\u0419', - 'Jfr': u'\U0001d50d', - 'Jopf': u'\U0001d541', - 'Jscr': u'\U0001d4a5', - 'Jsercy': u'\u0408', - 'Jukcy': u'\u0404', - 'KHcy': u'\u0425', - 'KJcy': u'\u040c', - 'Kappa': u'\u039a', - 'Kcedil': u'\u0136', - 'Kcy': u'\u041a', - 'Kfr': u'\U0001d50e', - 'Kopf': u'\U0001d542', - 'Kscr': u'\U0001d4a6', - 'LJcy': u'\u0409', - 'LT': u'<', - 'Lacute': u'\u0139', - 'Lambda': u'\u039b', - 'Lang': u'\u27ea', - 'Laplacetrf': u'\u2112', - 'Larr': u'\u219e', - 'Lcaron': u'\u013d', - 'Lcedil': u'\u013b', - 'Lcy': u'\u041b', - 'LeftAngleBracket': u'\u27e8', - 'LeftArrow': u'\u2190', - 'LeftArrowBar': u'\u21e4', - 'LeftArrowRightArrow': u'\u21c6', - 'LeftCeiling': u'\u2308', - 'LeftDoubleBracket': u'\u27e6', - 'LeftDownTeeVector': u'\u2961', - 'LeftDownVector': u'\u21c3', - 'LeftDownVectorBar': u'\u2959', - 'LeftFloor': u'\u230a', - 'LeftRightArrow': u'\u2194', - 'LeftRightVector': u'\u294e', - 'LeftTee': u'\u22a3', - 'LeftTeeArrow': u'\u21a4', - 'LeftTeeVector': u'\u295a', - 'LeftTriangle': u'\u22b2', - 'LeftTriangleBar': u'\u29cf', - 'LeftTriangleEqual': u'\u22b4', - 'LeftUpDownVector': u'\u2951', - 'LeftUpTeeVector': u'\u2960', - 'LeftUpVector': u'\u21bf', - 'LeftUpVectorBar': u'\u2958', - 'LeftVector': u'\u21bc', - 'LeftVectorBar': u'\u2952', - 'Leftarrow': u'\u21d0', - 'Leftrightarrow': u'\u21d4', - 'LessEqualGreater': u'\u22da', - 'LessFullEqual': u'\u2266', - 'LessGreater': u'\u2276', - 'LessLess': u'\u2aa1', - 'LessSlantEqual': u'\u2a7d', - 'LessTilde': u'\u2272', - 'Lfr': u'\U0001d50f', - 'Ll': u'\u22d8', - 'Lleftarrow': u'\u21da', - 'Lmidot': u'\u013f', - 'LongLeftArrow': u'\u27f5', - 'LongLeftRightArrow': u'\u27f7', - 'LongRightArrow': u'\u27f6', - 'Longleftarrow': u'\u27f8', - 'Longleftrightarrow': u'\u27fa', - 'Longrightarrow': u'\u27f9', - 'Lopf': u'\U0001d543', - 'LowerLeftArrow': u'\u2199', - 'LowerRightArrow': u'\u2198', - 'Lscr': u'\u2112', - 'Lsh': u'\u21b0', - 'Lstrok': u'\u0141', - 'Lt': u'\u226a', - 'Map': u'\u2905', - 'Mcy': u'\u041c', - 'MediumSpace': u'\u205f', - 'Mellintrf': u'\u2133', - 'Mfr': u'\U0001d510', - 'MinusPlus': u'\u2213', - 'Mopf': u'\U0001d544', - 'Mscr': u'\u2133', - 'Mu': u'\u039c', - 'NJcy': u'\u040a', - 'Nacute': u'\u0143', - 'Ncaron': u'\u0147', - 'Ncedil': u'\u0145', - 'Ncy': u'\u041d', - 'NegativeMediumSpace': u'\u200b', - 'NegativeThickSpace': u'\u200b', - 'NegativeThinSpace': u'\u200b', - 'NegativeVeryThinSpace': u'\u200b', - 'NestedGreaterGreater': u'\u226b', - 'NestedLessLess': u'\u226a', - 'NewLine': u'\n', - 'Nfr': u'\U0001d511', - 'NoBreak': u'\u2060', - 'NonBreakingSpace': u'\xa0', - 'Nopf': u'\u2115', - 'Not': u'\u2aec', - 'NotCongruent': u'\u2262', - 'NotCupCap': u'\u226d', - 'NotDoubleVerticalBar': u'\u2226', - 'NotElement': u'\u2209', - 'NotEqual': u'\u2260', - 'NotEqualTilde': u'\u2242\u0338', - 'NotExists': u'\u2204', - 'NotGreater': u'\u226f', - 'NotGreaterEqual': u'\u2271', - 'NotGreaterFullEqual': u'\u2267\u0338', - 'NotGreaterGreater': u'\u226b\u0338', - 'NotGreaterLess': u'\u2279', - 'NotGreaterSlantEqual': u'\u2a7e\u0338', - 'NotGreaterTilde': u'\u2275', - 'NotHumpDownHump': u'\u224e\u0338', - 'NotHumpEqual': u'\u224f\u0338', - 'NotLeftTriangle': u'\u22ea', - 'NotLeftTriangleBar': u'\u29cf\u0338', - 'NotLeftTriangleEqual': u'\u22ec', - 'NotLess': u'\u226e', - 'NotLessEqual': u'\u2270', - 'NotLessGreater': u'\u2278', - 'NotLessLess': u'\u226a\u0338', - 'NotLessSlantEqual': u'\u2a7d\u0338', - 'NotLessTilde': u'\u2274', - 'NotNestedGreaterGreater': u'\u2aa2\u0338', - 'NotNestedLessLess': u'\u2aa1\u0338', - 'NotPrecedes': u'\u2280', - 'NotPrecedesEqual': u'\u2aaf\u0338', - 'NotPrecedesSlantEqual': u'\u22e0', - 'NotReverseElement': u'\u220c', - 'NotRightTriangle': u'\u22eb', - 'NotRightTriangleBar': u'\u29d0\u0338', - 'NotRightTriangleEqual': u'\u22ed', - 'NotSquareSubset': u'\u228f\u0338', - 'NotSquareSubsetEqual': u'\u22e2', - 'NotSquareSuperset': u'\u2290\u0338', - 'NotSquareSupersetEqual': u'\u22e3', - 'NotSubset': u'\u2282\u20d2', - 'NotSubsetEqual': u'\u2288', - 'NotSucceeds': u'\u2281', - 'NotSucceedsEqual': u'\u2ab0\u0338', - 'NotSucceedsSlantEqual': u'\u22e1', - 'NotSucceedsTilde': u'\u227f\u0338', - 'NotSuperset': u'\u2283\u20d2', - 'NotSupersetEqual': u'\u2289', - 'NotTilde': u'\u2241', - 'NotTildeEqual': u'\u2244', - 'NotTildeFullEqual': u'\u2247', - 'NotTildeTilde': u'\u2249', - 'NotVerticalBar': u'\u2224', - 'Nscr': u'\U0001d4a9', - 'Ntilde': u'\xd1', - 'Nu': u'\u039d', - 'OElig': u'\u0152', - 'Oacute': u'\xd3', - 'Ocirc': u'\xd4', - 'Ocy': u'\u041e', - 'Odblac': u'\u0150', - 'Ofr': u'\U0001d512', - 'Ograve': u'\xd2', - 'Omacr': u'\u014c', - 'Omega': u'\u03a9', - 'Omicron': u'\u039f', - 'Oopf': u'\U0001d546', - 'OpenCurlyDoubleQuote': u'\u201c', - 'OpenCurlyQuote': u'\u2018', - 'Or': u'\u2a54', - 'Oscr': u'\U0001d4aa', - 'Oslash': u'\xd8', - 'Otilde': u'\xd5', - 'Otimes': u'\u2a37', - 'Ouml': u'\xd6', - 'OverBar': u'\u203e', - 'OverBrace': u'\u23de', - 'OverBracket': u'\u23b4', - 'OverParenthesis': u'\u23dc', - 'PartialD': u'\u2202', - 'Pcy': u'\u041f', - 'Pfr': u'\U0001d513', - 'Phi': u'\u03a6', - 'Pi': u'\u03a0', - 'PlusMinus': u'\xb1', - 'Poincareplane': u'\u210c', - 'Popf': u'\u2119', - 'Pr': u'\u2abb', - 'Precedes': u'\u227a', - 'PrecedesEqual': u'\u2aaf', - 'PrecedesSlantEqual': u'\u227c', - 'PrecedesTilde': u'\u227e', - 'Prime': u'\u2033', - 'Product': u'\u220f', - 'Proportion': u'\u2237', - 'Proportional': u'\u221d', - 'Pscr': u'\U0001d4ab', - 'Psi': u'\u03a8', - 'QUOT': u'"', - 'Qfr': u'\U0001d514', - 'Qopf': u'\u211a', - 'Qscr': u'\U0001d4ac', - 'RBarr': u'\u2910', - 'REG': u'\xae', - 'Racute': u'\u0154', - 'Rang': u'\u27eb', - 'Rarr': u'\u21a0', - 'Rarrtl': u'\u2916', - 'Rcaron': u'\u0158', - 'Rcedil': u'\u0156', - 'Rcy': u'\u0420', - 'Re': u'\u211c', - 'ReverseElement': u'\u220b', - 'ReverseEquilibrium': u'\u21cb', - 'ReverseUpEquilibrium': u'\u296f', - 'Rfr': u'\u211c', - 'Rho': u'\u03a1', - 'RightAngleBracket': u'\u27e9', - 'RightArrow': u'\u2192', - 'RightArrowBar': u'\u21e5', - 'RightArrowLeftArrow': u'\u21c4', - 'RightCeiling': u'\u2309', - 'RightDoubleBracket': u'\u27e7', - 'RightDownTeeVector': u'\u295d', - 'RightDownVector': u'\u21c2', - 'RightDownVectorBar': u'\u2955', - 'RightFloor': u'\u230b', - 'RightTee': u'\u22a2', - 'RightTeeArrow': u'\u21a6', - 'RightTeeVector': u'\u295b', - 'RightTriangle': u'\u22b3', - 'RightTriangleBar': u'\u29d0', - 'RightTriangleEqual': u'\u22b5', - 'RightUpDownVector': u'\u294f', - 'RightUpTeeVector': u'\u295c', - 'RightUpVector': u'\u21be', - 'RightUpVectorBar': u'\u2954', - 'RightVector': u'\u21c0', - 'RightVectorBar': u'\u2953', - 'Rightarrow': u'\u21d2', - 'Ropf': u'\u211d', - 'RoundImplies': u'\u2970', - 'Rrightarrow': u'\u21db', - 'Rscr': u'\u211b', - 'Rsh': u'\u21b1', - 'RuleDelayed': u'\u29f4', - 'SHCHcy': u'\u0429', - 'SHcy': u'\u0428', - 'SOFTcy': u'\u042c', - 'Sacute': u'\u015a', - 'Sc': u'\u2abc', - 'Scaron': u'\u0160', - 'Scedil': u'\u015e', - 'Scirc': u'\u015c', - 'Scy': u'\u0421', - 'Sfr': u'\U0001d516', - 'ShortDownArrow': u'\u2193', - 'ShortLeftArrow': u'\u2190', - 'ShortRightArrow': u'\u2192', - 'ShortUpArrow': u'\u2191', - 'Sigma': u'\u03a3', - 'SmallCircle': u'\u2218', - 'Sopf': u'\U0001d54a', - 'Sqrt': u'\u221a', - 'Square': u'\u25a1', - 'SquareIntersection': u'\u2293', - 'SquareSubset': u'\u228f', - 'SquareSubsetEqual': u'\u2291', - 'SquareSuperset': u'\u2290', - 'SquareSupersetEqual': u'\u2292', - 'SquareUnion': u'\u2294', - 'Sscr': u'\U0001d4ae', - 'Star': u'\u22c6', - 'Sub': u'\u22d0', - 'Subset': u'\u22d0', - 'SubsetEqual': u'\u2286', - 'Succeeds': u'\u227b', - 'SucceedsEqual': u'\u2ab0', - 'SucceedsSlantEqual': u'\u227d', - 'SucceedsTilde': u'\u227f', - 'SuchThat': u'\u220b', - 'Sum': u'\u2211', - 'Sup': u'\u22d1', - 'Superset': u'\u2283', - 'SupersetEqual': u'\u2287', - 'Supset': u'\u22d1', - 'THORN': u'\xde', - 'TRADE': u'\u2122', - 'TSHcy': u'\u040b', - 'TScy': u'\u0426', - 'Tab': u'\t', - 'Tau': u'\u03a4', - 'Tcaron': u'\u0164', - 'Tcedil': u'\u0162', - 'Tcy': u'\u0422', - 'Tfr': u'\U0001d517', - 'Therefore': u'\u2234', - 'Theta': u'\u0398', - 'ThickSpace': u'\u205f\u200a', - 'ThinSpace': u'\u2009', - 'Tilde': u'\u223c', - 'TildeEqual': u'\u2243', - 'TildeFullEqual': u'\u2245', - 'TildeTilde': u'\u2248', - 'Topf': u'\U0001d54b', - 'TripleDot': u'\u20db', - 'Tscr': u'\U0001d4af', - 'Tstrok': u'\u0166', - 'Uacute': u'\xda', - 'Uarr': u'\u219f', - 'Uarrocir': u'\u2949', - 'Ubrcy': u'\u040e', - 'Ubreve': u'\u016c', - 'Ucirc': u'\xdb', - 'Ucy': u'\u0423', - 'Udblac': u'\u0170', - 'Ufr': u'\U0001d518', - 'Ugrave': u'\xd9', - 'Umacr': u'\u016a', - 'UnderBar': u'_', - 'UnderBrace': u'\u23df', - 'UnderBracket': u'\u23b5', - 'UnderParenthesis': u'\u23dd', - 'Union': u'\u22c3', - 'UnionPlus': u'\u228e', - 'Uogon': u'\u0172', - 'Uopf': u'\U0001d54c', - 'UpArrow': u'\u2191', - 'UpArrowBar': u'\u2912', - 'UpArrowDownArrow': u'\u21c5', - 'UpDownArrow': u'\u2195', - 'UpEquilibrium': u'\u296e', - 'UpTee': u'\u22a5', - 'UpTeeArrow': u'\u21a5', - 'Uparrow': u'\u21d1', - 'Updownarrow': u'\u21d5', - 'UpperLeftArrow': u'\u2196', - 'UpperRightArrow': u'\u2197', - 'Upsi': u'\u03d2', - 'Upsilon': u'\u03a5', - 'Uring': u'\u016e', - 'Uscr': u'\U0001d4b0', - 'Utilde': u'\u0168', - 'Uuml': u'\xdc', - 'VDash': u'\u22ab', - 'Vbar': u'\u2aeb', - 'Vcy': u'\u0412', - 'Vdash': u'\u22a9', - 'Vdashl': u'\u2ae6', - 'Vee': u'\u22c1', - 'Verbar': u'\u2016', - 'Vert': u'\u2016', - 'VerticalBar': u'\u2223', - 'VerticalLine': u'|', - 'VerticalSeparator': u'\u2758', - 'VerticalTilde': u'\u2240', - 'VeryThinSpace': u'\u200a', - 'Vfr': u'\U0001d519', - 'Vopf': u'\U0001d54d', - 'Vscr': u'\U0001d4b1', - 'Vvdash': u'\u22aa', - 'Wcirc': u'\u0174', - 'Wedge': u'\u22c0', - 'Wfr': u'\U0001d51a', - 'Wopf': u'\U0001d54e', - 'Wscr': u'\U0001d4b2', - 'Xfr': u'\U0001d51b', - 'Xi': u'\u039e', - 'Xopf': u'\U0001d54f', - 'Xscr': u'\U0001d4b3', - 'YAcy': u'\u042f', - 'YIcy': u'\u0407', - 'YUcy': u'\u042e', - 'Yacute': u'\xdd', - 'Ycirc': u'\u0176', - 'Ycy': u'\u042b', - 'Yfr': u'\U0001d51c', - 'Yopf': u'\U0001d550', - 'Yscr': u'\U0001d4b4', - 'Yuml': u'\u0178', - 'ZHcy': u'\u0416', - 'Zacute': u'\u0179', - 'Zcaron': u'\u017d', - 'Zcy': u'\u0417', - 'Zdot': u'\u017b', - 'ZeroWidthSpace': u'\u200b', - 'Zeta': u'\u0396', - 'Zfr': u'\u2128', - 'Zopf': u'\u2124', - 'Zscr': u'\U0001d4b5', - 'aacute': u'\xe1', - 'abreve': u'\u0103', - 'ac': u'\u223e', - 'acE': u'\u223e\u0333', - 'acd': u'\u223f', - 'acirc': u'\xe2', - 'acute': u'\xb4', - 'acy': u'\u0430', - 'aelig': u'\xe6', - 'af': u'\u2061', - 'afr': u'\U0001d51e', - 'agrave': u'\xe0', - 'alefsym': u'\u2135', - 'aleph': u'\u2135', - 'alpha': u'\u03b1', - 'amacr': u'\u0101', - 'amalg': u'\u2a3f', - 'amp': u'&', - 'and': u'\u2227', - 'andand': u'\u2a55', - 'andd': u'\u2a5c', - 'andslope': u'\u2a58', - 'andv': u'\u2a5a', - 'ang': u'\u2220', - 'ange': u'\u29a4', - 'angle': u'\u2220', - 'angmsd': u'\u2221', - 'angmsdaa': u'\u29a8', - 'angmsdab': u'\u29a9', - 'angmsdac': u'\u29aa', - 'angmsdad': u'\u29ab', - 'angmsdae': u'\u29ac', - 'angmsdaf': u'\u29ad', - 'angmsdag': u'\u29ae', - 'angmsdah': u'\u29af', - 'angrt': u'\u221f', - 'angrtvb': u'\u22be', - 'angrtvbd': u'\u299d', - 'angsph': u'\u2222', - 'angst': u'\xc5', - 'angzarr': u'\u237c', - 'aogon': u'\u0105', - 'aopf': u'\U0001d552', - 'ap': u'\u2248', - 'apE': u'\u2a70', - 'apacir': u'\u2a6f', - 'ape': u'\u224a', - 'apid': u'\u224b', - 'apos': u"'", - 'approx': u'\u2248', - 'approxeq': u'\u224a', - 'aring': u'\xe5', - 'ascr': u'\U0001d4b6', - 'ast': u'*', - 'asymp': u'\u2248', - 'asympeq': u'\u224d', - 'atilde': u'\xe3', - 'auml': u'\xe4', - 'awconint': u'\u2233', - 'awint': u'\u2a11', - 'bNot': u'\u2aed', - 'backcong': u'\u224c', - 'backepsilon': u'\u03f6', - 'backprime': u'\u2035', - 'backsim': u'\u223d', - 'backsimeq': u'\u22cd', - 'barvee': u'\u22bd', - 'barwed': u'\u2305', - 'barwedge': u'\u2305', - 'bbrk': u'\u23b5', - 'bbrktbrk': u'\u23b6', - 'bcong': u'\u224c', - 'bcy': u'\u0431', - 'bdquo': u'\u201e', - 'becaus': u'\u2235', - 'because': u'\u2235', - 'bemptyv': u'\u29b0', - 'bepsi': u'\u03f6', - 'bernou': u'\u212c', - 'beta': u'\u03b2', - 'beth': u'\u2136', - 'between': u'\u226c', - 'bfr': u'\U0001d51f', - 'bigcap': u'\u22c2', - 'bigcirc': u'\u25ef', - 'bigcup': u'\u22c3', - 'bigodot': u'\u2a00', - 'bigoplus': u'\u2a01', - 'bigotimes': u'\u2a02', - 'bigsqcup': u'\u2a06', - 'bigstar': u'\u2605', - 'bigtriangledown': u'\u25bd', - 'bigtriangleup': u'\u25b3', - 'biguplus': u'\u2a04', - 'bigvee': u'\u22c1', - 'bigwedge': u'\u22c0', - 'bkarow': u'\u290d', - 'blacklozenge': u'\u29eb', - 'blacksquare': u'\u25aa', - 'blacktriangle': u'\u25b4', - 'blacktriangledown': u'\u25be', - 'blacktriangleleft': u'\u25c2', - 'blacktriangleright': u'\u25b8', - 'blank': u'\u2423', - 'blk12': u'\u2592', - 'blk14': u'\u2591', - 'blk34': u'\u2593', - 'block': u'\u2588', - 'bne': u'=\u20e5', - 'bnequiv': u'\u2261\u20e5', - 'bnot': u'\u2310', - 'bopf': u'\U0001d553', - 'bot': u'\u22a5', - 'bottom': u'\u22a5', - 'bowtie': u'\u22c8', - 'boxDL': u'\u2557', - 'boxDR': u'\u2554', - 'boxDl': u'\u2556', - 'boxDr': u'\u2553', - 'boxH': u'\u2550', - 'boxHD': u'\u2566', - 'boxHU': u'\u2569', - 'boxHd': u'\u2564', - 'boxHu': u'\u2567', - 'boxUL': u'\u255d', - 'boxUR': u'\u255a', - 'boxUl': u'\u255c', - 'boxUr': u'\u2559', - 'boxV': u'\u2551', - 'boxVH': u'\u256c', - 'boxVL': u'\u2563', - 'boxVR': u'\u2560', - 'boxVh': u'\u256b', - 'boxVl': u'\u2562', - 'boxVr': u'\u255f', - 'boxbox': u'\u29c9', - 'boxdL': u'\u2555', - 'boxdR': u'\u2552', - 'boxdl': u'\u2510', - 'boxdr': u'\u250c', - 'boxh': u'\u2500', - 'boxhD': u'\u2565', - 'boxhU': u'\u2568', - 'boxhd': u'\u252c', - 'boxhu': u'\u2534', - 'boxminus': u'\u229f', - 'boxplus': u'\u229e', - 'boxtimes': u'\u22a0', - 'boxuL': u'\u255b', - 'boxuR': u'\u2558', - 'boxul': u'\u2518', - 'boxur': u'\u2514', - 'boxv': u'\u2502', - 'boxvH': u'\u256a', - 'boxvL': u'\u2561', - 'boxvR': u'\u255e', - 'boxvh': u'\u253c', - 'boxvl': u'\u2524', - 'boxvr': u'\u251c', - 'bprime': u'\u2035', - 'breve': u'\u02d8', - 'brvbar': u'\xa6', - 'bscr': u'\U0001d4b7', - 'bsemi': u'\u204f', - 'bsim': u'\u223d', - 'bsime': u'\u22cd', - 'bsol': u'\\', - 'bsolb': u'\u29c5', - 'bsolhsub': u'\u27c8', - 'bull': u'\u2022', - 'bullet': u'\u2022', - 'bump': u'\u224e', - 'bumpE': u'\u2aae', - 'bumpe': u'\u224f', - 'bumpeq': u'\u224f', - 'cacute': u'\u0107', - 'cap': u'\u2229', - 'capand': u'\u2a44', - 'capbrcup': u'\u2a49', - 'capcap': u'\u2a4b', - 'capcup': u'\u2a47', - 'capdot': u'\u2a40', - 'caps': u'\u2229\ufe00', - 'caret': u'\u2041', - 'caron': u'\u02c7', - 'ccaps': u'\u2a4d', - 'ccaron': u'\u010d', - 'ccedil': u'\xe7', - 'ccirc': u'\u0109', - 'ccups': u'\u2a4c', - 'ccupssm': u'\u2a50', - 'cdot': u'\u010b', - 'cedil': u'\xb8', - 'cemptyv': u'\u29b2', - 'cent': u'\xa2', - 'centerdot': u'\xb7', - 'cfr': u'\U0001d520', - 'chcy': u'\u0447', - 'check': u'\u2713', - 'checkmark': u'\u2713', - 'chi': u'\u03c7', - 'cir': u'\u25cb', - 'cirE': u'\u29c3', - 'circ': u'\u02c6', - 'circeq': u'\u2257', - 'circlearrowleft': u'\u21ba', - 'circlearrowright': u'\u21bb', - 'circledR': u'\xae', - 'circledS': u'\u24c8', - 'circledast': u'\u229b', - 'circledcirc': u'\u229a', - 'circleddash': u'\u229d', - 'cire': u'\u2257', - 'cirfnint': u'\u2a10', - 'cirmid': u'\u2aef', - 'cirscir': u'\u29c2', - 'clubs': u'\u2663', - 'clubsuit': u'\u2663', - 'colon': u':', - 'colone': u'\u2254', - 'coloneq': u'\u2254', - 'comma': u',', - 'commat': u'@', - 'comp': u'\u2201', - 'compfn': u'\u2218', - 'complement': u'\u2201', - 'complexes': u'\u2102', - 'cong': u'\u2245', - 'congdot': u'\u2a6d', - 'conint': u'\u222e', - 'copf': u'\U0001d554', - 'coprod': u'\u2210', - 'copy': u'\xa9', - 'copysr': u'\u2117', - 'crarr': u'\u21b5', - 'cross': u'\u2717', - 'cscr': u'\U0001d4b8', - 'csub': u'\u2acf', - 'csube': u'\u2ad1', - 'csup': u'\u2ad0', - 'csupe': u'\u2ad2', - 'ctdot': u'\u22ef', - 'cudarrl': u'\u2938', - 'cudarrr': u'\u2935', - 'cuepr': u'\u22de', - 'cuesc': u'\u22df', - 'cularr': u'\u21b6', - 'cularrp': u'\u293d', - 'cup': u'\u222a', - 'cupbrcap': u'\u2a48', - 'cupcap': u'\u2a46', - 'cupcup': u'\u2a4a', - 'cupdot': u'\u228d', - 'cupor': u'\u2a45', - 'cups': u'\u222a\ufe00', - 'curarr': u'\u21b7', - 'curarrm': u'\u293c', - 'curlyeqprec': u'\u22de', - 'curlyeqsucc': u'\u22df', - 'curlyvee': u'\u22ce', - 'curlywedge': u'\u22cf', - 'curren': u'\xa4', - 'curvearrowleft': u'\u21b6', - 'curvearrowright': u'\u21b7', - 'cuvee': u'\u22ce', - 'cuwed': u'\u22cf', - 'cwconint': u'\u2232', - 'cwint': u'\u2231', - 'cylcty': u'\u232d', - 'dArr': u'\u21d3', - 'dHar': u'\u2965', - 'dagger': u'\u2020', - 'daleth': u'\u2138', - 'darr': u'\u2193', - 'dash': u'\u2010', - 'dashv': u'\u22a3', - 'dbkarow': u'\u290f', - 'dblac': u'\u02dd', - 'dcaron': u'\u010f', - 'dcy': u'\u0434', - 'dd': u'\u2146', - 'ddagger': u'\u2021', - 'ddarr': u'\u21ca', - 'ddotseq': u'\u2a77', - 'deg': u'\xb0', - 'delta': u'\u03b4', - 'demptyv': u'\u29b1', - 'dfisht': u'\u297f', - 'dfr': u'\U0001d521', - 'dharl': u'\u21c3', - 'dharr': u'\u21c2', - 'diam': u'\u22c4', - 'diamond': u'\u22c4', - 'diamondsuit': u'\u2666', - 'diams': u'\u2666', - 'die': u'\xa8', - 'digamma': u'\u03dd', - 'disin': u'\u22f2', - 'div': u'\xf7', - 'divide': u'\xf7', - 'divideontimes': u'\u22c7', - 'divonx': u'\u22c7', - 'djcy': u'\u0452', - 'dlcorn': u'\u231e', - 'dlcrop': u'\u230d', - 'dollar': u'$', - 'dopf': u'\U0001d555', - 'dot': u'\u02d9', - 'doteq': u'\u2250', - 'doteqdot': u'\u2251', - 'dotminus': u'\u2238', - 'dotplus': u'\u2214', - 'dotsquare': u'\u22a1', - 'doublebarwedge': u'\u2306', - 'downarrow': u'\u2193', - 'downdownarrows': u'\u21ca', - 'downharpoonleft': u'\u21c3', - 'downharpoonright': u'\u21c2', - 'drbkarow': u'\u2910', - 'drcorn': u'\u231f', - 'drcrop': u'\u230c', - 'dscr': u'\U0001d4b9', - 'dscy': u'\u0455', - 'dsol': u'\u29f6', - 'dstrok': u'\u0111', - 'dtdot': u'\u22f1', - 'dtri': u'\u25bf', - 'dtrif': u'\u25be', - 'duarr': u'\u21f5', - 'duhar': u'\u296f', - 'dwangle': u'\u29a6', - 'dzcy': u'\u045f', - 'dzigrarr': u'\u27ff', - 'eDDot': u'\u2a77', - 'eDot': u'\u2251', - 'eacute': u'\xe9', - 'easter': u'\u2a6e', - 'ecaron': u'\u011b', - 'ecir': u'\u2256', - 'ecirc': u'\xea', - 'ecolon': u'\u2255', - 'ecy': u'\u044d', - 'edot': u'\u0117', - 'ee': u'\u2147', - 'efDot': u'\u2252', - 'efr': u'\U0001d522', - 'eg': u'\u2a9a', - 'egrave': u'\xe8', - 'egs': u'\u2a96', - 'egsdot': u'\u2a98', - 'el': u'\u2a99', - 'elinters': u'\u23e7', - 'ell': u'\u2113', - 'els': u'\u2a95', - 'elsdot': u'\u2a97', - 'emacr': u'\u0113', - 'empty': u'\u2205', - 'emptyset': u'\u2205', - 'emptyv': u'\u2205', - 'emsp': u'\u2003', - 'emsp13': u'\u2004', - 'emsp14': u'\u2005', - 'eng': u'\u014b', - 'ensp': u'\u2002', - 'eogon': u'\u0119', - 'eopf': u'\U0001d556', - 'epar': u'\u22d5', - 'eparsl': u'\u29e3', - 'eplus': u'\u2a71', - 'epsi': u'\u03b5', - 'epsilon': u'\u03b5', - 'epsiv': u'\u03f5', - 'eqcirc': u'\u2256', - 'eqcolon': u'\u2255', - 'eqsim': u'\u2242', - 'eqslantgtr': u'\u2a96', - 'eqslantless': u'\u2a95', - 'equals': u'=', - 'equest': u'\u225f', - 'equiv': u'\u2261', - 'equivDD': u'\u2a78', - 'eqvparsl': u'\u29e5', - 'erDot': u'\u2253', - 'erarr': u'\u2971', - 'escr': u'\u212f', - 'esdot': u'\u2250', - 'esim': u'\u2242', - 'eta': u'\u03b7', - 'eth': u'\xf0', - 'euml': u'\xeb', - 'euro': u'\u20ac', - 'excl': u'!', - 'exist': u'\u2203', - 'expectation': u'\u2130', - 'exponentiale': u'\u2147', - 'fallingdotseq': u'\u2252', - 'fcy': u'\u0444', - 'female': u'\u2640', - 'ffilig': u'\ufb03', - 'fflig': u'\ufb00', - 'ffllig': u'\ufb04', - 'ffr': u'\U0001d523', - 'filig': u'\ufb01', - 'fjlig': u'fj', - 'flat': u'\u266d', - 'fllig': u'\ufb02', - 'fltns': u'\u25b1', - 'fnof': u'\u0192', - 'fopf': u'\U0001d557', - 'forall': u'\u2200', - 'fork': u'\u22d4', - 'forkv': u'\u2ad9', - 'fpartint': u'\u2a0d', - 'frac12': u'\xbd', - 'frac13': u'\u2153', - 'frac14': u'\xbc', - 'frac15': u'\u2155', - 'frac16': u'\u2159', - 'frac18': u'\u215b', - 'frac23': u'\u2154', - 'frac25': u'\u2156', - 'frac34': u'\xbe', - 'frac35': u'\u2157', - 'frac38': u'\u215c', - 'frac45': u'\u2158', - 'frac56': u'\u215a', - 'frac58': u'\u215d', - 'frac78': u'\u215e', - 'frasl': u'\u2044', - 'frown': u'\u2322', - 'fscr': u'\U0001d4bb', - 'gE': u'\u2267', - 'gEl': u'\u2a8c', - 'gacute': u'\u01f5', - 'gamma': u'\u03b3', - 'gammad': u'\u03dd', - 'gap': u'\u2a86', - 'gbreve': u'\u011f', - 'gcirc': u'\u011d', - 'gcy': u'\u0433', - 'gdot': u'\u0121', - 'ge': u'\u2265', - 'gel': u'\u22db', - 'geq': u'\u2265', - 'geqq': u'\u2267', - 'geqslant': u'\u2a7e', - 'ges': u'\u2a7e', - 'gescc': u'\u2aa9', - 'gesdot': u'\u2a80', - 'gesdoto': u'\u2a82', - 'gesdotol': u'\u2a84', - 'gesl': u'\u22db\ufe00', - 'gesles': u'\u2a94', - 'gfr': u'\U0001d524', - 'gg': u'\u226b', - 'ggg': u'\u22d9', - 'gimel': u'\u2137', - 'gjcy': u'\u0453', - 'gl': u'\u2277', - 'glE': u'\u2a92', - 'gla': u'\u2aa5', - 'glj': u'\u2aa4', - 'gnE': u'\u2269', - 'gnap': u'\u2a8a', - 'gnapprox': u'\u2a8a', - 'gne': u'\u2a88', - 'gneq': u'\u2a88', - 'gneqq': u'\u2269', - 'gnsim': u'\u22e7', - 'gopf': u'\U0001d558', - 'grave': u'`', - 'gscr': u'\u210a', - 'gsim': u'\u2273', - 'gsime': u'\u2a8e', - 'gsiml': u'\u2a90', - 'gt': u'>', - 'gtcc': u'\u2aa7', - 'gtcir': u'\u2a7a', - 'gtdot': u'\u22d7', - 'gtlPar': u'\u2995', - 'gtquest': u'\u2a7c', - 'gtrapprox': u'\u2a86', - 'gtrarr': u'\u2978', - 'gtrdot': u'\u22d7', - 'gtreqless': u'\u22db', - 'gtreqqless': u'\u2a8c', - 'gtrless': u'\u2277', - 'gtrsim': u'\u2273', - 'gvertneqq': u'\u2269\ufe00', - 'gvnE': u'\u2269\ufe00', - 'hArr': u'\u21d4', - 'hairsp': u'\u200a', - 'half': u'\xbd', - 'hamilt': u'\u210b', - 'hardcy': u'\u044a', - 'harr': u'\u2194', - 'harrcir': u'\u2948', - 'harrw': u'\u21ad', - 'hbar': u'\u210f', - 'hcirc': u'\u0125', - 'hearts': u'\u2665', - 'heartsuit': u'\u2665', - 'hellip': u'\u2026', - 'hercon': u'\u22b9', - 'hfr': u'\U0001d525', - 'hksearow': u'\u2925', - 'hkswarow': u'\u2926', - 'hoarr': u'\u21ff', - 'homtht': u'\u223b', - 'hookleftarrow': u'\u21a9', - 'hookrightarrow': u'\u21aa', - 'hopf': u'\U0001d559', - 'horbar': u'\u2015', - 'hscr': u'\U0001d4bd', - 'hslash': u'\u210f', - 'hstrok': u'\u0127', - 'hybull': u'\u2043', - 'hyphen': u'\u2010', - 'iacute': u'\xed', - 'ic': u'\u2063', - 'icirc': u'\xee', - 'icy': u'\u0438', - 'iecy': u'\u0435', - 'iexcl': u'\xa1', - 'iff': u'\u21d4', - 'ifr': u'\U0001d526', - 'igrave': u'\xec', - 'ii': u'\u2148', - 'iiiint': u'\u2a0c', - 'iiint': u'\u222d', - 'iinfin': u'\u29dc', - 'iiota': u'\u2129', - 'ijlig': u'\u0133', - 'imacr': u'\u012b', - 'image': u'\u2111', - 'imagline': u'\u2110', - 'imagpart': u'\u2111', - 'imath': u'\u0131', - 'imof': u'\u22b7', - 'imped': u'\u01b5', - 'in': u'\u2208', - 'incare': u'\u2105', - 'infin': u'\u221e', - 'infintie': u'\u29dd', - 'inodot': u'\u0131', - 'int': u'\u222b', - 'intcal': u'\u22ba', - 'integers': u'\u2124', - 'intercal': u'\u22ba', - 'intlarhk': u'\u2a17', - 'intprod': u'\u2a3c', - 'iocy': u'\u0451', - 'iogon': u'\u012f', - 'iopf': u'\U0001d55a', - 'iota': u'\u03b9', - 'iprod': u'\u2a3c', - 'iquest': u'\xbf', - 'iscr': u'\U0001d4be', - 'isin': u'\u2208', - 'isinE': u'\u22f9', - 'isindot': u'\u22f5', - 'isins': u'\u22f4', - 'isinsv': u'\u22f3', - 'isinv': u'\u2208', - 'it': u'\u2062', - 'itilde': u'\u0129', - 'iukcy': u'\u0456', - 'iuml': u'\xef', - 'jcirc': u'\u0135', - 'jcy': u'\u0439', - 'jfr': u'\U0001d527', - 'jmath': u'\u0237', - 'jopf': u'\U0001d55b', - 'jscr': u'\U0001d4bf', - 'jsercy': u'\u0458', - 'jukcy': u'\u0454', - 'kappa': u'\u03ba', - 'kappav': u'\u03f0', - 'kcedil': u'\u0137', - 'kcy': u'\u043a', - 'kfr': u'\U0001d528', - 'kgreen': u'\u0138', - 'khcy': u'\u0445', - 'kjcy': u'\u045c', - 'kopf': u'\U0001d55c', - 'kscr': u'\U0001d4c0', - 'lAarr': u'\u21da', - 'lArr': u'\u21d0', - 'lAtail': u'\u291b', - 'lBarr': u'\u290e', - 'lE': u'\u2266', - 'lEg': u'\u2a8b', - 'lHar': u'\u2962', - 'lacute': u'\u013a', - 'laemptyv': u'\u29b4', - 'lagran': u'\u2112', - 'lambda': u'\u03bb', - 'lang': u'\u27e8', - 'langd': u'\u2991', - 'langle': u'\u27e8', - 'lap': u'\u2a85', - 'laquo': u'\xab', - 'larr': u'\u2190', - 'larrb': u'\u21e4', - 'larrbfs': u'\u291f', - 'larrfs': u'\u291d', - 'larrhk': u'\u21a9', - 'larrlp': u'\u21ab', - 'larrpl': u'\u2939', - 'larrsim': u'\u2973', - 'larrtl': u'\u21a2', - 'lat': u'\u2aab', - 'latail': u'\u2919', - 'late': u'\u2aad', - 'lates': u'\u2aad\ufe00', - 'lbarr': u'\u290c', - 'lbbrk': u'\u2772', - 'lbrace': u'{', - 'lbrack': u'[', - 'lbrke': u'\u298b', - 'lbrksld': u'\u298f', - 'lbrkslu': u'\u298d', - 'lcaron': u'\u013e', - 'lcedil': u'\u013c', - 'lceil': u'\u2308', - 'lcub': u'{', - 'lcy': u'\u043b', - 'ldca': u'\u2936', - 'ldquo': u'\u201c', - 'ldquor': u'\u201e', - 'ldrdhar': u'\u2967', - 'ldrushar': u'\u294b', - 'ldsh': u'\u21b2', - 'le': u'\u2264', - 'leftarrow': u'\u2190', - 'leftarrowtail': u'\u21a2', - 'leftharpoondown': u'\u21bd', - 'leftharpoonup': u'\u21bc', - 'leftleftarrows': u'\u21c7', - 'leftrightarrow': u'\u2194', - 'leftrightarrows': u'\u21c6', - 'leftrightharpoons': u'\u21cb', - 'leftrightsquigarrow': u'\u21ad', - 'leftthreetimes': u'\u22cb', - 'leg': u'\u22da', - 'leq': u'\u2264', - 'leqq': u'\u2266', - 'leqslant': u'\u2a7d', - 'les': u'\u2a7d', - 'lescc': u'\u2aa8', - 'lesdot': u'\u2a7f', - 'lesdoto': u'\u2a81', - 'lesdotor': u'\u2a83', - 'lesg': u'\u22da\ufe00', - 'lesges': u'\u2a93', - 'lessapprox': u'\u2a85', - 'lessdot': u'\u22d6', - 'lesseqgtr': u'\u22da', - 'lesseqqgtr': u'\u2a8b', - 'lessgtr': u'\u2276', - 'lesssim': u'\u2272', - 'lfisht': u'\u297c', - 'lfloor': u'\u230a', - 'lfr': u'\U0001d529', - 'lg': u'\u2276', - 'lgE': u'\u2a91', - 'lhard': u'\u21bd', - 'lharu': u'\u21bc', - 'lharul': u'\u296a', - 'lhblk': u'\u2584', - 'ljcy': u'\u0459', - 'll': u'\u226a', - 'llarr': u'\u21c7', - 'llcorner': u'\u231e', - 'llhard': u'\u296b', - 'lltri': u'\u25fa', - 'lmidot': u'\u0140', - 'lmoust': u'\u23b0', - 'lmoustache': u'\u23b0', - 'lnE': u'\u2268', - 'lnap': u'\u2a89', - 'lnapprox': u'\u2a89', - 'lne': u'\u2a87', - 'lneq': u'\u2a87', - 'lneqq': u'\u2268', - 'lnsim': u'\u22e6', - 'loang': u'\u27ec', - 'loarr': u'\u21fd', - 'lobrk': u'\u27e6', - 'longleftarrow': u'\u27f5', - 'longleftrightarrow': u'\u27f7', - 'longmapsto': u'\u27fc', - 'longrightarrow': u'\u27f6', - 'looparrowleft': u'\u21ab', - 'looparrowright': u'\u21ac', - 'lopar': u'\u2985', - 'lopf': u'\U0001d55d', - 'loplus': u'\u2a2d', - 'lotimes': u'\u2a34', - 'lowast': u'\u2217', - 'lowbar': u'_', - 'loz': u'\u25ca', - 'lozenge': u'\u25ca', - 'lozf': u'\u29eb', - 'lpar': u'(', - 'lparlt': u'\u2993', - 'lrarr': u'\u21c6', - 'lrcorner': u'\u231f', - 'lrhar': u'\u21cb', - 'lrhard': u'\u296d', - 'lrm': u'\u200e', - 'lrtri': u'\u22bf', - 'lsaquo': u'\u2039', - 'lscr': u'\U0001d4c1', - 'lsh': u'\u21b0', - 'lsim': u'\u2272', - 'lsime': u'\u2a8d', - 'lsimg': u'\u2a8f', - 'lsqb': u'[', - 'lsquo': u'\u2018', - 'lsquor': u'\u201a', - 'lstrok': u'\u0142', - 'lt': u'<', - 'ltcc': u'\u2aa6', - 'ltcir': u'\u2a79', - 'ltdot': u'\u22d6', - 'lthree': u'\u22cb', - 'ltimes': u'\u22c9', - 'ltlarr': u'\u2976', - 'ltquest': u'\u2a7b', - 'ltrPar': u'\u2996', - 'ltri': u'\u25c3', - 'ltrie': u'\u22b4', - 'ltrif': u'\u25c2', - 'lurdshar': u'\u294a', - 'luruhar': u'\u2966', - 'lvertneqq': u'\u2268\ufe00', - 'lvnE': u'\u2268\ufe00', - 'mDDot': u'\u223a', - 'macr': u'\xaf', - 'male': u'\u2642', - 'malt': u'\u2720', - 'maltese': u'\u2720', - 'map': u'\u21a6', - 'mapsto': u'\u21a6', - 'mapstodown': u'\u21a7', - 'mapstoleft': u'\u21a4', - 'mapstoup': u'\u21a5', - 'marker': u'\u25ae', - 'mcomma': u'\u2a29', - 'mcy': u'\u043c', - 'mdash': u'\u2014', - 'measuredangle': u'\u2221', - 'mfr': u'\U0001d52a', - 'mho': u'\u2127', - 'micro': u'\xb5', - 'mid': u'\u2223', - 'midast': u'*', - 'midcir': u'\u2af0', - 'middot': u'\xb7', - 'minus': u'\u2212', - 'minusb': u'\u229f', - 'minusd': u'\u2238', - 'minusdu': u'\u2a2a', - 'mlcp': u'\u2adb', - 'mldr': u'\u2026', - 'mnplus': u'\u2213', - 'models': u'\u22a7', - 'mopf': u'\U0001d55e', - 'mp': u'\u2213', - 'mscr': u'\U0001d4c2', - 'mstpos': u'\u223e', - 'mu': u'\u03bc', - 'multimap': u'\u22b8', - 'mumap': u'\u22b8', - 'nGg': u'\u22d9\u0338', - 'nGt': u'\u226b\u20d2', - 'nGtv': u'\u226b\u0338', - 'nLeftarrow': u'\u21cd', - 'nLeftrightarrow': u'\u21ce', - 'nLl': u'\u22d8\u0338', - 'nLt': u'\u226a\u20d2', - 'nLtv': u'\u226a\u0338', - 'nRightarrow': u'\u21cf', - 'nVDash': u'\u22af', - 'nVdash': u'\u22ae', - 'nabla': u'\u2207', - 'nacute': u'\u0144', - 'nang': u'\u2220\u20d2', - 'nap': u'\u2249', - 'napE': u'\u2a70\u0338', - 'napid': u'\u224b\u0338', - 'napos': u'\u0149', - 'napprox': u'\u2249', - 'natur': u'\u266e', - 'natural': u'\u266e', - 'naturals': u'\u2115', - 'nbsp': u'\xa0', - 'nbump': u'\u224e\u0338', - 'nbumpe': u'\u224f\u0338', - 'ncap': u'\u2a43', - 'ncaron': u'\u0148', - 'ncedil': u'\u0146', - 'ncong': u'\u2247', - 'ncongdot': u'\u2a6d\u0338', - 'ncup': u'\u2a42', - 'ncy': u'\u043d', - 'ndash': u'\u2013', - 'ne': u'\u2260', - 'neArr': u'\u21d7', - 'nearhk': u'\u2924', - 'nearr': u'\u2197', - 'nearrow': u'\u2197', - 'nedot': u'\u2250\u0338', - 'nequiv': u'\u2262', - 'nesear': u'\u2928', - 'nesim': u'\u2242\u0338', - 'nexist': u'\u2204', - 'nexists': u'\u2204', - 'nfr': u'\U0001d52b', - 'ngE': u'\u2267\u0338', - 'nge': u'\u2271', - 'ngeq': u'\u2271', - 'ngeqq': u'\u2267\u0338', - 'ngeqslant': u'\u2a7e\u0338', - 'nges': u'\u2a7e\u0338', - 'ngsim': u'\u2275', - 'ngt': u'\u226f', - 'ngtr': u'\u226f', - 'nhArr': u'\u21ce', - 'nharr': u'\u21ae', - 'nhpar': u'\u2af2', - 'ni': u'\u220b', - 'nis': u'\u22fc', - 'nisd': u'\u22fa', - 'niv': u'\u220b', - 'njcy': u'\u045a', - 'nlArr': u'\u21cd', - 'nlE': u'\u2266\u0338', - 'nlarr': u'\u219a', - 'nldr': u'\u2025', - 'nle': u'\u2270', - 'nleftarrow': u'\u219a', - 'nleftrightarrow': u'\u21ae', - 'nleq': u'\u2270', - 'nleqq': u'\u2266\u0338', - 'nleqslant': u'\u2a7d\u0338', - 'nles': u'\u2a7d\u0338', - 'nless': u'\u226e', - 'nlsim': u'\u2274', - 'nlt': u'\u226e', - 'nltri': u'\u22ea', - 'nltrie': u'\u22ec', - 'nmid': u'\u2224', - 'nopf': u'\U0001d55f', - 'not': u'\xac', - 'notin': u'\u2209', - 'notinE': u'\u22f9\u0338', - 'notindot': u'\u22f5\u0338', - 'notinva': u'\u2209', - 'notinvb': u'\u22f7', - 'notinvc': u'\u22f6', - 'notni': u'\u220c', - 'notniva': u'\u220c', - 'notnivb': u'\u22fe', - 'notnivc': u'\u22fd', - 'npar': u'\u2226', - 'nparallel': u'\u2226', - 'nparsl': u'\u2afd\u20e5', - 'npart': u'\u2202\u0338', - 'npolint': u'\u2a14', - 'npr': u'\u2280', - 'nprcue': u'\u22e0', - 'npre': u'\u2aaf\u0338', - 'nprec': u'\u2280', - 'npreceq': u'\u2aaf\u0338', - 'nrArr': u'\u21cf', - 'nrarr': u'\u219b', - 'nrarrc': u'\u2933\u0338', - 'nrarrw': u'\u219d\u0338', - 'nrightarrow': u'\u219b', - 'nrtri': u'\u22eb', - 'nrtrie': u'\u22ed', - 'nsc': u'\u2281', - 'nsccue': u'\u22e1', - 'nsce': u'\u2ab0\u0338', - 'nscr': u'\U0001d4c3', - 'nshortmid': u'\u2224', - 'nshortparallel': u'\u2226', - 'nsim': u'\u2241', - 'nsime': u'\u2244', - 'nsimeq': u'\u2244', - 'nsmid': u'\u2224', - 'nspar': u'\u2226', - 'nsqsube': u'\u22e2', - 'nsqsupe': u'\u22e3', - 'nsub': u'\u2284', - 'nsubE': u'\u2ac5\u0338', - 'nsube': u'\u2288', - 'nsubset': u'\u2282\u20d2', - 'nsubseteq': u'\u2288', - 'nsubseteqq': u'\u2ac5\u0338', - 'nsucc': u'\u2281', - 'nsucceq': u'\u2ab0\u0338', - 'nsup': u'\u2285', - 'nsupE': u'\u2ac6\u0338', - 'nsupe': u'\u2289', - 'nsupset': u'\u2283\u20d2', - 'nsupseteq': u'\u2289', - 'nsupseteqq': u'\u2ac6\u0338', - 'ntgl': u'\u2279', - 'ntilde': u'\xf1', - 'ntlg': u'\u2278', - 'ntriangleleft': u'\u22ea', - 'ntrianglelefteq': u'\u22ec', - 'ntriangleright': u'\u22eb', - 'ntrianglerighteq': u'\u22ed', - 'nu': u'\u03bd', - 'num': u'#', - 'numero': u'\u2116', - 'numsp': u'\u2007', - 'nvDash': u'\u22ad', - 'nvHarr': u'\u2904', - 'nvap': u'\u224d\u20d2', - 'nvdash': u'\u22ac', - 'nvge': u'\u2265\u20d2', - 'nvgt': u'>\u20d2', - 'nvinfin': u'\u29de', - 'nvlArr': u'\u2902', - 'nvle': u'\u2264\u20d2', - 'nvlt': u'<\u20d2', - 'nvltrie': u'\u22b4\u20d2', - 'nvrArr': u'\u2903', - 'nvrtrie': u'\u22b5\u20d2', - 'nvsim': u'\u223c\u20d2', - 'nwArr': u'\u21d6', - 'nwarhk': u'\u2923', - 'nwarr': u'\u2196', - 'nwarrow': u'\u2196', - 'nwnear': u'\u2927', - 'oS': u'\u24c8', - 'oacute': u'\xf3', - 'oast': u'\u229b', - 'ocir': u'\u229a', - 'ocirc': u'\xf4', - 'ocy': u'\u043e', - 'odash': u'\u229d', - 'odblac': u'\u0151', - 'odiv': u'\u2a38', - 'odot': u'\u2299', - 'odsold': u'\u29bc', - 'oelig': u'\u0153', - 'ofcir': u'\u29bf', - 'ofr': u'\U0001d52c', - 'ogon': u'\u02db', - 'ograve': u'\xf2', - 'ogt': u'\u29c1', - 'ohbar': u'\u29b5', - 'ohm': u'\u03a9', - 'oint': u'\u222e', - 'olarr': u'\u21ba', - 'olcir': u'\u29be', - 'olcross': u'\u29bb', - 'oline': u'\u203e', - 'olt': u'\u29c0', - 'omacr': u'\u014d', - 'omega': u'\u03c9', - 'omicron': u'\u03bf', - 'omid': u'\u29b6', - 'ominus': u'\u2296', - 'oopf': u'\U0001d560', - 'opar': u'\u29b7', - 'operp': u'\u29b9', - 'oplus': u'\u2295', - 'or': u'\u2228', - 'orarr': u'\u21bb', - 'ord': u'\u2a5d', - 'order': u'\u2134', - 'orderof': u'\u2134', - 'ordf': u'\xaa', - 'ordm': u'\xba', - 'origof': u'\u22b6', - 'oror': u'\u2a56', - 'orslope': u'\u2a57', - 'orv': u'\u2a5b', - 'oscr': u'\u2134', - 'oslash': u'\xf8', - 'osol': u'\u2298', - 'otilde': u'\xf5', - 'otimes': u'\u2297', - 'otimesas': u'\u2a36', - 'ouml': u'\xf6', - 'ovbar': u'\u233d', - 'par': u'\u2225', - 'para': u'\xb6', - 'parallel': u'\u2225', - 'parsim': u'\u2af3', - 'parsl': u'\u2afd', - 'part': u'\u2202', - 'pcy': u'\u043f', - 'percnt': u'%', - 'period': u'.', - 'permil': u'\u2030', - 'perp': u'\u22a5', - 'pertenk': u'\u2031', - 'pfr': u'\U0001d52d', - 'phi': u'\u03c6', - 'phiv': u'\u03d5', - 'phmmat': u'\u2133', - 'phone': u'\u260e', - 'pi': u'\u03c0', - 'pitchfork': u'\u22d4', - 'piv': u'\u03d6', - 'planck': u'\u210f', - 'planckh': u'\u210e', - 'plankv': u'\u210f', - 'plus': u'+', - 'plusacir': u'\u2a23', - 'plusb': u'\u229e', - 'pluscir': u'\u2a22', - 'plusdo': u'\u2214', - 'plusdu': u'\u2a25', - 'pluse': u'\u2a72', - 'plusmn': u'\xb1', - 'plussim': u'\u2a26', - 'plustwo': u'\u2a27', - 'pm': u'\xb1', - 'pointint': u'\u2a15', - 'popf': u'\U0001d561', - 'pound': u'\xa3', - 'pr': u'\u227a', - 'prE': u'\u2ab3', - 'prap': u'\u2ab7', - 'prcue': u'\u227c', - 'pre': u'\u2aaf', - 'prec': u'\u227a', - 'precapprox': u'\u2ab7', - 'preccurlyeq': u'\u227c', - 'preceq': u'\u2aaf', - 'precnapprox': u'\u2ab9', - 'precneqq': u'\u2ab5', - 'precnsim': u'\u22e8', - 'precsim': u'\u227e', - 'prime': u'\u2032', - 'primes': u'\u2119', - 'prnE': u'\u2ab5', - 'prnap': u'\u2ab9', - 'prnsim': u'\u22e8', - 'prod': u'\u220f', - 'profalar': u'\u232e', - 'profline': u'\u2312', - 'profsurf': u'\u2313', - 'prop': u'\u221d', - 'propto': u'\u221d', - 'prsim': u'\u227e', - 'prurel': u'\u22b0', - 'pscr': u'\U0001d4c5', - 'psi': u'\u03c8', - 'puncsp': u'\u2008', - 'qfr': u'\U0001d52e', - 'qint': u'\u2a0c', - 'qopf': u'\U0001d562', - 'qprime': u'\u2057', - 'qscr': u'\U0001d4c6', - 'quaternions': u'\u210d', - 'quatint': u'\u2a16', - 'quest': u'?', - 'questeq': u'\u225f', - 'quot': u'"', - 'rAarr': u'\u21db', - 'rArr': u'\u21d2', - 'rAtail': u'\u291c', - 'rBarr': u'\u290f', - 'rHar': u'\u2964', - 'race': u'\u223d\u0331', - 'racute': u'\u0155', - 'radic': u'\u221a', - 'raemptyv': u'\u29b3', - 'rang': u'\u27e9', - 'rangd': u'\u2992', - 'range': u'\u29a5', - 'rangle': u'\u27e9', - 'raquo': u'\xbb', - 'rarr': u'\u2192', - 'rarrap': u'\u2975', - 'rarrb': u'\u21e5', - 'rarrbfs': u'\u2920', - 'rarrc': u'\u2933', - 'rarrfs': u'\u291e', - 'rarrhk': u'\u21aa', - 'rarrlp': u'\u21ac', - 'rarrpl': u'\u2945', - 'rarrsim': u'\u2974', - 'rarrtl': u'\u21a3', - 'rarrw': u'\u219d', - 'ratail': u'\u291a', - 'ratio': u'\u2236', - 'rationals': u'\u211a', - 'rbarr': u'\u290d', - 'rbbrk': u'\u2773', - 'rbrace': u'}', - 'rbrack': u']', - 'rbrke': u'\u298c', - 'rbrksld': u'\u298e', - 'rbrkslu': u'\u2990', - 'rcaron': u'\u0159', - 'rcedil': u'\u0157', - 'rceil': u'\u2309', - 'rcub': u'}', - 'rcy': u'\u0440', - 'rdca': u'\u2937', - 'rdldhar': u'\u2969', - 'rdquo': u'\u201d', - 'rdquor': u'\u201d', - 'rdsh': u'\u21b3', - 'real': u'\u211c', - 'realine': u'\u211b', - 'realpart': u'\u211c', - 'reals': u'\u211d', - 'rect': u'\u25ad', - 'reg': u'\xae', - 'rfisht': u'\u297d', - 'rfloor': u'\u230b', - 'rfr': u'\U0001d52f', - 'rhard': u'\u21c1', - 'rharu': u'\u21c0', - 'rharul': u'\u296c', - 'rho': u'\u03c1', - 'rhov': u'\u03f1', - 'rightarrow': u'\u2192', - 'rightarrowtail': u'\u21a3', - 'rightharpoondown': u'\u21c1', - 'rightharpoonup': u'\u21c0', - 'rightleftarrows': u'\u21c4', - 'rightleftharpoons': u'\u21cc', - 'rightrightarrows': u'\u21c9', - 'rightsquigarrow': u'\u219d', - 'rightthreetimes': u'\u22cc', - 'ring': u'\u02da', - 'risingdotseq': u'\u2253', - 'rlarr': u'\u21c4', - 'rlhar': u'\u21cc', - 'rlm': u'\u200f', - 'rmoust': u'\u23b1', - 'rmoustache': u'\u23b1', - 'rnmid': u'\u2aee', - 'roang': u'\u27ed', - 'roarr': u'\u21fe', - 'robrk': u'\u27e7', - 'ropar': u'\u2986', - 'ropf': u'\U0001d563', - 'roplus': u'\u2a2e', - 'rotimes': u'\u2a35', - 'rpar': u')', - 'rpargt': u'\u2994', - 'rppolint': u'\u2a12', - 'rrarr': u'\u21c9', - 'rsaquo': u'\u203a', - 'rscr': u'\U0001d4c7', - 'rsh': u'\u21b1', - 'rsqb': u']', - 'rsquo': u'\u2019', - 'rsquor': u'\u2019', - 'rthree': u'\u22cc', - 'rtimes': u'\u22ca', - 'rtri': u'\u25b9', - 'rtrie': u'\u22b5', - 'rtrif': u'\u25b8', - 'rtriltri': u'\u29ce', - 'ruluhar': u'\u2968', - 'rx': u'\u211e', - 'sacute': u'\u015b', - 'sbquo': u'\u201a', - 'sc': u'\u227b', - 'scE': u'\u2ab4', - 'scap': u'\u2ab8', - 'scaron': u'\u0161', - 'sccue': u'\u227d', - 'sce': u'\u2ab0', - 'scedil': u'\u015f', - 'scirc': u'\u015d', - 'scnE': u'\u2ab6', - 'scnap': u'\u2aba', - 'scnsim': u'\u22e9', - 'scpolint': u'\u2a13', - 'scsim': u'\u227f', - 'scy': u'\u0441', - 'sdot': u'\u22c5', - 'sdotb': u'\u22a1', - 'sdote': u'\u2a66', - 'seArr': u'\u21d8', - 'searhk': u'\u2925', - 'searr': u'\u2198', - 'searrow': u'\u2198', - 'sect': u'\xa7', - 'semi': u';', - 'seswar': u'\u2929', - 'setminus': u'\u2216', - 'setmn': u'\u2216', - 'sext': u'\u2736', - 'sfr': u'\U0001d530', - 'sfrown': u'\u2322', - 'sharp': u'\u266f', - 'shchcy': u'\u0449', - 'shcy': u'\u0448', - 'shortmid': u'\u2223', - 'shortparallel': u'\u2225', - 'shy': u'\xad', - 'sigma': u'\u03c3', - 'sigmaf': u'\u03c2', - 'sigmav': u'\u03c2', - 'sim': u'\u223c', - 'simdot': u'\u2a6a', - 'sime': u'\u2243', - 'simeq': u'\u2243', - 'simg': u'\u2a9e', - 'simgE': u'\u2aa0', - 'siml': u'\u2a9d', - 'simlE': u'\u2a9f', - 'simne': u'\u2246', - 'simplus': u'\u2a24', - 'simrarr': u'\u2972', - 'slarr': u'\u2190', - 'smallsetminus': u'\u2216', - 'smashp': u'\u2a33', - 'smeparsl': u'\u29e4', - 'smid': u'\u2223', - 'smile': u'\u2323', - 'smt': u'\u2aaa', - 'smte': u'\u2aac', - 'smtes': u'\u2aac\ufe00', - 'softcy': u'\u044c', - 'sol': u'/', - 'solb': u'\u29c4', - 'solbar': u'\u233f', - 'sopf': u'\U0001d564', - 'spades': u'\u2660', - 'spadesuit': u'\u2660', - 'spar': u'\u2225', - 'sqcap': u'\u2293', - 'sqcaps': u'\u2293\ufe00', - 'sqcup': u'\u2294', - 'sqcups': u'\u2294\ufe00', - 'sqsub': u'\u228f', - 'sqsube': u'\u2291', - 'sqsubset': u'\u228f', - 'sqsubseteq': u'\u2291', - 'sqsup': u'\u2290', - 'sqsupe': u'\u2292', - 'sqsupset': u'\u2290', - 'sqsupseteq': u'\u2292', - 'squ': u'\u25a1', - 'square': u'\u25a1', - 'squarf': u'\u25aa', - 'squf': u'\u25aa', - 'srarr': u'\u2192', - 'sscr': u'\U0001d4c8', - 'ssetmn': u'\u2216', - 'ssmile': u'\u2323', - 'sstarf': u'\u22c6', - 'star': u'\u2606', - 'starf': u'\u2605', - 'straightepsilon': u'\u03f5', - 'straightphi': u'\u03d5', - 'strns': u'\xaf', - 'sub': u'\u2282', - 'subE': u'\u2ac5', - 'subdot': u'\u2abd', - 'sube': u'\u2286', - 'subedot': u'\u2ac3', - 'submult': u'\u2ac1', - 'subnE': u'\u2acb', - 'subne': u'\u228a', - 'subplus': u'\u2abf', - 'subrarr': u'\u2979', - 'subset': u'\u2282', - 'subseteq': u'\u2286', - 'subseteqq': u'\u2ac5', - 'subsetneq': u'\u228a', - 'subsetneqq': u'\u2acb', - 'subsim': u'\u2ac7', - 'subsub': u'\u2ad5', - 'subsup': u'\u2ad3', - 'succ': u'\u227b', - 'succapprox': u'\u2ab8', - 'succcurlyeq': u'\u227d', - 'succeq': u'\u2ab0', - 'succnapprox': u'\u2aba', - 'succneqq': u'\u2ab6', - 'succnsim': u'\u22e9', - 'succsim': u'\u227f', - 'sum': u'\u2211', - 'sung': u'\u266a', - 'sup': u'\u2283', - 'sup1': u'\xb9', - 'sup2': u'\xb2', - 'sup3': u'\xb3', - 'supE': u'\u2ac6', - 'supdot': u'\u2abe', - 'supdsub': u'\u2ad8', - 'supe': u'\u2287', - 'supedot': u'\u2ac4', - 'suphsol': u'\u27c9', - 'suphsub': u'\u2ad7', - 'suplarr': u'\u297b', - 'supmult': u'\u2ac2', - 'supnE': u'\u2acc', - 'supne': u'\u228b', - 'supplus': u'\u2ac0', - 'supset': u'\u2283', - 'supseteq': u'\u2287', - 'supseteqq': u'\u2ac6', - 'supsetneq': u'\u228b', - 'supsetneqq': u'\u2acc', - 'supsim': u'\u2ac8', - 'supsub': u'\u2ad4', - 'supsup': u'\u2ad6', - 'swArr': u'\u21d9', - 'swarhk': u'\u2926', - 'swarr': u'\u2199', - 'swarrow': u'\u2199', - 'swnwar': u'\u292a', - 'szlig': u'\xdf', - 'target': u'\u2316', - 'tau': u'\u03c4', - 'tbrk': u'\u23b4', - 'tcaron': u'\u0165', - 'tcedil': u'\u0163', - 'tcy': u'\u0442', - 'tdot': u'\u20db', - 'telrec': u'\u2315', - 'tfr': u'\U0001d531', - 'there4': u'\u2234', - 'therefore': u'\u2234', - 'theta': u'\u03b8', - 'thetasym': u'\u03d1', - 'thetav': u'\u03d1', - 'thickapprox': u'\u2248', - 'thicksim': u'\u223c', - 'thinsp': u'\u2009', - 'thkap': u'\u2248', - 'thksim': u'\u223c', - 'thorn': u'\xfe', - 'tilde': u'\u02dc', - 'times': u'\xd7', - 'timesb': u'\u22a0', - 'timesbar': u'\u2a31', - 'timesd': u'\u2a30', - 'tint': u'\u222d', - 'toea': u'\u2928', - 'top': u'\u22a4', - 'topbot': u'\u2336', - 'topcir': u'\u2af1', - 'topf': u'\U0001d565', - 'topfork': u'\u2ada', - 'tosa': u'\u2929', - 'tprime': u'\u2034', - 'trade': u'\u2122', - 'triangle': u'\u25b5', - 'triangledown': u'\u25bf', - 'triangleleft': u'\u25c3', - 'trianglelefteq': u'\u22b4', - 'triangleq': u'\u225c', - 'triangleright': u'\u25b9', - 'trianglerighteq': u'\u22b5', - 'tridot': u'\u25ec', - 'trie': u'\u225c', - 'triminus': u'\u2a3a', - 'triplus': u'\u2a39', - 'trisb': u'\u29cd', - 'tritime': u'\u2a3b', - 'trpezium': u'\u23e2', - 'tscr': u'\U0001d4c9', - 'tscy': u'\u0446', - 'tshcy': u'\u045b', - 'tstrok': u'\u0167', - 'twixt': u'\u226c', - 'twoheadleftarrow': u'\u219e', - 'twoheadrightarrow': u'\u21a0', - 'uArr': u'\u21d1', - 'uHar': u'\u2963', - 'uacute': u'\xfa', - 'uarr': u'\u2191', - 'ubrcy': u'\u045e', - 'ubreve': u'\u016d', - 'ucirc': u'\xfb', - 'ucy': u'\u0443', - 'udarr': u'\u21c5', - 'udblac': u'\u0171', - 'udhar': u'\u296e', - 'ufisht': u'\u297e', - 'ufr': u'\U0001d532', - 'ugrave': u'\xf9', - 'uharl': u'\u21bf', - 'uharr': u'\u21be', - 'uhblk': u'\u2580', - 'ulcorn': u'\u231c', - 'ulcorner': u'\u231c', - 'ulcrop': u'\u230f', - 'ultri': u'\u25f8', - 'umacr': u'\u016b', - 'uml': u'\xa8', - 'uogon': u'\u0173', - 'uopf': u'\U0001d566', - 'uparrow': u'\u2191', - 'updownarrow': u'\u2195', - 'upharpoonleft': u'\u21bf', - 'upharpoonright': u'\u21be', - 'uplus': u'\u228e', - 'upsi': u'\u03c5', - 'upsih': u'\u03d2', - 'upsilon': u'\u03c5', - 'upuparrows': u'\u21c8', - 'urcorn': u'\u231d', - 'urcorner': u'\u231d', - 'urcrop': u'\u230e', - 'uring': u'\u016f', - 'urtri': u'\u25f9', - 'uscr': u'\U0001d4ca', - 'utdot': u'\u22f0', - 'utilde': u'\u0169', - 'utri': u'\u25b5', - 'utrif': u'\u25b4', - 'uuarr': u'\u21c8', - 'uuml': u'\xfc', - 'uwangle': u'\u29a7', - 'vArr': u'\u21d5', - 'vBar': u'\u2ae8', - 'vBarv': u'\u2ae9', - 'vDash': u'\u22a8', - 'vangrt': u'\u299c', - 'varepsilon': u'\u03f5', - 'varkappa': u'\u03f0', - 'varnothing': u'\u2205', - 'varphi': u'\u03d5', - 'varpi': u'\u03d6', - 'varpropto': u'\u221d', - 'varr': u'\u2195', - 'varrho': u'\u03f1', - 'varsigma': u'\u03c2', - 'varsubsetneq': u'\u228a\ufe00', - 'varsubsetneqq': u'\u2acb\ufe00', - 'varsupsetneq': u'\u228b\ufe00', - 'varsupsetneqq': u'\u2acc\ufe00', - 'vartheta': u'\u03d1', - 'vartriangleleft': u'\u22b2', - 'vartriangleright': u'\u22b3', - 'vcy': u'\u0432', - 'vdash': u'\u22a2', - 'vee': u'\u2228', - 'veebar': u'\u22bb', - 'veeeq': u'\u225a', - 'vellip': u'\u22ee', - 'verbar': u'|', - 'vert': u'|', - 'vfr': u'\U0001d533', - 'vltri': u'\u22b2', - 'vnsub': u'\u2282\u20d2', - 'vnsup': u'\u2283\u20d2', - 'vopf': u'\U0001d567', - 'vprop': u'\u221d', - 'vrtri': u'\u22b3', - 'vscr': u'\U0001d4cb', - 'vsubnE': u'\u2acb\ufe00', - 'vsubne': u'\u228a\ufe00', - 'vsupnE': u'\u2acc\ufe00', - 'vsupne': u'\u228b\ufe00', - 'vzigzag': u'\u299a', - 'wcirc': u'\u0175', - 'wedbar': u'\u2a5f', - 'wedge': u'\u2227', - 'wedgeq': u'\u2259', - 'weierp': u'\u2118', - 'wfr': u'\U0001d534', - 'wopf': u'\U0001d568', - 'wp': u'\u2118', - 'wr': u'\u2240', - 'wreath': u'\u2240', - 'wscr': u'\U0001d4cc', - 'xcap': u'\u22c2', - 'xcirc': u'\u25ef', - 'xcup': u'\u22c3', - 'xdtri': u'\u25bd', - 'xfr': u'\U0001d535', - 'xhArr': u'\u27fa', - 'xharr': u'\u27f7', - 'xi': u'\u03be', - 'xlArr': u'\u27f8', - 'xlarr': u'\u27f5', - 'xmap': u'\u27fc', - 'xnis': u'\u22fb', - 'xodot': u'\u2a00', - 'xopf': u'\U0001d569', - 'xoplus': u'\u2a01', - 'xotime': u'\u2a02', - 'xrArr': u'\u27f9', - 'xrarr': u'\u27f6', - 'xscr': u'\U0001d4cd', - 'xsqcup': u'\u2a06', - 'xuplus': u'\u2a04', - 'xutri': u'\u25b3', - 'xvee': u'\u22c1', - 'xwedge': u'\u22c0', - 'yacute': u'\xfd', - 'yacy': u'\u044f', - 'ycirc': u'\u0177', - 'ycy': u'\u044b', - 'yen': u'\xa5', - 'yfr': u'\U0001d536', - 'yicy': u'\u0457', - 'yopf': u'\U0001d56a', - 'yscr': u'\U0001d4ce', - 'yucy': u'\u044e', - 'yuml': u'\xff', - 'zacute': u'\u017a', - 'zcaron': u'\u017e', - 'zcy': u'\u0437', - 'zdot': u'\u017c', - 'zeetrf': u'\u2128', - 'zeta': u'\u03b6', - 'zfr': u'\U0001d537', - 'zhcy': u'\u0436', - 'zigrarr': u'\u21dd', - 'zopf': u'\U0001d56b', - 'zscr': u'\U0001d4cf', - 'zwj': u'\u200d', - 'zwnj': u'\u200c'} diff --git a/src/html5lib/__init__.py b/src/html5lib/__init__.py index 433e0f6735..0a43c066b6 100644 --- a/src/html5lib/__init__.py +++ b/src/html5lib/__init__.py @@ -1,4 +1,4 @@ -""" +""" HTML parsing library based on the WHATWG "HTML5" specification. The parser is designed to be compatible with existing HTML found in the wild and implements well-defined error recovery that @@ -8,10 +8,16 @@ Example usage: import html5lib f = open("my_document.html") -tree = html5lib.parse(f) +tree = html5lib.parse(f) """ -__version__ = "0.90" -from html5parser import HTMLParser, parse, parseFragment -from treebuilders import getTreeBuilder -from treewalkers import getTreeWalker -from serializer import serialize + +from __future__ import absolute_import, division, unicode_literals + +from .html5parser import HTMLParser, parse, parseFragment +from .treebuilders import getTreeBuilder +from .treewalkers import getTreeWalker +from .serializer import serialize + +__all__ = ["HTMLParser", "parse", "parseFragment", "getTreeBuilder", + "getTreeWalker", "serialize"] +__version__ = "0.999-dev" diff --git a/src/html5lib/constants.py b/src/html5lib/constants.py index 4157bcfcea..e7089846d5 100644 --- a/src/html5lib/constants.py +++ b/src/html5lib/constants.py @@ -1,287 +1,305 @@ -import string, gettext -_ = gettext.gettext +from __future__ import absolute_import, division, unicode_literals -try: - frozenset -except NameError: - # Import from the sets module for python 2.3 - from sets import Set as set - from sets import ImmutableSet as frozenset +import string +import gettext +_ = gettext.gettext EOF = None E = { - "null-character": - _(u"Null character in input stream, replaced with U+FFFD."), - "invalid-character": - _(u"Invalid codepoint in stream."), + "null-character": + _("Null character in input stream, replaced with U+FFFD."), + "invalid-codepoint": + _("Invalid codepoint in stream."), "incorrectly-placed-solidus": - _(u"Solidus (/) incorrectly placed in tag."), + _("Solidus (/) incorrectly placed in tag."), "incorrect-cr-newline-entity": - _(u"Incorrect CR newline entity, replaced with LF."), + _("Incorrect CR newline entity, replaced with LF."), "illegal-windows-1252-entity": - _(u"Entity used with illegal number (windows-1252 reference)."), + _("Entity used with illegal number (windows-1252 reference)."), "cant-convert-numeric-entity": - _(u"Numeric entity couldn't be converted to character " - u"(codepoint U+%(charAsInt)08x)."), + _("Numeric entity couldn't be converted to character " + "(codepoint U+%(charAsInt)08x)."), "illegal-codepoint-for-numeric-entity": - _(u"Numeric entity represents an illegal codepoint: " - u"U+%(charAsInt)08x."), + _("Numeric entity represents an illegal codepoint: " + "U+%(charAsInt)08x."), "numeric-entity-without-semicolon": - _(u"Numeric entity didn't end with ';'."), + _("Numeric entity didn't end with ';'."), "expected-numeric-entity-but-got-eof": - _(u"Numeric entity expected. Got end of file instead."), + _("Numeric entity expected. Got end of file instead."), "expected-numeric-entity": - _(u"Numeric entity expected but none found."), + _("Numeric entity expected but none found."), "named-entity-without-semicolon": - _(u"Named entity didn't end with ';'."), + _("Named entity didn't end with ';'."), "expected-named-entity": - _(u"Named entity expected. Got none."), + _("Named entity expected. Got none."), "attributes-in-end-tag": - _(u"End tag contains unexpected attributes."), + _("End tag contains unexpected attributes."), + 'self-closing-flag-on-end-tag': + _("End tag contains unexpected self-closing flag."), "expected-tag-name-but-got-right-bracket": - _(u"Expected tag name. Got '>' instead."), + _("Expected tag name. Got '>' instead."), "expected-tag-name-but-got-question-mark": - _(u"Expected tag name. Got '?' instead. (HTML doesn't " - u"support processing instructions.)"), + _("Expected tag name. Got '?' instead. (HTML doesn't " + "support processing instructions.)"), "expected-tag-name": - _(u"Expected tag name. Got something else instead"), + _("Expected tag name. Got something else instead"), "expected-closing-tag-but-got-right-bracket": - _(u"Expected closing tag. Got '>' instead. Ignoring ''."), + _("Expected closing tag. Got '>' instead. Ignoring ''."), "expected-closing-tag-but-got-eof": - _(u"Expected closing tag. Unexpected end of file."), + _("Expected closing tag. Unexpected end of file."), "expected-closing-tag-but-got-char": - _(u"Expected closing tag. Unexpected character '%(data)s' found."), + _("Expected closing tag. Unexpected character '%(data)s' found."), "eof-in-tag-name": - _(u"Unexpected end of file in the tag name."), + _("Unexpected end of file in the tag name."), "expected-attribute-name-but-got-eof": - _(u"Unexpected end of file. Expected attribute name instead."), + _("Unexpected end of file. Expected attribute name instead."), "eof-in-attribute-name": - _(u"Unexpected end of file in attribute name."), + _("Unexpected end of file in attribute name."), "invalid-character-in-attribute-name": - _(u"Invalid chracter in attribute name"), + _("Invalid character in attribute name"), "duplicate-attribute": - _(u"Dropped duplicate attribute on tag."), + _("Dropped duplicate attribute on tag."), "expected-end-of-tag-name-but-got-eof": - _(u"Unexpected end of file. Expected = or end of tag."), + _("Unexpected end of file. Expected = or end of tag."), "expected-attribute-value-but-got-eof": - _(u"Unexpected end of file. Expected attribute value."), + _("Unexpected end of file. Expected attribute value."), "expected-attribute-value-but-got-right-bracket": - _(u"Expected attribute value. Got '>' instead."), + _("Expected attribute value. Got '>' instead."), + 'equals-in-unquoted-attribute-value': + _("Unexpected = in unquoted attribute"), + 'unexpected-character-in-unquoted-attribute-value': + _("Unexpected character in unquoted attribute"), + "invalid-character-after-attribute-name": + _("Unexpected character after attribute name."), + "unexpected-character-after-attribute-value": + _("Unexpected character after attribute value."), "eof-in-attribute-value-double-quote": - _(u"Unexpected end of file in attribute value (\")."), + _("Unexpected end of file in attribute value (\")."), "eof-in-attribute-value-single-quote": - _(u"Unexpected end of file in attribute value (')."), + _("Unexpected end of file in attribute value (')."), "eof-in-attribute-value-no-quotes": - _(u"Unexpected end of file in attribute value."), + _("Unexpected end of file in attribute value."), "unexpected-EOF-after-solidus-in-tag": - _(u"Unexpected end of file in tag. Expected >"), - "unexpected-character-after-soldius-in-tag": - _(u"Unexpected character after / in tag. Expected >"), + _("Unexpected end of file in tag. Expected >"), + "unexpected-character-after-solidus-in-tag": + _("Unexpected character after / in tag. Expected >"), "expected-dashes-or-doctype": - _(u"Expected '--' or 'DOCTYPE'. Not found."), + _("Expected '--' or 'DOCTYPE'. Not found."), + "unexpected-bang-after-double-dash-in-comment": + _("Unexpected ! after -- in comment"), + "unexpected-space-after-double-dash-in-comment": + _("Unexpected space after -- in comment"), "incorrect-comment": - _(u"Incorrect comment."), + _("Incorrect comment."), "eof-in-comment": - _(u"Unexpected end of file in comment."), + _("Unexpected end of file in comment."), "eof-in-comment-end-dash": - _(u"Unexpected end of file in comment (-)"), + _("Unexpected end of file in comment (-)"), "unexpected-dash-after-double-dash-in-comment": - _(u"Unexpected '-' after '--' found in comment."), + _("Unexpected '-' after '--' found in comment."), "eof-in-comment-double-dash": - _(u"Unexpected end of file in comment (--)."), + _("Unexpected end of file in comment (--)."), + "eof-in-comment-end-space-state": + _("Unexpected end of file in comment."), + "eof-in-comment-end-bang-state": + _("Unexpected end of file in comment."), "unexpected-char-in-comment": - _(u"Unexpected character in comment found."), + _("Unexpected character in comment found."), "need-space-after-doctype": - _(u"No space after literal string 'DOCTYPE'."), + _("No space after literal string 'DOCTYPE'."), "expected-doctype-name-but-got-right-bracket": - _(u"Unexpected > character. Expected DOCTYPE name."), + _("Unexpected > character. Expected DOCTYPE name."), "expected-doctype-name-but-got-eof": - _(u"Unexpected end of file. Expected DOCTYPE name."), + _("Unexpected end of file. Expected DOCTYPE name."), "eof-in-doctype-name": - _(u"Unexpected end of file in DOCTYPE name."), + _("Unexpected end of file in DOCTYPE name."), "eof-in-doctype": - _(u"Unexpected end of file in DOCTYPE."), + _("Unexpected end of file in DOCTYPE."), "expected-space-or-right-bracket-in-doctype": - _(u"Expected space or '>'. Got '%(data)s'"), + _("Expected space or '>'. Got '%(data)s'"), "unexpected-end-of-doctype": - _(u"Unexpected end of DOCTYPE."), + _("Unexpected end of DOCTYPE."), "unexpected-char-in-doctype": - _(u"Unexpected character in DOCTYPE."), + _("Unexpected character in DOCTYPE."), "eof-in-innerhtml": - _(u"XXX innerHTML EOF"), + _("XXX innerHTML EOF"), "unexpected-doctype": - _(u"Unexpected DOCTYPE. Ignored."), + _("Unexpected DOCTYPE. Ignored."), "non-html-root": - _(u"html needs to be the first start tag."), + _("html needs to be the first start tag."), "expected-doctype-but-got-eof": - _(u"Unexpected End of file. Expected DOCTYPE."), + _("Unexpected End of file. Expected DOCTYPE."), "unknown-doctype": - _(u"Erroneous DOCTYPE."), + _("Erroneous DOCTYPE."), "expected-doctype-but-got-chars": - _(u"Unexpected non-space characters. Expected DOCTYPE."), + _("Unexpected non-space characters. Expected DOCTYPE."), "expected-doctype-but-got-start-tag": - _(u"Unexpected start tag (%(name)s). Expected DOCTYPE."), + _("Unexpected start tag (%(name)s). Expected DOCTYPE."), "expected-doctype-but-got-end-tag": - _(u"Unexpected end tag (%(name)s). Expected DOCTYPE."), + _("Unexpected end tag (%(name)s). Expected DOCTYPE."), "end-tag-after-implied-root": - _(u"Unexpected end tag (%(name)s) after the (implied) root element."), + _("Unexpected end tag (%(name)s) after the (implied) root element."), "expected-named-closing-tag-but-got-eof": - _(u"Unexpected end of file. Expected end tag (%(name)s)."), + _("Unexpected end of file. Expected end tag (%(name)s)."), "two-heads-are-not-better-than-one": - _(u"Unexpected start tag head in existing head. Ignored."), + _("Unexpected start tag head in existing head. Ignored."), "unexpected-end-tag": - _(u"Unexpected end tag (%(name)s). Ignored."), + _("Unexpected end tag (%(name)s). Ignored."), "unexpected-start-tag-out-of-my-head": - _(u"Unexpected start tag (%(name)s) that can be in head. Moved."), + _("Unexpected start tag (%(name)s) that can be in head. Moved."), "unexpected-start-tag": - _(u"Unexpected start tag (%(name)s)."), + _("Unexpected start tag (%(name)s)."), "missing-end-tag": - _(u"Missing end tag (%(name)s)."), + _("Missing end tag (%(name)s)."), "missing-end-tags": - _(u"Missing end tags (%(name)s)."), + _("Missing end tags (%(name)s)."), "unexpected-start-tag-implies-end-tag": - _(u"Unexpected start tag (%(startName)s) " - u"implies end tag (%(endName)s)."), + _("Unexpected start tag (%(startName)s) " + "implies end tag (%(endName)s)."), "unexpected-start-tag-treated-as": - _(u"Unexpected start tag (%(originalName)s). Treated as %(newName)s."), + _("Unexpected start tag (%(originalName)s). Treated as %(newName)s."), "deprecated-tag": - _(u"Unexpected start tag %(name)s. Don't use it!"), + _("Unexpected start tag %(name)s. Don't use it!"), "unexpected-start-tag-ignored": - _(u"Unexpected start tag %(name)s. Ignored."), + _("Unexpected start tag %(name)s. Ignored."), "expected-one-end-tag-but-got-another": - _(u"Unexpected end tag (%(gotName)s). " - u"Missing end tag (%(expectedName)s)."), + _("Unexpected end tag (%(gotName)s). " + "Missing end tag (%(expectedName)s)."), "end-tag-too-early": - _(u"End tag (%(name)s) seen too early. Expected other end tag."), + _("End tag (%(name)s) seen too early. Expected other end tag."), "end-tag-too-early-named": - _(u"Unexpected end tag (%(gotName)s). Expected end tag (%(expectedName)s)."), + _("Unexpected end tag (%(gotName)s). Expected end tag (%(expectedName)s)."), "end-tag-too-early-ignored": - _(u"End tag (%(name)s) seen too early. Ignored."), + _("End tag (%(name)s) seen too early. Ignored."), "adoption-agency-1.1": - _(u"End tag (%(name)s) violates step 1, " - u"paragraph 1 of the adoption agency algorithm."), + _("End tag (%(name)s) violates step 1, " + "paragraph 1 of the adoption agency algorithm."), "adoption-agency-1.2": - _(u"End tag (%(name)s) violates step 1, " - u"paragraph 2 of the adoption agency algorithm."), + _("End tag (%(name)s) violates step 1, " + "paragraph 2 of the adoption agency algorithm."), "adoption-agency-1.3": - _(u"End tag (%(name)s) violates step 1, " - u"paragraph 3 of the adoption agency algorithm."), + _("End tag (%(name)s) violates step 1, " + "paragraph 3 of the adoption agency algorithm."), + "adoption-agency-4.4": + _("End tag (%(name)s) violates step 4, " + "paragraph 4 of the adoption agency algorithm."), "unexpected-end-tag-treated-as": - _(u"Unexpected end tag (%(originalName)s). Treated as %(newName)s."), + _("Unexpected end tag (%(originalName)s). Treated as %(newName)s."), "no-end-tag": - _(u"This element (%(name)s) has no end tag."), + _("This element (%(name)s) has no end tag."), "unexpected-implied-end-tag-in-table": - _(u"Unexpected implied end tag (%(name)s) in the table phase."), + _("Unexpected implied end tag (%(name)s) in the table phase."), "unexpected-implied-end-tag-in-table-body": - _(u"Unexpected implied end tag (%(name)s) in the table body phase."), + _("Unexpected implied end tag (%(name)s) in the table body phase."), "unexpected-char-implies-table-voodoo": - _(u"Unexpected non-space characters in " - u"table context caused voodoo mode."), + _("Unexpected non-space characters in " + "table context caused voodoo mode."), "unexpected-hidden-input-in-table": - _(u"Unexpected input with type hidden in table context."), + _("Unexpected input with type hidden in table context."), "unexpected-form-in-table": - _(u"Unexpected form in table context."), + _("Unexpected form in table context."), "unexpected-start-tag-implies-table-voodoo": - _(u"Unexpected start tag (%(name)s) in " - u"table context caused voodoo mode."), + _("Unexpected start tag (%(name)s) in " + "table context caused voodoo mode."), "unexpected-end-tag-implies-table-voodoo": - _(u"Unexpected end tag (%(name)s) in " - u"table context caused voodoo mode."), + _("Unexpected end tag (%(name)s) in " + "table context caused voodoo mode."), "unexpected-cell-in-table-body": - _(u"Unexpected table cell start tag (%(name)s) " - u"in the table body phase."), + _("Unexpected table cell start tag (%(name)s) " + "in the table body phase."), "unexpected-cell-end-tag": - _(u"Got table cell end tag (%(name)s) " - u"while required end tags are missing."), + _("Got table cell end tag (%(name)s) " + "while required end tags are missing."), "unexpected-end-tag-in-table-body": - _(u"Unexpected end tag (%(name)s) in the table body phase. Ignored."), + _("Unexpected end tag (%(name)s) in the table body phase. Ignored."), "unexpected-implied-end-tag-in-table-row": - _(u"Unexpected implied end tag (%(name)s) in the table row phase."), + _("Unexpected implied end tag (%(name)s) in the table row phase."), "unexpected-end-tag-in-table-row": - _(u"Unexpected end tag (%(name)s) in the table row phase. Ignored."), + _("Unexpected end tag (%(name)s) in the table row phase. Ignored."), "unexpected-select-in-select": - _(u"Unexpected select start tag in the select phase " - u"treated as select end tag."), + _("Unexpected select start tag in the select phase " + "treated as select end tag."), "unexpected-input-in-select": - _(u"Unexpected input start tag in the select phase."), + _("Unexpected input start tag in the select phase."), "unexpected-start-tag-in-select": - _(u"Unexpected start tag token (%(name)s in the select phase. " - u"Ignored."), + _("Unexpected start tag token (%(name)s in the select phase. " + "Ignored."), "unexpected-end-tag-in-select": - _(u"Unexpected end tag (%(name)s) in the select phase. Ignored."), + _("Unexpected end tag (%(name)s) in the select phase. Ignored."), "unexpected-table-element-start-tag-in-select-in-table": - _(u"Unexpected table element start tag (%(name)s) in the select in table phase."), + _("Unexpected table element start tag (%(name)s) in the select in table phase."), "unexpected-table-element-end-tag-in-select-in-table": - _(u"Unexpected table element end tag (%(name)s) in the select in table phase."), + _("Unexpected table element end tag (%(name)s) in the select in table phase."), "unexpected-char-after-body": - _(u"Unexpected non-space characters in the after body phase."), + _("Unexpected non-space characters in the after body phase."), "unexpected-start-tag-after-body": - _(u"Unexpected start tag token (%(name)s)" - u" in the after body phase."), + _("Unexpected start tag token (%(name)s)" + " in the after body phase."), "unexpected-end-tag-after-body": - _(u"Unexpected end tag token (%(name)s)" - u" in the after body phase."), + _("Unexpected end tag token (%(name)s)" + " in the after body phase."), "unexpected-char-in-frameset": - _(u"Unepxected characters in the frameset phase. Characters ignored."), + _("Unexpected characters in the frameset phase. Characters ignored."), "unexpected-start-tag-in-frameset": - _(u"Unexpected start tag token (%(name)s)" - u" in the frameset phase. Ignored."), + _("Unexpected start tag token (%(name)s)" + " in the frameset phase. Ignored."), "unexpected-frameset-in-frameset-innerhtml": - _(u"Unexpected end tag token (frameset) " - u"in the frameset phase (innerHTML)."), + _("Unexpected end tag token (frameset) " + "in the frameset phase (innerHTML)."), "unexpected-end-tag-in-frameset": - _(u"Unexpected end tag token (%(name)s)" - u" in the frameset phase. Ignored."), + _("Unexpected end tag token (%(name)s)" + " in the frameset phase. Ignored."), "unexpected-char-after-frameset": - _(u"Unexpected non-space characters in the " - u"after frameset phase. Ignored."), + _("Unexpected non-space characters in the " + "after frameset phase. Ignored."), "unexpected-start-tag-after-frameset": - _(u"Unexpected start tag (%(name)s)" - u" in the after frameset phase. Ignored."), + _("Unexpected start tag (%(name)s)" + " in the after frameset phase. Ignored."), "unexpected-end-tag-after-frameset": - _(u"Unexpected end tag (%(name)s)" - u" in the after frameset phase. Ignored."), + _("Unexpected end tag (%(name)s)" + " in the after frameset phase. Ignored."), "unexpected-end-tag-after-body-innerhtml": - _(u"Unexpected end tag after body(innerHtml)"), + _("Unexpected end tag after body(innerHtml)"), "expected-eof-but-got-char": - _(u"Unexpected non-space characters. Expected end of file."), + _("Unexpected non-space characters. Expected end of file."), "expected-eof-but-got-start-tag": - _(u"Unexpected start tag (%(name)s)" - u". Expected end of file."), + _("Unexpected start tag (%(name)s)" + ". Expected end of file."), "expected-eof-but-got-end-tag": - _(u"Unexpected end tag (%(name)s)" - u". Expected end of file."), + _("Unexpected end tag (%(name)s)" + ". Expected end of file."), "eof-in-table": - _(u"Unexpected end of file. Expected table content."), + _("Unexpected end of file. Expected table content."), "eof-in-select": - _(u"Unexpected end of file. Expected select content."), + _("Unexpected end of file. Expected select content."), "eof-in-frameset": - _(u"Unexpected end of file. Expected frameset content."), + _("Unexpected end of file. Expected frameset content."), "eof-in-script-in-script": - _(u"Unexpected end of file. Expected script content."), + _("Unexpected end of file. Expected script content."), + "eof-in-foreign-lands": + _("Unexpected end of file. Expected foreign content"), "non-void-element-with-trailing-solidus": - _(u"Trailing solidus not allowed on element %(name)s"), + _("Trailing solidus not allowed on element %(name)s"), "unexpected-html-element-in-foreign-content": - _(u"Element %(name)s not allowed in a non-html context"), + _("Element %(name)s not allowed in a non-html context"), "unexpected-end-tag-before-html": - _(u"Unexpected end tag (%(name)s) before html."), + _("Unexpected end tag (%(name)s) before html."), "XXX-undefined-error": - (u"Undefined error (this sucks and should be fixed)"), + _("Undefined error (this sucks and should be fixed)"), } namespaces = { - "html":"http://www.w3.org/1999/xhtml", - "mathml":"http://www.w3.org/1998/Math/MathML", - "svg":"http://www.w3.org/2000/svg", - "xlink":"http://www.w3.org/1999/xlink", - "xml":"http://www.w3.org/XML/1998/namespace", - "xmlns":"http://www.w3.org/2000/xmlns/" + "html": "http://www.w3.org/1999/xhtml", + "mathml": "http://www.w3.org/1998/Math/MathML", + "svg": "http://www.w3.org/2000/svg", + "xlink": "http://www.w3.org/1999/xlink", + "xml": "http://www.w3.org/XML/1998/namespace", + "xmlns": "http://www.w3.org/2000/xmlns/" } scopingElements = frozenset(( (namespaces["html"], "applet"), - (namespaces["html"], "button"), (namespaces["html"], "caption"), (namespaces["html"], "html"), (namespaces["html"], "marquee"), @@ -289,7 +307,15 @@ scopingElements = frozenset(( (namespaces["html"], "table"), (namespaces["html"], "td"), (namespaces["html"], "th"), - (namespaces["svg"], "foreignObject") + (namespaces["mathml"], "mi"), + (namespaces["mathml"], "mo"), + (namespaces["mathml"], "mn"), + (namespaces["mathml"], "ms"), + (namespaces["mathml"], "mtext"), + (namespaces["mathml"], "annotation-xml"), + (namespaces["svg"], "foreignObject"), + (namespaces["svg"], "desc"), + (namespaces["svg"], "title"), )) formattingElements = frozenset(( @@ -311,6 +337,7 @@ formattingElements = frozenset(( specialElements = frozenset(( (namespaces["html"], "address"), + (namespaces["html"], "applet"), (namespaces["html"], "area"), (namespaces["html"], "article"), (namespaces["html"], "aside"), @@ -320,20 +347,19 @@ specialElements = frozenset(( (namespaces["html"], "blockquote"), (namespaces["html"], "body"), (namespaces["html"], "br"), + (namespaces["html"], "button"), + (namespaces["html"], "caption"), (namespaces["html"], "center"), (namespaces["html"], "col"), (namespaces["html"], "colgroup"), (namespaces["html"], "command"), - (namespaces["html"], "datagrid"), (namespaces["html"], "dd"), (namespaces["html"], "details"), - (namespaces["html"], "dialog"), (namespaces["html"], "dir"), (namespaces["html"], "div"), (namespaces["html"], "dl"), (namespaces["html"], "dt"), (namespaces["html"], "embed"), - (namespaces["html"], "event-source"), (namespaces["html"], "fieldset"), (namespaces["html"], "figure"), (namespaces["html"], "footer"), @@ -349,25 +375,26 @@ specialElements = frozenset(( (namespaces["html"], "head"), (namespaces["html"], "header"), (namespaces["html"], "hr"), + (namespaces["html"], "html"), (namespaces["html"], "iframe"), # Note that image is commented out in the spec as "this isn't an # element that can end up on the stack, so it doesn't matter," - (namespaces["html"], "image"), + (namespaces["html"], "image"), (namespaces["html"], "img"), (namespaces["html"], "input"), (namespaces["html"], "isindex"), (namespaces["html"], "li"), (namespaces["html"], "link"), (namespaces["html"], "listing"), + (namespaces["html"], "marquee"), (namespaces["html"], "menu"), (namespaces["html"], "meta"), (namespaces["html"], "nav"), (namespaces["html"], "noembed"), (namespaces["html"], "noframes"), (namespaces["html"], "noscript"), + (namespaces["html"], "object"), (namespaces["html"], "ol"), - (namespaces["html"], "optgroup"), - (namespaces["html"], "option"), (namespaces["html"], "p"), (namespaces["html"], "param"), (namespaces["html"], "plaintext"), @@ -375,24 +402,61 @@ specialElements = frozenset(( (namespaces["html"], "script"), (namespaces["html"], "section"), (namespaces["html"], "select"), - (namespaces["html"], "spacer"), (namespaces["html"], "style"), + (namespaces["html"], "table"), (namespaces["html"], "tbody"), + (namespaces["html"], "td"), (namespaces["html"], "textarea"), (namespaces["html"], "tfoot"), + (namespaces["html"], "th"), (namespaces["html"], "thead"), (namespaces["html"], "title"), (namespaces["html"], "tr"), (namespaces["html"], "ul"), - (namespaces["html"], "wbr") + (namespaces["html"], "wbr"), + (namespaces["html"], "xmp"), + (namespaces["svg"], "foreignObject") )) +htmlIntegrationPointElements = frozenset(( + (namespaces["mathml"], "annotaion-xml"), + (namespaces["svg"], "foreignObject"), + (namespaces["svg"], "desc"), + (namespaces["svg"], "title") +)) + +mathmlTextIntegrationPointElements = frozenset(( + (namespaces["mathml"], "mi"), + (namespaces["mathml"], "mo"), + (namespaces["mathml"], "mn"), + (namespaces["mathml"], "ms"), + (namespaces["mathml"], "mtext") +)) + +adjustForeignAttributes = { + "xlink:actuate": ("xlink", "actuate", namespaces["xlink"]), + "xlink:arcrole": ("xlink", "arcrole", namespaces["xlink"]), + "xlink:href": ("xlink", "href", namespaces["xlink"]), + "xlink:role": ("xlink", "role", namespaces["xlink"]), + "xlink:show": ("xlink", "show", namespaces["xlink"]), + "xlink:title": ("xlink", "title", namespaces["xlink"]), + "xlink:type": ("xlink", "type", namespaces["xlink"]), + "xml:base": ("xml", "base", namespaces["xml"]), + "xml:lang": ("xml", "lang", namespaces["xml"]), + "xml:space": ("xml", "space", namespaces["xml"]), + "xmlns": (None, "xmlns", namespaces["xmlns"]), + "xmlns:xlink": ("xmlns", "xlink", namespaces["xmlns"]) +} + +unadjustForeignAttributes = dict([((ns, local), qname) for qname, (prefix, local, ns) in + adjustForeignAttributes.items()]) + spaceCharacters = frozenset(( - u"\t", - u"\n", - u"\u000C", - u" ", - u"\r" + "\t", + "\n", + "\u000C", + " ", + "\r" )) tableInsertModeElements = frozenset(( @@ -409,8 +473,8 @@ asciiLetters = frozenset(string.ascii_letters) digits = frozenset(string.digits) hexDigits = frozenset(string.hexdigits) -asciiUpper2Lower = dict([(ord(c),ord(c.lower())) - for c in string.ascii_uppercase]) +asciiUpper2Lower = dict([(ord(c), ord(c.lower())) + for c in string.ascii_uppercase]) # Heading elements need to be ordered headingElements = ( @@ -436,7 +500,8 @@ voidElements = frozenset(( "area", "col", "input", - "source" + "source", + "track" )) cdataElements = frozenset(('title', 'textarea')) @@ -455,12 +520,13 @@ booleanAttributes = { "": frozenset(("irrelevant",)), "style": frozenset(("scoped",)), "img": frozenset(("ismap",)), - "audio": frozenset(("autoplay","controls")), - "video": frozenset(("autoplay","controls")), + "audio": frozenset(("autoplay", "controls")), + "video": frozenset(("autoplay", "controls")), "script": frozenset(("defer", "async")), "details": frozenset(("open",)), "datagrid": frozenset(("multiple", "disabled")), "command": frozenset(("hidden", "disabled", "checked", "default")), + "hr": frozenset(("noshade")), "menu": frozenset(("autosubmit",)), "fieldset": frozenset(("disabled", "readonly")), "option": frozenset(("disabled", "readonly", "selected")), @@ -474,445 +540,2312 @@ booleanAttributes = { # entitiesWindows1252 has to be _ordered_ and needs to have an index. It # therefore can't be a frozenset. entitiesWindows1252 = ( - 8364, # 0x80 0x20AC EURO SIGN - 65533, # 0x81 UNDEFINED - 8218, # 0x82 0x201A SINGLE LOW-9 QUOTATION MARK - 402, # 0x83 0x0192 LATIN SMALL LETTER F WITH HOOK - 8222, # 0x84 0x201E DOUBLE LOW-9 QUOTATION MARK - 8230, # 0x85 0x2026 HORIZONTAL ELLIPSIS - 8224, # 0x86 0x2020 DAGGER - 8225, # 0x87 0x2021 DOUBLE DAGGER - 710, # 0x88 0x02C6 MODIFIER LETTER CIRCUMFLEX ACCENT - 8240, # 0x89 0x2030 PER MILLE SIGN - 352, # 0x8A 0x0160 LATIN CAPITAL LETTER S WITH CARON - 8249, # 0x8B 0x2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK - 338, # 0x8C 0x0152 LATIN CAPITAL LIGATURE OE - 65533, # 0x8D UNDEFINED - 381, # 0x8E 0x017D LATIN CAPITAL LETTER Z WITH CARON - 65533, # 0x8F UNDEFINED - 65533, # 0x90 UNDEFINED - 8216, # 0x91 0x2018 LEFT SINGLE QUOTATION MARK - 8217, # 0x92 0x2019 RIGHT SINGLE QUOTATION MARK - 8220, # 0x93 0x201C LEFT DOUBLE QUOTATION MARK - 8221, # 0x94 0x201D RIGHT DOUBLE QUOTATION MARK - 8226, # 0x95 0x2022 BULLET - 8211, # 0x96 0x2013 EN DASH - 8212, # 0x97 0x2014 EM DASH - 732, # 0x98 0x02DC SMALL TILDE - 8482, # 0x99 0x2122 TRADE MARK SIGN - 353, # 0x9A 0x0161 LATIN SMALL LETTER S WITH CARON - 8250, # 0x9B 0x203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - 339, # 0x9C 0x0153 LATIN SMALL LIGATURE OE - 65533, # 0x9D UNDEFINED - 382, # 0x9E 0x017E LATIN SMALL LETTER Z WITH CARON - 376 # 0x9F 0x0178 LATIN CAPITAL LETTER Y WITH DIAERESIS + 8364, # 0x80 0x20AC EURO SIGN + 65533, # 0x81 UNDEFINED + 8218, # 0x82 0x201A SINGLE LOW-9 QUOTATION MARK + 402, # 0x83 0x0192 LATIN SMALL LETTER F WITH HOOK + 8222, # 0x84 0x201E DOUBLE LOW-9 QUOTATION MARK + 8230, # 0x85 0x2026 HORIZONTAL ELLIPSIS + 8224, # 0x86 0x2020 DAGGER + 8225, # 0x87 0x2021 DOUBLE DAGGER + 710, # 0x88 0x02C6 MODIFIER LETTER CIRCUMFLEX ACCENT + 8240, # 0x89 0x2030 PER MILLE SIGN + 352, # 0x8A 0x0160 LATIN CAPITAL LETTER S WITH CARON + 8249, # 0x8B 0x2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK + 338, # 0x8C 0x0152 LATIN CAPITAL LIGATURE OE + 65533, # 0x8D UNDEFINED + 381, # 0x8E 0x017D LATIN CAPITAL LETTER Z WITH CARON + 65533, # 0x8F UNDEFINED + 65533, # 0x90 UNDEFINED + 8216, # 0x91 0x2018 LEFT SINGLE QUOTATION MARK + 8217, # 0x92 0x2019 RIGHT SINGLE QUOTATION MARK + 8220, # 0x93 0x201C LEFT DOUBLE QUOTATION MARK + 8221, # 0x94 0x201D RIGHT DOUBLE QUOTATION MARK + 8226, # 0x95 0x2022 BULLET + 8211, # 0x96 0x2013 EN DASH + 8212, # 0x97 0x2014 EM DASH + 732, # 0x98 0x02DC SMALL TILDE + 8482, # 0x99 0x2122 TRADE MARK SIGN + 353, # 0x9A 0x0161 LATIN SMALL LETTER S WITH CARON + 8250, # 0x9B 0x203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + 339, # 0x9C 0x0153 LATIN SMALL LIGATURE OE + 65533, # 0x9D UNDEFINED + 382, # 0x9E 0x017E LATIN SMALL LETTER Z WITH CARON + 376 # 0x9F 0x0178 LATIN CAPITAL LETTER Y WITH DIAERESIS ) +xmlEntities = frozenset(('lt;', 'gt;', 'amp;', 'apos;', 'quot;')) + entities = { - "AElig;": u"\u00C6", - "AElig": u"\u00C6", - "AMP;": u"\u0026", - "AMP": u"\u0026", - "Aacute;": u"\u00C1", - "Aacute": u"\u00C1", - "Acirc;": u"\u00C2", - "Acirc": u"\u00C2", - "Agrave;": u"\u00C0", - "Agrave": u"\u00C0", - "Alpha;": u"\u0391", - "Aring;": u"\u00C5", - "Aring": u"\u00C5", - "Atilde;": u"\u00C3", - "Atilde": u"\u00C3", - "Auml;": u"\u00C4", - "Auml": u"\u00C4", - "Beta;": u"\u0392", - "COPY;": u"\u00A9", - "COPY": u"\u00A9", - "Ccedil;": u"\u00C7", - "Ccedil": u"\u00C7", - "Chi;": u"\u03A7", - "Dagger;": u"\u2021", - "Delta;": u"\u0394", - "ETH;": u"\u00D0", - "ETH": u"\u00D0", - "Eacute;": u"\u00C9", - "Eacute": u"\u00C9", - "Ecirc;": u"\u00CA", - "Ecirc": u"\u00CA", - "Egrave;": u"\u00C8", - "Egrave": u"\u00C8", - "Epsilon;": u"\u0395", - "Eta;": u"\u0397", - "Euml;": u"\u00CB", - "Euml": u"\u00CB", - "GT;": u"\u003E", - "GT": u"\u003E", - "Gamma;": u"\u0393", - "Iacute;": u"\u00CD", - "Iacute": u"\u00CD", - "Icirc;": u"\u00CE", - "Icirc": u"\u00CE", - "Igrave;": u"\u00CC", - "Igrave": u"\u00CC", - "Iota;": u"\u0399", - "Iuml;": u"\u00CF", - "Iuml": u"\u00CF", - "Kappa;": u"\u039A", - "LT;": u"\u003C", - "LT": u"\u003C", - "Lambda;": u"\u039B", - "Mu;": u"\u039C", - "Ntilde;": u"\u00D1", - "Ntilde": u"\u00D1", - "Nu;": u"\u039D", - "OElig;": u"\u0152", - "Oacute;": u"\u00D3", - "Oacute": u"\u00D3", - "Ocirc;": u"\u00D4", - "Ocirc": u"\u00D4", - "Ograve;": u"\u00D2", - "Ograve": u"\u00D2", - "Omega;": u"\u03A9", - "Omicron;": u"\u039F", - "Oslash;": u"\u00D8", - "Oslash": u"\u00D8", - "Otilde;": u"\u00D5", - "Otilde": u"\u00D5", - "Ouml;": u"\u00D6", - "Ouml": u"\u00D6", - "Phi;": u"\u03A6", - "Pi;": u"\u03A0", - "Prime;": u"\u2033", - "Psi;": u"\u03A8", - "QUOT;": u"\u0022", - "QUOT": u"\u0022", - "REG;": u"\u00AE", - "REG": u"\u00AE", - "Rho;": u"\u03A1", - "Scaron;": u"\u0160", - "Sigma;": u"\u03A3", - "THORN;": u"\u00DE", - "THORN": u"\u00DE", - "TRADE;": u"\u2122", - "Tau;": u"\u03A4", - "Theta;": u"\u0398", - "Uacute;": u"\u00DA", - "Uacute": u"\u00DA", - "Ucirc;": u"\u00DB", - "Ucirc": u"\u00DB", - "Ugrave;": u"\u00D9", - "Ugrave": u"\u00D9", - "Upsilon;": u"\u03A5", - "Uuml;": u"\u00DC", - "Uuml": u"\u00DC", - "Xi;": u"\u039E", - "Yacute;": u"\u00DD", - "Yacute": u"\u00DD", - "Yuml;": u"\u0178", - "Zeta;": u"\u0396", - "aacute;": u"\u00E1", - "aacute": u"\u00E1", - "acirc;": u"\u00E2", - "acirc": u"\u00E2", - "acute;": u"\u00B4", - "acute": u"\u00B4", - "aelig;": u"\u00E6", - "aelig": u"\u00E6", - "agrave;": u"\u00E0", - "agrave": u"\u00E0", - "alefsym;": u"\u2135", - "alpha;": u"\u03B1", - "amp;": u"\u0026", - "amp": u"\u0026", - "and;": u"\u2227", - "ang;": u"\u2220", - "apos;": u"\u0027", - "aring;": u"\u00E5", - "aring": u"\u00E5", - "asymp;": u"\u2248", - "atilde;": u"\u00E3", - "atilde": u"\u00E3", - "auml;": u"\u00E4", - "auml": u"\u00E4", - "bdquo;": u"\u201E", - "beta;": u"\u03B2", - "brvbar;": u"\u00A6", - "brvbar": u"\u00A6", - "bull;": u"\u2022", - "cap;": u"\u2229", - "ccedil;": u"\u00E7", - "ccedil": u"\u00E7", - "cedil;": u"\u00B8", - "cedil": u"\u00B8", - "cent;": u"\u00A2", - "cent": u"\u00A2", - "chi;": u"\u03C7", - "circ;": u"\u02C6", - "clubs;": u"\u2663", - "cong;": u"\u2245", - "copy;": u"\u00A9", - "copy": u"\u00A9", - "crarr;": u"\u21B5", - "cup;": u"\u222A", - "curren;": u"\u00A4", - "curren": u"\u00A4", - "dArr;": u"\u21D3", - "dagger;": u"\u2020", - "darr;": u"\u2193", - "deg;": u"\u00B0", - "deg": u"\u00B0", - "delta;": u"\u03B4", - "diams;": u"\u2666", - "divide;": u"\u00F7", - "divide": u"\u00F7", - "eacute;": u"\u00E9", - "eacute": u"\u00E9", - "ecirc;": u"\u00EA", - "ecirc": u"\u00EA", - "egrave;": u"\u00E8", - "egrave": u"\u00E8", - "empty;": u"\u2205", - "emsp;": u"\u2003", - "ensp;": u"\u2002", - "epsilon;": u"\u03B5", - "equiv;": u"\u2261", - "eta;": u"\u03B7", - "eth;": u"\u00F0", - "eth": u"\u00F0", - "euml;": u"\u00EB", - "euml": u"\u00EB", - "euro;": u"\u20AC", - "exist;": u"\u2203", - "fnof;": u"\u0192", - "forall;": u"\u2200", - "frac12;": u"\u00BD", - "frac12": u"\u00BD", - "frac14;": u"\u00BC", - "frac14": u"\u00BC", - "frac34;": u"\u00BE", - "frac34": u"\u00BE", - "frasl;": u"\u2044", - "gamma;": u"\u03B3", - "ge;": u"\u2265", - "gt;": u"\u003E", - "gt": u"\u003E", - "hArr;": u"\u21D4", - "harr;": u"\u2194", - "hearts;": u"\u2665", - "hellip;": u"\u2026", - "iacute;": u"\u00ED", - "iacute": u"\u00ED", - "icirc;": u"\u00EE", - "icirc": u"\u00EE", - "iexcl;": u"\u00A1", - "iexcl": u"\u00A1", - "igrave;": u"\u00EC", - "igrave": u"\u00EC", - "image;": u"\u2111", - "infin;": u"\u221E", - "int;": u"\u222B", - "iota;": u"\u03B9", - "iquest;": u"\u00BF", - "iquest": u"\u00BF", - "isin;": u"\u2208", - "iuml;": u"\u00EF", - "iuml": u"\u00EF", - "kappa;": u"\u03BA", - "lArr;": u"\u21D0", - "lambda;": u"\u03BB", - "lang;": u"\u27E8", - "laquo;": u"\u00AB", - "laquo": u"\u00AB", - "larr;": u"\u2190", - "lceil;": u"\u2308", - "ldquo;": u"\u201C", - "le;": u"\u2264", - "lfloor;": u"\u230A", - "lowast;": u"\u2217", - "loz;": u"\u25CA", - "lrm;": u"\u200E", - "lsaquo;": u"\u2039", - "lsquo;": u"\u2018", - "lt;": u"\u003C", - "lt": u"\u003C", - "macr;": u"\u00AF", - "macr": u"\u00AF", - "mdash;": u"\u2014", - "micro;": u"\u00B5", - "micro": u"\u00B5", - "middot;": u"\u00B7", - "middot": u"\u00B7", - "minus;": u"\u2212", - "mu;": u"\u03BC", - "nabla;": u"\u2207", - "nbsp;": u"\u00A0", - "nbsp": u"\u00A0", - "ndash;": u"\u2013", - "ne;": u"\u2260", - "ni;": u"\u220B", - "not;": u"\u00AC", - "not": u"\u00AC", - "notin;": u"\u2209", - "nsub;": u"\u2284", - "ntilde;": u"\u00F1", - "ntilde": u"\u00F1", - "nu;": u"\u03BD", - "oacute;": u"\u00F3", - "oacute": u"\u00F3", - "ocirc;": u"\u00F4", - "ocirc": u"\u00F4", - "oelig;": u"\u0153", - "ograve;": u"\u00F2", - "ograve": u"\u00F2", - "oline;": u"\u203E", - "omega;": u"\u03C9", - "omicron;": u"\u03BF", - "oplus;": u"\u2295", - "or;": u"\u2228", - "ordf;": u"\u00AA", - "ordf": u"\u00AA", - "ordm;": u"\u00BA", - "ordm": u"\u00BA", - "oslash;": u"\u00F8", - "oslash": u"\u00F8", - "otilde;": u"\u00F5", - "otilde": u"\u00F5", - "otimes;": u"\u2297", - "ouml;": u"\u00F6", - "ouml": u"\u00F6", - "para;": u"\u00B6", - "para": u"\u00B6", - "part;": u"\u2202", - "permil;": u"\u2030", - "perp;": u"\u22A5", - "phi;": u"\u03C6", - "pi;": u"\u03C0", - "piv;": u"\u03D6", - "plusmn;": u"\u00B1", - "plusmn": u"\u00B1", - "pound;": u"\u00A3", - "pound": u"\u00A3", - "prime;": u"\u2032", - "prod;": u"\u220F", - "prop;": u"\u221D", - "psi;": u"\u03C8", - "quot;": u"\u0022", - "quot": u"\u0022", - "rArr;": u"\u21D2", - "radic;": u"\u221A", - "rang;": u"\u27E9", - "raquo;": u"\u00BB", - "raquo": u"\u00BB", - "rarr;": u"\u2192", - "rceil;": u"\u2309", - "rdquo;": u"\u201D", - "real;": u"\u211C", - "reg;": u"\u00AE", - "reg": u"\u00AE", - "rfloor;": u"\u230B", - "rho;": u"\u03C1", - "rlm;": u"\u200F", - "rsaquo;": u"\u203A", - "rsquo;": u"\u2019", - "sbquo;": u"\u201A", - "scaron;": u"\u0161", - "sdot;": u"\u22C5", - "sect;": u"\u00A7", - "sect": u"\u00A7", - "shy;": u"\u00AD", - "shy": u"\u00AD", - "sigma;": u"\u03C3", - "sigmaf;": u"\u03C2", - "sim;": u"\u223C", - "spades;": u"\u2660", - "sub;": u"\u2282", - "sube;": u"\u2286", - "sum;": u"\u2211", - "sup1;": u"\u00B9", - "sup1": u"\u00B9", - "sup2;": u"\u00B2", - "sup2": u"\u00B2", - "sup3;": u"\u00B3", - "sup3": u"\u00B3", - "sup;": u"\u2283", - "supe;": u"\u2287", - "szlig;": u"\u00DF", - "szlig": u"\u00DF", - "tau;": u"\u03C4", - "there4;": u"\u2234", - "theta;": u"\u03B8", - "thetasym;": u"\u03D1", - "thinsp;": u"\u2009", - "thorn;": u"\u00FE", - "thorn": u"\u00FE", - "tilde;": u"\u02DC", - "times;": u"\u00D7", - "times": u"\u00D7", - "trade;": u"\u2122", - "uArr;": u"\u21D1", - "uacute;": u"\u00FA", - "uacute": u"\u00FA", - "uarr;": u"\u2191", - "ucirc;": u"\u00FB", - "ucirc": u"\u00FB", - "ugrave;": u"\u00F9", - "ugrave": u"\u00F9", - "uml;": u"\u00A8", - "uml": u"\u00A8", - "upsih;": u"\u03D2", - "upsilon;": u"\u03C5", - "uuml;": u"\u00FC", - "uuml": u"\u00FC", - "weierp;": u"\u2118", - "xi;": u"\u03BE", - "yacute;": u"\u00FD", - "yacute": u"\u00FD", - "yen;": u"\u00A5", - "yen": u"\u00A5", - "yuml;": u"\u00FF", - "yuml": u"\u00FF", - "zeta;": u"\u03B6", - "zwj;": u"\u200D", - "zwnj;": u"\u200C" + "AElig": "\xc6", + "AElig;": "\xc6", + "AMP": "&", + "AMP;": "&", + "Aacute": "\xc1", + "Aacute;": "\xc1", + "Abreve;": "\u0102", + "Acirc": "\xc2", + "Acirc;": "\xc2", + "Acy;": "\u0410", + "Afr;": "\U0001d504", + "Agrave": "\xc0", + "Agrave;": "\xc0", + "Alpha;": "\u0391", + "Amacr;": "\u0100", + "And;": "\u2a53", + "Aogon;": "\u0104", + "Aopf;": "\U0001d538", + "ApplyFunction;": "\u2061", + "Aring": "\xc5", + "Aring;": "\xc5", + "Ascr;": "\U0001d49c", + "Assign;": "\u2254", + "Atilde": "\xc3", + "Atilde;": "\xc3", + "Auml": "\xc4", + "Auml;": "\xc4", + "Backslash;": "\u2216", + "Barv;": "\u2ae7", + "Barwed;": "\u2306", + "Bcy;": "\u0411", + "Because;": "\u2235", + "Bernoullis;": "\u212c", + "Beta;": "\u0392", + "Bfr;": "\U0001d505", + "Bopf;": "\U0001d539", + "Breve;": "\u02d8", + "Bscr;": "\u212c", + "Bumpeq;": "\u224e", + "CHcy;": "\u0427", + "COPY": "\xa9", + "COPY;": "\xa9", + "Cacute;": "\u0106", + "Cap;": "\u22d2", + "CapitalDifferentialD;": "\u2145", + "Cayleys;": "\u212d", + "Ccaron;": "\u010c", + "Ccedil": "\xc7", + "Ccedil;": "\xc7", + "Ccirc;": "\u0108", + "Cconint;": "\u2230", + "Cdot;": "\u010a", + "Cedilla;": "\xb8", + "CenterDot;": "\xb7", + "Cfr;": "\u212d", + "Chi;": "\u03a7", + "CircleDot;": "\u2299", + "CircleMinus;": "\u2296", + "CirclePlus;": "\u2295", + "CircleTimes;": "\u2297", + "ClockwiseContourIntegral;": "\u2232", + "CloseCurlyDoubleQuote;": "\u201d", + "CloseCurlyQuote;": "\u2019", + "Colon;": "\u2237", + "Colone;": "\u2a74", + "Congruent;": "\u2261", + "Conint;": "\u222f", + "ContourIntegral;": "\u222e", + "Copf;": "\u2102", + "Coproduct;": "\u2210", + "CounterClockwiseContourIntegral;": "\u2233", + "Cross;": "\u2a2f", + "Cscr;": "\U0001d49e", + "Cup;": "\u22d3", + "CupCap;": "\u224d", + "DD;": "\u2145", + "DDotrahd;": "\u2911", + "DJcy;": "\u0402", + "DScy;": "\u0405", + "DZcy;": "\u040f", + "Dagger;": "\u2021", + "Darr;": "\u21a1", + "Dashv;": "\u2ae4", + "Dcaron;": "\u010e", + "Dcy;": "\u0414", + "Del;": "\u2207", + "Delta;": "\u0394", + "Dfr;": "\U0001d507", + "DiacriticalAcute;": "\xb4", + "DiacriticalDot;": "\u02d9", + "DiacriticalDoubleAcute;": "\u02dd", + "DiacriticalGrave;": "`", + "DiacriticalTilde;": "\u02dc", + "Diamond;": "\u22c4", + "DifferentialD;": "\u2146", + "Dopf;": "\U0001d53b", + "Dot;": "\xa8", + "DotDot;": "\u20dc", + "DotEqual;": "\u2250", + "DoubleContourIntegral;": "\u222f", + "DoubleDot;": "\xa8", + "DoubleDownArrow;": "\u21d3", + "DoubleLeftArrow;": "\u21d0", + "DoubleLeftRightArrow;": "\u21d4", + "DoubleLeftTee;": "\u2ae4", + "DoubleLongLeftArrow;": "\u27f8", + "DoubleLongLeftRightArrow;": "\u27fa", + "DoubleLongRightArrow;": "\u27f9", + "DoubleRightArrow;": "\u21d2", + "DoubleRightTee;": "\u22a8", + "DoubleUpArrow;": "\u21d1", + "DoubleUpDownArrow;": "\u21d5", + "DoubleVerticalBar;": "\u2225", + "DownArrow;": "\u2193", + "DownArrowBar;": "\u2913", + "DownArrowUpArrow;": "\u21f5", + "DownBreve;": "\u0311", + "DownLeftRightVector;": "\u2950", + "DownLeftTeeVector;": "\u295e", + "DownLeftVector;": "\u21bd", + "DownLeftVectorBar;": "\u2956", + "DownRightTeeVector;": "\u295f", + "DownRightVector;": "\u21c1", + "DownRightVectorBar;": "\u2957", + "DownTee;": "\u22a4", + "DownTeeArrow;": "\u21a7", + "Downarrow;": "\u21d3", + "Dscr;": "\U0001d49f", + "Dstrok;": "\u0110", + "ENG;": "\u014a", + "ETH": "\xd0", + "ETH;": "\xd0", + "Eacute": "\xc9", + "Eacute;": "\xc9", + "Ecaron;": "\u011a", + "Ecirc": "\xca", + "Ecirc;": "\xca", + "Ecy;": "\u042d", + "Edot;": "\u0116", + "Efr;": "\U0001d508", + "Egrave": "\xc8", + "Egrave;": "\xc8", + "Element;": "\u2208", + "Emacr;": "\u0112", + "EmptySmallSquare;": "\u25fb", + "EmptyVerySmallSquare;": "\u25ab", + "Eogon;": "\u0118", + "Eopf;": "\U0001d53c", + "Epsilon;": "\u0395", + "Equal;": "\u2a75", + "EqualTilde;": "\u2242", + "Equilibrium;": "\u21cc", + "Escr;": "\u2130", + "Esim;": "\u2a73", + "Eta;": "\u0397", + "Euml": "\xcb", + "Euml;": "\xcb", + "Exists;": "\u2203", + "ExponentialE;": "\u2147", + "Fcy;": "\u0424", + "Ffr;": "\U0001d509", + "FilledSmallSquare;": "\u25fc", + "FilledVerySmallSquare;": "\u25aa", + "Fopf;": "\U0001d53d", + "ForAll;": "\u2200", + "Fouriertrf;": "\u2131", + "Fscr;": "\u2131", + "GJcy;": "\u0403", + "GT": ">", + "GT;": ">", + "Gamma;": "\u0393", + "Gammad;": "\u03dc", + "Gbreve;": "\u011e", + "Gcedil;": "\u0122", + "Gcirc;": "\u011c", + "Gcy;": "\u0413", + "Gdot;": "\u0120", + "Gfr;": "\U0001d50a", + "Gg;": "\u22d9", + "Gopf;": "\U0001d53e", + "GreaterEqual;": "\u2265", + "GreaterEqualLess;": "\u22db", + "GreaterFullEqual;": "\u2267", + "GreaterGreater;": "\u2aa2", + "GreaterLess;": "\u2277", + "GreaterSlantEqual;": "\u2a7e", + "GreaterTilde;": "\u2273", + "Gscr;": "\U0001d4a2", + "Gt;": "\u226b", + "HARDcy;": "\u042a", + "Hacek;": "\u02c7", + "Hat;": "^", + "Hcirc;": "\u0124", + "Hfr;": "\u210c", + "HilbertSpace;": "\u210b", + "Hopf;": "\u210d", + "HorizontalLine;": "\u2500", + "Hscr;": "\u210b", + "Hstrok;": "\u0126", + "HumpDownHump;": "\u224e", + "HumpEqual;": "\u224f", + "IEcy;": "\u0415", + "IJlig;": "\u0132", + "IOcy;": "\u0401", + "Iacute": "\xcd", + "Iacute;": "\xcd", + "Icirc": "\xce", + "Icirc;": "\xce", + "Icy;": "\u0418", + "Idot;": "\u0130", + "Ifr;": "\u2111", + "Igrave": "\xcc", + "Igrave;": "\xcc", + "Im;": "\u2111", + "Imacr;": "\u012a", + "ImaginaryI;": "\u2148", + "Implies;": "\u21d2", + "Int;": "\u222c", + "Integral;": "\u222b", + "Intersection;": "\u22c2", + "InvisibleComma;": "\u2063", + "InvisibleTimes;": "\u2062", + "Iogon;": "\u012e", + "Iopf;": "\U0001d540", + "Iota;": "\u0399", + "Iscr;": "\u2110", + "Itilde;": "\u0128", + "Iukcy;": "\u0406", + "Iuml": "\xcf", + "Iuml;": "\xcf", + "Jcirc;": "\u0134", + "Jcy;": "\u0419", + "Jfr;": "\U0001d50d", + "Jopf;": "\U0001d541", + "Jscr;": "\U0001d4a5", + "Jsercy;": "\u0408", + "Jukcy;": "\u0404", + "KHcy;": "\u0425", + "KJcy;": "\u040c", + "Kappa;": "\u039a", + "Kcedil;": "\u0136", + "Kcy;": "\u041a", + "Kfr;": "\U0001d50e", + "Kopf;": "\U0001d542", + "Kscr;": "\U0001d4a6", + "LJcy;": "\u0409", + "LT": "<", + "LT;": "<", + "Lacute;": "\u0139", + "Lambda;": "\u039b", + "Lang;": "\u27ea", + "Laplacetrf;": "\u2112", + "Larr;": "\u219e", + "Lcaron;": "\u013d", + "Lcedil;": "\u013b", + "Lcy;": "\u041b", + "LeftAngleBracket;": "\u27e8", + "LeftArrow;": "\u2190", + "LeftArrowBar;": "\u21e4", + "LeftArrowRightArrow;": "\u21c6", + "LeftCeiling;": "\u2308", + "LeftDoubleBracket;": "\u27e6", + "LeftDownTeeVector;": "\u2961", + "LeftDownVector;": "\u21c3", + "LeftDownVectorBar;": "\u2959", + "LeftFloor;": "\u230a", + "LeftRightArrow;": "\u2194", + "LeftRightVector;": "\u294e", + "LeftTee;": "\u22a3", + "LeftTeeArrow;": "\u21a4", + "LeftTeeVector;": "\u295a", + "LeftTriangle;": "\u22b2", + "LeftTriangleBar;": "\u29cf", + "LeftTriangleEqual;": "\u22b4", + "LeftUpDownVector;": "\u2951", + "LeftUpTeeVector;": "\u2960", + "LeftUpVector;": "\u21bf", + "LeftUpVectorBar;": "\u2958", + "LeftVector;": "\u21bc", + "LeftVectorBar;": "\u2952", + "Leftarrow;": "\u21d0", + "Leftrightarrow;": "\u21d4", + "LessEqualGreater;": "\u22da", + "LessFullEqual;": "\u2266", + "LessGreater;": "\u2276", + "LessLess;": "\u2aa1", + "LessSlantEqual;": "\u2a7d", + "LessTilde;": "\u2272", + "Lfr;": "\U0001d50f", + "Ll;": "\u22d8", + "Lleftarrow;": "\u21da", + "Lmidot;": "\u013f", + "LongLeftArrow;": "\u27f5", + "LongLeftRightArrow;": "\u27f7", + "LongRightArrow;": "\u27f6", + "Longleftarrow;": "\u27f8", + "Longleftrightarrow;": "\u27fa", + "Longrightarrow;": "\u27f9", + "Lopf;": "\U0001d543", + "LowerLeftArrow;": "\u2199", + "LowerRightArrow;": "\u2198", + "Lscr;": "\u2112", + "Lsh;": "\u21b0", + "Lstrok;": "\u0141", + "Lt;": "\u226a", + "Map;": "\u2905", + "Mcy;": "\u041c", + "MediumSpace;": "\u205f", + "Mellintrf;": "\u2133", + "Mfr;": "\U0001d510", + "MinusPlus;": "\u2213", + "Mopf;": "\U0001d544", + "Mscr;": "\u2133", + "Mu;": "\u039c", + "NJcy;": "\u040a", + "Nacute;": "\u0143", + "Ncaron;": "\u0147", + "Ncedil;": "\u0145", + "Ncy;": "\u041d", + "NegativeMediumSpace;": "\u200b", + "NegativeThickSpace;": "\u200b", + "NegativeThinSpace;": "\u200b", + "NegativeVeryThinSpace;": "\u200b", + "NestedGreaterGreater;": "\u226b", + "NestedLessLess;": "\u226a", + "NewLine;": "\n", + "Nfr;": "\U0001d511", + "NoBreak;": "\u2060", + "NonBreakingSpace;": "\xa0", + "Nopf;": "\u2115", + "Not;": "\u2aec", + "NotCongruent;": "\u2262", + "NotCupCap;": "\u226d", + "NotDoubleVerticalBar;": "\u2226", + "NotElement;": "\u2209", + "NotEqual;": "\u2260", + "NotEqualTilde;": "\u2242\u0338", + "NotExists;": "\u2204", + "NotGreater;": "\u226f", + "NotGreaterEqual;": "\u2271", + "NotGreaterFullEqual;": "\u2267\u0338", + "NotGreaterGreater;": "\u226b\u0338", + "NotGreaterLess;": "\u2279", + "NotGreaterSlantEqual;": "\u2a7e\u0338", + "NotGreaterTilde;": "\u2275", + "NotHumpDownHump;": "\u224e\u0338", + "NotHumpEqual;": "\u224f\u0338", + "NotLeftTriangle;": "\u22ea", + "NotLeftTriangleBar;": "\u29cf\u0338", + "NotLeftTriangleEqual;": "\u22ec", + "NotLess;": "\u226e", + "NotLessEqual;": "\u2270", + "NotLessGreater;": "\u2278", + "NotLessLess;": "\u226a\u0338", + "NotLessSlantEqual;": "\u2a7d\u0338", + "NotLessTilde;": "\u2274", + "NotNestedGreaterGreater;": "\u2aa2\u0338", + "NotNestedLessLess;": "\u2aa1\u0338", + "NotPrecedes;": "\u2280", + "NotPrecedesEqual;": "\u2aaf\u0338", + "NotPrecedesSlantEqual;": "\u22e0", + "NotReverseElement;": "\u220c", + "NotRightTriangle;": "\u22eb", + "NotRightTriangleBar;": "\u29d0\u0338", + "NotRightTriangleEqual;": "\u22ed", + "NotSquareSubset;": "\u228f\u0338", + "NotSquareSubsetEqual;": "\u22e2", + "NotSquareSuperset;": "\u2290\u0338", + "NotSquareSupersetEqual;": "\u22e3", + "NotSubset;": "\u2282\u20d2", + "NotSubsetEqual;": "\u2288", + "NotSucceeds;": "\u2281", + "NotSucceedsEqual;": "\u2ab0\u0338", + "NotSucceedsSlantEqual;": "\u22e1", + "NotSucceedsTilde;": "\u227f\u0338", + "NotSuperset;": "\u2283\u20d2", + "NotSupersetEqual;": "\u2289", + "NotTilde;": "\u2241", + "NotTildeEqual;": "\u2244", + "NotTildeFullEqual;": "\u2247", + "NotTildeTilde;": "\u2249", + "NotVerticalBar;": "\u2224", + "Nscr;": "\U0001d4a9", + "Ntilde": "\xd1", + "Ntilde;": "\xd1", + "Nu;": "\u039d", + "OElig;": "\u0152", + "Oacute": "\xd3", + "Oacute;": "\xd3", + "Ocirc": "\xd4", + "Ocirc;": "\xd4", + "Ocy;": "\u041e", + "Odblac;": "\u0150", + "Ofr;": "\U0001d512", + "Ograve": "\xd2", + "Ograve;": "\xd2", + "Omacr;": "\u014c", + "Omega;": "\u03a9", + "Omicron;": "\u039f", + "Oopf;": "\U0001d546", + "OpenCurlyDoubleQuote;": "\u201c", + "OpenCurlyQuote;": "\u2018", + "Or;": "\u2a54", + "Oscr;": "\U0001d4aa", + "Oslash": "\xd8", + "Oslash;": "\xd8", + "Otilde": "\xd5", + "Otilde;": "\xd5", + "Otimes;": "\u2a37", + "Ouml": "\xd6", + "Ouml;": "\xd6", + "OverBar;": "\u203e", + "OverBrace;": "\u23de", + "OverBracket;": "\u23b4", + "OverParenthesis;": "\u23dc", + "PartialD;": "\u2202", + "Pcy;": "\u041f", + "Pfr;": "\U0001d513", + "Phi;": "\u03a6", + "Pi;": "\u03a0", + "PlusMinus;": "\xb1", + "Poincareplane;": "\u210c", + "Popf;": "\u2119", + "Pr;": "\u2abb", + "Precedes;": "\u227a", + "PrecedesEqual;": "\u2aaf", + "PrecedesSlantEqual;": "\u227c", + "PrecedesTilde;": "\u227e", + "Prime;": "\u2033", + "Product;": "\u220f", + "Proportion;": "\u2237", + "Proportional;": "\u221d", + "Pscr;": "\U0001d4ab", + "Psi;": "\u03a8", + "QUOT": "\"", + "QUOT;": "\"", + "Qfr;": "\U0001d514", + "Qopf;": "\u211a", + "Qscr;": "\U0001d4ac", + "RBarr;": "\u2910", + "REG": "\xae", + "REG;": "\xae", + "Racute;": "\u0154", + "Rang;": "\u27eb", + "Rarr;": "\u21a0", + "Rarrtl;": "\u2916", + "Rcaron;": "\u0158", + "Rcedil;": "\u0156", + "Rcy;": "\u0420", + "Re;": "\u211c", + "ReverseElement;": "\u220b", + "ReverseEquilibrium;": "\u21cb", + "ReverseUpEquilibrium;": "\u296f", + "Rfr;": "\u211c", + "Rho;": "\u03a1", + "RightAngleBracket;": "\u27e9", + "RightArrow;": "\u2192", + "RightArrowBar;": "\u21e5", + "RightArrowLeftArrow;": "\u21c4", + "RightCeiling;": "\u2309", + "RightDoubleBracket;": "\u27e7", + "RightDownTeeVector;": "\u295d", + "RightDownVector;": "\u21c2", + "RightDownVectorBar;": "\u2955", + "RightFloor;": "\u230b", + "RightTee;": "\u22a2", + "RightTeeArrow;": "\u21a6", + "RightTeeVector;": "\u295b", + "RightTriangle;": "\u22b3", + "RightTriangleBar;": "\u29d0", + "RightTriangleEqual;": "\u22b5", + "RightUpDownVector;": "\u294f", + "RightUpTeeVector;": "\u295c", + "RightUpVector;": "\u21be", + "RightUpVectorBar;": "\u2954", + "RightVector;": "\u21c0", + "RightVectorBar;": "\u2953", + "Rightarrow;": "\u21d2", + "Ropf;": "\u211d", + "RoundImplies;": "\u2970", + "Rrightarrow;": "\u21db", + "Rscr;": "\u211b", + "Rsh;": "\u21b1", + "RuleDelayed;": "\u29f4", + "SHCHcy;": "\u0429", + "SHcy;": "\u0428", + "SOFTcy;": "\u042c", + "Sacute;": "\u015a", + "Sc;": "\u2abc", + "Scaron;": "\u0160", + "Scedil;": "\u015e", + "Scirc;": "\u015c", + "Scy;": "\u0421", + "Sfr;": "\U0001d516", + "ShortDownArrow;": "\u2193", + "ShortLeftArrow;": "\u2190", + "ShortRightArrow;": "\u2192", + "ShortUpArrow;": "\u2191", + "Sigma;": "\u03a3", + "SmallCircle;": "\u2218", + "Sopf;": "\U0001d54a", + "Sqrt;": "\u221a", + "Square;": "\u25a1", + "SquareIntersection;": "\u2293", + "SquareSubset;": "\u228f", + "SquareSubsetEqual;": "\u2291", + "SquareSuperset;": "\u2290", + "SquareSupersetEqual;": "\u2292", + "SquareUnion;": "\u2294", + "Sscr;": "\U0001d4ae", + "Star;": "\u22c6", + "Sub;": "\u22d0", + "Subset;": "\u22d0", + "SubsetEqual;": "\u2286", + "Succeeds;": "\u227b", + "SucceedsEqual;": "\u2ab0", + "SucceedsSlantEqual;": "\u227d", + "SucceedsTilde;": "\u227f", + "SuchThat;": "\u220b", + "Sum;": "\u2211", + "Sup;": "\u22d1", + "Superset;": "\u2283", + "SupersetEqual;": "\u2287", + "Supset;": "\u22d1", + "THORN": "\xde", + "THORN;": "\xde", + "TRADE;": "\u2122", + "TSHcy;": "\u040b", + "TScy;": "\u0426", + "Tab;": "\t", + "Tau;": "\u03a4", + "Tcaron;": "\u0164", + "Tcedil;": "\u0162", + "Tcy;": "\u0422", + "Tfr;": "\U0001d517", + "Therefore;": "\u2234", + "Theta;": "\u0398", + "ThickSpace;": "\u205f\u200a", + "ThinSpace;": "\u2009", + "Tilde;": "\u223c", + "TildeEqual;": "\u2243", + "TildeFullEqual;": "\u2245", + "TildeTilde;": "\u2248", + "Topf;": "\U0001d54b", + "TripleDot;": "\u20db", + "Tscr;": "\U0001d4af", + "Tstrok;": "\u0166", + "Uacute": "\xda", + "Uacute;": "\xda", + "Uarr;": "\u219f", + "Uarrocir;": "\u2949", + "Ubrcy;": "\u040e", + "Ubreve;": "\u016c", + "Ucirc": "\xdb", + "Ucirc;": "\xdb", + "Ucy;": "\u0423", + "Udblac;": "\u0170", + "Ufr;": "\U0001d518", + "Ugrave": "\xd9", + "Ugrave;": "\xd9", + "Umacr;": "\u016a", + "UnderBar;": "_", + "UnderBrace;": "\u23df", + "UnderBracket;": "\u23b5", + "UnderParenthesis;": "\u23dd", + "Union;": "\u22c3", + "UnionPlus;": "\u228e", + "Uogon;": "\u0172", + "Uopf;": "\U0001d54c", + "UpArrow;": "\u2191", + "UpArrowBar;": "\u2912", + "UpArrowDownArrow;": "\u21c5", + "UpDownArrow;": "\u2195", + "UpEquilibrium;": "\u296e", + "UpTee;": "\u22a5", + "UpTeeArrow;": "\u21a5", + "Uparrow;": "\u21d1", + "Updownarrow;": "\u21d5", + "UpperLeftArrow;": "\u2196", + "UpperRightArrow;": "\u2197", + "Upsi;": "\u03d2", + "Upsilon;": "\u03a5", + "Uring;": "\u016e", + "Uscr;": "\U0001d4b0", + "Utilde;": "\u0168", + "Uuml": "\xdc", + "Uuml;": "\xdc", + "VDash;": "\u22ab", + "Vbar;": "\u2aeb", + "Vcy;": "\u0412", + "Vdash;": "\u22a9", + "Vdashl;": "\u2ae6", + "Vee;": "\u22c1", + "Verbar;": "\u2016", + "Vert;": "\u2016", + "VerticalBar;": "\u2223", + "VerticalLine;": "|", + "VerticalSeparator;": "\u2758", + "VerticalTilde;": "\u2240", + "VeryThinSpace;": "\u200a", + "Vfr;": "\U0001d519", + "Vopf;": "\U0001d54d", + "Vscr;": "\U0001d4b1", + "Vvdash;": "\u22aa", + "Wcirc;": "\u0174", + "Wedge;": "\u22c0", + "Wfr;": "\U0001d51a", + "Wopf;": "\U0001d54e", + "Wscr;": "\U0001d4b2", + "Xfr;": "\U0001d51b", + "Xi;": "\u039e", + "Xopf;": "\U0001d54f", + "Xscr;": "\U0001d4b3", + "YAcy;": "\u042f", + "YIcy;": "\u0407", + "YUcy;": "\u042e", + "Yacute": "\xdd", + "Yacute;": "\xdd", + "Ycirc;": "\u0176", + "Ycy;": "\u042b", + "Yfr;": "\U0001d51c", + "Yopf;": "\U0001d550", + "Yscr;": "\U0001d4b4", + "Yuml;": "\u0178", + "ZHcy;": "\u0416", + "Zacute;": "\u0179", + "Zcaron;": "\u017d", + "Zcy;": "\u0417", + "Zdot;": "\u017b", + "ZeroWidthSpace;": "\u200b", + "Zeta;": "\u0396", + "Zfr;": "\u2128", + "Zopf;": "\u2124", + "Zscr;": "\U0001d4b5", + "aacute": "\xe1", + "aacute;": "\xe1", + "abreve;": "\u0103", + "ac;": "\u223e", + "acE;": "\u223e\u0333", + "acd;": "\u223f", + "acirc": "\xe2", + "acirc;": "\xe2", + "acute": "\xb4", + "acute;": "\xb4", + "acy;": "\u0430", + "aelig": "\xe6", + "aelig;": "\xe6", + "af;": "\u2061", + "afr;": "\U0001d51e", + "agrave": "\xe0", + "agrave;": "\xe0", + "alefsym;": "\u2135", + "aleph;": "\u2135", + "alpha;": "\u03b1", + "amacr;": "\u0101", + "amalg;": "\u2a3f", + "amp": "&", + "amp;": "&", + "and;": "\u2227", + "andand;": "\u2a55", + "andd;": "\u2a5c", + "andslope;": "\u2a58", + "andv;": "\u2a5a", + "ang;": "\u2220", + "ange;": "\u29a4", + "angle;": "\u2220", + "angmsd;": "\u2221", + "angmsdaa;": "\u29a8", + "angmsdab;": "\u29a9", + "angmsdac;": "\u29aa", + "angmsdad;": "\u29ab", + "angmsdae;": "\u29ac", + "angmsdaf;": "\u29ad", + "angmsdag;": "\u29ae", + "angmsdah;": "\u29af", + "angrt;": "\u221f", + "angrtvb;": "\u22be", + "angrtvbd;": "\u299d", + "angsph;": "\u2222", + "angst;": "\xc5", + "angzarr;": "\u237c", + "aogon;": "\u0105", + "aopf;": "\U0001d552", + "ap;": "\u2248", + "apE;": "\u2a70", + "apacir;": "\u2a6f", + "ape;": "\u224a", + "apid;": "\u224b", + "apos;": "'", + "approx;": "\u2248", + "approxeq;": "\u224a", + "aring": "\xe5", + "aring;": "\xe5", + "ascr;": "\U0001d4b6", + "ast;": "*", + "asymp;": "\u2248", + "asympeq;": "\u224d", + "atilde": "\xe3", + "atilde;": "\xe3", + "auml": "\xe4", + "auml;": "\xe4", + "awconint;": "\u2233", + "awint;": "\u2a11", + "bNot;": "\u2aed", + "backcong;": "\u224c", + "backepsilon;": "\u03f6", + "backprime;": "\u2035", + "backsim;": "\u223d", + "backsimeq;": "\u22cd", + "barvee;": "\u22bd", + "barwed;": "\u2305", + "barwedge;": "\u2305", + "bbrk;": "\u23b5", + "bbrktbrk;": "\u23b6", + "bcong;": "\u224c", + "bcy;": "\u0431", + "bdquo;": "\u201e", + "becaus;": "\u2235", + "because;": "\u2235", + "bemptyv;": "\u29b0", + "bepsi;": "\u03f6", + "bernou;": "\u212c", + "beta;": "\u03b2", + "beth;": "\u2136", + "between;": "\u226c", + "bfr;": "\U0001d51f", + "bigcap;": "\u22c2", + "bigcirc;": "\u25ef", + "bigcup;": "\u22c3", + "bigodot;": "\u2a00", + "bigoplus;": "\u2a01", + "bigotimes;": "\u2a02", + "bigsqcup;": "\u2a06", + "bigstar;": "\u2605", + "bigtriangledown;": "\u25bd", + "bigtriangleup;": "\u25b3", + "biguplus;": "\u2a04", + "bigvee;": "\u22c1", + "bigwedge;": "\u22c0", + "bkarow;": "\u290d", + "blacklozenge;": "\u29eb", + "blacksquare;": "\u25aa", + "blacktriangle;": "\u25b4", + "blacktriangledown;": "\u25be", + "blacktriangleleft;": "\u25c2", + "blacktriangleright;": "\u25b8", + "blank;": "\u2423", + "blk12;": "\u2592", + "blk14;": "\u2591", + "blk34;": "\u2593", + "block;": "\u2588", + "bne;": "=\u20e5", + "bnequiv;": "\u2261\u20e5", + "bnot;": "\u2310", + "bopf;": "\U0001d553", + "bot;": "\u22a5", + "bottom;": "\u22a5", + "bowtie;": "\u22c8", + "boxDL;": "\u2557", + "boxDR;": "\u2554", + "boxDl;": "\u2556", + "boxDr;": "\u2553", + "boxH;": "\u2550", + "boxHD;": "\u2566", + "boxHU;": "\u2569", + "boxHd;": "\u2564", + "boxHu;": "\u2567", + "boxUL;": "\u255d", + "boxUR;": "\u255a", + "boxUl;": "\u255c", + "boxUr;": "\u2559", + "boxV;": "\u2551", + "boxVH;": "\u256c", + "boxVL;": "\u2563", + "boxVR;": "\u2560", + "boxVh;": "\u256b", + "boxVl;": "\u2562", + "boxVr;": "\u255f", + "boxbox;": "\u29c9", + "boxdL;": "\u2555", + "boxdR;": "\u2552", + "boxdl;": "\u2510", + "boxdr;": "\u250c", + "boxh;": "\u2500", + "boxhD;": "\u2565", + "boxhU;": "\u2568", + "boxhd;": "\u252c", + "boxhu;": "\u2534", + "boxminus;": "\u229f", + "boxplus;": "\u229e", + "boxtimes;": "\u22a0", + "boxuL;": "\u255b", + "boxuR;": "\u2558", + "boxul;": "\u2518", + "boxur;": "\u2514", + "boxv;": "\u2502", + "boxvH;": "\u256a", + "boxvL;": "\u2561", + "boxvR;": "\u255e", + "boxvh;": "\u253c", + "boxvl;": "\u2524", + "boxvr;": "\u251c", + "bprime;": "\u2035", + "breve;": "\u02d8", + "brvbar": "\xa6", + "brvbar;": "\xa6", + "bscr;": "\U0001d4b7", + "bsemi;": "\u204f", + "bsim;": "\u223d", + "bsime;": "\u22cd", + "bsol;": "\\", + "bsolb;": "\u29c5", + "bsolhsub;": "\u27c8", + "bull;": "\u2022", + "bullet;": "\u2022", + "bump;": "\u224e", + "bumpE;": "\u2aae", + "bumpe;": "\u224f", + "bumpeq;": "\u224f", + "cacute;": "\u0107", + "cap;": "\u2229", + "capand;": "\u2a44", + "capbrcup;": "\u2a49", + "capcap;": "\u2a4b", + "capcup;": "\u2a47", + "capdot;": "\u2a40", + "caps;": "\u2229\ufe00", + "caret;": "\u2041", + "caron;": "\u02c7", + "ccaps;": "\u2a4d", + "ccaron;": "\u010d", + "ccedil": "\xe7", + "ccedil;": "\xe7", + "ccirc;": "\u0109", + "ccups;": "\u2a4c", + "ccupssm;": "\u2a50", + "cdot;": "\u010b", + "cedil": "\xb8", + "cedil;": "\xb8", + "cemptyv;": "\u29b2", + "cent": "\xa2", + "cent;": "\xa2", + "centerdot;": "\xb7", + "cfr;": "\U0001d520", + "chcy;": "\u0447", + "check;": "\u2713", + "checkmark;": "\u2713", + "chi;": "\u03c7", + "cir;": "\u25cb", + "cirE;": "\u29c3", + "circ;": "\u02c6", + "circeq;": "\u2257", + "circlearrowleft;": "\u21ba", + "circlearrowright;": "\u21bb", + "circledR;": "\xae", + "circledS;": "\u24c8", + "circledast;": "\u229b", + "circledcirc;": "\u229a", + "circleddash;": "\u229d", + "cire;": "\u2257", + "cirfnint;": "\u2a10", + "cirmid;": "\u2aef", + "cirscir;": "\u29c2", + "clubs;": "\u2663", + "clubsuit;": "\u2663", + "colon;": ":", + "colone;": "\u2254", + "coloneq;": "\u2254", + "comma;": ",", + "commat;": "@", + "comp;": "\u2201", + "compfn;": "\u2218", + "complement;": "\u2201", + "complexes;": "\u2102", + "cong;": "\u2245", + "congdot;": "\u2a6d", + "conint;": "\u222e", + "copf;": "\U0001d554", + "coprod;": "\u2210", + "copy": "\xa9", + "copy;": "\xa9", + "copysr;": "\u2117", + "crarr;": "\u21b5", + "cross;": "\u2717", + "cscr;": "\U0001d4b8", + "csub;": "\u2acf", + "csube;": "\u2ad1", + "csup;": "\u2ad0", + "csupe;": "\u2ad2", + "ctdot;": "\u22ef", + "cudarrl;": "\u2938", + "cudarrr;": "\u2935", + "cuepr;": "\u22de", + "cuesc;": "\u22df", + "cularr;": "\u21b6", + "cularrp;": "\u293d", + "cup;": "\u222a", + "cupbrcap;": "\u2a48", + "cupcap;": "\u2a46", + "cupcup;": "\u2a4a", + "cupdot;": "\u228d", + "cupor;": "\u2a45", + "cups;": "\u222a\ufe00", + "curarr;": "\u21b7", + "curarrm;": "\u293c", + "curlyeqprec;": "\u22de", + "curlyeqsucc;": "\u22df", + "curlyvee;": "\u22ce", + "curlywedge;": "\u22cf", + "curren": "\xa4", + "curren;": "\xa4", + "curvearrowleft;": "\u21b6", + "curvearrowright;": "\u21b7", + "cuvee;": "\u22ce", + "cuwed;": "\u22cf", + "cwconint;": "\u2232", + "cwint;": "\u2231", + "cylcty;": "\u232d", + "dArr;": "\u21d3", + "dHar;": "\u2965", + "dagger;": "\u2020", + "daleth;": "\u2138", + "darr;": "\u2193", + "dash;": "\u2010", + "dashv;": "\u22a3", + "dbkarow;": "\u290f", + "dblac;": "\u02dd", + "dcaron;": "\u010f", + "dcy;": "\u0434", + "dd;": "\u2146", + "ddagger;": "\u2021", + "ddarr;": "\u21ca", + "ddotseq;": "\u2a77", + "deg": "\xb0", + "deg;": "\xb0", + "delta;": "\u03b4", + "demptyv;": "\u29b1", + "dfisht;": "\u297f", + "dfr;": "\U0001d521", + "dharl;": "\u21c3", + "dharr;": "\u21c2", + "diam;": "\u22c4", + "diamond;": "\u22c4", + "diamondsuit;": "\u2666", + "diams;": "\u2666", + "die;": "\xa8", + "digamma;": "\u03dd", + "disin;": "\u22f2", + "div;": "\xf7", + "divide": "\xf7", + "divide;": "\xf7", + "divideontimes;": "\u22c7", + "divonx;": "\u22c7", + "djcy;": "\u0452", + "dlcorn;": "\u231e", + "dlcrop;": "\u230d", + "dollar;": "$", + "dopf;": "\U0001d555", + "dot;": "\u02d9", + "doteq;": "\u2250", + "doteqdot;": "\u2251", + "dotminus;": "\u2238", + "dotplus;": "\u2214", + "dotsquare;": "\u22a1", + "doublebarwedge;": "\u2306", + "downarrow;": "\u2193", + "downdownarrows;": "\u21ca", + "downharpoonleft;": "\u21c3", + "downharpoonright;": "\u21c2", + "drbkarow;": "\u2910", + "drcorn;": "\u231f", + "drcrop;": "\u230c", + "dscr;": "\U0001d4b9", + "dscy;": "\u0455", + "dsol;": "\u29f6", + "dstrok;": "\u0111", + "dtdot;": "\u22f1", + "dtri;": "\u25bf", + "dtrif;": "\u25be", + "duarr;": "\u21f5", + "duhar;": "\u296f", + "dwangle;": "\u29a6", + "dzcy;": "\u045f", + "dzigrarr;": "\u27ff", + "eDDot;": "\u2a77", + "eDot;": "\u2251", + "eacute": "\xe9", + "eacute;": "\xe9", + "easter;": "\u2a6e", + "ecaron;": "\u011b", + "ecir;": "\u2256", + "ecirc": "\xea", + "ecirc;": "\xea", + "ecolon;": "\u2255", + "ecy;": "\u044d", + "edot;": "\u0117", + "ee;": "\u2147", + "efDot;": "\u2252", + "efr;": "\U0001d522", + "eg;": "\u2a9a", + "egrave": "\xe8", + "egrave;": "\xe8", + "egs;": "\u2a96", + "egsdot;": "\u2a98", + "el;": "\u2a99", + "elinters;": "\u23e7", + "ell;": "\u2113", + "els;": "\u2a95", + "elsdot;": "\u2a97", + "emacr;": "\u0113", + "empty;": "\u2205", + "emptyset;": "\u2205", + "emptyv;": "\u2205", + "emsp13;": "\u2004", + "emsp14;": "\u2005", + "emsp;": "\u2003", + "eng;": "\u014b", + "ensp;": "\u2002", + "eogon;": "\u0119", + "eopf;": "\U0001d556", + "epar;": "\u22d5", + "eparsl;": "\u29e3", + "eplus;": "\u2a71", + "epsi;": "\u03b5", + "epsilon;": "\u03b5", + "epsiv;": "\u03f5", + "eqcirc;": "\u2256", + "eqcolon;": "\u2255", + "eqsim;": "\u2242", + "eqslantgtr;": "\u2a96", + "eqslantless;": "\u2a95", + "equals;": "=", + "equest;": "\u225f", + "equiv;": "\u2261", + "equivDD;": "\u2a78", + "eqvparsl;": "\u29e5", + "erDot;": "\u2253", + "erarr;": "\u2971", + "escr;": "\u212f", + "esdot;": "\u2250", + "esim;": "\u2242", + "eta;": "\u03b7", + "eth": "\xf0", + "eth;": "\xf0", + "euml": "\xeb", + "euml;": "\xeb", + "euro;": "\u20ac", + "excl;": "!", + "exist;": "\u2203", + "expectation;": "\u2130", + "exponentiale;": "\u2147", + "fallingdotseq;": "\u2252", + "fcy;": "\u0444", + "female;": "\u2640", + "ffilig;": "\ufb03", + "fflig;": "\ufb00", + "ffllig;": "\ufb04", + "ffr;": "\U0001d523", + "filig;": "\ufb01", + "fjlig;": "fj", + "flat;": "\u266d", + "fllig;": "\ufb02", + "fltns;": "\u25b1", + "fnof;": "\u0192", + "fopf;": "\U0001d557", + "forall;": "\u2200", + "fork;": "\u22d4", + "forkv;": "\u2ad9", + "fpartint;": "\u2a0d", + "frac12": "\xbd", + "frac12;": "\xbd", + "frac13;": "\u2153", + "frac14": "\xbc", + "frac14;": "\xbc", + "frac15;": "\u2155", + "frac16;": "\u2159", + "frac18;": "\u215b", + "frac23;": "\u2154", + "frac25;": "\u2156", + "frac34": "\xbe", + "frac34;": "\xbe", + "frac35;": "\u2157", + "frac38;": "\u215c", + "frac45;": "\u2158", + "frac56;": "\u215a", + "frac58;": "\u215d", + "frac78;": "\u215e", + "frasl;": "\u2044", + "frown;": "\u2322", + "fscr;": "\U0001d4bb", + "gE;": "\u2267", + "gEl;": "\u2a8c", + "gacute;": "\u01f5", + "gamma;": "\u03b3", + "gammad;": "\u03dd", + "gap;": "\u2a86", + "gbreve;": "\u011f", + "gcirc;": "\u011d", + "gcy;": "\u0433", + "gdot;": "\u0121", + "ge;": "\u2265", + "gel;": "\u22db", + "geq;": "\u2265", + "geqq;": "\u2267", + "geqslant;": "\u2a7e", + "ges;": "\u2a7e", + "gescc;": "\u2aa9", + "gesdot;": "\u2a80", + "gesdoto;": "\u2a82", + "gesdotol;": "\u2a84", + "gesl;": "\u22db\ufe00", + "gesles;": "\u2a94", + "gfr;": "\U0001d524", + "gg;": "\u226b", + "ggg;": "\u22d9", + "gimel;": "\u2137", + "gjcy;": "\u0453", + "gl;": "\u2277", + "glE;": "\u2a92", + "gla;": "\u2aa5", + "glj;": "\u2aa4", + "gnE;": "\u2269", + "gnap;": "\u2a8a", + "gnapprox;": "\u2a8a", + "gne;": "\u2a88", + "gneq;": "\u2a88", + "gneqq;": "\u2269", + "gnsim;": "\u22e7", + "gopf;": "\U0001d558", + "grave;": "`", + "gscr;": "\u210a", + "gsim;": "\u2273", + "gsime;": "\u2a8e", + "gsiml;": "\u2a90", + "gt": ">", + "gt;": ">", + "gtcc;": "\u2aa7", + "gtcir;": "\u2a7a", + "gtdot;": "\u22d7", + "gtlPar;": "\u2995", + "gtquest;": "\u2a7c", + "gtrapprox;": "\u2a86", + "gtrarr;": "\u2978", + "gtrdot;": "\u22d7", + "gtreqless;": "\u22db", + "gtreqqless;": "\u2a8c", + "gtrless;": "\u2277", + "gtrsim;": "\u2273", + "gvertneqq;": "\u2269\ufe00", + "gvnE;": "\u2269\ufe00", + "hArr;": "\u21d4", + "hairsp;": "\u200a", + "half;": "\xbd", + "hamilt;": "\u210b", + "hardcy;": "\u044a", + "harr;": "\u2194", + "harrcir;": "\u2948", + "harrw;": "\u21ad", + "hbar;": "\u210f", + "hcirc;": "\u0125", + "hearts;": "\u2665", + "heartsuit;": "\u2665", + "hellip;": "\u2026", + "hercon;": "\u22b9", + "hfr;": "\U0001d525", + "hksearow;": "\u2925", + "hkswarow;": "\u2926", + "hoarr;": "\u21ff", + "homtht;": "\u223b", + "hookleftarrow;": "\u21a9", + "hookrightarrow;": "\u21aa", + "hopf;": "\U0001d559", + "horbar;": "\u2015", + "hscr;": "\U0001d4bd", + "hslash;": "\u210f", + "hstrok;": "\u0127", + "hybull;": "\u2043", + "hyphen;": "\u2010", + "iacute": "\xed", + "iacute;": "\xed", + "ic;": "\u2063", + "icirc": "\xee", + "icirc;": "\xee", + "icy;": "\u0438", + "iecy;": "\u0435", + "iexcl": "\xa1", + "iexcl;": "\xa1", + "iff;": "\u21d4", + "ifr;": "\U0001d526", + "igrave": "\xec", + "igrave;": "\xec", + "ii;": "\u2148", + "iiiint;": "\u2a0c", + "iiint;": "\u222d", + "iinfin;": "\u29dc", + "iiota;": "\u2129", + "ijlig;": "\u0133", + "imacr;": "\u012b", + "image;": "\u2111", + "imagline;": "\u2110", + "imagpart;": "\u2111", + "imath;": "\u0131", + "imof;": "\u22b7", + "imped;": "\u01b5", + "in;": "\u2208", + "incare;": "\u2105", + "infin;": "\u221e", + "infintie;": "\u29dd", + "inodot;": "\u0131", + "int;": "\u222b", + "intcal;": "\u22ba", + "integers;": "\u2124", + "intercal;": "\u22ba", + "intlarhk;": "\u2a17", + "intprod;": "\u2a3c", + "iocy;": "\u0451", + "iogon;": "\u012f", + "iopf;": "\U0001d55a", + "iota;": "\u03b9", + "iprod;": "\u2a3c", + "iquest": "\xbf", + "iquest;": "\xbf", + "iscr;": "\U0001d4be", + "isin;": "\u2208", + "isinE;": "\u22f9", + "isindot;": "\u22f5", + "isins;": "\u22f4", + "isinsv;": "\u22f3", + "isinv;": "\u2208", + "it;": "\u2062", + "itilde;": "\u0129", + "iukcy;": "\u0456", + "iuml": "\xef", + "iuml;": "\xef", + "jcirc;": "\u0135", + "jcy;": "\u0439", + "jfr;": "\U0001d527", + "jmath;": "\u0237", + "jopf;": "\U0001d55b", + "jscr;": "\U0001d4bf", + "jsercy;": "\u0458", + "jukcy;": "\u0454", + "kappa;": "\u03ba", + "kappav;": "\u03f0", + "kcedil;": "\u0137", + "kcy;": "\u043a", + "kfr;": "\U0001d528", + "kgreen;": "\u0138", + "khcy;": "\u0445", + "kjcy;": "\u045c", + "kopf;": "\U0001d55c", + "kscr;": "\U0001d4c0", + "lAarr;": "\u21da", + "lArr;": "\u21d0", + "lAtail;": "\u291b", + "lBarr;": "\u290e", + "lE;": "\u2266", + "lEg;": "\u2a8b", + "lHar;": "\u2962", + "lacute;": "\u013a", + "laemptyv;": "\u29b4", + "lagran;": "\u2112", + "lambda;": "\u03bb", + "lang;": "\u27e8", + "langd;": "\u2991", + "langle;": "\u27e8", + "lap;": "\u2a85", + "laquo": "\xab", + "laquo;": "\xab", + "larr;": "\u2190", + "larrb;": "\u21e4", + "larrbfs;": "\u291f", + "larrfs;": "\u291d", + "larrhk;": "\u21a9", + "larrlp;": "\u21ab", + "larrpl;": "\u2939", + "larrsim;": "\u2973", + "larrtl;": "\u21a2", + "lat;": "\u2aab", + "latail;": "\u2919", + "late;": "\u2aad", + "lates;": "\u2aad\ufe00", + "lbarr;": "\u290c", + "lbbrk;": "\u2772", + "lbrace;": "{", + "lbrack;": "[", + "lbrke;": "\u298b", + "lbrksld;": "\u298f", + "lbrkslu;": "\u298d", + "lcaron;": "\u013e", + "lcedil;": "\u013c", + "lceil;": "\u2308", + "lcub;": "{", + "lcy;": "\u043b", + "ldca;": "\u2936", + "ldquo;": "\u201c", + "ldquor;": "\u201e", + "ldrdhar;": "\u2967", + "ldrushar;": "\u294b", + "ldsh;": "\u21b2", + "le;": "\u2264", + "leftarrow;": "\u2190", + "leftarrowtail;": "\u21a2", + "leftharpoondown;": "\u21bd", + "leftharpoonup;": "\u21bc", + "leftleftarrows;": "\u21c7", + "leftrightarrow;": "\u2194", + "leftrightarrows;": "\u21c6", + "leftrightharpoons;": "\u21cb", + "leftrightsquigarrow;": "\u21ad", + "leftthreetimes;": "\u22cb", + "leg;": "\u22da", + "leq;": "\u2264", + "leqq;": "\u2266", + "leqslant;": "\u2a7d", + "les;": "\u2a7d", + "lescc;": "\u2aa8", + "lesdot;": "\u2a7f", + "lesdoto;": "\u2a81", + "lesdotor;": "\u2a83", + "lesg;": "\u22da\ufe00", + "lesges;": "\u2a93", + "lessapprox;": "\u2a85", + "lessdot;": "\u22d6", + "lesseqgtr;": "\u22da", + "lesseqqgtr;": "\u2a8b", + "lessgtr;": "\u2276", + "lesssim;": "\u2272", + "lfisht;": "\u297c", + "lfloor;": "\u230a", + "lfr;": "\U0001d529", + "lg;": "\u2276", + "lgE;": "\u2a91", + "lhard;": "\u21bd", + "lharu;": "\u21bc", + "lharul;": "\u296a", + "lhblk;": "\u2584", + "ljcy;": "\u0459", + "ll;": "\u226a", + "llarr;": "\u21c7", + "llcorner;": "\u231e", + "llhard;": "\u296b", + "lltri;": "\u25fa", + "lmidot;": "\u0140", + "lmoust;": "\u23b0", + "lmoustache;": "\u23b0", + "lnE;": "\u2268", + "lnap;": "\u2a89", + "lnapprox;": "\u2a89", + "lne;": "\u2a87", + "lneq;": "\u2a87", + "lneqq;": "\u2268", + "lnsim;": "\u22e6", + "loang;": "\u27ec", + "loarr;": "\u21fd", + "lobrk;": "\u27e6", + "longleftarrow;": "\u27f5", + "longleftrightarrow;": "\u27f7", + "longmapsto;": "\u27fc", + "longrightarrow;": "\u27f6", + "looparrowleft;": "\u21ab", + "looparrowright;": "\u21ac", + "lopar;": "\u2985", + "lopf;": "\U0001d55d", + "loplus;": "\u2a2d", + "lotimes;": "\u2a34", + "lowast;": "\u2217", + "lowbar;": "_", + "loz;": "\u25ca", + "lozenge;": "\u25ca", + "lozf;": "\u29eb", + "lpar;": "(", + "lparlt;": "\u2993", + "lrarr;": "\u21c6", + "lrcorner;": "\u231f", + "lrhar;": "\u21cb", + "lrhard;": "\u296d", + "lrm;": "\u200e", + "lrtri;": "\u22bf", + "lsaquo;": "\u2039", + "lscr;": "\U0001d4c1", + "lsh;": "\u21b0", + "lsim;": "\u2272", + "lsime;": "\u2a8d", + "lsimg;": "\u2a8f", + "lsqb;": "[", + "lsquo;": "\u2018", + "lsquor;": "\u201a", + "lstrok;": "\u0142", + "lt": "<", + "lt;": "<", + "ltcc;": "\u2aa6", + "ltcir;": "\u2a79", + "ltdot;": "\u22d6", + "lthree;": "\u22cb", + "ltimes;": "\u22c9", + "ltlarr;": "\u2976", + "ltquest;": "\u2a7b", + "ltrPar;": "\u2996", + "ltri;": "\u25c3", + "ltrie;": "\u22b4", + "ltrif;": "\u25c2", + "lurdshar;": "\u294a", + "luruhar;": "\u2966", + "lvertneqq;": "\u2268\ufe00", + "lvnE;": "\u2268\ufe00", + "mDDot;": "\u223a", + "macr": "\xaf", + "macr;": "\xaf", + "male;": "\u2642", + "malt;": "\u2720", + "maltese;": "\u2720", + "map;": "\u21a6", + "mapsto;": "\u21a6", + "mapstodown;": "\u21a7", + "mapstoleft;": "\u21a4", + "mapstoup;": "\u21a5", + "marker;": "\u25ae", + "mcomma;": "\u2a29", + "mcy;": "\u043c", + "mdash;": "\u2014", + "measuredangle;": "\u2221", + "mfr;": "\U0001d52a", + "mho;": "\u2127", + "micro": "\xb5", + "micro;": "\xb5", + "mid;": "\u2223", + "midast;": "*", + "midcir;": "\u2af0", + "middot": "\xb7", + "middot;": "\xb7", + "minus;": "\u2212", + "minusb;": "\u229f", + "minusd;": "\u2238", + "minusdu;": "\u2a2a", + "mlcp;": "\u2adb", + "mldr;": "\u2026", + "mnplus;": "\u2213", + "models;": "\u22a7", + "mopf;": "\U0001d55e", + "mp;": "\u2213", + "mscr;": "\U0001d4c2", + "mstpos;": "\u223e", + "mu;": "\u03bc", + "multimap;": "\u22b8", + "mumap;": "\u22b8", + "nGg;": "\u22d9\u0338", + "nGt;": "\u226b\u20d2", + "nGtv;": "\u226b\u0338", + "nLeftarrow;": "\u21cd", + "nLeftrightarrow;": "\u21ce", + "nLl;": "\u22d8\u0338", + "nLt;": "\u226a\u20d2", + "nLtv;": "\u226a\u0338", + "nRightarrow;": "\u21cf", + "nVDash;": "\u22af", + "nVdash;": "\u22ae", + "nabla;": "\u2207", + "nacute;": "\u0144", + "nang;": "\u2220\u20d2", + "nap;": "\u2249", + "napE;": "\u2a70\u0338", + "napid;": "\u224b\u0338", + "napos;": "\u0149", + "napprox;": "\u2249", + "natur;": "\u266e", + "natural;": "\u266e", + "naturals;": "\u2115", + "nbsp": "\xa0", + "nbsp;": "\xa0", + "nbump;": "\u224e\u0338", + "nbumpe;": "\u224f\u0338", + "ncap;": "\u2a43", + "ncaron;": "\u0148", + "ncedil;": "\u0146", + "ncong;": "\u2247", + "ncongdot;": "\u2a6d\u0338", + "ncup;": "\u2a42", + "ncy;": "\u043d", + "ndash;": "\u2013", + "ne;": "\u2260", + "neArr;": "\u21d7", + "nearhk;": "\u2924", + "nearr;": "\u2197", + "nearrow;": "\u2197", + "nedot;": "\u2250\u0338", + "nequiv;": "\u2262", + "nesear;": "\u2928", + "nesim;": "\u2242\u0338", + "nexist;": "\u2204", + "nexists;": "\u2204", + "nfr;": "\U0001d52b", + "ngE;": "\u2267\u0338", + "nge;": "\u2271", + "ngeq;": "\u2271", + "ngeqq;": "\u2267\u0338", + "ngeqslant;": "\u2a7e\u0338", + "nges;": "\u2a7e\u0338", + "ngsim;": "\u2275", + "ngt;": "\u226f", + "ngtr;": "\u226f", + "nhArr;": "\u21ce", + "nharr;": "\u21ae", + "nhpar;": "\u2af2", + "ni;": "\u220b", + "nis;": "\u22fc", + "nisd;": "\u22fa", + "niv;": "\u220b", + "njcy;": "\u045a", + "nlArr;": "\u21cd", + "nlE;": "\u2266\u0338", + "nlarr;": "\u219a", + "nldr;": "\u2025", + "nle;": "\u2270", + "nleftarrow;": "\u219a", + "nleftrightarrow;": "\u21ae", + "nleq;": "\u2270", + "nleqq;": "\u2266\u0338", + "nleqslant;": "\u2a7d\u0338", + "nles;": "\u2a7d\u0338", + "nless;": "\u226e", + "nlsim;": "\u2274", + "nlt;": "\u226e", + "nltri;": "\u22ea", + "nltrie;": "\u22ec", + "nmid;": "\u2224", + "nopf;": "\U0001d55f", + "not": "\xac", + "not;": "\xac", + "notin;": "\u2209", + "notinE;": "\u22f9\u0338", + "notindot;": "\u22f5\u0338", + "notinva;": "\u2209", + "notinvb;": "\u22f7", + "notinvc;": "\u22f6", + "notni;": "\u220c", + "notniva;": "\u220c", + "notnivb;": "\u22fe", + "notnivc;": "\u22fd", + "npar;": "\u2226", + "nparallel;": "\u2226", + "nparsl;": "\u2afd\u20e5", + "npart;": "\u2202\u0338", + "npolint;": "\u2a14", + "npr;": "\u2280", + "nprcue;": "\u22e0", + "npre;": "\u2aaf\u0338", + "nprec;": "\u2280", + "npreceq;": "\u2aaf\u0338", + "nrArr;": "\u21cf", + "nrarr;": "\u219b", + "nrarrc;": "\u2933\u0338", + "nrarrw;": "\u219d\u0338", + "nrightarrow;": "\u219b", + "nrtri;": "\u22eb", + "nrtrie;": "\u22ed", + "nsc;": "\u2281", + "nsccue;": "\u22e1", + "nsce;": "\u2ab0\u0338", + "nscr;": "\U0001d4c3", + "nshortmid;": "\u2224", + "nshortparallel;": "\u2226", + "nsim;": "\u2241", + "nsime;": "\u2244", + "nsimeq;": "\u2244", + "nsmid;": "\u2224", + "nspar;": "\u2226", + "nsqsube;": "\u22e2", + "nsqsupe;": "\u22e3", + "nsub;": "\u2284", + "nsubE;": "\u2ac5\u0338", + "nsube;": "\u2288", + "nsubset;": "\u2282\u20d2", + "nsubseteq;": "\u2288", + "nsubseteqq;": "\u2ac5\u0338", + "nsucc;": "\u2281", + "nsucceq;": "\u2ab0\u0338", + "nsup;": "\u2285", + "nsupE;": "\u2ac6\u0338", + "nsupe;": "\u2289", + "nsupset;": "\u2283\u20d2", + "nsupseteq;": "\u2289", + "nsupseteqq;": "\u2ac6\u0338", + "ntgl;": "\u2279", + "ntilde": "\xf1", + "ntilde;": "\xf1", + "ntlg;": "\u2278", + "ntriangleleft;": "\u22ea", + "ntrianglelefteq;": "\u22ec", + "ntriangleright;": "\u22eb", + "ntrianglerighteq;": "\u22ed", + "nu;": "\u03bd", + "num;": "#", + "numero;": "\u2116", + "numsp;": "\u2007", + "nvDash;": "\u22ad", + "nvHarr;": "\u2904", + "nvap;": "\u224d\u20d2", + "nvdash;": "\u22ac", + "nvge;": "\u2265\u20d2", + "nvgt;": ">\u20d2", + "nvinfin;": "\u29de", + "nvlArr;": "\u2902", + "nvle;": "\u2264\u20d2", + "nvlt;": "<\u20d2", + "nvltrie;": "\u22b4\u20d2", + "nvrArr;": "\u2903", + "nvrtrie;": "\u22b5\u20d2", + "nvsim;": "\u223c\u20d2", + "nwArr;": "\u21d6", + "nwarhk;": "\u2923", + "nwarr;": "\u2196", + "nwarrow;": "\u2196", + "nwnear;": "\u2927", + "oS;": "\u24c8", + "oacute": "\xf3", + "oacute;": "\xf3", + "oast;": "\u229b", + "ocir;": "\u229a", + "ocirc": "\xf4", + "ocirc;": "\xf4", + "ocy;": "\u043e", + "odash;": "\u229d", + "odblac;": "\u0151", + "odiv;": "\u2a38", + "odot;": "\u2299", + "odsold;": "\u29bc", + "oelig;": "\u0153", + "ofcir;": "\u29bf", + "ofr;": "\U0001d52c", + "ogon;": "\u02db", + "ograve": "\xf2", + "ograve;": "\xf2", + "ogt;": "\u29c1", + "ohbar;": "\u29b5", + "ohm;": "\u03a9", + "oint;": "\u222e", + "olarr;": "\u21ba", + "olcir;": "\u29be", + "olcross;": "\u29bb", + "oline;": "\u203e", + "olt;": "\u29c0", + "omacr;": "\u014d", + "omega;": "\u03c9", + "omicron;": "\u03bf", + "omid;": "\u29b6", + "ominus;": "\u2296", + "oopf;": "\U0001d560", + "opar;": "\u29b7", + "operp;": "\u29b9", + "oplus;": "\u2295", + "or;": "\u2228", + "orarr;": "\u21bb", + "ord;": "\u2a5d", + "order;": "\u2134", + "orderof;": "\u2134", + "ordf": "\xaa", + "ordf;": "\xaa", + "ordm": "\xba", + "ordm;": "\xba", + "origof;": "\u22b6", + "oror;": "\u2a56", + "orslope;": "\u2a57", + "orv;": "\u2a5b", + "oscr;": "\u2134", + "oslash": "\xf8", + "oslash;": "\xf8", + "osol;": "\u2298", + "otilde": "\xf5", + "otilde;": "\xf5", + "otimes;": "\u2297", + "otimesas;": "\u2a36", + "ouml": "\xf6", + "ouml;": "\xf6", + "ovbar;": "\u233d", + "par;": "\u2225", + "para": "\xb6", + "para;": "\xb6", + "parallel;": "\u2225", + "parsim;": "\u2af3", + "parsl;": "\u2afd", + "part;": "\u2202", + "pcy;": "\u043f", + "percnt;": "%", + "period;": ".", + "permil;": "\u2030", + "perp;": "\u22a5", + "pertenk;": "\u2031", + "pfr;": "\U0001d52d", + "phi;": "\u03c6", + "phiv;": "\u03d5", + "phmmat;": "\u2133", + "phone;": "\u260e", + "pi;": "\u03c0", + "pitchfork;": "\u22d4", + "piv;": "\u03d6", + "planck;": "\u210f", + "planckh;": "\u210e", + "plankv;": "\u210f", + "plus;": "+", + "plusacir;": "\u2a23", + "plusb;": "\u229e", + "pluscir;": "\u2a22", + "plusdo;": "\u2214", + "plusdu;": "\u2a25", + "pluse;": "\u2a72", + "plusmn": "\xb1", + "plusmn;": "\xb1", + "plussim;": "\u2a26", + "plustwo;": "\u2a27", + "pm;": "\xb1", + "pointint;": "\u2a15", + "popf;": "\U0001d561", + "pound": "\xa3", + "pound;": "\xa3", + "pr;": "\u227a", + "prE;": "\u2ab3", + "prap;": "\u2ab7", + "prcue;": "\u227c", + "pre;": "\u2aaf", + "prec;": "\u227a", + "precapprox;": "\u2ab7", + "preccurlyeq;": "\u227c", + "preceq;": "\u2aaf", + "precnapprox;": "\u2ab9", + "precneqq;": "\u2ab5", + "precnsim;": "\u22e8", + "precsim;": "\u227e", + "prime;": "\u2032", + "primes;": "\u2119", + "prnE;": "\u2ab5", + "prnap;": "\u2ab9", + "prnsim;": "\u22e8", + "prod;": "\u220f", + "profalar;": "\u232e", + "profline;": "\u2312", + "profsurf;": "\u2313", + "prop;": "\u221d", + "propto;": "\u221d", + "prsim;": "\u227e", + "prurel;": "\u22b0", + "pscr;": "\U0001d4c5", + "psi;": "\u03c8", + "puncsp;": "\u2008", + "qfr;": "\U0001d52e", + "qint;": "\u2a0c", + "qopf;": "\U0001d562", + "qprime;": "\u2057", + "qscr;": "\U0001d4c6", + "quaternions;": "\u210d", + "quatint;": "\u2a16", + "quest;": "?", + "questeq;": "\u225f", + "quot": "\"", + "quot;": "\"", + "rAarr;": "\u21db", + "rArr;": "\u21d2", + "rAtail;": "\u291c", + "rBarr;": "\u290f", + "rHar;": "\u2964", + "race;": "\u223d\u0331", + "racute;": "\u0155", + "radic;": "\u221a", + "raemptyv;": "\u29b3", + "rang;": "\u27e9", + "rangd;": "\u2992", + "range;": "\u29a5", + "rangle;": "\u27e9", + "raquo": "\xbb", + "raquo;": "\xbb", + "rarr;": "\u2192", + "rarrap;": "\u2975", + "rarrb;": "\u21e5", + "rarrbfs;": "\u2920", + "rarrc;": "\u2933", + "rarrfs;": "\u291e", + "rarrhk;": "\u21aa", + "rarrlp;": "\u21ac", + "rarrpl;": "\u2945", + "rarrsim;": "\u2974", + "rarrtl;": "\u21a3", + "rarrw;": "\u219d", + "ratail;": "\u291a", + "ratio;": "\u2236", + "rationals;": "\u211a", + "rbarr;": "\u290d", + "rbbrk;": "\u2773", + "rbrace;": "}", + "rbrack;": "]", + "rbrke;": "\u298c", + "rbrksld;": "\u298e", + "rbrkslu;": "\u2990", + "rcaron;": "\u0159", + "rcedil;": "\u0157", + "rceil;": "\u2309", + "rcub;": "}", + "rcy;": "\u0440", + "rdca;": "\u2937", + "rdldhar;": "\u2969", + "rdquo;": "\u201d", + "rdquor;": "\u201d", + "rdsh;": "\u21b3", + "real;": "\u211c", + "realine;": "\u211b", + "realpart;": "\u211c", + "reals;": "\u211d", + "rect;": "\u25ad", + "reg": "\xae", + "reg;": "\xae", + "rfisht;": "\u297d", + "rfloor;": "\u230b", + "rfr;": "\U0001d52f", + "rhard;": "\u21c1", + "rharu;": "\u21c0", + "rharul;": "\u296c", + "rho;": "\u03c1", + "rhov;": "\u03f1", + "rightarrow;": "\u2192", + "rightarrowtail;": "\u21a3", + "rightharpoondown;": "\u21c1", + "rightharpoonup;": "\u21c0", + "rightleftarrows;": "\u21c4", + "rightleftharpoons;": "\u21cc", + "rightrightarrows;": "\u21c9", + "rightsquigarrow;": "\u219d", + "rightthreetimes;": "\u22cc", + "ring;": "\u02da", + "risingdotseq;": "\u2253", + "rlarr;": "\u21c4", + "rlhar;": "\u21cc", + "rlm;": "\u200f", + "rmoust;": "\u23b1", + "rmoustache;": "\u23b1", + "rnmid;": "\u2aee", + "roang;": "\u27ed", + "roarr;": "\u21fe", + "robrk;": "\u27e7", + "ropar;": "\u2986", + "ropf;": "\U0001d563", + "roplus;": "\u2a2e", + "rotimes;": "\u2a35", + "rpar;": ")", + "rpargt;": "\u2994", + "rppolint;": "\u2a12", + "rrarr;": "\u21c9", + "rsaquo;": "\u203a", + "rscr;": "\U0001d4c7", + "rsh;": "\u21b1", + "rsqb;": "]", + "rsquo;": "\u2019", + "rsquor;": "\u2019", + "rthree;": "\u22cc", + "rtimes;": "\u22ca", + "rtri;": "\u25b9", + "rtrie;": "\u22b5", + "rtrif;": "\u25b8", + "rtriltri;": "\u29ce", + "ruluhar;": "\u2968", + "rx;": "\u211e", + "sacute;": "\u015b", + "sbquo;": "\u201a", + "sc;": "\u227b", + "scE;": "\u2ab4", + "scap;": "\u2ab8", + "scaron;": "\u0161", + "sccue;": "\u227d", + "sce;": "\u2ab0", + "scedil;": "\u015f", + "scirc;": "\u015d", + "scnE;": "\u2ab6", + "scnap;": "\u2aba", + "scnsim;": "\u22e9", + "scpolint;": "\u2a13", + "scsim;": "\u227f", + "scy;": "\u0441", + "sdot;": "\u22c5", + "sdotb;": "\u22a1", + "sdote;": "\u2a66", + "seArr;": "\u21d8", + "searhk;": "\u2925", + "searr;": "\u2198", + "searrow;": "\u2198", + "sect": "\xa7", + "sect;": "\xa7", + "semi;": ";", + "seswar;": "\u2929", + "setminus;": "\u2216", + "setmn;": "\u2216", + "sext;": "\u2736", + "sfr;": "\U0001d530", + "sfrown;": "\u2322", + "sharp;": "\u266f", + "shchcy;": "\u0449", + "shcy;": "\u0448", + "shortmid;": "\u2223", + "shortparallel;": "\u2225", + "shy": "\xad", + "shy;": "\xad", + "sigma;": "\u03c3", + "sigmaf;": "\u03c2", + "sigmav;": "\u03c2", + "sim;": "\u223c", + "simdot;": "\u2a6a", + "sime;": "\u2243", + "simeq;": "\u2243", + "simg;": "\u2a9e", + "simgE;": "\u2aa0", + "siml;": "\u2a9d", + "simlE;": "\u2a9f", + "simne;": "\u2246", + "simplus;": "\u2a24", + "simrarr;": "\u2972", + "slarr;": "\u2190", + "smallsetminus;": "\u2216", + "smashp;": "\u2a33", + "smeparsl;": "\u29e4", + "smid;": "\u2223", + "smile;": "\u2323", + "smt;": "\u2aaa", + "smte;": "\u2aac", + "smtes;": "\u2aac\ufe00", + "softcy;": "\u044c", + "sol;": "/", + "solb;": "\u29c4", + "solbar;": "\u233f", + "sopf;": "\U0001d564", + "spades;": "\u2660", + "spadesuit;": "\u2660", + "spar;": "\u2225", + "sqcap;": "\u2293", + "sqcaps;": "\u2293\ufe00", + "sqcup;": "\u2294", + "sqcups;": "\u2294\ufe00", + "sqsub;": "\u228f", + "sqsube;": "\u2291", + "sqsubset;": "\u228f", + "sqsubseteq;": "\u2291", + "sqsup;": "\u2290", + "sqsupe;": "\u2292", + "sqsupset;": "\u2290", + "sqsupseteq;": "\u2292", + "squ;": "\u25a1", + "square;": "\u25a1", + "squarf;": "\u25aa", + "squf;": "\u25aa", + "srarr;": "\u2192", + "sscr;": "\U0001d4c8", + "ssetmn;": "\u2216", + "ssmile;": "\u2323", + "sstarf;": "\u22c6", + "star;": "\u2606", + "starf;": "\u2605", + "straightepsilon;": "\u03f5", + "straightphi;": "\u03d5", + "strns;": "\xaf", + "sub;": "\u2282", + "subE;": "\u2ac5", + "subdot;": "\u2abd", + "sube;": "\u2286", + "subedot;": "\u2ac3", + "submult;": "\u2ac1", + "subnE;": "\u2acb", + "subne;": "\u228a", + "subplus;": "\u2abf", + "subrarr;": "\u2979", + "subset;": "\u2282", + "subseteq;": "\u2286", + "subseteqq;": "\u2ac5", + "subsetneq;": "\u228a", + "subsetneqq;": "\u2acb", + "subsim;": "\u2ac7", + "subsub;": "\u2ad5", + "subsup;": "\u2ad3", + "succ;": "\u227b", + "succapprox;": "\u2ab8", + "succcurlyeq;": "\u227d", + "succeq;": "\u2ab0", + "succnapprox;": "\u2aba", + "succneqq;": "\u2ab6", + "succnsim;": "\u22e9", + "succsim;": "\u227f", + "sum;": "\u2211", + "sung;": "\u266a", + "sup1": "\xb9", + "sup1;": "\xb9", + "sup2": "\xb2", + "sup2;": "\xb2", + "sup3": "\xb3", + "sup3;": "\xb3", + "sup;": "\u2283", + "supE;": "\u2ac6", + "supdot;": "\u2abe", + "supdsub;": "\u2ad8", + "supe;": "\u2287", + "supedot;": "\u2ac4", + "suphsol;": "\u27c9", + "suphsub;": "\u2ad7", + "suplarr;": "\u297b", + "supmult;": "\u2ac2", + "supnE;": "\u2acc", + "supne;": "\u228b", + "supplus;": "\u2ac0", + "supset;": "\u2283", + "supseteq;": "\u2287", + "supseteqq;": "\u2ac6", + "supsetneq;": "\u228b", + "supsetneqq;": "\u2acc", + "supsim;": "\u2ac8", + "supsub;": "\u2ad4", + "supsup;": "\u2ad6", + "swArr;": "\u21d9", + "swarhk;": "\u2926", + "swarr;": "\u2199", + "swarrow;": "\u2199", + "swnwar;": "\u292a", + "szlig": "\xdf", + "szlig;": "\xdf", + "target;": "\u2316", + "tau;": "\u03c4", + "tbrk;": "\u23b4", + "tcaron;": "\u0165", + "tcedil;": "\u0163", + "tcy;": "\u0442", + "tdot;": "\u20db", + "telrec;": "\u2315", + "tfr;": "\U0001d531", + "there4;": "\u2234", + "therefore;": "\u2234", + "theta;": "\u03b8", + "thetasym;": "\u03d1", + "thetav;": "\u03d1", + "thickapprox;": "\u2248", + "thicksim;": "\u223c", + "thinsp;": "\u2009", + "thkap;": "\u2248", + "thksim;": "\u223c", + "thorn": "\xfe", + "thorn;": "\xfe", + "tilde;": "\u02dc", + "times": "\xd7", + "times;": "\xd7", + "timesb;": "\u22a0", + "timesbar;": "\u2a31", + "timesd;": "\u2a30", + "tint;": "\u222d", + "toea;": "\u2928", + "top;": "\u22a4", + "topbot;": "\u2336", + "topcir;": "\u2af1", + "topf;": "\U0001d565", + "topfork;": "\u2ada", + "tosa;": "\u2929", + "tprime;": "\u2034", + "trade;": "\u2122", + "triangle;": "\u25b5", + "triangledown;": "\u25bf", + "triangleleft;": "\u25c3", + "trianglelefteq;": "\u22b4", + "triangleq;": "\u225c", + "triangleright;": "\u25b9", + "trianglerighteq;": "\u22b5", + "tridot;": "\u25ec", + "trie;": "\u225c", + "triminus;": "\u2a3a", + "triplus;": "\u2a39", + "trisb;": "\u29cd", + "tritime;": "\u2a3b", + "trpezium;": "\u23e2", + "tscr;": "\U0001d4c9", + "tscy;": "\u0446", + "tshcy;": "\u045b", + "tstrok;": "\u0167", + "twixt;": "\u226c", + "twoheadleftarrow;": "\u219e", + "twoheadrightarrow;": "\u21a0", + "uArr;": "\u21d1", + "uHar;": "\u2963", + "uacute": "\xfa", + "uacute;": "\xfa", + "uarr;": "\u2191", + "ubrcy;": "\u045e", + "ubreve;": "\u016d", + "ucirc": "\xfb", + "ucirc;": "\xfb", + "ucy;": "\u0443", + "udarr;": "\u21c5", + "udblac;": "\u0171", + "udhar;": "\u296e", + "ufisht;": "\u297e", + "ufr;": "\U0001d532", + "ugrave": "\xf9", + "ugrave;": "\xf9", + "uharl;": "\u21bf", + "uharr;": "\u21be", + "uhblk;": "\u2580", + "ulcorn;": "\u231c", + "ulcorner;": "\u231c", + "ulcrop;": "\u230f", + "ultri;": "\u25f8", + "umacr;": "\u016b", + "uml": "\xa8", + "uml;": "\xa8", + "uogon;": "\u0173", + "uopf;": "\U0001d566", + "uparrow;": "\u2191", + "updownarrow;": "\u2195", + "upharpoonleft;": "\u21bf", + "upharpoonright;": "\u21be", + "uplus;": "\u228e", + "upsi;": "\u03c5", + "upsih;": "\u03d2", + "upsilon;": "\u03c5", + "upuparrows;": "\u21c8", + "urcorn;": "\u231d", + "urcorner;": "\u231d", + "urcrop;": "\u230e", + "uring;": "\u016f", + "urtri;": "\u25f9", + "uscr;": "\U0001d4ca", + "utdot;": "\u22f0", + "utilde;": "\u0169", + "utri;": "\u25b5", + "utrif;": "\u25b4", + "uuarr;": "\u21c8", + "uuml": "\xfc", + "uuml;": "\xfc", + "uwangle;": "\u29a7", + "vArr;": "\u21d5", + "vBar;": "\u2ae8", + "vBarv;": "\u2ae9", + "vDash;": "\u22a8", + "vangrt;": "\u299c", + "varepsilon;": "\u03f5", + "varkappa;": "\u03f0", + "varnothing;": "\u2205", + "varphi;": "\u03d5", + "varpi;": "\u03d6", + "varpropto;": "\u221d", + "varr;": "\u2195", + "varrho;": "\u03f1", + "varsigma;": "\u03c2", + "varsubsetneq;": "\u228a\ufe00", + "varsubsetneqq;": "\u2acb\ufe00", + "varsupsetneq;": "\u228b\ufe00", + "varsupsetneqq;": "\u2acc\ufe00", + "vartheta;": "\u03d1", + "vartriangleleft;": "\u22b2", + "vartriangleright;": "\u22b3", + "vcy;": "\u0432", + "vdash;": "\u22a2", + "vee;": "\u2228", + "veebar;": "\u22bb", + "veeeq;": "\u225a", + "vellip;": "\u22ee", + "verbar;": "|", + "vert;": "|", + "vfr;": "\U0001d533", + "vltri;": "\u22b2", + "vnsub;": "\u2282\u20d2", + "vnsup;": "\u2283\u20d2", + "vopf;": "\U0001d567", + "vprop;": "\u221d", + "vrtri;": "\u22b3", + "vscr;": "\U0001d4cb", + "vsubnE;": "\u2acb\ufe00", + "vsubne;": "\u228a\ufe00", + "vsupnE;": "\u2acc\ufe00", + "vsupne;": "\u228b\ufe00", + "vzigzag;": "\u299a", + "wcirc;": "\u0175", + "wedbar;": "\u2a5f", + "wedge;": "\u2227", + "wedgeq;": "\u2259", + "weierp;": "\u2118", + "wfr;": "\U0001d534", + "wopf;": "\U0001d568", + "wp;": "\u2118", + "wr;": "\u2240", + "wreath;": "\u2240", + "wscr;": "\U0001d4cc", + "xcap;": "\u22c2", + "xcirc;": "\u25ef", + "xcup;": "\u22c3", + "xdtri;": "\u25bd", + "xfr;": "\U0001d535", + "xhArr;": "\u27fa", + "xharr;": "\u27f7", + "xi;": "\u03be", + "xlArr;": "\u27f8", + "xlarr;": "\u27f5", + "xmap;": "\u27fc", + "xnis;": "\u22fb", + "xodot;": "\u2a00", + "xopf;": "\U0001d569", + "xoplus;": "\u2a01", + "xotime;": "\u2a02", + "xrArr;": "\u27f9", + "xrarr;": "\u27f6", + "xscr;": "\U0001d4cd", + "xsqcup;": "\u2a06", + "xuplus;": "\u2a04", + "xutri;": "\u25b3", + "xvee;": "\u22c1", + "xwedge;": "\u22c0", + "yacute": "\xfd", + "yacute;": "\xfd", + "yacy;": "\u044f", + "ycirc;": "\u0177", + "ycy;": "\u044b", + "yen": "\xa5", + "yen;": "\xa5", + "yfr;": "\U0001d536", + "yicy;": "\u0457", + "yopf;": "\U0001d56a", + "yscr;": "\U0001d4ce", + "yucy;": "\u044e", + "yuml": "\xff", + "yuml;": "\xff", + "zacute;": "\u017a", + "zcaron;": "\u017e", + "zcy;": "\u0437", + "zdot;": "\u017c", + "zeetrf;": "\u2128", + "zeta;": "\u03b6", + "zfr;": "\U0001d537", + "zhcy;": "\u0436", + "zigrarr;": "\u21dd", + "zopf;": "\U0001d56b", + "zscr;": "\U0001d4cf", + "zwj;": "\u200d", + "zwnj;": "\u200c", } replacementCharacters = { - 0x0:u"\uFFFD", - 0x0d:u"\u000A", - 0x80:u"\u20AC", - 0x81:u"\u0081", - 0x81:u"\u0081", - 0x82:u"\u201A", - 0x83:u"\u0192", - 0x84:u"\u201E", - 0x85:u"\u2026", - 0x86:u"\u2020", - 0x87:u"\u2021", - 0x88:u"\u02C6", - 0x89:u"\u2030", - 0x8A:u"\u0160", - 0x8B:u"\u2039", - 0x8C:u"\u0152", - 0x8D:u"\u008D", - 0x8E:u"\u017D", - 0x8F:u"\u008F", - 0x90:u"\u0090", - 0x91:u"\u2018", - 0x92:u"\u2019", - 0x93:u"\u201C", - 0x94:u"\u201D", - 0x95:u"\u2022", - 0x96:u"\u2013", - 0x97:u"\u2014", - 0x98:u"\u02DC", - 0x99:u"\u2122", - 0x9A:u"\u0161", - 0x9B:u"\u203A", - 0x9C:u"\u0153", - 0x9D:u"\u009D", - 0x9E:u"\u017E", - 0x9F:u"\u0178", + 0x0: "\uFFFD", + 0x0d: "\u000D", + 0x80: "\u20AC", + 0x81: "\u0081", + 0x81: "\u0081", + 0x82: "\u201A", + 0x83: "\u0192", + 0x84: "\u201E", + 0x85: "\u2026", + 0x86: "\u2020", + 0x87: "\u2021", + 0x88: "\u02C6", + 0x89: "\u2030", + 0x8A: "\u0160", + 0x8B: "\u2039", + 0x8C: "\u0152", + 0x8D: "\u008D", + 0x8E: "\u017D", + 0x8F: "\u008F", + 0x90: "\u0090", + 0x91: "\u2018", + 0x92: "\u2019", + 0x93: "\u201C", + 0x94: "\u201D", + 0x95: "\u2022", + 0x96: "\u2013", + 0x97: "\u2014", + 0x98: "\u02DC", + 0x99: "\u2122", + 0x9A: "\u0161", + 0x9B: "\u203A", + 0x9C: "\u0153", + 0x9D: "\u009D", + 0x9E: "\u017E", + 0x9F: "\u0178", } encodings = { @@ -1145,25 +3078,27 @@ encodings = { 'x-x-big5': 'big5'} tokenTypes = { - "Doctype":0, - "Characters":1, - "SpaceCharacters":2, - "StartTag":3, - "EndTag":4, - "EmptyTag":5, - "Comment":6, - "ParseError":7 + "Doctype": 0, + "Characters": 1, + "SpaceCharacters": 2, + "StartTag": 3, + "EndTag": 4, + "EmptyTag": 5, + "Comment": 6, + "ParseError": 7 } -tagTokenTypes = frozenset((tokenTypes["StartTag"], tokenTypes["EndTag"], +tagTokenTypes = frozenset((tokenTypes["StartTag"], tokenTypes["EndTag"], tokenTypes["EmptyTag"])) -prefixes = dict([(v,k) for k,v in namespaces.iteritems()]) +prefixes = dict([(v, k) for k, v in namespaces.items()]) prefixes["http://www.w3.org/1998/Math/MathML"] = "math" + class DataLossWarning(UserWarning): pass + class ReparseException(Exception): pass diff --git a/src/html5lib/filters/_base.py b/src/html5lib/filters/_base.py index bca94ada40..c7dbaed0fa 100644 --- a/src/html5lib/filters/_base.py +++ b/src/html5lib/filters/_base.py @@ -1,3 +1,5 @@ +from __future__ import absolute_import, division, unicode_literals + class Filter(object): def __init__(self, source): diff --git a/src/html5lib/filters/alphabeticalattributes.py b/src/html5lib/filters/alphabeticalattributes.py new file mode 100644 index 0000000000..fed6996c1d --- /dev/null +++ b/src/html5lib/filters/alphabeticalattributes.py @@ -0,0 +1,20 @@ +from __future__ import absolute_import, division, unicode_literals + +from . import _base + +try: + from collections import OrderedDict +except ImportError: + from ordereddict import OrderedDict + + +class Filter(_base.Filter): + def __iter__(self): + for token in _base.Filter.__iter__(self): + if token["type"] in ("StartTag", "EmptyTag"): + attrs = OrderedDict() + for name, value in sorted(token["data"].items(), + key=lambda x: x[0]): + attrs[name] = value + token["data"] = attrs + yield token diff --git a/src/html5lib/filters/formfiller.py b/src/html5lib/filters/formfiller.py deleted file mode 100644 index 940017149b..0000000000 --- a/src/html5lib/filters/formfiller.py +++ /dev/null @@ -1,127 +0,0 @@ -# -# The goal is to finally have a form filler where you pass data for -# each form, using the algorithm for "Seeding a form with initial values" -# See http://www.whatwg.org/specs/web-forms/current-work/#seeding -# - -import _base - -from html5lib.constants import spaceCharacters -spaceCharacters = u"".join(spaceCharacters) - -class SimpleFilter(_base.Filter): - def __init__(self, source, fieldStorage): - _base.Filter.__init__(self, source) - self.fieldStorage = fieldStorage - - def __iter__(self): - field_indices = {} - state = None - field_name = None - for token in _base.Filter.__iter__(self): - type = token["type"] - if type in ("StartTag", "EmptyTag"): - name = token["name"].lower() - if name == "input": - field_name = None - field_type = None - input_value_index = -1 - input_checked_index = -1 - for i,(n,v) in enumerate(token["data"]): - n = n.lower() - if n == u"name": - field_name = v.strip(spaceCharacters) - elif n == u"type": - field_type = v.strip(spaceCharacters) - elif n == u"checked": - input_checked_index = i - elif n == u"value": - input_value_index = i - - value_list = self.fieldStorage.getlist(field_name) - field_index = field_indices.setdefault(field_name, 0) - if field_index < len(value_list): - value = value_list[field_index] - else: - value = "" - - if field_type in (u"checkbox", u"radio"): - if value_list: - if token["data"][input_value_index][1] == value: - if input_checked_index < 0: - token["data"].append((u"checked", u"")) - field_indices[field_name] = field_index + 1 - elif input_checked_index >= 0: - del token["data"][input_checked_index] - - elif field_type not in (u"button", u"submit", u"reset"): - if input_value_index >= 0: - token["data"][input_value_index] = (u"value", value) - else: - token["data"].append((u"value", value)) - field_indices[field_name] = field_index + 1 - - field_type = None - field_name = None - - elif name == "textarea": - field_type = "textarea" - field_name = dict((token["data"])[::-1])["name"] - - elif name == "select": - field_type = "select" - attributes = dict(token["data"][::-1]) - field_name = attributes.get("name") - is_select_multiple = "multiple" in attributes - is_selected_option_found = False - - elif field_type == "select" and field_name and name == "option": - option_selected_index = -1 - option_value = None - for i,(n,v) in enumerate(token["data"]): - n = n.lower() - if n == "selected": - option_selected_index = i - elif n == "value": - option_value = v.strip(spaceCharacters) - if option_value is None: - raise NotImplementedError("