diff --git a/README.md b/README.md index e245210..ee1b6d8 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ - Written in Typescript - Generates HTML and XML - Parses HTML -- Supports CSS selectors and queries +- Supports some CSS selectors and queries - JSX compatible - Easy content manipulation (e.g. through `element.handle` helper) - Pretty print HTML (`tidyDOM`) @@ -26,6 +26,28 @@ npm i zeed-dom Used by [TipTap](https://www.tiptap.dev/) in its [html-package](https://github.com/ueberdosis/tiptap/tree/aac0193050228a8b6237d84f1eb587cfc0d08e24/packages/html). +## Utils + +### Manipulation + +Drop in HTML and query and change it. Returns HTML again. Nice for post processing. + +```ts +const newHTML = handleHTML(html, (document) => { + const img = document.querySelector('.img-wrapper img') + if (img) + img.setAttribute('title', img.getAttribute('src')) +}) +``` + +### Serialization + +Take any HTML node or document an serialize it so some other format: + +- `serializePlaintext(node)`: Readable and searchable plain text +- `serializeMarkdown(node)`: Simple Markdown +- `serializeSafeHTML(node)` or `safeHTML(htmlString)`: Just allow some basic tags and attributes + ## Example A simple example without JSX: @@ -113,30 +135,7 @@ const React = { But more common is the use of `h` as the factory function. Here is how you can set up this behavior for various environments: > In case of error messages on JSX in your Typescript project, try to add `npm install -D @types/react`. - -### Babel.js - -Add required plugins: - -```shell script -npm i -D @babel/plugin-syntax-jsx @babel/plugin-transform-react-jsx -``` - -Then add this to `.babelrc`: - -```json -{ - "plugins": [ - "@babel/plugin-syntax-jsx", - [ - "@babel/plugin-transform-react-jsx", - { - "pragma": "h" - } - ] - ] -} -``` + ### TypeScript @@ -151,6 +150,17 @@ In [`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/compiler-optio } ``` +To avoid type checking issues you should add this to you `shims.d.ts`: + +```ts +// https://www.typescriptlang.org/docs/handbook/jsx.html#intrinsic-elements +declare namespace JSX { + interface IntrinsicElements { + [elemName: string]: any + } +} +``` + ### [ESBuild](https://github.com/evanw/esbuild) In options: diff --git a/src/_archive/encoding-he.ts b/src/_archive/encoding-he.ts deleted file mode 100644 index 45be6aa..0000000 --- a/src/_archive/encoding-he.ts +++ /dev/null @@ -1,4206 +0,0 @@ -/* eslint-disable ts/ban-ts-comment */ -// @ts-nocheck - -import { hasOwn } from './utils' - -/* eslint-disable no-misleading-character-class */ -/* eslint-disable no-control-regex */ -/*! https://mths.be/he v1.2.0 by @mathias | MIT license */ -// Modifications by Dirk Holtwick, 2022 - -// All astral symbols. -const regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g -// All ASCII symbols (not just printable ASCII) except those listed in the -// first column of the overrides table. -// https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides -const regexAsciiWhitelist = /[\x01-\x7F]/g -// All BMP symbols that are not ASCII newlines, printable ASCII symbols, or -// code points listed in the first column of the overrides table on -// https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides. -const regexBmpWhitelist = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g - -const regexEncodeNonAscii = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g -const encodeMap = { - '\xAD': 'shy', - '\u200C': 'zwnj', - '\u200D': 'zwj', - '\u200E': 'lrm', - '\u2063': 'ic', - '\u2062': 'it', - '\u2061': 'af', - '\u200F': 'rlm', - '\u200B': 'ZeroWidthSpace', - '\u2060': 'NoBreak', - '\u0311': 'DownBreve', - '\u20DB': 'tdot', - '\u20DC': 'DotDot', - '\t': 'Tab', - '\n': 'NewLine', - '\u2008': 'puncsp', - '\u205F': 'MediumSpace', - '\u2009': 'thinsp', - '\u200A': 'hairsp', - '\u2004': 'emsp13', - '\u2002': 'ensp', - '\u2005': 'emsp14', - '\u2003': 'emsp', - '\u2007': 'numsp', - '\xA0': 'nbsp', - '\u205F\u200A': 'ThickSpace', - '\u203E': 'oline', - '_': 'lowbar', - '\u2010': 'dash', - '\u2013': 'ndash', - '\u2014': 'mdash', - '\u2015': 'horbar', - ',': 'comma', - ';': 'semi', - '\u204F': 'bsemi', - ':': 'colon', - '\u2A74': 'Colone', - '!': 'excl', - '\xA1': 'iexcl', - '?': 'quest', - '\xBF': 'iquest', - '.': 'period', - '\u2025': 'nldr', - '\u2026': 'mldr', - '\xB7': 'middot', - '\'': 'apos', - '\u2018': 'lsquo', - '\u2019': 'rsquo', - '\u201A': 'sbquo', - '\u2039': 'lsaquo', - '\u203A': 'rsaquo', - '"': 'quot', - '\u201C': 'ldquo', - '\u201D': 'rdquo', - '\u201E': 'bdquo', - '\xAB': 'laquo', - '\xBB': 'raquo', - '(': 'lpar', - ')': 'rpar', - '[': 'lsqb', - ']': 'rsqb', - '{': 'lcub', - '}': 'rcub', - '\u2308': 'lceil', - '\u2309': 'rceil', - '\u230A': 'lfloor', - '\u230B': 'rfloor', - '\u2985': 'lopar', - '\u2986': 'ropar', - '\u298B': 'lbrke', - '\u298C': 'rbrke', - '\u298D': 'lbrkslu', - '\u298E': 'rbrksld', - '\u298F': 'lbrksld', - '\u2990': 'rbrkslu', - '\u2991': 'langd', - '\u2992': 'rangd', - '\u2993': 'lparlt', - '\u2994': 'rpargt', - '\u2995': 'gtlPar', - '\u2996': 'ltrPar', - '\u27E6': 'lobrk', - '\u27E7': 'robrk', - '\u27E8': 'lang', - '\u27E9': 'rang', - '\u27EA': 'Lang', - '\u27EB': 'Rang', - '\u27EC': 'loang', - '\u27ED': 'roang', - '\u2772': 'lbbrk', - '\u2773': 'rbbrk', - '\u2016': 'Vert', - '\xA7': 'sect', - '\xB6': 'para', - '@': 'commat', - '*': 'ast', - '/': 'sol', - 'undefined': null, - '&': 'amp', - '#': 'num', - '%': 'percnt', - '\u2030': 'permil', - '\u2031': 'pertenk', - '\u2020': 'dagger', - '\u2021': 'Dagger', - '\u2022': 'bull', - '\u2043': 'hybull', - '\u2032': 'prime', - '\u2033': 'Prime', - '\u2034': 'tprime', - '\u2057': 'qprime', - '\u2035': 'bprime', - '\u2041': 'caret', - '`': 'grave', - '\xB4': 'acute', - '\u02DC': 'tilde', - '^': 'Hat', - '\xAF': 'macr', - '\u02D8': 'breve', - '\u02D9': 'dot', - '\xA8': 'die', - '\u02DA': 'ring', - '\u02DD': 'dblac', - '\xB8': 'cedil', - '\u02DB': 'ogon', - '\u02C6': 'circ', - '\u02C7': 'caron', - '\xB0': 'deg', - '\xA9': 'copy', - '\xAE': 'reg', - '\u2117': 'copysr', - '\u2118': 'wp', - '\u211E': 'rx', - '\u2127': 'mho', - '\u2129': 'iiota', - '\u2190': 'larr', - '\u219A': 'nlarr', - '\u2192': 'rarr', - '\u219B': 'nrarr', - '\u2191': 'uarr', - '\u2193': 'darr', - '\u2194': 'harr', - '\u21AE': 'nharr', - '\u2195': 'varr', - '\u2196': 'nwarr', - '\u2197': 'nearr', - '\u2198': 'searr', - '\u2199': 'swarr', - '\u219D': 'rarrw', - '\u219D\u0338': 'nrarrw', - '\u219E': 'Larr', - '\u219F': 'Uarr', - '\u21A0': 'Rarr', - '\u21A1': 'Darr', - '\u21A2': 'larrtl', - '\u21A3': 'rarrtl', - '\u21A4': 'mapstoleft', - '\u21A5': 'mapstoup', - '\u21A6': 'map', - '\u21A7': 'mapstodown', - '\u21A9': 'larrhk', - '\u21AA': 'rarrhk', - '\u21AB': 'larrlp', - '\u21AC': 'rarrlp', - '\u21AD': 'harrw', - '\u21B0': 'lsh', - '\u21B1': 'rsh', - '\u21B2': 'ldsh', - '\u21B3': 'rdsh', - '\u21B5': 'crarr', - '\u21B6': 'cularr', - '\u21B7': 'curarr', - '\u21BA': 'olarr', - '\u21BB': 'orarr', - '\u21BC': 'lharu', - '\u21BD': 'lhard', - '\u21BE': 'uharr', - '\u21BF': 'uharl', - '\u21C0': 'rharu', - '\u21C1': 'rhard', - '\u21C2': 'dharr', - '\u21C3': 'dharl', - '\u21C4': 'rlarr', - '\u21C5': 'udarr', - '\u21C6': 'lrarr', - '\u21C7': 'llarr', - '\u21C8': 'uuarr', - '\u21C9': 'rrarr', - '\u21CA': 'ddarr', - '\u21CB': 'lrhar', - '\u21CC': 'rlhar', - '\u21D0': 'lArr', - '\u21CD': 'nlArr', - '\u21D1': 'uArr', - '\u21D2': 'rArr', - '\u21CF': 'nrArr', - '\u21D3': 'dArr', - '\u21D4': 'iff', - '\u21CE': 'nhArr', - '\u21D5': 'vArr', - '\u21D6': 'nwArr', - '\u21D7': 'neArr', - '\u21D8': 'seArr', - '\u21D9': 'swArr', - '\u21DA': 'lAarr', - '\u21DB': 'rAarr', - '\u21DD': 'zigrarr', - '\u21E4': 'larrb', - '\u21E5': 'rarrb', - '\u21F5': 'duarr', - '\u21FD': 'loarr', - '\u21FE': 'roarr', - '\u21FF': 'hoarr', - '\u2200': 'forall', - '\u2201': 'comp', - '\u2202': 'part', - '\u2202\u0338': 'npart', - '\u2203': 'exist', - '\u2204': 'nexist', - '\u2205': 'empty', - '\u2207': 'Del', - '\u2208': 'in', - '\u2209': 'notin', - '\u220B': 'ni', - '\u220C': 'notni', - '\u03F6': 'bepsi', - '\u220F': 'prod', - '\u2210': 'coprod', - '\u2211': 'sum', - '+': 'plus', - '\xB1': 'pm', - '\xF7': 'div', - '\xD7': 'times', - '<': 'lt', - '\u226E': 'nlt', - '<\u20D2': 'nvlt', - '=': 'equals', - '\u2260': 'ne', - '=\u20E5': 'bne', - '\u2A75': 'Equal', - '>': 'gt', - '\u226F': 'ngt', - '>\u20D2': 'nvgt', - '\xAC': 'not', - '|': 'vert', - '\xA6': 'brvbar', - '\u2212': 'minus', - '\u2213': 'mp', - '\u2214': 'plusdo', - '\u2044': 'frasl', - '\u2216': 'setmn', - '\u2217': 'lowast', - '\u2218': 'compfn', - '\u221A': 'Sqrt', - '\u221D': 'prop', - '\u221E': 'infin', - '\u221F': 'angrt', - '\u2220': 'ang', - '\u2220\u20D2': 'nang', - '\u2221': 'angmsd', - '\u2222': 'angsph', - '\u2223': 'mid', - '\u2224': 'nmid', - '\u2225': 'par', - '\u2226': 'npar', - '\u2227': 'and', - '\u2228': 'or', - '\u2229': 'cap', - '\u2229\uFE00': 'caps', - '\u222A': 'cup', - '\u222A\uFE00': 'cups', - '\u222B': 'int', - '\u222C': 'Int', - '\u222D': 'tint', - '\u2A0C': 'qint', - '\u222E': 'oint', - '\u222F': 'Conint', - '\u2230': 'Cconint', - '\u2231': 'cwint', - '\u2232': 'cwconint', - '\u2233': 'awconint', - '\u2234': 'there4', - '\u2235': 'becaus', - '\u2236': 'ratio', - '\u2237': 'Colon', - '\u2238': 'minusd', - '\u223A': 'mDDot', - '\u223B': 'homtht', - '\u223C': 'sim', - '\u2241': 'nsim', - '\u223C\u20D2': 'nvsim', - '\u223D': 'bsim', - '\u223D\u0331': 'race', - '\u223E': 'ac', - '\u223E\u0333': 'acE', - '\u223F': 'acd', - '\u2240': 'wr', - '\u2242': 'esim', - '\u2242\u0338': 'nesim', - '\u2243': 'sime', - '\u2244': 'nsime', - '\u2245': 'cong', - '\u2247': 'ncong', - '\u2246': 'simne', - '\u2248': 'ap', - '\u2249': 'nap', - '\u224A': 'ape', - '\u224B': 'apid', - '\u224B\u0338': 'napid', - '\u224C': 'bcong', - '\u224D': 'CupCap', - '\u226D': 'NotCupCap', - '\u224D\u20D2': 'nvap', - '\u224E': 'bump', - '\u224E\u0338': 'nbump', - '\u224F': 'bumpe', - '\u224F\u0338': 'nbumpe', - '\u2250': 'doteq', - '\u2250\u0338': 'nedot', - '\u2251': 'eDot', - '\u2252': 'efDot', - '\u2253': 'erDot', - '\u2254': 'colone', - '\u2255': 'ecolon', - '\u2256': 'ecir', - '\u2257': 'cire', - '\u2259': 'wedgeq', - '\u225A': 'veeeq', - '\u225C': 'trie', - '\u225F': 'equest', - '\u2261': 'equiv', - '\u2262': 'nequiv', - '\u2261\u20E5': 'bnequiv', - '\u2264': 'le', - '\u2270': 'nle', - '\u2264\u20D2': 'nvle', - '\u2265': 'ge', - '\u2271': 'nge', - '\u2265\u20D2': 'nvge', - '\u2266': 'lE', - '\u2266\u0338': 'nlE', - '\u2267': 'gE', - '\u2267\u0338': 'ngE', - '\u2268\uFE00': 'lvnE', - '\u2268': 'lnE', - '\u2269': 'gnE', - '\u2269\uFE00': 'gvnE', - '\u226A': 'll', - '\u226A\u0338': 'nLtv', - '\u226A\u20D2': 'nLt', - '\u226B': 'gg', - '\u226B\u0338': 'nGtv', - '\u226B\u20D2': 'nGt', - '\u226C': 'twixt', - '\u2272': 'lsim', - '\u2274': 'nlsim', - '\u2273': 'gsim', - '\u2275': 'ngsim', - '\u2276': 'lg', - '\u2278': 'ntlg', - '\u2277': 'gl', - '\u2279': 'ntgl', - '\u227A': 'pr', - '\u2280': 'npr', - '\u227B': 'sc', - '\u2281': 'nsc', - '\u227C': 'prcue', - '\u22E0': 'nprcue', - '\u227D': 'sccue', - '\u22E1': 'nsccue', - '\u227E': 'prsim', - '\u227F': 'scsim', - '\u227F\u0338': 'NotSucceedsTilde', - '\u2282': 'sub', - '\u2284': 'nsub', - '\u2282\u20D2': 'vnsub', - '\u2283': 'sup', - '\u2285': 'nsup', - '\u2283\u20D2': 'vnsup', - '\u2286': 'sube', - '\u2288': 'nsube', - '\u2287': 'supe', - '\u2289': 'nsupe', - '\u228A\uFE00': 'vsubne', - '\u228A': 'subne', - '\u228B\uFE00': 'vsupne', - '\u228B': 'supne', - '\u228D': 'cupdot', - '\u228E': 'uplus', - '\u228F': 'sqsub', - '\u228F\u0338': 'NotSquareSubset', - '\u2290': 'sqsup', - '\u2290\u0338': 'NotSquareSuperset', - '\u2291': 'sqsube', - '\u22E2': 'nsqsube', - '\u2292': 'sqsupe', - '\u22E3': 'nsqsupe', - '\u2293': 'sqcap', - '\u2293\uFE00': 'sqcaps', - '\u2294': 'sqcup', - '\u2294\uFE00': 'sqcups', - '\u2295': 'oplus', - '\u2296': 'ominus', - '\u2297': 'otimes', - '\u2298': 'osol', - '\u2299': 'odot', - '\u229A': 'ocir', - '\u229B': 'oast', - '\u229D': 'odash', - '\u229E': 'plusb', - '\u229F': 'minusb', - '\u22A0': 'timesb', - '\u22A1': 'sdotb', - '\u22A2': 'vdash', - '\u22AC': 'nvdash', - '\u22A3': 'dashv', - '\u22A4': 'top', - '\u22A5': 'bot', - '\u22A7': 'models', - '\u22A8': 'vDash', - '\u22AD': 'nvDash', - '\u22A9': 'Vdash', - '\u22AE': 'nVdash', - '\u22AA': 'Vvdash', - '\u22AB': 'VDash', - '\u22AF': 'nVDash', - '\u22B0': 'prurel', - '\u22B2': 'vltri', - '\u22EA': 'nltri', - '\u22B3': 'vrtri', - '\u22EB': 'nrtri', - '\u22B4': 'ltrie', - '\u22EC': 'nltrie', - '\u22B4\u20D2': 'nvltrie', - '\u22B5': 'rtrie', - '\u22ED': 'nrtrie', - '\u22B5\u20D2': 'nvrtrie', - '\u22B6': 'origof', - '\u22B7': 'imof', - '\u22B8': 'mumap', - '\u22B9': 'hercon', - '\u22BA': 'intcal', - '\u22BB': 'veebar', - '\u22BD': 'barvee', - '\u22BE': 'angrtvb', - '\u22BF': 'lrtri', - '\u22C0': 'Wedge', - '\u22C1': 'Vee', - '\u22C2': 'xcap', - '\u22C3': 'xcup', - '\u22C4': 'diam', - '\u22C5': 'sdot', - '\u22C6': 'Star', - '\u22C7': 'divonx', - '\u22C8': 'bowtie', - '\u22C9': 'ltimes', - '\u22CA': 'rtimes', - '\u22CB': 'lthree', - '\u22CC': 'rthree', - '\u22CD': 'bsime', - '\u22CE': 'cuvee', - '\u22CF': 'cuwed', - '\u22D0': 'Sub', - '\u22D1': 'Sup', - '\u22D2': 'Cap', - '\u22D3': 'Cup', - '\u22D4': 'fork', - '\u22D5': 'epar', - '\u22D6': 'ltdot', - '\u22D7': 'gtdot', - '\u22D8': 'Ll', - '\u22D8\u0338': 'nLl', - '\u22D9': 'Gg', - '\u22D9\u0338': 'nGg', - '\u22DA\uFE00': 'lesg', - '\u22DA': 'leg', - '\u22DB': 'gel', - '\u22DB\uFE00': 'gesl', - '\u22DE': 'cuepr', - '\u22DF': 'cuesc', - '\u22E6': 'lnsim', - '\u22E7': 'gnsim', - '\u22E8': 'prnsim', - '\u22E9': 'scnsim', - '\u22EE': 'vellip', - '\u22EF': 'ctdot', - '\u22F0': 'utdot', - '\u22F1': 'dtdot', - '\u22F2': 'disin', - '\u22F3': 'isinsv', - '\u22F4': 'isins', - '\u22F5': 'isindot', - '\u22F5\u0338': 'notindot', - '\u22F6': 'notinvc', - '\u22F7': 'notinvb', - '\u22F9': 'isinE', - '\u22F9\u0338': 'notinE', - '\u22FA': 'nisd', - '\u22FB': 'xnis', - '\u22FC': 'nis', - '\u22FD': 'notnivc', - '\u22FE': 'notnivb', - '\u2305': 'barwed', - '\u2306': 'Barwed', - '\u230C': 'drcrop', - '\u230D': 'dlcrop', - '\u230E': 'urcrop', - '\u230F': 'ulcrop', - '\u2310': 'bnot', - '\u2312': 'profline', - '\u2313': 'profsurf', - '\u2315': 'telrec', - '\u2316': 'target', - '\u231C': 'ulcorn', - '\u231D': 'urcorn', - '\u231E': 'dlcorn', - '\u231F': 'drcorn', - '\u2322': 'frown', - '\u2323': 'smile', - '\u232D': 'cylcty', - '\u232E': 'profalar', - '\u2336': 'topbot', - '\u233D': 'ovbar', - '\u233F': 'solbar', - '\u237C': 'angzarr', - '\u23B0': 'lmoust', - '\u23B1': 'rmoust', - '\u23B4': 'tbrk', - '\u23B5': 'bbrk', - '\u23B6': 'bbrktbrk', - '\u23DC': 'OverParenthesis', - '\u23DD': 'UnderParenthesis', - '\u23DE': 'OverBrace', - '\u23DF': 'UnderBrace', - '\u23E2': 'trpezium', - '\u23E7': 'elinters', - '\u2423': 'blank', - '\u2500': 'boxh', - '\u2502': 'boxv', - '\u250C': 'boxdr', - '\u2510': 'boxdl', - '\u2514': 'boxur', - '\u2518': 'boxul', - '\u251C': 'boxvr', - '\u2524': 'boxvl', - '\u252C': 'boxhd', - '\u2534': 'boxhu', - '\u253C': 'boxvh', - '\u2550': 'boxH', - '\u2551': 'boxV', - '\u2552': 'boxdR', - '\u2553': 'boxDr', - '\u2554': 'boxDR', - '\u2555': 'boxdL', - '\u2556': 'boxDl', - '\u2557': 'boxDL', - '\u2558': 'boxuR', - '\u2559': 'boxUr', - '\u255A': 'boxUR', - '\u255B': 'boxuL', - '\u255C': 'boxUl', - '\u255D': 'boxUL', - '\u255E': 'boxvR', - '\u255F': 'boxVr', - '\u2560': 'boxVR', - '\u2561': 'boxvL', - '\u2562': 'boxVl', - '\u2563': 'boxVL', - '\u2564': 'boxHd', - '\u2565': 'boxhD', - '\u2566': 'boxHD', - '\u2567': 'boxHu', - '\u2568': 'boxhU', - '\u2569': 'boxHU', - '\u256A': 'boxvH', - '\u256B': 'boxVh', - '\u256C': 'boxVH', - '\u2580': 'uhblk', - '\u2584': 'lhblk', - '\u2588': 'block', - '\u2591': 'blk14', - '\u2592': 'blk12', - '\u2593': 'blk34', - '\u25A1': 'squ', - '\u25AA': 'squf', - '\u25AB': 'EmptyVerySmallSquare', - '\u25AD': 'rect', - '\u25AE': 'marker', - '\u25B1': 'fltns', - '\u25B3': 'xutri', - '\u25B4': 'utrif', - '\u25B5': 'utri', - '\u25B8': 'rtrif', - '\u25B9': 'rtri', - '\u25BD': 'xdtri', - '\u25BE': 'dtrif', - '\u25BF': 'dtri', - '\u25C2': 'ltrif', - '\u25C3': 'ltri', - '\u25CA': 'loz', - '\u25CB': 'cir', - '\u25EC': 'tridot', - '\u25EF': 'xcirc', - '\u25F8': 'ultri', - '\u25F9': 'urtri', - '\u25FA': 'lltri', - '\u25FB': 'EmptySmallSquare', - '\u25FC': 'FilledSmallSquare', - '\u2605': 'starf', - '\u2606': 'star', - '\u260E': 'phone', - '\u2640': 'female', - '\u2642': 'male', - '\u2660': 'spades', - '\u2663': 'clubs', - '\u2665': 'hearts', - '\u2666': 'diams', - '\u266A': 'sung', - '\u2713': 'check', - '\u2717': 'cross', - '\u2720': 'malt', - '\u2736': 'sext', - '\u2758': 'VerticalSeparator', - '\u27C8': 'bsolhsub', - '\u27C9': 'suphsol', - '\u27F5': 'xlarr', - '\u27F6': 'xrarr', - '\u27F7': 'xharr', - '\u27F8': 'xlArr', - '\u27F9': 'xrArr', - '\u27FA': 'xhArr', - '\u27FC': 'xmap', - '\u27FF': 'dzigrarr', - '\u2902': 'nvlArr', - '\u2903': 'nvrArr', - '\u2904': 'nvHarr', - '\u2905': 'Map', - '\u290C': 'lbarr', - '\u290D': 'rbarr', - '\u290E': 'lBarr', - '\u290F': 'rBarr', - '\u2910': 'RBarr', - '\u2911': 'DDotrahd', - '\u2912': 'UpArrowBar', - '\u2913': 'DownArrowBar', - '\u2916': 'Rarrtl', - '\u2919': 'latail', - '\u291A': 'ratail', - '\u291B': 'lAtail', - '\u291C': 'rAtail', - '\u291D': 'larrfs', - '\u291E': 'rarrfs', - '\u291F': 'larrbfs', - '\u2920': 'rarrbfs', - '\u2923': 'nwarhk', - '\u2924': 'nearhk', - '\u2925': 'searhk', - '\u2926': 'swarhk', - '\u2927': 'nwnear', - '\u2928': 'toea', - '\u2929': 'tosa', - '\u292A': 'swnwar', - '\u2933': 'rarrc', - '\u2933\u0338': 'nrarrc', - '\u2935': 'cudarrr', - '\u2936': 'ldca', - '\u2937': 'rdca', - '\u2938': 'cudarrl', - '\u2939': 'larrpl', - '\u293C': 'curarrm', - '\u293D': 'cularrp', - '\u2945': 'rarrpl', - '\u2948': 'harrcir', - '\u2949': 'Uarrocir', - '\u294A': 'lurdshar', - '\u294B': 'ldrushar', - '\u294E': 'LeftRightVector', - '\u294F': 'RightUpDownVector', - '\u2950': 'DownLeftRightVector', - '\u2951': 'LeftUpDownVector', - '\u2952': 'LeftVectorBar', - '\u2953': 'RightVectorBar', - '\u2954': 'RightUpVectorBar', - '\u2955': 'RightDownVectorBar', - '\u2956': 'DownLeftVectorBar', - '\u2957': 'DownRightVectorBar', - '\u2958': 'LeftUpVectorBar', - '\u2959': 'LeftDownVectorBar', - '\u295A': 'LeftTeeVector', - '\u295B': 'RightTeeVector', - '\u295C': 'RightUpTeeVector', - '\u295D': 'RightDownTeeVector', - '\u295E': 'DownLeftTeeVector', - '\u295F': 'DownRightTeeVector', - '\u2960': 'LeftUpTeeVector', - '\u2961': 'LeftDownTeeVector', - '\u2962': 'lHar', - '\u2963': 'uHar', - '\u2964': 'rHar', - '\u2965': 'dHar', - '\u2966': 'luruhar', - '\u2967': 'ldrdhar', - '\u2968': 'ruluhar', - '\u2969': 'rdldhar', - '\u296A': 'lharul', - '\u296B': 'llhard', - '\u296C': 'rharul', - '\u296D': 'lrhard', - '\u296E': 'udhar', - '\u296F': 'duhar', - '\u2970': 'RoundImplies', - '\u2971': 'erarr', - '\u2972': 'simrarr', - '\u2973': 'larrsim', - '\u2974': 'rarrsim', - '\u2975': 'rarrap', - '\u2976': 'ltlarr', - '\u2978': 'gtrarr', - '\u2979': 'subrarr', - '\u297B': 'suplarr', - '\u297C': 'lfisht', - '\u297D': 'rfisht', - '\u297E': 'ufisht', - '\u297F': 'dfisht', - '\u299A': 'vzigzag', - '\u299C': 'vangrt', - '\u299D': 'angrtvbd', - '\u29A4': 'ange', - '\u29A5': 'range', - '\u29A6': 'dwangle', - '\u29A7': 'uwangle', - '\u29A8': 'angmsdaa', - '\u29A9': 'angmsdab', - '\u29AA': 'angmsdac', - '\u29AB': 'angmsdad', - '\u29AC': 'angmsdae', - '\u29AD': 'angmsdaf', - '\u29AE': 'angmsdag', - '\u29AF': 'angmsdah', - '\u29B0': 'bemptyv', - '\u29B1': 'demptyv', - '\u29B2': 'cemptyv', - '\u29B3': 'raemptyv', - '\u29B4': 'laemptyv', - '\u29B5': 'ohbar', - '\u29B6': 'omid', - '\u29B7': 'opar', - '\u29B9': 'operp', - '\u29BB': 'olcross', - '\u29BC': 'odsold', - '\u29BE': 'olcir', - '\u29BF': 'ofcir', - '\u29C0': 'olt', - '\u29C1': 'ogt', - '\u29C2': 'cirscir', - '\u29C3': 'cirE', - '\u29C4': 'solb', - '\u29C5': 'bsolb', - '\u29C9': 'boxbox', - '\u29CD': 'trisb', - '\u29CE': 'rtriltri', - '\u29CF': 'LeftTriangleBar', - '\u29CF\u0338': 'NotLeftTriangleBar', - '\u29D0': 'RightTriangleBar', - '\u29D0\u0338': 'NotRightTriangleBar', - '\u29DC': 'iinfin', - '\u29DD': 'infintie', - '\u29DE': 'nvinfin', - '\u29E3': 'eparsl', - '\u29E4': 'smeparsl', - '\u29E5': 'eqvparsl', - '\u29EB': 'lozf', - '\u29F4': 'RuleDelayed', - '\u29F6': 'dsol', - '\u2A00': 'xodot', - '\u2A01': 'xoplus', - '\u2A02': 'xotime', - '\u2A04': 'xuplus', - '\u2A06': 'xsqcup', - '\u2A0D': 'fpartint', - '\u2A10': 'cirfnint', - '\u2A11': 'awint', - '\u2A12': 'rppolint', - '\u2A13': 'scpolint', - '\u2A14': 'npolint', - '\u2A15': 'pointint', - '\u2A16': 'quatint', - '\u2A17': 'intlarhk', - '\u2A22': 'pluscir', - '\u2A23': 'plusacir', - '\u2A24': 'simplus', - '\u2A25': 'plusdu', - '\u2A26': 'plussim', - '\u2A27': 'plustwo', - '\u2A29': 'mcomma', - '\u2A2A': 'minusdu', - '\u2A2D': 'loplus', - '\u2A2E': 'roplus', - '\u2A2F': 'Cross', - '\u2A30': 'timesd', - '\u2A31': 'timesbar', - '\u2A33': 'smashp', - '\u2A34': 'lotimes', - '\u2A35': 'rotimes', - '\u2A36': 'otimesas', - '\u2A37': 'Otimes', - '\u2A38': 'odiv', - '\u2A39': 'triplus', - '\u2A3A': 'triminus', - '\u2A3B': 'tritime', - '\u2A3C': 'iprod', - '\u2A3F': 'amalg', - '\u2A40': 'capdot', - '\u2A42': 'ncup', - '\u2A43': 'ncap', - '\u2A44': 'capand', - '\u2A45': 'cupor', - '\u2A46': 'cupcap', - '\u2A47': 'capcup', - '\u2A48': 'cupbrcap', - '\u2A49': 'capbrcup', - '\u2A4A': 'cupcup', - '\u2A4B': 'capcap', - '\u2A4C': 'ccups', - '\u2A4D': 'ccaps', - '\u2A50': 'ccupssm', - '\u2A53': 'And', - '\u2A54': 'Or', - '\u2A55': 'andand', - '\u2A56': 'oror', - '\u2A57': 'orslope', - '\u2A58': 'andslope', - '\u2A5A': 'andv', - '\u2A5B': 'orv', - '\u2A5C': 'andd', - '\u2A5D': 'ord', - '\u2A5F': 'wedbar', - '\u2A66': 'sdote', - '\u2A6A': 'simdot', - '\u2A6D': 'congdot', - '\u2A6D\u0338': 'ncongdot', - '\u2A6E': 'easter', - '\u2A6F': 'apacir', - '\u2A70': 'apE', - '\u2A70\u0338': 'napE', - '\u2A71': 'eplus', - '\u2A72': 'pluse', - '\u2A73': 'Esim', - '\u2A77': 'eDDot', - '\u2A78': 'equivDD', - '\u2A79': 'ltcir', - '\u2A7A': 'gtcir', - '\u2A7B': 'ltquest', - '\u2A7C': 'gtquest', - '\u2A7D': 'les', - '\u2A7D\u0338': 'nles', - '\u2A7E': 'ges', - '\u2A7E\u0338': 'nges', - '\u2A7F': 'lesdot', - '\u2A80': 'gesdot', - '\u2A81': 'lesdoto', - '\u2A82': 'gesdoto', - '\u2A83': 'lesdotor', - '\u2A84': 'gesdotol', - '\u2A85': 'lap', - '\u2A86': 'gap', - '\u2A87': 'lne', - '\u2A88': 'gne', - '\u2A89': 'lnap', - '\u2A8A': 'gnap', - '\u2A8B': 'lEg', - '\u2A8C': 'gEl', - '\u2A8D': 'lsime', - '\u2A8E': 'gsime', - '\u2A8F': 'lsimg', - '\u2A90': 'gsiml', - '\u2A91': 'lgE', - '\u2A92': 'glE', - '\u2A93': 'lesges', - '\u2A94': 'gesles', - '\u2A95': 'els', - '\u2A96': 'egs', - '\u2A97': 'elsdot', - '\u2A98': 'egsdot', - '\u2A99': 'el', - '\u2A9A': 'eg', - '\u2A9D': 'siml', - '\u2A9E': 'simg', - '\u2A9F': 'simlE', - '\u2AA0': 'simgE', - '\u2AA1': 'LessLess', - '\u2AA1\u0338': 'NotNestedLessLess', - '\u2AA2': 'GreaterGreater', - '\u2AA2\u0338': 'NotNestedGreaterGreater', - '\u2AA4': 'glj', - '\u2AA5': 'gla', - '\u2AA6': 'ltcc', - '\u2AA7': 'gtcc', - '\u2AA8': 'lescc', - '\u2AA9': 'gescc', - '\u2AAA': 'smt', - '\u2AAB': 'lat', - '\u2AAC': 'smte', - '\u2AAC\uFE00': 'smtes', - '\u2AAD': 'late', - '\u2AAD\uFE00': 'lates', - '\u2AAE': 'bumpE', - '\u2AAF': 'pre', - '\u2AAF\u0338': 'npre', - '\u2AB0': 'sce', - '\u2AB0\u0338': 'nsce', - '\u2AB3': 'prE', - '\u2AB4': 'scE', - '\u2AB5': 'prnE', - '\u2AB6': 'scnE', - '\u2AB7': 'prap', - '\u2AB8': 'scap', - '\u2AB9': 'prnap', - '\u2ABA': 'scnap', - '\u2ABB': 'Pr', - '\u2ABC': 'Sc', - '\u2ABD': 'subdot', - '\u2ABE': 'supdot', - '\u2ABF': 'subplus', - '\u2AC0': 'supplus', - '\u2AC1': 'submult', - '\u2AC2': 'supmult', - '\u2AC3': 'subedot', - '\u2AC4': 'supedot', - '\u2AC5': 'subE', - '\u2AC5\u0338': 'nsubE', - '\u2AC6': 'supE', - '\u2AC6\u0338': 'nsupE', - '\u2AC7': 'subsim', - '\u2AC8': 'supsim', - '\u2ACB\uFE00': 'vsubnE', - '\u2ACB': 'subnE', - '\u2ACC\uFE00': 'vsupnE', - '\u2ACC': 'supnE', - '\u2ACF': 'csub', - '\u2AD0': 'csup', - '\u2AD1': 'csube', - '\u2AD2': 'csupe', - '\u2AD3': 'subsup', - '\u2AD4': 'supsub', - '\u2AD5': 'subsub', - '\u2AD6': 'supsup', - '\u2AD7': 'suphsub', - '\u2AD8': 'supdsub', - '\u2AD9': 'forkv', - '\u2ADA': 'topfork', - '\u2ADB': 'mlcp', - '\u2AE4': 'Dashv', - '\u2AE6': 'Vdashl', - '\u2AE7': 'Barv', - '\u2AE8': 'vBar', - '\u2AE9': 'vBarv', - '\u2AEB': 'Vbar', - '\u2AEC': 'Not', - '\u2AED': 'bNot', - '\u2AEE': 'rnmid', - '\u2AEF': 'cirmid', - '\u2AF0': 'midcir', - '\u2AF1': 'topcir', - '\u2AF2': 'nhpar', - '\u2AF3': 'parsim', - '\u2AFD': 'parsl', - '\u2AFD\u20E5': 'nparsl', - '\u266D': 'flat', - '\u266E': 'natur', - '\u266F': 'sharp', - '\xA4': 'curren', - '\xA2': 'cent', - '$': 'dollar', - '\xA3': 'pound', - '\xA5': 'yen', - '\u20AC': 'euro', - '\xB9': 'sup1', - '\xBD': 'half', - '\u2153': 'frac13', - '\xBC': 'frac14', - '\u2155': 'frac15', - '\u2159': 'frac16', - '\u215B': 'frac18', - '\xB2': 'sup2', - '\u2154': 'frac23', - '\u2156': 'frac25', - '\xB3': 'sup3', - '\xBE': 'frac34', - '\u2157': 'frac35', - '\u215C': 'frac38', - '\u2158': 'frac45', - '\u215A': 'frac56', - '\u215D': 'frac58', - '\u215E': 'frac78', - '\uD835\uDCB6': 'ascr', - '\uD835\uDD52': 'aopf', - '\uD835\uDD1E': 'afr', - '\uD835\uDD38': 'Aopf', - '\uD835\uDD04': 'Afr', - '\uD835\uDC9C': 'Ascr', - '\xAA': 'ordf', - '\xE1': 'aacute', - '\xC1': 'Aacute', - '\xE0': 'agrave', - '\xC0': 'Agrave', - '\u0103': 'abreve', - '\u0102': 'Abreve', - '\xE2': 'acirc', - '\xC2': 'Acirc', - '\xE5': 'aring', - '\xC5': 'angst', - '\xE4': 'auml', - '\xC4': 'Auml', - '\xE3': 'atilde', - '\xC3': 'Atilde', - '\u0105': 'aogon', - '\u0104': 'Aogon', - '\u0101': 'amacr', - '\u0100': 'Amacr', - '\xE6': 'aelig', - '\xC6': 'AElig', - '\uD835\uDCB7': 'bscr', - '\uD835\uDD53': 'bopf', - '\uD835\uDD1F': 'bfr', - '\uD835\uDD39': 'Bopf', - '\u212C': 'Bscr', - '\uD835\uDD05': 'Bfr', - '\uD835\uDD20': 'cfr', - '\uD835\uDCB8': 'cscr', - '\uD835\uDD54': 'copf', - '\u212D': 'Cfr', - '\uD835\uDC9E': 'Cscr', - '\u2102': 'Copf', - '\u0107': 'cacute', - '\u0106': 'Cacute', - '\u0109': 'ccirc', - '\u0108': 'Ccirc', - '\u010D': 'ccaron', - '\u010C': 'Ccaron', - '\u010B': 'cdot', - '\u010A': 'Cdot', - '\xE7': 'ccedil', - '\xC7': 'Ccedil', - '\u2105': 'incare', - '\uD835\uDD21': 'dfr', - '\u2146': 'dd', - '\uD835\uDD55': 'dopf', - '\uD835\uDCB9': 'dscr', - '\uD835\uDC9F': 'Dscr', - '\uD835\uDD07': 'Dfr', - '\u2145': 'DD', - '\uD835\uDD3B': 'Dopf', - '\u010F': 'dcaron', - '\u010E': 'Dcaron', - '\u0111': 'dstrok', - '\u0110': 'Dstrok', - '\xF0': 'eth', - '\xD0': 'ETH', - '\u2147': 'ee', - '\u212F': 'escr', - '\uD835\uDD22': 'efr', - '\uD835\uDD56': 'eopf', - '\u2130': 'Escr', - '\uD835\uDD08': 'Efr', - '\uD835\uDD3C': 'Eopf', - '\xE9': 'eacute', - '\xC9': 'Eacute', - '\xE8': 'egrave', - '\xC8': 'Egrave', - '\xEA': 'ecirc', - '\xCA': 'Ecirc', - '\u011B': 'ecaron', - '\u011A': 'Ecaron', - '\xEB': 'euml', - '\xCB': 'Euml', - '\u0117': 'edot', - '\u0116': 'Edot', - '\u0119': 'eogon', - '\u0118': 'Eogon', - '\u0113': 'emacr', - '\u0112': 'Emacr', - '\uD835\uDD23': 'ffr', - '\uD835\uDD57': 'fopf', - '\uD835\uDCBB': 'fscr', - '\uD835\uDD09': 'Ffr', - '\uD835\uDD3D': 'Fopf', - '\u2131': 'Fscr', - '\uFB00': 'fflig', - '\uFB03': 'ffilig', - '\uFB04': 'ffllig', - '\uFB01': 'filig', - 'fj': 'fjlig', - '\uFB02': 'fllig', - '\u0192': 'fnof', - '\u210A': 'gscr', - '\uD835\uDD58': 'gopf', - '\uD835\uDD24': 'gfr', - '\uD835\uDCA2': 'Gscr', - '\uD835\uDD3E': 'Gopf', - '\uD835\uDD0A': 'Gfr', - '\u01F5': 'gacute', - '\u011F': 'gbreve', - '\u011E': 'Gbreve', - '\u011D': 'gcirc', - '\u011C': 'Gcirc', - '\u0121': 'gdot', - '\u0120': 'Gdot', - '\u0122': 'Gcedil', - '\uD835\uDD25': 'hfr', - '\u210E': 'planckh', - '\uD835\uDCBD': 'hscr', - '\uD835\uDD59': 'hopf', - '\u210B': 'Hscr', - '\u210C': 'Hfr', - '\u210D': 'Hopf', - '\u0125': 'hcirc', - '\u0124': 'Hcirc', - '\u210F': 'hbar', - '\u0127': 'hstrok', - '\u0126': 'Hstrok', - '\uD835\uDD5A': 'iopf', - '\uD835\uDD26': 'ifr', - '\uD835\uDCBE': 'iscr', - '\u2148': 'ii', - '\uD835\uDD40': 'Iopf', - '\u2110': 'Iscr', - '\u2111': 'Im', - '\xED': 'iacute', - '\xCD': 'Iacute', - '\xEC': 'igrave', - '\xCC': 'Igrave', - '\xEE': 'icirc', - '\xCE': 'Icirc', - '\xEF': 'iuml', - '\xCF': 'Iuml', - '\u0129': 'itilde', - '\u0128': 'Itilde', - '\u0130': 'Idot', - '\u012F': 'iogon', - '\u012E': 'Iogon', - '\u012B': 'imacr', - '\u012A': 'Imacr', - '\u0133': 'ijlig', - '\u0132': 'IJlig', - '\u0131': 'imath', - '\uD835\uDCBF': 'jscr', - '\uD835\uDD5B': 'jopf', - '\uD835\uDD27': 'jfr', - '\uD835\uDCA5': 'Jscr', - '\uD835\uDD0D': 'Jfr', - '\uD835\uDD41': 'Jopf', - '\u0135': 'jcirc', - '\u0134': 'Jcirc', - '\u0237': 'jmath', - '\uD835\uDD5C': 'kopf', - '\uD835\uDCC0': 'kscr', - '\uD835\uDD28': 'kfr', - '\uD835\uDCA6': 'Kscr', - '\uD835\uDD42': 'Kopf', - '\uD835\uDD0E': 'Kfr', - '\u0137': 'kcedil', - '\u0136': 'Kcedil', - '\uD835\uDD29': 'lfr', - '\uD835\uDCC1': 'lscr', - '\u2113': 'ell', - '\uD835\uDD5D': 'lopf', - '\u2112': 'Lscr', - '\uD835\uDD0F': 'Lfr', - '\uD835\uDD43': 'Lopf', - '\u013A': 'lacute', - '\u0139': 'Lacute', - '\u013E': 'lcaron', - '\u013D': 'Lcaron', - '\u013C': 'lcedil', - '\u013B': 'Lcedil', - '\u0142': 'lstrok', - '\u0141': 'Lstrok', - '\u0140': 'lmidot', - '\u013F': 'Lmidot', - '\uD835\uDD2A': 'mfr', - '\uD835\uDD5E': 'mopf', - '\uD835\uDCC2': 'mscr', - '\uD835\uDD10': 'Mfr', - '\uD835\uDD44': 'Mopf', - '\u2133': 'Mscr', - '\uD835\uDD2B': 'nfr', - '\uD835\uDD5F': 'nopf', - '\uD835\uDCC3': 'nscr', - '\u2115': 'Nopf', - '\uD835\uDCA9': 'Nscr', - '\uD835\uDD11': 'Nfr', - '\u0144': 'nacute', - '\u0143': 'Nacute', - '\u0148': 'ncaron', - '\u0147': 'Ncaron', - '\xF1': 'ntilde', - '\xD1': 'Ntilde', - '\u0146': 'ncedil', - '\u0145': 'Ncedil', - '\u2116': 'numero', - '\u014B': 'eng', - '\u014A': 'ENG', - '\uD835\uDD60': 'oopf', - '\uD835\uDD2C': 'ofr', - '\u2134': 'oscr', - '\uD835\uDCAA': 'Oscr', - '\uD835\uDD12': 'Ofr', - '\uD835\uDD46': 'Oopf', - '\xBA': 'ordm', - '\xF3': 'oacute', - '\xD3': 'Oacute', - '\xF2': 'ograve', - '\xD2': 'Ograve', - '\xF4': 'ocirc', - '\xD4': 'Ocirc', - '\xF6': 'ouml', - '\xD6': 'Ouml', - '\u0151': 'odblac', - '\u0150': 'Odblac', - '\xF5': 'otilde', - '\xD5': 'Otilde', - '\xF8': 'oslash', - '\xD8': 'Oslash', - '\u014D': 'omacr', - '\u014C': 'Omacr', - '\u0153': 'oelig', - '\u0152': 'OElig', - '\uD835\uDD2D': 'pfr', - '\uD835\uDCC5': 'pscr', - '\uD835\uDD61': 'popf', - '\u2119': 'Popf', - '\uD835\uDD13': 'Pfr', - '\uD835\uDCAB': 'Pscr', - '\uD835\uDD62': 'qopf', - '\uD835\uDD2E': 'qfr', - '\uD835\uDCC6': 'qscr', - '\uD835\uDCAC': 'Qscr', - '\uD835\uDD14': 'Qfr', - '\u211A': 'Qopf', - '\u0138': 'kgreen', - '\uD835\uDD2F': 'rfr', - '\uD835\uDD63': 'ropf', - '\uD835\uDCC7': 'rscr', - '\u211B': 'Rscr', - '\u211C': 'Re', - '\u211D': 'Ropf', - '\u0155': 'racute', - '\u0154': 'Racute', - '\u0159': 'rcaron', - '\u0158': 'Rcaron', - '\u0157': 'rcedil', - '\u0156': 'Rcedil', - '\uD835\uDD64': 'sopf', - '\uD835\uDCC8': 'sscr', - '\uD835\uDD30': 'sfr', - '\uD835\uDD4A': 'Sopf', - '\uD835\uDD16': 'Sfr', - '\uD835\uDCAE': 'Sscr', - '\u24C8': 'oS', - '\u015B': 'sacute', - '\u015A': 'Sacute', - '\u015D': 'scirc', - '\u015C': 'Scirc', - '\u0161': 'scaron', - '\u0160': 'Scaron', - '\u015F': 'scedil', - '\u015E': 'Scedil', - '\xDF': 'szlig', - '\uD835\uDD31': 'tfr', - '\uD835\uDCC9': 'tscr', - '\uD835\uDD65': 'topf', - '\uD835\uDCAF': 'Tscr', - '\uD835\uDD17': 'Tfr', - '\uD835\uDD4B': 'Topf', - '\u0165': 'tcaron', - '\u0164': 'Tcaron', - '\u0163': 'tcedil', - '\u0162': 'Tcedil', - '\u2122': 'trade', - '\u0167': 'tstrok', - '\u0166': 'Tstrok', - '\uD835\uDCCA': 'uscr', - '\uD835\uDD66': 'uopf', - '\uD835\uDD32': 'ufr', - '\uD835\uDD4C': 'Uopf', - '\uD835\uDD18': 'Ufr', - '\uD835\uDCB0': 'Uscr', - '\xFA': 'uacute', - '\xDA': 'Uacute', - '\xF9': 'ugrave', - '\xD9': 'Ugrave', - '\u016D': 'ubreve', - '\u016C': 'Ubreve', - '\xFB': 'ucirc', - '\xDB': 'Ucirc', - '\u016F': 'uring', - '\u016E': 'Uring', - '\xFC': 'uuml', - '\xDC': 'Uuml', - '\u0171': 'udblac', - '\u0170': 'Udblac', - '\u0169': 'utilde', - '\u0168': 'Utilde', - '\u0173': 'uogon', - '\u0172': 'Uogon', - '\u016B': 'umacr', - '\u016A': 'Umacr', - '\uD835\uDD33': 'vfr', - '\uD835\uDD67': 'vopf', - '\uD835\uDCCB': 'vscr', - '\uD835\uDD19': 'Vfr', - '\uD835\uDD4D': 'Vopf', - '\uD835\uDCB1': 'Vscr', - '\uD835\uDD68': 'wopf', - '\uD835\uDCCC': 'wscr', - '\uD835\uDD34': 'wfr', - '\uD835\uDCB2': 'Wscr', - '\uD835\uDD4E': 'Wopf', - '\uD835\uDD1A': 'Wfr', - '\u0175': 'wcirc', - '\u0174': 'Wcirc', - '\uD835\uDD35': 'xfr', - '\uD835\uDCCD': 'xscr', - '\uD835\uDD69': 'xopf', - '\uD835\uDD4F': 'Xopf', - '\uD835\uDD1B': 'Xfr', - '\uD835\uDCB3': 'Xscr', - '\uD835\uDD36': 'yfr', - '\uD835\uDCCE': 'yscr', - '\uD835\uDD6A': 'yopf', - '\uD835\uDCB4': 'Yscr', - '\uD835\uDD1C': 'Yfr', - '\uD835\uDD50': 'Yopf', - '\xFD': 'yacute', - '\xDD': 'Yacute', - '\u0177': 'ycirc', - '\u0176': 'Ycirc', - '\xFF': 'yuml', - '\u0178': 'Yuml', - '\uD835\uDCCF': 'zscr', - '\uD835\uDD37': 'zfr', - '\uD835\uDD6B': 'zopf', - '\u2128': 'Zfr', - '\u2124': 'Zopf', - '\uD835\uDCB5': 'Zscr', - '\u017A': 'zacute', - '\u0179': 'Zacute', - '\u017E': 'zcaron', - '\u017D': 'Zcaron', - '\u017C': 'zdot', - '\u017B': 'Zdot', - '\u01B5': 'imped', - '\xFE': 'thorn', - '\xDE': 'THORN', - '\u0149': 'napos', - '\u03B1': 'alpha', - '\u0391': 'Alpha', - '\u03B2': 'beta', - '\u0392': 'Beta', - '\u03B3': 'gamma', - '\u0393': 'Gamma', - '\u03B4': 'delta', - '\u0394': 'Delta', - '\u03B5': 'epsi', - '\u03F5': 'epsiv', - '\u0395': 'Epsilon', - '\u03DD': 'gammad', - '\u03DC': 'Gammad', - '\u03B6': 'zeta', - '\u0396': 'Zeta', - '\u03B7': 'eta', - '\u0397': 'Eta', - '\u03B8': 'theta', - '\u03D1': 'thetav', - '\u0398': 'Theta', - '\u03B9': 'iota', - '\u0399': 'Iota', - '\u03BA': 'kappa', - '\u03F0': 'kappav', - '\u039A': 'Kappa', - '\u03BB': 'lambda', - '\u039B': 'Lambda', - '\u03BC': 'mu', - '\xB5': 'micro', - '\u039C': 'Mu', - '\u03BD': 'nu', - '\u039D': 'Nu', - '\u03BE': 'xi', - '\u039E': 'Xi', - '\u03BF': 'omicron', - '\u039F': 'Omicron', - '\u03C0': 'pi', - '\u03D6': 'piv', - '\u03A0': 'Pi', - '\u03C1': 'rho', - '\u03F1': 'rhov', - '\u03A1': 'Rho', - '\u03C3': 'sigma', - '\u03A3': 'Sigma', - '\u03C2': 'sigmaf', - '\u03C4': 'tau', - '\u03A4': 'Tau', - '\u03C5': 'upsi', - '\u03A5': 'Upsilon', - '\u03D2': 'Upsi', - '\u03C6': 'phi', - '\u03D5': 'phiv', - '\u03A6': 'Phi', - '\u03C7': 'chi', - '\u03A7': 'Chi', - '\u03C8': 'psi', - '\u03A8': 'Psi', - '\u03C9': 'omega', - '\u03A9': 'ohm', - '\u0430': 'acy', - '\u0410': 'Acy', - '\u0431': 'bcy', - '\u0411': 'Bcy', - '\u0432': 'vcy', - '\u0412': 'Vcy', - '\u0433': 'gcy', - '\u0413': 'Gcy', - '\u0453': 'gjcy', - '\u0403': 'GJcy', - '\u0434': 'dcy', - '\u0414': 'Dcy', - '\u0452': 'djcy', - '\u0402': 'DJcy', - '\u0435': 'iecy', - '\u0415': 'IEcy', - '\u0451': 'iocy', - '\u0401': 'IOcy', - '\u0454': 'jukcy', - '\u0404': 'Jukcy', - '\u0436': 'zhcy', - '\u0416': 'ZHcy', - '\u0437': 'zcy', - '\u0417': 'Zcy', - '\u0455': 'dscy', - '\u0405': 'DScy', - '\u0438': 'icy', - '\u0418': 'Icy', - '\u0456': 'iukcy', - '\u0406': 'Iukcy', - '\u0457': 'yicy', - '\u0407': 'YIcy', - '\u0439': 'jcy', - '\u0419': 'Jcy', - '\u0458': 'jsercy', - '\u0408': 'Jsercy', - '\u043A': 'kcy', - '\u041A': 'Kcy', - '\u045C': 'kjcy', - '\u040C': 'KJcy', - '\u043B': 'lcy', - '\u041B': 'Lcy', - '\u0459': 'ljcy', - '\u0409': 'LJcy', - '\u043C': 'mcy', - '\u041C': 'Mcy', - '\u043D': 'ncy', - '\u041D': 'Ncy', - '\u045A': 'njcy', - '\u040A': 'NJcy', - '\u043E': 'ocy', - '\u041E': 'Ocy', - '\u043F': 'pcy', - '\u041F': 'Pcy', - '\u0440': 'rcy', - '\u0420': 'Rcy', - '\u0441': 'scy', - '\u0421': 'Scy', - '\u0442': 'tcy', - '\u0422': 'Tcy', - '\u045B': 'tshcy', - '\u040B': 'TSHcy', - '\u0443': 'ucy', - '\u0423': 'Ucy', - '\u045E': 'ubrcy', - '\u040E': 'Ubrcy', - '\u0444': 'fcy', - '\u0424': 'Fcy', - '\u0445': 'khcy', - '\u0425': 'KHcy', - '\u0446': 'tscy', - '\u0426': 'TScy', - '\u0447': 'chcy', - '\u0427': 'CHcy', - '\u045F': 'dzcy', - '\u040F': 'DZcy', - '\u0448': 'shcy', - '\u0428': 'SHcy', - '\u0449': 'shchcy', - '\u0429': 'SHCHcy', - '\u044A': 'hardcy', - '\u042A': 'HARDcy', - '\u044B': 'ycy', - '\u042B': 'Ycy', - '\u044C': 'softcy', - '\u042C': 'SOFTcy', - '\u044D': 'ecy', - '\u042D': 'Ecy', - '\u044E': 'yucy', - '\u042E': 'YUcy', - '\u044F': 'yacy', - '\u042F': 'YAcy', - '\u2135': 'aleph', - '\u2136': 'beth', - '\u2137': 'gimel', - '\u2138': 'daleth', -} - -const regexEscape = /["&'<>`]/g -const escapeMap = { - '"': '"', - '&': '&', - '\'': ''', - '<': '<', - // See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the - // following is not strictly necessary unless it’s part of a tag or an - // unquoted attribute value. We’re only escaping it to support those - // situations, and for XML support. - '>': '>', - // In Internet Explorer ≤ 8, the backtick character can be used - // to break out of (un)quoted attribute values or HTML comments. - // See http://html5sec.org/#102, http://html5sec.org/#108, and - // http://html5sec.org/#133. - '`': '`', -} - -const regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/ - -const regexInvalidRawCodePoint = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/ -const regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g -const decodeMap = { - aacute: '\xE1', - Aacute: '\xC1', - abreve: '\u0103', - Abreve: '\u0102', - ac: '\u223E', - acd: '\u223F', - acE: '\u223E\u0333', - acirc: '\xE2', - Acirc: '\xC2', - acute: '\xB4', - acy: '\u0430', - Acy: '\u0410', - aelig: '\xE6', - AElig: '\xC6', - af: '\u2061', - afr: '\uD835\uDD1E', - Afr: '\uD835\uDD04', - agrave: '\xE0', - Agrave: '\xC0', - alefsym: '\u2135', - aleph: '\u2135', - alpha: '\u03B1', - Alpha: '\u0391', - amacr: '\u0101', - Amacr: '\u0100', - amalg: '\u2A3F', - amp: '&', - AMP: '&', - and: '\u2227', - And: '\u2A53', - 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', - Aogon: '\u0104', - aopf: '\uD835\uDD52', - Aopf: '\uD835\uDD38', - ap: '\u2248', - apacir: '\u2A6F', - ape: '\u224A', - apE: '\u2A70', - apid: '\u224B', - apos: '\'', - ApplyFunction: '\u2061', - approx: '\u2248', - approxeq: '\u224A', - aring: '\xE5', - Aring: '\xC5', - ascr: '\uD835\uDCB6', - Ascr: '\uD835\uDC9C', - Assign: '\u2254', - ast: '*', - asymp: '\u2248', - asympeq: '\u224D', - atilde: '\xE3', - Atilde: '\xC3', - auml: '\xE4', - Auml: '\xC4', - awconint: '\u2233', - awint: '\u2A11', - backcong: '\u224C', - backepsilon: '\u03F6', - backprime: '\u2035', - backsim: '\u223D', - backsimeq: '\u22CD', - Backslash: '\u2216', - Barv: '\u2AE7', - barvee: '\u22BD', - barwed: '\u2305', - Barwed: '\u2306', - barwedge: '\u2305', - bbrk: '\u23B5', - bbrktbrk: '\u23B6', - bcong: '\u224C', - bcy: '\u0431', - Bcy: '\u0411', - bdquo: '\u201E', - becaus: '\u2235', - because: '\u2235', - Because: '\u2235', - bemptyv: '\u29B0', - bepsi: '\u03F6', - bernou: '\u212C', - Bernoullis: '\u212C', - beta: '\u03B2', - Beta: '\u0392', - beth: '\u2136', - between: '\u226C', - bfr: '\uD835\uDD1F', - Bfr: '\uD835\uDD05', - 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', - bNot: '\u2AED', - bopf: '\uD835\uDD53', - Bopf: '\uD835\uDD39', - bot: '\u22A5', - bottom: '\u22A5', - bowtie: '\u22C8', - boxbox: '\u29C9', - boxdl: '\u2510', - boxdL: '\u2555', - boxDl: '\u2556', - boxDL: '\u2557', - boxdr: '\u250C', - boxdR: '\u2552', - boxDr: '\u2553', - boxDR: '\u2554', - boxh: '\u2500', - boxH: '\u2550', - boxhd: '\u252C', - boxhD: '\u2565', - boxHd: '\u2564', - boxHD: '\u2566', - boxhu: '\u2534', - boxhU: '\u2568', - boxHu: '\u2567', - boxHU: '\u2569', - boxminus: '\u229F', - boxplus: '\u229E', - boxtimes: '\u22A0', - boxul: '\u2518', - boxuL: '\u255B', - boxUl: '\u255C', - boxUL: '\u255D', - boxur: '\u2514', - boxuR: '\u2558', - boxUr: '\u2559', - boxUR: '\u255A', - boxv: '\u2502', - boxV: '\u2551', - boxvh: '\u253C', - boxvH: '\u256A', - boxVh: '\u256B', - boxVH: '\u256C', - boxvl: '\u2524', - boxvL: '\u2561', - boxVl: '\u2562', - boxVL: '\u2563', - boxvr: '\u251C', - boxvR: '\u255E', - boxVr: '\u255F', - boxVR: '\u2560', - bprime: '\u2035', - breve: '\u02D8', - Breve: '\u02D8', - brvbar: '\xA6', - bscr: '\uD835\uDCB7', - Bscr: '\u212C', - bsemi: '\u204F', - bsim: '\u223D', - bsime: '\u22CD', - bsol: '\\', - bsolb: '\u29C5', - bsolhsub: '\u27C8', - bull: '\u2022', - bullet: '\u2022', - bump: '\u224E', - bumpe: '\u224F', - bumpE: '\u2AAE', - bumpeq: '\u224F', - Bumpeq: '\u224E', - cacute: '\u0107', - Cacute: '\u0106', - cap: '\u2229', - Cap: '\u22D2', - capand: '\u2A44', - capbrcup: '\u2A49', - capcap: '\u2A4B', - capcup: '\u2A47', - capdot: '\u2A40', - CapitalDifferentialD: '\u2145', - caps: '\u2229\uFE00', - caret: '\u2041', - caron: '\u02C7', - Cayleys: '\u212D', - ccaps: '\u2A4D', - ccaron: '\u010D', - Ccaron: '\u010C', - ccedil: '\xE7', - Ccedil: '\xC7', - ccirc: '\u0109', - Ccirc: '\u0108', - Cconint: '\u2230', - ccups: '\u2A4C', - ccupssm: '\u2A50', - cdot: '\u010B', - Cdot: '\u010A', - cedil: '\xB8', - Cedilla: '\xB8', - cemptyv: '\u29B2', - cent: '\xA2', - centerdot: '\xB7', - CenterDot: '\xB7', - cfr: '\uD835\uDD20', - Cfr: '\u212D', - chcy: '\u0447', - CHcy: '\u0427', - check: '\u2713', - checkmark: '\u2713', - chi: '\u03C7', - Chi: '\u03A7', - cir: '\u25CB', - circ: '\u02C6', - circeq: '\u2257', - circlearrowleft: '\u21BA', - circlearrowright: '\u21BB', - circledast: '\u229B', - circledcirc: '\u229A', - circleddash: '\u229D', - CircleDot: '\u2299', - circledR: '\xAE', - circledS: '\u24C8', - CircleMinus: '\u2296', - CirclePlus: '\u2295', - CircleTimes: '\u2297', - cire: '\u2257', - cirE: '\u29C3', - cirfnint: '\u2A10', - cirmid: '\u2AEF', - cirscir: '\u29C2', - ClockwiseContourIntegral: '\u2232', - CloseCurlyDoubleQuote: '\u201D', - CloseCurlyQuote: '\u2019', - clubs: '\u2663', - clubsuit: '\u2663', - colon: ':', - Colon: '\u2237', - colone: '\u2254', - Colone: '\u2A74', - coloneq: '\u2254', - comma: ',', - commat: '@', - comp: '\u2201', - compfn: '\u2218', - complement: '\u2201', - complexes: '\u2102', - cong: '\u2245', - congdot: '\u2A6D', - Congruent: '\u2261', - conint: '\u222E', - Conint: '\u222F', - ContourIntegral: '\u222E', - copf: '\uD835\uDD54', - Copf: '\u2102', - coprod: '\u2210', - Coproduct: '\u2210', - copy: '\xA9', - COPY: '\xA9', - copysr: '\u2117', - CounterClockwiseContourIntegral: '\u2233', - crarr: '\u21B5', - cross: '\u2717', - Cross: '\u2A2F', - cscr: '\uD835\uDCB8', - Cscr: '\uD835\uDC9E', - csub: '\u2ACF', - csube: '\u2AD1', - csup: '\u2AD0', - csupe: '\u2AD2', - ctdot: '\u22EF', - cudarrl: '\u2938', - cudarrr: '\u2935', - cuepr: '\u22DE', - cuesc: '\u22DF', - cularr: '\u21B6', - cularrp: '\u293D', - cup: '\u222A', - Cup: '\u22D3', - cupbrcap: '\u2A48', - cupcap: '\u2A46', - CupCap: '\u224D', - cupcup: '\u2A4A', - cupdot: '\u228D', - cupor: '\u2A45', - cups: '\u222A\uFE00', - curarr: '\u21B7', - curarrm: '\u293C', - curlyeqprec: '\u22DE', - curlyeqsucc: '\u22DF', - curlyvee: '\u22CE', - curlywedge: '\u22CF', - curren: '\xA4', - curvearrowleft: '\u21B6', - curvearrowright: '\u21B7', - cuvee: '\u22CE', - cuwed: '\u22CF', - cwconint: '\u2232', - cwint: '\u2231', - cylcty: '\u232D', - dagger: '\u2020', - Dagger: '\u2021', - daleth: '\u2138', - darr: '\u2193', - dArr: '\u21D3', - Darr: '\u21A1', - dash: '\u2010', - dashv: '\u22A3', - Dashv: '\u2AE4', - dbkarow: '\u290F', - dblac: '\u02DD', - dcaron: '\u010F', - Dcaron: '\u010E', - dcy: '\u0434', - Dcy: '\u0414', - dd: '\u2146', - DD: '\u2145', - ddagger: '\u2021', - ddarr: '\u21CA', - DDotrahd: '\u2911', - ddotseq: '\u2A77', - deg: '\xB0', - Del: '\u2207', - delta: '\u03B4', - Delta: '\u0394', - demptyv: '\u29B1', - dfisht: '\u297F', - dfr: '\uD835\uDD21', - Dfr: '\uD835\uDD07', - dHar: '\u2965', - dharl: '\u21C3', - dharr: '\u21C2', - DiacriticalAcute: '\xB4', - DiacriticalDot: '\u02D9', - DiacriticalDoubleAcute: '\u02DD', - DiacriticalGrave: '`', - DiacriticalTilde: '\u02DC', - diam: '\u22C4', - diamond: '\u22C4', - Diamond: '\u22C4', - diamondsuit: '\u2666', - diams: '\u2666', - die: '\xA8', - DifferentialD: '\u2146', - digamma: '\u03DD', - disin: '\u22F2', - div: '\xF7', - divide: '\xF7', - divideontimes: '\u22C7', - divonx: '\u22C7', - djcy: '\u0452', - DJcy: '\u0402', - dlcorn: '\u231E', - dlcrop: '\u230D', - dollar: '$', - dopf: '\uD835\uDD55', - Dopf: '\uD835\uDD3B', - dot: '\u02D9', - Dot: '\xA8', - DotDot: '\u20DC', - doteq: '\u2250', - doteqdot: '\u2251', - DotEqual: '\u2250', - dotminus: '\u2238', - dotplus: '\u2214', - dotsquare: '\u22A1', - doublebarwedge: '\u2306', - 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', - Downarrow: '\u21D3', - DownArrow: '\u2193', - DownArrowBar: '\u2913', - DownArrowUpArrow: '\u21F5', - DownBreve: '\u0311', - downdownarrows: '\u21CA', - downharpoonleft: '\u21C3', - downharpoonright: '\u21C2', - DownLeftRightVector: '\u2950', - DownLeftTeeVector: '\u295E', - DownLeftVector: '\u21BD', - DownLeftVectorBar: '\u2956', - DownRightTeeVector: '\u295F', - DownRightVector: '\u21C1', - DownRightVectorBar: '\u2957', - DownTee: '\u22A4', - DownTeeArrow: '\u21A7', - drbkarow: '\u2910', - drcorn: '\u231F', - drcrop: '\u230C', - dscr: '\uD835\uDCB9', - Dscr: '\uD835\uDC9F', - dscy: '\u0455', - DScy: '\u0405', - dsol: '\u29F6', - dstrok: '\u0111', - Dstrok: '\u0110', - dtdot: '\u22F1', - dtri: '\u25BF', - dtrif: '\u25BE', - duarr: '\u21F5', - duhar: '\u296F', - dwangle: '\u29A6', - dzcy: '\u045F', - DZcy: '\u040F', - dzigrarr: '\u27FF', - eacute: '\xE9', - Eacute: '\xC9', - easter: '\u2A6E', - ecaron: '\u011B', - Ecaron: '\u011A', - ecir: '\u2256', - ecirc: '\xEA', - Ecirc: '\xCA', - ecolon: '\u2255', - ecy: '\u044D', - Ecy: '\u042D', - eDDot: '\u2A77', - edot: '\u0117', - eDot: '\u2251', - Edot: '\u0116', - ee: '\u2147', - efDot: '\u2252', - efr: '\uD835\uDD22', - Efr: '\uD835\uDD08', - eg: '\u2A9A', - egrave: '\xE8', - Egrave: '\xC8', - egs: '\u2A96', - egsdot: '\u2A98', - el: '\u2A99', - Element: '\u2208', - elinters: '\u23E7', - ell: '\u2113', - els: '\u2A95', - elsdot: '\u2A97', - emacr: '\u0113', - Emacr: '\u0112', - empty: '\u2205', - emptyset: '\u2205', - EmptySmallSquare: '\u25FB', - emptyv: '\u2205', - EmptyVerySmallSquare: '\u25AB', - emsp: '\u2003', - emsp13: '\u2004', - emsp14: '\u2005', - eng: '\u014B', - ENG: '\u014A', - ensp: '\u2002', - eogon: '\u0119', - Eogon: '\u0118', - eopf: '\uD835\uDD56', - Eopf: '\uD835\uDD3C', - epar: '\u22D5', - eparsl: '\u29E3', - eplus: '\u2A71', - epsi: '\u03B5', - epsilon: '\u03B5', - Epsilon: '\u0395', - epsiv: '\u03F5', - eqcirc: '\u2256', - eqcolon: '\u2255', - eqsim: '\u2242', - eqslantgtr: '\u2A96', - eqslantless: '\u2A95', - Equal: '\u2A75', - equals: '=', - EqualTilde: '\u2242', - equest: '\u225F', - Equilibrium: '\u21CC', - equiv: '\u2261', - equivDD: '\u2A78', - eqvparsl: '\u29E5', - erarr: '\u2971', - erDot: '\u2253', - escr: '\u212F', - Escr: '\u2130', - esdot: '\u2250', - esim: '\u2242', - Esim: '\u2A73', - eta: '\u03B7', - Eta: '\u0397', - eth: '\xF0', - ETH: '\xD0', - euml: '\xEB', - Euml: '\xCB', - euro: '\u20AC', - excl: '!', - exist: '\u2203', - Exists: '\u2203', - expectation: '\u2130', - exponentiale: '\u2147', - ExponentialE: '\u2147', - fallingdotseq: '\u2252', - fcy: '\u0444', - Fcy: '\u0424', - female: '\u2640', - ffilig: '\uFB03', - fflig: '\uFB00', - ffllig: '\uFB04', - ffr: '\uD835\uDD23', - Ffr: '\uD835\uDD09', - filig: '\uFB01', - FilledSmallSquare: '\u25FC', - FilledVerySmallSquare: '\u25AA', - fjlig: 'fj', - flat: '\u266D', - fllig: '\uFB02', - fltns: '\u25B1', - fnof: '\u0192', - fopf: '\uD835\uDD57', - Fopf: '\uD835\uDD3D', - forall: '\u2200', - ForAll: '\u2200', - fork: '\u22D4', - forkv: '\u2AD9', - Fouriertrf: '\u2131', - fpartint: '\u2A0D', - frac12: '\xBD', - frac13: '\u2153', - frac14: '\xBC', - frac15: '\u2155', - frac16: '\u2159', - frac18: '\u215B', - frac23: '\u2154', - frac25: '\u2156', - frac34: '\xBE', - frac35: '\u2157', - frac38: '\u215C', - frac45: '\u2158', - frac56: '\u215A', - frac58: '\u215D', - frac78: '\u215E', - frasl: '\u2044', - frown: '\u2322', - fscr: '\uD835\uDCBB', - Fscr: '\u2131', - gacute: '\u01F5', - gamma: '\u03B3', - Gamma: '\u0393', - gammad: '\u03DD', - Gammad: '\u03DC', - gap: '\u2A86', - gbreve: '\u011F', - Gbreve: '\u011E', - Gcedil: '\u0122', - gcirc: '\u011D', - Gcirc: '\u011C', - gcy: '\u0433', - Gcy: '\u0413', - gdot: '\u0121', - Gdot: '\u0120', - ge: '\u2265', - gE: '\u2267', - gel: '\u22DB', - gEl: '\u2A8C', - geq: '\u2265', - geqq: '\u2267', - geqslant: '\u2A7E', - ges: '\u2A7E', - gescc: '\u2AA9', - gesdot: '\u2A80', - gesdoto: '\u2A82', - gesdotol: '\u2A84', - gesl: '\u22DB\uFE00', - gesles: '\u2A94', - gfr: '\uD835\uDD24', - Gfr: '\uD835\uDD0A', - gg: '\u226B', - Gg: '\u22D9', - ggg: '\u22D9', - gimel: '\u2137', - gjcy: '\u0453', - GJcy: '\u0403', - gl: '\u2277', - gla: '\u2AA5', - glE: '\u2A92', - glj: '\u2AA4', - gnap: '\u2A8A', - gnapprox: '\u2A8A', - gne: '\u2A88', - gnE: '\u2269', - gneq: '\u2A88', - gneqq: '\u2269', - gnsim: '\u22E7', - gopf: '\uD835\uDD58', - Gopf: '\uD835\uDD3E', - grave: '`', - GreaterEqual: '\u2265', - GreaterEqualLess: '\u22DB', - GreaterFullEqual: '\u2267', - GreaterGreater: '\u2AA2', - GreaterLess: '\u2277', - GreaterSlantEqual: '\u2A7E', - GreaterTilde: '\u2273', - gscr: '\u210A', - Gscr: '\uD835\uDCA2', - gsim: '\u2273', - gsime: '\u2A8E', - gsiml: '\u2A90', - gt: '>', - Gt: '\u226B', - 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', - Hacek: '\u02C7', - hairsp: '\u200A', - half: '\xBD', - hamilt: '\u210B', - hardcy: '\u044A', - HARDcy: '\u042A', - harr: '\u2194', - hArr: '\u21D4', - harrcir: '\u2948', - harrw: '\u21AD', - Hat: '^', - hbar: '\u210F', - hcirc: '\u0125', - Hcirc: '\u0124', - hearts: '\u2665', - heartsuit: '\u2665', - hellip: '\u2026', - hercon: '\u22B9', - hfr: '\uD835\uDD25', - Hfr: '\u210C', - HilbertSpace: '\u210B', - hksearow: '\u2925', - hkswarow: '\u2926', - hoarr: '\u21FF', - homtht: '\u223B', - hookleftarrow: '\u21A9', - hookrightarrow: '\u21AA', - hopf: '\uD835\uDD59', - Hopf: '\u210D', - horbar: '\u2015', - HorizontalLine: '\u2500', - hscr: '\uD835\uDCBD', - Hscr: '\u210B', - hslash: '\u210F', - hstrok: '\u0127', - Hstrok: '\u0126', - HumpDownHump: '\u224E', - HumpEqual: '\u224F', - hybull: '\u2043', - hyphen: '\u2010', - iacute: '\xED', - Iacute: '\xCD', - ic: '\u2063', - icirc: '\xEE', - Icirc: '\xCE', - icy: '\u0438', - Icy: '\u0418', - Idot: '\u0130', - iecy: '\u0435', - IEcy: '\u0415', - iexcl: '\xA1', - iff: '\u21D4', - ifr: '\uD835\uDD26', - Ifr: '\u2111', - igrave: '\xEC', - Igrave: '\xCC', - ii: '\u2148', - iiiint: '\u2A0C', - iiint: '\u222D', - iinfin: '\u29DC', - iiota: '\u2129', - ijlig: '\u0133', - IJlig: '\u0132', - Im: '\u2111', - imacr: '\u012B', - Imacr: '\u012A', - image: '\u2111', - ImaginaryI: '\u2148', - imagline: '\u2110', - imagpart: '\u2111', - imath: '\u0131', - imof: '\u22B7', - imped: '\u01B5', - Implies: '\u21D2', - in: '\u2208', - incare: '\u2105', - infin: '\u221E', - infintie: '\u29DD', - inodot: '\u0131', - int: '\u222B', - Int: '\u222C', - intcal: '\u22BA', - integers: '\u2124', - Integral: '\u222B', - intercal: '\u22BA', - Intersection: '\u22C2', - intlarhk: '\u2A17', - intprod: '\u2A3C', - InvisibleComma: '\u2063', - InvisibleTimes: '\u2062', - iocy: '\u0451', - IOcy: '\u0401', - iogon: '\u012F', - Iogon: '\u012E', - iopf: '\uD835\uDD5A', - Iopf: '\uD835\uDD40', - iota: '\u03B9', - Iota: '\u0399', - iprod: '\u2A3C', - iquest: '\xBF', - iscr: '\uD835\uDCBE', - Iscr: '\u2110', - isin: '\u2208', - isindot: '\u22F5', - isinE: '\u22F9', - isins: '\u22F4', - isinsv: '\u22F3', - isinv: '\u2208', - it: '\u2062', - itilde: '\u0129', - Itilde: '\u0128', - iukcy: '\u0456', - Iukcy: '\u0406', - iuml: '\xEF', - Iuml: '\xCF', - jcirc: '\u0135', - Jcirc: '\u0134', - jcy: '\u0439', - Jcy: '\u0419', - jfr: '\uD835\uDD27', - Jfr: '\uD835\uDD0D', - jmath: '\u0237', - jopf: '\uD835\uDD5B', - Jopf: '\uD835\uDD41', - jscr: '\uD835\uDCBF', - Jscr: '\uD835\uDCA5', - jsercy: '\u0458', - Jsercy: '\u0408', - jukcy: '\u0454', - Jukcy: '\u0404', - kappa: '\u03BA', - Kappa: '\u039A', - kappav: '\u03F0', - kcedil: '\u0137', - Kcedil: '\u0136', - kcy: '\u043A', - Kcy: '\u041A', - kfr: '\uD835\uDD28', - Kfr: '\uD835\uDD0E', - kgreen: '\u0138', - khcy: '\u0445', - KHcy: '\u0425', - kjcy: '\u045C', - KJcy: '\u040C', - kopf: '\uD835\uDD5C', - Kopf: '\uD835\uDD42', - kscr: '\uD835\uDCC0', - Kscr: '\uD835\uDCA6', - lAarr: '\u21DA', - lacute: '\u013A', - Lacute: '\u0139', - laemptyv: '\u29B4', - lagran: '\u2112', - lambda: '\u03BB', - Lambda: '\u039B', - lang: '\u27E8', - Lang: '\u27EA', - langd: '\u2991', - langle: '\u27E8', - lap: '\u2A85', - Laplacetrf: '\u2112', - laquo: '\xAB', - larr: '\u2190', - lArr: '\u21D0', - Larr: '\u219E', - larrb: '\u21E4', - larrbfs: '\u291F', - larrfs: '\u291D', - larrhk: '\u21A9', - larrlp: '\u21AB', - larrpl: '\u2939', - larrsim: '\u2973', - larrtl: '\u21A2', - lat: '\u2AAB', - latail: '\u2919', - lAtail: '\u291B', - late: '\u2AAD', - lates: '\u2AAD\uFE00', - lbarr: '\u290C', - lBarr: '\u290E', - lbbrk: '\u2772', - lbrace: '{', - lbrack: '[', - lbrke: '\u298B', - lbrksld: '\u298F', - lbrkslu: '\u298D', - lcaron: '\u013E', - Lcaron: '\u013D', - lcedil: '\u013C', - Lcedil: '\u013B', - lceil: '\u2308', - lcub: '{', - lcy: '\u043B', - Lcy: '\u041B', - ldca: '\u2936', - ldquo: '\u201C', - ldquor: '\u201E', - ldrdhar: '\u2967', - ldrushar: '\u294B', - ldsh: '\u21B2', - le: '\u2264', - lE: '\u2266', - LeftAngleBracket: '\u27E8', - leftarrow: '\u2190', - Leftarrow: '\u21D0', - LeftArrow: '\u2190', - LeftArrowBar: '\u21E4', - LeftArrowRightArrow: '\u21C6', - leftarrowtail: '\u21A2', - LeftCeiling: '\u2308', - LeftDoubleBracket: '\u27E6', - LeftDownTeeVector: '\u2961', - LeftDownVector: '\u21C3', - LeftDownVectorBar: '\u2959', - LeftFloor: '\u230A', - leftharpoondown: '\u21BD', - leftharpoonup: '\u21BC', - leftleftarrows: '\u21C7', - leftrightarrow: '\u2194', - Leftrightarrow: '\u21D4', - LeftRightArrow: '\u2194', - leftrightarrows: '\u21C6', - leftrightharpoons: '\u21CB', - leftrightsquigarrow: '\u21AD', - LeftRightVector: '\u294E', - LeftTee: '\u22A3', - LeftTeeArrow: '\u21A4', - LeftTeeVector: '\u295A', - leftthreetimes: '\u22CB', - LeftTriangle: '\u22B2', - LeftTriangleBar: '\u29CF', - LeftTriangleEqual: '\u22B4', - LeftUpDownVector: '\u2951', - LeftUpTeeVector: '\u2960', - LeftUpVector: '\u21BF', - LeftUpVectorBar: '\u2958', - LeftVector: '\u21BC', - LeftVectorBar: '\u2952', - leg: '\u22DA', - lEg: '\u2A8B', - 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', - LessEqualGreater: '\u22DA', - LessFullEqual: '\u2266', - LessGreater: '\u2276', - lessgtr: '\u2276', - LessLess: '\u2AA1', - lesssim: '\u2272', - LessSlantEqual: '\u2A7D', - LessTilde: '\u2272', - lfisht: '\u297C', - lfloor: '\u230A', - lfr: '\uD835\uDD29', - Lfr: '\uD835\uDD0F', - lg: '\u2276', - lgE: '\u2A91', - lHar: '\u2962', - lhard: '\u21BD', - lharu: '\u21BC', - lharul: '\u296A', - lhblk: '\u2584', - ljcy: '\u0459', - LJcy: '\u0409', - ll: '\u226A', - Ll: '\u22D8', - llarr: '\u21C7', - llcorner: '\u231E', - Lleftarrow: '\u21DA', - llhard: '\u296B', - lltri: '\u25FA', - lmidot: '\u0140', - Lmidot: '\u013F', - lmoust: '\u23B0', - lmoustache: '\u23B0', - lnap: '\u2A89', - lnapprox: '\u2A89', - lne: '\u2A87', - lnE: '\u2268', - lneq: '\u2A87', - lneqq: '\u2268', - lnsim: '\u22E6', - loang: '\u27EC', - loarr: '\u21FD', - lobrk: '\u27E6', - longleftarrow: '\u27F5', - Longleftarrow: '\u27F8', - LongLeftArrow: '\u27F5', - longleftrightarrow: '\u27F7', - Longleftrightarrow: '\u27FA', - LongLeftRightArrow: '\u27F7', - longmapsto: '\u27FC', - longrightarrow: '\u27F6', - Longrightarrow: '\u27F9', - LongRightArrow: '\u27F6', - looparrowleft: '\u21AB', - looparrowright: '\u21AC', - lopar: '\u2985', - lopf: '\uD835\uDD5D', - Lopf: '\uD835\uDD43', - loplus: '\u2A2D', - lotimes: '\u2A34', - lowast: '\u2217', - lowbar: '_', - LowerLeftArrow: '\u2199', - LowerRightArrow: '\u2198', - loz: '\u25CA', - lozenge: '\u25CA', - lozf: '\u29EB', - lpar: '(', - lparlt: '\u2993', - lrarr: '\u21C6', - lrcorner: '\u231F', - lrhar: '\u21CB', - lrhard: '\u296D', - lrm: '\u200E', - lrtri: '\u22BF', - lsaquo: '\u2039', - lscr: '\uD835\uDCC1', - Lscr: '\u2112', - lsh: '\u21B0', - Lsh: '\u21B0', - lsim: '\u2272', - lsime: '\u2A8D', - lsimg: '\u2A8F', - lsqb: '[', - lsquo: '\u2018', - lsquor: '\u201A', - lstrok: '\u0142', - Lstrok: '\u0141', - lt: '<', - Lt: '\u226A', - LT: '<', - ltcc: '\u2AA6', - ltcir: '\u2A79', - ltdot: '\u22D6', - lthree: '\u22CB', - ltimes: '\u22C9', - ltlarr: '\u2976', - ltquest: '\u2A7B', - ltri: '\u25C3', - ltrie: '\u22B4', - ltrif: '\u25C2', - ltrPar: '\u2996', - lurdshar: '\u294A', - luruhar: '\u2966', - lvertneqq: '\u2268\uFE00', - lvnE: '\u2268\uFE00', - macr: '\xAF', - male: '\u2642', - malt: '\u2720', - maltese: '\u2720', - map: '\u21A6', - Map: '\u2905', - mapsto: '\u21A6', - mapstodown: '\u21A7', - mapstoleft: '\u21A4', - mapstoup: '\u21A5', - marker: '\u25AE', - mcomma: '\u2A29', - mcy: '\u043C', - Mcy: '\u041C', - mdash: '\u2014', - mDDot: '\u223A', - measuredangle: '\u2221', - MediumSpace: '\u205F', - Mellintrf: '\u2133', - mfr: '\uD835\uDD2A', - Mfr: '\uD835\uDD10', - mho: '\u2127', - micro: '\xB5', - mid: '\u2223', - midast: '*', - midcir: '\u2AF0', - middot: '\xB7', - minus: '\u2212', - minusb: '\u229F', - minusd: '\u2238', - minusdu: '\u2A2A', - MinusPlus: '\u2213', - mlcp: '\u2ADB', - mldr: '\u2026', - mnplus: '\u2213', - models: '\u22A7', - mopf: '\uD835\uDD5E', - Mopf: '\uD835\uDD44', - mp: '\u2213', - mscr: '\uD835\uDCC2', - Mscr: '\u2133', - mstpos: '\u223E', - mu: '\u03BC', - Mu: '\u039C', - multimap: '\u22B8', - mumap: '\u22B8', - nabla: '\u2207', - nacute: '\u0144', - Nacute: '\u0143', - nang: '\u2220\u20D2', - nap: '\u2249', - napE: '\u2A70\u0338', - napid: '\u224B\u0338', - napos: '\u0149', - napprox: '\u2249', - natur: '\u266E', - natural: '\u266E', - naturals: '\u2115', - nbsp: '\xA0', - nbump: '\u224E\u0338', - nbumpe: '\u224F\u0338', - ncap: '\u2A43', - ncaron: '\u0148', - Ncaron: '\u0147', - ncedil: '\u0146', - Ncedil: '\u0145', - ncong: '\u2247', - ncongdot: '\u2A6D\u0338', - ncup: '\u2A42', - ncy: '\u043D', - Ncy: '\u041D', - ndash: '\u2013', - ne: '\u2260', - nearhk: '\u2924', - nearr: '\u2197', - neArr: '\u21D7', - nearrow: '\u2197', - nedot: '\u2250\u0338', - NegativeMediumSpace: '\u200B', - NegativeThickSpace: '\u200B', - NegativeThinSpace: '\u200B', - NegativeVeryThinSpace: '\u200B', - nequiv: '\u2262', - nesear: '\u2928', - nesim: '\u2242\u0338', - NestedGreaterGreater: '\u226B', - NestedLessLess: '\u226A', - NewLine: '\n', - nexist: '\u2204', - nexists: '\u2204', - nfr: '\uD835\uDD2B', - Nfr: '\uD835\uDD11', - nge: '\u2271', - ngE: '\u2267\u0338', - ngeq: '\u2271', - ngeqq: '\u2267\u0338', - ngeqslant: '\u2A7E\u0338', - nges: '\u2A7E\u0338', - nGg: '\u22D9\u0338', - ngsim: '\u2275', - ngt: '\u226F', - nGt: '\u226B\u20D2', - ngtr: '\u226F', - nGtv: '\u226B\u0338', - nharr: '\u21AE', - nhArr: '\u21CE', - nhpar: '\u2AF2', - ni: '\u220B', - nis: '\u22FC', - nisd: '\u22FA', - niv: '\u220B', - njcy: '\u045A', - NJcy: '\u040A', - nlarr: '\u219A', - nlArr: '\u21CD', - nldr: '\u2025', - nle: '\u2270', - nlE: '\u2266\u0338', - nleftarrow: '\u219A', - nLeftarrow: '\u21CD', - nleftrightarrow: '\u21AE', - nLeftrightarrow: '\u21CE', - nleq: '\u2270', - nleqq: '\u2266\u0338', - nleqslant: '\u2A7D\u0338', - nles: '\u2A7D\u0338', - nless: '\u226E', - nLl: '\u22D8\u0338', - nlsim: '\u2274', - nlt: '\u226E', - nLt: '\u226A\u20D2', - nltri: '\u22EA', - nltrie: '\u22EC', - nLtv: '\u226A\u0338', - nmid: '\u2224', - NoBreak: '\u2060', - NonBreakingSpace: '\xA0', - nopf: '\uD835\uDD5F', - Nopf: '\u2115', - not: '\xAC', - 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', - notin: '\u2209', - notindot: '\u22F5\u0338', - notinE: '\u22F9\u0338', - notinva: '\u2209', - notinvb: '\u22F7', - notinvc: '\u22F6', - 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', - notni: '\u220C', - notniva: '\u220C', - notnivb: '\u22FE', - notnivc: '\u22FD', - 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', - 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: '\u219B', - nrArr: '\u21CF', - nrarrc: '\u2933\u0338', - nrarrw: '\u219D\u0338', - nrightarrow: '\u219B', - nRightarrow: '\u21CF', - nrtri: '\u22EB', - nrtrie: '\u22ED', - nsc: '\u2281', - nsccue: '\u22E1', - nsce: '\u2AB0\u0338', - nscr: '\uD835\uDCC3', - Nscr: '\uD835\uDCA9', - nshortmid: '\u2224', - nshortparallel: '\u2226', - nsim: '\u2241', - nsime: '\u2244', - nsimeq: '\u2244', - nsmid: '\u2224', - nspar: '\u2226', - nsqsube: '\u22E2', - nsqsupe: '\u22E3', - nsub: '\u2284', - nsube: '\u2288', - nsubE: '\u2AC5\u0338', - nsubset: '\u2282\u20D2', - nsubseteq: '\u2288', - nsubseteqq: '\u2AC5\u0338', - nsucc: '\u2281', - nsucceq: '\u2AB0\u0338', - nsup: '\u2285', - nsupe: '\u2289', - nsupE: '\u2AC6\u0338', - nsupset: '\u2283\u20D2', - nsupseteq: '\u2289', - nsupseteqq: '\u2AC6\u0338', - ntgl: '\u2279', - ntilde: '\xF1', - Ntilde: '\xD1', - ntlg: '\u2278', - ntriangleleft: '\u22EA', - ntrianglelefteq: '\u22EC', - ntriangleright: '\u22EB', - ntrianglerighteq: '\u22ED', - nu: '\u03BD', - Nu: '\u039D', - num: '#', - numero: '\u2116', - numsp: '\u2007', - nvap: '\u224D\u20D2', - nvdash: '\u22AC', - nvDash: '\u22AD', - nVdash: '\u22AE', - nVDash: '\u22AF', - nvge: '\u2265\u20D2', - nvgt: '>\u20D2', - nvHarr: '\u2904', - nvinfin: '\u29DE', - nvlArr: '\u2902', - nvle: '\u2264\u20D2', - nvlt: '<\u20D2', - nvltrie: '\u22B4\u20D2', - nvrArr: '\u2903', - nvrtrie: '\u22B5\u20D2', - nvsim: '\u223C\u20D2', - nwarhk: '\u2923', - nwarr: '\u2196', - nwArr: '\u21D6', - nwarrow: '\u2196', - nwnear: '\u2927', - oacute: '\xF3', - Oacute: '\xD3', - oast: '\u229B', - ocir: '\u229A', - ocirc: '\xF4', - Ocirc: '\xD4', - ocy: '\u043E', - Ocy: '\u041E', - odash: '\u229D', - odblac: '\u0151', - Odblac: '\u0150', - odiv: '\u2A38', - odot: '\u2299', - odsold: '\u29BC', - oelig: '\u0153', - OElig: '\u0152', - ofcir: '\u29BF', - ofr: '\uD835\uDD2C', - Ofr: '\uD835\uDD12', - ogon: '\u02DB', - ograve: '\xF2', - Ograve: '\xD2', - ogt: '\u29C1', - ohbar: '\u29B5', - ohm: '\u03A9', - oint: '\u222E', - olarr: '\u21BA', - olcir: '\u29BE', - olcross: '\u29BB', - oline: '\u203E', - olt: '\u29C0', - omacr: '\u014D', - Omacr: '\u014C', - omega: '\u03C9', - Omega: '\u03A9', - omicron: '\u03BF', - Omicron: '\u039F', - omid: '\u29B6', - ominus: '\u2296', - oopf: '\uD835\uDD60', - Oopf: '\uD835\uDD46', - opar: '\u29B7', - OpenCurlyDoubleQuote: '\u201C', - OpenCurlyQuote: '\u2018', - operp: '\u29B9', - oplus: '\u2295', - or: '\u2228', - Or: '\u2A54', - orarr: '\u21BB', - ord: '\u2A5D', - order: '\u2134', - orderof: '\u2134', - ordf: '\xAA', - ordm: '\xBA', - origof: '\u22B6', - oror: '\u2A56', - orslope: '\u2A57', - orv: '\u2A5B', - oS: '\u24C8', - oscr: '\u2134', - Oscr: '\uD835\uDCAA', - oslash: '\xF8', - Oslash: '\xD8', - osol: '\u2298', - otilde: '\xF5', - Otilde: '\xD5', - otimes: '\u2297', - Otimes: '\u2A37', - otimesas: '\u2A36', - ouml: '\xF6', - Ouml: '\xD6', - ovbar: '\u233D', - OverBar: '\u203E', - OverBrace: '\u23DE', - OverBracket: '\u23B4', - OverParenthesis: '\u23DC', - par: '\u2225', - para: '\xB6', - parallel: '\u2225', - parsim: '\u2AF3', - parsl: '\u2AFD', - part: '\u2202', - PartialD: '\u2202', - pcy: '\u043F', - Pcy: '\u041F', - percnt: '%', - period: '.', - permil: '\u2030', - perp: '\u22A5', - pertenk: '\u2031', - pfr: '\uD835\uDD2D', - Pfr: '\uD835\uDD13', - phi: '\u03C6', - Phi: '\u03A6', - phiv: '\u03D5', - phmmat: '\u2133', - phone: '\u260E', - pi: '\u03C0', - Pi: '\u03A0', - pitchfork: '\u22D4', - piv: '\u03D6', - planck: '\u210F', - planckh: '\u210E', - plankv: '\u210F', - plus: '+', - plusacir: '\u2A23', - plusb: '\u229E', - pluscir: '\u2A22', - plusdo: '\u2214', - plusdu: '\u2A25', - pluse: '\u2A72', - PlusMinus: '\xB1', - plusmn: '\xB1', - plussim: '\u2A26', - plustwo: '\u2A27', - pm: '\xB1', - Poincareplane: '\u210C', - pointint: '\u2A15', - popf: '\uD835\uDD61', - Popf: '\u2119', - pound: '\xA3', - pr: '\u227A', - Pr: '\u2ABB', - prap: '\u2AB7', - prcue: '\u227C', - pre: '\u2AAF', - prE: '\u2AB3', - prec: '\u227A', - precapprox: '\u2AB7', - preccurlyeq: '\u227C', - Precedes: '\u227A', - PrecedesEqual: '\u2AAF', - PrecedesSlantEqual: '\u227C', - PrecedesTilde: '\u227E', - preceq: '\u2AAF', - precnapprox: '\u2AB9', - precneqq: '\u2AB5', - precnsim: '\u22E8', - precsim: '\u227E', - prime: '\u2032', - Prime: '\u2033', - primes: '\u2119', - prnap: '\u2AB9', - prnE: '\u2AB5', - prnsim: '\u22E8', - prod: '\u220F', - Product: '\u220F', - profalar: '\u232E', - profline: '\u2312', - profsurf: '\u2313', - prop: '\u221D', - Proportion: '\u2237', - Proportional: '\u221D', - propto: '\u221D', - prsim: '\u227E', - prurel: '\u22B0', - pscr: '\uD835\uDCC5', - Pscr: '\uD835\uDCAB', - psi: '\u03C8', - Psi: '\u03A8', - puncsp: '\u2008', - qfr: '\uD835\uDD2E', - Qfr: '\uD835\uDD14', - qint: '\u2A0C', - qopf: '\uD835\uDD62', - Qopf: '\u211A', - qprime: '\u2057', - qscr: '\uD835\uDCC6', - Qscr: '\uD835\uDCAC', - quaternions: '\u210D', - quatint: '\u2A16', - quest: '?', - questeq: '\u225F', - quot: '"', - QUOT: '"', - rAarr: '\u21DB', - race: '\u223D\u0331', - racute: '\u0155', - Racute: '\u0154', - radic: '\u221A', - raemptyv: '\u29B3', - rang: '\u27E9', - Rang: '\u27EB', - rangd: '\u2992', - range: '\u29A5', - rangle: '\u27E9', - raquo: '\xBB', - rarr: '\u2192', - rArr: '\u21D2', - Rarr: '\u21A0', - rarrap: '\u2975', - rarrb: '\u21E5', - rarrbfs: '\u2920', - rarrc: '\u2933', - rarrfs: '\u291E', - rarrhk: '\u21AA', - rarrlp: '\u21AC', - rarrpl: '\u2945', - rarrsim: '\u2974', - rarrtl: '\u21A3', - Rarrtl: '\u2916', - rarrw: '\u219D', - ratail: '\u291A', - rAtail: '\u291C', - ratio: '\u2236', - rationals: '\u211A', - rbarr: '\u290D', - rBarr: '\u290F', - RBarr: '\u2910', - rbbrk: '\u2773', - rbrace: '}', - rbrack: ']', - rbrke: '\u298C', - rbrksld: '\u298E', - rbrkslu: '\u2990', - rcaron: '\u0159', - Rcaron: '\u0158', - rcedil: '\u0157', - Rcedil: '\u0156', - rceil: '\u2309', - rcub: '}', - rcy: '\u0440', - Rcy: '\u0420', - rdca: '\u2937', - rdldhar: '\u2969', - rdquo: '\u201D', - rdquor: '\u201D', - rdsh: '\u21B3', - Re: '\u211C', - real: '\u211C', - realine: '\u211B', - realpart: '\u211C', - reals: '\u211D', - rect: '\u25AD', - reg: '\xAE', - REG: '\xAE', - ReverseElement: '\u220B', - ReverseEquilibrium: '\u21CB', - ReverseUpEquilibrium: '\u296F', - rfisht: '\u297D', - rfloor: '\u230B', - rfr: '\uD835\uDD2F', - Rfr: '\u211C', - rHar: '\u2964', - rhard: '\u21C1', - rharu: '\u21C0', - rharul: '\u296C', - rho: '\u03C1', - Rho: '\u03A1', - rhov: '\u03F1', - RightAngleBracket: '\u27E9', - rightarrow: '\u2192', - Rightarrow: '\u21D2', - RightArrow: '\u2192', - RightArrowBar: '\u21E5', - RightArrowLeftArrow: '\u21C4', - rightarrowtail: '\u21A3', - RightCeiling: '\u2309', - RightDoubleBracket: '\u27E7', - RightDownTeeVector: '\u295D', - RightDownVector: '\u21C2', - RightDownVectorBar: '\u2955', - RightFloor: '\u230B', - rightharpoondown: '\u21C1', - rightharpoonup: '\u21C0', - rightleftarrows: '\u21C4', - rightleftharpoons: '\u21CC', - rightrightarrows: '\u21C9', - rightsquigarrow: '\u219D', - RightTee: '\u22A2', - RightTeeArrow: '\u21A6', - RightTeeVector: '\u295B', - rightthreetimes: '\u22CC', - RightTriangle: '\u22B3', - RightTriangleBar: '\u29D0', - RightTriangleEqual: '\u22B5', - RightUpDownVector: '\u294F', - RightUpTeeVector: '\u295C', - RightUpVector: '\u21BE', - RightUpVectorBar: '\u2954', - RightVector: '\u21C0', - RightVectorBar: '\u2953', - 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: '\uD835\uDD63', - Ropf: '\u211D', - roplus: '\u2A2E', - rotimes: '\u2A35', - RoundImplies: '\u2970', - rpar: ')', - rpargt: '\u2994', - rppolint: '\u2A12', - rrarr: '\u21C9', - Rrightarrow: '\u21DB', - rsaquo: '\u203A', - rscr: '\uD835\uDCC7', - Rscr: '\u211B', - rsh: '\u21B1', - Rsh: '\u21B1', - rsqb: ']', - rsquo: '\u2019', - rsquor: '\u2019', - rthree: '\u22CC', - rtimes: '\u22CA', - rtri: '\u25B9', - rtrie: '\u22B5', - rtrif: '\u25B8', - rtriltri: '\u29CE', - RuleDelayed: '\u29F4', - ruluhar: '\u2968', - rx: '\u211E', - sacute: '\u015B', - Sacute: '\u015A', - sbquo: '\u201A', - sc: '\u227B', - Sc: '\u2ABC', - scap: '\u2AB8', - scaron: '\u0161', - Scaron: '\u0160', - sccue: '\u227D', - sce: '\u2AB0', - scE: '\u2AB4', - scedil: '\u015F', - Scedil: '\u015E', - scirc: '\u015D', - Scirc: '\u015C', - scnap: '\u2ABA', - scnE: '\u2AB6', - scnsim: '\u22E9', - scpolint: '\u2A13', - scsim: '\u227F', - scy: '\u0441', - Scy: '\u0421', - sdot: '\u22C5', - sdotb: '\u22A1', - sdote: '\u2A66', - searhk: '\u2925', - searr: '\u2198', - seArr: '\u21D8', - searrow: '\u2198', - sect: '\xA7', - semi: ';', - seswar: '\u2929', - setminus: '\u2216', - setmn: '\u2216', - sext: '\u2736', - sfr: '\uD835\uDD30', - Sfr: '\uD835\uDD16', - sfrown: '\u2322', - sharp: '\u266F', - shchcy: '\u0449', - SHCHcy: '\u0429', - shcy: '\u0448', - SHcy: '\u0428', - ShortDownArrow: '\u2193', - ShortLeftArrow: '\u2190', - shortmid: '\u2223', - shortparallel: '\u2225', - ShortRightArrow: '\u2192', - ShortUpArrow: '\u2191', - shy: '\xAD', - sigma: '\u03C3', - Sigma: '\u03A3', - 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', - SmallCircle: '\u2218', - smallsetminus: '\u2216', - smashp: '\u2A33', - smeparsl: '\u29E4', - smid: '\u2223', - smile: '\u2323', - smt: '\u2AAA', - smte: '\u2AAC', - smtes: '\u2AAC\uFE00', - softcy: '\u044C', - SOFTcy: '\u042C', - sol: '/', - solb: '\u29C4', - solbar: '\u233F', - sopf: '\uD835\uDD64', - Sopf: '\uD835\uDD4A', - spades: '\u2660', - spadesuit: '\u2660', - spar: '\u2225', - sqcap: '\u2293', - sqcaps: '\u2293\uFE00', - sqcup: '\u2294', - sqcups: '\u2294\uFE00', - Sqrt: '\u221A', - sqsub: '\u228F', - sqsube: '\u2291', - sqsubset: '\u228F', - sqsubseteq: '\u2291', - sqsup: '\u2290', - sqsupe: '\u2292', - sqsupset: '\u2290', - sqsupseteq: '\u2292', - squ: '\u25A1', - square: '\u25A1', - Square: '\u25A1', - SquareIntersection: '\u2293', - SquareSubset: '\u228F', - SquareSubsetEqual: '\u2291', - SquareSuperset: '\u2290', - SquareSupersetEqual: '\u2292', - SquareUnion: '\u2294', - squarf: '\u25AA', - squf: '\u25AA', - srarr: '\u2192', - sscr: '\uD835\uDCC8', - Sscr: '\uD835\uDCAE', - ssetmn: '\u2216', - ssmile: '\u2323', - sstarf: '\u22C6', - star: '\u2606', - Star: '\u22C6', - starf: '\u2605', - straightepsilon: '\u03F5', - straightphi: '\u03D5', - strns: '\xAF', - sub: '\u2282', - Sub: '\u22D0', - subdot: '\u2ABD', - sube: '\u2286', - subE: '\u2AC5', - subedot: '\u2AC3', - submult: '\u2AC1', - subne: '\u228A', - subnE: '\u2ACB', - subplus: '\u2ABF', - subrarr: '\u2979', - subset: '\u2282', - Subset: '\u22D0', - subseteq: '\u2286', - subseteqq: '\u2AC5', - SubsetEqual: '\u2286', - subsetneq: '\u228A', - subsetneqq: '\u2ACB', - subsim: '\u2AC7', - subsub: '\u2AD5', - subsup: '\u2AD3', - succ: '\u227B', - succapprox: '\u2AB8', - succcurlyeq: '\u227D', - Succeeds: '\u227B', - SucceedsEqual: '\u2AB0', - SucceedsSlantEqual: '\u227D', - SucceedsTilde: '\u227F', - succeq: '\u2AB0', - succnapprox: '\u2ABA', - succneqq: '\u2AB6', - succnsim: '\u22E9', - succsim: '\u227F', - SuchThat: '\u220B', - sum: '\u2211', - Sum: '\u2211', - sung: '\u266A', - sup: '\u2283', - Sup: '\u22D1', - sup1: '\xB9', - sup2: '\xB2', - sup3: '\xB3', - supdot: '\u2ABE', - supdsub: '\u2AD8', - supe: '\u2287', - supE: '\u2AC6', - supedot: '\u2AC4', - Superset: '\u2283', - SupersetEqual: '\u2287', - suphsol: '\u27C9', - suphsub: '\u2AD7', - suplarr: '\u297B', - supmult: '\u2AC2', - supne: '\u228B', - supnE: '\u2ACC', - supplus: '\u2AC0', - supset: '\u2283', - Supset: '\u22D1', - supseteq: '\u2287', - supseteqq: '\u2AC6', - supsetneq: '\u228B', - supsetneqq: '\u2ACC', - supsim: '\u2AC8', - supsub: '\u2AD4', - supsup: '\u2AD6', - swarhk: '\u2926', - swarr: '\u2199', - swArr: '\u21D9', - swarrow: '\u2199', - swnwar: '\u292A', - szlig: '\xDF', - Tab: '\t', - target: '\u2316', - tau: '\u03C4', - Tau: '\u03A4', - tbrk: '\u23B4', - tcaron: '\u0165', - Tcaron: '\u0164', - tcedil: '\u0163', - Tcedil: '\u0162', - tcy: '\u0442', - Tcy: '\u0422', - tdot: '\u20DB', - telrec: '\u2315', - tfr: '\uD835\uDD31', - Tfr: '\uD835\uDD17', - there4: '\u2234', - therefore: '\u2234', - Therefore: '\u2234', - theta: '\u03B8', - Theta: '\u0398', - thetasym: '\u03D1', - thetav: '\u03D1', - thickapprox: '\u2248', - thicksim: '\u223C', - ThickSpace: '\u205F\u200A', - thinsp: '\u2009', - ThinSpace: '\u2009', - thkap: '\u2248', - thksim: '\u223C', - thorn: '\xFE', - THORN: '\xDE', - tilde: '\u02DC', - Tilde: '\u223C', - TildeEqual: '\u2243', - TildeFullEqual: '\u2245', - TildeTilde: '\u2248', - times: '\xD7', - timesb: '\u22A0', - timesbar: '\u2A31', - timesd: '\u2A30', - tint: '\u222D', - toea: '\u2928', - top: '\u22A4', - topbot: '\u2336', - topcir: '\u2AF1', - topf: '\uD835\uDD65', - Topf: '\uD835\uDD4B', - topfork: '\u2ADA', - tosa: '\u2929', - tprime: '\u2034', - trade: '\u2122', - TRADE: '\u2122', - triangle: '\u25B5', - triangledown: '\u25BF', - triangleleft: '\u25C3', - trianglelefteq: '\u22B4', - triangleq: '\u225C', - triangleright: '\u25B9', - trianglerighteq: '\u22B5', - tridot: '\u25EC', - trie: '\u225C', - triminus: '\u2A3A', - TripleDot: '\u20DB', - triplus: '\u2A39', - trisb: '\u29CD', - tritime: '\u2A3B', - trpezium: '\u23E2', - tscr: '\uD835\uDCC9', - Tscr: '\uD835\uDCAF', - tscy: '\u0446', - TScy: '\u0426', - tshcy: '\u045B', - TSHcy: '\u040B', - tstrok: '\u0167', - Tstrok: '\u0166', - twixt: '\u226C', - twoheadleftarrow: '\u219E', - twoheadrightarrow: '\u21A0', - uacute: '\xFA', - Uacute: '\xDA', - uarr: '\u2191', - uArr: '\u21D1', - Uarr: '\u219F', - Uarrocir: '\u2949', - ubrcy: '\u045E', - Ubrcy: '\u040E', - ubreve: '\u016D', - Ubreve: '\u016C', - ucirc: '\xFB', - Ucirc: '\xDB', - ucy: '\u0443', - Ucy: '\u0423', - udarr: '\u21C5', - udblac: '\u0171', - Udblac: '\u0170', - udhar: '\u296E', - ufisht: '\u297E', - ufr: '\uD835\uDD32', - Ufr: '\uD835\uDD18', - ugrave: '\xF9', - Ugrave: '\xD9', - uHar: '\u2963', - uharl: '\u21BF', - uharr: '\u21BE', - uhblk: '\u2580', - ulcorn: '\u231C', - ulcorner: '\u231C', - ulcrop: '\u230F', - ultri: '\u25F8', - umacr: '\u016B', - Umacr: '\u016A', - uml: '\xA8', - UnderBar: '_', - UnderBrace: '\u23DF', - UnderBracket: '\u23B5', - UnderParenthesis: '\u23DD', - Union: '\u22C3', - UnionPlus: '\u228E', - uogon: '\u0173', - Uogon: '\u0172', - uopf: '\uD835\uDD66', - Uopf: '\uD835\uDD4C', - uparrow: '\u2191', - Uparrow: '\u21D1', - UpArrow: '\u2191', - UpArrowBar: '\u2912', - UpArrowDownArrow: '\u21C5', - updownarrow: '\u2195', - Updownarrow: '\u21D5', - UpDownArrow: '\u2195', - UpEquilibrium: '\u296E', - upharpoonleft: '\u21BF', - upharpoonright: '\u21BE', - uplus: '\u228E', - UpperLeftArrow: '\u2196', - UpperRightArrow: '\u2197', - upsi: '\u03C5', - Upsi: '\u03D2', - upsih: '\u03D2', - upsilon: '\u03C5', - Upsilon: '\u03A5', - UpTee: '\u22A5', - UpTeeArrow: '\u21A5', - upuparrows: '\u21C8', - urcorn: '\u231D', - urcorner: '\u231D', - urcrop: '\u230E', - uring: '\u016F', - Uring: '\u016E', - urtri: '\u25F9', - uscr: '\uD835\uDCCA', - Uscr: '\uD835\uDCB0', - utdot: '\u22F0', - utilde: '\u0169', - Utilde: '\u0168', - utri: '\u25B5', - utrif: '\u25B4', - uuarr: '\u21C8', - uuml: '\xFC', - Uuml: '\xDC', - uwangle: '\u29A7', - vangrt: '\u299C', - varepsilon: '\u03F5', - varkappa: '\u03F0', - varnothing: '\u2205', - varphi: '\u03D5', - varpi: '\u03D6', - varpropto: '\u221D', - varr: '\u2195', - vArr: '\u21D5', - varrho: '\u03F1', - varsigma: '\u03C2', - varsubsetneq: '\u228A\uFE00', - varsubsetneqq: '\u2ACB\uFE00', - varsupsetneq: '\u228B\uFE00', - varsupsetneqq: '\u2ACC\uFE00', - vartheta: '\u03D1', - vartriangleleft: '\u22B2', - vartriangleright: '\u22B3', - vBar: '\u2AE8', - Vbar: '\u2AEB', - vBarv: '\u2AE9', - vcy: '\u0432', - Vcy: '\u0412', - vdash: '\u22A2', - vDash: '\u22A8', - Vdash: '\u22A9', - VDash: '\u22AB', - Vdashl: '\u2AE6', - vee: '\u2228', - Vee: '\u22C1', - veebar: '\u22BB', - veeeq: '\u225A', - vellip: '\u22EE', - verbar: '|', - Verbar: '\u2016', - vert: '|', - Vert: '\u2016', - VerticalBar: '\u2223', - VerticalLine: '|', - VerticalSeparator: '\u2758', - VerticalTilde: '\u2240', - VeryThinSpace: '\u200A', - vfr: '\uD835\uDD33', - Vfr: '\uD835\uDD19', - vltri: '\u22B2', - vnsub: '\u2282\u20D2', - vnsup: '\u2283\u20D2', - vopf: '\uD835\uDD67', - Vopf: '\uD835\uDD4D', - vprop: '\u221D', - vrtri: '\u22B3', - vscr: '\uD835\uDCCB', - Vscr: '\uD835\uDCB1', - vsubne: '\u228A\uFE00', - vsubnE: '\u2ACB\uFE00', - vsupne: '\u228B\uFE00', - vsupnE: '\u2ACC\uFE00', - Vvdash: '\u22AA', - vzigzag: '\u299A', - wcirc: '\u0175', - Wcirc: '\u0174', - wedbar: '\u2A5F', - wedge: '\u2227', - Wedge: '\u22C0', - wedgeq: '\u2259', - weierp: '\u2118', - wfr: '\uD835\uDD34', - Wfr: '\uD835\uDD1A', - wopf: '\uD835\uDD68', - Wopf: '\uD835\uDD4E', - wp: '\u2118', - wr: '\u2240', - wreath: '\u2240', - wscr: '\uD835\uDCCC', - Wscr: '\uD835\uDCB2', - xcap: '\u22C2', - xcirc: '\u25EF', - xcup: '\u22C3', - xdtri: '\u25BD', - xfr: '\uD835\uDD35', - Xfr: '\uD835\uDD1B', - xharr: '\u27F7', - xhArr: '\u27FA', - xi: '\u03BE', - Xi: '\u039E', - xlarr: '\u27F5', - xlArr: '\u27F8', - xmap: '\u27FC', - xnis: '\u22FB', - xodot: '\u2A00', - xopf: '\uD835\uDD69', - Xopf: '\uD835\uDD4F', - xoplus: '\u2A01', - xotime: '\u2A02', - xrarr: '\u27F6', - xrArr: '\u27F9', - xscr: '\uD835\uDCCD', - Xscr: '\uD835\uDCB3', - xsqcup: '\u2A06', - xuplus: '\u2A04', - xutri: '\u25B3', - xvee: '\u22C1', - xwedge: '\u22C0', - yacute: '\xFD', - Yacute: '\xDD', - yacy: '\u044F', - YAcy: '\u042F', - ycirc: '\u0177', - Ycirc: '\u0176', - ycy: '\u044B', - Ycy: '\u042B', - yen: '\xA5', - yfr: '\uD835\uDD36', - Yfr: '\uD835\uDD1C', - yicy: '\u0457', - YIcy: '\u0407', - yopf: '\uD835\uDD6A', - Yopf: '\uD835\uDD50', - yscr: '\uD835\uDCCE', - Yscr: '\uD835\uDCB4', - yucy: '\u044E', - YUcy: '\u042E', - yuml: '\xFF', - Yuml: '\u0178', - zacute: '\u017A', - Zacute: '\u0179', - zcaron: '\u017E', - Zcaron: '\u017D', - zcy: '\u0437', - Zcy: '\u0417', - zdot: '\u017C', - Zdot: '\u017B', - zeetrf: '\u2128', - ZeroWidthSpace: '\u200B', - zeta: '\u03B6', - Zeta: '\u0396', - zfr: '\uD835\uDD37', - Zfr: '\u2128', - zhcy: '\u0436', - ZHcy: '\u0416', - zigrarr: '\u21DD', - zopf: '\uD835\uDD6B', - Zopf: '\u2124', - zscr: '\uD835\uDCCF', - Zscr: '\uD835\uDCB5', - zwj: '\u200D', - zwnj: '\u200C', -} -const decodeMapLegacy = { - aacute: '\xE1', - Aacute: '\xC1', - acirc: '\xE2', - Acirc: '\xC2', - acute: '\xB4', - aelig: '\xE6', - AElig: '\xC6', - agrave: '\xE0', - Agrave: '\xC0', - amp: '&', - AMP: '&', - aring: '\xE5', - Aring: '\xC5', - atilde: '\xE3', - Atilde: '\xC3', - auml: '\xE4', - Auml: '\xC4', - brvbar: '\xA6', - ccedil: '\xE7', - Ccedil: '\xC7', - cedil: '\xB8', - cent: '\xA2', - copy: '\xA9', - COPY: '\xA9', - curren: '\xA4', - deg: '\xB0', - divide: '\xF7', - eacute: '\xE9', - Eacute: '\xC9', - ecirc: '\xEA', - Ecirc: '\xCA', - egrave: '\xE8', - Egrave: '\xC8', - eth: '\xF0', - ETH: '\xD0', - euml: '\xEB', - Euml: '\xCB', - frac12: '\xBD', - frac14: '\xBC', - frac34: '\xBE', - gt: '>', - GT: '>', - iacute: '\xED', - Iacute: '\xCD', - icirc: '\xEE', - Icirc: '\xCE', - iexcl: '\xA1', - igrave: '\xEC', - Igrave: '\xCC', - iquest: '\xBF', - iuml: '\xEF', - Iuml: '\xCF', - laquo: '\xAB', - lt: '<', - LT: '<', - macr: '\xAF', - micro: '\xB5', - middot: '\xB7', - nbsp: '\xA0', - not: '\xAC', - ntilde: '\xF1', - Ntilde: '\xD1', - oacute: '\xF3', - Oacute: '\xD3', - ocirc: '\xF4', - Ocirc: '\xD4', - ograve: '\xF2', - Ograve: '\xD2', - ordf: '\xAA', - ordm: '\xBA', - oslash: '\xF8', - Oslash: '\xD8', - otilde: '\xF5', - Otilde: '\xD5', - ouml: '\xF6', - Ouml: '\xD6', - para: '\xB6', - plusmn: '\xB1', - pound: '\xA3', - quot: '"', - QUOT: '"', - raquo: '\xBB', - reg: '\xAE', - REG: '\xAE', - sect: '\xA7', - shy: '\xAD', - sup1: '\xB9', - sup2: '\xB2', - sup3: '\xB3', - szlig: '\xDF', - thorn: '\xFE', - THORN: '\xDE', - times: '\xD7', - uacute: '\xFA', - Uacute: '\xDA', - ucirc: '\xFB', - Ucirc: '\xDB', - ugrave: '\xF9', - Ugrave: '\xD9', - uml: '\xA8', - uuml: '\xFC', - Uuml: '\xDC', - yacute: '\xFD', - Yacute: '\xDD', - yen: '\xA5', - yuml: '\xFF', -} -const decodeMapNumeric = { - 0: '\uFFFD', - 128: '\u20AC', - 130: '\u201A', - 131: '\u0192', - 132: '\u201E', - 133: '\u2026', - 134: '\u2020', - 135: '\u2021', - 136: '\u02C6', - 137: '\u2030', - 138: '\u0160', - 139: '\u2039', - 140: '\u0152', - 142: '\u017D', - 145: '\u2018', - 146: '\u2019', - 147: '\u201C', - 148: '\u201D', - 149: '\u2022', - 150: '\u2013', - 151: '\u2014', - 152: '\u02DC', - 153: '\u2122', - 154: '\u0161', - 155: '\u203A', - 156: '\u0153', - 158: '\u017E', - 159: '\u0178', -} -const invalidReferenceCodePoints = [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 11, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 64976, - 64977, - 64978, - 64979, - 64980, - 64981, - 64982, - 64983, - 64984, - 64985, - 64986, - 64987, - 64988, - 64989, - 64990, - 64991, - 64992, - 64993, - 64994, - 64995, - 64996, - 64997, - 64998, - 64999, - 65000, - 65001, - 65002, - 65003, - 65004, - 65005, - 65006, - 65007, - 65534, - 65535, - 131070, - 131071, - 196606, - 196607, - 262142, - 262143, - 327678, - 327679, - 393214, - 393215, - 458750, - 458751, - 524286, - 524287, - 589822, - 589823, - 655358, - 655359, - 720894, - 720895, - 786430, - 786431, - 851966, - 851967, - 917502, - 917503, - 983038, - 983039, - 1048574, - 1048575, - 1114110, - 1114111, -] - -/* -------------------------------------------------------------------------- */ - -const stringFromCharCode = String.fromCharCode - -const contains = function (array, value) { - let index = -1 - const length = array.length - while (++index < length) { - if (array[index] === value) - return true - } - return false -} - -function merge(options, defaults) { - if (!options) - return defaults - - const result = {} - let key - for (key in defaults) { - // A `hasOwnProperty` check is not needed here, since only recognized - // option names are used anyway. Any others are ignored. - result[key] = hasOwn(options, key) ? options[key] : defaults[key] - } - return result -} - -// Modified version of `ucs2encode`; see https://mths.be/punycode. -const codePointToSymbol = function (codePoint, strict) { - let output = '' - if ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) { - // See issue #4: - // “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is - // greater than 0x10FFFF, then this is a parse error. Return a U+FFFD - // REPLACEMENT CHARACTER.” - if (strict) - parseError('character reference outside the permissible Unicode range') - - return '\uFFFD' - } - if (hasOwn(decodeMapNumeric, codePoint)) { - if (strict) - parseError('disallowed character reference') - - return decodeMapNumeric[codePoint] - } - if (strict && contains(invalidReferenceCodePoints, codePoint)) - parseError('disallowed character reference') - - if (codePoint > 0xFFFF) { - codePoint -= 0x10000 - output += stringFromCharCode(((codePoint >>> 10) & 0x3FF) | 0xD800) - codePoint = 0xDC00 | (codePoint & 0x3FF) - } - output += stringFromCharCode(codePoint) - return output -} - -const hexEscape = function (codePoint) { - return `&#x${codePoint.toString(16).toUpperCase()};` -} - -const decEscape = function (codePoint) { - return `&#${codePoint};` -} - -function parseError(message) { - throw new Error(`Parse error: ${message}`) -} - -/* -------------------------------------------------------------------------- */ - -const encode = function (string, options) { - options = merge(options, encode.options) - const strict = options.strict - if (strict && regexInvalidRawCodePoint.test(string)) - parseError('forbidden code point') - - const encodeEverything = options.encodeEverything - const useNamedReferences = options.useNamedReferences - const allowUnsafeSymbols = options.allowUnsafeSymbols - const escapeCodePoint = options.decimal ? decEscape : hexEscape - - const escapeBmpSymbol = function (symbol) { - return escapeCodePoint(symbol.charCodeAt(0)) - } - - if (encodeEverything) { - // Encode ASCII symbols. - string = string.replace(regexAsciiWhitelist, (symbol) => { - // Use named references if requested & possible. - if (useNamedReferences && hasOwn(encodeMap, symbol)) - return `&${encodeMap[symbol]};` - - return escapeBmpSymbol(symbol) - }) - // Shorten a few escapes that represent two symbols, of which at least one - // is within the ASCII range. - if (useNamedReferences) { - string = string - .replace(/>\u20D2/g, '>⃒') - .replace(/<\u20D2/g, '<⃒') - .replace(/fj/g, 'fj') - } - // Encode non-ASCII symbols. - if (useNamedReferences) { - // Encode non-ASCII symbols that can be replaced with a named reference. - string = string.replace(regexEncodeNonAscii, (string) => { - // Note: there is no need to check `hasOwn(encodeMap, string)` here. - return `&${encodeMap[string]};` - }) - } - // Note: any remaining non-ASCII symbols are handled outside of the `if`. - } - else if (useNamedReferences) { - // Apply named character references. - // Encode `<>"'&` using named character references. - if (!allowUnsafeSymbols) { - string = string.replace(regexEscape, (string) => { - return `&${encodeMap[string]};` // no need to check `hasOwn()` here - }) - } - // Shorten escapes that represent two symbols, of which at least one is - // `<>"'&`. - string = string - .replace(/>\u20D2/g, '>⃒') - .replace(/<\u20D2/g, '<⃒') - // Encode non-ASCII symbols that can be replaced with a named reference. - string = string.replace(regexEncodeNonAscii, (string) => { - // Note: there is no need to check `hasOwn(encodeMap, string)` here. - return `&${encodeMap[string]};` - }) - } - else if (!allowUnsafeSymbols) { - // Encode `<>"'&` using hexadecimal escapes, now that they’re not handled - // using named character references. - string = string.replace(regexEscape, escapeBmpSymbol) - } - return ( - string - // Encode astral symbols. - .replace(regexAstralSymbols, ($0) => { - // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - const high = $0.charCodeAt(0) - const low = $0.charCodeAt(1) - const codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000 - return escapeCodePoint(codePoint) - }) - // Encode any remaining BMP symbols that are not printable ASCII symbols - // using a hexadecimal escape. - .replace(regexBmpWhitelist, escapeBmpSymbol) - ) -} -// Expose default options (so they can be overridden globally). -encode.options = { - allowUnsafeSymbols: false, - encodeEverything: false, - strict: false, - useNamedReferences: false, - decimal: false, -} - -export function decode(html: string, options?: any) { - options = merge(options, decode.options) - const strict = options.strict - if (strict && regexInvalidEntity.test(html)) - parseError('malformed character reference') - - return html.replace( - regexDecode, - ($0, $1, $2, $3, $4, $5, $6, $7, _$8) => { - let codePoint - let semicolon - let decDigits - let hexDigits - let reference - let next - - if ($1) { - reference = $1 - // Note: there is no need to check `hasOwn(decodeMap, reference)`. - return decodeMap[reference] - } - - if ($2) { - // Decode named character references without trailing `;`, e.g. `&`. - // This is only a parse error if it gets converted to `&`, or if it is - // followed by `=` in an attribute context. - reference = $2 - next = $3 - if (next && options.isAttributeValue) { - if (strict && next === '=') - parseError('`&` did not start a character reference') - - return $0 - } - else { - if (strict) { - parseError( - 'named character reference was not terminated by a semicolon', - ) - } - // Note: there is no need to check `hasOwn(decodeMapLegacy, reference)`. - return decodeMapLegacy[reference] + (next || '') - } - } - - if ($4) { - // Decode decimal escapes, e.g. `𝌆`. - decDigits = $4 - semicolon = $5 - if (strict && !semicolon) - parseError('character reference was not terminated by a semicolon') - - codePoint = Number.parseInt(decDigits, 10) - return codePointToSymbol(codePoint, strict) - } - - if ($6) { - // Decode hexadecimal escapes, e.g. `𝌆`. - hexDigits = $6 - semicolon = $7 - if (strict && !semicolon) - parseError('character reference was not terminated by a semicolon') - - codePoint = Number.parseInt(hexDigits, 16) - return codePointToSymbol(codePoint, strict) - } - - // If we’re still here, `if ($7)` is implied; it’s an ambiguous - // ampersand for sure. https://mths.be/notes/ambiguous-ampersands - if (strict) { - parseError( - 'named character reference was not terminated by a semicolon', - ) - } - return $0 - }, - ) -} -// Expose default options (so they can be overridden globally). -decode.options = { - isAttributeValue: false, - strict: false, -} - -export function escape(string) { - return string.replace(regexEscape, ($0) => { - // Note: there is no need to check `hasOwn(escapeMap, $0)` here. - return escapeMap[$0] - }) -} diff --git a/src/html.spec.tsx b/src/html.spec.tsx index a45b6c1..faafde6 100644 --- a/src/html.spec.tsx +++ b/src/html.spec.tsx @@ -1,4 +1,3 @@ -// Copyright (c) 2020 Dirk Holtwick. All rights reserved. https://holtwick.de/copyright /** @jsx h */ import { CDATA, html as h } from './html' diff --git a/src/manipulate.spec.ts b/src/manipulate.spec.ts index b8fb340..e0d60f6 100644 --- a/src/manipulate.spec.ts +++ b/src/manipulate.spec.ts @@ -1,5 +1,3 @@ -// Copyright (c) 2020 Dirk Holtwick. All rights reserved. https://holtwick.de/copyright - import { handleHTML } from './manipulate' describe('manipulate', () => { diff --git a/src/vdom.spec.tsx b/src/vdom.spec.tsx index ec46893..02991e4 100644 --- a/src/vdom.spec.tsx +++ b/src/vdom.spec.tsx @@ -1,5 +1,3 @@ -// Copyright (c) 2020 Dirk Holtwick. All rights reserved. https://holtwick.de/copyright - // import Sizzle from './sizzle' import { VDocument, VDocumentFragment, VElement, createHTMLDocument, h } from './vdom' import { parseHTML } from './vdomparser' diff --git a/src/vdom.ts b/src/vdom.ts index 7800261..d3a2712 100644 --- a/src/vdom.ts +++ b/src/vdom.ts @@ -1,5 +1,3 @@ -// Copyright (c) 2020 Dirk Holtwick. All rights reserved. https://holtwick.de/copyright - import { escapeHTML } from './encoding' import { hFactory } from './h' import { html, htmlVDOM } from './html' diff --git a/src/vdomparser.spec.ts b/src/vdomparser.spec.ts index 4b1e8f4..9ecf1a8 100644 --- a/src/vdomparser.spec.ts +++ b/src/vdomparser.spec.ts @@ -1,5 +1,3 @@ -// Copyright (c) 2020 Dirk Holtwick. All rights reserved. https://holtwick.de/copyright - import { parseHTML } from './vdomparser' describe('vDOM Parser', () => { diff --git a/src/vdomparser.ts b/src/vdomparser.ts index b2ea86d..cee3644 100644 --- a/src/vdomparser.ts +++ b/src/vdomparser.ts @@ -1,5 +1,4 @@ /* eslint-disable node/prefer-global/buffer */ -// Copyright (c) 2020 Dirk Holtwick. All rights reserved. https://holtwick.de/copyright import { unescapeHTML } from './encoding' import { SELF_CLOSING_TAGS } from './html' diff --git a/src/xml.spec.tsx b/src/xml.spec.tsx index dc67efc..440cf43 100644 --- a/src/xml.spec.tsx +++ b/src/xml.spec.tsx @@ -1,4 +1,3 @@ -// Copyright (c) 2020 Dirk Holtwick. All rights reserved. https://holtwick.de/copyright // @tsx h import { h } from './xml'