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