package html type traits uint16 const ( normalTag traits = 1 << iota rawTag // raw tags need special processing for their content blockTag // remove spaces around these tags objectTag // keep spaces after these open/close tags omitPTag // omit p end tag if it is followed by this start tag keepPTag // keep p end tag if it is followed by this end tag ) const ( booleanAttr traits = 1 << iota urlAttr trimAttr ) var tagMap = map[Hash]traits{ A: keepPTag, Abbr: normalTag, Address: blockTag | omitPTag, Area: normalTag, Article: blockTag | omitPTag, Aside: blockTag | omitPTag, Audio: keepPTag, B: normalTag, Base: normalTag, Bb: normalTag, Bdi: normalTag, Bdo: normalTag, Blockquote: blockTag | omitPTag, Body: normalTag, Br: blockTag, Button: objectTag, Canvas: objectTag | keepPTag, Caption: blockTag, Cite: normalTag, Code: normalTag, Col: blockTag, Colgroup: blockTag, Data: normalTag, Datalist: normalTag, // no text content Dd: blockTag, Del: keepPTag, Details: blockTag | omitPTag, Dfn: normalTag, Dialog: normalTag, Div: blockTag | omitPTag, Dl: blockTag | omitPTag, Dt: blockTag, Em: normalTag, Embed: normalTag, Fieldset: blockTag | omitPTag, Figcaption: blockTag | omitPTag, Figure: blockTag | omitPTag, Footer: blockTag | omitPTag, Form: blockTag | omitPTag, H1: blockTag | omitPTag, H2: blockTag | omitPTag, H3: blockTag | omitPTag, H4: blockTag | omitPTag, H5: blockTag | omitPTag, H6: blockTag | omitPTag, Head: blockTag, Header: blockTag | omitPTag, Hgroup: blockTag, Hr: blockTag | omitPTag, Html: blockTag, I: normalTag, Iframe: rawTag | objectTag, Img: objectTag, Input: objectTag, Ins: keepPTag, Kbd: normalTag, Label: normalTag | keepPTag, // experimentally, keepPTag is needed Legend: blockTag, Li: blockTag, Link: normalTag, Main: blockTag | omitPTag, Map: keepPTag, Mark: normalTag, Math: rawTag, Menu: blockTag | omitPTag, Meta: normalTag, Meter: objectTag, Nav: blockTag | omitPTag, Noscript: blockTag | keepPTag, Object: objectTag, Ol: blockTag | omitPTag, Optgroup: normalTag, // no text content Option: blockTag, Output: normalTag, P: blockTag | omitPTag, Param: normalTag, Picture: normalTag, Pre: blockTag | omitPTag, Progress: objectTag, Q: objectTag, Rp: normalTag, Rt: objectTag, Ruby: normalTag, S: normalTag, Samp: normalTag, Script: rawTag, Section: blockTag | omitPTag, Select: objectTag, Slot: normalTag, Small: normalTag, Source: normalTag, Span: normalTag, Strong: normalTag, Style: rawTag | blockTag, Sub: normalTag, Summary: blockTag, Sup: normalTag, Svg: rawTag | objectTag, Table: blockTag | omitPTag, Tbody: blockTag, Td: blockTag, Template: normalTag, Textarea: rawTag | objectTag, Tfoot: blockTag, Th: blockTag, Thead: blockTag, Time: normalTag, Title: blockTag, Tr: blockTag, Track: normalTag, U: normalTag, Ul: blockTag | omitPTag, Var: normalTag, Video: objectTag | keepPTag, Wbr: objectTag, // removed tags Acronym: normalTag, Applet: normalTag, Basefont: normalTag, Big: normalTag, Center: blockTag, Dir: blockTag, Font: normalTag, Frame: normalTag, Frameset: normalTag, Image: objectTag, Marquee: blockTag, Menuitem: normalTag, Nobr: normalTag, Noembed: blockTag, Noframes: blockTag, Plaintext: normalTag, Rtc: objectTag, Rb: normalTag, Strike: normalTag, Tt: normalTag, Xmp: blockTag, // experimental tags Portal: normalTag, } var attrMap = map[Hash]traits{ Accept: trimAttr, // list of mimetypes Accept_Charset: trimAttr, Accesskey: trimAttr, Action: urlAttr, Allow: trimAttr, Allowfullscreen: booleanAttr, As: trimAttr, Async: booleanAttr, Autocapitalize: trimAttr, Autocomplete: trimAttr, Autofocus: booleanAttr, Autoplay: booleanAttr, Blocking: trimAttr, Capture: trimAttr, Charset: trimAttr, Checked: booleanAttr, Cite: urlAttr, Class: trimAttr, Color: trimAttr, Cols: trimAttr, // uint bigger than 0 Colspan: trimAttr, // uint bigger than 0 Contenteditable: trimAttr, Controls: booleanAttr, Coords: trimAttr, // list of floats Crossorigin: trimAttr, Data: urlAttr, Datetime: trimAttr, Decoding: trimAttr, Default: booleanAttr, Defer: booleanAttr, Dir: trimAttr, Disabled: booleanAttr, Draggable: trimAttr, Enctype: trimAttr, // mimetype Enterkeyhint: trimAttr, Fetchpriority: trimAttr, For: trimAttr, Form: trimAttr, Formaction: urlAttr, Formenctype: trimAttr, // mimetype Formmethod: trimAttr, Formnovalidate: booleanAttr, Formtarget: trimAttr, Headers: trimAttr, Height: trimAttr, // uint Hidden: trimAttr, // TODO: boolean High: trimAttr, // float Href: urlAttr, Hreflang: trimAttr, // BCP 47 Http_Equiv: trimAttr, Imagesizes: trimAttr, Imagesrcset: trimAttr, Inert: booleanAttr, Inputmode: trimAttr, Is: trimAttr, Ismap: booleanAttr, Itemid: urlAttr, Itemprop: trimAttr, Itemref: trimAttr, Itemscope: booleanAttr, Itemtype: trimAttr, // list of urls Kind: trimAttr, Lang: trimAttr, // BCP 47 List: trimAttr, Loading: trimAttr, Loop: booleanAttr, Low: trimAttr, // float Max: trimAttr, // float or varies Maxlength: trimAttr, // uint Media: trimAttr, Method: trimAttr, Min: trimAttr, // float or varies Minlength: trimAttr, // uint Multiple: booleanAttr, Muted: booleanAttr, Nomodule: booleanAttr, Novalidate: booleanAttr, Open: booleanAttr, Optimum: trimAttr, // float Pattern: trimAttr, // regex Ping: trimAttr, // list of urls Playsinline: booleanAttr, Popover: trimAttr, Popovertarget: trimAttr, Popovertargetaction: trimAttr, Poster: urlAttr, Preload: trimAttr, Profile: urlAttr, Readonly: booleanAttr, Referrerpolicy: trimAttr, Rel: trimAttr, Required: booleanAttr, Reversed: booleanAttr, Rows: trimAttr, // uint bigger than 0 Rowspan: trimAttr, // uint Sandbox: trimAttr, Scope: trimAttr, Selected: booleanAttr, Shadowrootmode: trimAttr, Shadowrootdelegatesfocus: booleanAttr, Shape: trimAttr, Size: trimAttr, // uint bigger than 0 Sizes: trimAttr, Span: trimAttr, // uint bigger than 0 Spellcheck: trimAttr, Src: urlAttr, Srclang: trimAttr, // BCP 47 Srcset: trimAttr, Start: trimAttr, // int Step: trimAttr, // float or "any" Tabindex: trimAttr, // int Target: trimAttr, Translate: trimAttr, Type: trimAttr, Usemap: trimAttr, Width: trimAttr, // uint Wrap: trimAttr, Xmlns: urlAttr, } var jsMimetypes = map[string]bool{ "text/javascript": true, "application/javascript": true, } // EntitiesMap are all named character entities. var EntitiesMap = map[string][]byte{ "AElig": []byte("Æ"), "AMP": []byte("&"), "Aacute": []byte("Á"), "Abreve": []byte("Ă"), "Acirc": []byte("Â"), "Agrave": []byte("À"), "Alpha": []byte("Α"), "Amacr": []byte("Ā"), "Aogon": []byte("Ą"), "ApplyFunction": []byte("⁡"), "Aring": []byte("Å"), "Assign": []byte("≔"), "Atilde": []byte("Ã"), "Backslash": []byte("∖"), "Barwed": []byte("⌆"), "Because": []byte("∵"), "Bernoullis": []byte("ℬ"), "Breve": []byte("˘"), "Bumpeq": []byte("≎"), "Cacute": []byte("Ć"), "CapitalDifferentialD": []byte("ⅅ"), "Cayleys": []byte("ℭ"), "Ccaron": []byte("Č"), "Ccedil": []byte("Ç"), "Ccirc": []byte("Ĉ"), "Cconint": []byte("∰"), "Cedilla": []byte("¸"), "CenterDot": []byte("·"), "CircleDot": []byte("⊙"), "CircleMinus": []byte("⊖"), "CirclePlus": []byte("⊕"), "CircleTimes": []byte("⊗"), "ClockwiseContourIntegral": []byte("∲"), "CloseCurlyDoubleQuote": []byte("”"), "CloseCurlyQuote": []byte("’"), "Congruent": []byte("≡"), "Conint": []byte("∯"), "ContourIntegral": []byte("∮"), "Coproduct": []byte("∐"), "CounterClockwiseContourIntegral": []byte("∳"), "CupCap": []byte("≍"), "DDotrahd": []byte("⤑"), "Dagger": []byte("‡"), "Dcaron": []byte("Ď"), "Delta": []byte("Δ"), "DiacriticalAcute": []byte("´"), "DiacriticalDot": []byte("˙"), "DiacriticalDoubleAcute": []byte("˝"), "DiacriticalGrave": []byte("`"), "DiacriticalTilde": []byte("˜"), "Diamond": []byte("⋄"), "DifferentialD": []byte("ⅆ"), "DotDot": []byte("⃜"), "DotEqual": []byte("≐"), "DoubleContourIntegral": []byte("∯"), "DoubleDot": []byte("¨"), "DoubleDownArrow": []byte("⇓"), "DoubleLeftArrow": []byte("⇐"), "DoubleLeftRightArrow": []byte("⇔"), "DoubleLeftTee": []byte("⫤"), "DoubleLongLeftArrow": []byte("⟸"), "DoubleLongLeftRightArrow": []byte("⟺"), "DoubleLongRightArrow": []byte("⟹"), "DoubleRightArrow": []byte("⇒"), "DoubleRightTee": []byte("⊨"), "DoubleUpArrow": []byte("⇑"), "DoubleUpDownArrow": []byte("⇕"), "DoubleVerticalBar": []byte("∥"), "DownArrow": []byte("↓"), "DownArrowBar": []byte("⤓"), "DownArrowUpArrow": []byte("⇵"), "DownBreve": []byte("̑"), "DownLeftRightVector": []byte("⥐"), "DownLeftTeeVector": []byte("⥞"), "DownLeftVector": []byte("↽"), "DownLeftVectorBar": []byte("⥖"), "DownRightTeeVector": []byte("⥟"), "DownRightVector": []byte("⇁"), "DownRightVectorBar": []byte("⥗"), "DownTee": []byte("⊤"), "DownTeeArrow": []byte("↧"), "Downarrow": []byte("⇓"), "Dstrok": []byte("Đ"), "Eacute": []byte("É"), "Ecaron": []byte("Ě"), "Ecirc": []byte("Ê"), "Egrave": []byte("È"), "Element": []byte("∈"), "Emacr": []byte("Ē"), "EmptySmallSquare": []byte("◻"), "EmptyVerySmallSquare": []byte("▫"), "Eogon": []byte("Ę"), "Epsilon": []byte("Ε"), "EqualTilde": []byte("≂"), "Equilibrium": []byte("⇌"), "Exists": []byte("∃"), "ExponentialE": []byte("ⅇ"), "FilledSmallSquare": []byte("◼"), "FilledVerySmallSquare": []byte("▪"), "ForAll": []byte("∀"), "Fouriertrf": []byte("ℱ"), "GT": []byte(">"), "Gamma": []byte("Γ"), "Gammad": []byte("Ϝ"), "Gbreve": []byte("Ğ"), "Gcedil": []byte("Ģ"), "Gcirc": []byte("Ĝ"), "GreaterEqual": []byte("≥"), "GreaterEqualLess": []byte("⋛"), "GreaterFullEqual": []byte("≧"), "GreaterGreater": []byte("⪢"), "GreaterLess": []byte("≷"), "GreaterSlantEqual": []byte("⩾"), "GreaterTilde": []byte("≳"), "HARDcy": []byte("Ъ"), "Hacek": []byte("ˇ"), "Hat": []byte("^"), "Hcirc": []byte("Ĥ"), "HilbertSpace": []byte("ℋ"), "HorizontalLine": []byte("─"), "Hstrok": []byte("Ħ"), "HumpDownHump": []byte("≎"), "HumpEqual": []byte("≏"), "IJlig": []byte("IJ"), "Iacute": []byte("Í"), "Icirc": []byte("Î"), "Ifr": []byte("ℑ"), "Igrave": []byte("Ì"), "Imacr": []byte("Ī"), "ImaginaryI": []byte("ⅈ"), "Implies": []byte("⇒"), "Integral": []byte("∫"), "Intersection": []byte("⋂"), "InvisibleComma": []byte("⁣"), "InvisibleTimes": []byte("⁢"), "Iogon": []byte("Į"), "Itilde": []byte("Ĩ"), "Jcirc": []byte("Ĵ"), "Jsercy": []byte("Ј"), "Kappa": []byte("Κ"), "Kcedil": []byte("Ķ"), "LT": []byte("<"), "Lacute": []byte("Ĺ"), "Lambda": []byte("Λ"), "Laplacetrf": []byte("ℒ"), "Lcaron": []byte("Ľ"), "Lcedil": []byte("Ļ"), "LeftAngleBracket": []byte("⟨"), "LeftArrow": []byte("←"), "LeftArrowBar": []byte("⇤"), "LeftArrowRightArrow": []byte("⇆"), "LeftCeiling": []byte("⌈"), "LeftDoubleBracket": []byte("⟦"), "LeftDownTeeVector": []byte("⥡"), "LeftDownVector": []byte("⇃"), "LeftDownVectorBar": []byte("⥙"), "LeftFloor": []byte("⌊"), "LeftRightArrow": []byte("↔"), "LeftRightVector": []byte("⥎"), "LeftTee": []byte("⊣"), "LeftTeeArrow": []byte("↤"), "LeftTeeVector": []byte("⥚"), "LeftTriangle": []byte("⊲"), "LeftTriangleBar": []byte("⧏"), "LeftTriangleEqual": []byte("⊴"), "LeftUpDownVector": []byte("⥑"), "LeftUpTeeVector": []byte("⥠"), "LeftUpVector": []byte("↿"), "LeftUpVectorBar": []byte("⥘"), "LeftVector": []byte("↼"), "LeftVectorBar": []byte("⥒"), "Leftarrow": []byte("⇐"), "Leftrightarrow": []byte("⇔"), "LessEqualGreater": []byte("⋚"), "LessFullEqual": []byte("≦"), "LessGreater": []byte("≶"), "LessLess": []byte("⪡"), "LessSlantEqual": []byte("⩽"), "LessTilde": []byte("≲"), "Lleftarrow": []byte("⇚"), "Lmidot": []byte("Ŀ"), "LongLeftArrow": []byte("⟵"), "LongLeftRightArrow": []byte("⟷"), "LongRightArrow": []byte("⟶"), "Longleftarrow": []byte("⟸"), "Longleftrightarrow": []byte("⟺"), "Longrightarrow": []byte("⟹"), "LowerLeftArrow": []byte("↙"), "LowerRightArrow": []byte("↘"), "Lstrok": []byte("Ł"), "MediumSpace": []byte(" "), "Mellintrf": []byte("ℳ"), "MinusPlus": []byte("∓"), "Nacute": []byte("Ń"), "Ncaron": []byte("Ň"), "Ncedil": []byte("Ņ"), "NegativeMediumSpace": []byte("​"), "NegativeThickSpace": []byte("​"), "NegativeThinSpace": []byte("​"), "NegativeVeryThinSpace": []byte("​"), "NestedGreaterGreater": []byte("≫"), "NestedLessLess": []byte("≪"), "NewLine": []byte("\n"), "NoBreak": []byte("⁠"), "NonBreakingSpace": []byte(" "), "NotCongruent": []byte("≢"), "NotCupCap": []byte("≭"), "NotDoubleVerticalBar": []byte("∦"), "NotElement": []byte("∉"), "NotEqual": []byte("≠"), "NotExists": []byte("∄"), "NotGreater": []byte("≯"), "NotGreaterEqual": []byte("≱"), "NotGreaterLess": []byte("≹"), "NotGreaterTilde": []byte("≵"), "NotLeftTriangle": []byte("⋪"), "NotLeftTriangleEqual": []byte("⋬"), "NotLess": []byte("≮"), "NotLessEqual": []byte("≰"), "NotLessGreater": []byte("≸"), "NotLessTilde": []byte("≴"), "NotPrecedes": []byte("⊀"), "NotPrecedesSlantEqual": []byte("⋠"), "NotReverseElement": []byte("∌"), "NotRightTriangle": []byte("⋫"), "NotRightTriangleEqual": []byte("⋭"), "NotSquareSubsetEqual": []byte("⋢"), "NotSquareSupersetEqual": []byte("⋣"), "NotSubsetEqual": []byte("⊈"), "NotSucceeds": []byte("⊁"), "NotSucceedsSlantEqual": []byte("⋡"), "NotSupersetEqual": []byte("⊉"), "NotTilde": []byte("≁"), "NotTildeEqual": []byte("≄"), "NotTildeFullEqual": []byte("≇"), "NotTildeTilde": []byte("≉"), "NotVerticalBar": []byte("∤"), "Ntilde": []byte("Ñ"), "OElig": []byte("Œ"), "Oacute": []byte("Ó"), "Ocirc": []byte("Ô"), "Odblac": []byte("Ő"), "Ograve": []byte("Ò"), "Omacr": []byte("Ō"), "Omega": []byte("Ω"), "Omicron": []byte("Ο"), "OpenCurlyDoubleQuote": []byte("“"), "OpenCurlyQuote": []byte("‘"), "Oslash": []byte("Ø"), "Otilde": []byte("Õ"), "OverBar": []byte("‾"), "OverBrace": []byte("⏞"), "OverBracket": []byte("⎴"), "OverParenthesis": []byte("⏜"), "PartialD": []byte("∂"), "PlusMinus": []byte("±"), "Poincareplane": []byte("ℌ"), "Precedes": []byte("≺"), "PrecedesEqual": []byte("⪯"), "PrecedesSlantEqual": []byte("≼"), "PrecedesTilde": []byte("≾"), "Product": []byte("∏"), "Proportion": []byte("∷"), "Proportional": []byte("∝"), "QUOT": []byte("\""), "Racute": []byte("Ŕ"), "Rcaron": []byte("Ř"), "Rcedil": []byte("Ŗ"), "ReverseElement": []byte("∋"), "ReverseEquilibrium": []byte("⇋"), "ReverseUpEquilibrium": []byte("⥯"), "Rfr": []byte("ℜ"), "RightAngleBracket": []byte("⟩"), "RightArrow": []byte("→"), "RightArrowBar": []byte("⇥"), "RightArrowLeftArrow": []byte("⇄"), "RightCeiling": []byte("⌉"), "RightDoubleBracket": []byte("⟧"), "RightDownTeeVector": []byte("⥝"), "RightDownVector": []byte("⇂"), "RightDownVectorBar": []byte("⥕"), "RightFloor": []byte("⌋"), "RightTee": []byte("⊢"), "RightTeeArrow": []byte("↦"), "RightTeeVector": []byte("⥛"), "RightTriangle": []byte("⊳"), "RightTriangleBar": []byte("⧐"), "RightTriangleEqual": []byte("⊵"), "RightUpDownVector": []byte("⥏"), "RightUpTeeVector": []byte("⥜"), "RightUpVector": []byte("↾"), "RightUpVectorBar": []byte("⥔"), "RightVector": []byte("⇀"), "RightVectorBar": []byte("⥓"), "Rightarrow": []byte("⇒"), "RoundImplies": []byte("⥰"), "Rrightarrow": []byte("⇛"), "RuleDelayed": []byte("⧴"), "SHCHcy": []byte("Щ"), "SOFTcy": []byte("Ь"), "Sacute": []byte("Ś"), "Scaron": []byte("Š"), "Scedil": []byte("Ş"), "Scirc": []byte("Ŝ"), "ShortDownArrow": []byte("↓"), "ShortLeftArrow": []byte("←"), "ShortRightArrow": []byte("→"), "ShortUpArrow": []byte("↑"), "Sigma": []byte("Σ"), "SmallCircle": []byte("∘"), "Square": []byte("□"), "SquareIntersection": []byte("⊓"), "SquareSubset": []byte("⊏"), "SquareSubsetEqual": []byte("⊑"), "SquareSuperset": []byte("⊐"), "SquareSupersetEqual": []byte("⊒"), "SquareUnion": []byte("⊔"), "Subset": []byte("⋐"), "SubsetEqual": []byte("⊆"), "Succeeds": []byte("≻"), "SucceedsEqual": []byte("⪰"), "SucceedsSlantEqual": []byte("≽"), "SucceedsTilde": []byte("≿"), "SuchThat": []byte("∋"), "Superset": []byte("⊃"), "SupersetEqual": []byte("⊇"), "Supset": []byte("⋑"), "THORN": []byte("Þ"), "Tab": []byte("\t"), "Tcaron": []byte("Ť"), "Tcedil": []byte("Ţ"), "Therefore": []byte("∴"), "Theta": []byte("Θ"), "ThinSpace": []byte(" "), "Tilde": []byte("∼"), "TildeEqual": []byte("≃"), "TildeFullEqual": []byte("≅"), "TildeTilde": []byte("≈"), "TripleDot": []byte("⃛"), "Tstrok": []byte("Ŧ"), "Uacute": []byte("Ú"), "Uarrocir": []byte("⥉"), "Ubreve": []byte("Ŭ"), "Ucirc": []byte("Û"), "Udblac": []byte("Ű"), "Ugrave": []byte("Ù"), "Umacr": []byte("Ū"), "UnderBar": []byte("_"), "UnderBrace": []byte("⏟"), "UnderBracket": []byte("⎵"), "UnderParenthesis": []byte("⏝"), "Union": []byte("⋃"), "UnionPlus": []byte("⊎"), "Uogon": []byte("Ų"), "UpArrow": []byte("↑"), "UpArrowBar": []byte("⤒"), "UpArrowDownArrow": []byte("⇅"), "UpDownArrow": []byte("↕"), "UpEquilibrium": []byte("⥮"), "UpTee": []byte("⊥"), "UpTeeArrow": []byte("↥"), "Uparrow": []byte("⇑"), "Updownarrow": []byte("⇕"), "UpperLeftArrow": []byte("↖"), "UpperRightArrow": []byte("↗"), "Upsilon": []byte("Υ"), "Uring": []byte("Ů"), "Utilde": []byte("Ũ"), "Verbar": []byte("‖"), "VerticalBar": []byte("∣"), "VerticalLine": []byte("|"), "VerticalSeparator": []byte("❘"), "VerticalTilde": []byte("≀"), "VeryThinSpace": []byte(" "), "Vvdash": []byte("⊪"), "Wcirc": []byte("Ŵ"), "Yacute": []byte("Ý"), "Ycirc": []byte("Ŷ"), "Zacute": []byte("Ź"), "Zcaron": []byte("Ž"), "ZeroWidthSpace": []byte("​"), "aacute": []byte("á"), "abreve": []byte("ă"), "acirc": []byte("â"), "acute": []byte("´"), "aelig": []byte("æ"), "agrave": []byte("à"), "alefsym": []byte("ℵ"), "alpha": []byte("α"), "amacr": []byte("ā"), "amp": []byte("&"), "andslope": []byte("⩘"), "angle": []byte("∠"), "angmsd": []byte("∡"), "angmsdaa": []byte("⦨"), "angmsdab": []byte("⦩"), "angmsdac": []byte("⦪"), "angmsdad": []byte("⦫"), "angmsdae": []byte("⦬"), "angmsdaf": []byte("⦭"), "angmsdag": []byte("⦮"), "angmsdah": []byte("⦯"), "angrtvb": []byte("⊾"), "angrtvbd": []byte("⦝"), "angsph": []byte("∢"), "angst": []byte("Å"), "angzarr": []byte("⍼"), "aogon": []byte("ą"), "apos": []byte("'"), "approx": []byte("≈"), "approxeq": []byte("≊"), "aring": []byte("å"), "ast": []byte("*"), "asymp": []byte("≈"), "asympeq": []byte("≍"), "atilde": []byte("ã"), "awconint": []byte("∳"), "backcong": []byte("≌"), "backepsilon": []byte("϶"), "backprime": []byte("‵"), "backsim": []byte("∽"), "backsimeq": []byte("⋍"), "barvee": []byte("⊽"), "barwed": []byte("⌅"), "barwedge": []byte("⌅"), "bbrktbrk": []byte("⎶"), "becaus": []byte("∵"), "because": []byte("∵"), "bemptyv": []byte("⦰"), "bernou": []byte("ℬ"), "between": []byte("≬"), "bigcap": []byte("⋂"), "bigcirc": []byte("◯"), "bigcup": []byte("⋃"), "bigodot": []byte("⨀"), "bigoplus": []byte("⨁"), "bigotimes": []byte("⨂"), "bigsqcup": []byte("⨆"), "bigstar": []byte("★"), "bigtriangledown": []byte("▽"), "bigtriangleup": []byte("△"), "biguplus": []byte("⨄"), "bigvee": []byte("⋁"), "bigwedge": []byte("⋀"), "bkarow": []byte("⤍"), "blacklozenge": []byte("⧫"), "blacksquare": []byte("▪"), "blacktriangle": []byte("▴"), "blacktriangledown": []byte("▾"), "blacktriangleleft": []byte("◂"), "blacktriangleright": []byte("▸"), "bottom": []byte("⊥"), "bowtie": []byte("⋈"), "boxminus": []byte("⊟"), "boxplus": []byte("⊞"), "boxtimes": []byte("⊠"), "bprime": []byte("‵"), "breve": []byte("˘"), "brvbar": []byte("¦"), "bsol": []byte("\\"), "bsolhsub": []byte("⟈"), "bullet": []byte("•"), "bumpeq": []byte("≏"), "cacute": []byte("ć"), "capbrcup": []byte("⩉"), "caron": []byte("ˇ"), "ccaron": []byte("č"), "ccedil": []byte("ç"), "ccirc": []byte("ĉ"), "ccupssm": []byte("⩐"), "cedil": []byte("¸"), "cemptyv": []byte("⦲"), "centerdot": []byte("·"), "checkmark": []byte("✓"), "circeq": []byte("≗"), "circlearrowleft": []byte("↺"), "circlearrowright": []byte("↻"), "circledR": []byte("®"), "circledS": []byte("Ⓢ"), "circledast": []byte("⊛"), "circledcirc": []byte("⊚"), "circleddash": []byte("⊝"), "cirfnint": []byte("⨐"), "cirscir": []byte("⧂"), "clubsuit": []byte("♣"), "colon": []byte(":"), "colone": []byte("≔"), "coloneq": []byte("≔"), "comma": []byte(","), "commat": []byte("@"), "compfn": []byte("∘"), "complement": []byte("∁"), "complexes": []byte("ℂ"), "congdot": []byte("⩭"), "conint": []byte("∮"), "coprod": []byte("∐"), "copysr": []byte("℗"), "cudarrl": []byte("⤸"), "cudarrr": []byte("⤵"), "cularr": []byte("↶"), "cularrp": []byte("⤽"), "cupbrcap": []byte("⩈"), "cupdot": []byte("⊍"), "curarr": []byte("↷"), "curarrm": []byte("⤼"), "curlyeqprec": []byte("⋞"), "curlyeqsucc": []byte("⋟"), "curlyvee": []byte("⋎"), "curlywedge": []byte("⋏"), "curren": []byte("¤"), "curvearrowleft": []byte("↶"), "curvearrowright": []byte("↷"), "cwconint": []byte("∲"), "cylcty": []byte("⌭"), "dagger": []byte("†"), "daleth": []byte("ℸ"), "dbkarow": []byte("⤏"), "dblac": []byte("˝"), "dcaron": []byte("ď"), "ddagger": []byte("‡"), "ddotseq": []byte("⩷"), "delta": []byte("δ"), "demptyv": []byte("⦱"), "diamond": []byte("⋄"), "diamondsuit": []byte("♦"), "digamma": []byte("ϝ"), "divide": []byte("÷"), "divideontimes": []byte("⋇"), "divonx": []byte("⋇"), "dlcorn": []byte("⌞"), "dlcrop": []byte("⌍"), "dollar": []byte("$"), "doteqdot": []byte("≑"), "dotminus": []byte("∸"), "dotplus": []byte("∔"), "dotsquare": []byte("⊡"), "doublebarwedge": []byte("⌆"), "downarrow": []byte("↓"), "downdownarrows": []byte("⇊"), "downharpoonleft": []byte("⇃"), "downharpoonright": []byte("⇂"), "drbkarow": []byte("⤐"), "drcorn": []byte("⌟"), "drcrop": []byte("⌌"), "dstrok": []byte("đ"), "dwangle": []byte("⦦"), "dzigrarr": []byte("⟿"), "eacute": []byte("é"), "ecaron": []byte("ě"), "ecirc": []byte("ê"), "ecolon": []byte("≕"), "egrave": []byte("è"), "elinters": []byte("⏧"), "emacr": []byte("ē"), "emptyset": []byte("∅"), "emptyv": []byte("∅"), "emsp13": []byte(" "), "emsp14": []byte(" "), "eogon": []byte("ę"), "epsilon": []byte("ε"), "eqcirc": []byte("≖"), "eqcolon": []byte("≕"), "eqsim": []byte("≂"), "eqslantgtr": []byte("⪖"), "eqslantless": []byte("⪕"), "equals": []byte("="), "equest": []byte("≟"), "equivDD": []byte("⩸"), "eqvparsl": []byte("⧥"), "excl": []byte("!"), "expectation": []byte("ℰ"), "exponentiale": []byte("ⅇ"), "fallingdotseq": []byte("≒"), "female": []byte("♀"), "forall": []byte("∀"), "fpartint": []byte("⨍"), "frac12": []byte("½"), "frac13": []byte("⅓"), "frac14": []byte("¼"), "frac15": []byte("⅕"), "frac16": []byte("⅙"), "frac18": []byte("⅛"), "frac23": []byte("⅔"), "frac25": []byte("⅖"), "frac34": []byte("¾"), "frac35": []byte("⅗"), "frac38": []byte("⅜"), "frac45": []byte("⅘"), "frac56": []byte("⅚"), "frac58": []byte("⅝"), "frac78": []byte("⅞"), "gacute": []byte("ǵ"), "gamma": []byte("γ"), "gammad": []byte("ϝ"), "gbreve": []byte("ğ"), "gcirc": []byte("ĝ"), "geq": []byte("≥"), "geqq": []byte("≧"), "geqslant": []byte("⩾"), "gesdoto": []byte("⪂"), "gesdotol": []byte("⪄"), "ggg": []byte("⋙"), "gnapprox": []byte("⪊"), "gneq": []byte("⪈"), "gneqq": []byte("≩"), "grave": []byte("`"), "gt": []byte(">"), "gtquest": []byte("⩼"), "gtrapprox": []byte("⪆"), "gtrdot": []byte("⋗"), "gtreqless": []byte("⋛"), "gtreqqless": []byte("⪌"), "gtrless": []byte("≷"), "gtrsim": []byte("≳"), "hArr": []byte("⇔"), "hairsp": []byte(" "), "hamilt": []byte("ℋ"), "hardcy": []byte("ъ"), "harrcir": []byte("⥈"), "hcirc": []byte("ĥ"), "hearts": []byte("♥"), "heartsuit": []byte("♥"), "hellip": []byte("…"), "hercon": []byte("⊹"), "hksearow": []byte("⤥"), "hkswarow": []byte("⤦"), "homtht": []byte("∻"), "hookleftarrow": []byte("↩"), "hookrightarrow": []byte("↪"), "horbar": []byte("―"), "hslash": []byte("ℏ"), "hstrok": []byte("ħ"), "hybull": []byte("⁃"), "hyphen": []byte("‐"), "iacute": []byte("í"), "icirc": []byte("î"), "iexcl": []byte("¡"), "igrave": []byte("ì"), "iiiint": []byte("⨌"), "iiint": []byte("∭"), "ijlig": []byte("ij"), "imacr": []byte("ī"), "image": []byte("ℑ"), "imagline": []byte("ℐ"), "imagpart": []byte("ℑ"), "imath": []byte("ı"), "imped": []byte("Ƶ"), "incare": []byte("℅"), "infintie": []byte("⧝"), "inodot": []byte("ı"), "intcal": []byte("⊺"), "integers": []byte("ℤ"), "intercal": []byte("⊺"), "intlarhk": []byte("⨗"), "intprod": []byte("⨼"), "iogon": []byte("į"), "iquest": []byte("¿"), "isin": []byte("∈"), "isindot": []byte("⋵"), "isinsv": []byte("⋳"), "isinv": []byte("∈"), "itilde": []byte("ĩ"), "jcirc": []byte("ĵ"), "jmath": []byte("ȷ"), "jsercy": []byte("ј"), "kappa": []byte("κ"), "kappav": []byte("ϰ"), "kcedil": []byte("ķ"), "kgreen": []byte("ĸ"), "lacute": []byte("ĺ"), "laemptyv": []byte("⦴"), "lagran": []byte("ℒ"), "lambda": []byte("λ"), "langle": []byte("⟨"), "laquo": []byte("«"), "larrbfs": []byte("⤟"), "larrhk": []byte("↩"), "larrlp": []byte("↫"), "larrsim": []byte("⥳"), "larrtl": []byte("↢"), "lbrace": []byte("{"), "lbrack": []byte("["), "lbrksld": []byte("⦏"), "lbrkslu": []byte("⦍"), "lcaron": []byte("ľ"), "lcedil": []byte("ļ"), "lcub": []byte("{"), "ldquor": []byte("„"), "ldrdhar": []byte("⥧"), "ldrushar": []byte("⥋"), "leftarrow": []byte("←"), "leftarrowtail": []byte("↢"), "leftharpoondown": []byte("↽"), "leftharpoonup": []byte("↼"), "leftleftarrows": []byte("⇇"), "leftrightarrow": []byte("↔"), "leftrightarrows": []byte("⇆"), "leftrightharpoons": []byte("⇋"), "leftrightsquigarrow": []byte("↭"), "leftthreetimes": []byte("⋋"), "leq": []byte("≤"), "leqq": []byte("≦"), "leqslant": []byte("⩽"), "lesdoto": []byte("⪁"), "lesdotor": []byte("⪃"), "lessapprox": []byte("⪅"), "lessdot": []byte("⋖"), "lesseqgtr": []byte("⋚"), "lesseqqgtr": []byte("⪋"), "lessgtr": []byte("≶"), "lesssim": []byte("≲"), "lfloor": []byte("⌊"), "llcorner": []byte("⌞"), "lmidot": []byte("ŀ"), "lmoust": []byte("⎰"), "lmoustache": []byte("⎰"), "lnapprox": []byte("⪉"), "lneq": []byte("⪇"), "lneqq": []byte("≨"), "longleftarrow": []byte("⟵"), "longleftrightarrow": []byte("⟷"), "longmapsto": []byte("⟼"), "longrightarrow": []byte("⟶"), "looparrowleft": []byte("↫"), "looparrowright": []byte("↬"), "lotimes": []byte("⨴"), "lowast": []byte("∗"), "lowbar": []byte("_"), "lozenge": []byte("◊"), "lpar": []byte("("), "lrcorner": []byte("⌟"), "lsaquo": []byte("‹"), "lsqb": []byte("["), "lsquor": []byte("‚"), "lstrok": []byte("ł"), "lt": []byte("<"), "lthree": []byte("⋋"), "ltimes": []byte("⋉"), "ltquest": []byte("⩻"), "lurdshar": []byte("⥊"), "luruhar": []byte("⥦"), "maltese": []byte("✠"), "mapsto": []byte("↦"), "mapstodown": []byte("↧"), "mapstoleft": []byte("↤"), "mapstoup": []byte("↥"), "marker": []byte("▮"), "measuredangle": []byte("∡"), "micro": []byte("µ"), "midast": []byte("*"), "middot": []byte("·"), "minusb": []byte("⊟"), "minusd": []byte("∸"), "minusdu": []byte("⨪"), "mnplus": []byte("∓"), "models": []byte("⊧"), "mstpos": []byte("∾"), "multimap": []byte("⊸"), "nLeftarrow": []byte("⇍"), "nLeftrightarrow": []byte("⇎"), "nRightarrow": []byte("⇏"), "nVDash": []byte("⊯"), "nVdash": []byte("⊮"), "nabla": []byte("∇"), "nacute": []byte("ń"), "napos": []byte("ʼn"), "napprox": []byte("≉"), "natural": []byte("♮"), "naturals": []byte("ℕ"), "ncaron": []byte("ň"), "ncedil": []byte("ņ"), "nearrow": []byte("↗"), "nequiv": []byte("≢"), "nesear": []byte("⤨"), "nexist": []byte("∄"), "nexists": []byte("∄"), "ngeq": []byte("≱"), "ngtr": []byte("≯"), "niv": []byte("∋"), "nleftarrow": []byte("↚"), "nleftrightarrow": []byte("↮"), "nleq": []byte("≰"), "nless": []byte("≮"), "nltrie": []byte("⋬"), "notinva": []byte("∉"), "notinvb": []byte("⋷"), "notinvc": []byte("⋶"), "notniva": []byte("∌"), "notnivb": []byte("⋾"), "notnivc": []byte("⋽"), "nparallel": []byte("∦"), "npolint": []byte("⨔"), "nprcue": []byte("⋠"), "nprec": []byte("⊀"), "nrightarrow": []byte("↛"), "nrtrie": []byte("⋭"), "nsccue": []byte("⋡"), "nshortmid": []byte("∤"), "nshortparallel": []byte("∦"), "nsimeq": []byte("≄"), "nsmid": []byte("∤"), "nspar": []byte("∦"), "nsqsube": []byte("⋢"), "nsqsupe": []byte("⋣"), "nsubseteq": []byte("⊈"), "nsucc": []byte("⊁"), "nsupseteq": []byte("⊉"), "ntilde": []byte("ñ"), "ntriangleleft": []byte("⋪"), "ntrianglelefteq": []byte("⋬"), "ntriangleright": []byte("⋫"), "ntrianglerighteq": []byte("⋭"), "num": []byte("#"), "numero": []byte("№"), "nvDash": []byte("⊭"), "nvdash": []byte("⊬"), "nvinfin": []byte("⧞"), "nwarrow": []byte("↖"), "oacute": []byte("ó"), "ocirc": []byte("ô"), "odblac": []byte("ő"), "oelig": []byte("œ"), "ograve": []byte("ò"), "olcross": []byte("⦻"), "omacr": []byte("ō"), "omega": []byte("ω"), "omicron": []byte("ο"), "ominus": []byte("⊖"), "order": []byte("ℴ"), "orderof": []byte("ℴ"), "origof": []byte("⊶"), "orslope": []byte("⩗"), "oslash": []byte("ø"), "otilde": []byte("õ"), "otimes": []byte("⊗"), "otimesas": []byte("⨶"), "parallel": []byte("∥"), "percnt": []byte("%"), "period": []byte("."), "permil": []byte("‰"), "perp": []byte("⊥"), "pertenk": []byte("‱"), "phmmat": []byte("ℳ"), "pitchfork": []byte("⋔"), "planck": []byte("ℏ"), "planckh": []byte("ℎ"), "plankv": []byte("ℏ"), "plus": []byte("+"), "plusacir": []byte("⨣"), "pluscir": []byte("⨢"), "plusdo": []byte("∔"), "plusmn": []byte("±"), "plussim": []byte("⨦"), "plustwo": []byte("⨧"), "pointint": []byte("⨕"), "pound": []byte("£"), "prec": []byte("≺"), "precapprox": []byte("⪷"), "preccurlyeq": []byte("≼"), "preceq": []byte("⪯"), "precnapprox": []byte("⪹"), "precneqq": []byte("⪵"), "precnsim": []byte("⋨"), "precsim": []byte("≾"), "primes": []byte("ℙ"), "prnsim": []byte("⋨"), "profalar": []byte("⌮"), "profline": []byte("⌒"), "profsurf": []byte("⌓"), "propto": []byte("∝"), "prurel": []byte("⊰"), "puncsp": []byte(" "), "qprime": []byte("⁗"), "quaternions": []byte("ℍ"), "quatint": []byte("⨖"), "quest": []byte("?"), "questeq": []byte("≟"), "quot": []byte("\""), "racute": []byte("ŕ"), "radic": []byte("√"), "raemptyv": []byte("⦳"), "rangle": []byte("⟩"), "raquo": []byte("»"), "rarrbfs": []byte("⤠"), "rarrhk": []byte("↪"), "rarrlp": []byte("↬"), "rarrsim": []byte("⥴"), "rarrtl": []byte("↣"), "rationals": []byte("ℚ"), "rbrace": []byte("}"), "rbrack": []byte("]"), "rbrksld": []byte("⦎"), "rbrkslu": []byte("⦐"), "rcaron": []byte("ř"), "rcedil": []byte("ŗ"), "rcub": []byte("}"), "rdldhar": []byte("⥩"), "rdquor": []byte("”"), "real": []byte("ℜ"), "realine": []byte("ℛ"), "realpart": []byte("ℜ"), "reals": []byte("ℝ"), "rfloor": []byte("⌋"), "rightarrow": []byte("→"), "rightarrowtail": []byte("↣"), "rightharpoondown": []byte("⇁"), "rightharpoonup": []byte("⇀"), "rightleftarrows": []byte("⇄"), "rightleftharpoons": []byte("⇌"), "rightrightarrows": []byte("⇉"), "rightsquigarrow": []byte("↝"), "rightthreetimes": []byte("⋌"), "risingdotseq": []byte("≓"), "rmoust": []byte("⎱"), "rmoustache": []byte("⎱"), "rotimes": []byte("⨵"), "rpar": []byte(")"), "rppolint": []byte("⨒"), "rsaquo": []byte("›"), "rsqb": []byte("]"), "rsquor": []byte("’"), "rthree": []byte("⋌"), "rtimes": []byte("⋊"), "rtriltri": []byte("⧎"), "ruluhar": []byte("⥨"), "sacute": []byte("ś"), "scaron": []byte("š"), "scedil": []byte("ş"), "scirc": []byte("ŝ"), "scnsim": []byte("⋩"), "scpolint": []byte("⨓"), "searrow": []byte("↘"), "semi": []byte(";"), "seswar": []byte("⤩"), "setminus": []byte("∖"), "sfrown": []byte("⌢"), "shchcy": []byte("щ"), "shortmid": []byte("∣"), "shortparallel": []byte("∥"), "sigma": []byte("σ"), "sigmaf": []byte("ς"), "sigmav": []byte("ς"), "simeq": []byte("≃"), "simplus": []byte("⨤"), "simrarr": []byte("⥲"), "slarr": []byte("←"), "smallsetminus": []byte("∖"), "smeparsl": []byte("⧤"), "smid": []byte("∣"), "softcy": []byte("ь"), "sol": []byte("/"), "solbar": []byte("⌿"), "spades": []byte("♠"), "spadesuit": []byte("♠"), "spar": []byte("∥"), "sqsube": []byte("⊑"), "sqsubset": []byte("⊏"), "sqsubseteq": []byte("⊑"), "sqsupe": []byte("⊒"), "sqsupset": []byte("⊐"), "sqsupseteq": []byte("⊒"), "square": []byte("□"), "squarf": []byte("▪"), "srarr": []byte("→"), "ssetmn": []byte("∖"), "ssmile": []byte("⌣"), "sstarf": []byte("⋆"), "straightepsilon": []byte("ϵ"), "straightphi": []byte("ϕ"), "strns": []byte("¯"), "subedot": []byte("⫃"), "submult": []byte("⫁"), "subplus": []byte("⪿"), "subrarr": []byte("⥹"), "subset": []byte("⊂"), "subseteq": []byte("⊆"), "subseteqq": []byte("⫅"), "subsetneq": []byte("⊊"), "subsetneqq": []byte("⫋"), "succ": []byte("≻"), "succapprox": []byte("⪸"), "succcurlyeq": []byte("≽"), "succeq": []byte("⪰"), "succnapprox": []byte("⪺"), "succneqq": []byte("⪶"), "succnsim": []byte("⋩"), "succsim": []byte("≿"), "supdsub": []byte("⫘"), "supedot": []byte("⫄"), "suphsol": []byte("⟉"), "suphsub": []byte("⫗"), "suplarr": []byte("⥻"), "supmult": []byte("⫂"), "supplus": []byte("⫀"), "supset": []byte("⊃"), "supseteq": []byte("⊇"), "supseteqq": []byte("⫆"), "supsetneq": []byte("⊋"), "supsetneqq": []byte("⫌"), "swarrow": []byte("↙"), "szlig": []byte("ß"), "target": []byte("⌖"), "tcaron": []byte("ť"), "tcedil": []byte("ţ"), "telrec": []byte("⌕"), "there4": []byte("∴"), "therefore": []byte("∴"), "theta": []byte("θ"), "thetasym": []byte("ϑ"), "thetav": []byte("ϑ"), "thickapprox": []byte("≈"), "thicksim": []byte("∼"), "thinsp": []byte(" "), "thkap": []byte("≈"), "thksim": []byte("∼"), "thorn": []byte("þ"), "tilde": []byte("˜"), "times": []byte("×"), "timesb": []byte("⊠"), "timesbar": []byte("⨱"), "topbot": []byte("⌶"), "topfork": []byte("⫚"), "tprime": []byte("‴"), "triangle": []byte("▵"), "triangledown": []byte("▿"), "triangleleft": []byte("◃"), "trianglelefteq": []byte("⊴"), "triangleq": []byte("≜"), "triangleright": []byte("▹"), "trianglerighteq": []byte("⊵"), "tridot": []byte("◬"), "triminus": []byte("⨺"), "triplus": []byte("⨹"), "tritime": []byte("⨻"), "trpezium": []byte("⏢"), "tstrok": []byte("ŧ"), "twoheadleftarrow": []byte("↞"), "twoheadrightarrow": []byte("↠"), "uacute": []byte("ú"), "ubreve": []byte("ŭ"), "ucirc": []byte("û"), "udblac": []byte("ű"), "ugrave": []byte("ù"), "ulcorn": []byte("⌜"), "ulcorner": []byte("⌜"), "ulcrop": []byte("⌏"), "umacr": []byte("ū"), "uogon": []byte("ų"), "uparrow": []byte("↑"), "updownarrow": []byte("↕"), "upharpoonleft": []byte("↿"), "upharpoonright": []byte("↾"), "upsih": []byte("ϒ"), "upsilon": []byte("υ"), "upuparrows": []byte("⇈"), "urcorn": []byte("⌝"), "urcorner": []byte("⌝"), "urcrop": []byte("⌎"), "uring": []byte("ů"), "utilde": []byte("ũ"), "uwangle": []byte("⦧"), "varepsilon": []byte("ϵ"), "varkappa": []byte("ϰ"), "varnothing": []byte("∅"), "varphi": []byte("ϕ"), "varpi": []byte("ϖ"), "varpropto": []byte("∝"), "varrho": []byte("ϱ"), "varsigma": []byte("ς"), "vartheta": []byte("ϑ"), "vartriangleleft": []byte("⊲"), "vartriangleright": []byte("⊳"), "vee": []byte("∨"), "veebar": []byte("⊻"), "vellip": []byte("⋮"), "verbar": []byte("|"), "vert": []byte("|"), "vprop": []byte("∝"), "vzigzag": []byte("⦚"), "wcirc": []byte("ŵ"), "wedge": []byte("∧"), "wedgeq": []byte("≙"), "weierp": []byte("℘"), "wreath": []byte("≀"), "xvee": []byte("⋁"), "xwedge": []byte("⋀"), "yacute": []byte("ý"), "ycirc": []byte("ŷ"), "zacute": []byte("ź"), "zcaron": []byte("ž"), "zeetrf": []byte("ℨ"), "zigrarr": []byte("⇝"), } // TextRevEntitiesMap is a map of escapes. var TextRevEntitiesMap = map[byte][]byte{ '<': []byte("<"), }