# Features covered: JSON parser
#
# This file contains a collection of tests for the JSON parser.
# Tested functionalities:
# json-1.*: JSON syntax tests
# json-2.*: Valid JSON, that could not parsed into DOM
# json-3.*: JSON unescaping
# json-4.*: Unicode
# json-5.*: Max nesting
# json-6.*: asJSON
# json-7.*: jsonType
# json-8.*: appendFromScript
# json-9.*: cloneNode
# json-10.*: asTclValue
# json-11.*: asTypedList
# json-12.*: createFromTypedList
# Copyright (c) 2017 Rolf Ade.
source [file join [file dir [info script]] loadtdom.tcl]
testConstraint needExpand 1
if {$tcl_version < 8.5} {
testConstraint needExpand 0
}
# See below the comment in proc dom for explanation
if {[info commands _dom] eq ""} {
testConstraint nonetest 1
} else {
testConstraint nonetest 0
}
namespace eval nodeCmds {
dom createNodeCmd elementNode e1
dom createNodeCmd -jsonType ARRAY elementNode jae1
dom createNodeCmd elementNode e2
dom createNodeCmd commentNode c
dom createNodeCmd textNode t
dom createNodeCmd -jsonType TRUE textNode true
dom createNodeCmd -jsonType FALSE textNode false
dom createNodeCmd -jsonType NULL textNode null
dom createNodeCmd -jsonType NUMBER textNode number
dom createNodeCmd cdataNode cdata
dom createNodeCmd piNode pi
}
test json-1.1 {Parse JSON} {
set doc [dom parse -json {{"a":"avalue","b":"bvalue","c":0.123}}]
set result [$doc asXML -indent none]
$doc delete
set result
} "<a>avalue</a><b>bvalue</b><c>0.123</c>"
test json-1.2 {Parse JSON} {
set doc [dom parse -json { {"a" : [ "avalue" ] } }]
set result [$doc asXML -indent none]
$doc delete
set result
} {<a>avalue</a>}
test json-1.3 {Parse JSON} {
set doc [dom parse -json {{"a":"a value","b":"1value"}}]
set result [$doc asXML -indent none]
$doc delete
set result
} "<a>a value</a><b>1value</b>"
test json-1.4 {Parse JSON - nested object} {
set doc [dom parse -json {{"a":{"aa":"aavalue","bb":"bbvalue"},"b":"bvalue","c":0.123}}]
set result [$doc asXML -indent none]
$doc delete
set result
} "<a><aa>aavalue</aa><bb>bbvalue</bb></a><b>bvalue</b><c>0.123</c>"
test json-1.5 {Parse JSON - array} {
set doc [dom parse -json {{"a": [1,2,3,4,"abc"]}}]
set result [$doc asXML -indent none]
$doc delete
set result
} "<a>1234abc</a>"
test json-1.6 {Parse JSON - true, false, null} {
set doc [dom parse -json {{"a":true,"b":false,"c":null,"d":"true","e":""}}]
set result [$doc asXML -indent none]
$doc delete
set result
} {<a>true</a><b>false</b><c>null</c><d>true</d><e></e>}
test json-1.7 {Parse JSON - array in nested object} {
set doc [dom parse -json {{"a":{"aa":[1,2,3,4,"abc"]},"b":"bvalue"}}]
set result [$doc asXML -indent none]
$doc delete
set result
} "<a><aa>1234abc</aa></a><b>bvalue</b>"
test json-1.8 {Parse JSON - true, false, null} {
set doc [dom parse -json -jsonroot "JSONObject" {{"a":true,"b":false,"c":null,"d":"true","e":""}}]
set result [$doc asXML -indent none]
$doc delete
set result
} {<JSONObject><a>true</a><b>false</b><c>null</c><d>true</d><e></e></JSONObject>}
test json-1.9 {JSON syntax error} {nonetest} {
set result [catch {dom parse -json {{"a" "a value"}}} errMsg]
list $result $errMsg
} {1 {error "JSON syntax error" at position 5
"{"a" " <--Error-- a value"}"}}
test json-1.10 {JSON syntax error} {nonetest} {
set result [catch {dom parse -json {{"a":00.23}}} errMsg]
list $result $errMsg
} {1 {error "JSON syntax error" at position 6
"{"a":00 <--Error-- .23}"}}
test json-1.11 {JSON syntax error} {nonetest} {
set result [catch {dom parse -json {{"a":-00.23}}} errMsg]
list $result $errMsg
} {1 {error "JSON syntax error" at position 7
"{"a":-00 <--Error-- .23}"}}
test json-1.12 {JSON syntax error} {nonetest} {
set result [catch {dom parse -json {{"a":.23}}} errMsg]
list $result $errMsg
} {1 {error "JSON syntax error" at position 5
"{"a":. <--Error-- 23}"}}
test json-1.13 {JSON syntax error} {nonetest} {
set result [catch {dom parse -json {{"a":-.23}}} errMsg]
list $result $errMsg
} {1 {error "JSON syntax error" at position 6
"{"a":-. <--Error-- 23}"}}
test json-1.14 {JSON syntax error} {nonetest} {
set result [catch {dom parse -json {{"a":-}}} errMsg]
list $result $errMsg
} {1 {error "JSON syntax error" at position 5
"{"a":- <--Error-- }"}}
test json-1.15 {Parse JSON - nested object} {
set doc [dom parse -json {["a",["aa","bb"],"b"]}]
set result [$doc asXML -indent none]
$doc delete
set result
} "a<arraycontainer>aabb</arraycontainer>b"
set notJsons {
{{null}}
{{1.23}}
{{"string"}}
{{"e":}}
}
test json-1.16 {Invalid input} {nonetest} {
set result ""
set ind 0
foreach notJson $notJsons {
if {![catch {dom parse -json $notJson docNode} errMsg]} {
lappend result $errMsg
}
}
set result
} ""
test json-1.17 {Literal binary 0 (NUL, '\0') is not allowed in input} {nonetest} {
catch {dom parse -json "\"a\u0000\""}
} 1
test json-1.18 {Escaped binary 0 (NUL, '\0') is OK} {
dom parse -json "\"a\\u0000\"" doc
set result [$doc asJSON]
$doc delete
set result
} "\"a\\u0000\""
test json-1.19 {Invalid input - incomplete \u escape} {nonetest} {
set result 1
foreach jsonstr {
"ab\u00"
"ab\ua"
"ab\u12"
"ab\u123"
"ab\u123g"
"ab\u12g"
"ab\u1g"
"ab\ug"
"\u00"
"\ua"
"\u12"
"\u123"
"\u123g"
"\u12g"
"\u1g"
"\ug"
} {
if {![catch {dom parse -json $jsonstr}]} {
set result 0
break
}
}
set result
} 1
test json-1.20 {Escaped binary 0} {needExpand} {
dom parse -json "\"a\\u0000\"" doc
set textvalue [$doc selectNodes string(node())]
set result [string length $textvalue]
binary scan $textvalue c2 result2
lappend result {*}$result2
$doc delete
set result
} {2 97 0}
test json-1.21 {Single \u encoded surrogate} {
dom parse -json {"abc\uD835"} doc
set result [$doc asXML -escapeNonASCII -indent none]
$doc delete
set result
} {abc�}
test json-1.22 {\u encoded surrogate pair} {
dom parse -json {"abc\uD835\uDD38"} doc
set result [$doc asXML -escapeNonASCII -indent none]
$doc delete
set result
} {abc𝔸}
test json-2.1 {invalid xml name} {
set doc [dom parse -json {{"a":"a value","1b":"1value", "a\nb":"a\nb", "":"empty string"}}]
set result [$doc asXML -indent none]
$doc delete
set result
} {<a>a value</a><1b>1value</1b><a
b>a
b</a
b><>empty string</>}
test json-3.1 {Unescaping} {
set doc [dom parse -json {{"a":"a\nvalue","b":"value\tvalue"}}]
set result [$doc asXML -indent none]
$doc delete
set result
} "<a>a
value</a><b>value\tvalue</b>"
test json-3.2 {Unescaping} {
set doc [dom parse -json {{"a":"a\nvalue", "b":"12\u0077\u2221ec"}}]
set result [$doc asXML -indent none -escapeNonASCII]
$doc delete
set result
} "<a>a
value</a><b>12w∡ec</b>"
test json-3.3 {Unescaping} {
set doc [dom parse -json {{"a":"\u0077\u2221"}}]
set result [$doc asXML -indent none -escapeNonASCII]
$doc delete
set result
} "<a>w∡</a>"
test json-3.4 {unescaping} {
set doc [dom parse -jsonroot json -json {["\\a"]}]
set result [$doc asXML -indent none]
$doc delete
set result
} {<json>\a</json>}
test json-3.4.1 {unescaping} {
set doc [dom parse -jsonroot json -json {["\\a","\u0071"]}]
set result [$doc asXML -indent none]
$doc delete
set result
} {<json>\aq</json>}
test json-3.5 {unescaping} {nonetest} {
set result [catch {dom parse -json {{"this":"a\lb"}}} errMsg]
list $result $errMsg
} {1 {error "JSON syntax error" at position 11
"{"this":"a\l <--Error-- b"}"}}
test json-3.6 {unescaping} {
set doc [dom parse -json {{"this":"a\nbc"}}]
set result [$doc asXML -indent none]
$doc delete
set result
} {<this>a
bc</this>}
test json-3.7 {unescaping} {
set doc [dom parse -json {{"this":"a\u0077\t\u0078bc"}}]
set result [$doc asXML -indent none]
$doc delete
set result
} "<this>aw\txbc</this>"
test json-3.8 {unescaping} {
set doc [dom parse -json {{"this":"a\u000b"}}]
set result [$doc asXML -indent none]
$doc delete
set result
} "<this>a\u000b</this>"
test json-3.9 {unescaping} {
set doc [dom parse -json {{"this":"a\u0077","that":"\t\u0078bc"}}]
set result [$doc asXML -indent none]
$doc delete
set result
} "<this>aw</this><that>\txbc</that>"
proc toutf8s s {
set result ""
foreach c [split $s ""] {
set s [encoding convertto utf-8 $c]
binary scan $s H* x
append result [regsub -all -expanded {..} [string toupper $x] {\x&}]
}
return $result
}
test json-4.1 {html entities as JSON data} {Tcl9} {
set file [file join [file dir [info script]] data/htmlmathml.json]
set fd [open $file]
set json [read $fd]
close $fd
set doc [dom parse -json $json]
array unset entities
set entities [list]
set olentities [list]
set maxe 0
set maxv 0
foreach entity [$doc selectNodes characters/*] {
set ename [$entity nodeName]
set evalue [[$entity firstChild] nodeValue]
if {[string index $evalue 0] eq " "} {
set evalue [string trim $evalue]
}
set eutf8 [toutf8s $evalue]
if {[string length $ename] > $maxe} {
set maxe [string length $ename]
}
if {[string length $eutf8] > $maxv} {
set maxv [string length $eutf8]
}
if {[string length $ename] < [string length $eutf8]/4 - 2} {
lappend olentities $ename $eutf8 $evalue
} else {
lappend entities $ename $eutf8 $evalue
}
}
$doc delete
set result "\n"
incr maxe 4
incr maxv 4
foreach {name bytes glyphs} $entities {
append result [format " { %-${maxe}s%-${maxv}s 0 },\n" \"$name\", \"$bytes\",]
}
set result
} {
{ "AElig", "\xC3\x86", 0 },
{ "AMP", "\x26", 0 },
{ "Aacute", "\xC3\x81", 0 },
{ "Abreve", "\xC4\x82", 0 },
{ "Acirc", "\xC3\x82", 0 },
{ "Acy", "\xD0\x90", 0 },
{ "Afr", "\xF0\x9D\x94\x84", 0 },
{ "Agrave", "\xC3\x80", 0 },
{ "Alpha", "\xCE\x91", 0 },
{ "Amacr", "\xC4\x80", 0 },
{ "And", "\xE2\xA9\x93", 0 },
{ "Aogon", "\xC4\x84", 0 },
{ "Aopf", "\xF0\x9D\x94\xB8", 0 },
{ "ApplyFunction", "\xE2\x81\xA1", 0 },
{ "Aring", "\xC3\x85", 0 },
{ "Ascr", "\xF0\x9D\x92\x9C", 0 },
{ "Assign", "\xE2\x89\x94", 0 },
{ "Atilde", "\xC3\x83", 0 },
{ "Auml", "\xC3\x84", 0 },
{ "Backslash", "\xE2\x88\x96", 0 },
{ "Barv", "\xE2\xAB\xA7", 0 },
{ "Barwed", "\xE2\x8C\x86", 0 },
{ "Bcy", "\xD0\x91", 0 },
{ "Because", "\xE2\x88\xB5", 0 },
{ "Bernoullis", "\xE2\x84\xAC", 0 },
{ "Beta", "\xCE\x92", 0 },
{ "Bfr", "\xF0\x9D\x94\x85", 0 },
{ "Bopf", "\xF0\x9D\x94\xB9", 0 },
{ "Breve", "\xCB\x98", 0 },
{ "Bscr", "\xE2\x84\xAC", 0 },
{ "Bumpeq", "\xE2\x89\x8E", 0 },
{ "CHcy", "\xD0\xA7", 0 },
{ "COPY", "\xC2\xA9", 0 },
{ "Cacute", "\xC4\x86", 0 },
{ "Cap", "\xE2\x8B\x92", 0 },
{ "CapitalDifferentialD", "\xE2\x85\x85", 0 },
{ "Cayleys", "\xE2\x84\xAD", 0 },
{ "Ccaron", "\xC4\x8C", 0 },
{ "Ccedil", "\xC3\x87", 0 },
{ "Ccirc", "\xC4\x88", 0 },
{ "Cconint", "\xE2\x88\xB0", 0 },
{ "Cdot", "\xC4\x8A", 0 },
{ "Cedilla", "\xC2\xB8", 0 },
{ "CenterDot", "\xC2\xB7", 0 },
{ "Cfr", "\xE2\x84\xAD", 0 },
{ "Chi", "\xCE\xA7", 0 },
{ "CircleDot", "\xE2\x8A\x99", 0 },
{ "CircleMinus", "\xE2\x8A\x96", 0 },
{ "CirclePlus", "\xE2\x8A\x95", 0 },
{ "CircleTimes", "\xE2\x8A\x97", 0 },
{ "ClockwiseContourIntegral", "\xE2\x88\xB2", 0 },
{ "CloseCurlyDoubleQuote", "\xE2\x80\x9D", 0 },
{ "CloseCurlyQuote", "\xE2\x80\x99", 0 },
{ "Colon", "\xE2\x88\xB7", 0 },
{ "Colone", "\xE2\xA9\xB4", 0 },
{ "Congruent", "\xE2\x89\xA1", 0 },
{ "Conint", "\xE2\x88\xAF", 0 },
{ "ContourIntegral", "\xE2\x88\xAE", 0 },
{ "Copf", "\xE2\x84\x82", 0 },
{ "Coproduct", "\xE2\x88\x90", 0 },
{ "CounterClockwiseContourIntegral", "\xE2\x88\xB3", 0 },
{ "Cross", "\xE2\xA8\xAF", 0 },
{ "Cscr", "\xF0\x9D\x92\x9E", 0 },
{ "Cup", "\xE2\x8B\x93", 0 },
{ "CupCap", "\xE2\x89\x8D", 0 },
{ "DD", "\xE2\x85\x85", 0 },
{ "DDotrahd", "\xE2\xA4\x91", 0 },
{ "DJcy", "\xD0\x82", 0 },
{ "DScy", "\xD0\x85", 0 },
{ "DZcy", "\xD0\x8F", 0 },
{ "Dagger", "\xE2\x80\xA1", 0 },
{ "Darr", "\xE2\x86\xA1", 0 },
{ "Dashv", "\xE2\xAB\xA4", 0 },
{ "Dcaron", "\xC4\x8E", 0 },
{ "Dcy", "\xD0\x94", 0 },
{ "Del", "\xE2\x88\x87", 0 },
{ "Delta", "\xCE\x94", 0 },
{ "Dfr", "\xF0\x9D\x94\x87", 0 },
{ "DiacriticalAcute", "\xC2\xB4", 0 },
{ "DiacriticalDot", "\xCB\x99", 0 },
{ "DiacriticalDoubleAcute", "\xCB\x9D", 0 },
{ "DiacriticalGrave", "\x60", 0 },
{ "DiacriticalTilde", "\xCB\x9C", 0 },
{ "Diamond", "\xE2\x8B\x84", 0 },
{ "DifferentialD", "\xE2\x85\x86", 0 },
{ "Dopf", "\xF0\x9D\x94\xBB", 0 },
{ "Dot", "\xC2\xA8", 0 },
{ "DotDot", "\xE2\x83\x9C", 0 },
{ "DotEqual", "\xE2\x89\x90", 0 },
{ "DoubleContourIntegral", "\xE2\x88\xAF", 0 },
{ "DoubleDot", "\xC2\xA8", 0 },
{ "DoubleDownArrow", "\xE2\x87\x93", 0 },
{ "DoubleLeftArrow", "\xE2\x87\x90", 0 },
{ "DoubleLeftRightArrow", "\xE2\x87\x94", 0 },
{ "DoubleLeftTee", "\xE2\xAB\xA4", 0 },
{ "DoubleLongLeftArrow", "\xE2\x9F\xB8", 0 },
{ "DoubleLongLeftRightArrow", "\xE2\x9F\xBA", 0 },
{ "DoubleLongRightArrow", "\xE2\x9F\xB9", 0 },
{ "DoubleRightArrow", "\xE2\x87\x92", 0 },
{ "DoubleRightTee", "\xE2\x8A\xA8", 0 },
{ "DoubleUpArrow", "\xE2\x87\x91", 0 },
{ "DoubleUpDownArrow", "\xE2\x87\x95", 0 },
{ "DoubleVerticalBar", "\xE2\x88\xA5", 0 },
{ "DownArrow", "\xE2\x86\x93", 0 },
{ "DownArrowBar", "\xE2\xA4\x93", 0 },
{ "DownArrowUpArrow", "\xE2\x87\xB5", 0 },
{ "DownBreve", "\xCC\x91", 0 },
{ "DownLeftRightVector", "\xE2\xA5\x90", 0 },
{ "DownLeftTeeVector", "\xE2\xA5\x9E", 0 },
{ "DownLeftVector", "\xE2\x86\xBD", 0 },
{ "DownLeftVectorBar", "\xE2\xA5\x96", 0 },
{ "DownRightTeeVector", "\xE2\xA5\x9F", 0 },
{ "DownRightVector", "\xE2\x87\x81", 0 },
{ "DownRightVectorBar", "\xE2\xA5\x97", 0 },
{ "DownTee", "\xE2\x8A\xA4", 0 },
{ "DownTeeArrow", "\xE2\x86\xA7", 0 },
{ "Downarrow", "\xE2\x87\x93", 0 },
{ "Dscr", "\xF0\x9D\x92\x9F", 0 },
{ "Dstrok", "\xC4\x90", 0 },
{ "ENG", "\xC5\x8A", 0 },
{ "ETH", "\xC3\x90", 0 },
{ "Eacute", "\xC3\x89", 0 },
{ "Ecaron", "\xC4\x9A", 0 },
{ "Ecirc", "\xC3\x8A", 0 },
{ "Ecy", "\xD0\xAD", 0 },
{ "Edot", "\xC4\x96", 0 },
{ "Efr", "\xF0\x9D\x94\x88", 0 },
{ "Egrave", "\xC3\x88", 0 },
{ "Element", "\xE2\x88\x88", 0 },
{ "Emacr", "\xC4\x92", 0 },
{ "EmptySmallSquare", "\xE2\x97\xBB", 0 },
{ "EmptyVerySmallSquare", "\xE2\x96\xAB", 0 },
{ "Eogon", "\xC4\x98", 0 },
{ "Eopf", "\xF0\x9D\x94\xBC", 0 },
{ "Epsilon", "\xCE\x95", 0 },
{ "Equal", "\xE2\xA9\xB5", 0 },
{ "EqualTilde", "\xE2\x89\x82", 0 },
{ "Equilibrium", "\xE2\x87\x8C", 0 },
{ "Escr", "\xE2\x84\xB0", 0 },
{ "Esim", "\xE2\xA9\xB3", 0 },
{ "Eta", "\xCE\x97", 0 },
{ "Euml", "\xC3\x8B", 0 },
{ "Exists", "\xE2\x88\x83", 0 },
{ "ExponentialE", "\xE2\x85\x87", 0 },
{ "Fcy", "\xD0\xA4", 0 },
{ "Ffr", "\xF0\x9D\x94\x89", 0 },
{ "FilledSmallSquare", "\xE2\x97\xBC", 0 },
{ "FilledVerySmallSquare", "\xE2\x96\xAA", 0 },
{ "Fopf", "\xF0\x9D\x94\xBD", 0 },
{ "ForAll", "\xE2\x88\x80", 0 },
{ "Fouriertrf", "\xE2\x84\xB1", 0 },
{ "Fscr", "\xE2\x84\xB1", 0 },
{ "GJcy", "\xD0\x83", 0 },
{ "GT", "\x3E", 0 },
{ "Gamma", "\xCE\x93", 0 },
{ "Gammad", "\xCF\x9C", 0 },
{ "Gbreve", "\xC4\x9E", 0 },
{ "Gcedil", "\xC4\xA2", 0 },
{ "Gcirc", "\xC4\x9C", 0 },
{ "Gcy", "\xD0\x93", 0 },
{ "Gdot", "\xC4\xA0", 0 },
{ "Gfr", "\xF0\x9D\x94\x8A", 0 },
{ "Gg", "\xE2\x8B\x99", 0 },
{ "Gopf", "\xF0\x9D\x94\xBE", 0 },
{ "GreaterEqual", "\xE2\x89\xA5", 0 },
{ "GreaterEqualLess", "\xE2\x8B\x9B", 0 },
{ "GreaterFullEqual", "\xE2\x89\xA7", 0 },
{ "GreaterGreater", "\xE2\xAA\xA2", 0 },
{ "GreaterLess", "\xE2\x89\xB7", 0 },
{ "GreaterSlantEqual", "\xE2\xA9\xBE", 0 },
{ "GreaterTilde", "\xE2\x89\xB3", 0 },
{ "Gscr", "\xF0\x9D\x92\xA2", 0 },
{ "Gt", "\xE2\x89\xAB", 0 },
{ "HARDcy", "\xD0\xAA", 0 },
{ "Hacek", "\xCB\x87", 0 },
{ "Hat", "\x5E", 0 },
{ "Hcirc", "\xC4\xA4", 0 },
{ "Hfr", "\xE2\x84\x8C", 0 },
{ "HilbertSpace", "\xE2\x84\x8B", 0 },
{ "Hopf", "\xE2\x84\x8D", 0 },
{ "HorizontalLine", "\xE2\x94\x80", 0 },
{ "Hscr", "\xE2\x84\x8B", 0 },
{ "Hstrok", "\xC4\xA6", 0 },
{ "HumpDownHump", "\xE2\x89\x8E", 0 },
{ "HumpEqual", "\xE2\x89\x8F", 0 },
{ "IEcy", "\xD0\x95", 0 },
{ "IJlig", "\xC4\xB2", 0 },
{ "IOcy", "\xD0\x81", 0 },
{ "Iacute", "\xC3\x8D", 0 },
{ "Icirc", "\xC3\x8E", 0 },
{ "Icy", "\xD0\x98", 0 },
{ "Idot", "\xC4\xB0", 0 },
{ "Ifr", "\xE2\x84\x91", 0 },
{ "Igrave", "\xC3\x8C", 0 },
{ "Im", "\xE2\x84\x91", 0 },
{ "Imacr", "\xC4\xAA", 0 },
{ "ImaginaryI", "\xE2\x85\x88", 0 },
{ "Implies", "\xE2\x87\x92", 0 },
{ "Int", "\xE2\x88\xAC", 0 },
{ "Integral", "\xE2\x88\xAB", 0 },
{ "Intersection", "\xE2\x8B\x82", 0 },
{ "InvisibleComma", "\xE2\x81\xA3", 0 },
{ "InvisibleTimes", "\xE2\x81\xA2", 0 },
{ "Iogon", "\xC4\xAE", 0 },
{ "Iopf", "\xF0\x9D\x95\x80", 0 },
{ "Iota", "\xCE\x99", 0 },
{ "Iscr", "\xE2\x84\x90", 0 },
{ "Itilde", "\xC4\xA8", 0 },
{ "Iukcy", "\xD0\x86", 0 },
{ "Iuml", "\xC3\x8F", 0 },
{ "Jcirc", "\xC4\xB4", 0 },
{ "Jcy", "\xD0\x99", 0 },
{ "Jfr", "\xF0\x9D\x94\x8D", 0 },
{ "Jopf", "\xF0\x9D\x95\x81", 0 },
{ "Jscr", "\xF0\x9D\x92\xA5", 0 },
{ "Jsercy", "\xD0\x88", 0 },
{ "Jukcy", "\xD0\x84", 0 },
{ "KHcy", "\xD0\xA5", 0 },
{ "KJcy", "\xD0\x8C", 0 },
{ "Kappa", "\xCE\x9A", 0 },
{ "Kcedil", "\xC4\xB6", 0 },
{ "Kcy", "\xD0\x9A", 0 },
{ "Kfr", "\xF0\x9D\x94\x8E", 0 },
{ "Kopf", "\xF0\x9D\x95\x82", 0 },
{ "Kscr", "\xF0\x9D\x92\xA6", 0 },
{ "LJcy", "\xD0\x89", 0 },
{ "LT", "\x3C", 0 },
{ "Lacute", "\xC4\xB9", 0 },
{ "Lambda", "\xCE\x9B", 0 },
{ "Lang", "\xE2\x9F\xAA", 0 },
{ "Laplacetrf", "\xE2\x84\x92", 0 },
{ "Larr", "\xE2\x86\x9E", 0 },
{ "Lcaron", "\xC4\xBD", 0 },
{ "Lcedil", "\xC4\xBB", 0 },
{ "Lcy", "\xD0\x9B", 0 },
{ "LeftAngleBracket", "\xE2\x9F\xA8", 0 },
{ "LeftArrow", "\xE2\x86\x90", 0 },
{ "LeftArrowBar", "\xE2\x87\xA4", 0 },
{ "LeftArrowRightArrow", "\xE2\x87\x86", 0 },
{ "LeftCeiling", "\xE2\x8C\x88", 0 },
{ "LeftDoubleBracket", "\xE2\x9F\xA6", 0 },
{ "LeftDownTeeVector", "\xE2\xA5\xA1", 0 },
{ "LeftDownVector", "\xE2\x87\x83", 0 },
{ "LeftDownVectorBar", "\xE2\xA5\x99", 0 },
{ "LeftFloor", "\xE2\x8C\x8A", 0 },
{ "LeftRightArrow", "\xE2\x86\x94", 0 },
{ "LeftRightVector", "\xE2\xA5\x8E", 0 },
{ "LeftTee", "\xE2\x8A\xA3", 0 },
{ "LeftTeeArrow", "\xE2\x86\xA4", 0 },
{ "LeftTeeVector", "\xE2\xA5\x9A", 0 },
{ "LeftTriangle", "\xE2\x8A\xB2", 0 },
{ "LeftTriangleBar", "\xE2\xA7\x8F", 0 },
{ "LeftTriangleEqual", "\xE2\x8A\xB4", 0 },
{ "LeftUpDownVector", "\xE2\xA5\x91", 0 },
{ "LeftUpTeeVector", "\xE2\xA5\xA0", 0 },
{ "LeftUpVector", "\xE2\x86\xBF", 0 },
{ "LeftUpVectorBar", "\xE2\xA5\x98", 0 },
{ "LeftVector", "\xE2\x86\xBC", 0 },
{ "LeftVectorBar", "\xE2\xA5\x92", 0 },
{ "Leftarrow", "\xE2\x87\x90", 0 },
{ "Leftrightarrow", "\xE2\x87\x94", 0 },
{ "LessEqualGreater", "\xE2\x8B\x9A", 0 },
{ "LessFullEqual", "\xE2\x89\xA6", 0 },
{ "LessGreater", "\xE2\x89\xB6", 0 },
{ "LessLess", "\xE2\xAA\xA1", 0 },
{ "LessSlantEqual", "\xE2\xA9\xBD", 0 },
{ "LessTilde", "\xE2\x89\xB2", 0 },
{ "Lfr", "\xF0\x9D\x94\x8F", 0 },
{ "Ll", "\xE2\x8B\x98", 0 },
{ "Lleftarrow", "\xE2\x87\x9A", 0 },
{ "Lmidot", "\xC4\xBF", 0 },
{ "LongLeftArrow", "\xE2\x9F\xB5", 0 },
{ "LongLeftRightArrow", "\xE2\x9F\xB7", 0 },
{ "LongRightArrow", "\xE2\x9F\xB6", 0 },
{ "Longleftarrow", "\xE2\x9F\xB8", 0 },
{ "Longleftrightarrow", "\xE2\x9F\xBA", 0 },
{ "Longrightarrow", "\xE2\x9F\xB9", 0 },
{ "Lopf", "\xF0\x9D\x95\x83", 0 },
{ "LowerLeftArrow", "\xE2\x86\x99", 0 },
{ "LowerRightArrow", "\xE2\x86\x98", 0 },
{ "Lscr", "\xE2\x84\x92", 0 },
{ "Lsh", "\xE2\x86\xB0", 0 },
{ "Lstrok", "\xC5\x81", 0 },
{ "Lt", "\xE2\x89\xAA", 0 },
{ "Map", "\xE2\xA4\x85", 0 },
{ "Mcy", "\xD0\x9C", 0 },
{ "MediumSpace", "\xE2\x81\x9F", 0 },
{ "Mellintrf", "\xE2\x84\xB3", 0 },
{ "Mfr", "\xF0\x9D\x94\x90", 0 },
{ "MinusPlus", "\xE2\x88\x93", 0 },
{ "Mopf", "\xF0\x9D\x95\x84", 0 },
{ "Mscr", "\xE2\x84\xB3", 0 },
{ "Mu", "\xCE\x9C", 0 },
{ "NJcy", "\xD0\x8A", 0 },
{ "Nacute", "\xC5\x83", 0 },
{ "Ncaron", "\xC5\x87", 0 },
{ "Ncedil", "\xC5\x85", 0 },
{ "Ncy", "\xD0\x9D", 0 },
{ "NegativeMediumSpace", "\xE2\x80\x8B", 0 },
{ "NegativeThickSpace", "\xE2\x80\x8B", 0 },
{ "NegativeThinSpace", "\xE2\x80\x8B", 0 },
{ "NegativeVeryThinSpace", "\xE2\x80\x8B", 0 },
{ "NestedGreaterGreater", "\xE2\x89\xAB", 0 },
{ "NestedLessLess", "\xE2\x89\xAA", 0 },
{ "NewLine", "\x0A", 0 },
{ "Nfr", "\xF0\x9D\x94\x91", 0 },
{ "NoBreak", "\xE2\x81\xA0", 0 },
{ "NonBreakingSpace", "\xC2\xA0", 0 },
{ "Nopf", "\xE2\x84\x95", 0 },
{ "Not", "\xE2\xAB\xAC", 0 },
{ "NotCongruent", "\xE2\x89\xA2", 0 },
{ "NotCupCap", "\xE2\x89\xAD", 0 },
{ "NotDoubleVerticalBar", "\xE2\x88\xA6", 0 },
{ "NotElement", "\xE2\x88\x89", 0 },
{ "NotEqual", "\xE2\x89\xA0", 0 },
{ "NotEqualTilde", "\xE2\x89\x82\xCC\xB8", 0 },
{ "NotExists", "\xE2\x88\x84", 0 },
{ "NotGreater", "\xE2\x89\xAF", 0 },
{ "NotGreaterEqual", "\xE2\x89\xB1", 0 },
{ "NotGreaterFullEqual", "\xE2\x89\xA7\xCC\xB8", 0 },
{ "NotGreaterGreater", "\xE2\x89\xAB\xCC\xB8", 0 },
{ "NotGreaterLess", "\xE2\x89\xB9", 0 },
{ "NotGreaterSlantEqual", "\xE2\xA9\xBE\xCC\xB8", 0 },
{ "NotGreaterTilde", "\xE2\x89\xB5", 0 },
{ "NotHumpDownHump", "\xE2\x89\x8E\xCC\xB8", 0 },
{ "NotHumpEqual", "\xE2\x89\x8F\xCC\xB8", 0 },
{ "NotLeftTriangle", "\xE2\x8B\xAA", 0 },
{ "NotLeftTriangleBar", "\xE2\xA7\x8F\xCC\xB8", 0 },
{ "NotLeftTriangleEqual", "\xE2\x8B\xAC", 0 },
{ "NotLess", "\xE2\x89\xAE", 0 },
{ "NotLessEqual", "\xE2\x89\xB0", 0 },
{ "NotLessGreater", "\xE2\x89\xB8", 0 },
{ "NotLessLess", "\xE2\x89\xAA\xCC\xB8", 0 },
{ "NotLessSlantEqual", "\xE2\xA9\xBD\xCC\xB8", 0 },
{ "NotLessTilde", "\xE2\x89\xB4", 0 },
{ "NotNestedGreaterGreater", "\xE2\xAA\xA2\xCC\xB8", 0 },
{ "NotNestedLessLess", "\xE2\xAA\xA1\xCC\xB8", 0 },
{ "NotPrecedes", "\xE2\x8A\x80", 0 },
{ "NotPrecedesEqual", "\xE2\xAA\xAF\xCC\xB8", 0 },
{ "NotPrecedesSlantEqual", "\xE2\x8B\xA0", 0 },
{ "NotReverseElement", "\xE2\x88\x8C", 0 },
{ "NotRightTriangle", "\xE2\x8B\xAB", 0 },
{ "NotRightTriangleBar", "\xE2\xA7\x90\xCC\xB8", 0 },
{ "NotRightTriangleEqual", "\xE2\x8B\xAD", 0 },
{ "NotSquareSubset", "\xE2\x8A\x8F\xCC\xB8", 0 },
{ "NotSquareSubsetEqual", "\xE2\x8B\xA2", 0 },
{ "NotSquareSuperset", "\xE2\x8A\x90\xCC\xB8", 0 },
{ "NotSquareSupersetEqual", "\xE2\x8B\xA3", 0 },
{ "NotSubset", "\xE2\x8A\x82\xE2\x83\x92", 0 },
{ "NotSubsetEqual", "\xE2\x8A\x88", 0 },
{ "NotSucceeds", "\xE2\x8A\x81", 0 },
{ "NotSucceedsEqual", "\xE2\xAA\xB0\xCC\xB8", 0 },
{ "NotSucceedsSlantEqual", "\xE2\x8B\xA1", 0 },
{ "NotSucceedsTilde", "\xE2\x89\xBF\xCC\xB8", 0 },
{ "NotSuperset", "\xE2\x8A\x83\xE2\x83\x92", 0 },
{ "NotSupersetEqual", "\xE2\x8A\x89", 0 },
{ "NotTilde", "\xE2\x89\x81", 0 },
{ "NotTildeEqual", "\xE2\x89\x84", 0 },
{ "NotTildeFullEqual", "\xE2\x89\x87", 0 },
{ "NotTildeTilde", "\xE2\x89\x89", 0 },
{ "NotVerticalBar", "\xE2\x88\xA4", 0 },
{ "Nscr", "\xF0\x9D\x92\xA9", 0 },
{ "Ntilde", "\xC3\x91", 0 },
{ "Nu", "\xCE\x9D", 0 },
{ "OElig", "\xC5\x92", 0 },
{ "Oacute", "\xC3\x93", 0 },
{ "Ocirc", "\xC3\x94", 0 },
{ "Ocy", "\xD0\x9E", 0 },
{ "Odblac", "\xC5\x90", 0 },
{ "Ofr", "\xF0\x9D\x94\x92", 0 },
{ "Ograve", "\xC3\x92", 0 },
{ "Omacr", "\xC5\x8C", 0 },
{ "Omega", "\xCE\xA9", 0 },
{ "Omicron", "\xCE\x9F", 0 },
{ "Oopf", "\xF0\x9D\x95\x86", 0 },
{ "OpenCurlyDoubleQuote", "\xE2\x80\x9C", 0 },
{ "OpenCurlyQuote", "\xE2\x80\x98", 0 },
{ "Or", "\xE2\xA9\x94", 0 },
{ "Oscr", "\xF0\x9D\x92\xAA", 0 },
{ "Oslash", "\xC3\x98", 0 },
{ "Otilde", "\xC3\x95", 0 },
{ "Otimes", "\xE2\xA8\xB7", 0 },
{ "Ouml", "\xC3\x96", 0 },
{ "OverBar", "\xE2\x80\xBE", 0 },
{ "OverBrace", "\xE2\x8F\x9E", 0 },
{ "OverBracket", "\xE2\x8E\xB4", 0 },
{ "OverParenthesis", "\xE2\x8F\x9C", 0 },
{ "PartialD", "\xE2\x88\x82", 0 },
{ "Pcy", "\xD0\x9F", 0 },
{ "Pfr", "\xF0\x9D\x94\x93", 0 },
{ "Phi", "\xCE\xA6", 0 },
{ "Pi", "\xCE\xA0", 0 },
{ "PlusMinus", "\xC2\xB1", 0 },
{ "Poincareplane", "\xE2\x84\x8C", 0 },
{ "Popf", "\xE2\x84\x99", 0 },
{ "Pr", "\xE2\xAA\xBB", 0 },
{ "Precedes", "\xE2\x89\xBA", 0 },
{ "PrecedesEqual", "\xE2\xAA\xAF", 0 },
{ "PrecedesSlantEqual", "\xE2\x89\xBC", 0 },
{ "PrecedesTilde", "\xE2\x89\xBE", 0 },
{ "Prime", "\xE2\x80\xB3", 0 },
{ "Product", "\xE2\x88\x8F", 0 },
{ "Proportion", "\xE2\x88\xB7", 0 },
{ "Proportional", "\xE2\x88\x9D", 0 },
{ "Pscr", "\xF0\x9D\x92\xAB", 0 },
{ "Psi", "\xCE\xA8", 0 },
{ "QUOT", "\x22", 0 },
{ "Qfr", "\xF0\x9D\x94\x94", 0 },
{ "Qopf", "\xE2\x84\x9A", 0 },
{ "Qscr", "\xF0\x9D\x92\xAC", 0 },
{ "RBarr", "\xE2\xA4\x90", 0 },
{ "REG", "\xC2\xAE", 0 },
{ "Racute", "\xC5\x94", 0 },
{ "Rang", "\xE2\x9F\xAB", 0 },
{ "Rarr", "\xE2\x86\xA0", 0 },
{ "Rarrtl", "\xE2\xA4\x96", 0 },
{ "Rcaron", "\xC5\x98", 0 },
{ "Rcedil", "\xC5\x96", 0 },
{ "Rcy", "\xD0\xA0", 0 },
{ "Re", "\xE2\x84\x9C", 0 },
{ "ReverseElement", "\xE2\x88\x8B", 0 },
{ "ReverseEquilibrium", "\xE2\x87\x8B", 0 },
{ "ReverseUpEquilibrium", "\xE2\xA5\xAF", 0 },
{ "Rfr", "\xE2\x84\x9C", 0 },
{ "Rho", "\xCE\xA1", 0 },
{ "RightAngleBracket", "\xE2\x9F\xA9", 0 },
{ "RightArrow", "\xE2\x86\x92", 0 },
{ "RightArrowBar", "\xE2\x87\xA5", 0 },
{ "RightArrowLeftArrow", "\xE2\x87\x84", 0 },
{ "RightCeiling", "\xE2\x8C\x89", 0 },
{ "RightDoubleBracket", "\xE2\x9F\xA7", 0 },
{ "RightDownTeeVector", "\xE2\xA5\x9D", 0 },
{ "RightDownVector", "\xE2\x87\x82", 0 },
{ "RightDownVectorBar", "\xE2\xA5\x95", 0 },
{ "RightFloor", "\xE2\x8C\x8B", 0 },
{ "RightTee", "\xE2\x8A\xA2", 0 },
{ "RightTeeArrow", "\xE2\x86\xA6", 0 },
{ "RightTeeVector", "\xE2\xA5\x9B", 0 },
{ "RightTriangle", "\xE2\x8A\xB3", 0 },
{ "RightTriangleBar", "\xE2\xA7\x90", 0 },
{ "RightTriangleEqual", "\xE2\x8A\xB5", 0 },
{ "RightUpDownVector", "\xE2\xA5\x8F", 0 },
{ "RightUpTeeVector", "\xE2\xA5\x9C", 0 },
{ "RightUpVector", "\xE2\x86\xBE", 0 },
{ "RightUpVectorBar", "\xE2\xA5\x94", 0 },
{ "RightVector", "\xE2\x87\x80", 0 },
{ "RightVectorBar", "\xE2\xA5\x93", 0 },
{ "Rightarrow", "\xE2\x87\x92", 0 },
{ "Ropf", "\xE2\x84\x9D", 0 },
{ "RoundImplies", "\xE2\xA5\xB0", 0 },
{ "Rrightarrow", "\xE2\x87\x9B", 0 },
{ "Rscr", "\xE2\x84\x9B", 0 },
{ "Rsh", "\xE2\x86\xB1", 0 },
{ "RuleDelayed", "\xE2\xA7\xB4", 0 },
{ "SHCHcy", "\xD0\xA9", 0 },
{ "SHcy", "\xD0\xA8", 0 },
{ "SOFTcy", "\xD0\xAC", 0 },
{ "Sacute", "\xC5\x9A", 0 },
{ "Sc", "\xE2\xAA\xBC", 0 },
{ "Scaron", "\xC5\xA0", 0 },
{ "Scedil", "\xC5\x9E", 0 },
{ "Scirc", "\xC5\x9C", 0 },
{ "Scy", "\xD0\xA1", 0 },
{ "Sfr", "\xF0\x9D\x94\x96", 0 },
{ "ShortDownArrow", "\xE2\x86\x93", 0 },
{ "ShortLeftArrow", "\xE2\x86\x90", 0 },
{ "ShortRightArrow", "\xE2\x86\x92", 0 },
{ "ShortUpArrow", "\xE2\x86\x91", 0 },
{ "Sigma", "\xCE\xA3", 0 },
{ "SmallCircle", "\xE2\x88\x98", 0 },
{ "Sopf", "\xF0\x9D\x95\x8A", 0 },
{ "Sqrt", "\xE2\x88\x9A", 0 },
{ "Square", "\xE2\x96\xA1", 0 },
{ "SquareIntersection", "\xE2\x8A\x93", 0 },
{ "SquareSubset", "\xE2\x8A\x8F", 0 },
{ "SquareSubsetEqual", "\xE2\x8A\x91", 0 },
{ "SquareSuperset", "\xE2\x8A\x90", 0 },
{ "SquareSupersetEqual", "\xE2\x8A\x92", 0 },
{ "SquareUnion", "\xE2\x8A\x94", 0 },
{ "Sscr", "\xF0\x9D\x92\xAE", 0 },
{ "Star", "\xE2\x8B\x86", 0 },
{ "Sub", "\xE2\x8B\x90", 0 },
{ "Subset", "\xE2\x8B\x90", 0 },
{ "SubsetEqual", "\xE2\x8A\x86", 0 },
{ "Succeeds", "\xE2\x89\xBB", 0 },
{ "SucceedsEqual", "\xE2\xAA\xB0", 0 },
{ "SucceedsSlantEqual", "\xE2\x89\xBD", 0 },
{ "SucceedsTilde", "\xE2\x89\xBF", 0 },
{ "SuchThat", "\xE2\x88\x8B", 0 },
{ "Sum", "\xE2\x88\x91", 0 },
{ "Sup", "\xE2\x8B\x91", 0 },
{ "Superset", "\xE2\x8A\x83", 0 },
{ "SupersetEqual", "\xE2\x8A\x87", 0 },
{ "Supset", "\xE2\x8B\x91", 0 },
{ "THORN", "\xC3\x9E", 0 },
{ "TRADE", "\xE2\x84\xA2", 0 },
{ "TSHcy", "\xD0\x8B", 0 },
{ "TScy", "\xD0\xA6", 0 },
{ "Tab", "\x09", 0 },
{ "Tau", "\xCE\xA4", 0 },
{ "Tcaron", "\xC5\xA4", 0 },
{ "Tcedil", "\xC5\xA2", 0 },
{ "Tcy", "\xD0\xA2", 0 },
{ "Tfr", "\xF0\x9D\x94\x97", 0 },
{ "Therefore", "\xE2\x88\xB4", 0 },
{ "Theta", "\xCE\x98", 0 },
{ "ThickSpace", "\xE2\x81\x9F\xE2\x80\x8A", 0 },
{ "ThinSpace", "\xE2\x80\x89", 0 },
{ "Tilde", "\xE2\x88\xBC", 0 },
{ "TildeEqual", "\xE2\x89\x83", 0 },
{ "TildeFullEqual", "\xE2\x89\x85", 0 },
{ "TildeTilde", "\xE2\x89\x88", 0 },
{ "Topf", "\xF0\x9D\x95\x8B", 0 },
{ "TripleDot", "\xE2\x83\x9B", 0 },
{ "Tscr", "\xF0\x9D\x92\xAF", 0 },
{ "Tstrok", "\xC5\xA6", 0 },
{ "Uacute", "\xC3\x9A", 0 },
{ "Uarr", "\xE2\x86\x9F", 0 },
{ "Uarrocir", "\xE2\xA5\x89", 0 },
{ "Ubrcy", "\xD0\x8E", 0 },
{ "Ubreve", "\xC5\xAC", 0 },
{ "Ucirc", "\xC3\x9B", 0 },
{ "Ucy", "\xD0\xA3", 0 },
{ "Udblac", "\xC5\xB0", 0 },
{ "Ufr", "\xF0\x9D\x94\x98", 0 },
{ "Ugrave", "\xC3\x99", 0 },
{ "Umacr", "\xC5\xAA", 0 },
{ "UnderBar", "\x5F", 0 },
{ "UnderBrace", "\xE2\x8F\x9F", 0 },
{ "UnderBracket", "\xE2\x8E\xB5", 0 },
{ "UnderParenthesis", "\xE2\x8F\x9D", 0 },
{ "Union", "\xE2\x8B\x83", 0 },
{ "UnionPlus", "\xE2\x8A\x8E", 0 },
{ "Uogon", "\xC5\xB2", 0 },
{ "Uopf", "\xF0\x9D\x95\x8C", 0 },
{ "UpArrow", "\xE2\x86\x91", 0 },
{ "UpArrowBar", "\xE2\xA4\x92", 0 },
{ "UpArrowDownArrow", "\xE2\x87\x85", 0 },
{ "UpDownArrow", "\xE2\x86\x95", 0 },
{ "UpEquilibrium", "\xE2\xA5\xAE", 0 },
{ "UpTee", "\xE2\x8A\xA5", 0 },
{ "UpTeeArrow", "\xE2\x86\xA5", 0 },
{ "Uparrow", "\xE2\x87\x91", 0 },
{ "Updownarrow", "\xE2\x87\x95", 0 },
{ "UpperLeftArrow", "\xE2\x86\x96", 0 },
{ "UpperRightArrow", "\xE2\x86\x97", 0 },
{ "Upsi", "\xCF\x92", 0 },
{ "Upsilon", "\xCE\xA5", 0 },
{ "Uring", "\xC5\xAE", 0 },
{ "Uscr", "\xF0\x9D\x92\xB0", 0 },
{ "Utilde", "\xC5\xA8", 0 },
{ "Uuml", "\xC3\x9C", 0 },
{ "VDash", "\xE2\x8A\xAB", 0 },
{ "Vbar", "\xE2\xAB\xAB", 0 },
{ "Vcy", "\xD0\x92", 0 },
{ "Vdash", "\xE2\x8A\xA9", 0 },
{ "Vdashl", "\xE2\xAB\xA6", 0 },
{ "Vee", "\xE2\x8B\x81", 0 },
{ "Verbar", "\xE2\x80\x96", 0 },
{ "Vert", "\xE2\x80\x96", 0 },
{ "VerticalBar", "\xE2\x88\xA3", 0 },
{ "VerticalLine", "\x7C", 0 },
{ "VerticalSeparator", "\xE2\x9D\x98", 0 },
{ "VerticalTilde", "\xE2\x89\x80", 0 },
{ "VeryThinSpace", "\xE2\x80\x8A", 0 },
{ "Vfr", "\xF0\x9D\x94\x99", 0 },
{ "Vopf", "\xF0\x9D\x95\x8D", 0 },
{ "Vscr", "\xF0\x9D\x92\xB1", 0 },
{ "Vvdash", "\xE2\x8A\xAA", 0 },
{ "Wcirc", "\xC5\xB4", 0 },
{ "Wedge", "\xE2\x8B\x80", 0 },
{ "Wfr", "\xF0\x9D\x94\x9A", 0 },
{ "Wopf", "\xF0\x9D\x95\x8E", 0 },
{ "Wscr", "\xF0\x9D\x92\xB2", 0 },
{ "Xfr", "\xF0\x9D\x94\x9B", 0 },
{ "Xi", "\xCE\x9E", 0 },
{ "Xopf", "\xF0\x9D\x95\x8F", 0 },
{ "Xscr", "\xF0\x9D\x92\xB3", 0 },
{ "YAcy", "\xD0\xAF", 0 },
{ "YIcy", "\xD0\x87", 0 },
{ "YUcy", "\xD0\xAE", 0 },
{ "Yacute", "\xC3\x9D", 0 },
{ "Ycirc", "\xC5\xB6", 0 },
{ "Ycy", "\xD0\xAB", 0 },
{ "Yfr", "\xF0\x9D\x94\x9C", 0 },
{ "Yopf", "\xF0\x9D\x95\x90", 0 },
{ "Yscr", "\xF0\x9D\x92\xB4", 0 },
{ "Yuml", "\xC5\xB8", 0 },
{ "ZHcy", "\xD0\x96", 0 },
{ "Zacute", "\xC5\xB9", 0 },
{ "Zcaron", "\xC5\xBD", 0 },
{ "Zcy", "\xD0\x97", 0 },
{ "Zdot", "\xC5\xBB", 0 },
{ "ZeroWidthSpace", "\xE2\x80\x8B", 0 },
{ "Zeta", "\xCE\x96", 0 },
{ "Zfr", "\xE2\x84\xA8", 0 },
{ "Zopf", "\xE2\x84\xA4", 0 },
{ "Zscr", "\xF0\x9D\x92\xB5", 0 },
{ "aacute", "\xC3\xA1", 0 },
{ "abreve", "\xC4\x83", 0 },
{ "ac", "\xE2\x88\xBE", 0 },
{ "acE", "\xE2\x88\xBE\xCC\xB3", 0 },
{ "acd", "\xE2\x88\xBF", 0 },
{ "acirc", "\xC3\xA2", 0 },
{ "acute", "\xC2\xB4", 0 },
{ "acy", "\xD0\xB0", 0 },
{ "aelig", "\xC3\xA6", 0 },
{ "af", "\xE2\x81\xA1", 0 },
{ "afr", "\xF0\x9D\x94\x9E", 0 },
{ "agrave", "\xC3\xA0", 0 },
{ "alefsym", "\xE2\x84\xB5", 0 },
{ "aleph", "\xE2\x84\xB5", 0 },
{ "alpha", "\xCE\xB1", 0 },
{ "amacr", "\xC4\x81", 0 },
{ "amalg", "\xE2\xA8\xBF", 0 },
{ "amp", "\x26", 0 },
{ "and", "\xE2\x88\xA7", 0 },
{ "andand", "\xE2\xA9\x95", 0 },
{ "andd", "\xE2\xA9\x9C", 0 },
{ "andslope", "\xE2\xA9\x98", 0 },
{ "andv", "\xE2\xA9\x9A", 0 },
{ "ang", "\xE2\x88\xA0", 0 },
{ "ange", "\xE2\xA6\xA4", 0 },
{ "angle", "\xE2\x88\xA0", 0 },
{ "angmsd", "\xE2\x88\xA1", 0 },
{ "angmsdaa", "\xE2\xA6\xA8", 0 },
{ "angmsdab", "\xE2\xA6\xA9", 0 },
{ "angmsdac", "\xE2\xA6\xAA", 0 },
{ "angmsdad", "\xE2\xA6\xAB", 0 },
{ "angmsdae", "\xE2\xA6\xAC", 0 },
{ "angmsdaf", "\xE2\xA6\xAD", 0 },
{ "angmsdag", "\xE2\xA6\xAE", 0 },
{ "angmsdah", "\xE2\xA6\xAF", 0 },
{ "angrt", "\xE2\x88\x9F", 0 },
{ "angrtvb", "\xE2\x8A\xBE", 0 },
{ "angrtvbd", "\xE2\xA6\x9D", 0 },
{ "angsph", "\xE2\x88\xA2", 0 },
{ "angst", "\xC3\x85", 0 },
{ "angzarr", "\xE2\x8D\xBC", 0 },
{ "aogon", "\xC4\x85", 0 },
{ "aopf", "\xF0\x9D\x95\x92", 0 },
{ "ap", "\xE2\x89\x88", 0 },
{ "apE", "\xE2\xA9\xB0", 0 },
{ "apacir", "\xE2\xA9\xAF", 0 },
{ "ape", "\xE2\x89\x8A", 0 },
{ "apid", "\xE2\x89\x8B", 0 },
{ "apos", "\x27", 0 },
{ "approx", "\xE2\x89\x88", 0 },
{ "approxeq", "\xE2\x89\x8A", 0 },
{ "aring", "\xC3\xA5", 0 },
{ "ascr", "\xF0\x9D\x92\xB6", 0 },
{ "ast", "\x2A", 0 },
{ "asymp", "\xE2\x89\x88", 0 },
{ "asympeq", "\xE2\x89\x8D", 0 },
{ "atilde", "\xC3\xA3", 0 },
{ "auml", "\xC3\xA4", 0 },
{ "awconint", "\xE2\x88\xB3", 0 },
{ "awint", "\xE2\xA8\x91", 0 },
{ "bNot", "\xE2\xAB\xAD", 0 },
{ "backcong", "\xE2\x89\x8C", 0 },
{ "backepsilon", "\xCF\xB6", 0 },
{ "backprime", "\xE2\x80\xB5", 0 },
{ "backsim", "\xE2\x88\xBD", 0 },
{ "backsimeq", "\xE2\x8B\x8D", 0 },
{ "barvee", "\xE2\x8A\xBD", 0 },
{ "barwed", "\xE2\x8C\x85", 0 },
{ "barwedge", "\xE2\x8C\x85", 0 },
{ "bbrk", "\xE2\x8E\xB5", 0 },
{ "bbrktbrk", "\xE2\x8E\xB6", 0 },
{ "bcong", "\xE2\x89\x8C", 0 },
{ "bcy", "\xD0\xB1", 0 },
{ "bdquo", "\xE2\x80\x9E", 0 },
{ "becaus", "\xE2\x88\xB5", 0 },
{ "because", "\xE2\x88\xB5", 0 },
{ "bemptyv", "\xE2\xA6\xB0", 0 },
{ "bepsi", "\xCF\xB6", 0 },
{ "bernou", "\xE2\x84\xAC", 0 },
{ "beta", "\xCE\xB2", 0 },
{ "beth", "\xE2\x84\xB6", 0 },
{ "between", "\xE2\x89\xAC", 0 },
{ "bfr", "\xF0\x9D\x94\x9F", 0 },
{ "bigcap", "\xE2\x8B\x82", 0 },
{ "bigcirc", "\xE2\x97\xAF", 0 },
{ "bigcup", "\xE2\x8B\x83", 0 },
{ "bigodot", "\xE2\xA8\x80", 0 },
{ "bigoplus", "\xE2\xA8\x81", 0 },
{ "bigotimes", "\xE2\xA8\x82", 0 },
{ "bigsqcup", "\xE2\xA8\x86", 0 },
{ "bigstar", "\xE2\x98\x85", 0 },
{ "bigtriangledown", "\xE2\x96\xBD", 0 },
{ "bigtriangleup", "\xE2\x96\xB3", 0 },
{ "biguplus", "\xE2\xA8\x84", 0 },
{ "bigvee", "\xE2\x8B\x81", 0 },
{ "bigwedge", "\xE2\x8B\x80", 0 },
{ "bkarow", "\xE2\xA4\x8D", 0 },
{ "blacklozenge", "\xE2\xA7\xAB", 0 },
{ "blacksquare", "\xE2\x96\xAA", 0 },
{ "blacktriangle", "\xE2\x96\xB4", 0 },
{ "blacktriangledown", "\xE2\x96\xBE", 0 },
{ "blacktriangleleft", "\xE2\x97\x82", 0 },
{ "blacktriangleright", "\xE2\x96\xB8", 0 },
{ "blank", "\xE2\x90\xA3", 0 },
{ "blk12", "\xE2\x96\x92", 0 },
{ "blk14", "\xE2\x96\x91", 0 },
{ "blk34", "\xE2\x96\x93", 0 },
{ "block", "\xE2\x96\x88", 0 },
{ "bne", "\x3D\xE2\x83\xA5", 0 },
{ "bnequiv", "\xE2\x89\xA1\xE2\x83\xA5", 0 },
{ "bnot", "\xE2\x8C\x90", 0 },
{ "bopf", "\xF0\x9D\x95\x93", 0 },
{ "bot", "\xE2\x8A\xA5", 0 },
{ "bottom", "\xE2\x8A\xA5", 0 },
{ "bowtie", "\xE2\x8B\x88", 0 },
{ "boxDL", "\xE2\x95\x97", 0 },
{ "boxDR", "\xE2\x95\x94", 0 },
{ "boxDl", "\xE2\x95\x96", 0 },
{ "boxDr", "\xE2\x95\x93", 0 },
{ "boxH", "\xE2\x95\x90", 0 },
{ "boxHD", "\xE2\x95\xA6", 0 },
{ "boxHU", "\xE2\x95\xA9", 0 },
{ "boxHd", "\xE2\x95\xA4", 0 },
{ "boxHu", "\xE2\x95\xA7", 0 },
{ "boxUL", "\xE2\x95\x9D", 0 },
{ "boxUR", "\xE2\x95\x9A", 0 },
{ "boxUl", "\xE2\x95\x9C", 0 },
{ "boxUr", "\xE2\x95\x99", 0 },
{ "boxV", "\xE2\x95\x91", 0 },
{ "boxVH", "\xE2\x95\xAC", 0 },
{ "boxVL", "\xE2\x95\xA3", 0 },
{ "boxVR", "\xE2\x95\xA0", 0 },
{ "boxVh", "\xE2\x95\xAB", 0 },
{ "boxVl", "\xE2\x95\xA2", 0 },
{ "boxVr", "\xE2\x95\x9F", 0 },
{ "boxbox", "\xE2\xA7\x89", 0 },
{ "boxdL", "\xE2\x95\x95", 0 },
{ "boxdR", "\xE2\x95\x92", 0 },
{ "boxdl", "\xE2\x94\x90", 0 },
{ "boxdr", "\xE2\x94\x8C", 0 },
{ "boxh", "\xE2\x94\x80", 0 },
{ "boxhD", "\xE2\x95\xA5", 0 },
{ "boxhU", "\xE2\x95\xA8", 0 },
{ "boxhd", "\xE2\x94\xAC", 0 },
{ "boxhu", "\xE2\x94\xB4", 0 },
{ "boxminus", "\xE2\x8A\x9F", 0 },
{ "boxplus", "\xE2\x8A\x9E", 0 },
{ "boxtimes", "\xE2\x8A\xA0", 0 },
{ "boxuL", "\xE2\x95\x9B", 0 },
{ "boxuR", "\xE2\x95\x98", 0 },
{ "boxul", "\xE2\x94\x98", 0 },
{ "boxur", "\xE2\x94\x94", 0 },
{ "boxv", "\xE2\x94\x82", 0 },
{ "boxvH", "\xE2\x95\xAA", 0 },
{ "boxvL", "\xE2\x95\xA1", 0 },
{ "boxvR", "\xE2\x95\x9E", 0 },
{ "boxvh", "\xE2\x94\xBC", 0 },
{ "boxvl", "\xE2\x94\xA4", 0 },
{ "boxvr", "\xE2\x94\x9C", 0 },
{ "bprime", "\xE2\x80\xB5", 0 },
{ "breve", "\xCB\x98", 0 },
{ "brvbar", "\xC2\xA6", 0 },
{ "bscr", "\xF0\x9D\x92\xB7", 0 },
{ "bsemi", "\xE2\x81\x8F", 0 },
{ "bsim", "\xE2\x88\xBD", 0 },
{ "bsime", "\xE2\x8B\x8D", 0 },
{ "bsol", "\x5C", 0 },
{ "bsolb", "\xE2\xA7\x85", 0 },
{ "bsolhsub", "\xE2\x9F\x88", 0 },
{ "bull", "\xE2\x80\xA2", 0 },
{ "bullet", "\xE2\x80\xA2", 0 },
{ "bump", "\xE2\x89\x8E", 0 },
{ "bumpE", "\xE2\xAA\xAE", 0 },
{ "bumpe", "\xE2\x89\x8F", 0 },
{ "bumpeq", "\xE2\x89\x8F", 0 },
{ "cacute", "\xC4\x87", 0 },
{ "cap", "\xE2\x88\xA9", 0 },
{ "capand", "\xE2\xA9\x84", 0 },
{ "capbrcup", "\xE2\xA9\x89", 0 },
{ "capcap", "\xE2\xA9\x8B", 0 },
{ "capcup", "\xE2\xA9\x87", 0 },
{ "capdot", "\xE2\xA9\x80", 0 },
{ "caps", "\xE2\x88\xA9\xEF\xB8\x80", 0 },
{ "caret", "\xE2\x81\x81", 0 },
{ "caron", "\xCB\x87", 0 },
{ "ccaps", "\xE2\xA9\x8D", 0 },
{ "ccaron", "\xC4\x8D", 0 },
{ "ccedil", "\xC3\xA7", 0 },
{ "ccirc", "\xC4\x89", 0 },
{ "ccups", "\xE2\xA9\x8C", 0 },
{ "ccupssm", "\xE2\xA9\x90", 0 },
{ "cdot", "\xC4\x8B", 0 },
{ "cedil", "\xC2\xB8", 0 },
{ "cemptyv", "\xE2\xA6\xB2", 0 },
{ "cent", "\xC2\xA2", 0 },
{ "centerdot", "\xC2\xB7", 0 },
{ "cfr", "\xF0\x9D\x94\xA0", 0 },
{ "chcy", "\xD1\x87", 0 },
{ "check", "\xE2\x9C\x93", 0 },
{ "checkmark", "\xE2\x9C\x93", 0 },
{ "chi", "\xCF\x87", 0 },
{ "cir", "\xE2\x97\x8B", 0 },
{ "cirE", "\xE2\xA7\x83", 0 },
{ "circ", "\xCB\x86", 0 },
{ "circeq", "\xE2\x89\x97", 0 },
{ "circlearrowleft", "\xE2\x86\xBA", 0 },
{ "circlearrowright", "\xE2\x86\xBB", 0 },
{ "circledR", "\xC2\xAE", 0 },
{ "circledS", "\xE2\x93\x88", 0 },
{ "circledast", "\xE2\x8A\x9B", 0 },
{ "circledcirc", "\xE2\x8A\x9A", 0 },
{ "circleddash", "\xE2\x8A\x9D", 0 },
{ "cire", "\xE2\x89\x97", 0 },
{ "cirfnint", "\xE2\xA8\x90", 0 },
{ "cirmid", "\xE2\xAB\xAF", 0 },
{ "cirscir", "\xE2\xA7\x82", 0 },
{ "clubs", "\xE2\x99\xA3", 0 },
{ "clubsuit", "\xE2\x99\xA3", 0 },
{ "colon", "\x3A", 0 },
{ "colone", "\xE2\x89\x94", 0 },
{ "coloneq", "\xE2\x89\x94", 0 },
{ "comma", "\x2C", 0 },
{ "commat", "\x40", 0 },
{ "comp", "\xE2\x88\x81", 0 },
{ "compfn", "\xE2\x88\x98", 0 },
{ "complement", "\xE2\x88\x81", 0 },
{ "complexes", "\xE2\x84\x82", 0 },
{ "cong", "\xE2\x89\x85", 0 },
{ "congdot", "\xE2\xA9\xAD", 0 },
{ "conint", "\xE2\x88\xAE", 0 },
{ "copf", "\xF0\x9D\x95\x94", 0 },
{ "coprod", "\xE2\x88\x90", 0 },
{ "copy", "\xC2\xA9", 0 },
{ "copysr", "\xE2\x84\x97", 0 },
{ "crarr", "\xE2\x86\xB5", 0 },
{ "cross", "\xE2\x9C\x97", 0 },
{ "cscr", "\xF0\x9D\x92\xB8", 0 },
{ "csub", "\xE2\xAB\x8F", 0 },
{ "csube", "\xE2\xAB\x91", 0 },
{ "csup", "\xE2\xAB\x90", 0 },
{ "csupe", "\xE2\xAB\x92", 0 },
{ "ctdot", "\xE2\x8B\xAF", 0 },
{ "cudarrl", "\xE2\xA4\xB8", 0 },
{ "cudarrr", "\xE2\xA4\xB5", 0 },
{ "cuepr", "\xE2\x8B\x9E", 0 },
{ "cuesc", "\xE2\x8B\x9F", 0 },
{ "cularr", "\xE2\x86\xB6", 0 },
{ "cularrp", "\xE2\xA4\xBD", 0 },
{ "cup", "\xE2\x88\xAA", 0 },
{ "cupbrcap", "\xE2\xA9\x88", 0 },
{ "cupcap", "\xE2\xA9\x86", 0 },
{ "cupcup", "\xE2\xA9\x8A", 0 },
{ "cupdot", "\xE2\x8A\x8D", 0 },
{ "cupor", "\xE2\xA9\x85", 0 },
{ "cups", "\xE2\x88\xAA\xEF\xB8\x80", 0 },
{ "curarr", "\xE2\x86\xB7", 0 },
{ "curarrm", "\xE2\xA4\xBC", 0 },
{ "curlyeqprec", "\xE2\x8B\x9E", 0 },
{ "curlyeqsucc", "\xE2\x8B\x9F", 0 },
{ "curlyvee", "\xE2\x8B\x8E", 0 },
{ "curlywedge", "\xE2\x8B\x8F", 0 },
{ "curren", "\xC2\xA4", 0 },
{ "curvearrowleft", "\xE2\x86\xB6", 0 },
{ "curvearrowright", "\xE2\x86\xB7", 0 },
{ "cuvee", "\xE2\x8B\x8E", 0 },
{ "cuwed", "\xE2\x8B\x8F", 0 },
{ "cwconint", "\xE2\x88\xB2", 0 },
{ "cwint", "\xE2\x88\xB1", 0 },
{ "cylcty", "\xE2\x8C\xAD", 0 },
{ "dArr", "\xE2\x87\x93", 0 },
{ "dHar", "\xE2\xA5\xA5", 0 },
{ "dagger", "\xE2\x80\xA0", 0 },
{ "daleth", "\xE2\x84\xB8", 0 },
{ "darr", "\xE2\x86\x93", 0 },
{ "dash", "\xE2\x80\x90", 0 },
{ "dashv", "\xE2\x8A\xA3", 0 },
{ "dbkarow", "\xE2\xA4\x8F", 0 },
{ "dblac", "\xCB\x9D", 0 },
{ "dcaron", "\xC4\x8F", 0 },
{ "dcy", "\xD0\xB4", 0 },
{ "dd", "\xE2\x85\x86", 0 },
{ "ddagger", "\xE2\x80\xA1", 0 },
{ "ddarr", "\xE2\x87\x8A", 0 },
{ "ddotseq", "\xE2\xA9\xB7", 0 },
{ "deg", "\xC2\xB0", 0 },
{ "delta", "\xCE\xB4", 0 },
{ "demptyv", "\xE2\xA6\xB1", 0 },
{ "dfisht", "\xE2\xA5\xBF", 0 },
{ "dfr", "\xF0\x9D\x94\xA1", 0 },
{ "dharl", "\xE2\x87\x83", 0 },
{ "dharr", "\xE2\x87\x82", 0 },
{ "diam", "\xE2\x8B\x84", 0 },
{ "diamond", "\xE2\x8B\x84", 0 },
{ "diamondsuit", "\xE2\x99\xA6", 0 },
{ "diams", "\xE2\x99\xA6", 0 },
{ "die", "\xC2\xA8", 0 },
{ "digamma", "\xCF\x9D", 0 },
{ "disin", "\xE2\x8B\xB2", 0 },
{ "div", "\xC3\xB7", 0 },
{ "divide", "\xC3\xB7", 0 },
{ "divideontimes", "\xE2\x8B\x87", 0 },
{ "divonx", "\xE2\x8B\x87", 0 },
{ "djcy", "\xD1\x92", 0 },
{ "dlcorn", "\xE2\x8C\x9E", 0 },
{ "dlcrop", "\xE2\x8C\x8D", 0 },
{ "dollar", "\x24", 0 },
{ "dopf", "\xF0\x9D\x95\x95", 0 },
{ "dot", "\xCB\x99", 0 },
{ "doteq", "\xE2\x89\x90", 0 },
{ "doteqdot", "\xE2\x89\x91", 0 },
{ "dotminus", "\xE2\x88\xB8", 0 },
{ "dotplus", "\xE2\x88\x94", 0 },
{ "dotsquare", "\xE2\x8A\xA1", 0 },
{ "doublebarwedge", "\xE2\x8C\x86", 0 },
{ "downarrow", "\xE2\x86\x93", 0 },
{ "downdownarrows", "\xE2\x87\x8A", 0 },
{ "downharpoonleft", "\xE2\x87\x83", 0 },
{ "downharpoonright", "\xE2\x87\x82", 0 },
{ "drbkarow", "\xE2\xA4\x90", 0 },
{ "drcorn", "\xE2\x8C\x9F", 0 },
{ "drcrop", "\xE2\x8C\x8C", 0 },
{ "dscr", "\xF0\x9D\x92\xB9", 0 },
{ "dscy", "\xD1\x95", 0 },
{ "dsol", "\xE2\xA7\xB6", 0 },
{ "dstrok", "\xC4\x91", 0 },
{ "dtdot", "\xE2\x8B\xB1", 0 },
{ "dtri", "\xE2\x96\xBF", 0 },
{ "dtrif", "\xE2\x96\xBE", 0 },
{ "duarr", "\xE2\x87\xB5", 0 },
{ "duhar", "\xE2\xA5\xAF", 0 },
{ "dwangle", "\xE2\xA6\xA6", 0 },
{ "dzcy", "\xD1\x9F", 0 },
{ "dzigrarr", "\xE2\x9F\xBF", 0 },
{ "eDDot", "\xE2\xA9\xB7", 0 },
{ "eDot", "\xE2\x89\x91", 0 },
{ "eacute", "\xC3\xA9", 0 },
{ "easter", "\xE2\xA9\xAE", 0 },
{ "ecaron", "\xC4\x9B", 0 },
{ "ecir", "\xE2\x89\x96", 0 },
{ "ecirc", "\xC3\xAA", 0 },
{ "ecolon", "\xE2\x89\x95", 0 },
{ "ecy", "\xD1\x8D", 0 },
{ "edot", "\xC4\x97", 0 },
{ "ee", "\xE2\x85\x87", 0 },
{ "efDot", "\xE2\x89\x92", 0 },
{ "efr", "\xF0\x9D\x94\xA2", 0 },
{ "eg", "\xE2\xAA\x9A", 0 },
{ "egrave", "\xC3\xA8", 0 },
{ "egs", "\xE2\xAA\x96", 0 },
{ "egsdot", "\xE2\xAA\x98", 0 },
{ "el", "\xE2\xAA\x99", 0 },
{ "elinters", "\xE2\x8F\xA7", 0 },
{ "ell", "\xE2\x84\x93", 0 },
{ "els", "\xE2\xAA\x95", 0 },
{ "elsdot", "\xE2\xAA\x97", 0 },
{ "emacr", "\xC4\x93", 0 },
{ "empty", "\xE2\x88\x85", 0 },
{ "emptyset", "\xE2\x88\x85", 0 },
{ "emptyv", "\xE2\x88\x85", 0 },
{ "emsp", "\xE2\x80\x83", 0 },
{ "emsp13", "\xE2\x80\x84", 0 },
{ "emsp14", "\xE2\x80\x85", 0 },
{ "eng", "\xC5\x8B", 0 },
{ "ensp", "\xE2\x80\x82", 0 },
{ "eogon", "\xC4\x99", 0 },
{ "eopf", "\xF0\x9D\x95\x96", 0 },
{ "epar", "\xE2\x8B\x95", 0 },
{ "eparsl", "\xE2\xA7\xA3", 0 },
{ "eplus", "\xE2\xA9\xB1", 0 },
{ "epsi", "\xCE\xB5", 0 },
{ "epsilon", "\xCE\xB5", 0 },
{ "epsiv", "\xCF\xB5", 0 },
{ "eqcirc", "\xE2\x89\x96", 0 },
{ "eqcolon", "\xE2\x89\x95", 0 },
{ "eqsim", "\xE2\x89\x82", 0 },
{ "eqslantgtr", "\xE2\xAA\x96", 0 },
{ "eqslantless", "\xE2\xAA\x95", 0 },
{ "equals", "\x3D", 0 },
{ "equest", "\xE2\x89\x9F", 0 },
{ "equiv", "\xE2\x89\xA1", 0 },
{ "equivDD", "\xE2\xA9\xB8", 0 },
{ "eqvparsl", "\xE2\xA7\xA5", 0 },
{ "erDot", "\xE2\x89\x93", 0 },
{ "erarr", "\xE2\xA5\xB1", 0 },
{ "escr", "\xE2\x84\xAF", 0 },
{ "esdot", "\xE2\x89\x90", 0 },
{ "esim", "\xE2\x89\x82", 0 },
{ "eta", "\xCE\xB7", 0 },
{ "eth", "\xC3\xB0", 0 },
{ "euml", "\xC3\xAB", 0 },
{ "euro", "\xE2\x82\xAC", 0 },
{ "excl", "\x21", 0 },
{ "exist", "\xE2\x88\x83", 0 },
{ "expectation", "\xE2\x84\xB0", 0 },
{ "exponentiale", "\xE2\x85\x87", 0 },
{ "fallingdotseq", "\xE2\x89\x92", 0 },
{ "fcy", "\xD1\x84", 0 },
{ "female", "\xE2\x99\x80", 0 },
{ "ffilig", "\xEF\xAC\x83", 0 },
{ "fflig", "\xEF\xAC\x80", 0 },
{ "ffllig", "\xEF\xAC\x84", 0 },
{ "ffr", "\xF0\x9D\x94\xA3", 0 },
{ "filig", "\xEF\xAC\x81", 0 },
{ "fjlig", "\x66\x6A", 0 },
{ "flat", "\xE2\x99\xAD", 0 },
{ "fllig", "\xEF\xAC\x82", 0 },
{ "fltns", "\xE2\x96\xB1", 0 },
{ "fnof", "\xC6\x92", 0 },
{ "fopf", "\xF0\x9D\x95\x97", 0 },
{ "forall", "\xE2\x88\x80", 0 },
{ "fork", "\xE2\x8B\x94", 0 },
{ "forkv", "\xE2\xAB\x99", 0 },
{ "fpartint", "\xE2\xA8\x8D", 0 },
{ "frac12", "\xC2\xBD", 0 },
{ "frac13", "\xE2\x85\x93", 0 },
{ "frac14", "\xC2\xBC", 0 },
{ "frac15", "\xE2\x85\x95", 0 },
{ "frac16", "\xE2\x85\x99", 0 },
{ "frac18", "\xE2\x85\x9B", 0 },
{ "frac23", "\xE2\x85\x94", 0 },
{ "frac25", "\xE2\x85\x96", 0 },
{ "frac34", "\xC2\xBE", 0 },
{ "frac35", "\xE2\x85\x97", 0 },
{ "frac38", "\xE2\x85\x9C", 0 },
{ "frac45", "\xE2\x85\x98", 0 },
{ "frac56", "\xE2\x85\x9A", 0 },
{ "frac58", "\xE2\x85\x9D", 0 },
{ "frac78", "\xE2\x85\x9E", 0 },
{ "frasl", "\xE2\x81\x84", 0 },
{ "frown", "\xE2\x8C\xA2", 0 },
{ "fscr", "\xF0\x9D\x92\xBB", 0 },
{ "gE", "\xE2\x89\xA7", 0 },
{ "gEl", "\xE2\xAA\x8C", 0 },
{ "gacute", "\xC7\xB5", 0 },
{ "gamma", "\xCE\xB3", 0 },
{ "gammad", "\xCF\x9D", 0 },
{ "gap", "\xE2\xAA\x86", 0 },
{ "gbreve", "\xC4\x9F", 0 },
{ "gcirc", "\xC4\x9D", 0 },
{ "gcy", "\xD0\xB3", 0 },
{ "gdot", "\xC4\xA1", 0 },
{ "ge", "\xE2\x89\xA5", 0 },
{ "gel", "\xE2\x8B\x9B", 0 },
{ "geq", "\xE2\x89\xA5", 0 },
{ "geqq", "\xE2\x89\xA7", 0 },
{ "geqslant", "\xE2\xA9\xBE", 0 },
{ "ges", "\xE2\xA9\xBE", 0 },
{ "gescc", "\xE2\xAA\xA9", 0 },
{ "gesdot", "\xE2\xAA\x80", 0 },
{ "gesdoto", "\xE2\xAA\x82", 0 },
{ "gesdotol", "\xE2\xAA\x84", 0 },
{ "gesl", "\xE2\x8B\x9B\xEF\xB8\x80", 0 },
{ "gesles", "\xE2\xAA\x94", 0 },
{ "gfr", "\xF0\x9D\x94\xA4", 0 },
{ "gg", "\xE2\x89\xAB", 0 },
{ "ggg", "\xE2\x8B\x99", 0 },
{ "gimel", "\xE2\x84\xB7", 0 },
{ "gjcy", "\xD1\x93", 0 },
{ "gl", "\xE2\x89\xB7", 0 },
{ "glE", "\xE2\xAA\x92", 0 },
{ "gla", "\xE2\xAA\xA5", 0 },
{ "glj", "\xE2\xAA\xA4", 0 },
{ "gnE", "\xE2\x89\xA9", 0 },
{ "gnap", "\xE2\xAA\x8A", 0 },
{ "gnapprox", "\xE2\xAA\x8A", 0 },
{ "gne", "\xE2\xAA\x88", 0 },
{ "gneq", "\xE2\xAA\x88", 0 },
{ "gneqq", "\xE2\x89\xA9", 0 },
{ "gnsim", "\xE2\x8B\xA7", 0 },
{ "gopf", "\xF0\x9D\x95\x98", 0 },
{ "grave", "\x60", 0 },
{ "gscr", "\xE2\x84\x8A", 0 },
{ "gsim", "\xE2\x89\xB3", 0 },
{ "gsime", "\xE2\xAA\x8E", 0 },
{ "gsiml", "\xE2\xAA\x90", 0 },
{ "gt", "\x3E", 0 },
{ "gtcc", "\xE2\xAA\xA7", 0 },
{ "gtcir", "\xE2\xA9\xBA", 0 },
{ "gtdot", "\xE2\x8B\x97", 0 },
{ "gtlPar", "\xE2\xA6\x95", 0 },
{ "gtquest", "\xE2\xA9\xBC", 0 },
{ "gtrapprox", "\xE2\xAA\x86", 0 },
{ "gtrarr", "\xE2\xA5\xB8", 0 },
{ "gtrdot", "\xE2\x8B\x97", 0 },
{ "gtreqless", "\xE2\x8B\x9B", 0 },
{ "gtreqqless", "\xE2\xAA\x8C", 0 },
{ "gtrless", "\xE2\x89\xB7", 0 },
{ "gtrsim", "\xE2\x89\xB3", 0 },
{ "gvertneqq", "\xE2\x89\xA9\xEF\xB8\x80", 0 },
{ "gvnE", "\xE2\x89\xA9\xEF\xB8\x80", 0 },
{ "hArr", "\xE2\x87\x94", 0 },
{ "hairsp", "\xE2\x80\x8A", 0 },
{ "half", "\xC2\xBD", 0 },
{ "hamilt", "\xE2\x84\x8B", 0 },
{ "hardcy", "\xD1\x8A", 0 },
{ "harr", "\xE2\x86\x94", 0 },
{ "harrcir", "\xE2\xA5\x88", 0 },
{ "harrw", "\xE2\x86\xAD", 0 },
{ "hbar", "\xE2\x84\x8F", 0 },
{ "hcirc", "\xC4\xA5", 0 },
{ "hearts", "\xE2\x99\xA5", 0 },
{ "heartsuit", "\xE2\x99\xA5", 0 },
{ "hellip", "\xE2\x80\xA6", 0 },
{ "hercon", "\xE2\x8A\xB9", 0 },
{ "hfr", "\xF0\x9D\x94\xA5", 0 },
{ "hksearow", "\xE2\xA4\xA5", 0 },
{ "hkswarow", "\xE2\xA4\xA6", 0 },
{ "hoarr", "\xE2\x87\xBF", 0 },
{ "homtht", "\xE2\x88\xBB", 0 },
{ "hookleftarrow", "\xE2\x86\xA9", 0 },
{ "hookrightarrow", "\xE2\x86\xAA", 0 },
{ "hopf", "\xF0\x9D\x95\x99", 0 },
{ "horbar", "\xE2\x80\x95", 0 },
{ "hscr", "\xF0\x9D\x92\xBD", 0 },
{ "hslash", "\xE2\x84\x8F", 0 },
{ "hstrok", "\xC4\xA7", 0 },
{ "hybull", "\xE2\x81\x83", 0 },
{ "hyphen", "\xE2\x80\x90", 0 },
{ "iacute", "\xC3\xAD", 0 },
{ "ic", "\xE2\x81\xA3", 0 },
{ "icirc", "\xC3\xAE", 0 },
{ "icy", "\xD0\xB8", 0 },
{ "iecy", "\xD0\xB5", 0 },
{ "iexcl", "\xC2\xA1", 0 },
{ "iff", "\xE2\x87\x94", 0 },
{ "ifr", "\xF0\x9D\x94\xA6", 0 },
{ "igrave", "\xC3\xAC", 0 },
{ "ii", "\xE2\x85\x88", 0 },
{ "iiiint", "\xE2\xA8\x8C", 0 },
{ "iiint", "\xE2\x88\xAD", 0 },
{ "iinfin", "\xE2\xA7\x9C", 0 },
{ "iiota", "\xE2\x84\xA9", 0 },
{ "ijlig", "\xC4\xB3", 0 },
{ "imacr", "\xC4\xAB", 0 },
{ "image", "\xE2\x84\x91", 0 },
{ "imagline", "\xE2\x84\x90", 0 },
{ "imagpart", "\xE2\x84\x91", 0 },
{ "imath", "\xC4\xB1", 0 },
{ "imof", "\xE2\x8A\xB7", 0 },
{ "imped", "\xC6\xB5", 0 },
{ "in", "\xE2\x88\x88", 0 },
{ "incare", "\xE2\x84\x85", 0 },
{ "infin", "\xE2\x88\x9E", 0 },
{ "infintie", "\xE2\xA7\x9D", 0 },
{ "inodot", "\xC4\xB1", 0 },
{ "int", "\xE2\x88\xAB", 0 },
{ "intcal", "\xE2\x8A\xBA", 0 },
{ "integers", "\xE2\x84\xA4", 0 },
{ "intercal", "\xE2\x8A\xBA", 0 },
{ "intlarhk", "\xE2\xA8\x97", 0 },
{ "intprod", "\xE2\xA8\xBC", 0 },
{ "iocy", "\xD1\x91", 0 },
{ "iogon", "\xC4\xAF", 0 },
{ "iopf", "\xF0\x9D\x95\x9A", 0 },
{ "iota", "\xCE\xB9", 0 },
{ "iprod", "\xE2\xA8\xBC", 0 },
{ "iquest", "\xC2\xBF", 0 },
{ "iscr", "\xF0\x9D\x92\xBE", 0 },
{ "isin", "\xE2\x88\x88", 0 },
{ "isinE", "\xE2\x8B\xB9", 0 },
{ "isindot", "\xE2\x8B\xB5", 0 },
{ "isins", "\xE2\x8B\xB4", 0 },
{ "isinsv", "\xE2\x8B\xB3", 0 },
{ "isinv", "\xE2\x88\x88", 0 },
{ "it", "\xE2\x81\xA2", 0 },
{ "itilde", "\xC4\xA9", 0 },
{ "iukcy", "\xD1\x96", 0 },
{ "iuml", "\xC3\xAF", 0 },
{ "jcirc", "\xC4\xB5", 0 },
{ "jcy", "\xD0\xB9", 0 },
{ "jfr", "\xF0\x9D\x94\xA7", 0 },
{ "jmath", "\xC8\xB7", 0 },
{ "jopf", "\xF0\x9D\x95\x9B", 0 },
{ "jscr", "\xF0\x9D\x92\xBF", 0 },
{ "jsercy", "\xD1\x98", 0 },
{ "jukcy", "\xD1\x94", 0 },
{ "kappa", "\xCE\xBA", 0 },
{ "kappav", "\xCF\xB0", 0 },
{ "kcedil", "\xC4\xB7", 0 },
{ "kcy", "\xD0\xBA", 0 },
{ "kfr", "\xF0\x9D\x94\xA8", 0 },
{ "kgreen", "\xC4\xB8", 0 },
{ "khcy", "\xD1\x85", 0 },
{ "kjcy", "\xD1\x9C", 0 },
{ "kopf", "\xF0\x9D\x95\x9C", 0 },
{ "kscr", "\xF0\x9D\x93\x80", 0 },
{ "lAarr", "\xE2\x87\x9A", 0 },
{ "lArr", "\xE2\x87\x90", 0 },
{ "lAtail", "\xE2\xA4\x9B", 0 },
{ "lBarr", "\xE2\xA4\x8E", 0 },
{ "lE", "\xE2\x89\xA6", 0 },
{ "lEg", "\xE2\xAA\x8B", 0 },
{ "lHar", "\xE2\xA5\xA2", 0 },
{ "lacute", "\xC4\xBA", 0 },
{ "laemptyv", "\xE2\xA6\xB4", 0 },
{ "lagran", "\xE2\x84\x92", 0 },
{ "lambda", "\xCE\xBB", 0 },
{ "lang", "\xE2\x9F\xA8", 0 },
{ "langd", "\xE2\xA6\x91", 0 },
{ "langle", "\xE2\x9F\xA8", 0 },
{ "lap", "\xE2\xAA\x85", 0 },
{ "laquo", "\xC2\xAB", 0 },
{ "larr", "\xE2\x86\x90", 0 },
{ "larrb", "\xE2\x87\xA4", 0 },
{ "larrbfs", "\xE2\xA4\x9F", 0 },
{ "larrfs", "\xE2\xA4\x9D", 0 },
{ "larrhk", "\xE2\x86\xA9", 0 },
{ "larrlp", "\xE2\x86\xAB", 0 },
{ "larrpl", "\xE2\xA4\xB9", 0 },
{ "larrsim", "\xE2\xA5\xB3", 0 },
{ "larrtl", "\xE2\x86\xA2", 0 },
{ "lat", "\xE2\xAA\xAB", 0 },
{ "latail", "\xE2\xA4\x99", 0 },
{ "late", "\xE2\xAA\xAD", 0 },
{ "lates", "\xE2\xAA\xAD\xEF\xB8\x80", 0 },
{ "lbarr", "\xE2\xA4\x8C", 0 },
{ "lbbrk", "\xE2\x9D\xB2", 0 },
{ "lbrace", "\x7B", 0 },
{ "lbrack", "\x5B", 0 },
{ "lbrke", "\xE2\xA6\x8B", 0 },
{ "lbrksld", "\xE2\xA6\x8F", 0 },
{ "lbrkslu", "\xE2\xA6\x8D", 0 },
{ "lcaron", "\xC4\xBE", 0 },
{ "lcedil", "\xC4\xBC", 0 },
{ "lceil", "\xE2\x8C\x88", 0 },
{ "lcub", "\x7B", 0 },
{ "lcy", "\xD0\xBB", 0 },
{ "ldca", "\xE2\xA4\xB6", 0 },
{ "ldquo", "\xE2\x80\x9C", 0 },
{ "ldquor", "\xE2\x80\x9E", 0 },
{ "ldrdhar", "\xE2\xA5\xA7", 0 },
{ "ldrushar", "\xE2\xA5\x8B", 0 },
{ "ldsh", "\xE2\x86\xB2", 0 },
{ "le", "\xE2\x89\xA4", 0 },
{ "leftarrow", "\xE2\x86\x90", 0 },
{ "leftarrowtail", "\xE2\x86\xA2", 0 },
{ "leftharpoondown", "\xE2\x86\xBD", 0 },
{ "leftharpoonup", "\xE2\x86\xBC", 0 },
{ "leftleftarrows", "\xE2\x87\x87", 0 },
{ "leftrightarrow", "\xE2\x86\x94", 0 },
{ "leftrightarrows", "\xE2\x87\x86", 0 },
{ "leftrightharpoons", "\xE2\x87\x8B", 0 },
{ "leftrightsquigarrow", "\xE2\x86\xAD", 0 },
{ "leftthreetimes", "\xE2\x8B\x8B", 0 },
{ "leg", "\xE2\x8B\x9A", 0 },
{ "leq", "\xE2\x89\xA4", 0 },
{ "leqq", "\xE2\x89\xA6", 0 },
{ "leqslant", "\xE2\xA9\xBD", 0 },
{ "les", "\xE2\xA9\xBD", 0 },
{ "lescc", "\xE2\xAA\xA8", 0 },
{ "lesdot", "\xE2\xA9\xBF", 0 },
{ "lesdoto", "\xE2\xAA\x81", 0 },
{ "lesdotor", "\xE2\xAA\x83", 0 },
{ "lesg", "\xE2\x8B\x9A\xEF\xB8\x80", 0 },
{ "lesges", "\xE2\xAA\x93", 0 },
{ "lessapprox", "\xE2\xAA\x85", 0 },
{ "lessdot", "\xE2\x8B\x96", 0 },
{ "lesseqgtr", "\xE2\x8B\x9A", 0 },
{ "lesseqqgtr", "\xE2\xAA\x8B", 0 },
{ "lessgtr", "\xE2\x89\xB6", 0 },
{ "lesssim", "\xE2\x89\xB2", 0 },
{ "lfisht", "\xE2\xA5\xBC", 0 },
{ "lfloor", "\xE2\x8C\x8A", 0 },
{ "lfr", "\xF0\x9D\x94\xA9", 0 },
{ "lg", "\xE2\x89\xB6", 0 },
{ "lgE", "\xE2\xAA\x91", 0 },
{ "lhard", "\xE2\x86\xBD", 0 },
{ "lharu", "\xE2\x86\xBC", 0 },
{ "lharul", "\xE2\xA5\xAA", 0 },
{ "lhblk", "\xE2\x96\x84", 0 },
{ "ljcy", "\xD1\x99", 0 },
{ "ll", "\xE2\x89\xAA", 0 },
{ "llarr", "\xE2\x87\x87", 0 },
{ "llcorner", "\xE2\x8C\x9E", 0 },
{ "llhard", "\xE2\xA5\xAB", 0 },
{ "lltri", "\xE2\x97\xBA", 0 },
{ "lmidot", "\xC5\x80", 0 },
{ "lmoust", "\xE2\x8E\xB0", 0 },
{ "lmoustache", "\xE2\x8E\xB0", 0 },
{ "lnE", "\xE2\x89\xA8", 0 },
{ "lnap", "\xE2\xAA\x89", 0 },
{ "lnapprox", "\xE2\xAA\x89", 0 },
{ "lne", "\xE2\xAA\x87", 0 },
{ "lneq", "\xE2\xAA\x87", 0 },
{ "lneqq", "\xE2\x89\xA8", 0 },
{ "lnsim", "\xE2\x8B\xA6", 0 },
{ "loang", "\xE2\x9F\xAC", 0 },
{ "loarr", "\xE2\x87\xBD", 0 },
{ "lobrk", "\xE2\x9F\xA6", 0 },
{ "longleftarrow", "\xE2\x9F\xB5", 0 },
{ "longleftrightarrow", "\xE2\x9F\xB7", 0 },
{ "longmapsto", "\xE2\x9F\xBC", 0 },
{ "longrightarrow", "\xE2\x9F\xB6", 0 },
{ "looparrowleft", "\xE2\x86\xAB", 0 },
{ "looparrowright", "\xE2\x86\xAC", 0 },
{ "lopar", "\xE2\xA6\x85", 0 },
{ "lopf", "\xF0\x9D\x95\x9D", 0 },
{ "loplus", "\xE2\xA8\xAD", 0 },
{ "lotimes", "\xE2\xA8\xB4", 0 },
{ "lowast", "\xE2\x88\x97", 0 },
{ "lowbar", "\x5F", 0 },
{ "loz", "\xE2\x97\x8A", 0 },
{ "lozenge", "\xE2\x97\x8A", 0 },
{ "lozf", "\xE2\xA7\xAB", 0 },
{ "lpar", "\x28", 0 },
{ "lparlt", "\xE2\xA6\x93", 0 },
{ "lrarr", "\xE2\x87\x86", 0 },
{ "lrcorner", "\xE2\x8C\x9F", 0 },
{ "lrhar", "\xE2\x87\x8B", 0 },
{ "lrhard", "\xE2\xA5\xAD", 0 },
{ "lrm", "\xE2\x80\x8E", 0 },
{ "lrtri", "\xE2\x8A\xBF", 0 },
{ "lsaquo", "\xE2\x80\xB9", 0 },
{ "lscr", "\xF0\x9D\x93\x81", 0 },
{ "lsh", "\xE2\x86\xB0", 0 },
{ "lsim", "\xE2\x89\xB2", 0 },
{ "lsime", "\xE2\xAA\x8D", 0 },
{ "lsimg", "\xE2\xAA\x8F", 0 },
{ "lsqb", "\x5B", 0 },
{ "lsquo", "\xE2\x80\x98", 0 },
{ "lsquor", "\xE2\x80\x9A", 0 },
{ "lstrok", "\xC5\x82", 0 },
{ "lt", "\x3C", 0 },
{ "ltcc", "\xE2\xAA\xA6", 0 },
{ "ltcir", "\xE2\xA9\xB9", 0 },
{ "ltdot", "\xE2\x8B\x96", 0 },
{ "lthree", "\xE2\x8B\x8B", 0 },
{ "ltimes", "\xE2\x8B\x89", 0 },
{ "ltlarr", "\xE2\xA5\xB6", 0 },
{ "ltquest", "\xE2\xA9\xBB", 0 },
{ "ltrPar", "\xE2\xA6\x96", 0 },
{ "ltri", "\xE2\x97\x83", 0 },
{ "ltrie", "\xE2\x8A\xB4", 0 },
{ "ltrif", "\xE2\x97\x82", 0 },
{ "lurdshar", "\xE2\xA5\x8A", 0 },
{ "luruhar", "\xE2\xA5\xA6", 0 },
{ "lvertneqq", "\xE2\x89\xA8\xEF\xB8\x80", 0 },
{ "lvnE", "\xE2\x89\xA8\xEF\xB8\x80", 0 },
{ "mDDot", "\xE2\x88\xBA", 0 },
{ "macr", "\xC2\xAF", 0 },
{ "male", "\xE2\x99\x82", 0 },
{ "malt", "\xE2\x9C\xA0", 0 },
{ "maltese", "\xE2\x9C\xA0", 0 },
{ "map", "\xE2\x86\xA6", 0 },
{ "mapsto", "\xE2\x86\xA6", 0 },
{ "mapstodown", "\xE2\x86\xA7", 0 },
{ "mapstoleft", "\xE2\x86\xA4", 0 },
{ "mapstoup", "\xE2\x86\xA5", 0 },
{ "marker", "\xE2\x96\xAE", 0 },
{ "mcomma", "\xE2\xA8\xA9", 0 },
{ "mcy", "\xD0\xBC", 0 },
{ "mdash", "\xE2\x80\x94", 0 },
{ "measuredangle", "\xE2\x88\xA1", 0 },
{ "mfr", "\xF0\x9D\x94\xAA", 0 },
{ "mho", "\xE2\x84\xA7", 0 },
{ "micro", "\xC2\xB5", 0 },
{ "mid", "\xE2\x88\xA3", 0 },
{ "midast", "\x2A", 0 },
{ "midcir", "\xE2\xAB\xB0", 0 },
{ "middot", "\xC2\xB7", 0 },
{ "minus", "\xE2\x88\x92", 0 },
{ "minusb", "\xE2\x8A\x9F", 0 },
{ "minusd", "\xE2\x88\xB8", 0 },
{ "minusdu", "\xE2\xA8\xAA", 0 },
{ "mlcp", "\xE2\xAB\x9B", 0 },
{ "mldr", "\xE2\x80\xA6", 0 },
{ "mnplus", "\xE2\x88\x93", 0 },
{ "models", "\xE2\x8A\xA7", 0 },
{ "mopf", "\xF0\x9D\x95\x9E", 0 },
{ "mp", "\xE2\x88\x93", 0 },
{ "mscr", "\xF0\x9D\x93\x82", 0 },
{ "mstpos", "\xE2\x88\xBE", 0 },
{ "mu", "\xCE\xBC", 0 },
{ "multimap", "\xE2\x8A\xB8", 0 },
{ "mumap", "\xE2\x8A\xB8", 0 },
{ "nGg", "\xE2\x8B\x99\xCC\xB8", 0 },
{ "nGtv", "\xE2\x89\xAB\xCC\xB8", 0 },
{ "nLeftarrow", "\xE2\x87\x8D", 0 },
{ "nLeftrightarrow", "\xE2\x87\x8E", 0 },
{ "nLl", "\xE2\x8B\x98\xCC\xB8", 0 },
{ "nLtv", "\xE2\x89\xAA\xCC\xB8", 0 },
{ "nRightarrow", "\xE2\x87\x8F", 0 },
{ "nVDash", "\xE2\x8A\xAF", 0 },
{ "nVdash", "\xE2\x8A\xAE", 0 },
{ "nabla", "\xE2\x88\x87", 0 },
{ "nacute", "\xC5\x84", 0 },
{ "nang", "\xE2\x88\xA0\xE2\x83\x92", 0 },
{ "nap", "\xE2\x89\x89", 0 },
{ "napE", "\xE2\xA9\xB0\xCC\xB8", 0 },
{ "napid", "\xE2\x89\x8B\xCC\xB8", 0 },
{ "napos", "\xC5\x89", 0 },
{ "napprox", "\xE2\x89\x89", 0 },
{ "natur", "\xE2\x99\xAE", 0 },
{ "natural", "\xE2\x99\xAE", 0 },
{ "naturals", "\xE2\x84\x95", 0 },
{ "nbsp", "\xC2\xA0", 0 },
{ "nbump", "\xE2\x89\x8E\xCC\xB8", 0 },
{ "nbumpe", "\xE2\x89\x8F\xCC\xB8", 0 },
{ "ncap", "\xE2\xA9\x83", 0 },
{ "ncaron", "\xC5\x88", 0 },
{ "ncedil", "\xC5\x86", 0 },
{ "ncong", "\xE2\x89\x87", 0 },
{ "ncongdot", "\xE2\xA9\xAD\xCC\xB8", 0 },
{ "ncup", "\xE2\xA9\x82", 0 },
{ "ncy", "\xD0\xBD", 0 },
{ "ndash", "\xE2\x80\x93", 0 },
{ "ne", "\xE2\x89\xA0", 0 },
{ "neArr", "\xE2\x87\x97", 0 },
{ "nearhk", "\xE2\xA4\xA4", 0 },
{ "nearr", "\xE2\x86\x97", 0 },
{ "nearrow", "\xE2\x86\x97", 0 },
{ "nedot", "\xE2\x89\x90\xCC\xB8", 0 },
{ "nequiv", "\xE2\x89\xA2", 0 },
{ "nesear", "\xE2\xA4\xA8", 0 },
{ "nesim", "\xE2\x89\x82\xCC\xB8", 0 },
{ "nexist", "\xE2\x88\x84", 0 },
{ "nexists", "\xE2\x88\x84", 0 },
{ "nfr", "\xF0\x9D\x94\xAB", 0 },
{ "ngE", "\xE2\x89\xA7\xCC\xB8", 0 },
{ "nge", "\xE2\x89\xB1", 0 },
{ "ngeq", "\xE2\x89\xB1", 0 },
{ "ngeqq", "\xE2\x89\xA7\xCC\xB8", 0 },
{ "ngeqslant", "\xE2\xA9\xBE\xCC\xB8", 0 },
{ "nges", "\xE2\xA9\xBE\xCC\xB8", 0 },
{ "ngsim", "\xE2\x89\xB5", 0 },
{ "ngt", "\xE2\x89\xAF", 0 },
{ "ngtr", "\xE2\x89\xAF", 0 },
{ "nhArr", "\xE2\x87\x8E", 0 },
{ "nharr", "\xE2\x86\xAE", 0 },
{ "nhpar", "\xE2\xAB\xB2", 0 },
{ "ni", "\xE2\x88\x8B", 0 },
{ "nis", "\xE2\x8B\xBC", 0 },
{ "nisd", "\xE2\x8B\xBA", 0 },
{ "niv", "\xE2\x88\x8B", 0 },
{ "njcy", "\xD1\x9A", 0 },
{ "nlArr", "\xE2\x87\x8D", 0 },
{ "nlE", "\xE2\x89\xA6\xCC\xB8", 0 },
{ "nlarr", "\xE2\x86\x9A", 0 },
{ "nldr", "\xE2\x80\xA5", 0 },
{ "nle", "\xE2\x89\xB0", 0 },
{ "nleftarrow", "\xE2\x86\x9A", 0 },
{ "nleftrightarrow", "\xE2\x86\xAE", 0 },
{ "nleq", "\xE2\x89\xB0", 0 },
{ "nleqq", "\xE2\x89\xA6\xCC\xB8", 0 },
{ "nleqslant", "\xE2\xA9\xBD\xCC\xB8", 0 },
{ "nles", "\xE2\xA9\xBD\xCC\xB8", 0 },
{ "nless", "\xE2\x89\xAE", 0 },
{ "nlsim", "\xE2\x89\xB4", 0 },
{ "nlt", "\xE2\x89\xAE", 0 },
{ "nltri", "\xE2\x8B\xAA", 0 },
{ "nltrie", "\xE2\x8B\xAC", 0 },
{ "nmid", "\xE2\x88\xA4", 0 },
{ "nopf", "\xF0\x9D\x95\x9F", 0 },
{ "not", "\xC2\xAC", 0 },
{ "notin", "\xE2\x88\x89", 0 },
{ "notinE", "\xE2\x8B\xB9\xCC\xB8", 0 },
{ "notindot", "\xE2\x8B\xB5\xCC\xB8", 0 },
{ "notinva", "\xE2\x88\x89", 0 },
{ "notinvb", "\xE2\x8B\xB7", 0 },
{ "notinvc", "\xE2\x8B\xB6", 0 },
{ "notni", "\xE2\x88\x8C", 0 },
{ "notniva", "\xE2\x88\x8C", 0 },
{ "notnivb", "\xE2\x8B\xBE", 0 },
{ "notnivc", "\xE2\x8B\xBD", 0 },
{ "npar", "\xE2\x88\xA6", 0 },
{ "nparallel", "\xE2\x88\xA6", 0 },
{ "nparsl", "\xE2\xAB\xBD\xE2\x83\xA5", 0 },
{ "npart", "\xE2\x88\x82\xCC\xB8", 0 },
{ "npolint", "\xE2\xA8\x94", 0 },
{ "npr", "\xE2\x8A\x80", 0 },
{ "nprcue", "\xE2\x8B\xA0", 0 },
{ "npre", "\xE2\xAA\xAF\xCC\xB8", 0 },
{ "nprec", "\xE2\x8A\x80", 0 },
{ "npreceq", "\xE2\xAA\xAF\xCC\xB8", 0 },
{ "nrArr", "\xE2\x87\x8F", 0 },
{ "nrarr", "\xE2\x86\x9B", 0 },
{ "nrarrc", "\xE2\xA4\xB3\xCC\xB8", 0 },
{ "nrarrw", "\xE2\x86\x9D\xCC\xB8", 0 },
{ "nrightarrow", "\xE2\x86\x9B", 0 },
{ "nrtri", "\xE2\x8B\xAB", 0 },
{ "nrtrie", "\xE2\x8B\xAD", 0 },
{ "nsc", "\xE2\x8A\x81", 0 },
{ "nsccue", "\xE2\x8B\xA1", 0 },
{ "nsce", "\xE2\xAA\xB0\xCC\xB8", 0 },
{ "nscr", "\xF0\x9D\x93\x83", 0 },
{ "nshortmid", "\xE2\x88\xA4", 0 },
{ "nshortparallel", "\xE2\x88\xA6", 0 },
{ "nsim", "\xE2\x89\x81", 0 },
{ "nsime", "\xE2\x89\x84", 0 },
{ "nsimeq", "\xE2\x89\x84", 0 },
{ "nsmid", "\xE2\x88\xA4", 0 },
{ "nspar", "\xE2\x88\xA6", 0 },
{ "nsqsube", "\xE2\x8B\xA2", 0 },
{ "nsqsupe", "\xE2\x8B\xA3", 0 },
{ "nsub", "\xE2\x8A\x84", 0 },
{ "nsubE", "\xE2\xAB\x85\xCC\xB8", 0 },
{ "nsube", "\xE2\x8A\x88", 0 },
{ "nsubset", "\xE2\x8A\x82\xE2\x83\x92", 0 },
{ "nsubseteq", "\xE2\x8A\x88", 0 },
{ "nsubseteqq", "\xE2\xAB\x85\xCC\xB8", 0 },
{ "nsucc", "\xE2\x8A\x81", 0 },
{ "nsucceq", "\xE2\xAA\xB0\xCC\xB8", 0 },
{ "nsup", "\xE2\x8A\x85", 0 },
{ "nsupE", "\xE2\xAB\x86\xCC\xB8", 0 },
{ "nsupe", "\xE2\x8A\x89", 0 },
{ "nsupset", "\xE2\x8A\x83\xE2\x83\x92", 0 },
{ "nsupseteq", "\xE2\x8A\x89", 0 },
{ "nsupseteqq", "\xE2\xAB\x86\xCC\xB8", 0 },
{ "ntgl", "\xE2\x89\xB9", 0 },
{ "ntilde", "\xC3\xB1", 0 },
{ "ntlg", "\xE2\x89\xB8", 0 },
{ "ntriangleleft", "\xE2\x8B\xAA", 0 },
{ "ntrianglelefteq", "\xE2\x8B\xAC", 0 },
{ "ntriangleright", "\xE2\x8B\xAB", 0 },
{ "ntrianglerighteq", "\xE2\x8B\xAD", 0 },
{ "nu", "\xCE\xBD", 0 },
{ "num", "\x23", 0 },
{ "numero", "\xE2\x84\x96", 0 },
{ "numsp", "\xE2\x80\x87", 0 },
{ "nvDash", "\xE2\x8A\xAD", 0 },
{ "nvHarr", "\xE2\xA4\x84", 0 },
{ "nvap", "\xE2\x89\x8D\xE2\x83\x92", 0 },
{ "nvdash", "\xE2\x8A\xAC", 0 },
{ "nvge", "\xE2\x89\xA5\xE2\x83\x92", 0 },
{ "nvgt", "\x3E\xE2\x83\x92", 0 },
{ "nvinfin", "\xE2\xA7\x9E", 0 },
{ "nvlArr", "\xE2\xA4\x82", 0 },
{ "nvle", "\xE2\x89\xA4\xE2\x83\x92", 0 },
{ "nvlt", "\x3C\xE2\x83\x92", 0 },
{ "nvltrie", "\xE2\x8A\xB4\xE2\x83\x92", 0 },
{ "nvrArr", "\xE2\xA4\x83", 0 },
{ "nvrtrie", "\xE2\x8A\xB5\xE2\x83\x92", 0 },
{ "nvsim", "\xE2\x88\xBC\xE2\x83\x92", 0 },
{ "nwArr", "\xE2\x87\x96", 0 },
{ "nwarhk", "\xE2\xA4\xA3", 0 },
{ "nwarr", "\xE2\x86\x96", 0 },
{ "nwarrow", "\xE2\x86\x96", 0 },
{ "nwnear", "\xE2\xA4\xA7", 0 },
{ "oS", "\xE2\x93\x88", 0 },
{ "oacute", "\xC3\xB3", 0 },
{ "oast", "\xE2\x8A\x9B", 0 },
{ "ocir", "\xE2\x8A\x9A", 0 },
{ "ocirc", "\xC3\xB4", 0 },
{ "ocy", "\xD0\xBE", 0 },
{ "odash", "\xE2\x8A\x9D", 0 },
{ "odblac", "\xC5\x91", 0 },
{ "odiv", "\xE2\xA8\xB8", 0 },
{ "odot", "\xE2\x8A\x99", 0 },
{ "odsold", "\xE2\xA6\xBC", 0 },
{ "oelig", "\xC5\x93", 0 },
{ "ofcir", "\xE2\xA6\xBF", 0 },
{ "ofr", "\xF0\x9D\x94\xAC", 0 },
{ "ogon", "\xCB\x9B", 0 },
{ "ograve", "\xC3\xB2", 0 },
{ "ogt", "\xE2\xA7\x81", 0 },
{ "ohbar", "\xE2\xA6\xB5", 0 },
{ "ohm", "\xCE\xA9", 0 },
{ "oint", "\xE2\x88\xAE", 0 },
{ "olarr", "\xE2\x86\xBA", 0 },
{ "olcir", "\xE2\xA6\xBE", 0 },
{ "olcross", "\xE2\xA6\xBB", 0 },
{ "oline", "\xE2\x80\xBE", 0 },
{ "olt", "\xE2\xA7\x80", 0 },
{ "omacr", "\xC5\x8D", 0 },
{ "omega", "\xCF\x89", 0 },
{ "omicron", "\xCE\xBF", 0 },
{ "omid", "\xE2\xA6\xB6", 0 },
{ "ominus", "\xE2\x8A\x96", 0 },
{ "oopf", "\xF0\x9D\x95\xA0", 0 },
{ "opar", "\xE2\xA6\xB7", 0 },
{ "operp", "\xE2\xA6\xB9", 0 },
{ "oplus", "\xE2\x8A\x95", 0 },
{ "or", "\xE2\x88\xA8", 0 },
{ "orarr", "\xE2\x86\xBB", 0 },
{ "ord", "\xE2\xA9\x9D", 0 },
{ "order", "\xE2\x84\xB4", 0 },
{ "orderof", "\xE2\x84\xB4", 0 },
{ "ordf", "\xC2\xAA", 0 },
{ "ordm", "\xC2\xBA", 0 },
{ "origof", "\xE2\x8A\xB6", 0 },
{ "oror", "\xE2\xA9\x96", 0 },
{ "orslope", "\xE2\xA9\x97", 0 },
{ "orv", "\xE2\xA9\x9B", 0 },
{ "oscr", "\xE2\x84\xB4", 0 },
{ "oslash", "\xC3\xB8", 0 },
{ "osol", "\xE2\x8A\x98", 0 },
{ "otilde", "\xC3\xB5", 0 },
{ "otimes", "\xE2\x8A\x97", 0 },
{ "otimesas", "\xE2\xA8\xB6", 0 },
{ "ouml", "\xC3\xB6", 0 },
{ "ovbar", "\xE2\x8C\xBD", 0 },
{ "par", "\xE2\x88\xA5", 0 },
{ "para", "\xC2\xB6", 0 },
{ "parallel", "\xE2\x88\xA5", 0 },
{ "parsim", "\xE2\xAB\xB3", 0 },
{ "parsl", "\xE2\xAB\xBD", 0 },
{ "part", "\xE2\x88\x82", 0 },
{ "pcy", "\xD0\xBF", 0 },
{ "percnt", "\x25", 0 },
{ "period", "\x2E", 0 },
{ "permil", "\xE2\x80\xB0", 0 },
{ "perp", "\xE2\x8A\xA5", 0 },
{ "pertenk", "\xE2\x80\xB1", 0 },
{ "pfr", "\xF0\x9D\x94\xAD", 0 },
{ "phi", "\xCF\x86", 0 },
{ "phiv", "\xCF\x95", 0 },
{ "phmmat", "\xE2\x84\xB3", 0 },
{ "phone", "\xE2\x98\x8E", 0 },
{ "pi", "\xCF\x80", 0 },
{ "pitchfork", "\xE2\x8B\x94", 0 },
{ "piv", "\xCF\x96", 0 },
{ "planck", "\xE2\x84\x8F", 0 },
{ "planckh", "\xE2\x84\x8E", 0 },
{ "plankv", "\xE2\x84\x8F", 0 },
{ "plus", "\x2B", 0 },
{ "plusacir", "\xE2\xA8\xA3", 0 },
{ "plusb", "\xE2\x8A\x9E", 0 },
{ "pluscir", "\xE2\xA8\xA2", 0 },
{ "plusdo", "\xE2\x88\x94", 0 },
{ "plusdu", "\xE2\xA8\xA5", 0 },
{ "pluse", "\xE2\xA9\xB2", 0 },
{ "plusmn", "\xC2\xB1", 0 },
{ "plussim", "\xE2\xA8\xA6", 0 },
{ "plustwo", "\xE2\xA8\xA7", 0 },
{ "pm", "\xC2\xB1", 0 },
{ "pointint", "\xE2\xA8\x95", 0 },
{ "popf", "\xF0\x9D\x95\xA1", 0 },
{ "pound", "\xC2\xA3", 0 },
{ "pr", "\xE2\x89\xBA", 0 },
{ "prE", "\xE2\xAA\xB3", 0 },
{ "prap", "\xE2\xAA\xB7", 0 },
{ "prcue", "\xE2\x89\xBC", 0 },
{ "pre", "\xE2\xAA\xAF", 0 },
{ "prec", "\xE2\x89\xBA", 0 },
{ "precapprox", "\xE2\xAA\xB7", 0 },
{ "preccurlyeq", "\xE2\x89\xBC", 0 },
{ "preceq", "\xE2\xAA\xAF", 0 },
{ "precnapprox", "\xE2\xAA\xB9", 0 },
{ "precneqq", "\xE2\xAA\xB5", 0 },
{ "precnsim", "\xE2\x8B\xA8", 0 },
{ "precsim", "\xE2\x89\xBE", 0 },
{ "prime", "\xE2\x80\xB2", 0 },
{ "primes", "\xE2\x84\x99", 0 },
{ "prnE", "\xE2\xAA\xB5", 0 },
{ "prnap", "\xE2\xAA\xB9", 0 },
{ "prnsim", "\xE2\x8B\xA8", 0 },
{ "prod", "\xE2\x88\x8F", 0 },
{ "profalar", "\xE2\x8C\xAE", 0 },
{ "profline", "\xE2\x8C\x92", 0 },
{ "profsurf", "\xE2\x8C\x93", 0 },
{ "prop", "\xE2\x88\x9D", 0 },
{ "propto", "\xE2\x88\x9D", 0 },
{ "prsim", "\xE2\x89\xBE", 0 },
{ "prurel", "\xE2\x8A\xB0", 0 },
{ "pscr", "\xF0\x9D\x93\x85", 0 },
{ "psi", "\xCF\x88", 0 },
{ "puncsp", "\xE2\x80\x88", 0 },
{ "qfr", "\xF0\x9D\x94\xAE", 0 },
{ "qint", "\xE2\xA8\x8C", 0 },
{ "qopf", "\xF0\x9D\x95\xA2", 0 },
{ "qprime", "\xE2\x81\x97", 0 },
{ "qscr", "\xF0\x9D\x93\x86", 0 },
{ "quaternions", "\xE2\x84\x8D", 0 },
{ "quatint", "\xE2\xA8\x96", 0 },
{ "quest", "\x3F", 0 },
{ "questeq", "\xE2\x89\x9F", 0 },
{ "quot", "\x22", 0 },
{ "rAarr", "\xE2\x87\x9B", 0 },
{ "rArr", "\xE2\x87\x92", 0 },
{ "rAtail", "\xE2\xA4\x9C", 0 },
{ "rBarr", "\xE2\xA4\x8F", 0 },
{ "rHar", "\xE2\xA5\xA4", 0 },
{ "race", "\xE2\x88\xBD\xCC\xB1", 0 },
{ "racute", "\xC5\x95", 0 },
{ "radic", "\xE2\x88\x9A", 0 },
{ "raemptyv", "\xE2\xA6\xB3", 0 },
{ "rang", "\xE2\x9F\xA9", 0 },
{ "rangd", "\xE2\xA6\x92", 0 },
{ "range", "\xE2\xA6\xA5", 0 },
{ "rangle", "\xE2\x9F\xA9", 0 },
{ "raquo", "\xC2\xBB", 0 },
{ "rarr", "\xE2\x86\x92", 0 },
{ "rarrap", "\xE2\xA5\xB5", 0 },
{ "rarrb", "\xE2\x87\xA5", 0 },
{ "rarrbfs", "\xE2\xA4\xA0", 0 },
{ "rarrc", "\xE2\xA4\xB3", 0 },
{ "rarrfs", "\xE2\xA4\x9E", 0 },
{ "rarrhk", "\xE2\x86\xAA", 0 },
{ "rarrlp", "\xE2\x86\xAC", 0 },
{ "rarrpl", "\xE2\xA5\x85", 0 },
{ "rarrsim", "\xE2\xA5\xB4", 0 },
{ "rarrtl", "\xE2\x86\xA3", 0 },
{ "rarrw", "\xE2\x86\x9D", 0 },
{ "ratail", "\xE2\xA4\x9A", 0 },
{ "ratio", "\xE2\x88\xB6", 0 },
{ "rationals", "\xE2\x84\x9A", 0 },
{ "rbarr", "\xE2\xA4\x8D", 0 },
{ "rbbrk", "\xE2\x9D\xB3", 0 },
{ "rbrace", "\x7D", 0 },
{ "rbrack", "\x5D", 0 },
{ "rbrke", "\xE2\xA6\x8C", 0 },
{ "rbrksld", "\xE2\xA6\x8E", 0 },
{ "rbrkslu", "\xE2\xA6\x90", 0 },
{ "rcaron", "\xC5\x99", 0 },
{ "rcedil", "\xC5\x97", 0 },
{ "rceil", "\xE2\x8C\x89", 0 },
{ "rcub", "\x7D", 0 },
{ "rcy", "\xD1\x80", 0 },
{ "rdca", "\xE2\xA4\xB7", 0 },
{ "rdldhar", "\xE2\xA5\xA9", 0 },
{ "rdquo", "\xE2\x80\x9D", 0 },
{ "rdquor", "\xE2\x80\x9D", 0 },
{ "rdsh", "\xE2\x86\xB3", 0 },
{ "real", "\xE2\x84\x9C", 0 },
{ "realine", "\xE2\x84\x9B", 0 },
{ "realpart", "\xE2\x84\x9C", 0 },
{ "reals", "\xE2\x84\x9D", 0 },
{ "rect", "\xE2\x96\xAD", 0 },
{ "reg", "\xC2\xAE", 0 },
{ "rfisht", "\xE2\xA5\xBD", 0 },
{ "rfloor", "\xE2\x8C\x8B", 0 },
{ "rfr", "\xF0\x9D\x94\xAF", 0 },
{ "rhard", "\xE2\x87\x81", 0 },
{ "rharu", "\xE2\x87\x80", 0 },
{ "rharul", "\xE2\xA5\xAC", 0 },
{ "rho", "\xCF\x81", 0 },
{ "rhov", "\xCF\xB1", 0 },
{ "rightarrow", "\xE2\x86\x92", 0 },
{ "rightarrowtail", "\xE2\x86\xA3", 0 },
{ "rightharpoondown", "\xE2\x87\x81", 0 },
{ "rightharpoonup", "\xE2\x87\x80", 0 },
{ "rightleftarrows", "\xE2\x87\x84", 0 },
{ "rightleftharpoons", "\xE2\x87\x8C", 0 },
{ "rightrightarrows", "\xE2\x87\x89", 0 },
{ "rightsquigarrow", "\xE2\x86\x9D", 0 },
{ "rightthreetimes", "\xE2\x8B\x8C", 0 },
{ "ring", "\xCB\x9A", 0 },
{ "risingdotseq", "\xE2\x89\x93", 0 },
{ "rlarr", "\xE2\x87\x84", 0 },
{ "rlhar", "\xE2\x87\x8C", 0 },
{ "rlm", "\xE2\x80\x8F", 0 },
{ "rmoust", "\xE2\x8E\xB1", 0 },
{ "rmoustache", "\xE2\x8E\xB1", 0 },
{ "rnmid", "\xE2\xAB\xAE", 0 },
{ "roang", "\xE2\x9F\xAD", 0 },
{ "roarr", "\xE2\x87\xBE", 0 },
{ "robrk", "\xE2\x9F\xA7", 0 },
{ "ropar", "\xE2\xA6\x86", 0 },
{ "ropf", "\xF0\x9D\x95\xA3", 0 },
{ "roplus", "\xE2\xA8\xAE", 0 },
{ "rotimes", "\xE2\xA8\xB5", 0 },
{ "rpar", "\x29", 0 },
{ "rpargt", "\xE2\xA6\x94", 0 },
{ "rppolint", "\xE2\xA8\x92", 0 },
{ "rrarr", "\xE2\x87\x89", 0 },
{ "rsaquo", "\xE2\x80\xBA", 0 },
{ "rscr", "\xF0\x9D\x93\x87", 0 },
{ "rsh", "\xE2\x86\xB1", 0 },
{ "rsqb", "\x5D", 0 },
{ "rsquo", "\xE2\x80\x99", 0 },
{ "rsquor", "\xE2\x80\x99", 0 },
{ "rthree", "\xE2\x8B\x8C", 0 },
{ "rtimes", "\xE2\x8B\x8A", 0 },
{ "rtri", "\xE2\x96\xB9", 0 },
{ "rtrie", "\xE2\x8A\xB5", 0 },
{ "rtrif", "\xE2\x96\xB8", 0 },
{ "rtriltri", "\xE2\xA7\x8E", 0 },
{ "ruluhar", "\xE2\xA5\xA8", 0 },
{ "rx", "\xE2\x84\x9E", 0 },
{ "sacute", "\xC5\x9B", 0 },
{ "sbquo", "\xE2\x80\x9A", 0 },
{ "sc", "\xE2\x89\xBB", 0 },
{ "scE", "\xE2\xAA\xB4", 0 },
{ "scap", "\xE2\xAA\xB8", 0 },
{ "scaron", "\xC5\xA1", 0 },
{ "sccue", "\xE2\x89\xBD", 0 },
{ "sce", "\xE2\xAA\xB0", 0 },
{ "scedil", "\xC5\x9F", 0 },
{ "scirc", "\xC5\x9D", 0 },
{ "scnE", "\xE2\xAA\xB6", 0 },
{ "scnap", "\xE2\xAA\xBA", 0 },
{ "scnsim", "\xE2\x8B\xA9", 0 },
{ "scpolint", "\xE2\xA8\x93", 0 },
{ "scsim", "\xE2\x89\xBF", 0 },
{ "scy", "\xD1\x81", 0 },
{ "sdot", "\xE2\x8B\x85", 0 },
{ "sdotb", "\xE2\x8A\xA1", 0 },
{ "sdote", "\xE2\xA9\xA6", 0 },
{ "seArr", "\xE2\x87\x98", 0 },
{ "searhk", "\xE2\xA4\xA5", 0 },
{ "searr", "\xE2\x86\x98", 0 },
{ "searrow", "\xE2\x86\x98", 0 },
{ "sect", "\xC2\xA7", 0 },
{ "semi", "\x3B", 0 },
{ "seswar", "\xE2\xA4\xA9", 0 },
{ "setminus", "\xE2\x88\x96", 0 },
{ "setmn", "\xE2\x88\x96", 0 },
{ "sext", "\xE2\x9C\xB6", 0 },
{ "sfr", "\xF0\x9D\x94\xB0", 0 },
{ "sfrown", "\xE2\x8C\xA2", 0 },
{ "sharp", "\xE2\x99\xAF", 0 },
{ "shchcy", "\xD1\x89", 0 },
{ "shcy", "\xD1\x88", 0 },
{ "shortmid", "\xE2\x88\xA3", 0 },
{ "shortparallel", "\xE2\x88\xA5", 0 },
{ "shy", "\xC2\xAD", 0 },
{ "sigma", "\xCF\x83", 0 },
{ "sigmaf", "\xCF\x82", 0 },
{ "sigmav", "\xCF\x82", 0 },
{ "sim", "\xE2\x88\xBC", 0 },
{ "simdot", "\xE2\xA9\xAA", 0 },
{ "sime", "\xE2\x89\x83", 0 },
{ "simeq", "\xE2\x89\x83", 0 },
{ "simg", "\xE2\xAA\x9E", 0 },
{ "simgE", "\xE2\xAA\xA0", 0 },
{ "siml", "\xE2\xAA\x9D", 0 },
{ "simlE", "\xE2\xAA\x9F", 0 },
{ "simne", "\xE2\x89\x86", 0 },
{ "simplus", "\xE2\xA8\xA4", 0 },
{ "simrarr", "\xE2\xA5\xB2", 0 },
{ "slarr", "\xE2\x86\x90", 0 },
{ "smallsetminus", "\xE2\x88\x96", 0 },
{ "smashp", "\xE2\xA8\xB3", 0 },
{ "smeparsl", "\xE2\xA7\xA4", 0 },
{ "smid", "\xE2\x88\xA3", 0 },
{ "smile", "\xE2\x8C\xA3", 0 },
{ "smt", "\xE2\xAA\xAA", 0 },
{ "smte", "\xE2\xAA\xAC", 0 },
{ "smtes", "\xE2\xAA\xAC\xEF\xB8\x80", 0 },
{ "softcy", "\xD1\x8C", 0 },
{ "sol", "\x2F", 0 },
{ "solb", "\xE2\xA7\x84", 0 },
{ "solbar", "\xE2\x8C\xBF", 0 },
{ "sopf", "\xF0\x9D\x95\xA4", 0 },
{ "spades", "\xE2\x99\xA0", 0 },
{ "spadesuit", "\xE2\x99\xA0", 0 },
{ "spar", "\xE2\x88\xA5", 0 },
{ "sqcap", "\xE2\x8A\x93", 0 },
{ "sqcaps", "\xE2\x8A\x93\xEF\xB8\x80", 0 },
{ "sqcup", "\xE2\x8A\x94", 0 },
{ "sqcups", "\xE2\x8A\x94\xEF\xB8\x80", 0 },
{ "sqsub", "\xE2\x8A\x8F", 0 },
{ "sqsube", "\xE2\x8A\x91", 0 },
{ "sqsubset", "\xE2\x8A\x8F", 0 },
{ "sqsubseteq", "\xE2\x8A\x91", 0 },
{ "sqsup", "\xE2\x8A\x90", 0 },
{ "sqsupe", "\xE2\x8A\x92", 0 },
{ "sqsupset", "\xE2\x8A\x90", 0 },
{ "sqsupseteq", "\xE2\x8A\x92", 0 },
{ "squ", "\xE2\x96\xA1", 0 },
{ "square", "\xE2\x96\xA1", 0 },
{ "squarf", "\xE2\x96\xAA", 0 },
{ "squf", "\xE2\x96\xAA", 0 },
{ "srarr", "\xE2\x86\x92", 0 },
{ "sscr", "\xF0\x9D\x93\x88", 0 },
{ "ssetmn", "\xE2\x88\x96", 0 },
{ "ssmile", "\xE2\x8C\xA3", 0 },
{ "sstarf", "\xE2\x8B\x86", 0 },
{ "star", "\xE2\x98\x86", 0 },
{ "starf", "\xE2\x98\x85", 0 },
{ "straightepsilon", "\xCF\xB5", 0 },
{ "straightphi", "\xCF\x95", 0 },
{ "strns", "\xC2\xAF", 0 },
{ "sub", "\xE2\x8A\x82", 0 },
{ "subE", "\xE2\xAB\x85", 0 },
{ "subdot", "\xE2\xAA\xBD", 0 },
{ "sube", "\xE2\x8A\x86", 0 },
{ "subedot", "\xE2\xAB\x83", 0 },
{ "submult", "\xE2\xAB\x81", 0 },
{ "subnE", "\xE2\xAB\x8B", 0 },
{ "subne", "\xE2\x8A\x8A", 0 },
{ "subplus", "\xE2\xAA\xBF", 0 },
{ "subrarr", "\xE2\xA5\xB9", 0 },
{ "subset", "\xE2\x8A\x82", 0 },
{ "subseteq", "\xE2\x8A\x86", 0 },
{ "subseteqq", "\xE2\xAB\x85", 0 },
{ "subsetneq", "\xE2\x8A\x8A", 0 },
{ "subsetneqq", "\xE2\xAB\x8B", 0 },
{ "subsim", "\xE2\xAB\x87", 0 },
{ "subsub", "\xE2\xAB\x95", 0 },
{ "subsup", "\xE2\xAB\x93", 0 },
{ "succ", "\xE2\x89\xBB", 0 },
{ "succapprox", "\xE2\xAA\xB8", 0 },
{ "succcurlyeq", "\xE2\x89\xBD", 0 },
{ "succeq", "\xE2\xAA\xB0", 0 },
{ "succnapprox", "\xE2\xAA\xBA", 0 },
{ "succneqq", "\xE2\xAA\xB6", 0 },
{ "succnsim", "\xE2\x8B\xA9", 0 },
{ "succsim", "\xE2\x89\xBF", 0 },
{ "sum", "\xE2\x88\x91", 0 },
{ "sung", "\xE2\x99\xAA", 0 },
{ "sup", "\xE2\x8A\x83", 0 },
{ "sup1", "\xC2\xB9", 0 },
{ "sup2", "\xC2\xB2", 0 },
{ "sup3", "\xC2\xB3", 0 },
{ "supE", "\xE2\xAB\x86", 0 },
{ "supdot", "\xE2\xAA\xBE", 0 },
{ "supdsub", "\xE2\xAB\x98", 0 },
{ "supe", "\xE2\x8A\x87", 0 },
{ "supedot", "\xE2\xAB\x84", 0 },
{ "suphsol", "\xE2\x9F\x89", 0 },
{ "suphsub", "\xE2\xAB\x97", 0 },
{ "suplarr", "\xE2\xA5\xBB", 0 },
{ "supmult", "\xE2\xAB\x82", 0 },
{ "supnE", "\xE2\xAB\x8C", 0 },
{ "supne", "\xE2\x8A\x8B", 0 },
{ "supplus", "\xE2\xAB\x80", 0 },
{ "supset", "\xE2\x8A\x83", 0 },
{ "supseteq", "\xE2\x8A\x87", 0 },
{ "supseteqq", "\xE2\xAB\x86", 0 },
{ "supsetneq", "\xE2\x8A\x8B", 0 },
{ "supsetneqq", "\xE2\xAB\x8C", 0 },
{ "supsim", "\xE2\xAB\x88", 0 },
{ "supsub", "\xE2\xAB\x94", 0 },
{ "supsup", "\xE2\xAB\x96", 0 },
{ "swArr", "\xE2\x87\x99", 0 },
{ "swarhk", "\xE2\xA4\xA6", 0 },
{ "swarr", "\xE2\x86\x99", 0 },
{ "swarrow", "\xE2\x86\x99", 0 },
{ "swnwar", "\xE2\xA4\xAA", 0 },
{ "szlig", "\xC3\x9F", 0 },
{ "target", "\xE2\x8C\x96", 0 },
{ "tau", "\xCF\x84", 0 },
{ "tbrk", "\xE2\x8E\xB4", 0 },
{ "tcaron", "\xC5\xA5", 0 },
{ "tcedil", "\xC5\xA3", 0 },
{ "tcy", "\xD1\x82", 0 },
{ "tdot", "\xE2\x83\x9B", 0 },
{ "telrec", "\xE2\x8C\x95", 0 },
{ "tfr", "\xF0\x9D\x94\xB1", 0 },
{ "there4", "\xE2\x88\xB4", 0 },
{ "therefore", "\xE2\x88\xB4", 0 },
{ "theta", "\xCE\xB8", 0 },
{ "thetasym", "\xCF\x91", 0 },
{ "thetav", "\xCF\x91", 0 },
{ "thickapprox", "\xE2\x89\x88", 0 },
{ "thicksim", "\xE2\x88\xBC", 0 },
{ "thinsp", "\xE2\x80\x89", 0 },
{ "thkap", "\xE2\x89\x88", 0 },
{ "thksim", "\xE2\x88\xBC", 0 },
{ "thorn", "\xC3\xBE", 0 },
{ "tilde", "\xCB\x9C", 0 },
{ "times", "\xC3\x97", 0 },
{ "timesb", "\xE2\x8A\xA0", 0 },
{ "timesbar", "\xE2\xA8\xB1", 0 },
{ "timesd", "\xE2\xA8\xB0", 0 },
{ "tint", "\xE2\x88\xAD", 0 },
{ "toea", "\xE2\xA4\xA8", 0 },
{ "top", "\xE2\x8A\xA4", 0 },
{ "topbot", "\xE2\x8C\xB6", 0 },
{ "topcir", "\xE2\xAB\xB1", 0 },
{ "topf", "\xF0\x9D\x95\xA5", 0 },
{ "topfork", "\xE2\xAB\x9A", 0 },
{ "tosa", "\xE2\xA4\xA9", 0 },
{ "tprime", "\xE2\x80\xB4", 0 },
{ "trade", "\xE2\x84\xA2", 0 },
{ "triangle", "\xE2\x96\xB5", 0 },
{ "triangledown", "\xE2\x96\xBF", 0 },
{ "triangleleft", "\xE2\x97\x83", 0 },
{ "trianglelefteq", "\xE2\x8A\xB4", 0 },
{ "triangleq", "\xE2\x89\x9C", 0 },
{ "triangleright", "\xE2\x96\xB9", 0 },
{ "trianglerighteq", "\xE2\x8A\xB5", 0 },
{ "tridot", "\xE2\x97\xAC", 0 },
{ "trie", "\xE2\x89\x9C", 0 },
{ "triminus", "\xE2\xA8\xBA", 0 },
{ "triplus", "\xE2\xA8\xB9", 0 },
{ "trisb", "\xE2\xA7\x8D", 0 },
{ "tritime", "\xE2\xA8\xBB", 0 },
{ "trpezium", "\xE2\x8F\xA2", 0 },
{ "tscr", "\xF0\x9D\x93\x89", 0 },
{ "tscy", "\xD1\x86", 0 },
{ "tshcy", "\xD1\x9B", 0 },
{ "tstrok", "\xC5\xA7", 0 },
{ "twixt", "\xE2\x89\xAC", 0 },
{ "twoheadleftarrow", "\xE2\x86\x9E", 0 },
{ "twoheadrightarrow", "\xE2\x86\xA0", 0 },
{ "uArr", "\xE2\x87\x91", 0 },
{ "uHar", "\xE2\xA5\xA3", 0 },
{ "uacute", "\xC3\xBA", 0 },
{ "uarr", "\xE2\x86\x91", 0 },
{ "ubrcy", "\xD1\x9E", 0 },
{ "ubreve", "\xC5\xAD", 0 },
{ "ucirc", "\xC3\xBB", 0 },
{ "ucy", "\xD1\x83", 0 },
{ "udarr", "\xE2\x87\x85", 0 },
{ "udblac", "\xC5\xB1", 0 },
{ "udhar", "\xE2\xA5\xAE", 0 },
{ "ufisht", "\xE2\xA5\xBE", 0 },
{ "ufr", "\xF0\x9D\x94\xB2", 0 },
{ "ugrave", "\xC3\xB9", 0 },
{ "uharl", "\xE2\x86\xBF", 0 },
{ "uharr", "\xE2\x86\xBE", 0 },
{ "uhblk", "\xE2\x96\x80", 0 },
{ "ulcorn", "\xE2\x8C\x9C", 0 },
{ "ulcorner", "\xE2\x8C\x9C", 0 },
{ "ulcrop", "\xE2\x8C\x8F", 0 },
{ "ultri", "\xE2\x97\xB8", 0 },
{ "umacr", "\xC5\xAB", 0 },
{ "uml", "\xC2\xA8", 0 },
{ "uogon", "\xC5\xB3", 0 },
{ "uopf", "\xF0\x9D\x95\xA6", 0 },
{ "uparrow", "\xE2\x86\x91", 0 },
{ "updownarrow", "\xE2\x86\x95", 0 },
{ "upharpoonleft", "\xE2\x86\xBF", 0 },
{ "upharpoonright", "\xE2\x86\xBE", 0 },
{ "uplus", "\xE2\x8A\x8E", 0 },
{ "upsi", "\xCF\x85", 0 },
{ "upsih", "\xCF\x92", 0 },
{ "upsilon", "\xCF\x85", 0 },
{ "upuparrows", "\xE2\x87\x88", 0 },
{ "urcorn", "\xE2\x8C\x9D", 0 },
{ "urcorner", "\xE2\x8C\x9D", 0 },
{ "urcrop", "\xE2\x8C\x8E", 0 },
{ "uring", "\xC5\xAF", 0 },
{ "urtri", "\xE2\x97\xB9", 0 },
{ "uscr", "\xF0\x9D\x93\x8A", 0 },
{ "utdot", "\xE2\x8B\xB0", 0 },
{ "utilde", "\xC5\xA9", 0 },
{ "utri", "\xE2\x96\xB5", 0 },
{ "utrif", "\xE2\x96\xB4", 0 },
{ "uuarr", "\xE2\x87\x88", 0 },
{ "uuml", "\xC3\xBC", 0 },
{ "uwangle", "\xE2\xA6\xA7", 0 },
{ "vArr", "\xE2\x87\x95", 0 },
{ "vBar", "\xE2\xAB\xA8", 0 },
{ "vBarv", "\xE2\xAB\xA9", 0 },
{ "vDash", "\xE2\x8A\xA8", 0 },
{ "vangrt", "\xE2\xA6\x9C", 0 },
{ "varepsilon", "\xCF\xB5", 0 },
{ "varkappa", "\xCF\xB0", 0 },
{ "varnothing", "\xE2\x88\x85", 0 },
{ "varphi", "\xCF\x95", 0 },
{ "varpi", "\xCF\x96", 0 },
{ "varpropto", "\xE2\x88\x9D", 0 },
{ "varr", "\xE2\x86\x95", 0 },
{ "varrho", "\xCF\xB1", 0 },
{ "varsigma", "\xCF\x82", 0 },
{ "varsubsetneq", "\xE2\x8A\x8A\xEF\xB8\x80", 0 },
{ "varsubsetneqq", "\xE2\xAB\x8B\xEF\xB8\x80", 0 },
{ "varsupsetneq", "\xE2\x8A\x8B\xEF\xB8\x80", 0 },
{ "varsupsetneqq", "\xE2\xAB\x8C\xEF\xB8\x80", 0 },
{ "vartheta", "\xCF\x91", 0 },
{ "vartriangleleft", "\xE2\x8A\xB2", 0 },
{ "vartriangleright", "\xE2\x8A\xB3", 0 },
{ "vcy", "\xD0\xB2", 0 },
{ "vdash", "\xE2\x8A\xA2", 0 },
{ "vee", "\xE2\x88\xA8", 0 },
{ "veebar", "\xE2\x8A\xBB", 0 },
{ "veeeq", "\xE2\x89\x9A", 0 },
{ "vellip", "\xE2\x8B\xAE", 0 },
{ "verbar", "\x7C", 0 },
{ "vert", "\x7C", 0 },
{ "vfr", "\xF0\x9D\x94\xB3", 0 },
{ "vltri", "\xE2\x8A\xB2", 0 },
{ "vnsub", "\xE2\x8A\x82\xE2\x83\x92", 0 },
{ "vnsup", "\xE2\x8A\x83\xE2\x83\x92", 0 },
{ "vopf", "\xF0\x9D\x95\xA7", 0 },
{ "vprop", "\xE2\x88\x9D", 0 },
{ "vrtri", "\xE2\x8A\xB3", 0 },
{ "vscr", "\xF0\x9D\x93\x8B", 0 },
{ "vsubnE", "\xE2\xAB\x8B\xEF\xB8\x80", 0 },
{ "vsubne", "\xE2\x8A\x8A\xEF\xB8\x80", 0 },
{ "vsupnE", "\xE2\xAB\x8C\xEF\xB8\x80", 0 },
{ "vsupne", "\xE2\x8A\x8B\xEF\xB8\x80", 0 },
{ "vzigzag", "\xE2\xA6\x9A", 0 },
{ "wcirc", "\xC5\xB5", 0 },
{ "wedbar", "\xE2\xA9\x9F", 0 },
{ "wedge", "\xE2\x88\xA7", 0 },
{ "wedgeq", "\xE2\x89\x99", 0 },
{ "weierp", "\xE2\x84\x98", 0 },
{ "wfr", "\xF0\x9D\x94\xB4", 0 },
{ "wopf", "\xF0\x9D\x95\xA8", 0 },
{ "wp", "\xE2\x84\x98", 0 },
{ "wr", "\xE2\x89\x80", 0 },
{ "wreath", "\xE2\x89\x80", 0 },
{ "wscr", "\xF0\x9D\x93\x8C", 0 },
{ "xcap", "\xE2\x8B\x82", 0 },
{ "xcirc", "\xE2\x97\xAF", 0 },
{ "xcup", "\xE2\x8B\x83", 0 },
{ "xdtri", "\xE2\x96\xBD", 0 },
{ "xfr", "\xF0\x9D\x94\xB5", 0 },
{ "xhArr", "\xE2\x9F\xBA", 0 },
{ "xharr", "\xE2\x9F\xB7", 0 },
{ "xi", "\xCE\xBE", 0 },
{ "xlArr", "\xE2\x9F\xB8", 0 },
{ "xlarr", "\xE2\x9F\xB5", 0 },
{ "xmap", "\xE2\x9F\xBC", 0 },
{ "xnis", "\xE2\x8B\xBB", 0 },
{ "xodot", "\xE2\xA8\x80", 0 },
{ "xopf", "\xF0\x9D\x95\xA9", 0 },
{ "xoplus", "\xE2\xA8\x81", 0 },
{ "xotime", "\xE2\xA8\x82", 0 },
{ "xrArr", "\xE2\x9F\xB9", 0 },
{ "xrarr", "\xE2\x9F\xB6", 0 },
{ "xscr", "\xF0\x9D\x93\x8D", 0 },
{ "xsqcup", "\xE2\xA8\x86", 0 },
{ "xuplus", "\xE2\xA8\x84", 0 },
{ "xutri", "\xE2\x96\xB3", 0 },
{ "xvee", "\xE2\x8B\x81", 0 },
{ "xwedge", "\xE2\x8B\x80", 0 },
{ "yacute", "\xC3\xBD", 0 },
{ "yacy", "\xD1\x8F", 0 },
{ "ycirc", "\xC5\xB7", 0 },
{ "ycy", "\xD1\x8B", 0 },
{ "yen", "\xC2\xA5", 0 },
{ "yfr", "\xF0\x9D\x94\xB6", 0 },
{ "yicy", "\xD1\x97", 0 },
{ "yopf", "\xF0\x9D\x95\xAA", 0 },
{ "yscr", "\xF0\x9D\x93\x8E", 0 },
{ "yucy", "\xD1\x8E", 0 },
{ "yuml", "\xC3\xBF", 0 },
{ "zacute", "\xC5\xBA", 0 },
{ "zcaron", "\xC5\xBE", 0 },
{ "zcy", "\xD0\xB7", 0 },
{ "zdot", "\xC5\xBC", 0 },
{ "zeetrf", "\xE2\x84\xA8", 0 },
{ "zeta", "\xCE\xB6", 0 },
{ "zfr", "\xF0\x9D\x94\xB7", 0 },
{ "zhcy", "\xD0\xB6", 0 },
{ "zigrarr", "\xE2\x87\x9D", 0 },
{ "zopf", "\xF0\x9D\x95\xAB", 0 },
{ "zscr", "\xF0\x9D\x93\x8F", 0 },
{ "zwj", "\xE2\x80\x8D", 0 },
{ "zwnj", "\xE2\x80\x8C", 0 },
}
test json-5.1 {-jsonmaxnesting 0} {
set result [catch {dom parse -json -jsonmaxnesting 0 {{"this":"that"}}} errMsg]
list $result $errMsg
} {1 {error "Maximum JSON object/array nesting depth exceeded" at position 0
"{ <--Error-- "this":"that"}"}}
test json-5.2 {-jsonmaxnesting 0} {
set result [catch {dom parse -json -jsonmaxnesting 0 {["this","that"]}} errMsg]
list $result $errMsg
} {1 {error "Maximum JSON object/array nesting depth exceeded" at position 0
"[ <--Error-- "this","that"]"}}
test json-5.3 {-jsonmaxnesting 0} {
set result [catch {dom parse -jsonroot o -json -jsonmaxnesting 0 {["this","that"]}} errMsg]
list $result $errMsg
} {1 {error "Maximum JSON object/array nesting depth exceeded" at position 0
"[ <--Error-- "this","that"]"}}
test json-5.4 {-jsonmaxnesting} {
set doc [dom parse -json -jsonmaxnesting 2 {{"this":{"foo":"that"}}}]
set result [$doc asXML -indent none]
$doc delete
set result
} {<this><foo>that</foo></this>}
test json-5.5 {-jsonmaxnesting} {
set result [catch {dom parse -json -jsonmaxnesting 1 \
{{"this":{"foo":"that"}}}} errMsg]
list $result $errMsg
} {1 {error "Maximum JSON object/array nesting depth exceeded" at position 8
"{"this":{ <--Error-- "foo":"that"}}"}}
test json-5.6 {-jsonmaxnesting} {
set doc [dom parse -json -jsonmaxnesting 2 {
{
"this": {
"foo":"that",
"bar":"grill"
},
"two": "value",
"three": {
"t1":"t1value",
"t2":"t2value"
},
"four": ["a","b","c"]
}}]
set result [$doc asXML]
$doc delete
set result
} {<this>
<foo>that</foo>
<bar>grill</bar>
</this>
<two>value</two>
<three>
<t1>t1value</t1>
<t2>t2value</t2>
</three>
<four>abc</four>
}
set jsons {
{{"a":"avalue","b":"bvalue","c":0.123}}
{{"a":["avalue"]}}
{{"a":"a value","b":"1value"}}
{{"a":{"aa":"aavalue","bb":"bbvalue"},"b":"bvalue","c":0.123}}
{{"a":[1,2,3,4,"abc"]}}
{{"a":true,"b":false,"c":null,"d":"true","e":""}}
{{"a":{"aa":[1,2,3,4,"abc"]},"b":"bvalue"}}
{{"a":true,"b":false,"c":null,"d":"true","e":""}}
{["a",["aa","bb"],"b"]}
{{"a":"a\nvalue","b":"value\tvalue"}}
{["\\\\a"]}
{["a\"b"]}
{{"b":"a \"b c\" d","b":"a \"b c\" d"}}
{{"this":"a\nbc"}}
{{"this":{"foo":"that"}}}
{{"this":{"foo":"that","bar":"grill"},"two":"value","three":{"t1":"t1value","t2":"t2value"},"four":["a","b","c"]}}
{"only a string"}
{null}
{1.23}
{true}
{false}
{{}}
{[]}
{[[]]}
{[["x"]]}
{""}
{[[[[["a"]]]]]}
{{"x":[{"id":"foo"}]}}
{"http://foo.bar"}
}
test json-6.1 {asJSON} {
set failedlist [list]
set ind 0
foreach json $jsons {
set doc [dom parse -json $json]
set out [$doc asJSON]
if {$json ne $out} {
lappend failedlist "$ind : '$json' : '$out'"
}
incr ind
}
set failedlist
} {}
test json-6.2 {asJSON - slash will not be escaped while serializing} {
set doc [dom parse -json {"http:\/\/foo.bar"}]
set result [$doc asJSON]
$doc delete
set result
} {"http://foo.bar"}
test json-6.3 {asJSON - docNode serialization} {
dom createDocumentNode docNode
set result [$docNode asJSON]
$docNode delete
set result
} {{}}
test json-6.4 {asJSON - doc serialization} {
dom createDocument root docNode
set result [$docNode asJSON]
$docNode delete
set result
} {{"root":""}}
test json-6.5 {asJSON - serialization of control characters} {
set doc [dom parse -json "\"a\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\u0008\\u0009\\u000A\\u000B\\u000C\\u000D\\u000E\\u000F\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001A\\u001B\\u001C\\u001D\\u001E\\u001F\\u0020b\""]
set result [$doc asJSON]
$doc delete
set result
} {"a\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f b"}
test json-6.6 {asJSON -indent} {
set doc [dom parse -json {{"a":{"aa":[1,2,3,4,"abc"]},"b":"bvalue"}}]
set result [$doc asJSON -indent 2]
$doc delete
set result
} {{
"a": {
"aa": [
1,
2,
3,
4,
"abc"
]
},
"b": "bvalue"
}}
test json-6.7 {asJSON -indent} {
set doc [dom parse -json {{"a":{"aa":[1,2,3,4,"abc"]},"b":"bvalue"}}]
set result [$doc asJSON -indent tabs]
$doc delete
set result
} {{
"a": {
"aa": [
1,
2,
3,
4,
"abc"
]
},
"b": "bvalue"
}}
if {[info commands _dom] eq ""} {
test json-7.1 {jsonType} {
set doc [dom parse {<j>foo</j>}]
set root [$doc documentElement]
set result [list]
lappend result [$root asJSON]
lappend result [$root jsonType]
$root jsonType ARRAY
lappend result [$root asJSON]
$doc delete
set result
} {{"foo"} NONE {["foo"]}}
test json-7.2 {jsonType} {
set doc [dom createDocumentNode]
set result [$doc jsonType]
lappend result [$doc asJSON]
lappend result [catch {$doc jsonType foo}]
$doc jsonType ARRAY
lappend result [$doc asJSON]
$doc jsonType OBJECT
lappend result [$doc asJSON]
$doc delete
set result
} {NONE {{}} 1 {[]} {{}}}
test json-8.1 {appendFromScript} {
set doc [dom createDocumentNode]
$doc appendFromScript {
nodeCmds::e1
}
set result [list]
lappend result [$doc asJSON]
set root [$doc documentElement]
lappend result [$root asJSON]
$doc removeChild [$doc firstChild]
$doc appendFromScript {
nodeCmds::jae1
}
lappend result [$doc asJSON]
set root [$doc documentElement]
lappend result [$root asJSON]
lappend result [$root jsonType]
$doc delete
set result
} {{{"e1":""}} {{}} {{"jae1":[]}} {[]} ARRAY}
test json-8.2 {appendFromScript} {
set doc [dom createDocumentNode]
$doc appendFromScript {
nodeCmds::t "some string"
}
set result [$doc asJSON]
$doc delete
set result
} {"some string"}
test json-8.3 {appendFromScript} {
set doc [dom createDocumentNode]
$doc appendFromScript {
nodeCmds::t ""
nodeCmds::true ""
nodeCmds::false ""
nodeCmds::null ""
}
set result [$doc asJSON]
$doc delete
set result
} {["",true,false,null]}
test json-8.4 {appendFromScript - text node with type NUMBER} {
set doc [dom createDocumentNode]
$doc appendFromScript {
nodeCmds::number ""
nodeCmds::number "0"
nodeCmds::number "123456789012345678901234567890.12345679e-0003"
nodeCmds::number "42 "
nodeCmds::number " 42"
nodeCmds::number "-"
}
set result [$doc asJSON]
$doc delete
set result
} {["",0,123456789012345678901234567890.12345679e-0003,"42 "," 42","-"]}
test json-8.5 {createNodeCmd - wrong jsonType} {
catch {dom createNodeCmd -jsonType OBJECT textNode textNodeWithJsonTypeObject}
} 1
test json-8.6 {text nodes with json type NULL, TRUE or FALSE} {
set doc [dom createDocumentNode]
$doc jsonType ARRAY
$doc appendFromScript {
nodeCmds::null
nodeCmds::true
nodeCmds::false
}
set result [$doc asJSON]
$doc delete
set result
} {[null,true,false]}
}
test json-9.1 {cloneNode -deep} {
dom parse -json {[["a",1,"b",{"foo":"bar","baz":"boo"},null],"",null]} doc
dom createDocument some other
$other documentElement root
$root appendChild [[$doc firstChild] cloneNode -deep]
set result [[$root firstChild] asJSON]
$doc delete
$other delete
set result
} {["a",1,"b",{"foo":"bar","baz":"boo"},null]}
test json-9.2 {cloneNode} {
dom parse -json {[["a",1,"b",{"foo":"bar","baz":"boo"},null],"",null]} doc
dom createDocument some other
$other documentElement root
$root appendChild [[$doc firstChild] cloneNode]
set result [[$root firstChild] asJSON]
$doc delete
$other delete
set result
} {[]}
test json-9.3 {cloneNode} {
dom parse -json {{"string":"bar","number":1,"boolean":true,"array":[1,2,3],"object":{"foo":"bar","baz":"boo"}}} doc
dom createDocument some other
$other documentElement root
foreach child [$doc childNodes] {
$root appendChild [$child cloneNode -deep]
}
set result [list]
foreach child [$root childNodes] {
lappend result [$child asJSON]
}
$doc delete
$other delete
set result
} {{"bar"} 1 true {[1,2,3]} {{"foo":"bar","baz":"boo"}}}
test json-10.1 {asDict} {
set json {{
"Titel": "Wirtschaftsinformatik",
"Keywords": "Documentation for Keywords",
"Keywords": ["Introduction","Basics"]
}}
set doc [dom parse -json $json]
set dict [::tdom::json::asDict $doc]
$doc delete
dict get $dict Keywords
} {Introduction Basics}
test json-10.2 {asDict object members named objectcontainer and arraycontainer} {
set json {{
"Titel": "Wirtschaftsinformatik",
"objectcontainer": {"a":"b","c":"d"},
"arraycontainer": ["Introduction","Basics"]
}}
set doc [dom parse -json $json]
set dict [::tdom::json::asDict $doc]
$doc delete
set result ""
lappend result [dict get $dict objectcontainer]
lappend result [dict get $dict arraycontainer]
} {{a b c d} {Introduction Basics}}
test json-10.2.1 {asDict} {
set json {{
"Titel": "Wirtschaftsinformatik",
"Keywords": "Documentation for Keywords",
"Keywords": ["Introduction","Basics"]
}}
set doc [dom parse -json $json]
set dict [::tdom::json::asDict $doc]
$doc delete
dict get $dict Keywords
} {Introduction Basics}
test json-10.2.2 {asDict object members named objectcontainer and arraycontainer} {
set json {{
"Titel": "Wirtschaftsinformatik",
"objectcontainer": {"a":"b","c":"d"},
"arraycontainer": ["Introduction","Basics"]
}}
set doc [dom parse -json $json]
set dict [::tdom::json::asDict $doc]
$doc delete
set result ""
lappend result [dict get $dict objectcontainer]
lappend result [dict get $dict arraycontainer]
} {{a b c d} {Introduction Basics}}
test json-10.3 {asTclValue} {
set json {{
"Titel": "Wirtschaftsinformatik",
"Keywords": "Documentation for Keywords",
"Keywords": ["Introduction","Basics"]
}}
set doc [dom parse -json $json]
set dict [$doc asTclValue]
$doc delete
dict get $dict Keywords
} {Introduction Basics}
test json-10.3.1 {asTclValue} {
set json {{
"Titel": "Wirtschaftsinformatik",
"Keywords": "Documentation for Keywords",
"Keywords": ["Introduction","Basics"]
}}
set doc [dom parse -json -jsonroot myjson $json]
set myjson [$doc documentElement]
set dict [$myjson asTclValue]
$doc delete
dict get $dict Keywords
} {Introduction Basics}
test json-10.4 {asTclValue object members named objectcontainer and arraycontainer} {
set json {{
"Titel": "Wirtschaftsinformatik",
"objectcontainer": {"a":"b","c":"d"},
"arraycontainer": ["Introduction","Basics"]
}}
set doc [dom parse -json $json]
set dict [$doc asTclValue]
$doc delete
set result ""
lappend result [dict get $dict objectcontainer]
lappend result [dict get $dict arraycontainer]
} {{a b c d} {Introduction Basics}}
test json-10.4.1 {asTclValue object members named objectcontainer and arraycontainer} {
set json {{
"Titel": "Wirtschaftsinformatik",
"objectcontainer": {"a":"b","c":"d"},
"arraycontainer": ["Introduction","Basics"]
}}
set doc [dom parse -json -jsonroot myjson $json]
set myjson [$doc documentElement]
set dict [$myjson asTclValue]
$doc delete
set result ""
lappend result [dict get $dict objectcontainer]
lappend result [dict get $dict arraycontainer]
} {{a b c d} {Introduction Basics}}
test json-10.5 {asTclValue} {
set result ""
foreach json {
\"foo\"
-1.23
null
false
true
} {
set doc [dom parse -json $json]
lappend result [$doc asTclValue resulttype] $resulttype
$doc delete
}
set result
} {foo string -1.23 string null string false string true string}
test json-10.5.1 {asTclValue} {
set result ""
foreach json {
\"foo\"
-1.23
null
false
true
} {
set doc [dom parse -json -jsonroot myjson $json]
set myjson [$doc documentElement]
lappend result [$myjson asTclValue resulttype] $resulttype
$doc delete
}
set result
} {foo string -1.23 string null string false string true string}
test json-10.6 {asTclValue} {
set result ""
foreach json {
["bar"]
[1,2]
[null,true,false]
} {
set doc [dom parse -json $json]
set thisresult [$doc asTclValue resulttype]
lappend result $thisresult $resulttype [llength $thisresult]
$doc delete
}
set result
} {bar list 1 {1 2} list 2 {null true false} list 3}
test json-10.6.1 {asTclValue} {
set result ""
foreach json {
["bar"]
[1,2]
[null,true,false]
} {
set doc [dom parse -json -jsonroot myjson $json]
set myjson [$doc documentElement]
set thisresult [$myjson asTclValue resulttype]
lappend result $thisresult $resulttype [llength $thisresult]
$doc delete
}
set result
} {bar list 1 {1 2} list 2 {null true false} list 3}
test json-10.7 {asTclValue} {
set json {{
"Titel": "Wirtschaftsinformatik",
"Keywords": ["Introduction","Basics"],
"Year": 2022
}}
set doc [dom parse -json $json]
set dict [$doc asTclValue resulttype]
$doc delete
list $dict $resulttype
} {{Titel Wirtschaftsinformatik Keywords {Introduction Basics} Year 2022} dict}
test json-10.7.1 {asTclValue} {
set json {{
"Titel": "Wirtschaftsinformatik",
"Keywords": ["Introduction","Basics"],
"Year": 2022
}}
set doc [dom parse -json -jsonroot myjson $json]
set myjson [$doc documentElement]
set dict [$myjson asTclValue resulttype]
$doc delete
list $dict $resulttype
} {{Titel Wirtschaftsinformatik Keywords {Introduction Basics} Year 2022} dict}
test json-11.1 {asTypedList} {
set json {{
"Titel": "Wirtschaftsinformatik",
"Keywords": ["Introduction","Basics"],
"Year": 2022
}}
set doc [dom parse -json $json]
set result [$doc asTypedList]
$doc delete
set result
} {OBJECT {Titel {STRING Wirtschaftsinformatik} Keywords {ARRAY {{STRING Introduction} {STRING Basics}}} Year {NUMBER 2022}}}
test json-11.2 {asTypedList} {
set json {{
"stringproperty": "abc",
"objectproperty": {"one": 1, "two": "two"},
"array": ["foo", -2.23, null, true, false, {"one": 1, "two": "two"}, [2,16,24]],
"number": 2022,
"null": null,
"true": true,
"false": false
}}
set doc [dom parse -json $json]
set result [$doc asTypedList]
$doc delete
set result
} {OBJECT {stringproperty {STRING abc} objectproperty {OBJECT {one {NUMBER 1} two {STRING two}}} array {ARRAY {{STRING foo} {NUMBER -2.23} NULL TRUE FALSE {OBJECT {one {NUMBER 1} two {STRING two}}} {ARRAY {{NUMBER 2} {NUMBER 16} {NUMBER 24}}}}} number {NUMBER 2022} null NULL true TRUE false FALSE}}
test json-11.3 {asTypedList} {
set json {{
"one two": "abc",
"one\u007btwo": "abc",
" one two ": "edf"
}}
set doc [dom parse -json $json]
set result [$doc asTypedList]
$doc delete
set result
} {OBJECT {{one two} {STRING abc} one\{two {STRING abc} { one two } {STRING edf}}}
test json-11.4 {asTypedList} {
set result ""
foreach json {
{"string foo"}
null
true
false
-1.23
} {
set doc [dom parse -json $json]
lappend result [$doc asTypedList]
$doc delete
}
set result
} {{STRING {string foo}} NULL TRUE FALSE {NUMBER -1.23}}
test json-11.5 {asTypedList} {
set result ""
set json {{
"Keywords": ["Introduction","Basics"],
"Data": {"one": "two", "three": true},
"Titel": "Wirtschaftsinformatik"
}}
set doc [dom parse -json $json]
set node [$doc firstChild]
while {$node ne ""} {
lappend result [$node asTypedList]
set node [$node nextSibling]
}
$doc delete
set result
} {{ARRAY {{STRING Introduction} {STRING Basics}}} {OBJECT {one {STRING two} three TRUE}} {STRING Wirtschaftsinformatik}}
if {[info commands _dom] eq ""} {
test json-12.1 {createFromTypedList} {
set doc [dom createFromTypedList {OBJECT {Titel {STRING Wirtschaftsinformatik} Keywords {ARRAY {{STRING Introduction} {STRING Basics}}} Year {NUMBER 2022}}}]
set result [$doc asJSON]
$doc delete
set result
} {{"Titel":"Wirtschaftsinformatik","Keywords":["Introduction","Basics"],"Year":2022}}
test json-12.2 {createFromTypedList} {
set typedList {OBJECT {Titel {STRING Wirtschaftsinformatik} Keywords {ARRAY {{STRING Introduction} {STRING Basics}}} Year {NUMBER 2022}}}
set doc [dom createFromTypedList $typedList]
set result [$doc asTypedList]
$doc delete
expr {$typedList eq $result}
} 1
proc createFromTypedList {list} {
dom createFromTypedList $list doc
if {$list eq [$doc asTypedList]} {
return ""
}
error "Invalid turnaround."
}
test json-12.3 {createFromTypedList} {
createFromTypedList {OBJECT {Titel {STRING Wirtschaftsinformatik} Keywords {ARRAY {{STRING Introduction} {STRING Basics}}} Year {NUMBER 2022}}}
} {}
test json-12.4 {createFromTypedList} {
set result ""
foreach json {
{STRING foo}
NULL
TRUE
FALSE
{NUMBER -1.23}
} {
set doc [dom createFromTypedList $json]
set this [$doc asTypedList]
if {$json ne $this} {
lappend result "json $json this $this"
} else {
lappend result 1
}
$doc delete
}
set result
} {1 1 1 1 1}
test json-12.5 {createFromTypedList} {
set result ""
foreach wrong {
NUL
""
{one two}
{STRING two three}
} {
catch {dom createFromTypedList $wrong} errMsg
lappend result $errMsg
}
set result
} {{Invalid typed list format: Unkown symbol "NUL".} {Invalid typed list format: Empty list.} {Invalid typed list format: Unkown symbol "one".} {Invalid typed list format: Too much list elements.}}
test json-12.6 {createFromTypedList} {
catch {dom createFromTypedList {OBJECT {one {STRING two} two {}}}} errMsg
set errMsg
} {Invalid typed list format: object property "two": Empty list.}
test json-12.7 {createFromTypedList} {
catch {dom createFromTypedList {OBJECT {one {STRING two} two {ARRAY {{NUMBER 1} {NULL foo}}}}}} errMsg
set errMsg
} {Invalid typed list format: object property "two": array element 2: No value expected for NULL.}
}
if {[info commands _dom] eq ""} {
rename dom _dom
proc dom {args} {
if {[lindex $args 0] != "parse" || [lsearch -exact $args "-json"] < 0} {
return [uplevel 1 [linsert $args 0 _dom]]
}
set haveData 0
set uplevelVar ""
for {set x 1} {$x < [llength $args]} {incr x} {
switch -- [lindex $args $x] {
"-jsonroot" -
"-jsonmaxnesting" -
"-channel" -
"-baseurl" -
"-externalentitycommand" {
incr x
}
"-json" -
"--" -
"-keepEmpties" -
"-keepCDATA" {
# do nothing, the options are flags
}
default {
if {$haveData} {
set uplevelVar [lindex $args $x]
} else {
set data [lindex $args $x]
set haveData 1
}
}
}
}
if {[catch {
_dom parse -json $data doc
} errMsg]} {
# Some tests check if invalid json data is detected. Since
# we need valid json data for what is tested here that
# tests should be marked with constraint nonetest. To
# raise error here does not help much because if the test
# data is expected to be invalid the command will be
# [catch]ed. Therefore the puts to catch attention.
puts "Unexpeced invalid json data '$data'"
}
set njson [$doc asJSON]
set typedList [$doc asTypedList]
_dom createFromTypedList $typedList docFromTyped
if {$njson ne [$docFromTyped asJSON]} {
error "Normalized json '$data' differs from normalized json created with createFromTypedList"
}
return [uplevel 1 [linsert $args 0 _dom]]
}
source [file join [file dir [info script]] domjson.test]
rename dom {}
rename _dom dom
}