From 03adf303df006eb6883fc60b3960d701b52e881a Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Mon, 13 May 2024 18:28:24 -0700 Subject: [PATCH 01/28] Introduce Token Map: An optimized static translation class. This patch introduces a new class: `WP_Token_Map`, which is designed for efficient lookup and translation of static mappings between string keys or tokens, and string replacements (for example, HTML character references). The token map incorporates certain limitations on the string length of the tokens, but takes advantage of multiple optimizations to efficiently --- src/wp-includes/class-wp-token-map.php | 702 ++++++ .../html5-named-character-references.php | 1303 ++++++++++ src/wp-settings.php | 2 + tests/phpunit/data/html5-entities.json | 2233 +++++++++++++++++ ...erate-html5-named-character-references.php | 78 + .../phpunit/tests/wp-token-map/wpTokenMap.php | 377 +++ 6 files changed, 4695 insertions(+) create mode 100644 src/wp-includes/class-wp-token-map.php create mode 100644 src/wp-includes/html-api/html5-named-character-references.php create mode 100644 tests/phpunit/data/html5-entities.json create mode 100644 tests/phpunit/tests/html-api/generate-html5-named-character-references.php create mode 100644 tests/phpunit/tests/wp-token-map/wpTokenMap.php diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php new file mode 100644 index 0000000000000..67bd6064f965b --- /dev/null +++ b/src/wp-includes/class-wp-token-map.php @@ -0,0 +1,702 @@ + '😯', + * ':(' => '🙁', + * ':)' => '🙂', + * ':?' => '😕', + * ) ); + * + * true === $smilies->contains( ':)' ); + * false === $smilies->contains( 'simile' ); + * + * '😕' === $smilies->read_token( 'Not sure :?.', 9, $bytes_skipped ); + * 2 === $bytes_skipped; + * + * echo $smilies->precomputed_php_source_table( ' ' ); + * // Output. + * WP_Token_Map::from_precomputed_table( + * 2, + * "", + * array(), + * "8O\x00:)\x00:(\x00:?\x00", + * array( "😯", "🙂", "🙁", "😕" ) + * ); + * + * ## Determining Key Length. + * + * The choice of the size of the key length should be based on the data being stored in + * the token map. It should divide the data as evenly as possible, but should not create + * so many groups that a large fraction of the groups only contain a single token. + * + * For the HTML5 named character references, a key length of 2 was found to provide a + * sufficient spread and should be a good default for relatively large sets of tokens. + * + * However, for some data sets this might be too long. For example, a list of smilies + * may be too small for a key length of 2. Perhaps 1 would be more appropriate. It's + * best to experiment and determine empirically which values are appropriate. + * + * ## Generate Pre-Computed Source Code. + * + * Since the `WP_Token_Map` is designed for relatively static lookups, it can be + * advantageous to precompute the values and instantiate a table that has already + * sorted and grouped the tokens and built the lookup strings. + * + * This can be done with `WP_Token_Map::precomputed_php_source_table()`. + * + * Note that if there is a leading character that all tokens need, such as `&` for + * HTML named character references, it can be beneficial to exclude this from the + * token map. Instead, find occurrences of the leading character and then use the + * token map to see if the following characters complete the token. + * + * Example: + * + * $map = WP_Token_Map::from_array( array( 'simple_smile:' => '🙂', 'sob:' => '😭', 'soba:' => '🍜' ) ); + * echo $map->precomputed_php_source_table(); + * // Output + * WP_Token_Map::from_precomputed_table( + * 2, + * "si\x00so\x00", + * array( + * // simple_smile:[🙂]. + * "\x0bmple_smile:\x04🙂", + * // soba:[🍜] sob:[😭]. + * "\x03ba:\x04🍜\x02b:\x04😭", + * ), + * "", + * array() + * ); + * + * This precomputed value can be stored directly in source code and will skip the + * startup cost of generating the lookup strings. See `$html5_named_character_entities`. + * + * ## Future Direction. + * + * It may be viable to dynamically increase the length limits such that there's no need to impose them. + * The limit appears because of the packing structure, which indicates how many bytes each segment of + * text in the lookup tables spans. If, however, care were taken to track the longest word length, then + * the packing structure could change its representation to allow for that. Each additional byte storing + * length, however, increases the memory overhead and lookup runtime. + * + * An alternative approach could be to borrow the UTF-8 variable-length encoding and store lengths of less + * than 127 as a single byte with the high bit unset, storing longer lengths as the combination of + * continuation bytes. + * + * Since it has not been shown during the development of this class that longer strings are required, this + * update is deferred until such a need is clear. + * + * @since 6.6.0 + */ +class WP_Token_Map { + /** + * Maximum length for each key and each transformed value in the table (in bytes). + * + * @since 6.6.0 + */ + const MAX_LENGTH = 256; + + /** + * How many bytes of each key are used to form a group key for lookup. + * This also determines whether a word is considered short or long. + * + * @since 6.6.0 + * + * @var int + */ + private $key_length = 2; + + /** + * Stores an optimized form of the word set, where words are grouped + * by a prefix of the `$key_length` and then collapsed into a string. + * + * In each group, the keys and lookups form a packed data structure. + * The keys in the string are stripped of their "group key," which is + * the prefix of length `$this->key_length` shared by all of the items + * in the group. Each word in the string is prefixed by a single byte + * whose raw unsigned integer value represents how many bytes follow. + * + * ┌────────────────┬───────────────┬─────────────────┬────────┐ + * │ Length of rest │ Rest of key │ Length of value │ Value │ + * │ of key (bytes) │ │ (bytes) │ │ + * ├────────────────┼───────────────┼─────────────────┼────────┤ + * │ 0x08 │ nterDot; │ 0x02 │ · │ + * └────────────────┴───────────────┴─────────────────┴────────┘ + * + * In this example, the key `CenterDot;` has a group key `Ce`, leaving + * eight bytes for the rest of the key, `nterDot;`, and two bytes for + * the transformed value `·` (or U+B7 or "\xC2\xB7"). + * + * Example: + * + * // Stores array( 'CenterDot;' => '·', 'Cedilla;' => '¸' ). + * $groups = "Ce\x00"; + * $large_words = array( "\x08nterDot;\x02·\x06dilla;\x02¸" ) + * + * The prefixes appear in the `$groups` string, each followed by a null + * byte. This makes for quick lookup of where in the group string the key + * is found, and then a simple division converts that offset into the index + * in the `$large_words` array where the group string is to be found. + * + * This lookup data structure is designed to optimize cache locality and + * minimize indirect memory reads when matching strings in the set. + * + * @since 6.6.0 + * + * @var array + */ + private $large_words = array(); + + /** + * Stores the group keys for sequential string lookup. + * + * The offset into this string where the group key appears corresponds with the index + * into the group array where the rest of the group string appears. This is an optimization + * to improve cache locality while searching and minimize indirect memory accesses. + * + * @since 6.6.0 + * + * @var string + */ + private $groups = ''; + + /** + * Stores an optimized row of small words, where every entry is + * `$this->key_size + 1` bytes long and zero-extended. + * + * This packing allows for direct lookup of a short word followed + * by the null byte, if extended to `$this->key_size + 1`. + * + * Example: + * + * // Stores array( 'GT', 'LT', 'gt', 'lt' ). + * "GT\x00LT\x00gt\x00lt\x00" + * + * @since 6.6.0 + * + * @var string + */ + private $small_words = ''; + + /** + * Replacements for the small words, in the same order they appear. + * + * With the position of a small word it's possible to index the translation + * directly, as its position in the `$small_words` string corresponds to + * the index of the replacement in the `$small_mapping` array. + * + * Example: + * + * array( '>', '<', '>', '<' ) + * + * @since 6.6.0 + * + * @var string[] + */ + private $small_mappings = array(); + + /** + * Create a token map using an associative array of key/value pairs as the input. + * + * Example: + * + * $smilies = WP_Token_Map::from_array( array( + * '8O' => '😯', + * ':(' => '🙁', + * ':)' => '🙂', + * ':?' => '😕', + * ) ); + * + * @since 6.6.0 + * + * @param array $mappings The keys transform into the values, both are strings. + * @param int $key_length Determines the group key length. Leave at the default value + * of 2 unless there's an empirical reason to change it. + * + * @return WP_Token_Map|null Token map, unless unable to create it. + */ + public static function from_array( $mappings, $key_length = 2 ) { + $map = new WP_Token_Map(); + $map->key_length = $key_length; + + // Start by grouping words. + + $groups = array(); + $shorts = array(); + foreach ( $mappings as $word => $mapping ) { + if ( + self::MAX_LENGTH <= strlen( $word ) || + self::MAX_LENGTH <= strlen( $mapping ) + ) { + _doing_it_wrong( + __METHOD__, + __( 'Token Map tokens and substitutions must all be shorter than 256 bytes.' ), + '6. .0' + ); + return null; + } + + $length = strlen( $word ); + + if ( $key_length >= $length ) { + $shorts[] = $word; + } else { + $group = substr( $word, 0, $key_length ); + + if ( ! isset( $groups[ $group ] ) ) { + $groups[ $group ] = array(); + } + + $groups[ $group ][] = array( substr( $word, $key_length ), $mapping ); + } + } + + /* + * Sort the words to ensure that no smaller substring of a match masks the full match. + * For example, `Cap` should not match before `CapitalDifferentialD`. + */ + usort( $shorts, 'WP_Token_Map::longest_first_then_alphabetical' ); + foreach ( $groups as $group_key => $group ) { + usort( + $groups[ $group_key ], + static function ( $a, $b ) { + return self::longest_first_then_alphabetical( $a[0], $b[0] ); + } + ); + } + + // Finally construct the optimized lookups. + + foreach ( $shorts as $word ) { + $map->small_words .= str_pad( $word, $key_length + 1, "\x00", STR_PAD_RIGHT ); + $map->small_mappings[] = $mappings[ $word ]; + } + + $group_keys = array_keys( $groups ); + sort( $group_keys ); + + foreach ( $group_keys as $group ) { + $map->groups .= "{$group}\x00"; + + $group_string = ''; + + foreach ( $groups[ $group ] as $group_word ) { + list( $word, $mapping ) = $group_word; + + $word_length = pack( 'C', strlen( $word ) ); + $mapping_length = pack( 'C', strlen( $mapping ) ); + $group_string .= "{$word_length}{$word}{$mapping_length}{$mapping}"; + } + + $map->large_words[] = $group_string; + } + + return $map; + } + + /** + * Creates a token map from a pre-computed table. + * This skips the initialization cost of generating the table. + * + * This function should only be used to load data created with + * WP_Token_Map::precomputed_php_source_tag(). + * + * @since 6.6.0 + * + * @param int $key_length Group key length. + * @param string $groups Group lookup index. + * @param array $large_words Large word groups and packed strings. + * @param string $small_words Small words packed string. + * @param array $small_mappings Small word mappings. + * + * @return WP_Token_Map Map with precomputed data loaded. + */ + public static function from_precomputed_table( $key_length, $groups, $large_words, $small_words, $small_mappings ) { + $map = new WP_Token_Map(); + + $map->key_length = $key_length; + $map->groups = $groups; + $map->large_words = $large_words; + $map->small_words = $small_words; + $map->small_mappings = $small_mappings; + + return $map; + } + + /** + * Indicates if a given word is a lookup key in the map. + * + * Example: + * + * true === $smilies->contains( ':)' ); + * false === $smilies->contains( 'simile' ); + * + * @since 6.6.0 + * + * @param string $word Determine if this word is a lookup key in the map. + * @return bool Whether there's an entry for the given word in the map. + */ + public function contains( $word ) { + if ( $this->key_length >= strlen( $word ) ) { + $word_at = strpos( $this->small_words, str_pad( $word, $this->key_length + 1, "\x00" ), STR_PAD_RIGHT ); + if ( false === $word_at ) { + return false; + } + + return true; + } + + $group_key = substr( $word, 0, $this->key_length ); + $group_at = strpos( $this->groups, $group_key ); + if ( false === $group_at ) { + return false; + } + $group = $this->large_words[ $group_at / ( $this->key_length + 1 ) ]; + $group_length = strlen( $group ); + $slug = substr( $word, $this->key_length ); + $length = strlen( $slug ); + $at = 0; + + while ( $at < $group_length ) { + $token_length = unpack( 'C', $group[ $at++ ] )[1]; + $token_at = $at; + $at += $token_length; + $mapping_length = unpack( 'C', $group[ $at++ ] )[1]; + $mapping_at = $at; + + if ( $token_length === $length && 0 === substr_compare( $group, $slug, $token_at, $token_length ) ) { + return true; + } + + $at = $mapping_at + $mapping_length; + } + + return false; + } + + /** + * If the text starting at a given offset is a lookup key in the map, + * return the corresponding transformation from the map, else `false`. + * + * This function returns the translated string, but accepts an optional + * parameter `$skip_bytes` which communicates how many bytes long the + * lookup key was, if it found one. This can be used to advance a cursor + * in calling code if a lookup key was found. + * + * Example: + * + * false === $smilies->read_token( 'Not sure :?.', 0, $bytes_skipped ); + * '😕' === $smilies->read_token( 'Not sure :?.', 9, $bytes_skipped ); + * 2 === $bytes_skipped; + * + * Example: + * + * while ( $at < strlen( $input ) ) { + * $next_at = strpos( $input, ':', $at ); + * if ( false === $next_at ) { + * break; + * } + * + * $smily = $smilies->read_token( $input, $next_at, $bytes_skipped ); + * if ( false === $next_at ) { + * ++$at; + * continue; + * } + * + * $prefix = substr( $input, $at, $next_at - $at ); + * $at += $bytes_skipped; + * $output .= "{$prefix}{$smily}"; + * } + * + * @since 6.6.0 + * + * @param string $text String in which to search for a lookup key. + * @param ?int $offset How many bytes into the string where the lookup key ought to start. + * @param ?int &$skip_bytes Holds byte-length of found lookup key if matched, otherwise not set. + * @return string|false Mapped value of lookup key if found, otherwise `false`. + */ + public function read_token( $text, $offset = 0, &$skip_bytes = null ) { + $text_length = strlen( $text ); + + // Search for a long word first, if the text is long enough, and if that fails, a short one. + if ( $text_length > $this->key_length ) { + $group_key = substr( $text, $offset, $this->key_length ); + + $group_at = strpos( $this->groups, $group_key ); + if ( false === $group_at ) { + // Perhaps a short word then. + return $this->read_small_token( $text, $offset, $skip_bytes ); + } + + $group = $this->large_words[ $group_at / ( $this->key_length + 1 ) ]; + $group_length = strlen( $group ); + $at = 0; + while ( $at < $group_length ) { + $token_length = unpack( 'C', $group[ $at++ ] )[1]; + $token = substr( $group, $at, $token_length ); + $at += $token_length; + $mapping_length = unpack( 'C', $group[ $at++ ] )[1]; + $mapping_at = $at; + + if ( 0 === substr_compare( $text, $token, $offset + $this->key_length, $token_length ) ) { + $skip_bytes = $this->key_length + $token_length; + return substr( $group, $mapping_at, $mapping_length ); + } + + $at = $mapping_at + $mapping_length; + } + } + + // Perhaps a short word then. + return $this->read_small_token( $text, $offset, $skip_bytes ); + } + + /** + * Finds a match for a short word at the index. + * + * @since 6.6.0. + * + * @param string $text String in which to search for a lookup key. + * @param ?int $offset How many bytes into the string where the lookup key ought to start. + * @param ?int &$skip_bytes Holds byte-length of found lookup key if matched, otherwise not set. + * @return string|false Mapped value of lookup key if found, otherwise `false`. + */ + private function read_small_token( $text, $offset, &$skip_bytes ) { + $small_length = strlen( $this->small_words ); + $starting_char = $text[ $offset ]; + + $at = 0; + while ( $at < $small_length ) { + if ( $starting_char !== $this->small_words[ $at ] ) { + $at += $this->key_length + 1; + continue; + } + + for ( $adjust = 1; $adjust < $this->key_length; $adjust++ ) { + if ( "\x00" === $this->small_words[ $at + $adjust ] ) { + $skip_bytes = $adjust; + return $this->small_mappings[ $at / ( $this->key_length + 1 ) ]; + } + + if ( $text[ $offset + $adjust ] !== $this->small_words[ $at + $adjust ] ) { + $at += $this->key_length + 1; + continue 2; + } + } + + $skip_bytes = $adjust; + return $this->small_mappings[ $at / ( $this->key_length + 1 ) ]; + } + + return false; + } + + /** + * Exports the token map into an associate array of key/value pairs. + * + * Example: + * + * $smilies->to_array() === array( + * '8O' => '😯', + * ':(' => '🙁', + * ':)' => '🙂', + * ':?' => '😕', + * ); + * + * @return array The lookup key/substitution values as an associate array. + */ + public function to_array() { + $tokens = array(); + + $at = 0; + $small_mapping = 0; + $small_length = strlen( $this->small_words ); + while ( $at < $small_length ) { + $key = rtrim( substr( $this->small_words, $at, $this->key_length + 1 ), "\x00" ); + $value = $this->small_mappings[ $small_mapping++ ]; + $tokens[ $key ] = $value; + + $at += $this->key_length + 1; + } + + foreach ( $this->large_words as $index => $group ) { + $prefix = substr( $this->groups, $index * ( $this->key_length + 1 ), 2 ); + $group_length = strlen( $group ); + $at = 0; + while ( $at < $group_length ) { + $length = unpack( 'C', $group[ $at++ ] )[1]; + $key = $prefix . substr( $group, $at, $length ); + + $at += $length; + $length = unpack( 'C', $group[ $at++ ] )[1]; + $value = substr( $group, $at, $length ); + + $tokens[ $key ] = $value; + $at += $length; + } + } + + return $tokens; + } + + /** + * Export the token map for quick loading in PHP source code. + * + * This function has a specific purpose, to make loading of static token maps fast. + * It's used to ensure that the HTML character reference lookups add a minimal cost + * to initializing the PHP process. + * + * Example: + * + * echo $smilies->precomputed_php_source_table( ' ' ); + * + * // Output. + * WP_Token_Map::from_precomputed_table( + * 2, + * array(), + * "8O\x00:)\x00:(\x00:?\x00", + * array( "😯", "🙂", "🙁", "😕" ) + * ); + * + * @since 6.6.0 + * + * @param ?string $indent Use this string for indentation, or rely on the default horizontal tab character. + * @return string Value which can be pasted into a PHP source file for quick loading of table. + */ + public function precomputed_php_source_table( $indent = "\t" ) { + $i1 = $indent; + $i2 = $indent . $indent; + + $output = self::class . "::from_precomputed_table(\n"; + $output .= "{$i1}{$this->key_length},\n"; + + $group_line = str_replace( "\x00", "\\x00", $this->groups ); + $output .= "{$i1}\"{$group_line}\",\n"; + + $output .= "{$i1}array(\n"; + + $prefixes = explode( "\x00", $this->groups ); + foreach ( $prefixes as $index => $prefix ) { + if ( '' === $prefix ) { + break; + } + $group = $this->large_words[ $index ]; + $group_length = strlen( $group ); + $comment_line = "{$i2}//"; + $data_line = "{$i2}\""; + $at = 0; + while ( $at < $group_length ) { + $token_length = unpack( 'C', $group[ $at++ ] )[1]; + $token = substr( $group, $at, $token_length ); + $at += $token_length; + $mapping_length = unpack( 'C', $group[ $at++ ] )[1]; + $mapping = substr( $group, $at, $mapping_length ); + $at += $mapping_length; + + $token_digits = str_pad( dechex( $token_length ), 2, '0', STR_PAD_LEFT ); + $mapping_digits = str_pad( dechex( $mapping_length ), 2, '0', STR_PAD_LEFT ); + + $mapping = preg_replace_callback( + "~[\\x00-\\x1f\\x22\\x5c]~", + static function ( $match_result ) { + switch ( $match_result[0] ) { + case '"': + return '\\"'; + + case '\\': + return '\\\\'; + + default: + $hex = dechex( ord( $match_result[0] ) ); + return "\\x{$hex}"; + } + }, + $mapping + ); + + $comment_line .= " {$prefix}{$token}[{$mapping}]"; + $data_line .= "\\x{$token_digits}{$token}\\x{$mapping_digits}{$mapping}"; + } + $comment_line .= ".\n"; + $data_line .= "\",\n"; + + $output .= $comment_line; + $output .= $data_line; + } + + $output .= "{$i1}),\n"; + + $small_words = array(); + $small_length = strlen( $this->small_words ); + $at = 0; + while ( $at < $small_length ) { + $small_words[] = substr( $this->small_words, $at, $this->key_length + 1 ); + $at += $this->key_length + 1; + } + + $small_text = str_replace( "\x00", '\x00', implode( '', $small_words ) ); + $output .= "{$i1}\"{$small_text}\",\n"; + + $output .= "{$i1}array(\n"; + foreach ( $this->small_mappings as $mapping ) { + $output .= "{$i2}\"{$mapping}\",\n"; + } + $output .= "{$i1})\n"; + $output .= ')'; + + return $output; + } + + /** + * Compares two strings, returning the longest, or whichever + * is first alphabetically if they are the same length. + * + * This is an important sort when building the token map because + * it should not form a match on a substring of a longer potential + * match. For example, it should not detect `Cap` when matching + * against the string `CapitalDifferentialD`. + * + * @since 6.6.0 + * + * @param string $a First string to compare. + * @param string $b Second string to compare. + * @return int -1 if `$a` is less than `$b`; 1 if `$a` is greater than `$b`, and 0 if they are equal. + */ + private static function longest_first_then_alphabetical( $a, $b ) { + if ( $a === $b ) { + return 0; + } + + $la = strlen( $a ); + $lb = strlen( $b ); + + // Longer strings are less-than for comparison's sake. + if ( $la !== $lb ) { + return $lb - $la; + } + + return strcmp( $a, $b ); + } +} diff --git a/src/wp-includes/html-api/html5-named-character-references.php b/src/wp-includes/html-api/html5-named-character-references.php new file mode 100644 index 0000000000000..41c467e268f8e --- /dev/null +++ b/src/wp-includes/html-api/html5-named-character-references.php @@ -0,0 +1,1303 @@ +]. + "\x01;\x01>", + // Gammad;[Ϝ] Gamma;[Γ]. + "\x05mmad;\x02Ϝ\x04mma;\x02Γ", + // Gbreve;[Ğ]. + "\x05reve;\x02Ğ", + // Gcedil;[Ģ] Gcirc;[Ĝ] Gcy;[Г]. + "\x05edil;\x02Ģ\x04irc;\x02Ĝ\x02y;\x02Г", + // Gdot;[Ġ]. + "\x03ot;\x02Ġ", + // Gfr;[𝔊]. + "\x02r;\x04𝔊", + // Gg;[⋙]. + "\x01;\x03⋙", + // Gopf;[𝔾]. + "\x03pf;\x04𝔾", + // GreaterSlantEqual;[⩾] GreaterEqualLess;[⋛] GreaterFullEqual;[≧] GreaterGreater;[⪢] GreaterEqual;[≥] GreaterTilde;[≳] GreaterLess;[≷]. + "\x10eaterSlantEqual;\x03⩾\x0featerEqualLess;\x03⋛\x0featerFullEqual;\x03≧\x0deaterGreater;\x03⪢\x0beaterEqual;\x03≥\x0beaterTilde;\x03≳\x0aeaterLess;\x03≷", + // Gscr;[𝒢]. + "\x03cr;\x04𝒢", + // Gt;[≫]. + "\x01;\x03≫", + // HARDcy;[Ъ]. + "\x05RDcy;\x02Ъ", + // Hacek;[ˇ] Hat;[^]. + "\x04cek;\x02ˇ\x02t;\x01^", + // Hcirc;[Ĥ]. + "\x04irc;\x02Ĥ", + // Hfr;[ℌ]. + "\x02r;\x03ℌ", + // HilbertSpace;[ℋ]. + "\x0blbertSpace;\x03ℋ", + // HorizontalLine;[─] Hopf;[ℍ]. + "\x0drizontalLine;\x03─\x03pf;\x03ℍ", + // Hstrok;[Ħ] Hscr;[ℋ]. + "\x05trok;\x02Ħ\x03cr;\x03ℋ", + // HumpDownHump;[≎] HumpEqual;[≏]. + "\x0bmpDownHump;\x03≎\x08mpEqual;\x03≏", + // IEcy;[Е]. + "\x03cy;\x02Е", + // IJlig;[IJ]. + "\x04lig;\x02IJ", + // IOcy;[Ё]. + "\x03cy;\x02Ё", + // Iacute;[Í] Iacute[Í]. + "\x05cute;\x02Í\x04cute\x02Í", + // Icirc;[Î] Icirc[Î] Icy;[И]. + "\x04irc;\x02Î\x03irc\x02Î\x02y;\x02И", + // Idot;[İ]. + "\x03ot;\x02İ", + // Ifr;[ℑ]. + "\x02r;\x03ℑ", + // Igrave;[Ì] Igrave[Ì]. + "\x05rave;\x02Ì\x04rave\x02Ì", + // ImaginaryI;[ⅈ] Implies;[⇒] Imacr;[Ī] Im;[ℑ]. + "\x09aginaryI;\x03ⅈ\x06plies;\x03⇒\x04acr;\x02Ī\x01;\x03ℑ", + // InvisibleComma;[⁣] InvisibleTimes;[⁢] Intersection;[⋂] Integral;[∫] Int;[∬]. + "\x0dvisibleComma;\x03⁣\x0dvisibleTimes;\x03⁢\x0btersection;\x03⋂\x07tegral;\x03∫\x02t;\x03∬", + // Iogon;[Į] Iopf;[𝕀] Iota;[Ι]. + "\x04gon;\x02Į\x03pf;\x04𝕀\x03ta;\x02Ι", + // Iscr;[ℐ]. + "\x03cr;\x03ℐ", + // Itilde;[Ĩ]. + "\x05ilde;\x02Ĩ", + // Iukcy;[І] Iuml;[Ï] Iuml[Ï]. + "\x04kcy;\x02І\x03ml;\x02Ï\x02ml\x02Ï", + // Jcirc;[Ĵ] Jcy;[Й]. + "\x04irc;\x02Ĵ\x02y;\x02Й", + // Jfr;[𝔍]. + "\x02r;\x04𝔍", + // Jopf;[𝕁]. + "\x03pf;\x04𝕁", + // Jsercy;[Ј] Jscr;[𝒥]. + "\x05ercy;\x02Ј\x03cr;\x04𝒥", + // Jukcy;[Є]. + "\x04kcy;\x02Є", + // KHcy;[Х]. + "\x03cy;\x02Х", + // KJcy;[Ќ]. + "\x03cy;\x02Ќ", + // Kappa;[Κ]. + "\x04ppa;\x02Κ", + // Kcedil;[Ķ] Kcy;[К]. + "\x05edil;\x02Ķ\x02y;\x02К", + // Kfr;[𝔎]. + "\x02r;\x04𝔎", + // Kopf;[𝕂]. + "\x03pf;\x04𝕂", + // Kscr;[𝒦]. + "\x03cr;\x04𝒦", + // LJcy;[Љ]. + "\x03cy;\x02Љ", + // LT;[<]. + "\x01;\x01<", + // Laplacetrf;[ℒ] Lacute;[Ĺ] Lambda;[Λ] Lang;[⟪] Larr;[↞]. + "\x09placetrf;\x03ℒ\x05cute;\x02Ĺ\x05mbda;\x02Λ\x03ng;\x03⟪\x03rr;\x03↞", + // Lcaron;[Ľ] Lcedil;[Ļ] Lcy;[Л]. + "\x05aron;\x02Ľ\x05edil;\x02Ļ\x02y;\x02Л", + // LeftArrowRightArrow;[⇆] LeftDoubleBracket;[⟦] LeftDownTeeVector;[⥡] LeftDownVectorBar;[⥙] LeftTriangleEqual;[⊴] LeftAngleBracket;[⟨] LeftUpDownVector;[⥑] LessEqualGreater;[⋚] LeftRightVector;[⥎] LeftTriangleBar;[⧏] LeftUpTeeVector;[⥠] LeftUpVectorBar;[⥘] LeftDownVector;[⇃] LeftRightArrow;[↔] Leftrightarrow;[⇔] LessSlantEqual;[⩽] LeftTeeVector;[⥚] LeftVectorBar;[⥒] LessFullEqual;[≦] LeftArrowBar;[⇤] LeftTeeArrow;[↤] LeftTriangle;[⊲] LeftUpVector;[↿] LeftCeiling;[⌈] LessGreater;[≶] LeftVector;[↼] LeftArrow;[←] LeftFloor;[⌊] Leftarrow;[⇐] LessTilde;[≲] LessLess;[⪡] LeftTee;[⊣]. + "\x12ftArrowRightArrow;\x03⇆\x10ftDoubleBracket;\x03⟦\x10ftDownTeeVector;\x03⥡\x10ftDownVectorBar;\x03⥙\x10ftTriangleEqual;\x03⊴\x0fftAngleBracket;\x03⟨\x0fftUpDownVector;\x03⥑\x0fssEqualGreater;\x03⋚\x0eftRightVector;\x03⥎\x0eftTriangleBar;\x03⧏\x0eftUpTeeVector;\x03⥠\x0eftUpVectorBar;\x03⥘\x0dftDownVector;\x03⇃\x0dftRightArrow;\x03↔\x0dftrightarrow;\x03⇔\x0dssSlantEqual;\x03⩽\x0cftTeeVector;\x03⥚\x0cftVectorBar;\x03⥒\x0cssFullEqual;\x03≦\x0bftArrowBar;\x03⇤\x0bftTeeArrow;\x03↤\x0bftTriangle;\x03⊲\x0bftUpVector;\x03↿\x0aftCeiling;\x03⌈\x0assGreater;\x03≶\x09ftVector;\x03↼\x08ftArrow;\x03←\x08ftFloor;\x03⌊\x08ftarrow;\x03⇐\x08ssTilde;\x03≲\x07ssLess;\x03⪡\x06ftTee;\x03⊣", + // Lfr;[𝔏]. + "\x02r;\x04𝔏", + // Lleftarrow;[⇚] Ll;[⋘]. + "\x09eftarrow;\x03⇚\x01;\x03⋘", + // Lmidot;[Ŀ]. + "\x05idot;\x02Ŀ", + // LongLeftRightArrow;[⟷] Longleftrightarrow;[⟺] LowerRightArrow;[↘] LongRightArrow;[⟶] Longrightarrow;[⟹] LowerLeftArrow;[↙] LongLeftArrow;[⟵] Longleftarrow;[⟸] Lopf;[𝕃]. + "\x11ngLeftRightArrow;\x03⟷\x11ngleftrightarrow;\x03⟺\x0ewerRightArrow;\x03↘\x0dngRightArrow;\x03⟶\x0dngrightarrow;\x03⟹\x0dwerLeftArrow;\x03↙\x0cngLeftArrow;\x03⟵\x0cngleftarrow;\x03⟸\x03pf;\x04𝕃", + // Lstrok;[Ł] Lscr;[ℒ] Lsh;[↰]. + "\x05trok;\x02Ł\x03cr;\x03ℒ\x02h;\x03↰", + // Lt;[≪]. + "\x01;\x03≪", + // Map;[⤅]. + "\x02p;\x03⤅", + // Mcy;[М]. + "\x02y;\x02М", + // MediumSpace;[ ] Mellintrf;[ℳ]. + "\x0adiumSpace;\x03 \x08llintrf;\x03ℳ", + // Mfr;[𝔐]. + "\x02r;\x04𝔐", + // MinusPlus;[∓]. + "\x08nusPlus;\x03∓", + // Mopf;[𝕄]. + "\x03pf;\x04𝕄", + // Mscr;[ℳ]. + "\x03cr;\x03ℳ", + // Mu;[Μ]. + "\x01;\x02Μ", + // NJcy;[Њ]. + "\x03cy;\x02Њ", + // Nacute;[Ń]. + "\x05cute;\x02Ń", + // Ncaron;[Ň] Ncedil;[Ņ] Ncy;[Н]. + "\x05aron;\x02Ň\x05edil;\x02Ņ\x02y;\x02Н", + // NegativeVeryThinSpace;[​] NestedGreaterGreater;[≫] NegativeMediumSpace;[​] NegativeThickSpace;[​] NegativeThinSpace;[​] NestedLessLess;[≪] NewLine;[\xa]. + "\x14gativeVeryThinSpace;\x03​\x13stedGreaterGreater;\x03≫\x12gativeMediumSpace;\x03​\x11gativeThickSpace;\x03​\x10gativeThinSpace;\x03​\x0dstedLessLess;\x03≪\x06wLine;\x01\xa", + // Nfr;[𝔑]. + "\x02r;\x04𝔑", + // NotNestedGreaterGreater;[⪢̸] NotSquareSupersetEqual;[⋣] NotPrecedesSlantEqual;[⋠] NotRightTriangleEqual;[⋭] NotSucceedsSlantEqual;[⋡] NotDoubleVerticalBar;[∦] NotGreaterSlantEqual;[⩾̸] NotLeftTriangleEqual;[⋬] NotSquareSubsetEqual;[⋢] NotGreaterFullEqual;[≧̸] NotRightTriangleBar;[⧐̸] NotLeftTriangleBar;[⧏̸] NotGreaterGreater;[≫̸] NotLessSlantEqual;[⩽̸] NotNestedLessLess;[⪡̸] NotReverseElement;[∌] NotSquareSuperset;[⊐̸] NotTildeFullEqual;[≇] NonBreakingSpace;[ ] NotPrecedesEqual;[⪯̸] NotRightTriangle;[⋫] NotSucceedsEqual;[⪰̸] NotSucceedsTilde;[≿̸] NotSupersetEqual;[⊉] NotGreaterEqual;[≱] NotGreaterTilde;[≵] NotHumpDownHump;[≎̸] NotLeftTriangle;[⋪] NotSquareSubset;[⊏̸] NotGreaterLess;[≹] NotLessGreater;[≸] NotSubsetEqual;[⊈] NotVerticalBar;[∤] NotEqualTilde;[≂̸] NotTildeEqual;[≄] NotTildeTilde;[≉] NotCongruent;[≢] NotHumpEqual;[≏̸] NotLessEqual;[≰] NotLessTilde;[≴] NotLessLess;[≪̸] NotPrecedes;[⊀] NotSucceeds;[⊁] NotSuperset;[⊃⃒] NotElement;[∉] NotGreater;[≯] NotCupCap;[≭] NotExists;[∄] NotSubset;[⊂⃒] NotEqual;[≠] NotTilde;[≁] NoBreak;[⁠] NotLess;[≮] Nopf;[ℕ] Not;[⫬]. + "\x16tNestedGreaterGreater;\x05⪢̸\x15tSquareSupersetEqual;\x03⋣\x14tPrecedesSlantEqual;\x03⋠\x14tRightTriangleEqual;\x03⋭\x14tSucceedsSlantEqual;\x03⋡\x13tDoubleVerticalBar;\x03∦\x13tGreaterSlantEqual;\x05⩾̸\x13tLeftTriangleEqual;\x03⋬\x13tSquareSubsetEqual;\x03⋢\x12tGreaterFullEqual;\x05≧̸\x12tRightTriangleBar;\x05⧐̸\x11tLeftTriangleBar;\x05⧏̸\x10tGreaterGreater;\x05≫̸\x10tLessSlantEqual;\x05⩽̸\x10tNestedLessLess;\x05⪡̸\x10tReverseElement;\x03∌\x10tSquareSuperset;\x05⊐̸\x10tTildeFullEqual;\x03≇\x0fnBreakingSpace;\x02 \x0ftPrecedesEqual;\x05⪯̸\x0ftRightTriangle;\x03⋫\x0ftSucceedsEqual;\x05⪰̸\x0ftSucceedsTilde;\x05≿̸\x0ftSupersetEqual;\x03⊉\x0etGreaterEqual;\x03≱\x0etGreaterTilde;\x03≵\x0etHumpDownHump;\x05≎̸\x0etLeftTriangle;\x03⋪\x0etSquareSubset;\x05⊏̸\x0dtGreaterLess;\x03≹\x0dtLessGreater;\x03≸\x0dtSubsetEqual;\x03⊈\x0dtVerticalBar;\x03∤\x0ctEqualTilde;\x05≂̸\x0ctTildeEqual;\x03≄\x0ctTildeTilde;\x03≉\x0btCongruent;\x03≢\x0btHumpEqual;\x05≏̸\x0btLessEqual;\x03≰\x0btLessTilde;\x03≴\x0atLessLess;\x05≪̸\x0atPrecedes;\x03⊀\x0atSucceeds;\x03⊁\x0atSuperset;\x06⊃⃒\x09tElement;\x03∉\x09tGreater;\x03≯\x08tCupCap;\x03≭\x08tExists;\x03∄\x08tSubset;\x06⊂⃒\x07tEqual;\x03≠\x07tTilde;\x03≁\x06Break;\x03⁠\x06tLess;\x03≮\x03pf;\x03ℕ\x02t;\x03⫬", + // Nscr;[𝒩]. + "\x03cr;\x04𝒩", + // Ntilde;[Ñ] Ntilde[Ñ]. + "\x05ilde;\x02Ñ\x04ilde\x02Ñ", + // Nu;[Ν]. + "\x01;\x02Ν", + // OElig;[Œ]. + "\x04lig;\x02Œ", + // Oacute;[Ó] Oacute[Ó]. + "\x05cute;\x02Ó\x04cute\x02Ó", + // Ocirc;[Ô] Ocirc[Ô] Ocy;[О]. + "\x04irc;\x02Ô\x03irc\x02Ô\x02y;\x02О", + // Odblac;[Ő]. + "\x05blac;\x02Ő", + // Ofr;[𝔒]. + "\x02r;\x04𝔒", + // Ograve;[Ò] Ograve[Ò]. + "\x05rave;\x02Ò\x04rave\x02Ò", + // Omicron;[Ο] Omacr;[Ō] Omega;[Ω]. + "\x06icron;\x02Ο\x04acr;\x02Ō\x04ega;\x02Ω", + // Oopf;[𝕆]. + "\x03pf;\x04𝕆", + // OpenCurlyDoubleQuote;[“] OpenCurlyQuote;[‘]. + "\x13enCurlyDoubleQuote;\x03“\x0denCurlyQuote;\x03‘", + // Or;[⩔]. + "\x01;\x03⩔", + // Oslash;[Ø] Oslash[Ø] Oscr;[𝒪]. + "\x05lash;\x02Ø\x04lash\x02Ø\x03cr;\x04𝒪", + // Otilde;[Õ] Otimes;[⨷] Otilde[Õ]. + "\x05ilde;\x02Õ\x05imes;\x03⨷\x04ilde\x02Õ", + // Ouml;[Ö] Ouml[Ö]. + "\x03ml;\x02Ö\x02ml\x02Ö", + // OverParenthesis;[⏜] OverBracket;[⎴] OverBrace;[⏞] OverBar;[‾]. + "\x0eerParenthesis;\x03⏜\x0aerBracket;\x03⎴\x08erBrace;\x03⏞\x06erBar;\x03‾", + // PartialD;[∂]. + "\x07rtialD;\x03∂", + // Pcy;[П]. + "\x02y;\x02П", + // Pfr;[𝔓]. + "\x02r;\x04𝔓", + // Phi;[Φ]. + "\x02i;\x02Φ", + // Pi;[Π]. + "\x01;\x02Π", + // PlusMinus;[±]. + "\x08usMinus;\x02±", + // Poincareplane;[ℌ] Popf;[ℙ]. + "\x0cincareplane;\x03ℌ\x03pf;\x03ℙ", + // PrecedesSlantEqual;[≼] PrecedesEqual;[⪯] PrecedesTilde;[≾] Proportional;[∝] Proportion;[∷] Precedes;[≺] Product;[∏] Prime;[″] Pr;[⪻]. + "\x11ecedesSlantEqual;\x03≼\x0cecedesEqual;\x03⪯\x0cecedesTilde;\x03≾\x0boportional;\x03∝\x09oportion;\x03∷\x07ecedes;\x03≺\x06oduct;\x03∏\x04ime;\x03″\x01;\x03⪻", + // Pscr;[𝒫] Psi;[Ψ]. + "\x03cr;\x04𝒫\x02i;\x02Ψ", + // QUOT;[\"] QUOT[\"]. + "\x03OT;\x01\"\x02OT\x01\"", + // Qfr;[𝔔]. + "\x02r;\x04𝔔", + // Qopf;[ℚ]. + "\x03pf;\x03ℚ", + // Qscr;[𝒬]. + "\x03cr;\x04𝒬", + // RBarr;[⤐]. + "\x04arr;\x03⤐", + // REG;[®] REG[®]. + "\x02G;\x02®\x01G\x02®", + // Racute;[Ŕ] Rarrtl;[⤖] Rang;[⟫] Rarr;[↠]. + "\x05cute;\x02Ŕ\x05rrtl;\x03⤖\x03ng;\x03⟫\x03rr;\x03↠", + // Rcaron;[Ř] Rcedil;[Ŗ] Rcy;[Р]. + "\x05aron;\x02Ř\x05edil;\x02Ŗ\x02y;\x02Р", + // ReverseUpEquilibrium;[⥯] ReverseEquilibrium;[⇋] ReverseElement;[∋] Re;[ℜ]. + "\x13verseUpEquilibrium;\x03⥯\x11verseEquilibrium;\x03⇋\x0dverseElement;\x03∋\x01;\x03ℜ", + // Rfr;[ℜ]. + "\x02r;\x03ℜ", + // Rho;[Ρ]. + "\x02o;\x02Ρ", + // RightArrowLeftArrow;[⇄] RightDoubleBracket;[⟧] RightDownTeeVector;[⥝] RightDownVectorBar;[⥕] RightTriangleEqual;[⊵] RightAngleBracket;[⟩] RightUpDownVector;[⥏] RightTriangleBar;[⧐] RightUpTeeVector;[⥜] RightUpVectorBar;[⥔] RightDownVector;[⇂] RightTeeVector;[⥛] RightVectorBar;[⥓] RightArrowBar;[⇥] RightTeeArrow;[↦] RightTriangle;[⊳] RightUpVector;[↾] RightCeiling;[⌉] RightVector;[⇀] RightArrow;[→] RightFloor;[⌋] Rightarrow;[⇒] RightTee;[⊢]. + "\x12ghtArrowLeftArrow;\x03⇄\x11ghtDoubleBracket;\x03⟧\x11ghtDownTeeVector;\x03⥝\x11ghtDownVectorBar;\x03⥕\x11ghtTriangleEqual;\x03⊵\x10ghtAngleBracket;\x03⟩\x10ghtUpDownVector;\x03⥏\x0fghtTriangleBar;\x03⧐\x0fghtUpTeeVector;\x03⥜\x0fghtUpVectorBar;\x03⥔\x0eghtDownVector;\x03⇂\x0dghtTeeVector;\x03⥛\x0dghtVectorBar;\x03⥓\x0cghtArrowBar;\x03⇥\x0cghtTeeArrow;\x03↦\x0cghtTriangle;\x03⊳\x0cghtUpVector;\x03↾\x0bghtCeiling;\x03⌉\x0aghtVector;\x03⇀\x09ghtArrow;\x03→\x09ghtFloor;\x03⌋\x09ghtarrow;\x03⇒\x07ghtTee;\x03⊢", + // RoundImplies;[⥰] Ropf;[ℝ]. + "\x0bundImplies;\x03⥰\x03pf;\x03ℝ", + // Rrightarrow;[⇛]. + "\x0aightarrow;\x03⇛", + // Rscr;[ℛ] Rsh;[↱]. + "\x03cr;\x03ℛ\x02h;\x03↱", + // RuleDelayed;[⧴]. + "\x0aleDelayed;\x03⧴", + // SHCHcy;[Щ] SHcy;[Ш]. + "\x05CHcy;\x02Щ\x03cy;\x02Ш", + // SOFTcy;[Ь]. + "\x05FTcy;\x02Ь", + // Sacute;[Ś]. + "\x05cute;\x02Ś", + // Scaron;[Š] Scedil;[Ş] Scirc;[Ŝ] Scy;[С] Sc;[⪼]. + "\x05aron;\x02Š\x05edil;\x02Ş\x04irc;\x02Ŝ\x02y;\x02С\x01;\x03⪼", + // Sfr;[𝔖]. + "\x02r;\x04𝔖", + // ShortRightArrow;[→] ShortDownArrow;[↓] ShortLeftArrow;[←] ShortUpArrow;[↑]. + "\x0eortRightArrow;\x03→\x0dortDownArrow;\x03↓\x0dortLeftArrow;\x03←\x0bortUpArrow;\x03↑", + // Sigma;[Σ]. + "\x04gma;\x02Σ", + // SmallCircle;[∘]. + "\x0aallCircle;\x03∘", + // Sopf;[𝕊]. + "\x03pf;\x04𝕊", + // SquareSupersetEqual;[⊒] SquareIntersection;[⊓] SquareSubsetEqual;[⊑] SquareSuperset;[⊐] SquareSubset;[⊏] SquareUnion;[⊔] Square;[□] Sqrt;[√]. + "\x12uareSupersetEqual;\x03⊒\x11uareIntersection;\x03⊓\x10uareSubsetEqual;\x03⊑\x0duareSuperset;\x03⊐\x0buareSubset;\x03⊏\x0auareUnion;\x03⊔\x05uare;\x03□\x03rt;\x03√", + // Sscr;[𝒮]. + "\x03cr;\x04𝒮", + // Star;[⋆]. + "\x03ar;\x03⋆", + // SucceedsSlantEqual;[≽] SucceedsEqual;[⪰] SucceedsTilde;[≿] SupersetEqual;[⊇] SubsetEqual;[⊆] Succeeds;[≻] SuchThat;[∋] Superset;[⊃] Subset;[⋐] Supset;[⋑] Sub;[⋐] Sum;[∑] Sup;[⋑]. + "\x11cceedsSlantEqual;\x03≽\x0ccceedsEqual;\x03⪰\x0ccceedsTilde;\x03≿\x0cpersetEqual;\x03⊇\x0absetEqual;\x03⊆\x07cceeds;\x03≻\x07chThat;\x03∋\x07perset;\x03⊃\x05bset;\x03⋐\x05pset;\x03⋑\x02b;\x03⋐\x02m;\x03∑\x02p;\x03⋑", + // THORN;[Þ] THORN[Þ]. + "\x04ORN;\x02Þ\x03ORN\x02Þ", + // TRADE;[™]. + "\x04ADE;\x03™", + // TSHcy;[Ћ] TScy;[Ц]. + "\x04Hcy;\x02Ћ\x03cy;\x02Ц", + // Tab;[\x9] Tau;[Τ]. + "\x02b;\x01\x9\x02u;\x02Τ", + // Tcaron;[Ť] Tcedil;[Ţ] Tcy;[Т]. + "\x05aron;\x02Ť\x05edil;\x02Ţ\x02y;\x02Т", + // Tfr;[𝔗]. + "\x02r;\x04𝔗", + // ThickSpace;[  ] Therefore;[∴] ThinSpace;[ ] Theta;[Θ]. + "\x09ickSpace;\x06  \x08erefore;\x03∴\x08inSpace;\x03 \x04eta;\x02Θ", + // TildeFullEqual;[≅] TildeEqual;[≃] TildeTilde;[≈] Tilde;[∼]. + "\x0dldeFullEqual;\x03≅\x09ldeEqual;\x03≃\x09ldeTilde;\x03≈\x04lde;\x03∼", + // Topf;[𝕋]. + "\x03pf;\x04𝕋", + // TripleDot;[⃛]. + "\x08ipleDot;\x03⃛", + // Tstrok;[Ŧ] Tscr;[𝒯]. + "\x05trok;\x02Ŧ\x03cr;\x04𝒯", + // Uarrocir;[⥉] Uacute;[Ú] Uacute[Ú] Uarr;[↟]. + "\x07rrocir;\x03⥉\x05cute;\x02Ú\x04cute\x02Ú\x03rr;\x03↟", + // Ubreve;[Ŭ] Ubrcy;[Ў]. + "\x05reve;\x02Ŭ\x04rcy;\x02Ў", + // Ucirc;[Û] Ucirc[Û] Ucy;[У]. + "\x04irc;\x02Û\x03irc\x02Û\x02y;\x02У", + // Udblac;[Ű]. + "\x05blac;\x02Ű", + // Ufr;[𝔘]. + "\x02r;\x04𝔘", + // Ugrave;[Ù] Ugrave[Ù]. + "\x05rave;\x02Ù\x04rave\x02Ù", + // Umacr;[Ū]. + "\x04acr;\x02Ū", + // UnderParenthesis;[⏝] UnderBracket;[⎵] UnderBrace;[⏟] UnionPlus;[⊎] UnderBar;[_] Union;[⋃]. + "\x0fderParenthesis;\x03⏝\x0bderBracket;\x03⎵\x09derBrace;\x03⏟\x08ionPlus;\x03⊎\x07derBar;\x01_\x04ion;\x03⋃", + // Uogon;[Ų] Uopf;[𝕌]. + "\x04gon;\x02Ų\x03pf;\x04𝕌", + // UpArrowDownArrow;[⇅] UpperRightArrow;[↗] UpperLeftArrow;[↖] UpEquilibrium;[⥮] UpDownArrow;[↕] Updownarrow;[⇕] UpArrowBar;[⤒] UpTeeArrow;[↥] UpArrow;[↑] Uparrow;[⇑] Upsilon;[Υ] UpTee;[⊥] Upsi;[ϒ]. + "\x0fArrowDownArrow;\x03⇅\x0eperRightArrow;\x03↗\x0dperLeftArrow;\x03↖\x0cEquilibrium;\x03⥮\x0aDownArrow;\x03↕\x0adownarrow;\x03⇕\x09ArrowBar;\x03⤒\x09TeeArrow;\x03↥\x06Arrow;\x03↑\x06arrow;\x03⇑\x06silon;\x02Υ\x04Tee;\x03⊥\x03si;\x02ϒ", + // Uring;[Ů]. + "\x04ing;\x02Ů", + // Uscr;[𝒰]. + "\x03cr;\x04𝒰", + // Utilde;[Ũ]. + "\x05ilde;\x02Ũ", + // Uuml;[Ü] Uuml[Ü]. + "\x03ml;\x02Ü\x02ml\x02Ü", + // VDash;[⊫]. + "\x04ash;\x03⊫", + // Vbar;[⫫]. + "\x03ar;\x03⫫", + // Vcy;[В]. + "\x02y;\x02В", + // Vdashl;[⫦] Vdash;[⊩]. + "\x05ashl;\x03⫦\x04ash;\x03⊩", + // VerticalSeparator;[❘] VerticalTilde;[≀] VeryThinSpace;[ ] VerticalLine;[|] VerticalBar;[∣] Verbar;[‖] Vert;[‖] Vee;[⋁]. + "\x10rticalSeparator;\x03❘\x0crticalTilde;\x03≀\x0cryThinSpace;\x03 \x0brticalLine;\x01|\x0articalBar;\x03∣\x05rbar;\x03‖\x03rt;\x03‖\x02e;\x03⋁", + // Vfr;[𝔙]. + "\x02r;\x04𝔙", + // Vopf;[𝕍]. + "\x03pf;\x04𝕍", + // Vscr;[𝒱]. + "\x03cr;\x04𝒱", + // Vvdash;[⊪]. + "\x05dash;\x03⊪", + // Wcirc;[Ŵ]. + "\x04irc;\x02Ŵ", + // Wedge;[⋀]. + "\x04dge;\x03⋀", + // Wfr;[𝔚]. + "\x02r;\x04𝔚", + // Wopf;[𝕎]. + "\x03pf;\x04𝕎", + // Wscr;[𝒲]. + "\x03cr;\x04𝒲", + // Xfr;[𝔛]. + "\x02r;\x04𝔛", + // Xi;[Ξ]. + "\x01;\x02Ξ", + // Xopf;[𝕏]. + "\x03pf;\x04𝕏", + // Xscr;[𝒳]. + "\x03cr;\x04𝒳", + // YAcy;[Я]. + "\x03cy;\x02Я", + // YIcy;[Ї]. + "\x03cy;\x02Ї", + // YUcy;[Ю]. + "\x03cy;\x02Ю", + // Yacute;[Ý] Yacute[Ý]. + "\x05cute;\x02Ý\x04cute\x02Ý", + // Ycirc;[Ŷ] Ycy;[Ы]. + "\x04irc;\x02Ŷ\x02y;\x02Ы", + // Yfr;[𝔜]. + "\x02r;\x04𝔜", + // Yopf;[𝕐]. + "\x03pf;\x04𝕐", + // Yscr;[𝒴]. + "\x03cr;\x04𝒴", + // Yuml;[Ÿ]. + "\x03ml;\x02Ÿ", + // ZHcy;[Ж]. + "\x03cy;\x02Ж", + // Zacute;[Ź]. + "\x05cute;\x02Ź", + // Zcaron;[Ž] Zcy;[З]. + "\x05aron;\x02Ž\x02y;\x02З", + // Zdot;[Ż]. + "\x03ot;\x02Ż", + // ZeroWidthSpace;[​] Zeta;[Ζ]. + "\x0droWidthSpace;\x03​\x03ta;\x02Ζ", + // Zfr;[ℨ]. + "\x02r;\x03ℨ", + // Zopf;[ℤ]. + "\x03pf;\x03ℤ", + // Zscr;[𝒵]. + "\x03cr;\x04𝒵", + // aacute;[á] aacute[á]. + "\x05cute;\x02á\x04cute\x02á", + // abreve;[ă]. + "\x05reve;\x02ă", + // acirc;[â] acute;[´] acirc[â] acute[´] acE;[∾̳] acd;[∿] acy;[а] ac;[∾]. + "\x04irc;\x02â\x04ute;\x02´\x03irc\x02â\x03ute\x02´\x02E;\x05∾̳\x02d;\x03∿\x02y;\x02а\x01;\x03∾", + // aelig;[æ] aelig[æ]. + "\x04lig;\x02æ\x03lig\x02æ", + // afr;[𝔞] af;[⁡]. + "\x02r;\x04𝔞\x01;\x03⁡", + // agrave;[à] agrave[à]. + "\x05rave;\x02à\x04rave\x02à", + // alefsym;[ℵ] aleph;[ℵ] alpha;[α]. + "\x06efsym;\x03ℵ\x04eph;\x03ℵ\x04pha;\x02α", + // amacr;[ā] amalg;[⨿] amp;[&] amp[&]. + "\x04acr;\x02ā\x04alg;\x03⨿\x02p;\x01&\x01p\x01&", + // andslope;[⩘] angmsdaa;[⦨] angmsdab;[⦩] angmsdac;[⦪] angmsdad;[⦫] angmsdae;[⦬] angmsdaf;[⦭] angmsdag;[⦮] angmsdah;[⦯] angrtvbd;[⦝] angrtvb;[⊾] angzarr;[⍼] andand;[⩕] angmsd;[∡] angsph;[∢] angle;[∠] angrt;[∟] angst;[Å] andd;[⩜] andv;[⩚] ange;[⦤] and;[∧] ang;[∠]. + "\x07dslope;\x03⩘\x07gmsdaa;\x03⦨\x07gmsdab;\x03⦩\x07gmsdac;\x03⦪\x07gmsdad;\x03⦫\x07gmsdae;\x03⦬\x07gmsdaf;\x03⦭\x07gmsdag;\x03⦮\x07gmsdah;\x03⦯\x07grtvbd;\x03⦝\x06grtvb;\x03⊾\x06gzarr;\x03⍼\x05dand;\x03⩕\x05gmsd;\x03∡\x05gsph;\x03∢\x04gle;\x03∠\x04grt;\x03∟\x04gst;\x02Å\x03dd;\x03⩜\x03dv;\x03⩚\x03ge;\x03⦤\x02d;\x03∧\x02g;\x03∠", + // aogon;[ą] aopf;[𝕒]. + "\x04gon;\x02ą\x03pf;\x04𝕒", + // approxeq;[≊] apacir;[⩯] approx;[≈] apid;[≋] apos;['] apE;[⩰] ape;[≊] ap;[≈]. + "\x07proxeq;\x03≊\x05acir;\x03⩯\x05prox;\x03≈\x03id;\x03≋\x03os;\x01'\x02E;\x03⩰\x02e;\x03≊\x01;\x03≈", + // aring;[å] aring[å]. + "\x04ing;\x02å\x03ing\x02å", + // asympeq;[≍] asymp;[≈] ascr;[𝒶] ast;[*]. + "\x06ympeq;\x03≍\x04ymp;\x03≈\x03cr;\x04𝒶\x02t;\x01*", + // atilde;[ã] atilde[ã]. + "\x05ilde;\x02ã\x04ilde\x02ã", + // auml;[ä] auml[ä]. + "\x03ml;\x02ä\x02ml\x02ä", + // awconint;[∳] awint;[⨑]. + "\x07conint;\x03∳\x04int;\x03⨑", + // bNot;[⫭]. + "\x03ot;\x03⫭", + // backepsilon;[϶] backprime;[‵] backsimeq;[⋍] backcong;[≌] barwedge;[⌅] backsim;[∽] barvee;[⊽] barwed;[⌅]. + "\x0ackepsilon;\x02϶\x08ckprime;\x03‵\x08cksimeq;\x03⋍\x07ckcong;\x03≌\x07rwedge;\x03⌅\x06cksim;\x03∽\x05rvee;\x03⊽\x05rwed;\x03⌅", + // bbrktbrk;[⎶] bbrk;[⎵]. + "\x07rktbrk;\x03⎶\x03rk;\x03⎵", + // bcong;[≌] bcy;[б]. + "\x04ong;\x03≌\x02y;\x02б", + // bdquo;[„]. + "\x04quo;\x03„", + // because;[∵] bemptyv;[⦰] between;[≬] becaus;[∵] bernou;[ℬ] bepsi;[϶] beta;[β] beth;[ℶ]. + "\x06cause;\x03∵\x06mptyv;\x03⦰\x06tween;\x03≬\x05caus;\x03∵\x05rnou;\x03ℬ\x04psi;\x02϶\x03ta;\x02β\x03th;\x03ℶ", + // bfr;[𝔟]. + "\x02r;\x04𝔟", + // bigtriangledown;[▽] bigtriangleup;[△] bigotimes;[⨂] bigoplus;[⨁] bigsqcup;[⨆] biguplus;[⨄] bigwedge;[⋀] bigcirc;[◯] bigodot;[⨀] bigstar;[★] bigcap;[⋂] bigcup;[⋃] bigvee;[⋁]. + "\x0egtriangledown;\x03▽\x0cgtriangleup;\x03△\x08gotimes;\x03⨂\x07goplus;\x03⨁\x07gsqcup;\x03⨆\x07guplus;\x03⨄\x07gwedge;\x03⋀\x06gcirc;\x03◯\x06godot;\x03⨀\x06gstar;\x03★\x05gcap;\x03⋂\x05gcup;\x03⋃\x05gvee;\x03⋁", + // bkarow;[⤍]. + "\x05arow;\x03⤍", + // blacktriangleright;[▸] blacktriangledown;[▾] blacktriangleleft;[◂] blacktriangle;[▴] blacklozenge;[⧫] blacksquare;[▪] blank;[␣] blk12;[▒] blk14;[░] blk34;[▓] block;[█]. + "\x11acktriangleright;\x03▸\x10acktriangledown;\x03▾\x10acktriangleleft;\x03◂\x0cacktriangle;\x03▴\x0backlozenge;\x03⧫\x0aacksquare;\x03▪\x04ank;\x03␣\x04k12;\x03▒\x04k14;\x03░\x04k34;\x03▓\x04ock;\x03█", + // bnequiv;[≡⃥] bnot;[⌐] bne;[=⃥]. + "\x06equiv;\x06≡⃥\x03ot;\x03⌐\x02e;\x04=⃥", + // boxminus;[⊟] boxtimes;[⊠] boxplus;[⊞] bottom;[⊥] bowtie;[⋈] boxbox;[⧉] boxDL;[╗] boxDR;[╔] boxDl;[╖] boxDr;[╓] boxHD;[╦] boxHU;[╩] boxHd;[╤] boxHu;[╧] boxUL;[╝] boxUR;[╚] boxUl;[╜] boxUr;[╙] boxVH;[╬] boxVL;[╣] boxVR;[╠] boxVh;[╫] boxVl;[╢] boxVr;[╟] boxdL;[╕] boxdR;[╒] boxdl;[┐] boxdr;[┌] boxhD;[╥] boxhU;[╨] boxhd;[┬] boxhu;[┴] boxuL;[╛] boxuR;[╘] boxul;[┘] boxur;[└] boxvH;[╪] boxvL;[╡] boxvR;[╞] boxvh;[┼] boxvl;[┤] boxvr;[├] bopf;[𝕓] boxH;[═] boxV;[║] boxh;[─] boxv;[│] bot;[⊥]. + "\x07xminus;\x03⊟\x07xtimes;\x03⊠\x06xplus;\x03⊞\x05ttom;\x03⊥\x05wtie;\x03⋈\x05xbox;\x03⧉\x04xDL;\x03╗\x04xDR;\x03╔\x04xDl;\x03╖\x04xDr;\x03╓\x04xHD;\x03╦\x04xHU;\x03╩\x04xHd;\x03╤\x04xHu;\x03╧\x04xUL;\x03╝\x04xUR;\x03╚\x04xUl;\x03╜\x04xUr;\x03╙\x04xVH;\x03╬\x04xVL;\x03╣\x04xVR;\x03╠\x04xVh;\x03╫\x04xVl;\x03╢\x04xVr;\x03╟\x04xdL;\x03╕\x04xdR;\x03╒\x04xdl;\x03┐\x04xdr;\x03┌\x04xhD;\x03╥\x04xhU;\x03╨\x04xhd;\x03┬\x04xhu;\x03┴\x04xuL;\x03╛\x04xuR;\x03╘\x04xul;\x03┘\x04xur;\x03└\x04xvH;\x03╪\x04xvL;\x03╡\x04xvR;\x03╞\x04xvh;\x03┼\x04xvl;\x03┤\x04xvr;\x03├\x03pf;\x04𝕓\x03xH;\x03═\x03xV;\x03║\x03xh;\x03─\x03xv;\x03│\x02t;\x03⊥", + // bprime;[‵]. + "\x05rime;\x03‵", + // brvbar;[¦] breve;[˘] brvbar[¦]. + "\x05vbar;\x02¦\x04eve;\x02˘\x04vbar\x02¦", + // bsolhsub;[⟈] bsemi;[⁏] bsime;[⋍] bsolb;[⧅] bscr;[𝒷] bsim;[∽] bsol;[\\]. + "\x07olhsub;\x03⟈\x04emi;\x03⁏\x04ime;\x03⋍\x04olb;\x03⧅\x03cr;\x04𝒷\x03im;\x03∽\x03ol;\x01\\", + // bullet;[•] bumpeq;[≏] bumpE;[⪮] bumpe;[≏] bull;[•] bump;[≎]. + "\x05llet;\x03•\x05mpeq;\x03≏\x04mpE;\x03⪮\x04mpe;\x03≏\x03ll;\x03•\x03mp;\x03≎", + // capbrcup;[⩉] cacute;[ć] capand;[⩄] capcap;[⩋] capcup;[⩇] capdot;[⩀] caret;[⁁] caron;[ˇ] caps;[∩︀] cap;[∩]. + "\x07pbrcup;\x03⩉\x05cute;\x02ć\x05pand;\x03⩄\x05pcap;\x03⩋\x05pcup;\x03⩇\x05pdot;\x03⩀\x04ret;\x03⁁\x04ron;\x02ˇ\x03ps;\x06∩︀\x02p;\x03∩", + // ccupssm;[⩐] ccaron;[č] ccedil;[ç] ccaps;[⩍] ccedil[ç] ccirc;[ĉ] ccups;[⩌]. + "\x06upssm;\x03⩐\x05aron;\x02č\x05edil;\x02ç\x04aps;\x03⩍\x04edil\x02ç\x04irc;\x02ĉ\x04ups;\x03⩌", + // cdot;[ċ]. + "\x03ot;\x02ċ", + // centerdot;[·] cemptyv;[⦲] cedil;[¸] cedil[¸] cent;[¢] cent[¢]. + "\x08nterdot;\x02·\x06mptyv;\x03⦲\x04dil;\x02¸\x03dil\x02¸\x03nt;\x02¢\x02nt\x02¢", + // cfr;[𝔠]. + "\x02r;\x04𝔠", + // checkmark;[✓] check;[✓] chcy;[ч] chi;[χ]. + "\x08eckmark;\x03✓\x04eck;\x03✓\x03cy;\x02ч\x02i;\x02χ", + // circlearrowright;[↻] circlearrowleft;[↺] circledcirc;[⊚] circleddash;[⊝] circledast;[⊛] circledR;[®] circledS;[Ⓢ] cirfnint;[⨐] cirscir;[⧂] circeq;[≗] cirmid;[⫯] cirE;[⧃] circ;[ˆ] cire;[≗] cir;[○]. + "\x0frclearrowright;\x03↻\x0erclearrowleft;\x03↺\x0arcledcirc;\x03⊚\x0arcleddash;\x03⊝\x09rcledast;\x03⊛\x07rcledR;\x02®\x07rcledS;\x03Ⓢ\x07rfnint;\x03⨐\x06rscir;\x03⧂\x05rceq;\x03≗\x05rmid;\x03⫯\x03rE;\x03⧃\x03rc;\x02ˆ\x03re;\x03≗\x02r;\x03○", + // clubsuit;[♣] clubs;[♣]. + "\x07ubsuit;\x03♣\x04ubs;\x03♣", + // complement;[∁] complexes;[ℂ] coloneq;[≔] congdot;[⩭] colone;[≔] commat;[@] compfn;[∘] conint;[∮] coprod;[∐] copysr;[℗] colon;[:] comma;[,] comp;[∁] cong;[≅] copf;[𝕔] copy;[©] copy[©]. + "\x09mplement;\x03∁\x08mplexes;\x03ℂ\x06loneq;\x03≔\x06ngdot;\x03⩭\x05lone;\x03≔\x05mmat;\x01@\x05mpfn;\x03∘\x05nint;\x03∮\x05prod;\x03∐\x05pysr;\x03℗\x04lon;\x01:\x04mma;\x01,\x03mp;\x03∁\x03ng;\x03≅\x03pf;\x04𝕔\x03py;\x02©\x02py\x02©", + // crarr;[↵] cross;[✗]. + "\x04arr;\x03↵\x04oss;\x03✗", + // csube;[⫑] csupe;[⫒] cscr;[𝒸] csub;[⫏] csup;[⫐]. + "\x04ube;\x03⫑\x04upe;\x03⫒\x03cr;\x04𝒸\x03ub;\x03⫏\x03up;\x03⫐", + // ctdot;[⋯]. + "\x04dot;\x03⋯", + // curvearrowright;[↷] curvearrowleft;[↶] curlyeqprec;[⋞] curlyeqsucc;[⋟] curlywedge;[⋏] cupbrcap;[⩈] curlyvee;[⋎] cudarrl;[⤸] cudarrr;[⤵] cularrp;[⤽] curarrm;[⤼] cularr;[↶] cupcap;[⩆] cupcup;[⩊] cupdot;[⊍] curarr;[↷] curren;[¤] cuepr;[⋞] cuesc;[⋟] cupor;[⩅] curren[¤] cuvee;[⋎] cuwed;[⋏] cups;[∪︀] cup;[∪]. + "\x0ervearrowright;\x03↷\x0drvearrowleft;\x03↶\x0arlyeqprec;\x03⋞\x0arlyeqsucc;\x03⋟\x09rlywedge;\x03⋏\x07pbrcap;\x03⩈\x07rlyvee;\x03⋎\x06darrl;\x03⤸\x06darrr;\x03⤵\x06larrp;\x03⤽\x06rarrm;\x03⤼\x05larr;\x03↶\x05pcap;\x03⩆\x05pcup;\x03⩊\x05pdot;\x03⊍\x05rarr;\x03↷\x05rren;\x02¤\x04epr;\x03⋞\x04esc;\x03⋟\x04por;\x03⩅\x04rren\x02¤\x04vee;\x03⋎\x04wed;\x03⋏\x03ps;\x06∪︀\x02p;\x03∪", + // cwconint;[∲] cwint;[∱]. + "\x07conint;\x03∲\x04int;\x03∱", + // cylcty;[⌭]. + "\x05lcty;\x03⌭", + // dArr;[⇓]. + "\x03rr;\x03⇓", + // dHar;[⥥]. + "\x03ar;\x03⥥", + // dagger;[†] daleth;[ℸ] dashv;[⊣] darr;[↓] dash;[‐]. + "\x05gger;\x03†\x05leth;\x03ℸ\x04shv;\x03⊣\x03rr;\x03↓\x03sh;\x03‐", + // dbkarow;[⤏] dblac;[˝]. + "\x06karow;\x03⤏\x04lac;\x02˝", + // dcaron;[ď] dcy;[д]. + "\x05aron;\x02ď\x02y;\x02д", + // ddagger;[‡] ddotseq;[⩷] ddarr;[⇊] dd;[ⅆ]. + "\x06agger;\x03‡\x06otseq;\x03⩷\x04arr;\x03⇊\x01;\x03ⅆ", + // demptyv;[⦱] delta;[δ] deg;[°] deg[°]. + "\x06mptyv;\x03⦱\x04lta;\x02δ\x02g;\x02°\x01g\x02°", + // dfisht;[⥿] dfr;[𝔡]. + "\x05isht;\x03⥿\x02r;\x04𝔡", + // dharl;[⇃] dharr;[⇂]. + "\x04arl;\x03⇃\x04arr;\x03⇂", + // divideontimes;[⋇] diamondsuit;[♦] diamond;[⋄] digamma;[ϝ] divide;[÷] divonx;[⋇] diams;[♦] disin;[⋲] divide[÷] diam;[⋄] die;[¨] div;[÷]. + "\x0cvideontimes;\x03⋇\x0aamondsuit;\x03♦\x06amond;\x03⋄\x06gamma;\x02ϝ\x05vide;\x02÷\x05vonx;\x03⋇\x04ams;\x03♦\x04sin;\x03⋲\x04vide\x02÷\x03am;\x03⋄\x02e;\x02¨\x02v;\x02÷", + // djcy;[ђ]. + "\x03cy;\x02ђ", + // dlcorn;[⌞] dlcrop;[⌍]. + "\x05corn;\x03⌞\x05crop;\x03⌍", + // downharpoonright;[⇂] downharpoonleft;[⇃] doublebarwedge;[⌆] downdownarrows;[⇊] dotsquare;[⊡] downarrow;[↓] doteqdot;[≑] dotminus;[∸] dotplus;[∔] dollar;[$] doteq;[≐] dopf;[𝕕] dot;[˙]. + "\x0fwnharpoonright;\x03⇂\x0ewnharpoonleft;\x03⇃\x0dublebarwedge;\x03⌆\x0dwndownarrows;\x03⇊\x08tsquare;\x03⊡\x08wnarrow;\x03↓\x07teqdot;\x03≑\x07tminus;\x03∸\x06tplus;\x03∔\x05llar;\x01$\x04teq;\x03≐\x03pf;\x04𝕕\x02t;\x02˙", + // drbkarow;[⤐] drcorn;[⌟] drcrop;[⌌]. + "\x07bkarow;\x03⤐\x05corn;\x03⌟\x05crop;\x03⌌", + // dstrok;[đ] dscr;[𝒹] dscy;[ѕ] dsol;[⧶]. + "\x05trok;\x02đ\x03cr;\x04𝒹\x03cy;\x02ѕ\x03ol;\x03⧶", + // dtdot;[⋱] dtrif;[▾] dtri;[▿]. + "\x04dot;\x03⋱\x04rif;\x03▾\x03ri;\x03▿", + // duarr;[⇵] duhar;[⥯]. + "\x04arr;\x03⇵\x04har;\x03⥯", + // dwangle;[⦦]. + "\x06angle;\x03⦦", + // dzigrarr;[⟿] dzcy;[џ]. + "\x07igrarr;\x03⟿\x03cy;\x02џ", + // eDDot;[⩷] eDot;[≑]. + "\x04Dot;\x03⩷\x03ot;\x03≑", + // eacute;[é] easter;[⩮] eacute[é]. + "\x05cute;\x02é\x05ster;\x03⩮\x04cute\x02é", + // ecaron;[ě] ecolon;[≕] ecirc;[ê] ecir;[≖] ecirc[ê] ecy;[э]. + "\x05aron;\x02ě\x05olon;\x03≕\x04irc;\x02ê\x03ir;\x03≖\x03irc\x02ê\x02y;\x02э", + // edot;[ė]. + "\x03ot;\x02ė", + // ee;[ⅇ]. + "\x01;\x03ⅇ", + // efDot;[≒] efr;[𝔢]. + "\x04Dot;\x03≒\x02r;\x04𝔢", + // egrave;[è] egsdot;[⪘] egrave[è] egs;[⪖] eg;[⪚]. + "\x05rave;\x02è\x05sdot;\x03⪘\x04rave\x02è\x02s;\x03⪖\x01;\x03⪚", + // elinters;[⏧] elsdot;[⪗] ell;[ℓ] els;[⪕] el;[⪙]. + "\x07inters;\x03⏧\x05sdot;\x03⪗\x02l;\x03ℓ\x02s;\x03⪕\x01;\x03⪙", + // emptyset;[∅] emptyv;[∅] emsp13;[ ] emsp14;[ ] emacr;[ē] empty;[∅] emsp;[ ]. + "\x07ptyset;\x03∅\x05ptyv;\x03∅\x05sp13;\x03 \x05sp14;\x03 \x04acr;\x02ē\x04pty;\x03∅\x03sp;\x03 ", + // ensp;[ ] eng;[ŋ]. + "\x03sp;\x03 \x02g;\x02ŋ", + // eogon;[ę] eopf;[𝕖]. + "\x04gon;\x02ę\x03pf;\x04𝕖", + // epsilon;[ε] eparsl;[⧣] eplus;[⩱] epsiv;[ϵ] epar;[⋕] epsi;[ε]. + "\x06silon;\x02ε\x05arsl;\x03⧣\x04lus;\x03⩱\x04siv;\x02ϵ\x03ar;\x03⋕\x03si;\x02ε", + // eqslantless;[⪕] eqslantgtr;[⪖] eqvparsl;[⧥] eqcolon;[≕] equivDD;[⩸] eqcirc;[≖] equals;[=] equest;[≟] eqsim;[≂] equiv;[≡]. + "\x0aslantless;\x03⪕\x09slantgtr;\x03⪖\x07vparsl;\x03⧥\x06colon;\x03≕\x06uivDD;\x03⩸\x05circ;\x03≖\x05uals;\x01=\x05uest;\x03≟\x04sim;\x03≂\x04uiv;\x03≡", + // erDot;[≓] erarr;[⥱]. + "\x04Dot;\x03≓\x04arr;\x03⥱", + // esdot;[≐] escr;[ℯ] esim;[≂]. + "\x04dot;\x03≐\x03cr;\x03ℯ\x03im;\x03≂", + // eta;[η] eth;[ð] eth[ð]. + "\x02a;\x02η\x02h;\x02ð\x01h\x02ð", + // euml;[ë] euro;[€] euml[ë]. + "\x03ml;\x02ë\x03ro;\x03€\x02ml\x02ë", + // exponentiale;[ⅇ] expectation;[ℰ] exist;[∃] excl;[!]. + "\x0bponentiale;\x03ⅇ\x0apectation;\x03ℰ\x04ist;\x03∃\x03cl;\x01!", + // fallingdotseq;[≒]. + "\x0cllingdotseq;\x03≒", + // fcy;[ф]. + "\x02y;\x02ф", + // female;[♀]. + "\x05male;\x03♀", + // ffilig;[ffi] ffllig;[ffl] fflig;[ff] ffr;[𝔣]. + "\x05ilig;\x03ffi\x05llig;\x03ffl\x04lig;\x03ff\x02r;\x04𝔣", + // filig;[fi]. + "\x04lig;\x03fi", + // fjlig;[fj]. + "\x04lig;\x02fj", + // fllig;[fl] fltns;[▱] flat;[♭]. + "\x04lig;\x03fl\x04tns;\x03▱\x03at;\x03♭", + // fnof;[ƒ]. + "\x03of;\x02ƒ", + // forall;[∀] forkv;[⫙] fopf;[𝕗] fork;[⋔]. + "\x05rall;\x03∀\x04rkv;\x03⫙\x03pf;\x04𝕗\x03rk;\x03⋔", + // fpartint;[⨍]. + "\x07artint;\x03⨍", + // frac12;[½] frac13;[⅓] frac14;[¼] frac15;[⅕] frac16;[⅙] frac18;[⅛] frac23;[⅔] frac25;[⅖] frac34;[¾] frac35;[⅗] frac38;[⅜] frac45;[⅘] frac56;[⅚] frac58;[⅝] frac78;[⅞] frac12[½] frac14[¼] frac34[¾] frasl;[⁄] frown;[⌢]. + "\x05ac12;\x02½\x05ac13;\x03⅓\x05ac14;\x02¼\x05ac15;\x03⅕\x05ac16;\x03⅙\x05ac18;\x03⅛\x05ac23;\x03⅔\x05ac25;\x03⅖\x05ac34;\x02¾\x05ac35;\x03⅗\x05ac38;\x03⅜\x05ac45;\x03⅘\x05ac56;\x03⅚\x05ac58;\x03⅝\x05ac78;\x03⅞\x04ac12\x02½\x04ac14\x02¼\x04ac34\x02¾\x04asl;\x03⁄\x04own;\x03⌢", + // fscr;[𝒻]. + "\x03cr;\x04𝒻", + // gEl;[⪌] gE;[≧]. + "\x02l;\x03⪌\x01;\x03≧", + // gacute;[ǵ] gammad;[ϝ] gamma;[γ] gap;[⪆]. + "\x05cute;\x02ǵ\x05mmad;\x02ϝ\x04mma;\x02γ\x02p;\x03⪆", + // gbreve;[ğ]. + "\x05reve;\x02ğ", + // gcirc;[ĝ] gcy;[г]. + "\x04irc;\x02ĝ\x02y;\x02г", + // gdot;[ġ]. + "\x03ot;\x02ġ", + // geqslant;[⩾] gesdotol;[⪄] gesdoto;[⪂] gesdot;[⪀] gesles;[⪔] gescc;[⪩] geqq;[≧] gesl;[⋛︀] gel;[⋛] geq;[≥] ges;[⩾] ge;[≥]. + "\x07qslant;\x03⩾\x07sdotol;\x03⪄\x06sdoto;\x03⪂\x05sdot;\x03⪀\x05sles;\x03⪔\x04scc;\x03⪩\x03qq;\x03≧\x03sl;\x06⋛︀\x02l;\x03⋛\x02q;\x03≥\x02s;\x03⩾\x01;\x03≥", + // gfr;[𝔤]. + "\x02r;\x04𝔤", + // ggg;[⋙] gg;[≫]. + "\x02g;\x03⋙\x01;\x03≫", + // gimel;[ℷ]. + "\x04mel;\x03ℷ", + // gjcy;[ѓ]. + "\x03cy;\x02ѓ", + // glE;[⪒] gla;[⪥] glj;[⪤] gl;[≷]. + "\x02E;\x03⪒\x02a;\x03⪥\x02j;\x03⪤\x01;\x03≷", + // gnapprox;[⪊] gneqq;[≩] gnsim;[⋧] gnap;[⪊] gneq;[⪈] gnE;[≩] gne;[⪈]. + "\x07approx;\x03⪊\x04eqq;\x03≩\x04sim;\x03⋧\x03ap;\x03⪊\x03eq;\x03⪈\x02E;\x03≩\x02e;\x03⪈", + // gopf;[𝕘]. + "\x03pf;\x04𝕘", + // grave;[`]. + "\x04ave;\x01`", + // gsime;[⪎] gsiml;[⪐] gscr;[ℊ] gsim;[≳]. + "\x04ime;\x03⪎\x04iml;\x03⪐\x03cr;\x03ℊ\x03im;\x03≳", + // gtreqqless;[⪌] gtrapprox;[⪆] gtreqless;[⋛] gtquest;[⩼] gtrless;[≷] gtlPar;[⦕] gtrarr;[⥸] gtrdot;[⋗] gtrsim;[≳] gtcir;[⩺] gtdot;[⋗] gtcc;[⪧] gt;[>]. + "\x09reqqless;\x03⪌\x08rapprox;\x03⪆\x08reqless;\x03⋛\x06quest;\x03⩼\x06rless;\x03≷\x05lPar;\x03⦕\x05rarr;\x03⥸\x05rdot;\x03⋗\x05rsim;\x03≳\x04cir;\x03⩺\x04dot;\x03⋗\x03cc;\x03⪧\x01;\x01>", + // gvertneqq;[≩︀] gvnE;[≩︀]. + "\x08ertneqq;\x06≩︀\x03nE;\x06≩︀", + // hArr;[⇔]. + "\x03rr;\x03⇔", + // harrcir;[⥈] hairsp;[ ] hamilt;[ℋ] hardcy;[ъ] harrw;[↭] half;[½] harr;[↔]. + "\x06rrcir;\x03⥈\x05irsp;\x03 \x05milt;\x03ℋ\x05rdcy;\x02ъ\x04rrw;\x03↭\x03lf;\x02½\x03rr;\x03↔", + // hbar;[ℏ]. + "\x03ar;\x03ℏ", + // hcirc;[ĥ]. + "\x04irc;\x02ĥ", + // heartsuit;[♥] hearts;[♥] hellip;[…] hercon;[⊹]. + "\x08artsuit;\x03♥\x05arts;\x03♥\x05llip;\x03…\x05rcon;\x03⊹", + // hfr;[𝔥]. + "\x02r;\x04𝔥", + // hksearow;[⤥] hkswarow;[⤦]. + "\x07searow;\x03⤥\x07swarow;\x03⤦", + // hookrightarrow;[↪] hookleftarrow;[↩] homtht;[∻] horbar;[―] hoarr;[⇿] hopf;[𝕙]. + "\x0dokrightarrow;\x03↪\x0cokleftarrow;\x03↩\x05mtht;\x03∻\x05rbar;\x03―\x04arr;\x03⇿\x03pf;\x04𝕙", + // hslash;[ℏ] hstrok;[ħ] hscr;[𝒽]. + "\x05lash;\x03ℏ\x05trok;\x02ħ\x03cr;\x04𝒽", + // hybull;[⁃] hyphen;[‐]. + "\x05bull;\x03⁃\x05phen;\x03‐", + // iacute;[í] iacute[í]. + "\x05cute;\x02í\x04cute\x02í", + // icirc;[î] icirc[î] icy;[и] ic;[⁣]. + "\x04irc;\x02î\x03irc\x02î\x02y;\x02и\x01;\x03⁣", + // iexcl;[¡] iecy;[е] iexcl[¡]. + "\x04xcl;\x02¡\x03cy;\x02е\x03xcl\x02¡", + // iff;[⇔] ifr;[𝔦]. + "\x02f;\x03⇔\x02r;\x04𝔦", + // igrave;[ì] igrave[ì]. + "\x05rave;\x02ì\x04rave\x02ì", + // iiiint;[⨌] iinfin;[⧜] iiint;[∭] iiota;[℩] ii;[ⅈ]. + "\x05iint;\x03⨌\x05nfin;\x03⧜\x04int;\x03∭\x04ota;\x03℩\x01;\x03ⅈ", + // ijlig;[ij]. + "\x04lig;\x02ij", + // imagline;[ℐ] imagpart;[ℑ] imacr;[ī] image;[ℑ] imath;[ı] imped;[Ƶ] imof;[⊷]. + "\x07agline;\x03ℐ\x07agpart;\x03ℑ\x04acr;\x02ī\x04age;\x03ℑ\x04ath;\x02ı\x04ped;\x02Ƶ\x03of;\x03⊷", + // infintie;[⧝] integers;[ℤ] intercal;[⊺] intlarhk;[⨗] intprod;[⨼] incare;[℅] inodot;[ı] intcal;[⊺] infin;[∞] int;[∫] in;[∈]. + "\x07fintie;\x03⧝\x07tegers;\x03ℤ\x07tercal;\x03⊺\x07tlarhk;\x03⨗\x06tprod;\x03⨼\x05care;\x03℅\x05odot;\x02ı\x05tcal;\x03⊺\x04fin;\x03∞\x02t;\x03∫\x01;\x03∈", + // iogon;[į] iocy;[ё] iopf;[𝕚] iota;[ι]. + "\x04gon;\x02į\x03cy;\x02ё\x03pf;\x04𝕚\x03ta;\x02ι", + // iprod;[⨼]. + "\x04rod;\x03⨼", + // iquest;[¿] iquest[¿]. + "\x05uest;\x02¿\x04uest\x02¿", + // isindot;[⋵] isinsv;[⋳] isinE;[⋹] isins;[⋴] isinv;[∈] iscr;[𝒾] isin;[∈]. + "\x06indot;\x03⋵\x05insv;\x03⋳\x04inE;\x03⋹\x04ins;\x03⋴\x04inv;\x03∈\x03cr;\x04𝒾\x03in;\x03∈", + // itilde;[ĩ] it;[⁢]. + "\x05ilde;\x02ĩ\x01;\x03⁢", + // iukcy;[і] iuml;[ï] iuml[ï]. + "\x04kcy;\x02і\x03ml;\x02ï\x02ml\x02ï", + // jcirc;[ĵ] jcy;[й]. + "\x04irc;\x02ĵ\x02y;\x02й", + // jfr;[𝔧]. + "\x02r;\x04𝔧", + // jmath;[ȷ]. + "\x04ath;\x02ȷ", + // jopf;[𝕛]. + "\x03pf;\x04𝕛", + // jsercy;[ј] jscr;[𝒿]. + "\x05ercy;\x02ј\x03cr;\x04𝒿", + // jukcy;[є]. + "\x04kcy;\x02є", + // kappav;[ϰ] kappa;[κ]. + "\x05ppav;\x02ϰ\x04ppa;\x02κ", + // kcedil;[ķ] kcy;[к]. + "\x05edil;\x02ķ\x02y;\x02к", + // kfr;[𝔨]. + "\x02r;\x04𝔨", + // kgreen;[ĸ]. + "\x05reen;\x02ĸ", + // khcy;[х]. + "\x03cy;\x02х", + // kjcy;[ќ]. + "\x03cy;\x02ќ", + // kopf;[𝕜]. + "\x03pf;\x04𝕜", + // kscr;[𝓀]. + "\x03cr;\x04𝓀", + // lAtail;[⤛] lAarr;[⇚] lArr;[⇐]. + "\x05tail;\x03⤛\x04arr;\x03⇚\x03rr;\x03⇐", + // lBarr;[⤎]. + "\x04arr;\x03⤎", + // lEg;[⪋] lE;[≦]. + "\x02g;\x03⪋\x01;\x03≦", + // lHar;[⥢]. + "\x03ar;\x03⥢", + // laemptyv;[⦴] larrbfs;[⤟] larrsim;[⥳] lacute;[ĺ] lagran;[ℒ] lambda;[λ] langle;[⟨] larrfs;[⤝] larrhk;[↩] larrlp;[↫] larrpl;[⤹] larrtl;[↢] latail;[⤙] langd;[⦑] laquo;[«] larrb;[⇤] lates;[⪭︀] lang;[⟨] laquo[«] larr;[←] late;[⪭] lap;[⪅] lat;[⪫]. + "\x07emptyv;\x03⦴\x06rrbfs;\x03⤟\x06rrsim;\x03⥳\x05cute;\x02ĺ\x05gran;\x03ℒ\x05mbda;\x02λ\x05ngle;\x03⟨\x05rrfs;\x03⤝\x05rrhk;\x03↩\x05rrlp;\x03↫\x05rrpl;\x03⤹\x05rrtl;\x03↢\x05tail;\x03⤙\x04ngd;\x03⦑\x04quo;\x02«\x04rrb;\x03⇤\x04tes;\x06⪭︀\x03ng;\x03⟨\x03quo\x02«\x03rr;\x03←\x03te;\x03⪭\x02p;\x03⪅\x02t;\x03⪫", + // lbrksld;[⦏] lbrkslu;[⦍] lbrace;[{] lbrack;[[] lbarr;[⤌] lbbrk;[❲] lbrke;[⦋]. + "\x06rksld;\x03⦏\x06rkslu;\x03⦍\x05race;\x01{\x05rack;\x01[\x04arr;\x03⤌\x04brk;\x03❲\x04rke;\x03⦋", + // lcaron;[ľ] lcedil;[ļ] lceil;[⌈] lcub;[{] lcy;[л]. + "\x05aron;\x02ľ\x05edil;\x02ļ\x04eil;\x03⌈\x03ub;\x01{\x02y;\x02л", + // ldrushar;[⥋] ldrdhar;[⥧] ldquor;[„] ldquo;[“] ldca;[⤶] ldsh;[↲]. + "\x07rushar;\x03⥋\x06rdhar;\x03⥧\x05quor;\x03„\x04quo;\x03“\x03ca;\x03⤶\x03sh;\x03↲", + // leftrightsquigarrow;[↭] leftrightharpoons;[⇋] leftharpoondown;[↽] leftrightarrows;[⇆] leftleftarrows;[⇇] leftrightarrow;[↔] leftthreetimes;[⋋] leftarrowtail;[↢] leftharpoonup;[↼] lessapprox;[⪅] lesseqqgtr;[⪋] leftarrow;[←] lesseqgtr;[⋚] leqslant;[⩽] lesdotor;[⪃] lesdoto;[⪁] lessdot;[⋖] lessgtr;[≶] lesssim;[≲] lesdot;[⩿] lesges;[⪓] lescc;[⪨] leqq;[≦] lesg;[⋚︀] leg;[⋚] leq;[≤] les;[⩽] le;[≤]. + "\x12ftrightsquigarrow;\x03↭\x10ftrightharpoons;\x03⇋\x0eftharpoondown;\x03↽\x0eftrightarrows;\x03⇆\x0dftleftarrows;\x03⇇\x0dftrightarrow;\x03↔\x0dftthreetimes;\x03⋋\x0cftarrowtail;\x03↢\x0cftharpoonup;\x03↼\x09ssapprox;\x03⪅\x09sseqqgtr;\x03⪋\x08ftarrow;\x03←\x08sseqgtr;\x03⋚\x07qslant;\x03⩽\x07sdotor;\x03⪃\x06sdoto;\x03⪁\x06ssdot;\x03⋖\x06ssgtr;\x03≶\x06sssim;\x03≲\x05sdot;\x03⩿\x05sges;\x03⪓\x04scc;\x03⪨\x03qq;\x03≦\x03sg;\x06⋚︀\x02g;\x03⋚\x02q;\x03≤\x02s;\x03⩽\x01;\x03≤", + // lfisht;[⥼] lfloor;[⌊] lfr;[𝔩]. + "\x05isht;\x03⥼\x05loor;\x03⌊\x02r;\x04𝔩", + // lgE;[⪑] lg;[≶]. + "\x02E;\x03⪑\x01;\x03≶", + // lharul;[⥪] lhard;[↽] lharu;[↼] lhblk;[▄]. + "\x05arul;\x03⥪\x04ard;\x03↽\x04aru;\x03↼\x04blk;\x03▄", + // ljcy;[љ]. + "\x03cy;\x02љ", + // llcorner;[⌞] llhard;[⥫] llarr;[⇇] lltri;[◺] ll;[≪]. + "\x07corner;\x03⌞\x05hard;\x03⥫\x04arr;\x03⇇\x04tri;\x03◺\x01;\x03≪", + // lmoustache;[⎰] lmidot;[ŀ] lmoust;[⎰]. + "\x09oustache;\x03⎰\x05idot;\x02ŀ\x05oust;\x03⎰", + // lnapprox;[⪉] lneqq;[≨] lnsim;[⋦] lnap;[⪉] lneq;[⪇] lnE;[≨] lne;[⪇]. + "\x07approx;\x03⪉\x04eqq;\x03≨\x04sim;\x03⋦\x03ap;\x03⪉\x03eq;\x03⪇\x02E;\x03≨\x02e;\x03⪇", + // longleftrightarrow;[⟷] longrightarrow;[⟶] looparrowright;[↬] longleftarrow;[⟵] looparrowleft;[↫] longmapsto;[⟼] lotimes;[⨴] lozenge;[◊] loplus;[⨭] lowast;[∗] lowbar;[_] loang;[⟬] loarr;[⇽] lobrk;[⟦] lopar;[⦅] lopf;[𝕝] lozf;[⧫] loz;[◊]. + "\x11ngleftrightarrow;\x03⟷\x0dngrightarrow;\x03⟶\x0doparrowright;\x03↬\x0cngleftarrow;\x03⟵\x0coparrowleft;\x03↫\x09ngmapsto;\x03⟼\x06times;\x03⨴\x06zenge;\x03◊\x05plus;\x03⨭\x05wast;\x03∗\x05wbar;\x01_\x04ang;\x03⟬\x04arr;\x03⇽\x04brk;\x03⟦\x04par;\x03⦅\x03pf;\x04𝕝\x03zf;\x03⧫\x02z;\x03◊", + // lparlt;[⦓] lpar;[(]. + "\x05arlt;\x03⦓\x03ar;\x01(", + // lrcorner;[⌟] lrhard;[⥭] lrarr;[⇆] lrhar;[⇋] lrtri;[⊿] lrm;[‎]. + "\x07corner;\x03⌟\x05hard;\x03⥭\x04arr;\x03⇆\x04har;\x03⇋\x04tri;\x03⊿\x02m;\x03‎", + // lsaquo;[‹] lsquor;[‚] lstrok;[ł] lsime;[⪍] lsimg;[⪏] lsquo;[‘] lscr;[𝓁] lsim;[≲] lsqb;[[] lsh;[↰]. + "\x05aquo;\x03‹\x05quor;\x03‚\x05trok;\x02ł\x04ime;\x03⪍\x04img;\x03⪏\x04quo;\x03‘\x03cr;\x04𝓁\x03im;\x03≲\x03qb;\x01[\x02h;\x03↰", + // ltquest;[⩻] lthree;[⋋] ltimes;[⋉] ltlarr;[⥶] ltrPar;[⦖] ltcir;[⩹] ltdot;[⋖] ltrie;[⊴] ltrif;[◂] ltcc;[⪦] ltri;[◃] lt;[<]. + "\x06quest;\x03⩻\x05hree;\x03⋋\x05imes;\x03⋉\x05larr;\x03⥶\x05rPar;\x03⦖\x04cir;\x03⩹\x04dot;\x03⋖\x04rie;\x03⊴\x04rif;\x03◂\x03cc;\x03⪦\x03ri;\x03◃\x01;\x01<", + // lurdshar;[⥊] luruhar;[⥦]. + "\x07rdshar;\x03⥊\x06ruhar;\x03⥦", + // lvertneqq;[≨︀] lvnE;[≨︀]. + "\x08ertneqq;\x06≨︀\x03nE;\x06≨︀", + // mDDot;[∺]. + "\x04Dot;\x03∺", + // mapstodown;[↧] mapstoleft;[↤] mapstoup;[↥] maltese;[✠] mapsto;[↦] marker;[▮] macr;[¯] male;[♂] malt;[✠] macr[¯] map;[↦]. + "\x09pstodown;\x03↧\x09pstoleft;\x03↤\x07pstoup;\x03↥\x06ltese;\x03✠\x05psto;\x03↦\x05rker;\x03▮\x03cr;\x02¯\x03le;\x03♂\x03lt;\x03✠\x02cr\x02¯\x02p;\x03↦", + // mcomma;[⨩] mcy;[м]. + "\x05omma;\x03⨩\x02y;\x02м", + // mdash;[—]. + "\x04ash;\x03—", + // measuredangle;[∡]. + "\x0casuredangle;\x03∡", + // mfr;[𝔪]. + "\x02r;\x04𝔪", + // mho;[℧]. + "\x02o;\x03℧", + // minusdu;[⨪] midast;[*] midcir;[⫰] middot;[·] minusb;[⊟] minusd;[∸] micro;[µ] middot[·] minus;[−] micro[µ] mid;[∣]. + "\x06nusdu;\x03⨪\x05dast;\x01*\x05dcir;\x03⫰\x05ddot;\x02·\x05nusb;\x03⊟\x05nusd;\x03∸\x04cro;\x02µ\x04ddot\x02·\x04nus;\x03−\x03cro\x02µ\x02d;\x03∣", + // mlcp;[⫛] mldr;[…]. + "\x03cp;\x03⫛\x03dr;\x03…", + // mnplus;[∓]. + "\x05plus;\x03∓", + // models;[⊧] mopf;[𝕞]. + "\x05dels;\x03⊧\x03pf;\x04𝕞", + // mp;[∓]. + "\x01;\x03∓", + // mstpos;[∾] mscr;[𝓂]. + "\x05tpos;\x03∾\x03cr;\x04𝓂", + // multimap;[⊸] mumap;[⊸] mu;[μ]. + "\x07ltimap;\x03⊸\x04map;\x03⊸\x01;\x02μ", + // nGtv;[≫̸] nGg;[⋙̸] nGt;[≫⃒]. + "\x03tv;\x05≫̸\x02g;\x05⋙̸\x02t;\x06≫⃒", + // nLeftrightarrow;[⇎] nLeftarrow;[⇍] nLtv;[≪̸] nLl;[⋘̸] nLt;[≪⃒]. + "\x0eeftrightarrow;\x03⇎\x09eftarrow;\x03⇍\x03tv;\x05≪̸\x02l;\x05⋘̸\x02t;\x06≪⃒", + // nRightarrow;[⇏]. + "\x0aightarrow;\x03⇏", + // nVDash;[⊯] nVdash;[⊮]. + "\x05Dash;\x03⊯\x05dash;\x03⊮", + // naturals;[ℕ] napprox;[≉] natural;[♮] nacute;[ń] nabla;[∇] napid;[≋̸] napos;[ʼn] natur;[♮] nang;[∠⃒] napE;[⩰̸] nap;[≉]. + "\x07turals;\x03ℕ\x06pprox;\x03≉\x06tural;\x03♮\x05cute;\x02ń\x04bla;\x03∇\x04pid;\x05≋̸\x04pos;\x02ʼn\x04tur;\x03♮\x03ng;\x06∠⃒\x03pE;\x05⩰̸\x02p;\x03≉", + // nbumpe;[≏̸] nbump;[≎̸] nbsp;[ ] nbsp[ ]. + "\x05umpe;\x05≏̸\x04ump;\x05≎̸\x03sp;\x02 \x02sp\x02 ", + // ncongdot;[⩭̸] ncaron;[ň] ncedil;[ņ] ncong;[≇] ncap;[⩃] ncup;[⩂] ncy;[н]. + "\x07ongdot;\x05⩭̸\x05aron;\x02ň\x05edil;\x02ņ\x04ong;\x03≇\x03ap;\x03⩃\x03up;\x03⩂\x02y;\x02н", + // ndash;[–]. + "\x04ash;\x03–", + // nearrow;[↗] nexists;[∄] nearhk;[⤤] nequiv;[≢] nesear;[⤨] nexist;[∄] neArr;[⇗] nearr;[↗] nedot;[≐̸] nesim;[≂̸] ne;[≠]. + "\x06arrow;\x03↗\x06xists;\x03∄\x05arhk;\x03⤤\x05quiv;\x03≢\x05sear;\x03⤨\x05xist;\x03∄\x04Arr;\x03⇗\x04arr;\x03↗\x04dot;\x05≐̸\x04sim;\x05≂̸\x01;\x03≠", + // nfr;[𝔫]. + "\x02r;\x04𝔫", + // ngeqslant;[⩾̸] ngeqq;[≧̸] ngsim;[≵] ngeq;[≱] nges;[⩾̸] ngtr;[≯] ngE;[≧̸] nge;[≱] ngt;[≯]. + "\x08eqslant;\x05⩾̸\x04eqq;\x05≧̸\x04sim;\x03≵\x03eq;\x03≱\x03es;\x05⩾̸\x03tr;\x03≯\x02E;\x05≧̸\x02e;\x03≱\x02t;\x03≯", + // nhArr;[⇎] nharr;[↮] nhpar;[⫲]. + "\x04Arr;\x03⇎\x04arr;\x03↮\x04par;\x03⫲", + // nisd;[⋺] nis;[⋼] niv;[∋] ni;[∋]. + "\x03sd;\x03⋺\x02s;\x03⋼\x02v;\x03∋\x01;\x03∋", + // njcy;[њ]. + "\x03cy;\x02њ", + // nleftrightarrow;[↮] nleftarrow;[↚] nleqslant;[⩽̸] nltrie;[⋬] nlArr;[⇍] nlarr;[↚] nleqq;[≦̸] nless;[≮] nlsim;[≴] nltri;[⋪] nldr;[‥] nleq;[≰] nles;[⩽̸] nlE;[≦̸] nle;[≰] nlt;[≮]. + "\x0eeftrightarrow;\x03↮\x09eftarrow;\x03↚\x08eqslant;\x05⩽̸\x05trie;\x03⋬\x04Arr;\x03⇍\x04arr;\x03↚\x04eqq;\x05≦̸\x04ess;\x03≮\x04sim;\x03≴\x04tri;\x03⋪\x03dr;\x03‥\x03eq;\x03≰\x03es;\x05⩽̸\x02E;\x05≦̸\x02e;\x03≰\x02t;\x03≮", + // nmid;[∤]. + "\x03id;\x03∤", + // notindot;[⋵̸] notinva;[∉] notinvb;[⋷] notinvc;[⋶] notniva;[∌] notnivb;[⋾] notnivc;[⋽] notinE;[⋹̸] notin;[∉] notni;[∌] nopf;[𝕟] not;[¬] not[¬]. + "\x07tindot;\x05⋵̸\x06tinva;\x03∉\x06tinvb;\x03⋷\x06tinvc;\x03⋶\x06tniva;\x03∌\x06tnivb;\x03⋾\x06tnivc;\x03⋽\x05tinE;\x05⋹̸\x04tin;\x03∉\x04tni;\x03∌\x03pf;\x04𝕟\x02t;\x02¬\x01t\x02¬", + // nparallel;[∦] npolint;[⨔] npreceq;[⪯̸] nparsl;[⫽⃥] nprcue;[⋠] npart;[∂̸] nprec;[⊀] npar;[∦] npre;[⪯̸] npr;[⊀]. + "\x08arallel;\x03∦\x06olint;\x03⨔\x06receq;\x05⪯̸\x05arsl;\x06⫽⃥\x05rcue;\x03⋠\x04art;\x05∂̸\x04rec;\x03⊀\x03ar;\x03∦\x03re;\x05⪯̸\x02r;\x03⊀", + // nrightarrow;[↛] nrarrc;[⤳̸] nrarrw;[↝̸] nrtrie;[⋭] nrArr;[⇏] nrarr;[↛] nrtri;[⋫]. + "\x0aightarrow;\x03↛\x05arrc;\x05⤳̸\x05arrw;\x05↝̸\x05trie;\x03⋭\x04Arr;\x03⇏\x04arr;\x03↛\x04tri;\x03⋫", + // nshortparallel;[∦] nsubseteqq;[⫅̸] nsupseteqq;[⫆̸] nshortmid;[∤] nsubseteq;[⊈] nsupseteq;[⊉] nsqsube;[⋢] nsqsupe;[⋣] nsubset;[⊂⃒] nsucceq;[⪰̸] nsupset;[⊃⃒] nsccue;[⋡] nsimeq;[≄] nsime;[≄] nsmid;[∤] nspar;[∦] nsubE;[⫅̸] nsube;[⊈] nsucc;[⊁] nsupE;[⫆̸] nsupe;[⊉] nsce;[⪰̸] nscr;[𝓃] nsim;[≁] nsub;[⊄] nsup;[⊅] nsc;[⊁]. + "\x0dhortparallel;\x03∦\x09ubseteqq;\x05⫅̸\x09upseteqq;\x05⫆̸\x08hortmid;\x03∤\x08ubseteq;\x03⊈\x08upseteq;\x03⊉\x06qsube;\x03⋢\x06qsupe;\x03⋣\x06ubset;\x06⊂⃒\x06ucceq;\x05⪰̸\x06upset;\x06⊃⃒\x05ccue;\x03⋡\x05imeq;\x03≄\x04ime;\x03≄\x04mid;\x03∤\x04par;\x03∦\x04ubE;\x05⫅̸\x04ube;\x03⊈\x04ucc;\x03⊁\x04upE;\x05⫆̸\x04upe;\x03⊉\x03ce;\x05⪰̸\x03cr;\x04𝓃\x03im;\x03≁\x03ub;\x03⊄\x03up;\x03⊅\x02c;\x03⊁", + // ntrianglerighteq;[⋭] ntrianglelefteq;[⋬] ntriangleright;[⋫] ntriangleleft;[⋪] ntilde;[ñ] ntilde[ñ] ntgl;[≹] ntlg;[≸]. + "\x0frianglerighteq;\x03⋭\x0erianglelefteq;\x03⋬\x0driangleright;\x03⋫\x0criangleleft;\x03⋪\x05ilde;\x02ñ\x04ilde\x02ñ\x03gl;\x03≹\x03lg;\x03≸", + // numero;[№] numsp;[ ] num;[#] nu;[ν]. + "\x05mero;\x03№\x04msp;\x03 \x02m;\x01#\x01;\x02ν", + // nvinfin;[⧞] nvltrie;[⊴⃒] nvrtrie;[⊵⃒] nvDash;[⊭] nvHarr;[⤄] nvdash;[⊬] nvlArr;[⤂] nvrArr;[⤃] nvsim;[∼⃒] nvap;[≍⃒] nvge;[≥⃒] nvgt;[>⃒] nvle;[≤⃒] nvlt;[<⃒]. + "\x06infin;\x03⧞\x06ltrie;\x06⊴⃒\x06rtrie;\x06⊵⃒\x05Dash;\x03⊭\x05Harr;\x03⤄\x05dash;\x03⊬\x05lArr;\x03⤂\x05rArr;\x03⤃\x04sim;\x06∼⃒\x03ap;\x06≍⃒\x03ge;\x06≥⃒\x03gt;\x04>⃒\x03le;\x06≤⃒\x03lt;\x04<⃒", + // nwarrow;[↖] nwarhk;[⤣] nwnear;[⤧] nwArr;[⇖] nwarr;[↖]. + "\x06arrow;\x03↖\x05arhk;\x03⤣\x05near;\x03⤧\x04Arr;\x03⇖\x04arr;\x03↖", + // oS;[Ⓢ]. + "\x01;\x03Ⓢ", + // oacute;[ó] oacute[ó] oast;[⊛]. + "\x05cute;\x02ó\x04cute\x02ó\x03st;\x03⊛", + // ocirc;[ô] ocir;[⊚] ocirc[ô] ocy;[о]. + "\x04irc;\x02ô\x03ir;\x03⊚\x03irc\x02ô\x02y;\x02о", + // odblac;[ő] odsold;[⦼] odash;[⊝] odiv;[⨸] odot;[⊙]. + "\x05blac;\x02ő\x05sold;\x03⦼\x04ash;\x03⊝\x03iv;\x03⨸\x03ot;\x03⊙", + // oelig;[œ]. + "\x04lig;\x02œ", + // ofcir;[⦿] ofr;[𝔬]. + "\x04cir;\x03⦿\x02r;\x04𝔬", + // ograve;[ò] ograve[ò] ogon;[˛] ogt;[⧁]. + "\x05rave;\x02ò\x04rave\x02ò\x03on;\x02˛\x02t;\x03⧁", + // ohbar;[⦵] ohm;[Ω]. + "\x04bar;\x03⦵\x02m;\x02Ω", + // oint;[∮]. + "\x03nt;\x03∮", + // olcross;[⦻] olarr;[↺] olcir;[⦾] oline;[‾] olt;[⧀]. + "\x06cross;\x03⦻\x04arr;\x03↺\x04cir;\x03⦾\x04ine;\x03‾\x02t;\x03⧀", + // omicron;[ο] ominus;[⊖] omacr;[ō] omega;[ω] omid;[⦶]. + "\x06icron;\x02ο\x05inus;\x03⊖\x04acr;\x02ō\x04ega;\x02ω\x03id;\x03⦶", + // oopf;[𝕠]. + "\x03pf;\x04𝕠", + // operp;[⦹] oplus;[⊕] opar;[⦷]. + "\x04erp;\x03⦹\x04lus;\x03⊕\x03ar;\x03⦷", + // orderof;[ℴ] orslope;[⩗] origof;[⊶] orarr;[↻] order;[ℴ] ordf;[ª] ordm;[º] oror;[⩖] ord;[⩝] ordf[ª] ordm[º] orv;[⩛] or;[∨]. + "\x06derof;\x03ℴ\x06slope;\x03⩗\x05igof;\x03⊶\x04arr;\x03↻\x04der;\x03ℴ\x03df;\x02ª\x03dm;\x02º\x03or;\x03⩖\x02d;\x03⩝\x02df\x02ª\x02dm\x02º\x02v;\x03⩛\x01;\x03∨", + // oslash;[ø] oslash[ø] oscr;[ℴ] osol;[⊘]. + "\x05lash;\x02ø\x04lash\x02ø\x03cr;\x03ℴ\x03ol;\x03⊘", + // otimesas;[⨶] otilde;[õ] otimes;[⊗] otilde[õ]. + "\x07imesas;\x03⨶\x05ilde;\x02õ\x05imes;\x03⊗\x04ilde\x02õ", + // ouml;[ö] ouml[ö]. + "\x03ml;\x02ö\x02ml\x02ö", + // ovbar;[⌽]. + "\x04bar;\x03⌽", + // parallel;[∥] parsim;[⫳] parsl;[⫽] para;[¶] part;[∂] par;[∥] para[¶]. + "\x07rallel;\x03∥\x05rsim;\x03⫳\x04rsl;\x03⫽\x03ra;\x02¶\x03rt;\x03∂\x02r;\x03∥\x02ra\x02¶", + // pcy;[п]. + "\x02y;\x02п", + // pertenk;[‱] percnt;[%] period;[.] permil;[‰] perp;[⊥]. + "\x06rtenk;\x03‱\x05rcnt;\x01%\x05riod;\x01.\x05rmil;\x03‰\x03rp;\x03⊥", + // pfr;[𝔭]. + "\x02r;\x04𝔭", + // phmmat;[ℳ] phone;[☎] phiv;[ϕ] phi;[φ]. + "\x05mmat;\x03ℳ\x04one;\x03☎\x03iv;\x02ϕ\x02i;\x02φ", + // pitchfork;[⋔] piv;[ϖ] pi;[π]. + "\x08tchfork;\x03⋔\x02v;\x02ϖ\x01;\x02π", + // plusacir;[⨣] planckh;[ℎ] pluscir;[⨢] plussim;[⨦] plustwo;[⨧] planck;[ℏ] plankv;[ℏ] plusdo;[∔] plusdu;[⨥] plusmn;[±] plusb;[⊞] pluse;[⩲] plusmn[±] plus;[+]. + "\x07usacir;\x03⨣\x06anckh;\x03ℎ\x06uscir;\x03⨢\x06ussim;\x03⨦\x06ustwo;\x03⨧\x05anck;\x03ℏ\x05ankv;\x03ℏ\x05usdo;\x03∔\x05usdu;\x03⨥\x05usmn;\x02±\x04usb;\x03⊞\x04use;\x03⩲\x04usmn\x02±\x03us;\x01+", + // pm;[±]. + "\x01;\x02±", + // pointint;[⨕] pound;[£] popf;[𝕡] pound[£]. + "\x07intint;\x03⨕\x04und;\x02£\x03pf;\x04𝕡\x03und\x02£", + // preccurlyeq;[≼] precnapprox;[⪹] precapprox;[⪷] precneqq;[⪵] precnsim;[⋨] profalar;[⌮] profline;[⌒] profsurf;[⌓] precsim;[≾] preceq;[⪯] primes;[ℙ] prnsim;[⋨] propto;[∝] prurel;[⊰] prcue;[≼] prime;[′] prnap;[⪹] prsim;[≾] prap;[⪷] prec;[≺] prnE;[⪵] prod;[∏] prop;[∝] prE;[⪳] pre;[⪯] pr;[≺]. + "\x0aeccurlyeq;\x03≼\x0aecnapprox;\x03⪹\x09ecapprox;\x03⪷\x07ecneqq;\x03⪵\x07ecnsim;\x03⋨\x07ofalar;\x03⌮\x07ofline;\x03⌒\x07ofsurf;\x03⌓\x06ecsim;\x03≾\x05eceq;\x03⪯\x05imes;\x03ℙ\x05nsim;\x03⋨\x05opto;\x03∝\x05urel;\x03⊰\x04cue;\x03≼\x04ime;\x03′\x04nap;\x03⪹\x04sim;\x03≾\x03ap;\x03⪷\x03ec;\x03≺\x03nE;\x03⪵\x03od;\x03∏\x03op;\x03∝\x02E;\x03⪳\x02e;\x03⪯\x01;\x03≺", + // pscr;[𝓅] psi;[ψ]. + "\x03cr;\x04𝓅\x02i;\x02ψ", + // puncsp;[ ]. + "\x05ncsp;\x03 ", + // qfr;[𝔮]. + "\x02r;\x04𝔮", + // qint;[⨌]. + "\x03nt;\x03⨌", + // qopf;[𝕢]. + "\x03pf;\x04𝕢", + // qprime;[⁗]. + "\x05rime;\x03⁗", + // qscr;[𝓆]. + "\x03cr;\x04𝓆", + // quaternions;[ℍ] quatint;[⨖] questeq;[≟] quest;[?] quot;[\"] quot[\"]. + "\x0aaternions;\x03ℍ\x06atint;\x03⨖\x06esteq;\x03≟\x04est;\x01?\x03ot;\x01\"\x02ot\x01\"", + // rAtail;[⤜] rAarr;[⇛] rArr;[⇒]. + "\x05tail;\x03⤜\x04arr;\x03⇛\x03rr;\x03⇒", + // rBarr;[⤏]. + "\x04arr;\x03⤏", + // rHar;[⥤]. + "\x03ar;\x03⥤", + // rationals;[ℚ] raemptyv;[⦳] rarrbfs;[⤠] rarrsim;[⥴] racute;[ŕ] rangle;[⟩] rarrap;[⥵] rarrfs;[⤞] rarrhk;[↪] rarrlp;[↬] rarrpl;[⥅] rarrtl;[↣] ratail;[⤚] radic;[√] rangd;[⦒] range;[⦥] raquo;[»] rarrb;[⇥] rarrc;[⤳] rarrw;[↝] ratio;[∶] race;[∽̱] rang;[⟩] raquo[»] rarr;[→]. + "\x08tionals;\x03ℚ\x07emptyv;\x03⦳\x06rrbfs;\x03⤠\x06rrsim;\x03⥴\x05cute;\x02ŕ\x05ngle;\x03⟩\x05rrap;\x03⥵\x05rrfs;\x03⤞\x05rrhk;\x03↪\x05rrlp;\x03↬\x05rrpl;\x03⥅\x05rrtl;\x03↣\x05tail;\x03⤚\x04dic;\x03√\x04ngd;\x03⦒\x04nge;\x03⦥\x04quo;\x02»\x04rrb;\x03⇥\x04rrc;\x03⤳\x04rrw;\x03↝\x04tio;\x03∶\x03ce;\x05∽̱\x03ng;\x03⟩\x03quo\x02»\x03rr;\x03→", + // rbrksld;[⦎] rbrkslu;[⦐] rbrace;[}] rbrack;[]] rbarr;[⤍] rbbrk;[❳] rbrke;[⦌]. + "\x06rksld;\x03⦎\x06rkslu;\x03⦐\x05race;\x01}\x05rack;\x01]\x04arr;\x03⤍\x04brk;\x03❳\x04rke;\x03⦌", + // rcaron;[ř] rcedil;[ŗ] rceil;[⌉] rcub;[}] rcy;[р]. + "\x05aron;\x02ř\x05edil;\x02ŗ\x04eil;\x03⌉\x03ub;\x01}\x02y;\x02р", + // rdldhar;[⥩] rdquor;[”] rdquo;[”] rdca;[⤷] rdsh;[↳]. + "\x06ldhar;\x03⥩\x05quor;\x03”\x04quo;\x03”\x03ca;\x03⤷\x03sh;\x03↳", + // realpart;[ℜ] realine;[ℛ] reals;[ℝ] real;[ℜ] rect;[▭] reg;[®] reg[®]. + "\x07alpart;\x03ℜ\x06aline;\x03ℛ\x04als;\x03ℝ\x03al;\x03ℜ\x03ct;\x03▭\x02g;\x02®\x01g\x02®", + // rfisht;[⥽] rfloor;[⌋] rfr;[𝔯]. + "\x05isht;\x03⥽\x05loor;\x03⌋\x02r;\x04𝔯", + // rharul;[⥬] rhard;[⇁] rharu;[⇀] rhov;[ϱ] rho;[ρ]. + "\x05arul;\x03⥬\x04ard;\x03⇁\x04aru;\x03⇀\x03ov;\x02ϱ\x02o;\x02ρ", + // rightleftharpoons;[⇌] rightharpoondown;[⇁] rightrightarrows;[⇉] rightleftarrows;[⇄] rightsquigarrow;[↝] rightthreetimes;[⋌] rightarrowtail;[↣] rightharpoonup;[⇀] risingdotseq;[≓] rightarrow;[→] ring;[˚]. + "\x10ghtleftharpoons;\x03⇌\x0fghtharpoondown;\x03⇁\x0fghtrightarrows;\x03⇉\x0eghtleftarrows;\x03⇄\x0eghtsquigarrow;\x03↝\x0eghtthreetimes;\x03⋌\x0dghtarrowtail;\x03↣\x0dghtharpoonup;\x03⇀\x0bsingdotseq;\x03≓\x09ghtarrow;\x03→\x03ng;\x02˚", + // rlarr;[⇄] rlhar;[⇌] rlm;[‏]. + "\x04arr;\x03⇄\x04har;\x03⇌\x02m;\x03‏", + // rmoustache;[⎱] rmoust;[⎱]. + "\x09oustache;\x03⎱\x05oust;\x03⎱", + // rnmid;[⫮]. + "\x04mid;\x03⫮", + // rotimes;[⨵] roplus;[⨮] roang;[⟭] roarr;[⇾] robrk;[⟧] ropar;[⦆] ropf;[𝕣]. + "\x06times;\x03⨵\x05plus;\x03⨮\x04ang;\x03⟭\x04arr;\x03⇾\x04brk;\x03⟧\x04par;\x03⦆\x03pf;\x04𝕣", + // rppolint;[⨒] rpargt;[⦔] rpar;[)]. + "\x07polint;\x03⨒\x05argt;\x03⦔\x03ar;\x01)", + // rrarr;[⇉]. + "\x04arr;\x03⇉", + // rsaquo;[›] rsquor;[’] rsquo;[’] rscr;[𝓇] rsqb;[]] rsh;[↱]. + "\x05aquo;\x03›\x05quor;\x03’\x04quo;\x03’\x03cr;\x04𝓇\x03qb;\x01]\x02h;\x03↱", + // rtriltri;[⧎] rthree;[⋌] rtimes;[⋊] rtrie;[⊵] rtrif;[▸] rtri;[▹]. + "\x07riltri;\x03⧎\x05hree;\x03⋌\x05imes;\x03⋊\x04rie;\x03⊵\x04rif;\x03▸\x03ri;\x03▹", + // ruluhar;[⥨]. + "\x06luhar;\x03⥨", + // rx;[℞]. + "\x01;\x03℞", + // sacute;[ś]. + "\x05cute;\x02ś", + // sbquo;[‚]. + "\x04quo;\x03‚", + // scpolint;[⨓] scaron;[š] scedil;[ş] scnsim;[⋩] sccue;[≽] scirc;[ŝ] scnap;[⪺] scsim;[≿] scap;[⪸] scnE;[⪶] scE;[⪴] sce;[⪰] scy;[с] sc;[≻]. + "\x07polint;\x03⨓\x05aron;\x02š\x05edil;\x02ş\x05nsim;\x03⋩\x04cue;\x03≽\x04irc;\x02ŝ\x04nap;\x03⪺\x04sim;\x03≿\x03ap;\x03⪸\x03nE;\x03⪶\x02E;\x03⪴\x02e;\x03⪰\x02y;\x02с\x01;\x03≻", + // sdotb;[⊡] sdote;[⩦] sdot;[⋅]. + "\x04otb;\x03⊡\x04ote;\x03⩦\x03ot;\x03⋅", + // setminus;[∖] searrow;[↘] searhk;[⤥] seswar;[⤩] seArr;[⇘] searr;[↘] setmn;[∖] sect;[§] semi;[;] sext;[✶] sect[§]. + "\x07tminus;\x03∖\x06arrow;\x03↘\x05arhk;\x03⤥\x05swar;\x03⤩\x04Arr;\x03⇘\x04arr;\x03↘\x04tmn;\x03∖\x03ct;\x02§\x03mi;\x01;\x03xt;\x03✶\x02ct\x02§", + // sfrown;[⌢] sfr;[𝔰]. + "\x05rown;\x03⌢\x02r;\x04𝔰", + // shortparallel;[∥] shortmid;[∣] shchcy;[щ] sharp;[♯] shcy;[ш] shy;[­] shy[­]. + "\x0cortparallel;\x03∥\x07ortmid;\x03∣\x05chcy;\x02щ\x04arp;\x03♯\x03cy;\x02ш\x02y;\x02­\x01y\x02­", + // simplus;[⨤] simrarr;[⥲] sigmaf;[ς] sigmav;[ς] simdot;[⩪] sigma;[σ] simeq;[≃] simgE;[⪠] simlE;[⪟] simne;[≆] sime;[≃] simg;[⪞] siml;[⪝] sim;[∼]. + "\x06mplus;\x03⨤\x06mrarr;\x03⥲\x05gmaf;\x02ς\x05gmav;\x02ς\x05mdot;\x03⩪\x04gma;\x02σ\x04meq;\x03≃\x04mgE;\x03⪠\x04mlE;\x03⪟\x04mne;\x03≆\x03me;\x03≃\x03mg;\x03⪞\x03ml;\x03⪝\x02m;\x03∼", + // slarr;[←]. + "\x04arr;\x03←", + // smallsetminus;[∖] smeparsl;[⧤] smashp;[⨳] smile;[⌣] smtes;[⪬︀] smid;[∣] smte;[⪬] smt;[⪪]. + "\x0callsetminus;\x03∖\x07eparsl;\x03⧤\x05ashp;\x03⨳\x04ile;\x03⌣\x04tes;\x06⪬︀\x03id;\x03∣\x03te;\x03⪬\x02t;\x03⪪", + // softcy;[ь] solbar;[⌿] solb;[⧄] sopf;[𝕤] sol;[/]. + "\x05ftcy;\x02ь\x05lbar;\x03⌿\x03lb;\x03⧄\x03pf;\x04𝕤\x02l;\x01/", + // spadesuit;[♠] spades;[♠] spar;[∥]. + "\x08adesuit;\x03♠\x05ades;\x03♠\x03ar;\x03∥", + // sqsubseteq;[⊑] sqsupseteq;[⊒] sqsubset;[⊏] sqsupset;[⊐] sqcaps;[⊓︀] sqcups;[⊔︀] sqsube;[⊑] sqsupe;[⊒] square;[□] squarf;[▪] sqcap;[⊓] sqcup;[⊔] sqsub;[⊏] sqsup;[⊐] squf;[▪] squ;[□]. + "\x09subseteq;\x03⊑\x09supseteq;\x03⊒\x07subset;\x03⊏\x07supset;\x03⊐\x05caps;\x06⊓︀\x05cups;\x06⊔︀\x05sube;\x03⊑\x05supe;\x03⊒\x05uare;\x03□\x05uarf;\x03▪\x04cap;\x03⊓\x04cup;\x03⊔\x04sub;\x03⊏\x04sup;\x03⊐\x03uf;\x03▪\x02u;\x03□", + // srarr;[→]. + "\x04arr;\x03→", + // ssetmn;[∖] ssmile;[⌣] sstarf;[⋆] sscr;[𝓈]. + "\x05etmn;\x03∖\x05mile;\x03⌣\x05tarf;\x03⋆\x03cr;\x04𝓈", + // straightepsilon;[ϵ] straightphi;[ϕ] starf;[★] strns;[¯] star;[☆]. + "\x0eraightepsilon;\x02ϵ\x0araightphi;\x02ϕ\x04arf;\x03★\x04rns;\x02¯\x03ar;\x03☆", + // succcurlyeq;[≽] succnapprox;[⪺] subsetneqq;[⫋] succapprox;[⪸] supsetneqq;[⫌] subseteqq;[⫅] subsetneq;[⊊] supseteqq;[⫆] supsetneq;[⊋] subseteq;[⊆] succneqq;[⪶] succnsim;[⋩] supseteq;[⊇] subedot;[⫃] submult;[⫁] subplus;[⪿] subrarr;[⥹] succsim;[≿] supdsub;[⫘] supedot;[⫄] suphsol;[⟉] suphsub;[⫗] suplarr;[⥻] supmult;[⫂] supplus;[⫀] subdot;[⪽] subset;[⊂] subsim;[⫇] subsub;[⫕] subsup;[⫓] succeq;[⪰] supdot;[⪾] supset;[⊃] supsim;[⫈] supsub;[⫔] supsup;[⫖] subnE;[⫋] subne;[⊊] supnE;[⫌] supne;[⊋] subE;[⫅] sube;[⊆] succ;[≻] sung;[♪] sup1;[¹] sup2;[²] sup3;[³] supE;[⫆] supe;[⊇] sub;[⊂] sum;[∑] sup1[¹] sup2[²] sup3[³] sup;[⊃]. + "\x0acccurlyeq;\x03≽\x0accnapprox;\x03⪺\x09bsetneqq;\x03⫋\x09ccapprox;\x03⪸\x09psetneqq;\x03⫌\x08bseteqq;\x03⫅\x08bsetneq;\x03⊊\x08pseteqq;\x03⫆\x08psetneq;\x03⊋\x07bseteq;\x03⊆\x07ccneqq;\x03⪶\x07ccnsim;\x03⋩\x07pseteq;\x03⊇\x06bedot;\x03⫃\x06bmult;\x03⫁\x06bplus;\x03⪿\x06brarr;\x03⥹\x06ccsim;\x03≿\x06pdsub;\x03⫘\x06pedot;\x03⫄\x06phsol;\x03⟉\x06phsub;\x03⫗\x06plarr;\x03⥻\x06pmult;\x03⫂\x06pplus;\x03⫀\x05bdot;\x03⪽\x05bset;\x03⊂\x05bsim;\x03⫇\x05bsub;\x03⫕\x05bsup;\x03⫓\x05cceq;\x03⪰\x05pdot;\x03⪾\x05pset;\x03⊃\x05psim;\x03⫈\x05psub;\x03⫔\x05psup;\x03⫖\x04bnE;\x03⫋\x04bne;\x03⊊\x04pnE;\x03⫌\x04pne;\x03⊋\x03bE;\x03⫅\x03be;\x03⊆\x03cc;\x03≻\x03ng;\x03♪\x03p1;\x02¹\x03p2;\x02²\x03p3;\x02³\x03pE;\x03⫆\x03pe;\x03⊇\x02b;\x03⊂\x02m;\x03∑\x02p1\x02¹\x02p2\x02²\x02p3\x02³\x02p;\x03⊃", + // swarrow;[↙] swarhk;[⤦] swnwar;[⤪] swArr;[⇙] swarr;[↙]. + "\x06arrow;\x03↙\x05arhk;\x03⤦\x05nwar;\x03⤪\x04Arr;\x03⇙\x04arr;\x03↙", + // szlig;[ß] szlig[ß]. + "\x04lig;\x02ß\x03lig\x02ß", + // target;[⌖] tau;[τ]. + "\x05rget;\x03⌖\x02u;\x02τ", + // tbrk;[⎴]. + "\x03rk;\x03⎴", + // tcaron;[ť] tcedil;[ţ] tcy;[т]. + "\x05aron;\x02ť\x05edil;\x02ţ\x02y;\x02т", + // tdot;[⃛]. + "\x03ot;\x03⃛", + // telrec;[⌕]. + "\x05lrec;\x03⌕", + // tfr;[𝔱]. + "\x02r;\x04𝔱", + // thickapprox;[≈] therefore;[∴] thetasym;[ϑ] thicksim;[∼] there4;[∴] thetav;[ϑ] thinsp;[ ] thksim;[∼] theta;[θ] thkap;[≈] thorn;[þ] thorn[þ]. + "\x0aickapprox;\x03≈\x08erefore;\x03∴\x07etasym;\x02ϑ\x07icksim;\x03∼\x05ere4;\x03∴\x05etav;\x02ϑ\x05insp;\x03 \x05ksim;\x03∼\x04eta;\x02θ\x04kap;\x03≈\x04orn;\x02þ\x03orn\x02þ", + // timesbar;[⨱] timesb;[⊠] timesd;[⨰] tilde;[˜] times;[×] times[×] tint;[∭]. + "\x07mesbar;\x03⨱\x05mesb;\x03⊠\x05mesd;\x03⨰\x04lde;\x02˜\x04mes;\x02×\x03mes\x02×\x03nt;\x03∭", + // topfork;[⫚] topbot;[⌶] topcir;[⫱] toea;[⤨] topf;[𝕥] tosa;[⤩] top;[⊤]. + "\x06pfork;\x03⫚\x05pbot;\x03⌶\x05pcir;\x03⫱\x03ea;\x03⤨\x03pf;\x04𝕥\x03sa;\x03⤩\x02p;\x03⊤", + // tprime;[‴]. + "\x05rime;\x03‴", + // trianglerighteq;[⊵] trianglelefteq;[⊴] triangleright;[▹] triangledown;[▿] triangleleft;[◃] triangleq;[≜] triangle;[▵] triminus;[⨺] trpezium;[⏢] triplus;[⨹] tritime;[⨻] tridot;[◬] trade;[™] trisb;[⧍] trie;[≜]. + "\x0eianglerighteq;\x03⊵\x0dianglelefteq;\x03⊴\x0ciangleright;\x03▹\x0biangledown;\x03▿\x0biangleleft;\x03◃\x08iangleq;\x03≜\x07iangle;\x03▵\x07iminus;\x03⨺\x07pezium;\x03⏢\x06iplus;\x03⨹\x06itime;\x03⨻\x05idot;\x03◬\x04ade;\x03™\x04isb;\x03⧍\x03ie;\x03≜", + // tstrok;[ŧ] tshcy;[ћ] tscr;[𝓉] tscy;[ц]. + "\x05trok;\x02ŧ\x04hcy;\x02ћ\x03cr;\x04𝓉\x03cy;\x02ц", + // twoheadrightarrow;[↠] twoheadleftarrow;[↞] twixt;[≬]. + "\x10oheadrightarrow;\x03↠\x0foheadleftarrow;\x03↞\x04ixt;\x03≬", + // uArr;[⇑]. + "\x03rr;\x03⇑", + // uHar;[⥣]. + "\x03ar;\x03⥣", + // uacute;[ú] uacute[ú] uarr;[↑]. + "\x05cute;\x02ú\x04cute\x02ú\x03rr;\x03↑", + // ubreve;[ŭ] ubrcy;[ў]. + "\x05reve;\x02ŭ\x04rcy;\x02ў", + // ucirc;[û] ucirc[û] ucy;[у]. + "\x04irc;\x02û\x03irc\x02û\x02y;\x02у", + // udblac;[ű] udarr;[⇅] udhar;[⥮]. + "\x05blac;\x02ű\x04arr;\x03⇅\x04har;\x03⥮", + // ufisht;[⥾] ufr;[𝔲]. + "\x05isht;\x03⥾\x02r;\x04𝔲", + // ugrave;[ù] ugrave[ù]. + "\x05rave;\x02ù\x04rave\x02ù", + // uharl;[↿] uharr;[↾] uhblk;[▀]. + "\x04arl;\x03↿\x04arr;\x03↾\x04blk;\x03▀", + // ulcorner;[⌜] ulcorn;[⌜] ulcrop;[⌏] ultri;[◸]. + "\x07corner;\x03⌜\x05corn;\x03⌜\x05crop;\x03⌏\x04tri;\x03◸", + // umacr;[ū] uml;[¨] uml[¨]. + "\x04acr;\x02ū\x02l;\x02¨\x01l\x02¨", + // uogon;[ų] uopf;[𝕦]. + "\x04gon;\x02ų\x03pf;\x04𝕦", + // upharpoonright;[↾] upharpoonleft;[↿] updownarrow;[↕] upuparrows;[⇈] uparrow;[↑] upsilon;[υ] uplus;[⊎] upsih;[ϒ] upsi;[υ]. + "\x0dharpoonright;\x03↾\x0charpoonleft;\x03↿\x0adownarrow;\x03↕\x09uparrows;\x03⇈\x06arrow;\x03↑\x06silon;\x02υ\x04lus;\x03⊎\x04sih;\x02ϒ\x03si;\x02υ", + // urcorner;[⌝] urcorn;[⌝] urcrop;[⌎] uring;[ů] urtri;[◹]. + "\x07corner;\x03⌝\x05corn;\x03⌝\x05crop;\x03⌎\x04ing;\x02ů\x04tri;\x03◹", + // uscr;[𝓊]. + "\x03cr;\x04𝓊", + // utilde;[ũ] utdot;[⋰] utrif;[▴] utri;[▵]. + "\x05ilde;\x02ũ\x04dot;\x03⋰\x04rif;\x03▴\x03ri;\x03▵", + // uuarr;[⇈] uuml;[ü] uuml[ü]. + "\x04arr;\x03⇈\x03ml;\x02ü\x02ml\x02ü", + // uwangle;[⦧]. + "\x06angle;\x03⦧", + // vArr;[⇕]. + "\x03rr;\x03⇕", + // vBarv;[⫩] vBar;[⫨]. + "\x04arv;\x03⫩\x03ar;\x03⫨", + // vDash;[⊨]. + "\x04ash;\x03⊨", + // vartriangleright;[⊳] vartriangleleft;[⊲] varsubsetneqq;[⫋︀] varsupsetneqq;[⫌︀] varsubsetneq;[⊊︀] varsupsetneq;[⊋︀] varepsilon;[ϵ] varnothing;[∅] varpropto;[∝] varkappa;[ϰ] varsigma;[ς] vartheta;[ϑ] vangrt;[⦜] varphi;[ϕ] varrho;[ϱ] varpi;[ϖ] varr;[↕]. + "\x0frtriangleright;\x03⊳\x0ertriangleleft;\x03⊲\x0crsubsetneqq;\x06⫋︀\x0crsupsetneqq;\x06⫌︀\x0brsubsetneq;\x06⊊︀\x0brsupsetneq;\x06⊋︀\x09repsilon;\x02ϵ\x09rnothing;\x03∅\x08rpropto;\x03∝\x07rkappa;\x02ϰ\x07rsigma;\x02ς\x07rtheta;\x02ϑ\x05ngrt;\x03⦜\x05rphi;\x02ϕ\x05rrho;\x02ϱ\x04rpi;\x02ϖ\x03rr;\x03↕", + // vcy;[в]. + "\x02y;\x02в", + // vdash;[⊢]. + "\x04ash;\x03⊢", + // veebar;[⊻] vellip;[⋮] verbar;[|] veeeq;[≚] vert;[|] vee;[∨]. + "\x05ebar;\x03⊻\x05llip;\x03⋮\x05rbar;\x01|\x04eeq;\x03≚\x03rt;\x01|\x02e;\x03∨", + // vfr;[𝔳]. + "\x02r;\x04𝔳", + // vltri;[⊲]. + "\x04tri;\x03⊲", + // vnsub;[⊂⃒] vnsup;[⊃⃒]. + "\x04sub;\x06⊂⃒\x04sup;\x06⊃⃒", + // vopf;[𝕧]. + "\x03pf;\x04𝕧", + // vprop;[∝]. + "\x04rop;\x03∝", + // vrtri;[⊳]. + "\x04tri;\x03⊳", + // vsubnE;[⫋︀] vsubne;[⊊︀] vsupnE;[⫌︀] vsupne;[⊋︀] vscr;[𝓋]. + "\x05ubnE;\x06⫋︀\x05ubne;\x06⊊︀\x05upnE;\x06⫌︀\x05upne;\x06⊋︀\x03cr;\x04𝓋", + // vzigzag;[⦚]. + "\x06igzag;\x03⦚", + // wcirc;[ŵ]. + "\x04irc;\x02ŵ", + // wedbar;[⩟] wedgeq;[≙] weierp;[℘] wedge;[∧]. + "\x05dbar;\x03⩟\x05dgeq;\x03≙\x05ierp;\x03℘\x04dge;\x03∧", + // wfr;[𝔴]. + "\x02r;\x04𝔴", + // wopf;[𝕨]. + "\x03pf;\x04𝕨", + // wp;[℘]. + "\x01;\x03℘", + // wreath;[≀] wr;[≀]. + "\x05eath;\x03≀\x01;\x03≀", + // wscr;[𝓌]. + "\x03cr;\x04𝓌", + // xcirc;[◯] xcap;[⋂] xcup;[⋃]. + "\x04irc;\x03◯\x03ap;\x03⋂\x03up;\x03⋃", + // xdtri;[▽]. + "\x04tri;\x03▽", + // xfr;[𝔵]. + "\x02r;\x04𝔵", + // xhArr;[⟺] xharr;[⟷]. + "\x04Arr;\x03⟺\x04arr;\x03⟷", + // xi;[ξ]. + "\x01;\x02ξ", + // xlArr;[⟸] xlarr;[⟵]. + "\x04Arr;\x03⟸\x04arr;\x03⟵", + // xmap;[⟼]. + "\x03ap;\x03⟼", + // xnis;[⋻]. + "\x03is;\x03⋻", + // xoplus;[⨁] xotime;[⨂] xodot;[⨀] xopf;[𝕩]. + "\x05plus;\x03⨁\x05time;\x03⨂\x04dot;\x03⨀\x03pf;\x04𝕩", + // xrArr;[⟹] xrarr;[⟶]. + "\x04Arr;\x03⟹\x04arr;\x03⟶", + // xsqcup;[⨆] xscr;[𝓍]. + "\x05qcup;\x03⨆\x03cr;\x04𝓍", + // xuplus;[⨄] xutri;[△]. + "\x05plus;\x03⨄\x04tri;\x03△", + // xvee;[⋁]. + "\x03ee;\x03⋁", + // xwedge;[⋀]. + "\x05edge;\x03⋀", + // yacute;[ý] yacute[ý] yacy;[я]. + "\x05cute;\x02ý\x04cute\x02ý\x03cy;\x02я", + // ycirc;[ŷ] ycy;[ы]. + "\x04irc;\x02ŷ\x02y;\x02ы", + // yen;[¥] yen[¥]. + "\x02n;\x02¥\x01n\x02¥", + // yfr;[𝔶]. + "\x02r;\x04𝔶", + // yicy;[ї]. + "\x03cy;\x02ї", + // yopf;[𝕪]. + "\x03pf;\x04𝕪", + // yscr;[𝓎]. + "\x03cr;\x04𝓎", + // yucy;[ю] yuml;[ÿ] yuml[ÿ]. + "\x03cy;\x02ю\x03ml;\x02ÿ\x02ml\x02ÿ", + // zacute;[ź]. + "\x05cute;\x02ź", + // zcaron;[ž] zcy;[з]. + "\x05aron;\x02ž\x02y;\x02з", + // zdot;[ż]. + "\x03ot;\x02ż", + // zeetrf;[ℨ] zeta;[ζ]. + "\x05etrf;\x03ℨ\x03ta;\x02ζ", + // zfr;[𝔷]. + "\x02r;\x04𝔷", + // zhcy;[ж]. + "\x03cy;\x02ж", + // zigrarr;[⇝]. + "\x06grarr;\x03⇝", + // zopf;[𝕫]. + "\x03pf;\x04𝕫", + // zscr;[𝓏]. + "\x03cr;\x04𝓏", + // zwnj;[‌] zwj;[‍]. + "\x03nj;\x03‌\x02j;\x03‍", + ), + "GT\x00LT\x00gt\x00lt\x00", + array( + ">", + "<", + ">", + "<", + ) +); diff --git a/src/wp-settings.php b/src/wp-settings.php index 4d8a35ae8358f..7f04cf76c7701 100644 --- a/src/wp-settings.php +++ b/src/wp-settings.php @@ -108,6 +108,7 @@ // Load early WordPress files. require ABSPATH . WPINC . '/unicode.php'; require ABSPATH . WPINC . '/class-wp-list-util.php'; +require ABSPATH . WPINC . '/class-wp-token-map.php'; require ABSPATH . WPINC . '/formatting.php'; require ABSPATH . WPINC . '/meta.php'; require ABSPATH . WPINC . '/functions.php'; @@ -249,6 +250,7 @@ require ABSPATH . WPINC . '/class-wp-oembed-controller.php'; require ABSPATH . WPINC . '/media.php'; require ABSPATH . WPINC . '/http.php'; +require ABSPATH . WPINC . '/html-api/html5-named-character-references.php'; require ABSPATH . WPINC . '/html-api/class-wp-html-attribute-token.php'; require ABSPATH . WPINC . '/html-api/class-wp-html-span.php'; require ABSPATH . WPINC . '/html-api/class-wp-html-text-replacement.php'; diff --git a/tests/phpunit/data/html5-entities.json b/tests/phpunit/data/html5-entities.json new file mode 100644 index 0000000000000..557170b41f47a --- /dev/null +++ b/tests/phpunit/data/html5-entities.json @@ -0,0 +1,2233 @@ +{ + "Æ": { "codepoints": [198], "characters": "\u00C6" }, + "Æ": { "codepoints": [198], "characters": "\u00C6" }, + "&": { "codepoints": [38], "characters": "\u0026" }, + "&": { "codepoints": [38], "characters": "\u0026" }, + "Á": { "codepoints": [193], "characters": "\u00C1" }, + "Á": { "codepoints": [193], "characters": "\u00C1" }, + "Ă": { "codepoints": [258], "characters": "\u0102" }, + "Â": { "codepoints": [194], "characters": "\u00C2" }, + "Â": { "codepoints": [194], "characters": "\u00C2" }, + "А": { "codepoints": [1040], "characters": "\u0410" }, + "𝔄": { "codepoints": [120068], "characters": "\uD835\uDD04" }, + "À": { "codepoints": [192], "characters": "\u00C0" }, + "À": { "codepoints": [192], "characters": "\u00C0" }, + "Α": { "codepoints": [913], "characters": "\u0391" }, + "Ā": { "codepoints": [256], "characters": "\u0100" }, + "⩓": { "codepoints": [10835], "characters": "\u2A53" }, + "Ą": { "codepoints": [260], "characters": "\u0104" }, + "𝔸": { "codepoints": [120120], "characters": "\uD835\uDD38" }, + "⁡": { "codepoints": [8289], "characters": "\u2061" }, + "Å": { "codepoints": [197], "characters": "\u00C5" }, + "Å": { "codepoints": [197], "characters": "\u00C5" }, + "𝒜": { "codepoints": [119964], "characters": "\uD835\uDC9C" }, + "≔": { "codepoints": [8788], "characters": "\u2254" }, + "Ã": { "codepoints": [195], "characters": "\u00C3" }, + "Ã": { "codepoints": [195], "characters": "\u00C3" }, + "Ä": { "codepoints": [196], "characters": "\u00C4" }, + "Ä": { "codepoints": [196], "characters": "\u00C4" }, + "∖": { "codepoints": [8726], "characters": "\u2216" }, + "⫧": { "codepoints": [10983], "characters": "\u2AE7" }, + "⌆": { "codepoints": [8966], "characters": "\u2306" }, + "Б": { "codepoints": [1041], "characters": "\u0411" }, + "∵": { "codepoints": [8757], "characters": "\u2235" }, + "ℬ": { "codepoints": [8492], "characters": "\u212C" }, + "Β": { "codepoints": [914], "characters": "\u0392" }, + "𝔅": { "codepoints": [120069], "characters": "\uD835\uDD05" }, + "𝔹": { "codepoints": [120121], "characters": "\uD835\uDD39" }, + "˘": { "codepoints": [728], "characters": "\u02D8" }, + "ℬ": { "codepoints": [8492], "characters": "\u212C" }, + "≎": { "codepoints": [8782], "characters": "\u224E" }, + "Ч": { "codepoints": [1063], "characters": "\u0427" }, + "©": { "codepoints": [169], "characters": "\u00A9" }, + "©": { "codepoints": [169], "characters": "\u00A9" }, + "Ć": { "codepoints": [262], "characters": "\u0106" }, + "⋒": { "codepoints": [8914], "characters": "\u22D2" }, + "ⅅ": { "codepoints": [8517], "characters": "\u2145" }, + "ℭ": { "codepoints": [8493], "characters": "\u212D" }, + "Č": { "codepoints": [268], "characters": "\u010C" }, + "Ç": { "codepoints": [199], "characters": "\u00C7" }, + "Ç": { "codepoints": [199], "characters": "\u00C7" }, + "Ĉ": { "codepoints": [264], "characters": "\u0108" }, + "∰": { "codepoints": [8752], "characters": "\u2230" }, + "Ċ": { "codepoints": [266], "characters": "\u010A" }, + "¸": { "codepoints": [184], "characters": "\u00B8" }, + "·": { "codepoints": [183], "characters": "\u00B7" }, + "ℭ": { "codepoints": [8493], "characters": "\u212D" }, + "Χ": { "codepoints": [935], "characters": "\u03A7" }, + "⊙": { "codepoints": [8857], "characters": "\u2299" }, + "⊖": { "codepoints": [8854], "characters": "\u2296" }, + "⊕": { "codepoints": [8853], "characters": "\u2295" }, + "⊗": { "codepoints": [8855], "characters": "\u2297" }, + "∲": { "codepoints": [8754], "characters": "\u2232" }, + "”": { "codepoints": [8221], "characters": "\u201D" }, + "’": { "codepoints": [8217], "characters": "\u2019" }, + "∷": { "codepoints": [8759], "characters": "\u2237" }, + "⩴": { "codepoints": [10868], "characters": "\u2A74" }, + "≡": { "codepoints": [8801], "characters": "\u2261" }, + "∯": { "codepoints": [8751], "characters": "\u222F" }, + "∮": { "codepoints": [8750], "characters": "\u222E" }, + "ℂ": { "codepoints": [8450], "characters": "\u2102" }, + "∐": { "codepoints": [8720], "characters": "\u2210" }, + "∳": { "codepoints": [8755], "characters": "\u2233" }, + "⨯": { "codepoints": [10799], "characters": "\u2A2F" }, + "𝒞": { "codepoints": [119966], "characters": "\uD835\uDC9E" }, + "⋓": { "codepoints": [8915], "characters": "\u22D3" }, + "≍": { "codepoints": [8781], "characters": "\u224D" }, + "ⅅ": { "codepoints": [8517], "characters": "\u2145" }, + "⤑": { "codepoints": [10513], "characters": "\u2911" }, + "Ђ": { "codepoints": [1026], "characters": "\u0402" }, + "Ѕ": { "codepoints": [1029], "characters": "\u0405" }, + "Џ": { "codepoints": [1039], "characters": "\u040F" }, + "‡": { "codepoints": [8225], "characters": "\u2021" }, + "↡": { "codepoints": [8609], "characters": "\u21A1" }, + "⫤": { "codepoints": [10980], "characters": "\u2AE4" }, + "Ď": { "codepoints": [270], "characters": "\u010E" }, + "Д": { "codepoints": [1044], "characters": "\u0414" }, + "∇": { "codepoints": [8711], "characters": "\u2207" }, + "Δ": { "codepoints": [916], "characters": "\u0394" }, + "𝔇": { "codepoints": [120071], "characters": "\uD835\uDD07" }, + "´": { "codepoints": [180], "characters": "\u00B4" }, + "˙": { "codepoints": [729], "characters": "\u02D9" }, + "˝": { "codepoints": [733], "characters": "\u02DD" }, + "`": { "codepoints": [96], "characters": "\u0060" }, + "˜": { "codepoints": [732], "characters": "\u02DC" }, + "⋄": { "codepoints": [8900], "characters": "\u22C4" }, + "ⅆ": { "codepoints": [8518], "characters": "\u2146" }, + "𝔻": { "codepoints": [120123], "characters": "\uD835\uDD3B" }, + "¨": { "codepoints": [168], "characters": "\u00A8" }, + "⃜": { "codepoints": [8412], "characters": "\u20DC" }, + "≐": { "codepoints": [8784], "characters": "\u2250" }, + "∯": { "codepoints": [8751], "characters": "\u222F" }, + "¨": { "codepoints": [168], "characters": "\u00A8" }, + "⇓": { "codepoints": [8659], "characters": "\u21D3" }, + "⇐": { "codepoints": [8656], "characters": "\u21D0" }, + "⇔": { "codepoints": [8660], "characters": "\u21D4" }, + "⫤": { "codepoints": [10980], "characters": "\u2AE4" }, + "⟸": { "codepoints": [10232], "characters": "\u27F8" }, + "⟺": { "codepoints": [10234], "characters": "\u27FA" }, + "⟹": { "codepoints": [10233], "characters": "\u27F9" }, + "⇒": { "codepoints": [8658], "characters": "\u21D2" }, + "⊨": { "codepoints": [8872], "characters": "\u22A8" }, + "⇑": { "codepoints": [8657], "characters": "\u21D1" }, + "⇕": { "codepoints": [8661], "characters": "\u21D5" }, + "∥": { "codepoints": [8741], "characters": "\u2225" }, + "↓": { "codepoints": [8595], "characters": "\u2193" }, + "⤓": { "codepoints": [10515], "characters": "\u2913" }, + "⇵": { "codepoints": [8693], "characters": "\u21F5" }, + "̑": { "codepoints": [785], "characters": "\u0311" }, + "⥐": { "codepoints": [10576], "characters": "\u2950" }, + "⥞": { "codepoints": [10590], "characters": "\u295E" }, + "↽": { "codepoints": [8637], "characters": "\u21BD" }, + "⥖": { "codepoints": [10582], "characters": "\u2956" }, + "⥟": { "codepoints": [10591], "characters": "\u295F" }, + "⇁": { "codepoints": [8641], "characters": "\u21C1" }, + "⥗": { "codepoints": [10583], "characters": "\u2957" }, + "⊤": { "codepoints": [8868], "characters": "\u22A4" }, + "↧": { "codepoints": [8615], "characters": "\u21A7" }, + "⇓": { "codepoints": [8659], "characters": "\u21D3" }, + "𝒟": { "codepoints": [119967], "characters": "\uD835\uDC9F" }, + "Đ": { "codepoints": [272], "characters": "\u0110" }, + "Ŋ": { "codepoints": [330], "characters": "\u014A" }, + "Ð": { "codepoints": [208], "characters": "\u00D0" }, + "Ð": { "codepoints": [208], "characters": "\u00D0" }, + "É": { "codepoints": [201], "characters": "\u00C9" }, + "É": { "codepoints": [201], "characters": "\u00C9" }, + "Ě": { "codepoints": [282], "characters": "\u011A" }, + "Ê": { "codepoints": [202], "characters": "\u00CA" }, + "Ê": { "codepoints": [202], "characters": "\u00CA" }, + "Э": { "codepoints": [1069], "characters": "\u042D" }, + "Ė": { "codepoints": [278], "characters": "\u0116" }, + "𝔈": { "codepoints": [120072], "characters": "\uD835\uDD08" }, + "È": { "codepoints": [200], "characters": "\u00C8" }, + "È": { "codepoints": [200], "characters": "\u00C8" }, + "∈": { "codepoints": [8712], "characters": "\u2208" }, + "Ē": { "codepoints": [274], "characters": "\u0112" }, + "◻": { "codepoints": [9723], "characters": "\u25FB" }, + "▫": { "codepoints": [9643], "characters": "\u25AB" }, + "Ę": { "codepoints": [280], "characters": "\u0118" }, + "𝔼": { "codepoints": [120124], "characters": "\uD835\uDD3C" }, + "Ε": { "codepoints": [917], "characters": "\u0395" }, + "⩵": { "codepoints": [10869], "characters": "\u2A75" }, + "≂": { "codepoints": [8770], "characters": "\u2242" }, + "⇌": { "codepoints": [8652], "characters": "\u21CC" }, + "ℰ": { "codepoints": [8496], "characters": "\u2130" }, + "⩳": { "codepoints": [10867], "characters": "\u2A73" }, + "Η": { "codepoints": [919], "characters": "\u0397" }, + "Ë": { "codepoints": [203], "characters": "\u00CB" }, + "Ë": { "codepoints": [203], "characters": "\u00CB" }, + "∃": { "codepoints": [8707], "characters": "\u2203" }, + "ⅇ": { "codepoints": [8519], "characters": "\u2147" }, + "Ф": { "codepoints": [1060], "characters": "\u0424" }, + "𝔉": { "codepoints": [120073], "characters": "\uD835\uDD09" }, + "◼": { "codepoints": [9724], "characters": "\u25FC" }, + "▪": { "codepoints": [9642], "characters": "\u25AA" }, + "𝔽": { "codepoints": [120125], "characters": "\uD835\uDD3D" }, + "∀": { "codepoints": [8704], "characters": "\u2200" }, + "ℱ": { "codepoints": [8497], "characters": "\u2131" }, + "ℱ": { "codepoints": [8497], "characters": "\u2131" }, + "Ѓ": { "codepoints": [1027], "characters": "\u0403" }, + ">": { "codepoints": [62], "characters": "\u003E" }, + ">": { "codepoints": [62], "characters": "\u003E" }, + "Γ": { "codepoints": [915], "characters": "\u0393" }, + "Ϝ": { "codepoints": [988], "characters": "\u03DC" }, + "Ğ": { "codepoints": [286], "characters": "\u011E" }, + "Ģ": { "codepoints": [290], "characters": "\u0122" }, + "Ĝ": { "codepoints": [284], "characters": "\u011C" }, + "Г": { "codepoints": [1043], "characters": "\u0413" }, + "Ġ": { "codepoints": [288], "characters": "\u0120" }, + "𝔊": { "codepoints": [120074], "characters": "\uD835\uDD0A" }, + "⋙": { "codepoints": [8921], "characters": "\u22D9" }, + "𝔾": { "codepoints": [120126], "characters": "\uD835\uDD3E" }, + "≥": { "codepoints": [8805], "characters": "\u2265" }, + "⋛": { "codepoints": [8923], "characters": "\u22DB" }, + "≧": { "codepoints": [8807], "characters": "\u2267" }, + "⪢": { "codepoints": [10914], "characters": "\u2AA2" }, + "≷": { "codepoints": [8823], "characters": "\u2277" }, + "⩾": { "codepoints": [10878], "characters": "\u2A7E" }, + "≳": { "codepoints": [8819], "characters": "\u2273" }, + "𝒢": { "codepoints": [119970], "characters": "\uD835\uDCA2" }, + "≫": { "codepoints": [8811], "characters": "\u226B" }, + "Ъ": { "codepoints": [1066], "characters": "\u042A" }, + "ˇ": { "codepoints": [711], "characters": "\u02C7" }, + "^": { "codepoints": [94], "characters": "\u005E" }, + "Ĥ": { "codepoints": [292], "characters": "\u0124" }, + "ℌ": { "codepoints": [8460], "characters": "\u210C" }, + "ℋ": { "codepoints": [8459], "characters": "\u210B" }, + "ℍ": { "codepoints": [8461], "characters": "\u210D" }, + "─": { "codepoints": [9472], "characters": "\u2500" }, + "ℋ": { "codepoints": [8459], "characters": "\u210B" }, + "Ħ": { "codepoints": [294], "characters": "\u0126" }, + "≎": { "codepoints": [8782], "characters": "\u224E" }, + "≏": { "codepoints": [8783], "characters": "\u224F" }, + "Е": { "codepoints": [1045], "characters": "\u0415" }, + "IJ": { "codepoints": [306], "characters": "\u0132" }, + "Ё": { "codepoints": [1025], "characters": "\u0401" }, + "Í": { "codepoints": [205], "characters": "\u00CD" }, + "Í": { "codepoints": [205], "characters": "\u00CD" }, + "Î": { "codepoints": [206], "characters": "\u00CE" }, + "Î": { "codepoints": [206], "characters": "\u00CE" }, + "И": { "codepoints": [1048], "characters": "\u0418" }, + "İ": { "codepoints": [304], "characters": "\u0130" }, + "ℑ": { "codepoints": [8465], "characters": "\u2111" }, + "Ì": { "codepoints": [204], "characters": "\u00CC" }, + "Ì": { "codepoints": [204], "characters": "\u00CC" }, + "ℑ": { "codepoints": [8465], "characters": "\u2111" }, + "Ī": { "codepoints": [298], "characters": "\u012A" }, + "ⅈ": { "codepoints": [8520], "characters": "\u2148" }, + "⇒": { "codepoints": [8658], "characters": "\u21D2" }, + "∬": { "codepoints": [8748], "characters": "\u222C" }, + "∫": { "codepoints": [8747], "characters": "\u222B" }, + "⋂": { "codepoints": [8898], "characters": "\u22C2" }, + "⁣": { "codepoints": [8291], "characters": "\u2063" }, + "⁢": { "codepoints": [8290], "characters": "\u2062" }, + "Į": { "codepoints": [302], "characters": "\u012E" }, + "𝕀": { "codepoints": [120128], "characters": "\uD835\uDD40" }, + "Ι": { "codepoints": [921], "characters": "\u0399" }, + "ℐ": { "codepoints": [8464], "characters": "\u2110" }, + "Ĩ": { "codepoints": [296], "characters": "\u0128" }, + "І": { "codepoints": [1030], "characters": "\u0406" }, + "Ï": { "codepoints": [207], "characters": "\u00CF" }, + "Ï": { "codepoints": [207], "characters": "\u00CF" }, + "Ĵ": { "codepoints": [308], "characters": "\u0134" }, + "Й": { "codepoints": [1049], "characters": "\u0419" }, + "𝔍": { "codepoints": [120077], "characters": "\uD835\uDD0D" }, + "𝕁": { "codepoints": [120129], "characters": "\uD835\uDD41" }, + "𝒥": { "codepoints": [119973], "characters": "\uD835\uDCA5" }, + "Ј": { "codepoints": [1032], "characters": "\u0408" }, + "Є": { "codepoints": [1028], "characters": "\u0404" }, + "Х": { "codepoints": [1061], "characters": "\u0425" }, + "Ќ": { "codepoints": [1036], "characters": "\u040C" }, + "Κ": { "codepoints": [922], "characters": "\u039A" }, + "Ķ": { "codepoints": [310], "characters": "\u0136" }, + "К": { "codepoints": [1050], "characters": "\u041A" }, + "𝔎": { "codepoints": [120078], "characters": "\uD835\uDD0E" }, + "𝕂": { "codepoints": [120130], "characters": "\uD835\uDD42" }, + "𝒦": { "codepoints": [119974], "characters": "\uD835\uDCA6" }, + "Љ": { "codepoints": [1033], "characters": "\u0409" }, + "<": { "codepoints": [60], "characters": "\u003C" }, + "<": { "codepoints": [60], "characters": "\u003C" }, + "Ĺ": { "codepoints": [313], "characters": "\u0139" }, + "Λ": { "codepoints": [923], "characters": "\u039B" }, + "⟪": { "codepoints": [10218], "characters": "\u27EA" }, + "ℒ": { "codepoints": [8466], "characters": "\u2112" }, + "↞": { "codepoints": [8606], "characters": "\u219E" }, + "Ľ": { "codepoints": [317], "characters": "\u013D" }, + "Ļ": { "codepoints": [315], "characters": "\u013B" }, + "Л": { "codepoints": [1051], "characters": "\u041B" }, + "⟨": { "codepoints": [10216], "characters": "\u27E8" }, + "←": { "codepoints": [8592], "characters": "\u2190" }, + "⇤": { "codepoints": [8676], "characters": "\u21E4" }, + "⇆": { "codepoints": [8646], "characters": "\u21C6" }, + "⌈": { "codepoints": [8968], "characters": "\u2308" }, + "⟦": { "codepoints": [10214], "characters": "\u27E6" }, + "⥡": { "codepoints": [10593], "characters": "\u2961" }, + "⇃": { "codepoints": [8643], "characters": "\u21C3" }, + "⥙": { "codepoints": [10585], "characters": "\u2959" }, + "⌊": { "codepoints": [8970], "characters": "\u230A" }, + "↔": { "codepoints": [8596], "characters": "\u2194" }, + "⥎": { "codepoints": [10574], "characters": "\u294E" }, + "⊣": { "codepoints": [8867], "characters": "\u22A3" }, + "↤": { "codepoints": [8612], "characters": "\u21A4" }, + "⥚": { "codepoints": [10586], "characters": "\u295A" }, + "⊲": { "codepoints": [8882], "characters": "\u22B2" }, + "⧏": { "codepoints": [10703], "characters": "\u29CF" }, + "⊴": { "codepoints": [8884], "characters": "\u22B4" }, + "⥑": { "codepoints": [10577], "characters": "\u2951" }, + "⥠": { "codepoints": [10592], "characters": "\u2960" }, + "↿": { "codepoints": [8639], "characters": "\u21BF" }, + "⥘": { "codepoints": [10584], "characters": "\u2958" }, + "↼": { "codepoints": [8636], "characters": "\u21BC" }, + "⥒": { "codepoints": [10578], "characters": "\u2952" }, + "⇐": { "codepoints": [8656], "characters": "\u21D0" }, + "⇔": { "codepoints": [8660], "characters": "\u21D4" }, + "⋚": { "codepoints": [8922], "characters": "\u22DA" }, + "≦": { "codepoints": [8806], "characters": "\u2266" }, + "≶": { "codepoints": [8822], "characters": "\u2276" }, + "⪡": { "codepoints": [10913], "characters": "\u2AA1" }, + "⩽": { "codepoints": [10877], "characters": "\u2A7D" }, + "≲": { "codepoints": [8818], "characters": "\u2272" }, + "𝔏": { "codepoints": [120079], "characters": "\uD835\uDD0F" }, + "⋘": { "codepoints": [8920], "characters": "\u22D8" }, + "⇚": { "codepoints": [8666], "characters": "\u21DA" }, + "Ŀ": { "codepoints": [319], "characters": "\u013F" }, + "⟵": { "codepoints": [10229], "characters": "\u27F5" }, + "⟷": { "codepoints": [10231], "characters": "\u27F7" }, + "⟶": { "codepoints": [10230], "characters": "\u27F6" }, + "⟸": { "codepoints": [10232], "characters": "\u27F8" }, + "⟺": { "codepoints": [10234], "characters": "\u27FA" }, + "⟹": { "codepoints": [10233], "characters": "\u27F9" }, + "𝕃": { "codepoints": [120131], "characters": "\uD835\uDD43" }, + "↙": { "codepoints": [8601], "characters": "\u2199" }, + "↘": { "codepoints": [8600], "characters": "\u2198" }, + "ℒ": { "codepoints": [8466], "characters": "\u2112" }, + "↰": { "codepoints": [8624], "characters": "\u21B0" }, + "Ł": { "codepoints": [321], "characters": "\u0141" }, + "≪": { "codepoints": [8810], "characters": "\u226A" }, + "⤅": { "codepoints": [10501], "characters": "\u2905" }, + "М": { "codepoints": [1052], "characters": "\u041C" }, + " ": { "codepoints": [8287], "characters": "\u205F" }, + "ℳ": { "codepoints": [8499], "characters": "\u2133" }, + "𝔐": { "codepoints": [120080], "characters": "\uD835\uDD10" }, + "∓": { "codepoints": [8723], "characters": "\u2213" }, + "𝕄": { "codepoints": [120132], "characters": "\uD835\uDD44" }, + "ℳ": { "codepoints": [8499], "characters": "\u2133" }, + "Μ": { "codepoints": [924], "characters": "\u039C" }, + "Њ": { "codepoints": [1034], "characters": "\u040A" }, + "Ń": { "codepoints": [323], "characters": "\u0143" }, + "Ň": { "codepoints": [327], "characters": "\u0147" }, + "Ņ": { "codepoints": [325], "characters": "\u0145" }, + "Н": { "codepoints": [1053], "characters": "\u041D" }, + "​": { "codepoints": [8203], "characters": "\u200B" }, + "​": { "codepoints": [8203], "characters": "\u200B" }, + "​": { "codepoints": [8203], "characters": "\u200B" }, + "​": { "codepoints": [8203], "characters": "\u200B" }, + "≫": { "codepoints": [8811], "characters": "\u226B" }, + "≪": { "codepoints": [8810], "characters": "\u226A" }, + " ": { "codepoints": [10], "characters": "\u000A" }, + "𝔑": { "codepoints": [120081], "characters": "\uD835\uDD11" }, + "⁠": { "codepoints": [8288], "characters": "\u2060" }, + " ": { "codepoints": [160], "characters": "\u00A0" }, + "ℕ": { "codepoints": [8469], "characters": "\u2115" }, + "⫬": { "codepoints": [10988], "characters": "\u2AEC" }, + "≢": { "codepoints": [8802], "characters": "\u2262" }, + "≭": { "codepoints": [8813], "characters": "\u226D" }, + "∦": { "codepoints": [8742], "characters": "\u2226" }, + "∉": { "codepoints": [8713], "characters": "\u2209" }, + "≠": { "codepoints": [8800], "characters": "\u2260" }, + "≂̸": { "codepoints": [8770, 824], "characters": "\u2242\u0338" }, + "∄": { "codepoints": [8708], "characters": "\u2204" }, + "≯": { "codepoints": [8815], "characters": "\u226F" }, + "≱": { "codepoints": [8817], "characters": "\u2271" }, + "≧̸": { "codepoints": [8807, 824], "characters": "\u2267\u0338" }, + "≫̸": { "codepoints": [8811, 824], "characters": "\u226B\u0338" }, + "≹": { "codepoints": [8825], "characters": "\u2279" }, + "⩾̸": { "codepoints": [10878, 824], "characters": "\u2A7E\u0338" }, + "≵": { "codepoints": [8821], "characters": "\u2275" }, + "≎̸": { "codepoints": [8782, 824], "characters": "\u224E\u0338" }, + "≏̸": { "codepoints": [8783, 824], "characters": "\u224F\u0338" }, + "⋪": { "codepoints": [8938], "characters": "\u22EA" }, + "⧏̸": { "codepoints": [10703, 824], "characters": "\u29CF\u0338" }, + "⋬": { "codepoints": [8940], "characters": "\u22EC" }, + "≮": { "codepoints": [8814], "characters": "\u226E" }, + "≰": { "codepoints": [8816], "characters": "\u2270" }, + "≸": { "codepoints": [8824], "characters": "\u2278" }, + "≪̸": { "codepoints": [8810, 824], "characters": "\u226A\u0338" }, + "⩽̸": { "codepoints": [10877, 824], "characters": "\u2A7D\u0338" }, + "≴": { "codepoints": [8820], "characters": "\u2274" }, + "⪢̸": { "codepoints": [10914, 824], "characters": "\u2AA2\u0338" }, + "⪡̸": { "codepoints": [10913, 824], "characters": "\u2AA1\u0338" }, + "⊀": { "codepoints": [8832], "characters": "\u2280" }, + "⪯̸": { "codepoints": [10927, 824], "characters": "\u2AAF\u0338" }, + "⋠": { "codepoints": [8928], "characters": "\u22E0" }, + "∌": { "codepoints": [8716], "characters": "\u220C" }, + "⋫": { "codepoints": [8939], "characters": "\u22EB" }, + "⧐̸": { "codepoints": [10704, 824], "characters": "\u29D0\u0338" }, + "⋭": { "codepoints": [8941], "characters": "\u22ED" }, + "⊏̸": { "codepoints": [8847, 824], "characters": "\u228F\u0338" }, + "⋢": { "codepoints": [8930], "characters": "\u22E2" }, + "⊐̸": { "codepoints": [8848, 824], "characters": "\u2290\u0338" }, + "⋣": { "codepoints": [8931], "characters": "\u22E3" }, + "⊂⃒": { "codepoints": [8834, 8402], "characters": "\u2282\u20D2" }, + "⊈": { "codepoints": [8840], "characters": "\u2288" }, + "⊁": { "codepoints": [8833], "characters": "\u2281" }, + "⪰̸": { "codepoints": [10928, 824], "characters": "\u2AB0\u0338" }, + "⋡": { "codepoints": [8929], "characters": "\u22E1" }, + "≿̸": { "codepoints": [8831, 824], "characters": "\u227F\u0338" }, + "⊃⃒": { "codepoints": [8835, 8402], "characters": "\u2283\u20D2" }, + "⊉": { "codepoints": [8841], "characters": "\u2289" }, + "≁": { "codepoints": [8769], "characters": "\u2241" }, + "≄": { "codepoints": [8772], "characters": "\u2244" }, + "≇": { "codepoints": [8775], "characters": "\u2247" }, + "≉": { "codepoints": [8777], "characters": "\u2249" }, + "∤": { "codepoints": [8740], "characters": "\u2224" }, + "𝒩": { "codepoints": [119977], "characters": "\uD835\uDCA9" }, + "Ñ": { "codepoints": [209], "characters": "\u00D1" }, + "Ñ": { "codepoints": [209], "characters": "\u00D1" }, + "Ν": { "codepoints": [925], "characters": "\u039D" }, + "Œ": { "codepoints": [338], "characters": "\u0152" }, + "Ó": { "codepoints": [211], "characters": "\u00D3" }, + "Ó": { "codepoints": [211], "characters": "\u00D3" }, + "Ô": { "codepoints": [212], "characters": "\u00D4" }, + "Ô": { "codepoints": [212], "characters": "\u00D4" }, + "О": { "codepoints": [1054], "characters": "\u041E" }, + "Ő": { "codepoints": [336], "characters": "\u0150" }, + "𝔒": { "codepoints": [120082], "characters": "\uD835\uDD12" }, + "Ò": { "codepoints": [210], "characters": "\u00D2" }, + "Ò": { "codepoints": [210], "characters": "\u00D2" }, + "Ō": { "codepoints": [332], "characters": "\u014C" }, + "Ω": { "codepoints": [937], "characters": "\u03A9" }, + "Ο": { "codepoints": [927], "characters": "\u039F" }, + "𝕆": { "codepoints": [120134], "characters": "\uD835\uDD46" }, + "“": { "codepoints": [8220], "characters": "\u201C" }, + "‘": { "codepoints": [8216], "characters": "\u2018" }, + "⩔": { "codepoints": [10836], "characters": "\u2A54" }, + "𝒪": { "codepoints": [119978], "characters": "\uD835\uDCAA" }, + "Ø": { "codepoints": [216], "characters": "\u00D8" }, + "Ø": { "codepoints": [216], "characters": "\u00D8" }, + "Õ": { "codepoints": [213], "characters": "\u00D5" }, + "Õ": { "codepoints": [213], "characters": "\u00D5" }, + "⨷": { "codepoints": [10807], "characters": "\u2A37" }, + "Ö": { "codepoints": [214], "characters": "\u00D6" }, + "Ö": { "codepoints": [214], "characters": "\u00D6" }, + "‾": { "codepoints": [8254], "characters": "\u203E" }, + "⏞": { "codepoints": [9182], "characters": "\u23DE" }, + "⎴": { "codepoints": [9140], "characters": "\u23B4" }, + "⏜": { "codepoints": [9180], "characters": "\u23DC" }, + "∂": { "codepoints": [8706], "characters": "\u2202" }, + "П": { "codepoints": [1055], "characters": "\u041F" }, + "𝔓": { "codepoints": [120083], "characters": "\uD835\uDD13" }, + "Φ": { "codepoints": [934], "characters": "\u03A6" }, + "Π": { "codepoints": [928], "characters": "\u03A0" }, + "±": { "codepoints": [177], "characters": "\u00B1" }, + "ℌ": { "codepoints": [8460], "characters": "\u210C" }, + "ℙ": { "codepoints": [8473], "characters": "\u2119" }, + "⪻": { "codepoints": [10939], "characters": "\u2ABB" }, + "≺": { "codepoints": [8826], "characters": "\u227A" }, + "⪯": { "codepoints": [10927], "characters": "\u2AAF" }, + "≼": { "codepoints": [8828], "characters": "\u227C" }, + "≾": { "codepoints": [8830], "characters": "\u227E" }, + "″": { "codepoints": [8243], "characters": "\u2033" }, + "∏": { "codepoints": [8719], "characters": "\u220F" }, + "∷": { "codepoints": [8759], "characters": "\u2237" }, + "∝": { "codepoints": [8733], "characters": "\u221D" }, + "𝒫": { "codepoints": [119979], "characters": "\uD835\uDCAB" }, + "Ψ": { "codepoints": [936], "characters": "\u03A8" }, + """: { "codepoints": [34], "characters": "\u0022" }, + """: { "codepoints": [34], "characters": "\u0022" }, + "𝔔": { "codepoints": [120084], "characters": "\uD835\uDD14" }, + "ℚ": { "codepoints": [8474], "characters": "\u211A" }, + "𝒬": { "codepoints": [119980], "characters": "\uD835\uDCAC" }, + "⤐": { "codepoints": [10512], "characters": "\u2910" }, + "®": { "codepoints": [174], "characters": "\u00AE" }, + "®": { "codepoints": [174], "characters": "\u00AE" }, + "Ŕ": { "codepoints": [340], "characters": "\u0154" }, + "⟫": { "codepoints": [10219], "characters": "\u27EB" }, + "↠": { "codepoints": [8608], "characters": "\u21A0" }, + "⤖": { "codepoints": [10518], "characters": "\u2916" }, + "Ř": { "codepoints": [344], "characters": "\u0158" }, + "Ŗ": { "codepoints": [342], "characters": "\u0156" }, + "Р": { "codepoints": [1056], "characters": "\u0420" }, + "ℜ": { "codepoints": [8476], "characters": "\u211C" }, + "∋": { "codepoints": [8715], "characters": "\u220B" }, + "⇋": { "codepoints": [8651], "characters": "\u21CB" }, + "⥯": { "codepoints": [10607], "characters": "\u296F" }, + "ℜ": { "codepoints": [8476], "characters": "\u211C" }, + "Ρ": { "codepoints": [929], "characters": "\u03A1" }, + "⟩": { "codepoints": [10217], "characters": "\u27E9" }, + "→": { "codepoints": [8594], "characters": "\u2192" }, + "⇥": { "codepoints": [8677], "characters": "\u21E5" }, + "⇄": { "codepoints": [8644], "characters": "\u21C4" }, + "⌉": { "codepoints": [8969], "characters": "\u2309" }, + "⟧": { "codepoints": [10215], "characters": "\u27E7" }, + "⥝": { "codepoints": [10589], "characters": "\u295D" }, + "⇂": { "codepoints": [8642], "characters": "\u21C2" }, + "⥕": { "codepoints": [10581], "characters": "\u2955" }, + "⌋": { "codepoints": [8971], "characters": "\u230B" }, + "⊢": { "codepoints": [8866], "characters": "\u22A2" }, + "↦": { "codepoints": [8614], "characters": "\u21A6" }, + "⥛": { "codepoints": [10587], "characters": "\u295B" }, + "⊳": { "codepoints": [8883], "characters": "\u22B3" }, + "⧐": { "codepoints": [10704], "characters": "\u29D0" }, + "⊵": { "codepoints": [8885], "characters": "\u22B5" }, + "⥏": { "codepoints": [10575], "characters": "\u294F" }, + "⥜": { "codepoints": [10588], "characters": "\u295C" }, + "↾": { "codepoints": [8638], "characters": "\u21BE" }, + "⥔": { "codepoints": [10580], "characters": "\u2954" }, + "⇀": { "codepoints": [8640], "characters": "\u21C0" }, + "⥓": { "codepoints": [10579], "characters": "\u2953" }, + "⇒": { "codepoints": [8658], "characters": "\u21D2" }, + "ℝ": { "codepoints": [8477], "characters": "\u211D" }, + "⥰": { "codepoints": [10608], "characters": "\u2970" }, + "⇛": { "codepoints": [8667], "characters": "\u21DB" }, + "ℛ": { "codepoints": [8475], "characters": "\u211B" }, + "↱": { "codepoints": [8625], "characters": "\u21B1" }, + "⧴": { "codepoints": [10740], "characters": "\u29F4" }, + "Щ": { "codepoints": [1065], "characters": "\u0429" }, + "Ш": { "codepoints": [1064], "characters": "\u0428" }, + "Ь": { "codepoints": [1068], "characters": "\u042C" }, + "Ś": { "codepoints": [346], "characters": "\u015A" }, + "⪼": { "codepoints": [10940], "characters": "\u2ABC" }, + "Š": { "codepoints": [352], "characters": "\u0160" }, + "Ş": { "codepoints": [350], "characters": "\u015E" }, + "Ŝ": { "codepoints": [348], "characters": "\u015C" }, + "С": { "codepoints": [1057], "characters": "\u0421" }, + "𝔖": { "codepoints": [120086], "characters": "\uD835\uDD16" }, + "↓": { "codepoints": [8595], "characters": "\u2193" }, + "←": { "codepoints": [8592], "characters": "\u2190" }, + "→": { "codepoints": [8594], "characters": "\u2192" }, + "↑": { "codepoints": [8593], "characters": "\u2191" }, + "Σ": { "codepoints": [931], "characters": "\u03A3" }, + "∘": { "codepoints": [8728], "characters": "\u2218" }, + "𝕊": { "codepoints": [120138], "characters": "\uD835\uDD4A" }, + "√": { "codepoints": [8730], "characters": "\u221A" }, + "□": { "codepoints": [9633], "characters": "\u25A1" }, + "⊓": { "codepoints": [8851], "characters": "\u2293" }, + "⊏": { "codepoints": [8847], "characters": "\u228F" }, + "⊑": { "codepoints": [8849], "characters": "\u2291" }, + "⊐": { "codepoints": [8848], "characters": "\u2290" }, + "⊒": { "codepoints": [8850], "characters": "\u2292" }, + "⊔": { "codepoints": [8852], "characters": "\u2294" }, + "𝒮": { "codepoints": [119982], "characters": "\uD835\uDCAE" }, + "⋆": { "codepoints": [8902], "characters": "\u22C6" }, + "⋐": { "codepoints": [8912], "characters": "\u22D0" }, + "⋐": { "codepoints": [8912], "characters": "\u22D0" }, + "⊆": { "codepoints": [8838], "characters": "\u2286" }, + "≻": { "codepoints": [8827], "characters": "\u227B" }, + "⪰": { "codepoints": [10928], "characters": "\u2AB0" }, + "≽": { "codepoints": [8829], "characters": "\u227D" }, + "≿": { "codepoints": [8831], "characters": "\u227F" }, + "∋": { "codepoints": [8715], "characters": "\u220B" }, + "∑": { "codepoints": [8721], "characters": "\u2211" }, + "⋑": { "codepoints": [8913], "characters": "\u22D1" }, + "⊃": { "codepoints": [8835], "characters": "\u2283" }, + "⊇": { "codepoints": [8839], "characters": "\u2287" }, + "⋑": { "codepoints": [8913], "characters": "\u22D1" }, + "Þ": { "codepoints": [222], "characters": "\u00DE" }, + "Þ": { "codepoints": [222], "characters": "\u00DE" }, + "™": { "codepoints": [8482], "characters": "\u2122" }, + "Ћ": { "codepoints": [1035], "characters": "\u040B" }, + "Ц": { "codepoints": [1062], "characters": "\u0426" }, + " ": { "codepoints": [9], "characters": "\u0009" }, + "Τ": { "codepoints": [932], "characters": "\u03A4" }, + "Ť": { "codepoints": [356], "characters": "\u0164" }, + "Ţ": { "codepoints": [354], "characters": "\u0162" }, + "Т": { "codepoints": [1058], "characters": "\u0422" }, + "𝔗": { "codepoints": [120087], "characters": "\uD835\uDD17" }, + "∴": { "codepoints": [8756], "characters": "\u2234" }, + "Θ": { "codepoints": [920], "characters": "\u0398" }, + "  ": { "codepoints": [8287, 8202], "characters": "\u205F\u200A" }, + " ": { "codepoints": [8201], "characters": "\u2009" }, + "∼": { "codepoints": [8764], "characters": "\u223C" }, + "≃": { "codepoints": [8771], "characters": "\u2243" }, + "≅": { "codepoints": [8773], "characters": "\u2245" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "𝕋": { "codepoints": [120139], "characters": "\uD835\uDD4B" }, + "⃛": { "codepoints": [8411], "characters": "\u20DB" }, + "𝒯": { "codepoints": [119983], "characters": "\uD835\uDCAF" }, + "Ŧ": { "codepoints": [358], "characters": "\u0166" }, + "Ú": { "codepoints": [218], "characters": "\u00DA" }, + "Ú": { "codepoints": [218], "characters": "\u00DA" }, + "↟": { "codepoints": [8607], "characters": "\u219F" }, + "⥉": { "codepoints": [10569], "characters": "\u2949" }, + "Ў": { "codepoints": [1038], "characters": "\u040E" }, + "Ŭ": { "codepoints": [364], "characters": "\u016C" }, + "Û": { "codepoints": [219], "characters": "\u00DB" }, + "Û": { "codepoints": [219], "characters": "\u00DB" }, + "У": { "codepoints": [1059], "characters": "\u0423" }, + "Ű": { "codepoints": [368], "characters": "\u0170" }, + "𝔘": { "codepoints": [120088], "characters": "\uD835\uDD18" }, + "Ù": { "codepoints": [217], "characters": "\u00D9" }, + "Ù": { "codepoints": [217], "characters": "\u00D9" }, + "Ū": { "codepoints": [362], "characters": "\u016A" }, + "_": { "codepoints": [95], "characters": "\u005F" }, + "⏟": { "codepoints": [9183], "characters": "\u23DF" }, + "⎵": { "codepoints": [9141], "characters": "\u23B5" }, + "⏝": { "codepoints": [9181], "characters": "\u23DD" }, + "⋃": { "codepoints": [8899], "characters": "\u22C3" }, + "⊎": { "codepoints": [8846], "characters": "\u228E" }, + "Ų": { "codepoints": [370], "characters": "\u0172" }, + "𝕌": { "codepoints": [120140], "characters": "\uD835\uDD4C" }, + "↑": { "codepoints": [8593], "characters": "\u2191" }, + "⤒": { "codepoints": [10514], "characters": "\u2912" }, + "⇅": { "codepoints": [8645], "characters": "\u21C5" }, + "↕": { "codepoints": [8597], "characters": "\u2195" }, + "⥮": { "codepoints": [10606], "characters": "\u296E" }, + "⊥": { "codepoints": [8869], "characters": "\u22A5" }, + "↥": { "codepoints": [8613], "characters": "\u21A5" }, + "⇑": { "codepoints": [8657], "characters": "\u21D1" }, + "⇕": { "codepoints": [8661], "characters": "\u21D5" }, + "↖": { "codepoints": [8598], "characters": "\u2196" }, + "↗": { "codepoints": [8599], "characters": "\u2197" }, + "ϒ": { "codepoints": [978], "characters": "\u03D2" }, + "Υ": { "codepoints": [933], "characters": "\u03A5" }, + "Ů": { "codepoints": [366], "characters": "\u016E" }, + "𝒰": { "codepoints": [119984], "characters": "\uD835\uDCB0" }, + "Ũ": { "codepoints": [360], "characters": "\u0168" }, + "Ü": { "codepoints": [220], "characters": "\u00DC" }, + "Ü": { "codepoints": [220], "characters": "\u00DC" }, + "⊫": { "codepoints": [8875], "characters": "\u22AB" }, + "⫫": { "codepoints": [10987], "characters": "\u2AEB" }, + "В": { "codepoints": [1042], "characters": "\u0412" }, + "⊩": { "codepoints": [8873], "characters": "\u22A9" }, + "⫦": { "codepoints": [10982], "characters": "\u2AE6" }, + "⋁": { "codepoints": [8897], "characters": "\u22C1" }, + "‖": { "codepoints": [8214], "characters": "\u2016" }, + "‖": { "codepoints": [8214], "characters": "\u2016" }, + "∣": { "codepoints": [8739], "characters": "\u2223" }, + "|": { "codepoints": [124], "characters": "\u007C" }, + "❘": { "codepoints": [10072], "characters": "\u2758" }, + "≀": { "codepoints": [8768], "characters": "\u2240" }, + " ": { "codepoints": [8202], "characters": "\u200A" }, + "𝔙": { "codepoints": [120089], "characters": "\uD835\uDD19" }, + "𝕍": { "codepoints": [120141], "characters": "\uD835\uDD4D" }, + "𝒱": { "codepoints": [119985], "characters": "\uD835\uDCB1" }, + "⊪": { "codepoints": [8874], "characters": "\u22AA" }, + "Ŵ": { "codepoints": [372], "characters": "\u0174" }, + "⋀": { "codepoints": [8896], "characters": "\u22C0" }, + "𝔚": { "codepoints": [120090], "characters": "\uD835\uDD1A" }, + "𝕎": { "codepoints": [120142], "characters": "\uD835\uDD4E" }, + "𝒲": { "codepoints": [119986], "characters": "\uD835\uDCB2" }, + "𝔛": { "codepoints": [120091], "characters": "\uD835\uDD1B" }, + "Ξ": { "codepoints": [926], "characters": "\u039E" }, + "𝕏": { "codepoints": [120143], "characters": "\uD835\uDD4F" }, + "𝒳": { "codepoints": [119987], "characters": "\uD835\uDCB3" }, + "Я": { "codepoints": [1071], "characters": "\u042F" }, + "Ї": { "codepoints": [1031], "characters": "\u0407" }, + "Ю": { "codepoints": [1070], "characters": "\u042E" }, + "Ý": { "codepoints": [221], "characters": "\u00DD" }, + "Ý": { "codepoints": [221], "characters": "\u00DD" }, + "Ŷ": { "codepoints": [374], "characters": "\u0176" }, + "Ы": { "codepoints": [1067], "characters": "\u042B" }, + "𝔜": { "codepoints": [120092], "characters": "\uD835\uDD1C" }, + "𝕐": { "codepoints": [120144], "characters": "\uD835\uDD50" }, + "𝒴": { "codepoints": [119988], "characters": "\uD835\uDCB4" }, + "Ÿ": { "codepoints": [376], "characters": "\u0178" }, + "Ж": { "codepoints": [1046], "characters": "\u0416" }, + "Ź": { "codepoints": [377], "characters": "\u0179" }, + "Ž": { "codepoints": [381], "characters": "\u017D" }, + "З": { "codepoints": [1047], "characters": "\u0417" }, + "Ż": { "codepoints": [379], "characters": "\u017B" }, + "​": { "codepoints": [8203], "characters": "\u200B" }, + "Ζ": { "codepoints": [918], "characters": "\u0396" }, + "ℨ": { "codepoints": [8488], "characters": "\u2128" }, + "ℤ": { "codepoints": [8484], "characters": "\u2124" }, + "𝒵": { "codepoints": [119989], "characters": "\uD835\uDCB5" }, + "á": { "codepoints": [225], "characters": "\u00E1" }, + "á": { "codepoints": [225], "characters": "\u00E1" }, + "ă": { "codepoints": [259], "characters": "\u0103" }, + "∾": { "codepoints": [8766], "characters": "\u223E" }, + "∾̳": { "codepoints": [8766, 819], "characters": "\u223E\u0333" }, + "∿": { "codepoints": [8767], "characters": "\u223F" }, + "â": { "codepoints": [226], "characters": "\u00E2" }, + "â": { "codepoints": [226], "characters": "\u00E2" }, + "´": { "codepoints": [180], "characters": "\u00B4" }, + "´": { "codepoints": [180], "characters": "\u00B4" }, + "а": { "codepoints": [1072], "characters": "\u0430" }, + "æ": { "codepoints": [230], "characters": "\u00E6" }, + "æ": { "codepoints": [230], "characters": "\u00E6" }, + "⁡": { "codepoints": [8289], "characters": "\u2061" }, + "𝔞": { "codepoints": [120094], "characters": "\uD835\uDD1E" }, + "à": { "codepoints": [224], "characters": "\u00E0" }, + "à": { "codepoints": [224], "characters": "\u00E0" }, + "ℵ": { "codepoints": [8501], "characters": "\u2135" }, + "ℵ": { "codepoints": [8501], "characters": "\u2135" }, + "α": { "codepoints": [945], "characters": "\u03B1" }, + "ā": { "codepoints": [257], "characters": "\u0101" }, + "⨿": { "codepoints": [10815], "characters": "\u2A3F" }, + "&": { "codepoints": [38], "characters": "\u0026" }, + "&": { "codepoints": [38], "characters": "\u0026" }, + "∧": { "codepoints": [8743], "characters": "\u2227" }, + "⩕": { "codepoints": [10837], "characters": "\u2A55" }, + "⩜": { "codepoints": [10844], "characters": "\u2A5C" }, + "⩘": { "codepoints": [10840], "characters": "\u2A58" }, + "⩚": { "codepoints": [10842], "characters": "\u2A5A" }, + "∠": { "codepoints": [8736], "characters": "\u2220" }, + "⦤": { "codepoints": [10660], "characters": "\u29A4" }, + "∠": { "codepoints": [8736], "characters": "\u2220" }, + "∡": { "codepoints": [8737], "characters": "\u2221" }, + "⦨": { "codepoints": [10664], "characters": "\u29A8" }, + "⦩": { "codepoints": [10665], "characters": "\u29A9" }, + "⦪": { "codepoints": [10666], "characters": "\u29AA" }, + "⦫": { "codepoints": [10667], "characters": "\u29AB" }, + "⦬": { "codepoints": [10668], "characters": "\u29AC" }, + "⦭": { "codepoints": [10669], "characters": "\u29AD" }, + "⦮": { "codepoints": [10670], "characters": "\u29AE" }, + "⦯": { "codepoints": [10671], "characters": "\u29AF" }, + "∟": { "codepoints": [8735], "characters": "\u221F" }, + "⊾": { "codepoints": [8894], "characters": "\u22BE" }, + "⦝": { "codepoints": [10653], "characters": "\u299D" }, + "∢": { "codepoints": [8738], "characters": "\u2222" }, + "Å": { "codepoints": [197], "characters": "\u00C5" }, + "⍼": { "codepoints": [9084], "characters": "\u237C" }, + "ą": { "codepoints": [261], "characters": "\u0105" }, + "𝕒": { "codepoints": [120146], "characters": "\uD835\uDD52" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "⩰": { "codepoints": [10864], "characters": "\u2A70" }, + "⩯": { "codepoints": [10863], "characters": "\u2A6F" }, + "≊": { "codepoints": [8778], "characters": "\u224A" }, + "≋": { "codepoints": [8779], "characters": "\u224B" }, + "'": { "codepoints": [39], "characters": "\u0027" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "≊": { "codepoints": [8778], "characters": "\u224A" }, + "å": { "codepoints": [229], "characters": "\u00E5" }, + "å": { "codepoints": [229], "characters": "\u00E5" }, + "𝒶": { "codepoints": [119990], "characters": "\uD835\uDCB6" }, + "*": { "codepoints": [42], "characters": "\u002A" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "≍": { "codepoints": [8781], "characters": "\u224D" }, + "ã": { "codepoints": [227], "characters": "\u00E3" }, + "ã": { "codepoints": [227], "characters": "\u00E3" }, + "ä": { "codepoints": [228], "characters": "\u00E4" }, + "ä": { "codepoints": [228], "characters": "\u00E4" }, + "∳": { "codepoints": [8755], "characters": "\u2233" }, + "⨑": { "codepoints": [10769], "characters": "\u2A11" }, + "⫭": { "codepoints": [10989], "characters": "\u2AED" }, + "≌": { "codepoints": [8780], "characters": "\u224C" }, + "϶": { "codepoints": [1014], "characters": "\u03F6" }, + "‵": { "codepoints": [8245], "characters": "\u2035" }, + "∽": { "codepoints": [8765], "characters": "\u223D" }, + "⋍": { "codepoints": [8909], "characters": "\u22CD" }, + "⊽": { "codepoints": [8893], "characters": "\u22BD" }, + "⌅": { "codepoints": [8965], "characters": "\u2305" }, + "⌅": { "codepoints": [8965], "characters": "\u2305" }, + "⎵": { "codepoints": [9141], "characters": "\u23B5" }, + "⎶": { "codepoints": [9142], "characters": "\u23B6" }, + "≌": { "codepoints": [8780], "characters": "\u224C" }, + "б": { "codepoints": [1073], "characters": "\u0431" }, + "„": { "codepoints": [8222], "characters": "\u201E" }, + "∵": { "codepoints": [8757], "characters": "\u2235" }, + "∵": { "codepoints": [8757], "characters": "\u2235" }, + "⦰": { "codepoints": [10672], "characters": "\u29B0" }, + "϶": { "codepoints": [1014], "characters": "\u03F6" }, + "ℬ": { "codepoints": [8492], "characters": "\u212C" }, + "β": { "codepoints": [946], "characters": "\u03B2" }, + "ℶ": { "codepoints": [8502], "characters": "\u2136" }, + "≬": { "codepoints": [8812], "characters": "\u226C" }, + "𝔟": { "codepoints": [120095], "characters": "\uD835\uDD1F" }, + "⋂": { "codepoints": [8898], "characters": "\u22C2" }, + "◯": { "codepoints": [9711], "characters": "\u25EF" }, + "⋃": { "codepoints": [8899], "characters": "\u22C3" }, + "⨀": { "codepoints": [10752], "characters": "\u2A00" }, + "⨁": { "codepoints": [10753], "characters": "\u2A01" }, + "⨂": { "codepoints": [10754], "characters": "\u2A02" }, + "⨆": { "codepoints": [10758], "characters": "\u2A06" }, + "★": { "codepoints": [9733], "characters": "\u2605" }, + "▽": { "codepoints": [9661], "characters": "\u25BD" }, + "△": { "codepoints": [9651], "characters": "\u25B3" }, + "⨄": { "codepoints": [10756], "characters": "\u2A04" }, + "⋁": { "codepoints": [8897], "characters": "\u22C1" }, + "⋀": { "codepoints": [8896], "characters": "\u22C0" }, + "⤍": { "codepoints": [10509], "characters": "\u290D" }, + "⧫": { "codepoints": [10731], "characters": "\u29EB" }, + "▪": { "codepoints": [9642], "characters": "\u25AA" }, + "▴": { "codepoints": [9652], "characters": "\u25B4" }, + "▾": { "codepoints": [9662], "characters": "\u25BE" }, + "◂": { "codepoints": [9666], "characters": "\u25C2" }, + "▸": { "codepoints": [9656], "characters": "\u25B8" }, + "␣": { "codepoints": [9251], "characters": "\u2423" }, + "▒": { "codepoints": [9618], "characters": "\u2592" }, + "░": { "codepoints": [9617], "characters": "\u2591" }, + "▓": { "codepoints": [9619], "characters": "\u2593" }, + "█": { "codepoints": [9608], "characters": "\u2588" }, + "=⃥": { "codepoints": [61, 8421], "characters": "\u003D\u20E5" }, + "≡⃥": { "codepoints": [8801, 8421], "characters": "\u2261\u20E5" }, + "⌐": { "codepoints": [8976], "characters": "\u2310" }, + "𝕓": { "codepoints": [120147], "characters": "\uD835\uDD53" }, + "⊥": { "codepoints": [8869], "characters": "\u22A5" }, + "⊥": { "codepoints": [8869], "characters": "\u22A5" }, + "⋈": { "codepoints": [8904], "characters": "\u22C8" }, + "╗": { "codepoints": [9559], "characters": "\u2557" }, + "╔": { "codepoints": [9556], "characters": "\u2554" }, + "╖": { "codepoints": [9558], "characters": "\u2556" }, + "╓": { "codepoints": [9555], "characters": "\u2553" }, + "═": { "codepoints": [9552], "characters": "\u2550" }, + "╦": { "codepoints": [9574], "characters": "\u2566" }, + "╩": { "codepoints": [9577], "characters": "\u2569" }, + "╤": { "codepoints": [9572], "characters": "\u2564" }, + "╧": { "codepoints": [9575], "characters": "\u2567" }, + "╝": { "codepoints": [9565], "characters": "\u255D" }, + "╚": { "codepoints": [9562], "characters": "\u255A" }, + "╜": { "codepoints": [9564], "characters": "\u255C" }, + "╙": { "codepoints": [9561], "characters": "\u2559" }, + "║": { "codepoints": [9553], "characters": "\u2551" }, + "╬": { "codepoints": [9580], "characters": "\u256C" }, + "╣": { "codepoints": [9571], "characters": "\u2563" }, + "╠": { "codepoints": [9568], "characters": "\u2560" }, + "╫": { "codepoints": [9579], "characters": "\u256B" }, + "╢": { "codepoints": [9570], "characters": "\u2562" }, + "╟": { "codepoints": [9567], "characters": "\u255F" }, + "⧉": { "codepoints": [10697], "characters": "\u29C9" }, + "╕": { "codepoints": [9557], "characters": "\u2555" }, + "╒": { "codepoints": [9554], "characters": "\u2552" }, + "┐": { "codepoints": [9488], "characters": "\u2510" }, + "┌": { "codepoints": [9484], "characters": "\u250C" }, + "─": { "codepoints": [9472], "characters": "\u2500" }, + "╥": { "codepoints": [9573], "characters": "\u2565" }, + "╨": { "codepoints": [9576], "characters": "\u2568" }, + "┬": { "codepoints": [9516], "characters": "\u252C" }, + "┴": { "codepoints": [9524], "characters": "\u2534" }, + "⊟": { "codepoints": [8863], "characters": "\u229F" }, + "⊞": { "codepoints": [8862], "characters": "\u229E" }, + "⊠": { "codepoints": [8864], "characters": "\u22A0" }, + "╛": { "codepoints": [9563], "characters": "\u255B" }, + "╘": { "codepoints": [9560], "characters": "\u2558" }, + "┘": { "codepoints": [9496], "characters": "\u2518" }, + "└": { "codepoints": [9492], "characters": "\u2514" }, + "│": { "codepoints": [9474], "characters": "\u2502" }, + "╪": { "codepoints": [9578], "characters": "\u256A" }, + "╡": { "codepoints": [9569], "characters": "\u2561" }, + "╞": { "codepoints": [9566], "characters": "\u255E" }, + "┼": { "codepoints": [9532], "characters": "\u253C" }, + "┤": { "codepoints": [9508], "characters": "\u2524" }, + "├": { "codepoints": [9500], "characters": "\u251C" }, + "‵": { "codepoints": [8245], "characters": "\u2035" }, + "˘": { "codepoints": [728], "characters": "\u02D8" }, + "¦": { "codepoints": [166], "characters": "\u00A6" }, + "¦": { "codepoints": [166], "characters": "\u00A6" }, + "𝒷": { "codepoints": [119991], "characters": "\uD835\uDCB7" }, + "⁏": { "codepoints": [8271], "characters": "\u204F" }, + "∽": { "codepoints": [8765], "characters": "\u223D" }, + "⋍": { "codepoints": [8909], "characters": "\u22CD" }, + "\": { "codepoints": [92], "characters": "\u005C" }, + "⧅": { "codepoints": [10693], "characters": "\u29C5" }, + "⟈": { "codepoints": [10184], "characters": "\u27C8" }, + "•": { "codepoints": [8226], "characters": "\u2022" }, + "•": { "codepoints": [8226], "characters": "\u2022" }, + "≎": { "codepoints": [8782], "characters": "\u224E" }, + "⪮": { "codepoints": [10926], "characters": "\u2AAE" }, + "≏": { "codepoints": [8783], "characters": "\u224F" }, + "≏": { "codepoints": [8783], "characters": "\u224F" }, + "ć": { "codepoints": [263], "characters": "\u0107" }, + "∩": { "codepoints": [8745], "characters": "\u2229" }, + "⩄": { "codepoints": [10820], "characters": "\u2A44" }, + "⩉": { "codepoints": [10825], "characters": "\u2A49" }, + "⩋": { "codepoints": [10827], "characters": "\u2A4B" }, + "⩇": { "codepoints": [10823], "characters": "\u2A47" }, + "⩀": { "codepoints": [10816], "characters": "\u2A40" }, + "∩︀": { "codepoints": [8745, 65024], "characters": "\u2229\uFE00" }, + "⁁": { "codepoints": [8257], "characters": "\u2041" }, + "ˇ": { "codepoints": [711], "characters": "\u02C7" }, + "⩍": { "codepoints": [10829], "characters": "\u2A4D" }, + "č": { "codepoints": [269], "characters": "\u010D" }, + "ç": { "codepoints": [231], "characters": "\u00E7" }, + "ç": { "codepoints": [231], "characters": "\u00E7" }, + "ĉ": { "codepoints": [265], "characters": "\u0109" }, + "⩌": { "codepoints": [10828], "characters": "\u2A4C" }, + "⩐": { "codepoints": [10832], "characters": "\u2A50" }, + "ċ": { "codepoints": [267], "characters": "\u010B" }, + "¸": { "codepoints": [184], "characters": "\u00B8" }, + "¸": { "codepoints": [184], "characters": "\u00B8" }, + "⦲": { "codepoints": [10674], "characters": "\u29B2" }, + "¢": { "codepoints": [162], "characters": "\u00A2" }, + "¢": { "codepoints": [162], "characters": "\u00A2" }, + "·": { "codepoints": [183], "characters": "\u00B7" }, + "𝔠": { "codepoints": [120096], "characters": "\uD835\uDD20" }, + "ч": { "codepoints": [1095], "characters": "\u0447" }, + "✓": { "codepoints": [10003], "characters": "\u2713" }, + "✓": { "codepoints": [10003], "characters": "\u2713" }, + "χ": { "codepoints": [967], "characters": "\u03C7" }, + "○": { "codepoints": [9675], "characters": "\u25CB" }, + "⧃": { "codepoints": [10691], "characters": "\u29C3" }, + "ˆ": { "codepoints": [710], "characters": "\u02C6" }, + "≗": { "codepoints": [8791], "characters": "\u2257" }, + "↺": { "codepoints": [8634], "characters": "\u21BA" }, + "↻": { "codepoints": [8635], "characters": "\u21BB" }, + "®": { "codepoints": [174], "characters": "\u00AE" }, + "Ⓢ": { "codepoints": [9416], "characters": "\u24C8" }, + "⊛": { "codepoints": [8859], "characters": "\u229B" }, + "⊚": { "codepoints": [8858], "characters": "\u229A" }, + "⊝": { "codepoints": [8861], "characters": "\u229D" }, + "≗": { "codepoints": [8791], "characters": "\u2257" }, + "⨐": { "codepoints": [10768], "characters": "\u2A10" }, + "⫯": { "codepoints": [10991], "characters": "\u2AEF" }, + "⧂": { "codepoints": [10690], "characters": "\u29C2" }, + "♣": { "codepoints": [9827], "characters": "\u2663" }, + "♣": { "codepoints": [9827], "characters": "\u2663" }, + ":": { "codepoints": [58], "characters": "\u003A" }, + "≔": { "codepoints": [8788], "characters": "\u2254" }, + "≔": { "codepoints": [8788], "characters": "\u2254" }, + ",": { "codepoints": [44], "characters": "\u002C" }, + "@": { "codepoints": [64], "characters": "\u0040" }, + "∁": { "codepoints": [8705], "characters": "\u2201" }, + "∘": { "codepoints": [8728], "characters": "\u2218" }, + "∁": { "codepoints": [8705], "characters": "\u2201" }, + "ℂ": { "codepoints": [8450], "characters": "\u2102" }, + "≅": { "codepoints": [8773], "characters": "\u2245" }, + "⩭": { "codepoints": [10861], "characters": "\u2A6D" }, + "∮": { "codepoints": [8750], "characters": "\u222E" }, + "𝕔": { "codepoints": [120148], "characters": "\uD835\uDD54" }, + "∐": { "codepoints": [8720], "characters": "\u2210" }, + "©": { "codepoints": [169], "characters": "\u00A9" }, + "©": { "codepoints": [169], "characters": "\u00A9" }, + "℗": { "codepoints": [8471], "characters": "\u2117" }, + "↵": { "codepoints": [8629], "characters": "\u21B5" }, + "✗": { "codepoints": [10007], "characters": "\u2717" }, + "𝒸": { "codepoints": [119992], "characters": "\uD835\uDCB8" }, + "⫏": { "codepoints": [10959], "characters": "\u2ACF" }, + "⫑": { "codepoints": [10961], "characters": "\u2AD1" }, + "⫐": { "codepoints": [10960], "characters": "\u2AD0" }, + "⫒": { "codepoints": [10962], "characters": "\u2AD2" }, + "⋯": { "codepoints": [8943], "characters": "\u22EF" }, + "⤸": { "codepoints": [10552], "characters": "\u2938" }, + "⤵": { "codepoints": [10549], "characters": "\u2935" }, + "⋞": { "codepoints": [8926], "characters": "\u22DE" }, + "⋟": { "codepoints": [8927], "characters": "\u22DF" }, + "↶": { "codepoints": [8630], "characters": "\u21B6" }, + "⤽": { "codepoints": [10557], "characters": "\u293D" }, + "∪": { "codepoints": [8746], "characters": "\u222A" }, + "⩈": { "codepoints": [10824], "characters": "\u2A48" }, + "⩆": { "codepoints": [10822], "characters": "\u2A46" }, + "⩊": { "codepoints": [10826], "characters": "\u2A4A" }, + "⊍": { "codepoints": [8845], "characters": "\u228D" }, + "⩅": { "codepoints": [10821], "characters": "\u2A45" }, + "∪︀": { "codepoints": [8746, 65024], "characters": "\u222A\uFE00" }, + "↷": { "codepoints": [8631], "characters": "\u21B7" }, + "⤼": { "codepoints": [10556], "characters": "\u293C" }, + "⋞": { "codepoints": [8926], "characters": "\u22DE" }, + "⋟": { "codepoints": [8927], "characters": "\u22DF" }, + "⋎": { "codepoints": [8910], "characters": "\u22CE" }, + "⋏": { "codepoints": [8911], "characters": "\u22CF" }, + "¤": { "codepoints": [164], "characters": "\u00A4" }, + "¤": { "codepoints": [164], "characters": "\u00A4" }, + "↶": { "codepoints": [8630], "characters": "\u21B6" }, + "↷": { "codepoints": [8631], "characters": "\u21B7" }, + "⋎": { "codepoints": [8910], "characters": "\u22CE" }, + "⋏": { "codepoints": [8911], "characters": "\u22CF" }, + "∲": { "codepoints": [8754], "characters": "\u2232" }, + "∱": { "codepoints": [8753], "characters": "\u2231" }, + "⌭": { "codepoints": [9005], "characters": "\u232D" }, + "⇓": { "codepoints": [8659], "characters": "\u21D3" }, + "⥥": { "codepoints": [10597], "characters": "\u2965" }, + "†": { "codepoints": [8224], "characters": "\u2020" }, + "ℸ": { "codepoints": [8504], "characters": "\u2138" }, + "↓": { "codepoints": [8595], "characters": "\u2193" }, + "‐": { "codepoints": [8208], "characters": "\u2010" }, + "⊣": { "codepoints": [8867], "characters": "\u22A3" }, + "⤏": { "codepoints": [10511], "characters": "\u290F" }, + "˝": { "codepoints": [733], "characters": "\u02DD" }, + "ď": { "codepoints": [271], "characters": "\u010F" }, + "д": { "codepoints": [1076], "characters": "\u0434" }, + "ⅆ": { "codepoints": [8518], "characters": "\u2146" }, + "‡": { "codepoints": [8225], "characters": "\u2021" }, + "⇊": { "codepoints": [8650], "characters": "\u21CA" }, + "⩷": { "codepoints": [10871], "characters": "\u2A77" }, + "°": { "codepoints": [176], "characters": "\u00B0" }, + "°": { "codepoints": [176], "characters": "\u00B0" }, + "δ": { "codepoints": [948], "characters": "\u03B4" }, + "⦱": { "codepoints": [10673], "characters": "\u29B1" }, + "⥿": { "codepoints": [10623], "characters": "\u297F" }, + "𝔡": { "codepoints": [120097], "characters": "\uD835\uDD21" }, + "⇃": { "codepoints": [8643], "characters": "\u21C3" }, + "⇂": { "codepoints": [8642], "characters": "\u21C2" }, + "⋄": { "codepoints": [8900], "characters": "\u22C4" }, + "⋄": { "codepoints": [8900], "characters": "\u22C4" }, + "♦": { "codepoints": [9830], "characters": "\u2666" }, + "♦": { "codepoints": [9830], "characters": "\u2666" }, + "¨": { "codepoints": [168], "characters": "\u00A8" }, + "ϝ": { "codepoints": [989], "characters": "\u03DD" }, + "⋲": { "codepoints": [8946], "characters": "\u22F2" }, + "÷": { "codepoints": [247], "characters": "\u00F7" }, + "÷": { "codepoints": [247], "characters": "\u00F7" }, + "÷": { "codepoints": [247], "characters": "\u00F7" }, + "⋇": { "codepoints": [8903], "characters": "\u22C7" }, + "⋇": { "codepoints": [8903], "characters": "\u22C7" }, + "ђ": { "codepoints": [1106], "characters": "\u0452" }, + "⌞": { "codepoints": [8990], "characters": "\u231E" }, + "⌍": { "codepoints": [8973], "characters": "\u230D" }, + "$": { "codepoints": [36], "characters": "\u0024" }, + "𝕕": { "codepoints": [120149], "characters": "\uD835\uDD55" }, + "˙": { "codepoints": [729], "characters": "\u02D9" }, + "≐": { "codepoints": [8784], "characters": "\u2250" }, + "≑": { "codepoints": [8785], "characters": "\u2251" }, + "∸": { "codepoints": [8760], "characters": "\u2238" }, + "∔": { "codepoints": [8724], "characters": "\u2214" }, + "⊡": { "codepoints": [8865], "characters": "\u22A1" }, + "⌆": { "codepoints": [8966], "characters": "\u2306" }, + "↓": { "codepoints": [8595], "characters": "\u2193" }, + "⇊": { "codepoints": [8650], "characters": "\u21CA" }, + "⇃": { "codepoints": [8643], "characters": "\u21C3" }, + "⇂": { "codepoints": [8642], "characters": "\u21C2" }, + "⤐": { "codepoints": [10512], "characters": "\u2910" }, + "⌟": { "codepoints": [8991], "characters": "\u231F" }, + "⌌": { "codepoints": [8972], "characters": "\u230C" }, + "𝒹": { "codepoints": [119993], "characters": "\uD835\uDCB9" }, + "ѕ": { "codepoints": [1109], "characters": "\u0455" }, + "⧶": { "codepoints": [10742], "characters": "\u29F6" }, + "đ": { "codepoints": [273], "characters": "\u0111" }, + "⋱": { "codepoints": [8945], "characters": "\u22F1" }, + "▿": { "codepoints": [9663], "characters": "\u25BF" }, + "▾": { "codepoints": [9662], "characters": "\u25BE" }, + "⇵": { "codepoints": [8693], "characters": "\u21F5" }, + "⥯": { "codepoints": [10607], "characters": "\u296F" }, + "⦦": { "codepoints": [10662], "characters": "\u29A6" }, + "џ": { "codepoints": [1119], "characters": "\u045F" }, + "⟿": { "codepoints": [10239], "characters": "\u27FF" }, + "⩷": { "codepoints": [10871], "characters": "\u2A77" }, + "≑": { "codepoints": [8785], "characters": "\u2251" }, + "é": { "codepoints": [233], "characters": "\u00E9" }, + "é": { "codepoints": [233], "characters": "\u00E9" }, + "⩮": { "codepoints": [10862], "characters": "\u2A6E" }, + "ě": { "codepoints": [283], "characters": "\u011B" }, + "≖": { "codepoints": [8790], "characters": "\u2256" }, + "ê": { "codepoints": [234], "characters": "\u00EA" }, + "ê": { "codepoints": [234], "characters": "\u00EA" }, + "≕": { "codepoints": [8789], "characters": "\u2255" }, + "э": { "codepoints": [1101], "characters": "\u044D" }, + "ė": { "codepoints": [279], "characters": "\u0117" }, + "ⅇ": { "codepoints": [8519], "characters": "\u2147" }, + "≒": { "codepoints": [8786], "characters": "\u2252" }, + "𝔢": { "codepoints": [120098], "characters": "\uD835\uDD22" }, + "⪚": { "codepoints": [10906], "characters": "\u2A9A" }, + "è": { "codepoints": [232], "characters": "\u00E8" }, + "è": { "codepoints": [232], "characters": "\u00E8" }, + "⪖": { "codepoints": [10902], "characters": "\u2A96" }, + "⪘": { "codepoints": [10904], "characters": "\u2A98" }, + "⪙": { "codepoints": [10905], "characters": "\u2A99" }, + "⏧": { "codepoints": [9191], "characters": "\u23E7" }, + "ℓ": { "codepoints": [8467], "characters": "\u2113" }, + "⪕": { "codepoints": [10901], "characters": "\u2A95" }, + "⪗": { "codepoints": [10903], "characters": "\u2A97" }, + "ē": { "codepoints": [275], "characters": "\u0113" }, + "∅": { "codepoints": [8709], "characters": "\u2205" }, + "∅": { "codepoints": [8709], "characters": "\u2205" }, + "∅": { "codepoints": [8709], "characters": "\u2205" }, + " ": { "codepoints": [8196], "characters": "\u2004" }, + " ": { "codepoints": [8197], "characters": "\u2005" }, + " ": { "codepoints": [8195], "characters": "\u2003" }, + "ŋ": { "codepoints": [331], "characters": "\u014B" }, + " ": { "codepoints": [8194], "characters": "\u2002" }, + "ę": { "codepoints": [281], "characters": "\u0119" }, + "𝕖": { "codepoints": [120150], "characters": "\uD835\uDD56" }, + "⋕": { "codepoints": [8917], "characters": "\u22D5" }, + "⧣": { "codepoints": [10723], "characters": "\u29E3" }, + "⩱": { "codepoints": [10865], "characters": "\u2A71" }, + "ε": { "codepoints": [949], "characters": "\u03B5" }, + "ε": { "codepoints": [949], "characters": "\u03B5" }, + "ϵ": { "codepoints": [1013], "characters": "\u03F5" }, + "≖": { "codepoints": [8790], "characters": "\u2256" }, + "≕": { "codepoints": [8789], "characters": "\u2255" }, + "≂": { "codepoints": [8770], "characters": "\u2242" }, + "⪖": { "codepoints": [10902], "characters": "\u2A96" }, + "⪕": { "codepoints": [10901], "characters": "\u2A95" }, + "=": { "codepoints": [61], "characters": "\u003D" }, + "≟": { "codepoints": [8799], "characters": "\u225F" }, + "≡": { "codepoints": [8801], "characters": "\u2261" }, + "⩸": { "codepoints": [10872], "characters": "\u2A78" }, + "⧥": { "codepoints": [10725], "characters": "\u29E5" }, + "≓": { "codepoints": [8787], "characters": "\u2253" }, + "⥱": { "codepoints": [10609], "characters": "\u2971" }, + "ℯ": { "codepoints": [8495], "characters": "\u212F" }, + "≐": { "codepoints": [8784], "characters": "\u2250" }, + "≂": { "codepoints": [8770], "characters": "\u2242" }, + "η": { "codepoints": [951], "characters": "\u03B7" }, + "ð": { "codepoints": [240], "characters": "\u00F0" }, + "ð": { "codepoints": [240], "characters": "\u00F0" }, + "ë": { "codepoints": [235], "characters": "\u00EB" }, + "ë": { "codepoints": [235], "characters": "\u00EB" }, + "€": { "codepoints": [8364], "characters": "\u20AC" }, + "!": { "codepoints": [33], "characters": "\u0021" }, + "∃": { "codepoints": [8707], "characters": "\u2203" }, + "ℰ": { "codepoints": [8496], "characters": "\u2130" }, + "ⅇ": { "codepoints": [8519], "characters": "\u2147" }, + "≒": { "codepoints": [8786], "characters": "\u2252" }, + "ф": { "codepoints": [1092], "characters": "\u0444" }, + "♀": { "codepoints": [9792], "characters": "\u2640" }, + "ffi": { "codepoints": [64259], "characters": "\uFB03" }, + "ff": { "codepoints": [64256], "characters": "\uFB00" }, + "ffl": { "codepoints": [64260], "characters": "\uFB04" }, + "𝔣": { "codepoints": [120099], "characters": "\uD835\uDD23" }, + "fi": { "codepoints": [64257], "characters": "\uFB01" }, + "fj": { "codepoints": [102, 106], "characters": "\u0066\u006A" }, + "♭": { "codepoints": [9837], "characters": "\u266D" }, + "fl": { "codepoints": [64258], "characters": "\uFB02" }, + "▱": { "codepoints": [9649], "characters": "\u25B1" }, + "ƒ": { "codepoints": [402], "characters": "\u0192" }, + "𝕗": { "codepoints": [120151], "characters": "\uD835\uDD57" }, + "∀": { "codepoints": [8704], "characters": "\u2200" }, + "⋔": { "codepoints": [8916], "characters": "\u22D4" }, + "⫙": { "codepoints": [10969], "characters": "\u2AD9" }, + "⨍": { "codepoints": [10765], "characters": "\u2A0D" }, + "½": { "codepoints": [189], "characters": "\u00BD" }, + "½": { "codepoints": [189], "characters": "\u00BD" }, + "⅓": { "codepoints": [8531], "characters": "\u2153" }, + "¼": { "codepoints": [188], "characters": "\u00BC" }, + "¼": { "codepoints": [188], "characters": "\u00BC" }, + "⅕": { "codepoints": [8533], "characters": "\u2155" }, + "⅙": { "codepoints": [8537], "characters": "\u2159" }, + "⅛": { "codepoints": [8539], "characters": "\u215B" }, + "⅔": { "codepoints": [8532], "characters": "\u2154" }, + "⅖": { "codepoints": [8534], "characters": "\u2156" }, + "¾": { "codepoints": [190], "characters": "\u00BE" }, + "¾": { "codepoints": [190], "characters": "\u00BE" }, + "⅗": { "codepoints": [8535], "characters": "\u2157" }, + "⅜": { "codepoints": [8540], "characters": "\u215C" }, + "⅘": { "codepoints": [8536], "characters": "\u2158" }, + "⅚": { "codepoints": [8538], "characters": "\u215A" }, + "⅝": { "codepoints": [8541], "characters": "\u215D" }, + "⅞": { "codepoints": [8542], "characters": "\u215E" }, + "⁄": { "codepoints": [8260], "characters": "\u2044" }, + "⌢": { "codepoints": [8994], "characters": "\u2322" }, + "𝒻": { "codepoints": [119995], "characters": "\uD835\uDCBB" }, + "≧": { "codepoints": [8807], "characters": "\u2267" }, + "⪌": { "codepoints": [10892], "characters": "\u2A8C" }, + "ǵ": { "codepoints": [501], "characters": "\u01F5" }, + "γ": { "codepoints": [947], "characters": "\u03B3" }, + "ϝ": { "codepoints": [989], "characters": "\u03DD" }, + "⪆": { "codepoints": [10886], "characters": "\u2A86" }, + "ğ": { "codepoints": [287], "characters": "\u011F" }, + "ĝ": { "codepoints": [285], "characters": "\u011D" }, + "г": { "codepoints": [1075], "characters": "\u0433" }, + "ġ": { "codepoints": [289], "characters": "\u0121" }, + "≥": { "codepoints": [8805], "characters": "\u2265" }, + "⋛": { "codepoints": [8923], "characters": "\u22DB" }, + "≥": { "codepoints": [8805], "characters": "\u2265" }, + "≧": { "codepoints": [8807], "characters": "\u2267" }, + "⩾": { "codepoints": [10878], "characters": "\u2A7E" }, + "⩾": { "codepoints": [10878], "characters": "\u2A7E" }, + "⪩": { "codepoints": [10921], "characters": "\u2AA9" }, + "⪀": { "codepoints": [10880], "characters": "\u2A80" }, + "⪂": { "codepoints": [10882], "characters": "\u2A82" }, + "⪄": { "codepoints": [10884], "characters": "\u2A84" }, + "⋛︀": { "codepoints": [8923, 65024], "characters": "\u22DB\uFE00" }, + "⪔": { "codepoints": [10900], "characters": "\u2A94" }, + "𝔤": { "codepoints": [120100], "characters": "\uD835\uDD24" }, + "≫": { "codepoints": [8811], "characters": "\u226B" }, + "⋙": { "codepoints": [8921], "characters": "\u22D9" }, + "ℷ": { "codepoints": [8503], "characters": "\u2137" }, + "ѓ": { "codepoints": [1107], "characters": "\u0453" }, + "≷": { "codepoints": [8823], "characters": "\u2277" }, + "⪒": { "codepoints": [10898], "characters": "\u2A92" }, + "⪥": { "codepoints": [10917], "characters": "\u2AA5" }, + "⪤": { "codepoints": [10916], "characters": "\u2AA4" }, + "≩": { "codepoints": [8809], "characters": "\u2269" }, + "⪊": { "codepoints": [10890], "characters": "\u2A8A" }, + "⪊": { "codepoints": [10890], "characters": "\u2A8A" }, + "⪈": { "codepoints": [10888], "characters": "\u2A88" }, + "⪈": { "codepoints": [10888], "characters": "\u2A88" }, + "≩": { "codepoints": [8809], "characters": "\u2269" }, + "⋧": { "codepoints": [8935], "characters": "\u22E7" }, + "𝕘": { "codepoints": [120152], "characters": "\uD835\uDD58" }, + "`": { "codepoints": [96], "characters": "\u0060" }, + "ℊ": { "codepoints": [8458], "characters": "\u210A" }, + "≳": { "codepoints": [8819], "characters": "\u2273" }, + "⪎": { "codepoints": [10894], "characters": "\u2A8E" }, + "⪐": { "codepoints": [10896], "characters": "\u2A90" }, + ">": { "codepoints": [62], "characters": "\u003E" }, + ">": { "codepoints": [62], "characters": "\u003E" }, + "⪧": { "codepoints": [10919], "characters": "\u2AA7" }, + "⩺": { "codepoints": [10874], "characters": "\u2A7A" }, + "⋗": { "codepoints": [8919], "characters": "\u22D7" }, + "⦕": { "codepoints": [10645], "characters": "\u2995" }, + "⩼": { "codepoints": [10876], "characters": "\u2A7C" }, + "⪆": { "codepoints": [10886], "characters": "\u2A86" }, + "⥸": { "codepoints": [10616], "characters": "\u2978" }, + "⋗": { "codepoints": [8919], "characters": "\u22D7" }, + "⋛": { "codepoints": [8923], "characters": "\u22DB" }, + "⪌": { "codepoints": [10892], "characters": "\u2A8C" }, + "≷": { "codepoints": [8823], "characters": "\u2277" }, + "≳": { "codepoints": [8819], "characters": "\u2273" }, + "≩︀": { "codepoints": [8809, 65024], "characters": "\u2269\uFE00" }, + "≩︀": { "codepoints": [8809, 65024], "characters": "\u2269\uFE00" }, + "⇔": { "codepoints": [8660], "characters": "\u21D4" }, + " ": { "codepoints": [8202], "characters": "\u200A" }, + "½": { "codepoints": [189], "characters": "\u00BD" }, + "ℋ": { "codepoints": [8459], "characters": "\u210B" }, + "ъ": { "codepoints": [1098], "characters": "\u044A" }, + "↔": { "codepoints": [8596], "characters": "\u2194" }, + "⥈": { "codepoints": [10568], "characters": "\u2948" }, + "↭": { "codepoints": [8621], "characters": "\u21AD" }, + "ℏ": { "codepoints": [8463], "characters": "\u210F" }, + "ĥ": { "codepoints": [293], "characters": "\u0125" }, + "♥": { "codepoints": [9829], "characters": "\u2665" }, + "♥": { "codepoints": [9829], "characters": "\u2665" }, + "…": { "codepoints": [8230], "characters": "\u2026" }, + "⊹": { "codepoints": [8889], "characters": "\u22B9" }, + "𝔥": { "codepoints": [120101], "characters": "\uD835\uDD25" }, + "⤥": { "codepoints": [10533], "characters": "\u2925" }, + "⤦": { "codepoints": [10534], "characters": "\u2926" }, + "⇿": { "codepoints": [8703], "characters": "\u21FF" }, + "∻": { "codepoints": [8763], "characters": "\u223B" }, + "↩": { "codepoints": [8617], "characters": "\u21A9" }, + "↪": { "codepoints": [8618], "characters": "\u21AA" }, + "𝕙": { "codepoints": [120153], "characters": "\uD835\uDD59" }, + "―": { "codepoints": [8213], "characters": "\u2015" }, + "𝒽": { "codepoints": [119997], "characters": "\uD835\uDCBD" }, + "ℏ": { "codepoints": [8463], "characters": "\u210F" }, + "ħ": { "codepoints": [295], "characters": "\u0127" }, + "⁃": { "codepoints": [8259], "characters": "\u2043" }, + "‐": { "codepoints": [8208], "characters": "\u2010" }, + "í": { "codepoints": [237], "characters": "\u00ED" }, + "í": { "codepoints": [237], "characters": "\u00ED" }, + "⁣": { "codepoints": [8291], "characters": "\u2063" }, + "î": { "codepoints": [238], "characters": "\u00EE" }, + "î": { "codepoints": [238], "characters": "\u00EE" }, + "и": { "codepoints": [1080], "characters": "\u0438" }, + "е": { "codepoints": [1077], "characters": "\u0435" }, + "¡": { "codepoints": [161], "characters": "\u00A1" }, + "¡": { "codepoints": [161], "characters": "\u00A1" }, + "⇔": { "codepoints": [8660], "characters": "\u21D4" }, + "𝔦": { "codepoints": [120102], "characters": "\uD835\uDD26" }, + "ì": { "codepoints": [236], "characters": "\u00EC" }, + "ì": { "codepoints": [236], "characters": "\u00EC" }, + "ⅈ": { "codepoints": [8520], "characters": "\u2148" }, + "⨌": { "codepoints": [10764], "characters": "\u2A0C" }, + "∭": { "codepoints": [8749], "characters": "\u222D" }, + "⧜": { "codepoints": [10716], "characters": "\u29DC" }, + "℩": { "codepoints": [8489], "characters": "\u2129" }, + "ij": { "codepoints": [307], "characters": "\u0133" }, + "ī": { "codepoints": [299], "characters": "\u012B" }, + "ℑ": { "codepoints": [8465], "characters": "\u2111" }, + "ℐ": { "codepoints": [8464], "characters": "\u2110" }, + "ℑ": { "codepoints": [8465], "characters": "\u2111" }, + "ı": { "codepoints": [305], "characters": "\u0131" }, + "⊷": { "codepoints": [8887], "characters": "\u22B7" }, + "Ƶ": { "codepoints": [437], "characters": "\u01B5" }, + "∈": { "codepoints": [8712], "characters": "\u2208" }, + "℅": { "codepoints": [8453], "characters": "\u2105" }, + "∞": { "codepoints": [8734], "characters": "\u221E" }, + "⧝": { "codepoints": [10717], "characters": "\u29DD" }, + "ı": { "codepoints": [305], "characters": "\u0131" }, + "∫": { "codepoints": [8747], "characters": "\u222B" }, + "⊺": { "codepoints": [8890], "characters": "\u22BA" }, + "ℤ": { "codepoints": [8484], "characters": "\u2124" }, + "⊺": { "codepoints": [8890], "characters": "\u22BA" }, + "⨗": { "codepoints": [10775], "characters": "\u2A17" }, + "⨼": { "codepoints": [10812], "characters": "\u2A3C" }, + "ё": { "codepoints": [1105], "characters": "\u0451" }, + "į": { "codepoints": [303], "characters": "\u012F" }, + "𝕚": { "codepoints": [120154], "characters": "\uD835\uDD5A" }, + "ι": { "codepoints": [953], "characters": "\u03B9" }, + "⨼": { "codepoints": [10812], "characters": "\u2A3C" }, + "¿": { "codepoints": [191], "characters": "\u00BF" }, + "¿": { "codepoints": [191], "characters": "\u00BF" }, + "𝒾": { "codepoints": [119998], "characters": "\uD835\uDCBE" }, + "∈": { "codepoints": [8712], "characters": "\u2208" }, + "⋹": { "codepoints": [8953], "characters": "\u22F9" }, + "⋵": { "codepoints": [8949], "characters": "\u22F5" }, + "⋴": { "codepoints": [8948], "characters": "\u22F4" }, + "⋳": { "codepoints": [8947], "characters": "\u22F3" }, + "∈": { "codepoints": [8712], "characters": "\u2208" }, + "⁢": { "codepoints": [8290], "characters": "\u2062" }, + "ĩ": { "codepoints": [297], "characters": "\u0129" }, + "і": { "codepoints": [1110], "characters": "\u0456" }, + "ï": { "codepoints": [239], "characters": "\u00EF" }, + "ï": { "codepoints": [239], "characters": "\u00EF" }, + "ĵ": { "codepoints": [309], "characters": "\u0135" }, + "й": { "codepoints": [1081], "characters": "\u0439" }, + "𝔧": { "codepoints": [120103], "characters": "\uD835\uDD27" }, + "ȷ": { "codepoints": [567], "characters": "\u0237" }, + "𝕛": { "codepoints": [120155], "characters": "\uD835\uDD5B" }, + "𝒿": { "codepoints": [119999], "characters": "\uD835\uDCBF" }, + "ј": { "codepoints": [1112], "characters": "\u0458" }, + "є": { "codepoints": [1108], "characters": "\u0454" }, + "κ": { "codepoints": [954], "characters": "\u03BA" }, + "ϰ": { "codepoints": [1008], "characters": "\u03F0" }, + "ķ": { "codepoints": [311], "characters": "\u0137" }, + "к": { "codepoints": [1082], "characters": "\u043A" }, + "𝔨": { "codepoints": [120104], "characters": "\uD835\uDD28" }, + "ĸ": { "codepoints": [312], "characters": "\u0138" }, + "х": { "codepoints": [1093], "characters": "\u0445" }, + "ќ": { "codepoints": [1116], "characters": "\u045C" }, + "𝕜": { "codepoints": [120156], "characters": "\uD835\uDD5C" }, + "𝓀": { "codepoints": [120000], "characters": "\uD835\uDCC0" }, + "⇚": { "codepoints": [8666], "characters": "\u21DA" }, + "⇐": { "codepoints": [8656], "characters": "\u21D0" }, + "⤛": { "codepoints": [10523], "characters": "\u291B" }, + "⤎": { "codepoints": [10510], "characters": "\u290E" }, + "≦": { "codepoints": [8806], "characters": "\u2266" }, + "⪋": { "codepoints": [10891], "characters": "\u2A8B" }, + "⥢": { "codepoints": [10594], "characters": "\u2962" }, + "ĺ": { "codepoints": [314], "characters": "\u013A" }, + "⦴": { "codepoints": [10676], "characters": "\u29B4" }, + "ℒ": { "codepoints": [8466], "characters": "\u2112" }, + "λ": { "codepoints": [955], "characters": "\u03BB" }, + "⟨": { "codepoints": [10216], "characters": "\u27E8" }, + "⦑": { "codepoints": [10641], "characters": "\u2991" }, + "⟨": { "codepoints": [10216], "characters": "\u27E8" }, + "⪅": { "codepoints": [10885], "characters": "\u2A85" }, + "«": { "codepoints": [171], "characters": "\u00AB" }, + "«": { "codepoints": [171], "characters": "\u00AB" }, + "←": { "codepoints": [8592], "characters": "\u2190" }, + "⇤": { "codepoints": [8676], "characters": "\u21E4" }, + "⤟": { "codepoints": [10527], "characters": "\u291F" }, + "⤝": { "codepoints": [10525], "characters": "\u291D" }, + "↩": { "codepoints": [8617], "characters": "\u21A9" }, + "↫": { "codepoints": [8619], "characters": "\u21AB" }, + "⤹": { "codepoints": [10553], "characters": "\u2939" }, + "⥳": { "codepoints": [10611], "characters": "\u2973" }, + "↢": { "codepoints": [8610], "characters": "\u21A2" }, + "⪫": { "codepoints": [10923], "characters": "\u2AAB" }, + "⤙": { "codepoints": [10521], "characters": "\u2919" }, + "⪭": { "codepoints": [10925], "characters": "\u2AAD" }, + "⪭︀": { "codepoints": [10925, 65024], "characters": "\u2AAD\uFE00" }, + "⤌": { "codepoints": [10508], "characters": "\u290C" }, + "❲": { "codepoints": [10098], "characters": "\u2772" }, + "{": { "codepoints": [123], "characters": "\u007B" }, + "[": { "codepoints": [91], "characters": "\u005B" }, + "⦋": { "codepoints": [10635], "characters": "\u298B" }, + "⦏": { "codepoints": [10639], "characters": "\u298F" }, + "⦍": { "codepoints": [10637], "characters": "\u298D" }, + "ľ": { "codepoints": [318], "characters": "\u013E" }, + "ļ": { "codepoints": [316], "characters": "\u013C" }, + "⌈": { "codepoints": [8968], "characters": "\u2308" }, + "{": { "codepoints": [123], "characters": "\u007B" }, + "л": { "codepoints": [1083], "characters": "\u043B" }, + "⤶": { "codepoints": [10550], "characters": "\u2936" }, + "“": { "codepoints": [8220], "characters": "\u201C" }, + "„": { "codepoints": [8222], "characters": "\u201E" }, + "⥧": { "codepoints": [10599], "characters": "\u2967" }, + "⥋": { "codepoints": [10571], "characters": "\u294B" }, + "↲": { "codepoints": [8626], "characters": "\u21B2" }, + "≤": { "codepoints": [8804], "characters": "\u2264" }, + "←": { "codepoints": [8592], "characters": "\u2190" }, + "↢": { "codepoints": [8610], "characters": "\u21A2" }, + "↽": { "codepoints": [8637], "characters": "\u21BD" }, + "↼": { "codepoints": [8636], "characters": "\u21BC" }, + "⇇": { "codepoints": [8647], "characters": "\u21C7" }, + "↔": { "codepoints": [8596], "characters": "\u2194" }, + "⇆": { "codepoints": [8646], "characters": "\u21C6" }, + "⇋": { "codepoints": [8651], "characters": "\u21CB" }, + "↭": { "codepoints": [8621], "characters": "\u21AD" }, + "⋋": { "codepoints": [8907], "characters": "\u22CB" }, + "⋚": { "codepoints": [8922], "characters": "\u22DA" }, + "≤": { "codepoints": [8804], "characters": "\u2264" }, + "≦": { "codepoints": [8806], "characters": "\u2266" }, + "⩽": { "codepoints": [10877], "characters": "\u2A7D" }, + "⩽": { "codepoints": [10877], "characters": "\u2A7D" }, + "⪨": { "codepoints": [10920], "characters": "\u2AA8" }, + "⩿": { "codepoints": [10879], "characters": "\u2A7F" }, + "⪁": { "codepoints": [10881], "characters": "\u2A81" }, + "⪃": { "codepoints": [10883], "characters": "\u2A83" }, + "⋚︀": { "codepoints": [8922, 65024], "characters": "\u22DA\uFE00" }, + "⪓": { "codepoints": [10899], "characters": "\u2A93" }, + "⪅": { "codepoints": [10885], "characters": "\u2A85" }, + "⋖": { "codepoints": [8918], "characters": "\u22D6" }, + "⋚": { "codepoints": [8922], "characters": "\u22DA" }, + "⪋": { "codepoints": [10891], "characters": "\u2A8B" }, + "≶": { "codepoints": [8822], "characters": "\u2276" }, + "≲": { "codepoints": [8818], "characters": "\u2272" }, + "⥼": { "codepoints": [10620], "characters": "\u297C" }, + "⌊": { "codepoints": [8970], "characters": "\u230A" }, + "𝔩": { "codepoints": [120105], "characters": "\uD835\uDD29" }, + "≶": { "codepoints": [8822], "characters": "\u2276" }, + "⪑": { "codepoints": [10897], "characters": "\u2A91" }, + "↽": { "codepoints": [8637], "characters": "\u21BD" }, + "↼": { "codepoints": [8636], "characters": "\u21BC" }, + "⥪": { "codepoints": [10602], "characters": "\u296A" }, + "▄": { "codepoints": [9604], "characters": "\u2584" }, + "љ": { "codepoints": [1113], "characters": "\u0459" }, + "≪": { "codepoints": [8810], "characters": "\u226A" }, + "⇇": { "codepoints": [8647], "characters": "\u21C7" }, + "⌞": { "codepoints": [8990], "characters": "\u231E" }, + "⥫": { "codepoints": [10603], "characters": "\u296B" }, + "◺": { "codepoints": [9722], "characters": "\u25FA" }, + "ŀ": { "codepoints": [320], "characters": "\u0140" }, + "⎰": { "codepoints": [9136], "characters": "\u23B0" }, + "⎰": { "codepoints": [9136], "characters": "\u23B0" }, + "≨": { "codepoints": [8808], "characters": "\u2268" }, + "⪉": { "codepoints": [10889], "characters": "\u2A89" }, + "⪉": { "codepoints": [10889], "characters": "\u2A89" }, + "⪇": { "codepoints": [10887], "characters": "\u2A87" }, + "⪇": { "codepoints": [10887], "characters": "\u2A87" }, + "≨": { "codepoints": [8808], "characters": "\u2268" }, + "⋦": { "codepoints": [8934], "characters": "\u22E6" }, + "⟬": { "codepoints": [10220], "characters": "\u27EC" }, + "⇽": { "codepoints": [8701], "characters": "\u21FD" }, + "⟦": { "codepoints": [10214], "characters": "\u27E6" }, + "⟵": { "codepoints": [10229], "characters": "\u27F5" }, + "⟷": { "codepoints": [10231], "characters": "\u27F7" }, + "⟼": { "codepoints": [10236], "characters": "\u27FC" }, + "⟶": { "codepoints": [10230], "characters": "\u27F6" }, + "↫": { "codepoints": [8619], "characters": "\u21AB" }, + "↬": { "codepoints": [8620], "characters": "\u21AC" }, + "⦅": { "codepoints": [10629], "characters": "\u2985" }, + "𝕝": { "codepoints": [120157], "characters": "\uD835\uDD5D" }, + "⨭": { "codepoints": [10797], "characters": "\u2A2D" }, + "⨴": { "codepoints": [10804], "characters": "\u2A34" }, + "∗": { "codepoints": [8727], "characters": "\u2217" }, + "_": { "codepoints": [95], "characters": "\u005F" }, + "◊": { "codepoints": [9674], "characters": "\u25CA" }, + "◊": { "codepoints": [9674], "characters": "\u25CA" }, + "⧫": { "codepoints": [10731], "characters": "\u29EB" }, + "(": { "codepoints": [40], "characters": "\u0028" }, + "⦓": { "codepoints": [10643], "characters": "\u2993" }, + "⇆": { "codepoints": [8646], "characters": "\u21C6" }, + "⌟": { "codepoints": [8991], "characters": "\u231F" }, + "⇋": { "codepoints": [8651], "characters": "\u21CB" }, + "⥭": { "codepoints": [10605], "characters": "\u296D" }, + "‎": { "codepoints": [8206], "characters": "\u200E" }, + "⊿": { "codepoints": [8895], "characters": "\u22BF" }, + "‹": { "codepoints": [8249], "characters": "\u2039" }, + "𝓁": { "codepoints": [120001], "characters": "\uD835\uDCC1" }, + "↰": { "codepoints": [8624], "characters": "\u21B0" }, + "≲": { "codepoints": [8818], "characters": "\u2272" }, + "⪍": { "codepoints": [10893], "characters": "\u2A8D" }, + "⪏": { "codepoints": [10895], "characters": "\u2A8F" }, + "[": { "codepoints": [91], "characters": "\u005B" }, + "‘": { "codepoints": [8216], "characters": "\u2018" }, + "‚": { "codepoints": [8218], "characters": "\u201A" }, + "ł": { "codepoints": [322], "characters": "\u0142" }, + "<": { "codepoints": [60], "characters": "\u003C" }, + "<": { "codepoints": [60], "characters": "\u003C" }, + "⪦": { "codepoints": [10918], "characters": "\u2AA6" }, + "⩹": { "codepoints": [10873], "characters": "\u2A79" }, + "⋖": { "codepoints": [8918], "characters": "\u22D6" }, + "⋋": { "codepoints": [8907], "characters": "\u22CB" }, + "⋉": { "codepoints": [8905], "characters": "\u22C9" }, + "⥶": { "codepoints": [10614], "characters": "\u2976" }, + "⩻": { "codepoints": [10875], "characters": "\u2A7B" }, + "⦖": { "codepoints": [10646], "characters": "\u2996" }, + "◃": { "codepoints": [9667], "characters": "\u25C3" }, + "⊴": { "codepoints": [8884], "characters": "\u22B4" }, + "◂": { "codepoints": [9666], "characters": "\u25C2" }, + "⥊": { "codepoints": [10570], "characters": "\u294A" }, + "⥦": { "codepoints": [10598], "characters": "\u2966" }, + "≨︀": { "codepoints": [8808, 65024], "characters": "\u2268\uFE00" }, + "≨︀": { "codepoints": [8808, 65024], "characters": "\u2268\uFE00" }, + "∺": { "codepoints": [8762], "characters": "\u223A" }, + "¯": { "codepoints": [175], "characters": "\u00AF" }, + "¯": { "codepoints": [175], "characters": "\u00AF" }, + "♂": { "codepoints": [9794], "characters": "\u2642" }, + "✠": { "codepoints": [10016], "characters": "\u2720" }, + "✠": { "codepoints": [10016], "characters": "\u2720" }, + "↦": { "codepoints": [8614], "characters": "\u21A6" }, + "↦": { "codepoints": [8614], "characters": "\u21A6" }, + "↧": { "codepoints": [8615], "characters": "\u21A7" }, + "↤": { "codepoints": [8612], "characters": "\u21A4" }, + "↥": { "codepoints": [8613], "characters": "\u21A5" }, + "▮": { "codepoints": [9646], "characters": "\u25AE" }, + "⨩": { "codepoints": [10793], "characters": "\u2A29" }, + "м": { "codepoints": [1084], "characters": "\u043C" }, + "—": { "codepoints": [8212], "characters": "\u2014" }, + "∡": { "codepoints": [8737], "characters": "\u2221" }, + "𝔪": { "codepoints": [120106], "characters": "\uD835\uDD2A" }, + "℧": { "codepoints": [8487], "characters": "\u2127" }, + "µ": { "codepoints": [181], "characters": "\u00B5" }, + "µ": { "codepoints": [181], "characters": "\u00B5" }, + "∣": { "codepoints": [8739], "characters": "\u2223" }, + "*": { "codepoints": [42], "characters": "\u002A" }, + "⫰": { "codepoints": [10992], "characters": "\u2AF0" }, + "·": { "codepoints": [183], "characters": "\u00B7" }, + "·": { "codepoints": [183], "characters": "\u00B7" }, + "−": { "codepoints": [8722], "characters": "\u2212" }, + "⊟": { "codepoints": [8863], "characters": "\u229F" }, + "∸": { "codepoints": [8760], "characters": "\u2238" }, + "⨪": { "codepoints": [10794], "characters": "\u2A2A" }, + "⫛": { "codepoints": [10971], "characters": "\u2ADB" }, + "…": { "codepoints": [8230], "characters": "\u2026" }, + "∓": { "codepoints": [8723], "characters": "\u2213" }, + "⊧": { "codepoints": [8871], "characters": "\u22A7" }, + "𝕞": { "codepoints": [120158], "characters": "\uD835\uDD5E" }, + "∓": { "codepoints": [8723], "characters": "\u2213" }, + "𝓂": { "codepoints": [120002], "characters": "\uD835\uDCC2" }, + "∾": { "codepoints": [8766], "characters": "\u223E" }, + "μ": { "codepoints": [956], "characters": "\u03BC" }, + "⊸": { "codepoints": [8888], "characters": "\u22B8" }, + "⊸": { "codepoints": [8888], "characters": "\u22B8" }, + "⋙̸": { "codepoints": [8921, 824], "characters": "\u22D9\u0338" }, + "≫⃒": { "codepoints": [8811, 8402], "characters": "\u226B\u20D2" }, + "≫̸": { "codepoints": [8811, 824], "characters": "\u226B\u0338" }, + "⇍": { "codepoints": [8653], "characters": "\u21CD" }, + "⇎": { "codepoints": [8654], "characters": "\u21CE" }, + "⋘̸": { "codepoints": [8920, 824], "characters": "\u22D8\u0338" }, + "≪⃒": { "codepoints": [8810, 8402], "characters": "\u226A\u20D2" }, + "≪̸": { "codepoints": [8810, 824], "characters": "\u226A\u0338" }, + "⇏": { "codepoints": [8655], "characters": "\u21CF" }, + "⊯": { "codepoints": [8879], "characters": "\u22AF" }, + "⊮": { "codepoints": [8878], "characters": "\u22AE" }, + "∇": { "codepoints": [8711], "characters": "\u2207" }, + "ń": { "codepoints": [324], "characters": "\u0144" }, + "∠⃒": { "codepoints": [8736, 8402], "characters": "\u2220\u20D2" }, + "≉": { "codepoints": [8777], "characters": "\u2249" }, + "⩰̸": { "codepoints": [10864, 824], "characters": "\u2A70\u0338" }, + "≋̸": { "codepoints": [8779, 824], "characters": "\u224B\u0338" }, + "ʼn": { "codepoints": [329], "characters": "\u0149" }, + "≉": { "codepoints": [8777], "characters": "\u2249" }, + "♮": { "codepoints": [9838], "characters": "\u266E" }, + "♮": { "codepoints": [9838], "characters": "\u266E" }, + "ℕ": { "codepoints": [8469], "characters": "\u2115" }, + " ": { "codepoints": [160], "characters": "\u00A0" }, + " ": { "codepoints": [160], "characters": "\u00A0" }, + "≎̸": { "codepoints": [8782, 824], "characters": "\u224E\u0338" }, + "≏̸": { "codepoints": [8783, 824], "characters": "\u224F\u0338" }, + "⩃": { "codepoints": [10819], "characters": "\u2A43" }, + "ň": { "codepoints": [328], "characters": "\u0148" }, + "ņ": { "codepoints": [326], "characters": "\u0146" }, + "≇": { "codepoints": [8775], "characters": "\u2247" }, + "⩭̸": { "codepoints": [10861, 824], "characters": "\u2A6D\u0338" }, + "⩂": { "codepoints": [10818], "characters": "\u2A42" }, + "н": { "codepoints": [1085], "characters": "\u043D" }, + "–": { "codepoints": [8211], "characters": "\u2013" }, + "≠": { "codepoints": [8800], "characters": "\u2260" }, + "⇗": { "codepoints": [8663], "characters": "\u21D7" }, + "⤤": { "codepoints": [10532], "characters": "\u2924" }, + "↗": { "codepoints": [8599], "characters": "\u2197" }, + "↗": { "codepoints": [8599], "characters": "\u2197" }, + "≐̸": { "codepoints": [8784, 824], "characters": "\u2250\u0338" }, + "≢": { "codepoints": [8802], "characters": "\u2262" }, + "⤨": { "codepoints": [10536], "characters": "\u2928" }, + "≂̸": { "codepoints": [8770, 824], "characters": "\u2242\u0338" }, + "∄": { "codepoints": [8708], "characters": "\u2204" }, + "∄": { "codepoints": [8708], "characters": "\u2204" }, + "𝔫": { "codepoints": [120107], "characters": "\uD835\uDD2B" }, + "≧̸": { "codepoints": [8807, 824], "characters": "\u2267\u0338" }, + "≱": { "codepoints": [8817], "characters": "\u2271" }, + "≱": { "codepoints": [8817], "characters": "\u2271" }, + "≧̸": { "codepoints": [8807, 824], "characters": "\u2267\u0338" }, + "⩾̸": { "codepoints": [10878, 824], "characters": "\u2A7E\u0338" }, + "⩾̸": { "codepoints": [10878, 824], "characters": "\u2A7E\u0338" }, + "≵": { "codepoints": [8821], "characters": "\u2275" }, + "≯": { "codepoints": [8815], "characters": "\u226F" }, + "≯": { "codepoints": [8815], "characters": "\u226F" }, + "⇎": { "codepoints": [8654], "characters": "\u21CE" }, + "↮": { "codepoints": [8622], "characters": "\u21AE" }, + "⫲": { "codepoints": [10994], "characters": "\u2AF2" }, + "∋": { "codepoints": [8715], "characters": "\u220B" }, + "⋼": { "codepoints": [8956], "characters": "\u22FC" }, + "⋺": { "codepoints": [8954], "characters": "\u22FA" }, + "∋": { "codepoints": [8715], "characters": "\u220B" }, + "њ": { "codepoints": [1114], "characters": "\u045A" }, + "⇍": { "codepoints": [8653], "characters": "\u21CD" }, + "≦̸": { "codepoints": [8806, 824], "characters": "\u2266\u0338" }, + "↚": { "codepoints": [8602], "characters": "\u219A" }, + "‥": { "codepoints": [8229], "characters": "\u2025" }, + "≰": { "codepoints": [8816], "characters": "\u2270" }, + "↚": { "codepoints": [8602], "characters": "\u219A" }, + "↮": { "codepoints": [8622], "characters": "\u21AE" }, + "≰": { "codepoints": [8816], "characters": "\u2270" }, + "≦̸": { "codepoints": [8806, 824], "characters": "\u2266\u0338" }, + "⩽̸": { "codepoints": [10877, 824], "characters": "\u2A7D\u0338" }, + "⩽̸": { "codepoints": [10877, 824], "characters": "\u2A7D\u0338" }, + "≮": { "codepoints": [8814], "characters": "\u226E" }, + "≴": { "codepoints": [8820], "characters": "\u2274" }, + "≮": { "codepoints": [8814], "characters": "\u226E" }, + "⋪": { "codepoints": [8938], "characters": "\u22EA" }, + "⋬": { "codepoints": [8940], "characters": "\u22EC" }, + "∤": { "codepoints": [8740], "characters": "\u2224" }, + "𝕟": { "codepoints": [120159], "characters": "\uD835\uDD5F" }, + "¬": { "codepoints": [172], "characters": "\u00AC" }, + "¬": { "codepoints": [172], "characters": "\u00AC" }, + "∉": { "codepoints": [8713], "characters": "\u2209" }, + "⋹̸": { "codepoints": [8953, 824], "characters": "\u22F9\u0338" }, + "⋵̸": { "codepoints": [8949, 824], "characters": "\u22F5\u0338" }, + "∉": { "codepoints": [8713], "characters": "\u2209" }, + "⋷": { "codepoints": [8951], "characters": "\u22F7" }, + "⋶": { "codepoints": [8950], "characters": "\u22F6" }, + "∌": { "codepoints": [8716], "characters": "\u220C" }, + "∌": { "codepoints": [8716], "characters": "\u220C" }, + "⋾": { "codepoints": [8958], "characters": "\u22FE" }, + "⋽": { "codepoints": [8957], "characters": "\u22FD" }, + "∦": { "codepoints": [8742], "characters": "\u2226" }, + "∦": { "codepoints": [8742], "characters": "\u2226" }, + "⫽⃥": { "codepoints": [11005, 8421], "characters": "\u2AFD\u20E5" }, + "∂̸": { "codepoints": [8706, 824], "characters": "\u2202\u0338" }, + "⨔": { "codepoints": [10772], "characters": "\u2A14" }, + "⊀": { "codepoints": [8832], "characters": "\u2280" }, + "⋠": { "codepoints": [8928], "characters": "\u22E0" }, + "⪯̸": { "codepoints": [10927, 824], "characters": "\u2AAF\u0338" }, + "⊀": { "codepoints": [8832], "characters": "\u2280" }, + "⪯̸": { "codepoints": [10927, 824], "characters": "\u2AAF\u0338" }, + "⇏": { "codepoints": [8655], "characters": "\u21CF" }, + "↛": { "codepoints": [8603], "characters": "\u219B" }, + "⤳̸": { "codepoints": [10547, 824], "characters": "\u2933\u0338" }, + "↝̸": { "codepoints": [8605, 824], "characters": "\u219D\u0338" }, + "↛": { "codepoints": [8603], "characters": "\u219B" }, + "⋫": { "codepoints": [8939], "characters": "\u22EB" }, + "⋭": { "codepoints": [8941], "characters": "\u22ED" }, + "⊁": { "codepoints": [8833], "characters": "\u2281" }, + "⋡": { "codepoints": [8929], "characters": "\u22E1" }, + "⪰̸": { "codepoints": [10928, 824], "characters": "\u2AB0\u0338" }, + "𝓃": { "codepoints": [120003], "characters": "\uD835\uDCC3" }, + "∤": { "codepoints": [8740], "characters": "\u2224" }, + "∦": { "codepoints": [8742], "characters": "\u2226" }, + "≁": { "codepoints": [8769], "characters": "\u2241" }, + "≄": { "codepoints": [8772], "characters": "\u2244" }, + "≄": { "codepoints": [8772], "characters": "\u2244" }, + "∤": { "codepoints": [8740], "characters": "\u2224" }, + "∦": { "codepoints": [8742], "characters": "\u2226" }, + "⋢": { "codepoints": [8930], "characters": "\u22E2" }, + "⋣": { "codepoints": [8931], "characters": "\u22E3" }, + "⊄": { "codepoints": [8836], "characters": "\u2284" }, + "⫅̸": { "codepoints": [10949, 824], "characters": "\u2AC5\u0338" }, + "⊈": { "codepoints": [8840], "characters": "\u2288" }, + "⊂⃒": { "codepoints": [8834, 8402], "characters": "\u2282\u20D2" }, + "⊈": { "codepoints": [8840], "characters": "\u2288" }, + "⫅̸": { "codepoints": [10949, 824], "characters": "\u2AC5\u0338" }, + "⊁": { "codepoints": [8833], "characters": "\u2281" }, + "⪰̸": { "codepoints": [10928, 824], "characters": "\u2AB0\u0338" }, + "⊅": { "codepoints": [8837], "characters": "\u2285" }, + "⫆̸": { "codepoints": [10950, 824], "characters": "\u2AC6\u0338" }, + "⊉": { "codepoints": [8841], "characters": "\u2289" }, + "⊃⃒": { "codepoints": [8835, 8402], "characters": "\u2283\u20D2" }, + "⊉": { "codepoints": [8841], "characters": "\u2289" }, + "⫆̸": { "codepoints": [10950, 824], "characters": "\u2AC6\u0338" }, + "≹": { "codepoints": [8825], "characters": "\u2279" }, + "ñ": { "codepoints": [241], "characters": "\u00F1" }, + "ñ": { "codepoints": [241], "characters": "\u00F1" }, + "≸": { "codepoints": [8824], "characters": "\u2278" }, + "⋪": { "codepoints": [8938], "characters": "\u22EA" }, + "⋬": { "codepoints": [8940], "characters": "\u22EC" }, + "⋫": { "codepoints": [8939], "characters": "\u22EB" }, + "⋭": { "codepoints": [8941], "characters": "\u22ED" }, + "ν": { "codepoints": [957], "characters": "\u03BD" }, + "#": { "codepoints": [35], "characters": "\u0023" }, + "№": { "codepoints": [8470], "characters": "\u2116" }, + " ": { "codepoints": [8199], "characters": "\u2007" }, + "⊭": { "codepoints": [8877], "characters": "\u22AD" }, + "⤄": { "codepoints": [10500], "characters": "\u2904" }, + "≍⃒": { "codepoints": [8781, 8402], "characters": "\u224D\u20D2" }, + "⊬": { "codepoints": [8876], "characters": "\u22AC" }, + "≥⃒": { "codepoints": [8805, 8402], "characters": "\u2265\u20D2" }, + ">⃒": { "codepoints": [62, 8402], "characters": "\u003E\u20D2" }, + "⧞": { "codepoints": [10718], "characters": "\u29DE" }, + "⤂": { "codepoints": [10498], "characters": "\u2902" }, + "≤⃒": { "codepoints": [8804, 8402], "characters": "\u2264\u20D2" }, + "<⃒": { "codepoints": [60, 8402], "characters": "\u003C\u20D2" }, + "⊴⃒": { "codepoints": [8884, 8402], "characters": "\u22B4\u20D2" }, + "⤃": { "codepoints": [10499], "characters": "\u2903" }, + "⊵⃒": { "codepoints": [8885, 8402], "characters": "\u22B5\u20D2" }, + "∼⃒": { "codepoints": [8764, 8402], "characters": "\u223C\u20D2" }, + "⇖": { "codepoints": [8662], "characters": "\u21D6" }, + "⤣": { "codepoints": [10531], "characters": "\u2923" }, + "↖": { "codepoints": [8598], "characters": "\u2196" }, + "↖": { "codepoints": [8598], "characters": "\u2196" }, + "⤧": { "codepoints": [10535], "characters": "\u2927" }, + "Ⓢ": { "codepoints": [9416], "characters": "\u24C8" }, + "ó": { "codepoints": [243], "characters": "\u00F3" }, + "ó": { "codepoints": [243], "characters": "\u00F3" }, + "⊛": { "codepoints": [8859], "characters": "\u229B" }, + "⊚": { "codepoints": [8858], "characters": "\u229A" }, + "ô": { "codepoints": [244], "characters": "\u00F4" }, + "ô": { "codepoints": [244], "characters": "\u00F4" }, + "о": { "codepoints": [1086], "characters": "\u043E" }, + "⊝": { "codepoints": [8861], "characters": "\u229D" }, + "ő": { "codepoints": [337], "characters": "\u0151" }, + "⨸": { "codepoints": [10808], "characters": "\u2A38" }, + "⊙": { "codepoints": [8857], "characters": "\u2299" }, + "⦼": { "codepoints": [10684], "characters": "\u29BC" }, + "œ": { "codepoints": [339], "characters": "\u0153" }, + "⦿": { "codepoints": [10687], "characters": "\u29BF" }, + "𝔬": { "codepoints": [120108], "characters": "\uD835\uDD2C" }, + "˛": { "codepoints": [731], "characters": "\u02DB" }, + "ò": { "codepoints": [242], "characters": "\u00F2" }, + "ò": { "codepoints": [242], "characters": "\u00F2" }, + "⧁": { "codepoints": [10689], "characters": "\u29C1" }, + "⦵": { "codepoints": [10677], "characters": "\u29B5" }, + "Ω": { "codepoints": [937], "characters": "\u03A9" }, + "∮": { "codepoints": [8750], "characters": "\u222E" }, + "↺": { "codepoints": [8634], "characters": "\u21BA" }, + "⦾": { "codepoints": [10686], "characters": "\u29BE" }, + "⦻": { "codepoints": [10683], "characters": "\u29BB" }, + "‾": { "codepoints": [8254], "characters": "\u203E" }, + "⧀": { "codepoints": [10688], "characters": "\u29C0" }, + "ō": { "codepoints": [333], "characters": "\u014D" }, + "ω": { "codepoints": [969], "characters": "\u03C9" }, + "ο": { "codepoints": [959], "characters": "\u03BF" }, + "⦶": { "codepoints": [10678], "characters": "\u29B6" }, + "⊖": { "codepoints": [8854], "characters": "\u2296" }, + "𝕠": { "codepoints": [120160], "characters": "\uD835\uDD60" }, + "⦷": { "codepoints": [10679], "characters": "\u29B7" }, + "⦹": { "codepoints": [10681], "characters": "\u29B9" }, + "⊕": { "codepoints": [8853], "characters": "\u2295" }, + "∨": { "codepoints": [8744], "characters": "\u2228" }, + "↻": { "codepoints": [8635], "characters": "\u21BB" }, + "⩝": { "codepoints": [10845], "characters": "\u2A5D" }, + "ℴ": { "codepoints": [8500], "characters": "\u2134" }, + "ℴ": { "codepoints": [8500], "characters": "\u2134" }, + "ª": { "codepoints": [170], "characters": "\u00AA" }, + "ª": { "codepoints": [170], "characters": "\u00AA" }, + "º": { "codepoints": [186], "characters": "\u00BA" }, + "º": { "codepoints": [186], "characters": "\u00BA" }, + "⊶": { "codepoints": [8886], "characters": "\u22B6" }, + "⩖": { "codepoints": [10838], "characters": "\u2A56" }, + "⩗": { "codepoints": [10839], "characters": "\u2A57" }, + "⩛": { "codepoints": [10843], "characters": "\u2A5B" }, + "ℴ": { "codepoints": [8500], "characters": "\u2134" }, + "ø": { "codepoints": [248], "characters": "\u00F8" }, + "ø": { "codepoints": [248], "characters": "\u00F8" }, + "⊘": { "codepoints": [8856], "characters": "\u2298" }, + "õ": { "codepoints": [245], "characters": "\u00F5" }, + "õ": { "codepoints": [245], "characters": "\u00F5" }, + "⊗": { "codepoints": [8855], "characters": "\u2297" }, + "⨶": { "codepoints": [10806], "characters": "\u2A36" }, + "ö": { "codepoints": [246], "characters": "\u00F6" }, + "ö": { "codepoints": [246], "characters": "\u00F6" }, + "⌽": { "codepoints": [9021], "characters": "\u233D" }, + "∥": { "codepoints": [8741], "characters": "\u2225" }, + "¶": { "codepoints": [182], "characters": "\u00B6" }, + "¶": { "codepoints": [182], "characters": "\u00B6" }, + "∥": { "codepoints": [8741], "characters": "\u2225" }, + "⫳": { "codepoints": [10995], "characters": "\u2AF3" }, + "⫽": { "codepoints": [11005], "characters": "\u2AFD" }, + "∂": { "codepoints": [8706], "characters": "\u2202" }, + "п": { "codepoints": [1087], "characters": "\u043F" }, + "%": { "codepoints": [37], "characters": "\u0025" }, + ".": { "codepoints": [46], "characters": "\u002E" }, + "‰": { "codepoints": [8240], "characters": "\u2030" }, + "⊥": { "codepoints": [8869], "characters": "\u22A5" }, + "‱": { "codepoints": [8241], "characters": "\u2031" }, + "𝔭": { "codepoints": [120109], "characters": "\uD835\uDD2D" }, + "φ": { "codepoints": [966], "characters": "\u03C6" }, + "ϕ": { "codepoints": [981], "characters": "\u03D5" }, + "ℳ": { "codepoints": [8499], "characters": "\u2133" }, + "☎": { "codepoints": [9742], "characters": "\u260E" }, + "π": { "codepoints": [960], "characters": "\u03C0" }, + "⋔": { "codepoints": [8916], "characters": "\u22D4" }, + "ϖ": { "codepoints": [982], "characters": "\u03D6" }, + "ℏ": { "codepoints": [8463], "characters": "\u210F" }, + "ℎ": { "codepoints": [8462], "characters": "\u210E" }, + "ℏ": { "codepoints": [8463], "characters": "\u210F" }, + "+": { "codepoints": [43], "characters": "\u002B" }, + "⨣": { "codepoints": [10787], "characters": "\u2A23" }, + "⊞": { "codepoints": [8862], "characters": "\u229E" }, + "⨢": { "codepoints": [10786], "characters": "\u2A22" }, + "∔": { "codepoints": [8724], "characters": "\u2214" }, + "⨥": { "codepoints": [10789], "characters": "\u2A25" }, + "⩲": { "codepoints": [10866], "characters": "\u2A72" }, + "±": { "codepoints": [177], "characters": "\u00B1" }, + "±": { "codepoints": [177], "characters": "\u00B1" }, + "⨦": { "codepoints": [10790], "characters": "\u2A26" }, + "⨧": { "codepoints": [10791], "characters": "\u2A27" }, + "±": { "codepoints": [177], "characters": "\u00B1" }, + "⨕": { "codepoints": [10773], "characters": "\u2A15" }, + "𝕡": { "codepoints": [120161], "characters": "\uD835\uDD61" }, + "£": { "codepoints": [163], "characters": "\u00A3" }, + "£": { "codepoints": [163], "characters": "\u00A3" }, + "≺": { "codepoints": [8826], "characters": "\u227A" }, + "⪳": { "codepoints": [10931], "characters": "\u2AB3" }, + "⪷": { "codepoints": [10935], "characters": "\u2AB7" }, + "≼": { "codepoints": [8828], "characters": "\u227C" }, + "⪯": { "codepoints": [10927], "characters": "\u2AAF" }, + "≺": { "codepoints": [8826], "characters": "\u227A" }, + "⪷": { "codepoints": [10935], "characters": "\u2AB7" }, + "≼": { "codepoints": [8828], "characters": "\u227C" }, + "⪯": { "codepoints": [10927], "characters": "\u2AAF" }, + "⪹": { "codepoints": [10937], "characters": "\u2AB9" }, + "⪵": { "codepoints": [10933], "characters": "\u2AB5" }, + "⋨": { "codepoints": [8936], "characters": "\u22E8" }, + "≾": { "codepoints": [8830], "characters": "\u227E" }, + "′": { "codepoints": [8242], "characters": "\u2032" }, + "ℙ": { "codepoints": [8473], "characters": "\u2119" }, + "⪵": { "codepoints": [10933], "characters": "\u2AB5" }, + "⪹": { "codepoints": [10937], "characters": "\u2AB9" }, + "⋨": { "codepoints": [8936], "characters": "\u22E8" }, + "∏": { "codepoints": [8719], "characters": "\u220F" }, + "⌮": { "codepoints": [9006], "characters": "\u232E" }, + "⌒": { "codepoints": [8978], "characters": "\u2312" }, + "⌓": { "codepoints": [8979], "characters": "\u2313" }, + "∝": { "codepoints": [8733], "characters": "\u221D" }, + "∝": { "codepoints": [8733], "characters": "\u221D" }, + "≾": { "codepoints": [8830], "characters": "\u227E" }, + "⊰": { "codepoints": [8880], "characters": "\u22B0" }, + "𝓅": { "codepoints": [120005], "characters": "\uD835\uDCC5" }, + "ψ": { "codepoints": [968], "characters": "\u03C8" }, + " ": { "codepoints": [8200], "characters": "\u2008" }, + "𝔮": { "codepoints": [120110], "characters": "\uD835\uDD2E" }, + "⨌": { "codepoints": [10764], "characters": "\u2A0C" }, + "𝕢": { "codepoints": [120162], "characters": "\uD835\uDD62" }, + "⁗": { "codepoints": [8279], "characters": "\u2057" }, + "𝓆": { "codepoints": [120006], "characters": "\uD835\uDCC6" }, + "ℍ": { "codepoints": [8461], "characters": "\u210D" }, + "⨖": { "codepoints": [10774], "characters": "\u2A16" }, + "?": { "codepoints": [63], "characters": "\u003F" }, + "≟": { "codepoints": [8799], "characters": "\u225F" }, + """: { "codepoints": [34], "characters": "\u0022" }, + """: { "codepoints": [34], "characters": "\u0022" }, + "⇛": { "codepoints": [8667], "characters": "\u21DB" }, + "⇒": { "codepoints": [8658], "characters": "\u21D2" }, + "⤜": { "codepoints": [10524], "characters": "\u291C" }, + "⤏": { "codepoints": [10511], "characters": "\u290F" }, + "⥤": { "codepoints": [10596], "characters": "\u2964" }, + "∽̱": { "codepoints": [8765, 817], "characters": "\u223D\u0331" }, + "ŕ": { "codepoints": [341], "characters": "\u0155" }, + "√": { "codepoints": [8730], "characters": "\u221A" }, + "⦳": { "codepoints": [10675], "characters": "\u29B3" }, + "⟩": { "codepoints": [10217], "characters": "\u27E9" }, + "⦒": { "codepoints": [10642], "characters": "\u2992" }, + "⦥": { "codepoints": [10661], "characters": "\u29A5" }, + "⟩": { "codepoints": [10217], "characters": "\u27E9" }, + "»": { "codepoints": [187], "characters": "\u00BB" }, + "»": { "codepoints": [187], "characters": "\u00BB" }, + "→": { "codepoints": [8594], "characters": "\u2192" }, + "⥵": { "codepoints": [10613], "characters": "\u2975" }, + "⇥": { "codepoints": [8677], "characters": "\u21E5" }, + "⤠": { "codepoints": [10528], "characters": "\u2920" }, + "⤳": { "codepoints": [10547], "characters": "\u2933" }, + "⤞": { "codepoints": [10526], "characters": "\u291E" }, + "↪": { "codepoints": [8618], "characters": "\u21AA" }, + "↬": { "codepoints": [8620], "characters": "\u21AC" }, + "⥅": { "codepoints": [10565], "characters": "\u2945" }, + "⥴": { "codepoints": [10612], "characters": "\u2974" }, + "↣": { "codepoints": [8611], "characters": "\u21A3" }, + "↝": { "codepoints": [8605], "characters": "\u219D" }, + "⤚": { "codepoints": [10522], "characters": "\u291A" }, + "∶": { "codepoints": [8758], "characters": "\u2236" }, + "ℚ": { "codepoints": [8474], "characters": "\u211A" }, + "⤍": { "codepoints": [10509], "characters": "\u290D" }, + "❳": { "codepoints": [10099], "characters": "\u2773" }, + "}": { "codepoints": [125], "characters": "\u007D" }, + "]": { "codepoints": [93], "characters": "\u005D" }, + "⦌": { "codepoints": [10636], "characters": "\u298C" }, + "⦎": { "codepoints": [10638], "characters": "\u298E" }, + "⦐": { "codepoints": [10640], "characters": "\u2990" }, + "ř": { "codepoints": [345], "characters": "\u0159" }, + "ŗ": { "codepoints": [343], "characters": "\u0157" }, + "⌉": { "codepoints": [8969], "characters": "\u2309" }, + "}": { "codepoints": [125], "characters": "\u007D" }, + "р": { "codepoints": [1088], "characters": "\u0440" }, + "⤷": { "codepoints": [10551], "characters": "\u2937" }, + "⥩": { "codepoints": [10601], "characters": "\u2969" }, + "”": { "codepoints": [8221], "characters": "\u201D" }, + "”": { "codepoints": [8221], "characters": "\u201D" }, + "↳": { "codepoints": [8627], "characters": "\u21B3" }, + "ℜ": { "codepoints": [8476], "characters": "\u211C" }, + "ℛ": { "codepoints": [8475], "characters": "\u211B" }, + "ℜ": { "codepoints": [8476], "characters": "\u211C" }, + "ℝ": { "codepoints": [8477], "characters": "\u211D" }, + "▭": { "codepoints": [9645], "characters": "\u25AD" }, + "®": { "codepoints": [174], "characters": "\u00AE" }, + "®": { "codepoints": [174], "characters": "\u00AE" }, + "⥽": { "codepoints": [10621], "characters": "\u297D" }, + "⌋": { "codepoints": [8971], "characters": "\u230B" }, + "𝔯": { "codepoints": [120111], "characters": "\uD835\uDD2F" }, + "⇁": { "codepoints": [8641], "characters": "\u21C1" }, + "⇀": { "codepoints": [8640], "characters": "\u21C0" }, + "⥬": { "codepoints": [10604], "characters": "\u296C" }, + "ρ": { "codepoints": [961], "characters": "\u03C1" }, + "ϱ": { "codepoints": [1009], "characters": "\u03F1" }, + "→": { "codepoints": [8594], "characters": "\u2192" }, + "↣": { "codepoints": [8611], "characters": "\u21A3" }, + "⇁": { "codepoints": [8641], "characters": "\u21C1" }, + "⇀": { "codepoints": [8640], "characters": "\u21C0" }, + "⇄": { "codepoints": [8644], "characters": "\u21C4" }, + "⇌": { "codepoints": [8652], "characters": "\u21CC" }, + "⇉": { "codepoints": [8649], "characters": "\u21C9" }, + "↝": { "codepoints": [8605], "characters": "\u219D" }, + "⋌": { "codepoints": [8908], "characters": "\u22CC" }, + "˚": { "codepoints": [730], "characters": "\u02DA" }, + "≓": { "codepoints": [8787], "characters": "\u2253" }, + "⇄": { "codepoints": [8644], "characters": "\u21C4" }, + "⇌": { "codepoints": [8652], "characters": "\u21CC" }, + "‏": { "codepoints": [8207], "characters": "\u200F" }, + "⎱": { "codepoints": [9137], "characters": "\u23B1" }, + "⎱": { "codepoints": [9137], "characters": "\u23B1" }, + "⫮": { "codepoints": [10990], "characters": "\u2AEE" }, + "⟭": { "codepoints": [10221], "characters": "\u27ED" }, + "⇾": { "codepoints": [8702], "characters": "\u21FE" }, + "⟧": { "codepoints": [10215], "characters": "\u27E7" }, + "⦆": { "codepoints": [10630], "characters": "\u2986" }, + "𝕣": { "codepoints": [120163], "characters": "\uD835\uDD63" }, + "⨮": { "codepoints": [10798], "characters": "\u2A2E" }, + "⨵": { "codepoints": [10805], "characters": "\u2A35" }, + ")": { "codepoints": [41], "characters": "\u0029" }, + "⦔": { "codepoints": [10644], "characters": "\u2994" }, + "⨒": { "codepoints": [10770], "characters": "\u2A12" }, + "⇉": { "codepoints": [8649], "characters": "\u21C9" }, + "›": { "codepoints": [8250], "characters": "\u203A" }, + "𝓇": { "codepoints": [120007], "characters": "\uD835\uDCC7" }, + "↱": { "codepoints": [8625], "characters": "\u21B1" }, + "]": { "codepoints": [93], "characters": "\u005D" }, + "’": { "codepoints": [8217], "characters": "\u2019" }, + "’": { "codepoints": [8217], "characters": "\u2019" }, + "⋌": { "codepoints": [8908], "characters": "\u22CC" }, + "⋊": { "codepoints": [8906], "characters": "\u22CA" }, + "▹": { "codepoints": [9657], "characters": "\u25B9" }, + "⊵": { "codepoints": [8885], "characters": "\u22B5" }, + "▸": { "codepoints": [9656], "characters": "\u25B8" }, + "⧎": { "codepoints": [10702], "characters": "\u29CE" }, + "⥨": { "codepoints": [10600], "characters": "\u2968" }, + "℞": { "codepoints": [8478], "characters": "\u211E" }, + "ś": { "codepoints": [347], "characters": "\u015B" }, + "‚": { "codepoints": [8218], "characters": "\u201A" }, + "≻": { "codepoints": [8827], "characters": "\u227B" }, + "⪴": { "codepoints": [10932], "characters": "\u2AB4" }, + "⪸": { "codepoints": [10936], "characters": "\u2AB8" }, + "š": { "codepoints": [353], "characters": "\u0161" }, + "≽": { "codepoints": [8829], "characters": "\u227D" }, + "⪰": { "codepoints": [10928], "characters": "\u2AB0" }, + "ş": { "codepoints": [351], "characters": "\u015F" }, + "ŝ": { "codepoints": [349], "characters": "\u015D" }, + "⪶": { "codepoints": [10934], "characters": "\u2AB6" }, + "⪺": { "codepoints": [10938], "characters": "\u2ABA" }, + "⋩": { "codepoints": [8937], "characters": "\u22E9" }, + "⨓": { "codepoints": [10771], "characters": "\u2A13" }, + "≿": { "codepoints": [8831], "characters": "\u227F" }, + "с": { "codepoints": [1089], "characters": "\u0441" }, + "⋅": { "codepoints": [8901], "characters": "\u22C5" }, + "⊡": { "codepoints": [8865], "characters": "\u22A1" }, + "⩦": { "codepoints": [10854], "characters": "\u2A66" }, + "⇘": { "codepoints": [8664], "characters": "\u21D8" }, + "⤥": { "codepoints": [10533], "characters": "\u2925" }, + "↘": { "codepoints": [8600], "characters": "\u2198" }, + "↘": { "codepoints": [8600], "characters": "\u2198" }, + "§": { "codepoints": [167], "characters": "\u00A7" }, + "§": { "codepoints": [167], "characters": "\u00A7" }, + ";": { "codepoints": [59], "characters": "\u003B" }, + "⤩": { "codepoints": [10537], "characters": "\u2929" }, + "∖": { "codepoints": [8726], "characters": "\u2216" }, + "∖": { "codepoints": [8726], "characters": "\u2216" }, + "✶": { "codepoints": [10038], "characters": "\u2736" }, + "𝔰": { "codepoints": [120112], "characters": "\uD835\uDD30" }, + "⌢": { "codepoints": [8994], "characters": "\u2322" }, + "♯": { "codepoints": [9839], "characters": "\u266F" }, + "щ": { "codepoints": [1097], "characters": "\u0449" }, + "ш": { "codepoints": [1096], "characters": "\u0448" }, + "∣": { "codepoints": [8739], "characters": "\u2223" }, + "∥": { "codepoints": [8741], "characters": "\u2225" }, + "­": { "codepoints": [173], "characters": "\u00AD" }, + "­": { "codepoints": [173], "characters": "\u00AD" }, + "σ": { "codepoints": [963], "characters": "\u03C3" }, + "ς": { "codepoints": [962], "characters": "\u03C2" }, + "ς": { "codepoints": [962], "characters": "\u03C2" }, + "∼": { "codepoints": [8764], "characters": "\u223C" }, + "⩪": { "codepoints": [10858], "characters": "\u2A6A" }, + "≃": { "codepoints": [8771], "characters": "\u2243" }, + "≃": { "codepoints": [8771], "characters": "\u2243" }, + "⪞": { "codepoints": [10910], "characters": "\u2A9E" }, + "⪠": { "codepoints": [10912], "characters": "\u2AA0" }, + "⪝": { "codepoints": [10909], "characters": "\u2A9D" }, + "⪟": { "codepoints": [10911], "characters": "\u2A9F" }, + "≆": { "codepoints": [8774], "characters": "\u2246" }, + "⨤": { "codepoints": [10788], "characters": "\u2A24" }, + "⥲": { "codepoints": [10610], "characters": "\u2972" }, + "←": { "codepoints": [8592], "characters": "\u2190" }, + "∖": { "codepoints": [8726], "characters": "\u2216" }, + "⨳": { "codepoints": [10803], "characters": "\u2A33" }, + "⧤": { "codepoints": [10724], "characters": "\u29E4" }, + "∣": { "codepoints": [8739], "characters": "\u2223" }, + "⌣": { "codepoints": [8995], "characters": "\u2323" }, + "⪪": { "codepoints": [10922], "characters": "\u2AAA" }, + "⪬": { "codepoints": [10924], "characters": "\u2AAC" }, + "⪬︀": { "codepoints": [10924, 65024], "characters": "\u2AAC\uFE00" }, + "ь": { "codepoints": [1100], "characters": "\u044C" }, + "/": { "codepoints": [47], "characters": "\u002F" }, + "⧄": { "codepoints": [10692], "characters": "\u29C4" }, + "⌿": { "codepoints": [9023], "characters": "\u233F" }, + "𝕤": { "codepoints": [120164], "characters": "\uD835\uDD64" }, + "♠": { "codepoints": [9824], "characters": "\u2660" }, + "♠": { "codepoints": [9824], "characters": "\u2660" }, + "∥": { "codepoints": [8741], "characters": "\u2225" }, + "⊓": { "codepoints": [8851], "characters": "\u2293" }, + "⊓︀": { "codepoints": [8851, 65024], "characters": "\u2293\uFE00" }, + "⊔": { "codepoints": [8852], "characters": "\u2294" }, + "⊔︀": { "codepoints": [8852, 65024], "characters": "\u2294\uFE00" }, + "⊏": { "codepoints": [8847], "characters": "\u228F" }, + "⊑": { "codepoints": [8849], "characters": "\u2291" }, + "⊏": { "codepoints": [8847], "characters": "\u228F" }, + "⊑": { "codepoints": [8849], "characters": "\u2291" }, + "⊐": { "codepoints": [8848], "characters": "\u2290" }, + "⊒": { "codepoints": [8850], "characters": "\u2292" }, + "⊐": { "codepoints": [8848], "characters": "\u2290" }, + "⊒": { "codepoints": [8850], "characters": "\u2292" }, + "□": { "codepoints": [9633], "characters": "\u25A1" }, + "□": { "codepoints": [9633], "characters": "\u25A1" }, + "▪": { "codepoints": [9642], "characters": "\u25AA" }, + "▪": { "codepoints": [9642], "characters": "\u25AA" }, + "→": { "codepoints": [8594], "characters": "\u2192" }, + "𝓈": { "codepoints": [120008], "characters": "\uD835\uDCC8" }, + "∖": { "codepoints": [8726], "characters": "\u2216" }, + "⌣": { "codepoints": [8995], "characters": "\u2323" }, + "⋆": { "codepoints": [8902], "characters": "\u22C6" }, + "☆": { "codepoints": [9734], "characters": "\u2606" }, + "★": { "codepoints": [9733], "characters": "\u2605" }, + "ϵ": { "codepoints": [1013], "characters": "\u03F5" }, + "ϕ": { "codepoints": [981], "characters": "\u03D5" }, + "¯": { "codepoints": [175], "characters": "\u00AF" }, + "⊂": { "codepoints": [8834], "characters": "\u2282" }, + "⫅": { "codepoints": [10949], "characters": "\u2AC5" }, + "⪽": { "codepoints": [10941], "characters": "\u2ABD" }, + "⊆": { "codepoints": [8838], "characters": "\u2286" }, + "⫃": { "codepoints": [10947], "characters": "\u2AC3" }, + "⫁": { "codepoints": [10945], "characters": "\u2AC1" }, + "⫋": { "codepoints": [10955], "characters": "\u2ACB" }, + "⊊": { "codepoints": [8842], "characters": "\u228A" }, + "⪿": { "codepoints": [10943], "characters": "\u2ABF" }, + "⥹": { "codepoints": [10617], "characters": "\u2979" }, + "⊂": { "codepoints": [8834], "characters": "\u2282" }, + "⊆": { "codepoints": [8838], "characters": "\u2286" }, + "⫅": { "codepoints": [10949], "characters": "\u2AC5" }, + "⊊": { "codepoints": [8842], "characters": "\u228A" }, + "⫋": { "codepoints": [10955], "characters": "\u2ACB" }, + "⫇": { "codepoints": [10951], "characters": "\u2AC7" }, + "⫕": { "codepoints": [10965], "characters": "\u2AD5" }, + "⫓": { "codepoints": [10963], "characters": "\u2AD3" }, + "≻": { "codepoints": [8827], "characters": "\u227B" }, + "⪸": { "codepoints": [10936], "characters": "\u2AB8" }, + "≽": { "codepoints": [8829], "characters": "\u227D" }, + "⪰": { "codepoints": [10928], "characters": "\u2AB0" }, + "⪺": { "codepoints": [10938], "characters": "\u2ABA" }, + "⪶": { "codepoints": [10934], "characters": "\u2AB6" }, + "⋩": { "codepoints": [8937], "characters": "\u22E9" }, + "≿": { "codepoints": [8831], "characters": "\u227F" }, + "∑": { "codepoints": [8721], "characters": "\u2211" }, + "♪": { "codepoints": [9834], "characters": "\u266A" }, + "¹": { "codepoints": [185], "characters": "\u00B9" }, + "¹": { "codepoints": [185], "characters": "\u00B9" }, + "²": { "codepoints": [178], "characters": "\u00B2" }, + "²": { "codepoints": [178], "characters": "\u00B2" }, + "³": { "codepoints": [179], "characters": "\u00B3" }, + "³": { "codepoints": [179], "characters": "\u00B3" }, + "⊃": { "codepoints": [8835], "characters": "\u2283" }, + "⫆": { "codepoints": [10950], "characters": "\u2AC6" }, + "⪾": { "codepoints": [10942], "characters": "\u2ABE" }, + "⫘": { "codepoints": [10968], "characters": "\u2AD8" }, + "⊇": { "codepoints": [8839], "characters": "\u2287" }, + "⫄": { "codepoints": [10948], "characters": "\u2AC4" }, + "⟉": { "codepoints": [10185], "characters": "\u27C9" }, + "⫗": { "codepoints": [10967], "characters": "\u2AD7" }, + "⥻": { "codepoints": [10619], "characters": "\u297B" }, + "⫂": { "codepoints": [10946], "characters": "\u2AC2" }, + "⫌": { "codepoints": [10956], "characters": "\u2ACC" }, + "⊋": { "codepoints": [8843], "characters": "\u228B" }, + "⫀": { "codepoints": [10944], "characters": "\u2AC0" }, + "⊃": { "codepoints": [8835], "characters": "\u2283" }, + "⊇": { "codepoints": [8839], "characters": "\u2287" }, + "⫆": { "codepoints": [10950], "characters": "\u2AC6" }, + "⊋": { "codepoints": [8843], "characters": "\u228B" }, + "⫌": { "codepoints": [10956], "characters": "\u2ACC" }, + "⫈": { "codepoints": [10952], "characters": "\u2AC8" }, + "⫔": { "codepoints": [10964], "characters": "\u2AD4" }, + "⫖": { "codepoints": [10966], "characters": "\u2AD6" }, + "⇙": { "codepoints": [8665], "characters": "\u21D9" }, + "⤦": { "codepoints": [10534], "characters": "\u2926" }, + "↙": { "codepoints": [8601], "characters": "\u2199" }, + "↙": { "codepoints": [8601], "characters": "\u2199" }, + "⤪": { "codepoints": [10538], "characters": "\u292A" }, + "ß": { "codepoints": [223], "characters": "\u00DF" }, + "ß": { "codepoints": [223], "characters": "\u00DF" }, + "⌖": { "codepoints": [8982], "characters": "\u2316" }, + "τ": { "codepoints": [964], "characters": "\u03C4" }, + "⎴": { "codepoints": [9140], "characters": "\u23B4" }, + "ť": { "codepoints": [357], "characters": "\u0165" }, + "ţ": { "codepoints": [355], "characters": "\u0163" }, + "т": { "codepoints": [1090], "characters": "\u0442" }, + "⃛": { "codepoints": [8411], "characters": "\u20DB" }, + "⌕": { "codepoints": [8981], "characters": "\u2315" }, + "𝔱": { "codepoints": [120113], "characters": "\uD835\uDD31" }, + "∴": { "codepoints": [8756], "characters": "\u2234" }, + "∴": { "codepoints": [8756], "characters": "\u2234" }, + "θ": { "codepoints": [952], "characters": "\u03B8" }, + "ϑ": { "codepoints": [977], "characters": "\u03D1" }, + "ϑ": { "codepoints": [977], "characters": "\u03D1" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "∼": { "codepoints": [8764], "characters": "\u223C" }, + " ": { "codepoints": [8201], "characters": "\u2009" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "∼": { "codepoints": [8764], "characters": "\u223C" }, + "þ": { "codepoints": [254], "characters": "\u00FE" }, + "þ": { "codepoints": [254], "characters": "\u00FE" }, + "˜": { "codepoints": [732], "characters": "\u02DC" }, + "×": { "codepoints": [215], "characters": "\u00D7" }, + "×": { "codepoints": [215], "characters": "\u00D7" }, + "⊠": { "codepoints": [8864], "characters": "\u22A0" }, + "⨱": { "codepoints": [10801], "characters": "\u2A31" }, + "⨰": { "codepoints": [10800], "characters": "\u2A30" }, + "∭": { "codepoints": [8749], "characters": "\u222D" }, + "⤨": { "codepoints": [10536], "characters": "\u2928" }, + "⊤": { "codepoints": [8868], "characters": "\u22A4" }, + "⌶": { "codepoints": [9014], "characters": "\u2336" }, + "⫱": { "codepoints": [10993], "characters": "\u2AF1" }, + "𝕥": { "codepoints": [120165], "characters": "\uD835\uDD65" }, + "⫚": { "codepoints": [10970], "characters": "\u2ADA" }, + "⤩": { "codepoints": [10537], "characters": "\u2929" }, + "‴": { "codepoints": [8244], "characters": "\u2034" }, + "™": { "codepoints": [8482], "characters": "\u2122" }, + "▵": { "codepoints": [9653], "characters": "\u25B5" }, + "▿": { "codepoints": [9663], "characters": "\u25BF" }, + "◃": { "codepoints": [9667], "characters": "\u25C3" }, + "⊴": { "codepoints": [8884], "characters": "\u22B4" }, + "≜": { "codepoints": [8796], "characters": "\u225C" }, + "▹": { "codepoints": [9657], "characters": "\u25B9" }, + "⊵": { "codepoints": [8885], "characters": "\u22B5" }, + "◬": { "codepoints": [9708], "characters": "\u25EC" }, + "≜": { "codepoints": [8796], "characters": "\u225C" }, + "⨺": { "codepoints": [10810], "characters": "\u2A3A" }, + "⨹": { "codepoints": [10809], "characters": "\u2A39" }, + "⧍": { "codepoints": [10701], "characters": "\u29CD" }, + "⨻": { "codepoints": [10811], "characters": "\u2A3B" }, + "⏢": { "codepoints": [9186], "characters": "\u23E2" }, + "𝓉": { "codepoints": [120009], "characters": "\uD835\uDCC9" }, + "ц": { "codepoints": [1094], "characters": "\u0446" }, + "ћ": { "codepoints": [1115], "characters": "\u045B" }, + "ŧ": { "codepoints": [359], "characters": "\u0167" }, + "≬": { "codepoints": [8812], "characters": "\u226C" }, + "↞": { "codepoints": [8606], "characters": "\u219E" }, + "↠": { "codepoints": [8608], "characters": "\u21A0" }, + "⇑": { "codepoints": [8657], "characters": "\u21D1" }, + "⥣": { "codepoints": [10595], "characters": "\u2963" }, + "ú": { "codepoints": [250], "characters": "\u00FA" }, + "ú": { "codepoints": [250], "characters": "\u00FA" }, + "↑": { "codepoints": [8593], "characters": "\u2191" }, + "ў": { "codepoints": [1118], "characters": "\u045E" }, + "ŭ": { "codepoints": [365], "characters": "\u016D" }, + "û": { "codepoints": [251], "characters": "\u00FB" }, + "û": { "codepoints": [251], "characters": "\u00FB" }, + "у": { "codepoints": [1091], "characters": "\u0443" }, + "⇅": { "codepoints": [8645], "characters": "\u21C5" }, + "ű": { "codepoints": [369], "characters": "\u0171" }, + "⥮": { "codepoints": [10606], "characters": "\u296E" }, + "⥾": { "codepoints": [10622], "characters": "\u297E" }, + "𝔲": { "codepoints": [120114], "characters": "\uD835\uDD32" }, + "ù": { "codepoints": [249], "characters": "\u00F9" }, + "ù": { "codepoints": [249], "characters": "\u00F9" }, + "↿": { "codepoints": [8639], "characters": "\u21BF" }, + "↾": { "codepoints": [8638], "characters": "\u21BE" }, + "▀": { "codepoints": [9600], "characters": "\u2580" }, + "⌜": { "codepoints": [8988], "characters": "\u231C" }, + "⌜": { "codepoints": [8988], "characters": "\u231C" }, + "⌏": { "codepoints": [8975], "characters": "\u230F" }, + "◸": { "codepoints": [9720], "characters": "\u25F8" }, + "ū": { "codepoints": [363], "characters": "\u016B" }, + "¨": { "codepoints": [168], "characters": "\u00A8" }, + "¨": { "codepoints": [168], "characters": "\u00A8" }, + "ų": { "codepoints": [371], "characters": "\u0173" }, + "𝕦": { "codepoints": [120166], "characters": "\uD835\uDD66" }, + "↑": { "codepoints": [8593], "characters": "\u2191" }, + "↕": { "codepoints": [8597], "characters": "\u2195" }, + "↿": { "codepoints": [8639], "characters": "\u21BF" }, + "↾": { "codepoints": [8638], "characters": "\u21BE" }, + "⊎": { "codepoints": [8846], "characters": "\u228E" }, + "υ": { "codepoints": [965], "characters": "\u03C5" }, + "ϒ": { "codepoints": [978], "characters": "\u03D2" }, + "υ": { "codepoints": [965], "characters": "\u03C5" }, + "⇈": { "codepoints": [8648], "characters": "\u21C8" }, + "⌝": { "codepoints": [8989], "characters": "\u231D" }, + "⌝": { "codepoints": [8989], "characters": "\u231D" }, + "⌎": { "codepoints": [8974], "characters": "\u230E" }, + "ů": { "codepoints": [367], "characters": "\u016F" }, + "◹": { "codepoints": [9721], "characters": "\u25F9" }, + "𝓊": { "codepoints": [120010], "characters": "\uD835\uDCCA" }, + "⋰": { "codepoints": [8944], "characters": "\u22F0" }, + "ũ": { "codepoints": [361], "characters": "\u0169" }, + "▵": { "codepoints": [9653], "characters": "\u25B5" }, + "▴": { "codepoints": [9652], "characters": "\u25B4" }, + "⇈": { "codepoints": [8648], "characters": "\u21C8" }, + "ü": { "codepoints": [252], "characters": "\u00FC" }, + "ü": { "codepoints": [252], "characters": "\u00FC" }, + "⦧": { "codepoints": [10663], "characters": "\u29A7" }, + "⇕": { "codepoints": [8661], "characters": "\u21D5" }, + "⫨": { "codepoints": [10984], "characters": "\u2AE8" }, + "⫩": { "codepoints": [10985], "characters": "\u2AE9" }, + "⊨": { "codepoints": [8872], "characters": "\u22A8" }, + "⦜": { "codepoints": [10652], "characters": "\u299C" }, + "ϵ": { "codepoints": [1013], "characters": "\u03F5" }, + "ϰ": { "codepoints": [1008], "characters": "\u03F0" }, + "∅": { "codepoints": [8709], "characters": "\u2205" }, + "ϕ": { "codepoints": [981], "characters": "\u03D5" }, + "ϖ": { "codepoints": [982], "characters": "\u03D6" }, + "∝": { "codepoints": [8733], "characters": "\u221D" }, + "↕": { "codepoints": [8597], "characters": "\u2195" }, + "ϱ": { "codepoints": [1009], "characters": "\u03F1" }, + "ς": { "codepoints": [962], "characters": "\u03C2" }, + "⊊︀": { "codepoints": [8842, 65024], "characters": "\u228A\uFE00" }, + "⫋︀": { "codepoints": [10955, 65024], "characters": "\u2ACB\uFE00" }, + "⊋︀": { "codepoints": [8843, 65024], "characters": "\u228B\uFE00" }, + "⫌︀": { "codepoints": [10956, 65024], "characters": "\u2ACC\uFE00" }, + "ϑ": { "codepoints": [977], "characters": "\u03D1" }, + "⊲": { "codepoints": [8882], "characters": "\u22B2" }, + "⊳": { "codepoints": [8883], "characters": "\u22B3" }, + "в": { "codepoints": [1074], "characters": "\u0432" }, + "⊢": { "codepoints": [8866], "characters": "\u22A2" }, + "∨": { "codepoints": [8744], "characters": "\u2228" }, + "⊻": { "codepoints": [8891], "characters": "\u22BB" }, + "≚": { "codepoints": [8794], "characters": "\u225A" }, + "⋮": { "codepoints": [8942], "characters": "\u22EE" }, + "|": { "codepoints": [124], "characters": "\u007C" }, + "|": { "codepoints": [124], "characters": "\u007C" }, + "𝔳": { "codepoints": [120115], "characters": "\uD835\uDD33" }, + "⊲": { "codepoints": [8882], "characters": "\u22B2" }, + "⊂⃒": { "codepoints": [8834, 8402], "characters": "\u2282\u20D2" }, + "⊃⃒": { "codepoints": [8835, 8402], "characters": "\u2283\u20D2" }, + "𝕧": { "codepoints": [120167], "characters": "\uD835\uDD67" }, + "∝": { "codepoints": [8733], "characters": "\u221D" }, + "⊳": { "codepoints": [8883], "characters": "\u22B3" }, + "𝓋": { "codepoints": [120011], "characters": "\uD835\uDCCB" }, + "⫋︀": { "codepoints": [10955, 65024], "characters": "\u2ACB\uFE00" }, + "⊊︀": { "codepoints": [8842, 65024], "characters": "\u228A\uFE00" }, + "⫌︀": { "codepoints": [10956, 65024], "characters": "\u2ACC\uFE00" }, + "⊋︀": { "codepoints": [8843, 65024], "characters": "\u228B\uFE00" }, + "⦚": { "codepoints": [10650], "characters": "\u299A" }, + "ŵ": { "codepoints": [373], "characters": "\u0175" }, + "⩟": { "codepoints": [10847], "characters": "\u2A5F" }, + "∧": { "codepoints": [8743], "characters": "\u2227" }, + "≙": { "codepoints": [8793], "characters": "\u2259" }, + "℘": { "codepoints": [8472], "characters": "\u2118" }, + "𝔴": { "codepoints": [120116], "characters": "\uD835\uDD34" }, + "𝕨": { "codepoints": [120168], "characters": "\uD835\uDD68" }, + "℘": { "codepoints": [8472], "characters": "\u2118" }, + "≀": { "codepoints": [8768], "characters": "\u2240" }, + "≀": { "codepoints": [8768], "characters": "\u2240" }, + "𝓌": { "codepoints": [120012], "characters": "\uD835\uDCCC" }, + "⋂": { "codepoints": [8898], "characters": "\u22C2" }, + "◯": { "codepoints": [9711], "characters": "\u25EF" }, + "⋃": { "codepoints": [8899], "characters": "\u22C3" }, + "▽": { "codepoints": [9661], "characters": "\u25BD" }, + "𝔵": { "codepoints": [120117], "characters": "\uD835\uDD35" }, + "⟺": { "codepoints": [10234], "characters": "\u27FA" }, + "⟷": { "codepoints": [10231], "characters": "\u27F7" }, + "ξ": { "codepoints": [958], "characters": "\u03BE" }, + "⟸": { "codepoints": [10232], "characters": "\u27F8" }, + "⟵": { "codepoints": [10229], "characters": "\u27F5" }, + "⟼": { "codepoints": [10236], "characters": "\u27FC" }, + "⋻": { "codepoints": [8955], "characters": "\u22FB" }, + "⨀": { "codepoints": [10752], "characters": "\u2A00" }, + "𝕩": { "codepoints": [120169], "characters": "\uD835\uDD69" }, + "⨁": { "codepoints": [10753], "characters": "\u2A01" }, + "⨂": { "codepoints": [10754], "characters": "\u2A02" }, + "⟹": { "codepoints": [10233], "characters": "\u27F9" }, + "⟶": { "codepoints": [10230], "characters": "\u27F6" }, + "𝓍": { "codepoints": [120013], "characters": "\uD835\uDCCD" }, + "⨆": { "codepoints": [10758], "characters": "\u2A06" }, + "⨄": { "codepoints": [10756], "characters": "\u2A04" }, + "△": { "codepoints": [9651], "characters": "\u25B3" }, + "⋁": { "codepoints": [8897], "characters": "\u22C1" }, + "⋀": { "codepoints": [8896], "characters": "\u22C0" }, + "ý": { "codepoints": [253], "characters": "\u00FD" }, + "ý": { "codepoints": [253], "characters": "\u00FD" }, + "я": { "codepoints": [1103], "characters": "\u044F" }, + "ŷ": { "codepoints": [375], "characters": "\u0177" }, + "ы": { "codepoints": [1099], "characters": "\u044B" }, + "¥": { "codepoints": [165], "characters": "\u00A5" }, + "¥": { "codepoints": [165], "characters": "\u00A5" }, + "𝔶": { "codepoints": [120118], "characters": "\uD835\uDD36" }, + "ї": { "codepoints": [1111], "characters": "\u0457" }, + "𝕪": { "codepoints": [120170], "characters": "\uD835\uDD6A" }, + "𝓎": { "codepoints": [120014], "characters": "\uD835\uDCCE" }, + "ю": { "codepoints": [1102], "characters": "\u044E" }, + "ÿ": { "codepoints": [255], "characters": "\u00FF" }, + "ÿ": { "codepoints": [255], "characters": "\u00FF" }, + "ź": { "codepoints": [378], "characters": "\u017A" }, + "ž": { "codepoints": [382], "characters": "\u017E" }, + "з": { "codepoints": [1079], "characters": "\u0437" }, + "ż": { "codepoints": [380], "characters": "\u017C" }, + "ℨ": { "codepoints": [8488], "characters": "\u2128" }, + "ζ": { "codepoints": [950], "characters": "\u03B6" }, + "𝔷": { "codepoints": [120119], "characters": "\uD835\uDD37" }, + "ж": { "codepoints": [1078], "characters": "\u0436" }, + "⇝": { "codepoints": [8669], "characters": "\u21DD" }, + "𝕫": { "codepoints": [120171], "characters": "\uD835\uDD6B" }, + "𝓏": { "codepoints": [120015], "characters": "\uD835\uDCCF" }, + "‍": { "codepoints": [8205], "characters": "\u200D" }, + "‌": { "codepoints": [8204], "characters": "\u200C" } +} diff --git a/tests/phpunit/tests/html-api/generate-html5-named-character-references.php b/tests/phpunit/tests/html-api/generate-html5-named-character-references.php new file mode 100644 index 0000000000000..79e614492a8ac --- /dev/null +++ b/tests/phpunit/tests/html-api/generate-html5-named-character-references.php @@ -0,0 +1,78 @@ + array( 0xA9 ), + * 'characters' => '©', + * ); + * + * @see https://html.spec.whatwg.org/entities.json + * + * @var array. + */ +$entities = json_decode( + file_get_contents( __DIR__ . '/../../data/html5-entities.json' ), + JSON_OBJECT_AS_ARRAY +); + +/** + * Direct mapping from character reference name to UTF-8 string. + * + * Example: + * + * $character_references['©'] === '©'; + * + * @var array. + */ +$character_references = array(); +foreach ( $entities as $reference => $metadata ) { + $reference_without_ampersand_prefix = substr( $reference, 1 ); + $character_references[ $reference_without_ampersand_prefix ] = $metadata['characters']; +} + +$html5_map = WP_Token_Map::from_array( $character_references ); +$module_contents = <<precomputed_php_source_table()}; + +EOF; + +file_put_contents( + __DIR__ . '/../../../../src/wp-includes/html-api/html5-named-character-references.php', + $module_contents +); diff --git a/tests/phpunit/tests/wp-token-map/wpTokenMap.php b/tests/phpunit/tests/wp-token-map/wpTokenMap.php new file mode 100644 index 0000000000000..dc4a0a6309ad9 --- /dev/null +++ b/tests/phpunit/tests/wp-token-map/wpTokenMap.php @@ -0,0 +1,377 @@ + $value ) { + $html5_character_references[ $name ] = $value['characters']; + } + } + + return $html5_character_references; + } + } + + /** + * Data provider. + * + * @return array[]. + */ + public static function data_input_arrays() { + $dataset_names = array( + 'ANIMALS', + 'HTML5', + ); + + $datasets = array(); + + foreach ( $dataset_names as $dataset_name ) { + $datasets[ $dataset_name ] = array( self::get_test_input_array( $dataset_name ) ); + } + + return $datasets; + } + + /** + * Ensure the basic creation of a Token Map from an associative array. + * + * @ticket 60698. + * + * @dataProvider data_input_arrays + * + * @param array $dataset Dataset to test. + */ + public function test_creates_map_from_array_containing_proper_values( $dataset ) { + $map = WP_Token_Map::from_array( $dataset ); + + foreach ( $dataset as $token => $replacement ) { + $this->assertTrue( + $map->contains( $token ), + "Map should have contained '{$token}' but didn't." + ); + + $skip_bytes = 0; + $response = $map->read_token( $token, 0, $skip_bytes ); + $this->assertSame( + $replacement, + $response, + 'Returned the wrong replacement value' + ); + + $token_length = strlen( $token ); + $this->assertSame( + $token_length, + $skip_bytes, + 'Reported the wrong byte-length of the found token.' + ); + } + } + + /** + * Ensure that keys that are too long prevent the creation of a Token Map. + * + * If tokens or replacements are stored whose length is more than can be + * represented by a single byte, then the encoding scheme in the Token Map + * will fail and lead to corruption. + * + * @ticket 60698. + * + * @expectedIncorrectUsage WP_Token_Map::from_array + */ + public function test_rejects_words_which_are_too_long() { + $normal_length = str_pad( '', 255, '.' ); + $too_long_word = "{$normal_length}."; + + $this->assertInstanceOf( + WP_Token_Map::class, + WP_Token_Map::from_array( array( $normal_length => 'just fine' ) ), + 'Should have built Token Map containing long, but acceptable token length.' + ); + + $this->assertNull( + WP_Token_Map::from_array( array( $too_long_word => 'not good' ) ), + 'Should have refused to build Token Map with key exceeding design limit.' + ); + + $this->assertInstanceOf( + WP_Token_Map::class, + WP_Token_Map::from_array( array( 'key' => $normal_length ) ), + 'Should have build Token Map containing long, but acceptable replacement.' + ); + + $this->assertNull( + WP_Token_Map::from_array( array( 'key' => $too_long_word ) ), + 'Should have refused to build Token Map with replacement exceeding design limit.' + ); + } + + /** + * Ensure isomorphic creation and export of a Token Map and associative arrays. + * + * @ticket 60698. + * + * @dataProvider data_input_arrays + * + * @param array $dataset Dataset to test. + */ + public function test_round_trips_through_associative_array( $dataset ) { + $map = WP_Token_Map::from_array( $dataset ); + $this->assertEqualsCanonicalizing( + $dataset, + $map->to_array(), + 'Should have produced an identical array on output as was given on input.' + ); + } + + /** + * Ensure the basic creation of a Token Map from a precomputed source table. + * + * @ticket 60698. + * + * @dataProvider data_input_arrays + * + * @param array $dataset Dataset to test. + */ + public function test_round_trips_through_precomputed_source_table( $dataset ) { + $seed = WP_Token_Map::from_array( $dataset ); + $source_table = $seed->precomputed_php_source_table(); + $map = eval( "return {$source_table};" ); // phpcs:ignore. + + foreach ( $dataset as $token => $replacement ) { + $this->assertTrue( + $map->contains( $token ), + "Map should have contained '{$token}' but didn't." + ); + + $skip_bytes = 0; + $response = $map->read_token( $token, 0, $skip_bytes ); + $this->assertSame( + $replacement, + $response, + 'Returned the wrong replacement value' + ); + + $token_length = strlen( $token ); + $this->assertSame( + $token_length, + $skip_bytes, + 'Reported the wrong byte-length of the found token.' + ); + } + } + + /** + * Ensures that when two or more keys share a prefix that the longest + * is matched first, to prevent tokens masking each other. + * + * @ticket 60698. + */ + public function test_finds_longest_match_first() { + $map = WP_Token_Map::from_array( + array( + 'cat' => '1', + 'caterpillar' => '2', + 'caterpillar machines' => '3', + ) + ); + + $skip_bytes = 0; + $text = 'cats like to meow'; + $this->assertSame( + '1', + $map->read_token( $text, 0, $skip_bytes ), + "Should have matched 'cat' but matched '" . substr( $text, 0, $skip_bytes ) . "' instead." + ); + + $skip_bytes = 0; + $text = 'caterpillars turn into butterflies'; + $this->assertSame( + '2', + $map->read_token( $text, 0, $skip_bytes ), + "Should have matched 'caterpillar' but matched '" . substr( $text, 0, $skip_bytes ) . "' instead." + ); + + $skip_bytes = 0; + $text = 'caterpillar machines are heavy duty equipment'; + $this->assertSame( + '3', + $map->read_token( $text, 0, $skip_bytes ), + "Should have matched 'caterpillar machines' but matched '" . substr( $text, 0, $skip_bytes ) . "' instead." + ); + } + + /** + * Ensures that tokens shorter than the group key length are found. + * + * @ticket 60698. + * + * @dataProvider data_short_substring_matches_of_each_other + * + * @param WP_Token_Map $map Token map containing appropriate mapping for test. + * @param string $search_document Document containing expected token at start of string. + * @param string $expected_token Which token should be found at start of search document. + */ + public function test_finds_short_matches_shorter_than_group_key_length( $map, $search_document, $expected_token ) { + $skip_bytes = 0; + $text = 'antarctica is a continent'; + $this->assertSame( + 'article', + $map->read_token( $text, 0, $skip_bytes ), + "Should have matched 'a' but matched '" . substr( $text, 0, $skip_bytes ) . "' instead." + ); + } + + /** + * Data provider. + * + * @return array[]. + */ + public static function data_short_substring_matches_of_each_other() { + $map = WP_Token_Map::from_array( + array( + 'a' => 'article', + 'aa' => 'defensive weapon', + 'ar' => 'country code', + 'arizona' => 'state name', + ) + ); + + return array( + 'single character' => array( $map, 'antarctica is a continent', 'a' ), + 'duplicate character' => array( $map, 'aaaaahhhh, he exclaimed', 'aa' ), + 'different character' => array( $map, 'argentina is a country', 'ar' ), + 'full word' => array( $map, 'arizona was full of copper', 'arizona' ), + ); + } + + /** + * Ensures that Token Map searches at appropriate starting offset. + * + * @ticket 60698. + * + * @dataProvider data_html5_test_dataset + * + * @param string $token Token to find. + * @param string $replacement Replacement string for token. + */ + public function test_reads_token_at_given_offset( $token, $replacement ) { + $document = "& another {$token} & then some"; + $map = self::get_html5_token_map(); + + $skip_bytes = 0; + $this->assertFalse( + $map->read_token( $document, 0, $skip_bytes ), + "Shouldn't have found token at start of document." + ); + + $response = $map->read_token( $document, 10, $skip_bytes ); + + $this->assertSame( + strlen( $token ), + $skip_bytes, + "Found the wrong length for token '{$token}'." + ); + + $this->assertSame( + $response, + $replacement, + 'Found the wrong replacement value for the token.' + ); + } + + /** + * Ensures that all given tokens exist inside a constructed Token Map. + * + * @ticket 60698. + * + * @dataProvider data_html5_test_dataset + * + * @param string $token Token to find. + * @param string $replacement Not used in this test. + */ + public function test_detects_all_tokens( $token, $replacement ) { + $map = self::get_html5_token_map(); + + $this->assertTrue( + $map->contains( $token ), + "Should have found '{$token}' inside the Token Map, but didn't." + ); + + $double_escaped_token = str_replace( '&', '&', $token ); + $this->assertFalse( + $map->contains( $double_escaped_token ), + "Should not have found '{$double_escaped_token}' in Token Map, but did." + ); + } + + /** + * Data provider. + * + * @return array[]. + */ + public static function data_html5_test_dataset() { + $html5 = self::get_test_input_array( 'HTML5' ); + $cases = array(); + + foreach ( $html5 as $token => $replacement ) { + $cases[ $token ] = array( $token, $replacement ); + } + + return $cases; + } + + /** + * Returns a static copy of the Token Map for HTML5. + * This is a test performance optimization. + * + * @return WP_Token_Map + */ + public static function get_html5_token_map() { + static $html5_token_map = null; + + if ( ! isset( $html5_token_map ) ) { + $html5_token_map = WP_Token_Map::from_array( self::get_test_input_array( 'HTML5' ) ); + } + + return $html5_token_map; + } + + const ANIMAL_EMOJI = array( + 'cat' => '🐈', + 'dog' => '🐶', + 'fish' => '🐟', + 'mammoth' => '🦣', + 'seal' => '🦭', + ); +} From 96bebe46a40e7a3b236bfc1710ac318a01fcc563 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Tue, 14 May 2024 10:22:40 -0700 Subject: [PATCH 02/28] Add case-insensitivity and early-abort for small words when none exist. --- src/wp-includes/class-wp-token-map.php | 68 ++++++++++++++++++-------- 1 file changed, 47 insertions(+), 21 deletions(-) diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php index 67bd6064f965b..c7bb9316ed54b 100644 --- a/src/wp-includes/class-wp-token-map.php +++ b/src/wp-includes/class-wp-token-map.php @@ -355,12 +355,20 @@ public static function from_precomputed_table( $key_length, $groups, $large_word * * @since 6.6.0 * - * @param string $word Determine if this word is a lookup key in the map. + * @param string $word Determine if this word is a lookup key in the map. + * @param ?string $case_sensitivity 'case-insensitive' to ignore ASCII case or default of 'case-sensitive'. * @return bool Whether there's an entry for the given word in the map. */ - public function contains( $word ) { + public function contains( $word, $case_sensitivity = 'case-sensitive' ) { + $ignore_case = 'case-insensitive' === $case_sensitivity; + if ( $this->key_length >= strlen( $word ) ) { - $word_at = strpos( $this->small_words, str_pad( $word, $this->key_length + 1, "\x00" ), STR_PAD_RIGHT ); + if ( 0 === strlen( $this->small_words ) ) { + return false; + } + + $term = str_pad( $word, $this->key_length + 1, "\x00", STR_PAD_RIGHT ); + $word_at = $ignore_case ? stripos( $this->small_words, $term ) : strpos( $this->small_words, $term ); if ( false === $word_at ) { return false; } @@ -369,7 +377,7 @@ public function contains( $word ) { } $group_key = substr( $word, 0, $this->key_length ); - $group_at = strpos( $this->groups, $group_key ); + $group_at = $ignore_case ? stripos( $this->groups, $group_key ) : strpos( $this->groups, $group_key ); if ( false === $group_at ) { return false; } @@ -386,7 +394,7 @@ public function contains( $word ) { $mapping_length = unpack( 'C', $group[ $at++ ] )[1]; $mapping_at = $at; - if ( $token_length === $length && 0 === substr_compare( $group, $slug, $token_at, $token_length ) ) { + if ( $token_length === $length && 0 === substr_compare( $group, $slug, $token_at, $token_length, $ignore_case ) ) { return true; } @@ -432,22 +440,26 @@ public function contains( $word ) { * * @since 6.6.0 * - * @param string $text String in which to search for a lookup key. - * @param ?int $offset How many bytes into the string where the lookup key ought to start. - * @param ?int &$skip_bytes Holds byte-length of found lookup key if matched, otherwise not set. + * @param string $text String in which to search for a lookup key. + * @param ?int $offset How many bytes into the string where the lookup key ought to start. + * @param ?int &$skip_bytes Holds byte-length of found lookup key if matched, otherwise not set. + * @param ?string $case_sensitivity 'case-insensitive' to ignore ASCII case or default of 'case-sensitive'. * @return string|false Mapped value of lookup key if found, otherwise `false`. */ - public function read_token( $text, $offset = 0, &$skip_bytes = null ) { + public function read_token( $text, $offset = 0, &$skip_bytes = null, $case_sensitivity = 'case-sensitive' ) { + $ignore_case = 'case-insensitive' === $case_sensitivity; $text_length = strlen( $text ); // Search for a long word first, if the text is long enough, and if that fails, a short one. if ( $text_length > $this->key_length ) { $group_key = substr( $text, $offset, $this->key_length ); - $group_at = strpos( $this->groups, $group_key ); + $group_at = $ignore_case ? stripos( $this->groups, $group_key ) : strpos( $this->groups, $group_key ); if ( false === $group_at ) { // Perhaps a short word then. - return $this->read_small_token( $text, $offset, $skip_bytes ); + return strlen( $this->small_words ) > 0 + ? $this->read_small_token( $text, $offset, $skip_bytes, $case_sensitivity ) + : false; } $group = $this->large_words[ $group_at / ( $this->key_length + 1 ) ]; @@ -460,7 +472,7 @@ public function read_token( $text, $offset = 0, &$skip_bytes = null ) { $mapping_length = unpack( 'C', $group[ $at++ ] )[1]; $mapping_at = $at; - if ( 0 === substr_compare( $text, $token, $offset + $this->key_length, $token_length ) ) { + if ( 0 === substr_compare( $text, $token, $offset + $this->key_length, $token_length, $ignore_case ) ) { $skip_bytes = $this->key_length + $token_length; return substr( $group, $mapping_at, $mapping_length ); } @@ -470,7 +482,9 @@ public function read_token( $text, $offset = 0, &$skip_bytes = null ) { } // Perhaps a short word then. - return $this->read_small_token( $text, $offset, $skip_bytes ); + return strlen( $this->small_words ) > 0 + ? $this->read_small_token( $text, $offset, $skip_bytes, $case_sensitivity ) + : false; } /** @@ -478,18 +492,27 @@ public function read_token( $text, $offset = 0, &$skip_bytes = null ) { * * @since 6.6.0. * - * @param string $text String in which to search for a lookup key. - * @param ?int $offset How many bytes into the string where the lookup key ought to start. - * @param ?int &$skip_bytes Holds byte-length of found lookup key if matched, otherwise not set. + * @param string $text String in which to search for a lookup key. + * @param ?int $offset How many bytes into the string where the lookup key ought to start. + * @param ?int &$skip_bytes Holds byte-length of found lookup key if matched, otherwise not set. + * @param ?string $case_sensitivity 'case-insensitive' to ignore ASCII case or default of 'case-sensitive'. * @return string|false Mapped value of lookup key if found, otherwise `false`. */ - private function read_small_token( $text, $offset, &$skip_bytes ) { - $small_length = strlen( $this->small_words ); - $starting_char = $text[ $offset ]; + private function read_small_token( $text, $offset, &$skip_bytes, $case_sensitivity = 'case-sensitive' ) { + $ignore_case = 'case-insensitive' === $case_sensitivity; + $small_length = strlen( $this->small_words ); + $search_text = substr( $text, $offset, $this->key_length ); + if ( $ignore_case ) { + $search_text = strtoupper( $search_text ); + } + $starting_char = $search_text[0]; $at = 0; while ( $at < $small_length ) { - if ( $starting_char !== $this->small_words[ $at ] ) { + if ( + $starting_char !== $this->small_words[ $at ] && + ( ! $ignore_case || strtoupper( $this->small_words[ $at ] ) !== $starting_char ) + ) { $at += $this->key_length + 1; continue; } @@ -500,7 +523,10 @@ private function read_small_token( $text, $offset, &$skip_bytes ) { return $this->small_mappings[ $at / ( $this->key_length + 1 ) ]; } - if ( $text[ $offset + $adjust ] !== $this->small_words[ $at + $adjust ] ) { + if ( + $search_text[ $adjust ] !== $this->small_words[ $at + $adjust ] && + ( ! $ignore_case || strtoupper( $this->small_words[ $at + $adjust ] !== $search_text[ $adjust ] ) ) + ) { $at += $this->key_length + 1; continue 2; } From 388c50daf8d5ce9f5b0189f14a270560d943e241 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Thu, 16 May 2024 09:13:32 -0700 Subject: [PATCH 03/28] PR Feedback --- src/wp-includes/class-wp-token-map.php | 18 +++++++++-- .../html5-named-character-references.php | 4 +++ ...erate-html5-named-character-references.php | 4 +++ .../phpunit/tests/wp-token-map/wpTokenMap.php | 32 ++++++++++++------- 4 files changed, 44 insertions(+), 14 deletions(-) diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php index c7bb9316ed54b..b566b4cfcc4d4 100644 --- a/src/wp-includes/class-wp-token-map.php +++ b/src/wp-includes/class-wp-token-map.php @@ -36,8 +36,20 @@ * '😕' === $smilies->read_token( 'Not sure :?.', 9, $bytes_skipped ); * 2 === $bytes_skipped; * - * echo $smilies->precomputed_php_source_table( ' ' ); - * // Output. + * ## Precomputing the Token Map. + * + * Creating the class involves some work sorting and organizing the tokens and their + * replacement values. In order to skip this, it's possible for the class to export + * its state and be used as actual PHP source code. + * + * Example: + * + * // Export with four spaces as the indent, only for the sake of this docblock. + * // The default indent is a tab character. + * $indent = ' '; + * echo $smilies->precomputed_php_source_table( $indent ); + * + * // Output, to be pasted into a PHP source file: * WP_Token_Map::from_precomputed_table( * 2, * "", @@ -253,7 +265,7 @@ public static function from_array( $mappings, $key_length = 2 ) { _doing_it_wrong( __METHOD__, __( 'Token Map tokens and substitutions must all be shorter than 256 bytes.' ), - '6. .0' + '6.6.0' ); return null; } diff --git a/src/wp-includes/html-api/html5-named-character-references.php b/src/wp-includes/html-api/html5-named-character-references.php index 41c467e268f8e..1b7ffc0b37db4 100644 --- a/src/wp-includes/html-api/html5-named-character-references.php +++ b/src/wp-includes/html-api/html5-named-character-references.php @@ -26,6 +26,10 @@ * for an ambiguous ampersand govern whether the following text is * to be interpreted as a character reference or not. * + * The list of entities is sourced directly from the WHATWG server + * and cached in the test directory to avoid needing to download it + * every time this file is updated. + * * @link https://html.spec.whatwg.org/entities.json. */ $html5_named_character_references = WP_Token_Map::from_precomputed_table( diff --git a/tests/phpunit/tests/html-api/generate-html5-named-character-references.php b/tests/phpunit/tests/html-api/generate-html5-named-character-references.php index 79e614492a8ac..152521a1fef00 100644 --- a/tests/phpunit/tests/html-api/generate-html5-named-character-references.php +++ b/tests/phpunit/tests/html-api/generate-html5-named-character-references.php @@ -66,6 +66,10 @@ * for an ambiguous ampersand govern whether the following text is * to be interpreted as a character reference or not. * + * The list of entities is sourced directly from the WHATWG server + * and cached in the test directory to avoid needing to download it + * every time this file is updated. + * * @link https://html.spec.whatwg.org/entities.json. */ \$html5_named_character_references = {$html5_map->precomputed_php_source_table()}; diff --git a/tests/phpunit/tests/wp-token-map/wpTokenMap.php b/tests/phpunit/tests/wp-token-map/wpTokenMap.php index dc4a0a6309ad9..71bc432a9f372 100644 --- a/tests/phpunit/tests/wp-token-map/wpTokenMap.php +++ b/tests/phpunit/tests/wp-token-map/wpTokenMap.php @@ -9,6 +9,19 @@ * @coversDefaultClass WP_Token_map */ class Tests_WpTokenMap extends WP_UnitTestCase { + /** + * Small test array matching names to Emoji. + * + * @var array. + */ + const ANIMAL_EMOJI = array( + 'cat' => '🐈', + 'dog' => '🐶', + 'fish' => '🐟', + 'mammoth' => '🦣', + 'seal' => '🦭', + ); + /** * Returns an associative array whose keys are tokens to replace and * whose values are the replacement strings for those tokens. @@ -17,6 +30,11 @@ class Tests_WpTokenMap extends WP_UnitTestCase { * For example, the HTML5 dataset is very large and best served as a * separate file. * + * The HTML5 named character reference list is pulled directly from the + * WHATWG spec and stored in the tests directory so it doesn't need to + * be downloaded on every test run. By specification, it cannot change + * and will not be updated. + * * @ticket 60698. * * @param string $dataset_name Which dataset to return. @@ -31,7 +49,7 @@ private static function get_test_input_array( $dataset_name ) { case 'HTML5': if ( ! isset( $html5_character_references ) ) { - $dataset = json_decode( file_get_contents( __DIR__ . '/../../data/html5-entities.json' ), JSON_OBJECT_AS_ARRAY ); // phpcs:ignore. + $dataset = wp_json_file_decode( __DIR__ . '/../../data/html5-entities.json', JSON_OBJECT_AS_ARRAY ); $html5_character_references = array(); foreach ( $dataset as $name => $value ) { @@ -48,7 +66,7 @@ private static function get_test_input_array( $dataset_name ) { * * @return array[]. */ - public static function data_input_arrays() { + private static function data_input_arrays() { $dataset_names = array( 'ANIMALS', 'HTML5', @@ -357,7 +375,7 @@ public static function data_html5_test_dataset() { * * @return WP_Token_Map */ - public static function get_html5_token_map() { + private static function get_html5_token_map() { static $html5_token_map = null; if ( ! isset( $html5_token_map ) ) { @@ -366,12 +384,4 @@ public static function get_html5_token_map() { return $html5_token_map; } - - const ANIMAL_EMOJI = array( - 'cat' => '🐈', - 'dog' => '🐶', - 'fish' => '🐟', - 'mammoth' => '🦣', - 'seal' => '🦭', - ); } From 45a52368e53a5a17995397c563511b3b17255f4d Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Thu, 16 May 2024 09:33:11 -0700 Subject: [PATCH 04/28] Verify count of named character references. --- .../phpunit/tests/wp-token-map/wpTokenMap.php | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/tests/phpunit/tests/wp-token-map/wpTokenMap.php b/tests/phpunit/tests/wp-token-map/wpTokenMap.php index 71bc432a9f372..a1979b4f9237e 100644 --- a/tests/phpunit/tests/wp-token-map/wpTokenMap.php +++ b/tests/phpunit/tests/wp-token-map/wpTokenMap.php @@ -9,6 +9,17 @@ * @coversDefaultClass WP_Token_map */ class Tests_WpTokenMap extends WP_UnitTestCase { + /** + * Number of unique HTML5 named character references, including + * variations of a given name that don't require the trailing semicolon. + * + * The set of names is fixed by the specification, + * and can be found at the following link. + * + * @link https://html.spec.whatwg.org/entities.json + */ + const KNOWN_COUNT_OF_ALL_HTML5_NAMED_CHARACTER_REFERENCES = 2231; + /** * Small test array matching names to Emoji. * @@ -358,10 +369,16 @@ public function test_detects_all_tokens( $token, $replacement ) { * * @return array[]. */ - public static function data_html5_test_dataset() { + public function data_html5_test_dataset() { $html5 = self::get_test_input_array( 'HTML5' ); $cases = array(); + $this->assertSame( + self::KNOWN_COUNT_OF_ALL_HTML5_NAMED_CHARACTER_REFERENCES, + count( $html5 ), + 'Found the wrong number of HTML5 named character references: confirm the entities.json file."' + ); + foreach ( $html5 as $token => $replacement ) { $cases[ $token ] = array( $token, $replacement ); } From 31695c6105649e1692af7d5339d8765bf348b62a Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Thu, 16 May 2024 10:16:43 -0700 Subject: [PATCH 05/28] Shallow abstractions diverging from their truth, tsk tsk --- tests/phpunit/tests/wp-token-map/wpTokenMap.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/tests/wp-token-map/wpTokenMap.php b/tests/phpunit/tests/wp-token-map/wpTokenMap.php index a1979b4f9237e..5da647f869055 100644 --- a/tests/phpunit/tests/wp-token-map/wpTokenMap.php +++ b/tests/phpunit/tests/wp-token-map/wpTokenMap.php @@ -60,7 +60,7 @@ private static function get_test_input_array( $dataset_name ) { case 'HTML5': if ( ! isset( $html5_character_references ) ) { - $dataset = wp_json_file_decode( __DIR__ . '/../../data/html5-entities.json', JSON_OBJECT_AS_ARRAY ); + $dataset = wp_json_file_decode( __DIR__ . '/../../data/html5-entities.json', true ); $html5_character_references = array(); foreach ( $dataset as $name => $value ) { From 6055bf3047ac7ccc4b9784a81dde19be1770c3fe Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Thu, 16 May 2024 10:29:53 -0700 Subject: [PATCH 06/28] Restructure generator script --- tests/phpunit/data/html5-entities/README.md | 22 +++++++++++++++++++ .../entities.json} | 0 ...erate-html5-named-character-references.php | 8 ++++++- .../phpunit/tests/wp-token-map/wpTokenMap.php | 2 +- 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 tests/phpunit/data/html5-entities/README.md rename tests/phpunit/data/{html5-entities.json => html5-entities/entities.json} (100%) rename tests/phpunit/{tests/html-api => data/html5-entities}/generate-html5-named-character-references.php (90%) diff --git a/tests/phpunit/data/html5-entities/README.md b/tests/phpunit/data/html5-entities/README.md new file mode 100644 index 0000000000000..ef88dcea9a138 --- /dev/null +++ b/tests/phpunit/data/html5-entities/README.md @@ -0,0 +1,22 @@ +# HTML5 Entities + +This directory contains the listing of HTML5 named character references and a script that can be used +to create or update the optimized form for use in the HTML API. + +The HTML5 specification asserts: + +> This list is static and will not be expanded or changed in the future. +> - https://html.spec.whatwg.org/#named-character-references + +The authoritative [`entities.json`](https://html.spec.whatwg.org/entities.json) file comes from the WHATWG server, and +is cached here in the test directory so that it doesn't need to be constantly re-downloaded. + +## Updating the optimized lookup class. + +The `html5-named-character-references.php` file contains an optimized lookup map for the entities in `entities.json`. +Run the `generate-html5-named-character-references.php` file to update the auto-generated Core module. + +```bash +~$ php tests/phpunit/data/html5-entities/generate-html5-named-character-references.php +OK: Successfully generated optimized lookup class. +``` diff --git a/tests/phpunit/data/html5-entities.json b/tests/phpunit/data/html5-entities/entities.json similarity index 100% rename from tests/phpunit/data/html5-entities.json rename to tests/phpunit/data/html5-entities/entities.json diff --git a/tests/phpunit/tests/html-api/generate-html5-named-character-references.php b/tests/phpunit/data/html5-entities/generate-html5-named-character-references.php similarity index 90% rename from tests/phpunit/tests/html-api/generate-html5-named-character-references.php rename to tests/phpunit/data/html5-entities/generate-html5-named-character-references.php index 152521a1fef00..6b9958233eed7 100644 --- a/tests/phpunit/tests/html-api/generate-html5-named-character-references.php +++ b/tests/phpunit/data/html5-entities/generate-html5-named-character-references.php @@ -17,7 +17,7 @@ * @var array. */ $entities = json_decode( - file_get_contents( __DIR__ . '/../../data/html5-entities.json' ), + file_get_contents( __DIR__ . '/entities.json' ), JSON_OBJECT_AS_ARRAY ); @@ -80,3 +80,9 @@ __DIR__ . '/../../../../src/wp-includes/html-api/html5-named-character-references.php', $module_contents ); + +if ( posix_isatty( STDOUT ) ) { + echo "\e[1;32mOK\e[0;90m: \e[mSuccessfully generated optimized lookup class.\n"; +} else { + echo "OK: Successfully generated optimized lookup class.\n"; +} diff --git a/tests/phpunit/tests/wp-token-map/wpTokenMap.php b/tests/phpunit/tests/wp-token-map/wpTokenMap.php index 5da647f869055..5744f0ee443ca 100644 --- a/tests/phpunit/tests/wp-token-map/wpTokenMap.php +++ b/tests/phpunit/tests/wp-token-map/wpTokenMap.php @@ -60,7 +60,7 @@ private static function get_test_input_array( $dataset_name ) { case 'HTML5': if ( ! isset( $html5_character_references ) ) { - $dataset = wp_json_file_decode( __DIR__ . '/../../data/html5-entities.json', true ); + $dataset = wp_json_file_decode( __DIR__ . '/../../data/html5-entities/entities.json', true ); $html5_character_references = array(); foreach ( $dataset as $name => $value ) { From 09dd38b8c1b6f90c858f7ae640688c7bfdeaffa5 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Thu, 16 May 2024 10:30:59 -0700 Subject: [PATCH 07/28] fixup! Restructure generator script --- src/wp-includes/html-api/html5-named-character-references.php | 2 +- .../generate-html5-named-character-references.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/wp-includes/html-api/html5-named-character-references.php b/src/wp-includes/html-api/html5-named-character-references.php index 1b7ffc0b37db4..191d60f9d9810 100644 --- a/src/wp-includes/html-api/html5-named-character-references.php +++ b/src/wp-includes/html-api/html5-named-character-references.php @@ -7,7 +7,7 @@ * * Example: * - * php tests/phpunit/tests/html-api/generate-html5-named-character-references.php + * php tests/phpunit/data/html5-entities/generate-html5-named-character-references.php * * @package WordPress * @since 6.6.0 diff --git a/tests/phpunit/data/html5-entities/generate-html5-named-character-references.php b/tests/phpunit/data/html5-entities/generate-html5-named-character-references.php index 6b9958233eed7..2720c9b2eb30f 100644 --- a/tests/phpunit/data/html5-entities/generate-html5-named-character-references.php +++ b/tests/phpunit/data/html5-entities/generate-html5-named-character-references.php @@ -47,7 +47,7 @@ * * Example: * - * php tests/phpunit/tests/html-api/generate-html5-named-character-references.php + * php tests/phpunit/data/html5-entities/generate-html5-named-character-references.php * * @package WordPress * @since 6.6.0 From 2cf613f866c1321983f5f4385c0334585a43d75c Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Thu, 16 May 2024 10:36:25 -0700 Subject: [PATCH 08/28] PR Feedback --- .../html-api/html5-named-character-references.php | 3 +++ .../generate-html5-named-character-references.php | 15 ++++++++++++++- tests/phpunit/tests/wp-token-map/wpTokenMap.php | 5 +---- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/wp-includes/html-api/html5-named-character-references.php b/src/wp-includes/html-api/html5-named-character-references.php index 191d60f9d9810..2ca9d0fc36f2f 100644 --- a/src/wp-includes/html-api/html5-named-character-references.php +++ b/src/wp-includes/html-api/html5-named-character-references.php @@ -3,6 +3,9 @@ /** * Auto-generated class for looking up HTML named character references. * + * ⚠️ !!! THIS ENTIRE FILE IS AUTOMATICALLY GENERATED !!! ⚠️ + * Do not modify this file directly. + * * To regenerate, run the generation script directly. * * Example: diff --git a/tests/phpunit/data/html5-entities/generate-html5-named-character-references.php b/tests/phpunit/data/html5-entities/generate-html5-named-character-references.php index 2720c9b2eb30f..609d521dec440 100644 --- a/tests/phpunit/data/html5-entities/generate-html5-named-character-references.php +++ b/tests/phpunit/data/html5-entities/generate-html5-named-character-references.php @@ -36,13 +36,26 @@ $character_references[ $reference_without_ampersand_prefix ] = $metadata['characters']; } -$html5_map = WP_Token_Map::from_array( $character_references ); +$html5_map = WP_Token_Map::from_array( $character_references ); + +/** + * Contains the new contents for the auto-generated module. + * + * Note that in this template, the `$` is escaped with `\$` so that it + * comes through as a `$` in the output. Without escaping, PHP will look + * for a variable of the given name to interpolate into the template. + * + * @var string + */ $module_contents = <<assertSame( self::KNOWN_COUNT_OF_ALL_HTML5_NAMED_CHARACTER_REFERENCES, @@ -380,10 +379,8 @@ public function data_html5_test_dataset() { ); foreach ( $html5 as $token => $replacement ) { - $cases[ $token ] = array( $token, $replacement ); + yield $token => array( $token, $replacement ); } - - return $cases; } /** From f3126692aab2e6bb479da0a34f9188a005012a00 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Thu, 16 May 2024 10:42:49 -0700 Subject: [PATCH 09/28] Update tests/phpunit/data/html5-entities/README.md Co-authored-by: Jon Surrell --- tests/phpunit/data/html5-entities/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/phpunit/data/html5-entities/README.md b/tests/phpunit/data/html5-entities/README.md index ef88dcea9a138..225c17e62b33a 100644 --- a/tests/phpunit/data/html5-entities/README.md +++ b/tests/phpunit/data/html5-entities/README.md @@ -13,10 +13,12 @@ is cached here in the test directory so that it doesn't need to be constantly re ## Updating the optimized lookup class. -The `html5-named-character-references.php` file contains an optimized lookup map for the entities in `entities.json`. +The [`html5-named-character-references.php`][1] file contains an optimized lookup map for the entities in `entities.json`. Run the `generate-html5-named-character-references.php` file to update the auto-generated Core module. ```bash ~$ php tests/phpunit/data/html5-entities/generate-html5-named-character-references.php OK: Successfully generated optimized lookup class. ``` + +- [1]: ../../../../src/wp-includes/html-api/html5-named-character-references.php From d63da61482e77d4c031f80fca201248b5080b4f7 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Thu, 16 May 2024 10:44:26 -0700 Subject: [PATCH 10/28] Fix markdown link reference --- tests/phpunit/data/html5-entities/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/data/html5-entities/README.md b/tests/phpunit/data/html5-entities/README.md index 225c17e62b33a..2bc72173f6d90 100644 --- a/tests/phpunit/data/html5-entities/README.md +++ b/tests/phpunit/data/html5-entities/README.md @@ -21,4 +21,4 @@ Run the `generate-html5-named-character-references.php` file to update the auto- OK: Successfully generated optimized lookup class. ``` -- [1]: ../../../../src/wp-includes/html-api/html5-named-character-references.php +[1]: ../../../../src/wp-includes/html-api/html5-named-character-references.php From adbf8b60593909d1f82fb90210bdf6fb646ef8de Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Thu, 16 May 2024 10:46:09 -0700 Subject: [PATCH 11/28] Add more links --- tests/phpunit/data/html5-entities/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/phpunit/data/html5-entities/README.md b/tests/phpunit/data/html5-entities/README.md index 2bc72173f6d90..aeaad92fde6a5 100644 --- a/tests/phpunit/data/html5-entities/README.md +++ b/tests/phpunit/data/html5-entities/README.md @@ -14,7 +14,7 @@ is cached here in the test directory so that it doesn't need to be constantly re ## Updating the optimized lookup class. The [`html5-named-character-references.php`][1] file contains an optimized lookup map for the entities in `entities.json`. -Run the `generate-html5-named-character-references.php` file to update the auto-generated Core module. +Run the [`generate-html5-named-character-references.php`][2] file to update the auto-generated Core module. ```bash ~$ php tests/phpunit/data/html5-entities/generate-html5-named-character-references.php @@ -22,3 +22,4 @@ OK: Successfully generated optimized lookup class. ``` [1]: ../../../../src/wp-includes/html-api/html5-named-character-references.php +[2]: ./generate-html5-named-character-references.php From b5cdac47359cfd874c4eaee537695218eff1f582 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Thu, 16 May 2024 10:59:02 -0700 Subject: [PATCH 12/28] I'm no longer a fan of this shallow abstraction --- tests/phpunit/tests/wp-token-map/wpTokenMap.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/phpunit/tests/wp-token-map/wpTokenMap.php b/tests/phpunit/tests/wp-token-map/wpTokenMap.php index f3676eeefdf28..ba25aafac9728 100644 --- a/tests/phpunit/tests/wp-token-map/wpTokenMap.php +++ b/tests/phpunit/tests/wp-token-map/wpTokenMap.php @@ -60,7 +60,10 @@ private static function get_test_input_array( $dataset_name ) { case 'HTML5': if ( ! isset( $html5_character_references ) ) { - $dataset = wp_json_file_decode( __DIR__ . '/../../data/html5-entities/entities.json', true ); + $dataset = wp_json_file_decode( + __DIR__ . '/../../data/html5-entities/entities.json', + array( 'associative' => true ) + ); $html5_character_references = array(); foreach ( $dataset as $name => $value ) { From 31c57b0871a193fdf18a6ae870cb32b0750799a2 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Thu, 16 May 2024 11:04:07 -0700 Subject: [PATCH 13/28] Define large and small words in class doc. --- src/wp-includes/class-wp-token-map.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php index b566b4cfcc4d4..6262e49f5f76d 100644 --- a/src/wp-includes/class-wp-token-map.php +++ b/src/wp-includes/class-wp-token-map.php @@ -58,6 +58,17 @@ * array( "😯", "🙂", "🙁", "😕" ) * ); * + * ## Large vs. small words. + * + * This class uses a short prefix called the "key" to optimize lookup of its tokens. + * This means that some tokens may be shorter than or equal in length to that key. + * Those words that are longer than the key are called "large" while those shorter + * than or equal to the key length are called "small." + * + * This separation of large and small words is incidental to the way this class + * optimizes lookup, and should be considered an internal implementation detail + * of the class. It may still be important to be aware of it, however. + * * ## Determining Key Length. * * The choice of the size of the key length should be based on the data being stored in From 94c06e67f12f77996731c9c5064470b805944465 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Thu, 16 May 2024 11:58:02 -0700 Subject: [PATCH 14/28] Make test data provider public where necessary --- tests/phpunit/tests/wp-token-map/wpTokenMap.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/tests/wp-token-map/wpTokenMap.php b/tests/phpunit/tests/wp-token-map/wpTokenMap.php index ba25aafac9728..d1565315de426 100644 --- a/tests/phpunit/tests/wp-token-map/wpTokenMap.php +++ b/tests/phpunit/tests/wp-token-map/wpTokenMap.php @@ -80,7 +80,7 @@ private static function get_test_input_array( $dataset_name ) { * * @return array[]. */ - private static function data_input_arrays() { + public static function data_input_arrays() { $dataset_names = array( 'ANIMALS', 'HTML5', From f3a0b54fe5f2ea6b94f615aa3ac982190f7b97e3 Mon Sep 17 00:00:00 2001 From: Jon Surrell Date: Fri, 17 May 2024 09:54:55 +0200 Subject: [PATCH 15/28] Remove "." from PHPUnit ticket annotations The ticket annotation also creates a group for filtering PHPUnit tests. When the annotation is terminated in ".", filtering tests like "--group=60698" does not work as expected. --- .../phpunit/tests/wp-token-map/wpTokenMap.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/phpunit/tests/wp-token-map/wpTokenMap.php b/tests/phpunit/tests/wp-token-map/wpTokenMap.php index d1565315de426..290b2868ad24a 100644 --- a/tests/phpunit/tests/wp-token-map/wpTokenMap.php +++ b/tests/phpunit/tests/wp-token-map/wpTokenMap.php @@ -46,7 +46,7 @@ class Tests_WpTokenMap extends WP_UnitTestCase { * be downloaded on every test run. By specification, it cannot change * and will not be updated. * - * @ticket 60698. + * @ticket 60698 * * @param string $dataset_name Which dataset to return. * @return array The dataset as an associative array. @@ -98,7 +98,7 @@ public static function data_input_arrays() { /** * Ensure the basic creation of a Token Map from an associative array. * - * @ticket 60698. + * @ticket 60698 * * @dataProvider data_input_arrays * @@ -137,7 +137,7 @@ public function test_creates_map_from_array_containing_proper_values( $dataset ) * represented by a single byte, then the encoding scheme in the Token Map * will fail and lead to corruption. * - * @ticket 60698. + * @ticket 60698 * * @expectedIncorrectUsage WP_Token_Map::from_array */ @@ -171,7 +171,7 @@ public function test_rejects_words_which_are_too_long() { /** * Ensure isomorphic creation and export of a Token Map and associative arrays. * - * @ticket 60698. + * @ticket 60698 * * @dataProvider data_input_arrays * @@ -189,7 +189,7 @@ public function test_round_trips_through_associative_array( $dataset ) { /** * Ensure the basic creation of a Token Map from a precomputed source table. * - * @ticket 60698. + * @ticket 60698 * * @dataProvider data_input_arrays * @@ -227,7 +227,7 @@ public function test_round_trips_through_precomputed_source_table( $dataset ) { * Ensures that when two or more keys share a prefix that the longest * is matched first, to prevent tokens masking each other. * - * @ticket 60698. + * @ticket 60698 */ public function test_finds_longest_match_first() { $map = WP_Token_Map::from_array( @@ -266,7 +266,7 @@ public function test_finds_longest_match_first() { /** * Ensures that tokens shorter than the group key length are found. * - * @ticket 60698. + * @ticket 60698 * * @dataProvider data_short_substring_matches_of_each_other * @@ -310,7 +310,7 @@ public static function data_short_substring_matches_of_each_other() { /** * Ensures that Token Map searches at appropriate starting offset. * - * @ticket 60698. + * @ticket 60698 * * @dataProvider data_html5_test_dataset * @@ -345,7 +345,7 @@ public function test_reads_token_at_given_offset( $token, $replacement ) { /** * Ensures that all given tokens exist inside a constructed Token Map. * - * @ticket 60698. + * @ticket 60698 * * @dataProvider data_html5_test_dataset * From 112cf4d54cb6da7e11f338ebbca8c6a1ccbc5b9f Mon Sep 17 00:00:00 2001 From: Jon Surrell Date: Fri, 17 May 2024 11:12:14 +0200 Subject: [PATCH 16/28] Fix casing of class in coversDefaultClass annotation --- tests/phpunit/tests/wp-token-map/wpTokenMap.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/tests/wp-token-map/wpTokenMap.php b/tests/phpunit/tests/wp-token-map/wpTokenMap.php index 290b2868ad24a..8b28982a64bd8 100644 --- a/tests/phpunit/tests/wp-token-map/wpTokenMap.php +++ b/tests/phpunit/tests/wp-token-map/wpTokenMap.php @@ -6,7 +6,7 @@ * * @since 6.6.0 * - * @coversDefaultClass WP_Token_map + * @coversDefaultClass WP_Token_Map */ class Tests_WpTokenMap extends WP_UnitTestCase { /** From b9ea53102ff1904c8fd6d9d3dbf36a7543139065 Mon Sep 17 00:00:00 2001 From: Jon Surrell Date: Fri, 17 May 2024 16:32:15 +0200 Subject: [PATCH 17/28] Use more verbose length variables --- src/wp-includes/class-wp-token-map.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php index 6262e49f5f76d..9908f233f8ebb 100644 --- a/src/wp-includes/class-wp-token-map.php +++ b/src/wp-includes/class-wp-token-map.php @@ -738,12 +738,12 @@ private static function longest_first_then_alphabetical( $a, $b ) { return 0; } - $la = strlen( $a ); - $lb = strlen( $b ); + $length_a = strlen( $a ); + $length_b = strlen( $b ); // Longer strings are less-than for comparison's sake. - if ( $la !== $lb ) { - return $lb - $la; + if ( $length_a !== $length_b ) { + return $length_b - $length_a; } return strcmp( $a, $b ); From 584b67311b9763eb3a4ba7f82508d290ad7f13ee Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Fri, 17 May 2024 10:01:20 -0700 Subject: [PATCH 18/28] Update tests/phpunit/tests/wp-token-map/wpTokenMap.php Co-authored-by: Jon Surrell --- tests/phpunit/tests/wp-token-map/wpTokenMap.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tests/phpunit/tests/wp-token-map/wpTokenMap.php b/tests/phpunit/tests/wp-token-map/wpTokenMap.php index 8b28982a64bd8..63bad0b8fe844 100644 --- a/tests/phpunit/tests/wp-token-map/wpTokenMap.php +++ b/tests/phpunit/tests/wp-token-map/wpTokenMap.php @@ -86,13 +86,9 @@ public static function data_input_arrays() { 'HTML5', ); - $datasets = array(); - foreach ( $dataset_names as $dataset_name ) { - $datasets[ $dataset_name ] = array( self::get_test_input_array( $dataset_name ) ); + yield $dataset_name => array( self::get_test_input_array( $dataset_name ) ); } - - return $datasets; } /** From 395e8e3eec80b930a79768868339afe32b19e1fc Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Fri, 17 May 2024 11:19:12 -0700 Subject: [PATCH 19/28] Wrap precomputed state in a single array, add version. --- src/wp-includes/class-wp-token-map.php | 121 ++++++++++++++++++------- 1 file changed, 90 insertions(+), 31 deletions(-) diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php index 9908f233f8ebb..4f1e0185e91b1 100644 --- a/src/wp-includes/class-wp-token-map.php +++ b/src/wp-includes/class-wp-token-map.php @@ -51,11 +51,14 @@ * * // Output, to be pasted into a PHP source file: * WP_Token_Map::from_precomputed_table( - * 2, - * "", - * array(), - * "8O\x00:)\x00:(\x00:?\x00", - * array( "😯", "🙂", "🙁", "😕" ) + * array( + * "storage_version" => "1", + * "key_length" => 2, + * "groups" => "", + * "long_words" => array(), + * "small_words" => "8O\x00:)\x00:(\x00:?\x00", + * "small_mappings" => array( "😯", "🙂", "🙁", "😕" ) + * ) * ); * * ## Large vs. small words. @@ -101,21 +104,28 @@ * echo $map->precomputed_php_source_table(); * // Output * WP_Token_Map::from_precomputed_table( - * 2, - * "si\x00so\x00", * array( + * "storage_version" => "1", + * "key_length" => 2, + * "groups" => "si\x00so\x00", + * "long_words" => array( * // simple_smile:[🙂]. * "\x0bmple_smile:\x04🙂", * // soba:[🍜] sob:[😭]. * "\x03ba:\x04🍜\x02b:\x04😭", - * ), - * "", - * array() + * ), + * "short_words" => "", + * "short_mappings" => array() + * } * ); * * This precomputed value can be stored directly in source code and will skip the * startup cost of generating the lookup strings. See `$html5_named_character_entities`. * + * Note that any updates to the precomputed format should update the storage version + * constant. It would also be best to provide an update function to take older known + * versions and upgrade them in place when loading into `from_precomputed_table()`. + * * ## Future Direction. * * It may be viable to dynamically increase the length limits such that there's no need to impose them. @@ -134,6 +144,16 @@ * @since 6.6.0 */ class WP_Token_Map { + /** + * Denotes the version of the code which produces pre-computed source tables. + * + * This version will be used not only to verify pre-computed data, but also + * to upgrade pre-computed data from older versions. Choosing a name that + * corresponds to the WordPress release will help people identify where an + * old copy of data came from. + */ + const STORAGE_VERSION = '6.6.0-trunk'; + /** * Maximum length for each key and each transformed value in the table (in bytes). * @@ -348,22 +368,55 @@ static function ( $a, $b ) { * * @since 6.6.0 * - * @param int $key_length Group key length. - * @param string $groups Group lookup index. - * @param array $large_words Large word groups and packed strings. - * @param string $small_words Small words packed string. - * @param array $small_mappings Small word mappings. + * @param array $state { + * Stores pre-computed state for directly loading into a Token Map. + * + * @type string $storage_version Which version of the code produced this state. + * @type int $key_length Group key length. + * @type string $groups Group lookup index. + * @type array $large_words Large word groups and packed strings. + * @type string $small_words Small words packed string. + * @type array $small_mappings Small word mappings. + * } * * @return WP_Token_Map Map with precomputed data loaded. */ - public static function from_precomputed_table( $key_length, $groups, $large_words, $small_words, $small_mappings ) { + public static function from_precomputed_table( $state ) { + $has_necessary_state = isset( + $state['storage_version'], + $state['key_length'], + $state['groups'], + $state['large_words'], + $state['small_words'], + $state['small_mappings'] + ); + + if ( ! $has_necessary_state ) { + _doing_it_wrong( + __METHOD__, + __( 'Missing required inputs to pre-computed WP_Token_Map.' ), + '6.6.0' + ); + return null; + } + + if ( self::STORAGE_VERSION !== $state['storage_version'] ) { + _doing_it_wrong( + __METHOD__, + /* translators: 1: version string, 2: version string. */ + sprintf( __( "Loaded version '$1%s' incompatible with expected version '$2%s'." ), $state['storage_version'], self::STORAGE_VERSION ), + '6.6.0' + ); + return null; + } + $map = new WP_Token_Map(); - $map->key_length = $key_length; - $map->groups = $groups; - $map->large_words = $large_words; - $map->small_words = $small_words; - $map->small_mappings = $small_mappings; + $map->key_length = $state['key_length']; + $map->groups = $state['groups']; + $map->large_words = $state['large_words']; + $map->small_words = $state['small_words']; + $map->small_mappings = $state['small_mappings']; return $map; } @@ -636,15 +689,20 @@ public function to_array() { */ public function precomputed_php_source_table( $indent = "\t" ) { $i1 = $indent; - $i2 = $indent . $indent; + $i2 = $i1 . $indent; + $i3 = $i2 . $indent; + + $class_version = self::STORAGE_VERSION; $output = self::class . "::from_precomputed_table(\n"; - $output .= "{$i1}{$this->key_length},\n"; + $output .= "{$i1}array(\n"; + $output .= "{$i2}\"storage_version\" => \"{$class_version}\",\n"; + $output .= "{$i2}\"key_length\" => {$this->key_length},\n"; $group_line = str_replace( "\x00", "\\x00", $this->groups ); - $output .= "{$i1}\"{$group_line}\",\n"; + $output .= "{$i2}\"groups\" => \"{$group_line}\",\n"; - $output .= "{$i1}array(\n"; + $output .= "{$i2}\"large_words\" => array(\n"; $prefixes = explode( "\x00", $this->groups ); foreach ( $prefixes as $index => $prefix ) { @@ -653,8 +711,8 @@ public function precomputed_php_source_table( $indent = "\t" ) { } $group = $this->large_words[ $index ]; $group_length = strlen( $group ); - $comment_line = "{$i2}//"; - $data_line = "{$i2}\""; + $comment_line = "{$i3}//"; + $data_line = "{$i3}\""; $at = 0; while ( $at < $group_length ) { $token_length = unpack( 'C', $group[ $at++ ] )[1]; @@ -695,7 +753,7 @@ static function ( $match_result ) { $output .= $data_line; } - $output .= "{$i1}),\n"; + $output .= "{$i2}),\n"; $small_words = array(); $small_length = strlen( $this->small_words ); @@ -706,12 +764,13 @@ static function ( $match_result ) { } $small_text = str_replace( "\x00", '\x00', implode( '', $small_words ) ); - $output .= "{$i1}\"{$small_text}\",\n"; + $output .= "{$i2}\"small_words\" => \"{$small_text}\",\n"; - $output .= "{$i1}array(\n"; + $output .= "{$i2}\"small_mappings\" => array(\n"; foreach ( $this->small_mappings as $mapping ) { - $output .= "{$i2}\"{$mapping}\",\n"; + $output .= "{$i3}\"{$mapping}\",\n"; } + $output .= "{$i2})\n"; $output .= "{$i1})\n"; $output .= ')'; From 98b2fb664cf6ee53d9bc84f137b18d437646440b Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Fri, 17 May 2024 11:26:52 -0700 Subject: [PATCH 20/28] Fix translation placeholders --- src/wp-includes/class-wp-token-map.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php index 4f1e0185e91b1..24741cc653343 100644 --- a/src/wp-includes/class-wp-token-map.php +++ b/src/wp-includes/class-wp-token-map.php @@ -404,7 +404,7 @@ public static function from_precomputed_table( $state ) { _doing_it_wrong( __METHOD__, /* translators: 1: version string, 2: version string. */ - sprintf( __( "Loaded version '$1%s' incompatible with expected version '$2%s'." ), $state['storage_version'], self::STORAGE_VERSION ), + sprintf( __( "Loaded version '%1$s' incompatible with expected version '%2$s'." ), $state['storage_version'], self::STORAGE_VERSION ), '6.6.0' ); return null; From 9cd6459790ae06e4498c260516cb0833d2c42655 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Fri, 17 May 2024 11:30:39 -0700 Subject: [PATCH 21/28] Fix string interpolation issue. --- src/wp-includes/class-wp-token-map.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php index 24741cc653343..40c0520659b98 100644 --- a/src/wp-includes/class-wp-token-map.php +++ b/src/wp-includes/class-wp-token-map.php @@ -404,7 +404,7 @@ public static function from_precomputed_table( $state ) { _doing_it_wrong( __METHOD__, /* translators: 1: version string, 2: version string. */ - sprintf( __( "Loaded version '%1$s' incompatible with expected version '%2$s'." ), $state['storage_version'], self::STORAGE_VERSION ), + sprintf( __( 'Loaded version \'%1$s\' incompatible with expected version \'%2$s\'.' ), $state['storage_version'], self::STORAGE_VERSION ), '6.6.0' ); return null; From c0f4973478c9063a12fa124fb6daa8ad76d9d6d9 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Fri, 17 May 2024 11:34:56 -0700 Subject: [PATCH 22/28] Easier to be worse --- src/wp-includes/class-wp-token-map.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php index 40c0520659b98..51100c0b215ae 100644 --- a/src/wp-includes/class-wp-token-map.php +++ b/src/wp-includes/class-wp-token-map.php @@ -403,8 +403,7 @@ public static function from_precomputed_table( $state ) { if ( self::STORAGE_VERSION !== $state['storage_version'] ) { _doing_it_wrong( __METHOD__, - /* translators: 1: version string, 2: version string. */ - sprintf( __( 'Loaded version \'%1$s\' incompatible with expected version \'%2$s\'.' ), $state['storage_version'], self::STORAGE_VERSION ), + __( 'Unsupported storage version for pre-computed code.' ), '6.6.0' ); return null; From 1a0285656dcabc7d794e2f4b827b49e6d36bcd86 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Fri, 17 May 2024 13:20:30 -0700 Subject: [PATCH 23/28] Update the HTML5 reference table. --- src/wp-includes/class-wp-token-map.php | 3 +- .../html5-named-character-references.php | 2541 +++++++++-------- 2 files changed, 1274 insertions(+), 1270 deletions(-) diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php index 51100c0b215ae..40c0520659b98 100644 --- a/src/wp-includes/class-wp-token-map.php +++ b/src/wp-includes/class-wp-token-map.php @@ -403,7 +403,8 @@ public static function from_precomputed_table( $state ) { if ( self::STORAGE_VERSION !== $state['storage_version'] ) { _doing_it_wrong( __METHOD__, - __( 'Unsupported storage version for pre-computed code.' ), + /* translators: 1: version string, 2: version string. */ + sprintf( __( 'Loaded version \'%1$s\' incompatible with expected version \'%2$s\'.' ), $state['storage_version'], self::STORAGE_VERSION ), '6.6.0' ); return null; diff --git a/src/wp-includes/html-api/html5-named-character-references.php b/src/wp-includes/html-api/html5-named-character-references.php index 2ca9d0fc36f2f..9466f0a06b8cb 100644 --- a/src/wp-includes/html-api/html5-named-character-references.php +++ b/src/wp-includes/html-api/html5-named-character-references.php @@ -36,1275 +36,1278 @@ * @link https://html.spec.whatwg.org/entities.json. */ $html5_named_character_references = WP_Token_Map::from_precomputed_table( - 2, - "AE\x00AM\x00Aa\x00Ab\x00Ac\x00Af\x00Ag\x00Al\x00Am\x00An\x00Ao\x00Ap\x00Ar\x00As\x00At\x00Au\x00Ba\x00Bc\x00Be\x00Bf\x00Bo\x00Br\x00Bs\x00Bu\x00CH\x00CO\x00Ca\x00Cc\x00Cd\x00Ce\x00Cf\x00Ch\x00Ci\x00Cl\x00Co\x00Cr\x00Cs\x00Cu\x00DD\x00DJ\x00DS\x00DZ\x00Da\x00Dc\x00De\x00Df\x00Di\x00Do\x00Ds\x00EN\x00ET\x00Ea\x00Ec\x00Ed\x00Ef\x00Eg\x00El\x00Em\x00Eo\x00Ep\x00Eq\x00Es\x00Et\x00Eu\x00Ex\x00Fc\x00Ff\x00Fi\x00Fo\x00Fs\x00GJ\x00GT\x00Ga\x00Gb\x00Gc\x00Gd\x00Gf\x00Gg\x00Go\x00Gr\x00Gs\x00Gt\x00HA\x00Ha\x00Hc\x00Hf\x00Hi\x00Ho\x00Hs\x00Hu\x00IE\x00IJ\x00IO\x00Ia\x00Ic\x00Id\x00If\x00Ig\x00Im\x00In\x00Io\x00Is\x00It\x00Iu\x00Jc\x00Jf\x00Jo\x00Js\x00Ju\x00KH\x00KJ\x00Ka\x00Kc\x00Kf\x00Ko\x00Ks\x00LJ\x00LT\x00La\x00Lc\x00Le\x00Lf\x00Ll\x00Lm\x00Lo\x00Ls\x00Lt\x00Ma\x00Mc\x00Me\x00Mf\x00Mi\x00Mo\x00Ms\x00Mu\x00NJ\x00Na\x00Nc\x00Ne\x00Nf\x00No\x00Ns\x00Nt\x00Nu\x00OE\x00Oa\x00Oc\x00Od\x00Of\x00Og\x00Om\x00Oo\x00Op\x00Or\x00Os\x00Ot\x00Ou\x00Ov\x00Pa\x00Pc\x00Pf\x00Ph\x00Pi\x00Pl\x00Po\x00Pr\x00Ps\x00QU\x00Qf\x00Qo\x00Qs\x00RB\x00RE\x00Ra\x00Rc\x00Re\x00Rf\x00Rh\x00Ri\x00Ro\x00Rr\x00Rs\x00Ru\x00SH\x00SO\x00Sa\x00Sc\x00Sf\x00Sh\x00Si\x00Sm\x00So\x00Sq\x00Ss\x00St\x00Su\x00TH\x00TR\x00TS\x00Ta\x00Tc\x00Tf\x00Th\x00Ti\x00To\x00Tr\x00Ts\x00Ua\x00Ub\x00Uc\x00Ud\x00Uf\x00Ug\x00Um\x00Un\x00Uo\x00Up\x00Ur\x00Us\x00Ut\x00Uu\x00VD\x00Vb\x00Vc\x00Vd\x00Ve\x00Vf\x00Vo\x00Vs\x00Vv\x00Wc\x00We\x00Wf\x00Wo\x00Ws\x00Xf\x00Xi\x00Xo\x00Xs\x00YA\x00YI\x00YU\x00Ya\x00Yc\x00Yf\x00Yo\x00Ys\x00Yu\x00ZH\x00Za\x00Zc\x00Zd\x00Ze\x00Zf\x00Zo\x00Zs\x00aa\x00ab\x00ac\x00ae\x00af\x00ag\x00al\x00am\x00an\x00ao\x00ap\x00ar\x00as\x00at\x00au\x00aw\x00bN\x00ba\x00bb\x00bc\x00bd\x00be\x00bf\x00bi\x00bk\x00bl\x00bn\x00bo\x00bp\x00br\x00bs\x00bu\x00ca\x00cc\x00cd\x00ce\x00cf\x00ch\x00ci\x00cl\x00co\x00cr\x00cs\x00ct\x00cu\x00cw\x00cy\x00dA\x00dH\x00da\x00db\x00dc\x00dd\x00de\x00df\x00dh\x00di\x00dj\x00dl\x00do\x00dr\x00ds\x00dt\x00du\x00dw\x00dz\x00eD\x00ea\x00ec\x00ed\x00ee\x00ef\x00eg\x00el\x00em\x00en\x00eo\x00ep\x00eq\x00er\x00es\x00et\x00eu\x00ex\x00fa\x00fc\x00fe\x00ff\x00fi\x00fj\x00fl\x00fn\x00fo\x00fp\x00fr\x00fs\x00gE\x00ga\x00gb\x00gc\x00gd\x00ge\x00gf\x00gg\x00gi\x00gj\x00gl\x00gn\x00go\x00gr\x00gs\x00gt\x00gv\x00hA\x00ha\x00hb\x00hc\x00he\x00hf\x00hk\x00ho\x00hs\x00hy\x00ia\x00ic\x00ie\x00if\x00ig\x00ii\x00ij\x00im\x00in\x00io\x00ip\x00iq\x00is\x00it\x00iu\x00jc\x00jf\x00jm\x00jo\x00js\x00ju\x00ka\x00kc\x00kf\x00kg\x00kh\x00kj\x00ko\x00ks\x00lA\x00lB\x00lE\x00lH\x00la\x00lb\x00lc\x00ld\x00le\x00lf\x00lg\x00lh\x00lj\x00ll\x00lm\x00ln\x00lo\x00lp\x00lr\x00ls\x00lt\x00lu\x00lv\x00mD\x00ma\x00mc\x00md\x00me\x00mf\x00mh\x00mi\x00ml\x00mn\x00mo\x00mp\x00ms\x00mu\x00nG\x00nL\x00nR\x00nV\x00na\x00nb\x00nc\x00nd\x00ne\x00nf\x00ng\x00nh\x00ni\x00nj\x00nl\x00nm\x00no\x00np\x00nr\x00ns\x00nt\x00nu\x00nv\x00nw\x00oS\x00oa\x00oc\x00od\x00oe\x00of\x00og\x00oh\x00oi\x00ol\x00om\x00oo\x00op\x00or\x00os\x00ot\x00ou\x00ov\x00pa\x00pc\x00pe\x00pf\x00ph\x00pi\x00pl\x00pm\x00po\x00pr\x00ps\x00pu\x00qf\x00qi\x00qo\x00qp\x00qs\x00qu\x00rA\x00rB\x00rH\x00ra\x00rb\x00rc\x00rd\x00re\x00rf\x00rh\x00ri\x00rl\x00rm\x00rn\x00ro\x00rp\x00rr\x00rs\x00rt\x00ru\x00rx\x00sa\x00sb\x00sc\x00sd\x00se\x00sf\x00sh\x00si\x00sl\x00sm\x00so\x00sp\x00sq\x00sr\x00ss\x00st\x00su\x00sw\x00sz\x00ta\x00tb\x00tc\x00td\x00te\x00tf\x00th\x00ti\x00to\x00tp\x00tr\x00ts\x00tw\x00uA\x00uH\x00ua\x00ub\x00uc\x00ud\x00uf\x00ug\x00uh\x00ul\x00um\x00uo\x00up\x00ur\x00us\x00ut\x00uu\x00uw\x00vA\x00vB\x00vD\x00va\x00vc\x00vd\x00ve\x00vf\x00vl\x00vn\x00vo\x00vp\x00vr\x00vs\x00vz\x00wc\x00we\x00wf\x00wo\x00wp\x00wr\x00ws\x00xc\x00xd\x00xf\x00xh\x00xi\x00xl\x00xm\x00xn\x00xo\x00xr\x00xs\x00xu\x00xv\x00xw\x00ya\x00yc\x00ye\x00yf\x00yi\x00yo\x00ys\x00yu\x00za\x00zc\x00zd\x00ze\x00zf\x00zh\x00zi\x00zo\x00zs\x00zw\x00", array( - // AElig;[Æ] AElig[Æ]. - "\x04lig;\x02Æ\x03lig\x02Æ", - // AMP;[&] AMP[&]. - "\x02P;\x01&\x01P\x01&", - // Aacute;[Á] Aacute[Á]. - "\x05cute;\x02Á\x04cute\x02Á", - // Abreve;[Ă]. - "\x05reve;\x02Ă", - // Acirc;[Â] Acirc[Â] Acy;[А]. - "\x04irc;\x02Â\x03irc\x02Â\x02y;\x02А", - // Afr;[𝔄]. - "\x02r;\x04𝔄", - // Agrave;[À] Agrave[À]. - "\x05rave;\x02À\x04rave\x02À", - // Alpha;[Α]. - "\x04pha;\x02Α", - // Amacr;[Ā]. - "\x04acr;\x02Ā", - // And;[⩓]. - "\x02d;\x03⩓", - // Aogon;[Ą] Aopf;[𝔸]. - "\x04gon;\x02Ą\x03pf;\x04𝔸", - // ApplyFunction;[⁡]. - "\x0cplyFunction;\x03⁡", - // Aring;[Å] Aring[Å]. - "\x04ing;\x02Å\x03ing\x02Å", - // Assign;[≔] Ascr;[𝒜]. - "\x05sign;\x03≔\x03cr;\x04𝒜", - // Atilde;[Ã] Atilde[Ã]. - "\x05ilde;\x02Ã\x04ilde\x02Ã", - // Auml;[Ä] Auml[Ä]. - "\x03ml;\x02Ä\x02ml\x02Ä", - // Backslash;[∖] Barwed;[⌆] Barv;[⫧]. - "\x08ckslash;\x03∖\x05rwed;\x03⌆\x03rv;\x03⫧", - // Bcy;[Б]. - "\x02y;\x02Б", - // Bernoullis;[ℬ] Because;[∵] Beta;[Β]. - "\x09rnoullis;\x03ℬ\x06cause;\x03∵\x03ta;\x02Β", - // Bfr;[𝔅]. - "\x02r;\x04𝔅", - // Bopf;[𝔹]. - "\x03pf;\x04𝔹", - // Breve;[˘]. - "\x04eve;\x02˘", - // Bscr;[ℬ]. - "\x03cr;\x03ℬ", - // Bumpeq;[≎]. - "\x05mpeq;\x03≎", - // CHcy;[Ч]. - "\x03cy;\x02Ч", - // COPY;[©] COPY[©]. - "\x03PY;\x02©\x02PY\x02©", - // CapitalDifferentialD;[ⅅ] Cayleys;[ℭ] Cacute;[Ć] Cap;[⋒]. - "\x13pitalDifferentialD;\x03ⅅ\x06yleys;\x03ℭ\x05cute;\x02Ć\x02p;\x03⋒", - // Cconint;[∰] Ccaron;[Č] Ccedil;[Ç] Ccedil[Ç] Ccirc;[Ĉ]. - "\x06onint;\x03∰\x05aron;\x02Č\x05edil;\x02Ç\x04edil\x02Ç\x04irc;\x02Ĉ", - // Cdot;[Ċ]. - "\x03ot;\x02Ċ", - // CenterDot;[·] Cedilla;[¸]. - "\x08nterDot;\x02·\x06dilla;\x02¸", - // Cfr;[ℭ]. - "\x02r;\x03ℭ", - // Chi;[Χ]. - "\x02i;\x02Χ", - // CircleMinus;[⊖] CircleTimes;[⊗] CirclePlus;[⊕] CircleDot;[⊙]. - "\x0arcleMinus;\x03⊖\x0arcleTimes;\x03⊗\x09rclePlus;\x03⊕\x08rcleDot;\x03⊙", - // ClockwiseContourIntegral;[∲] CloseCurlyDoubleQuote;[”] CloseCurlyQuote;[’]. - "\x17ockwiseContourIntegral;\x03∲\x14oseCurlyDoubleQuote;\x03”\x0eoseCurlyQuote;\x03’", - // CounterClockwiseContourIntegral;[∳] ContourIntegral;[∮] Congruent;[≡] Coproduct;[∐] Colone;[⩴] Conint;[∯] Colon;[∷] Copf;[ℂ]. - "\x1eunterClockwiseContourIntegral;\x03∳\x0entourIntegral;\x03∮\x08ngruent;\x03≡\x08product;\x03∐\x05lone;\x03⩴\x05nint;\x03∯\x04lon;\x03∷\x03pf;\x03ℂ", - // Cross;[⨯]. - "\x04oss;\x03⨯", - // Cscr;[𝒞]. - "\x03cr;\x04𝒞", - // CupCap;[≍] Cup;[⋓]. - "\x05pCap;\x03≍\x02p;\x03⋓", - // DDotrahd;[⤑] DD;[ⅅ]. - "\x07otrahd;\x03⤑\x01;\x03ⅅ", - // DJcy;[Ђ]. - "\x03cy;\x02Ђ", - // DScy;[Ѕ]. - "\x03cy;\x02Ѕ", - // DZcy;[Џ]. - "\x03cy;\x02Џ", - // Dagger;[‡] Dashv;[⫤] Darr;[↡]. - "\x05gger;\x03‡\x04shv;\x03⫤\x03rr;\x03↡", - // Dcaron;[Ď] Dcy;[Д]. - "\x05aron;\x02Ď\x02y;\x02Д", - // Delta;[Δ] Del;[∇]. - "\x04lta;\x02Δ\x02l;\x03∇", - // Dfr;[𝔇]. - "\x02r;\x04𝔇", - // DiacriticalDoubleAcute;[˝] DiacriticalAcute;[´] DiacriticalGrave;[`] DiacriticalTilde;[˜] DiacriticalDot;[˙] DifferentialD;[ⅆ] Diamond;[⋄]. - "\x15acriticalDoubleAcute;\x02˝\x0facriticalAcute;\x02´\x0facriticalGrave;\x01`\x0facriticalTilde;\x02˜\x0dacriticalDot;\x02˙\x0cfferentialD;\x03ⅆ\x06amond;\x03⋄", - // DoubleLongLeftRightArrow;[⟺] DoubleContourIntegral;[∯] DoubleLeftRightArrow;[⇔] DoubleLongRightArrow;[⟹] DoubleLongLeftArrow;[⟸] DownLeftRightVector;[⥐] DownRightTeeVector;[⥟] DownRightVectorBar;[⥗] DoubleUpDownArrow;[⇕] DoubleVerticalBar;[∥] DownLeftTeeVector;[⥞] DownLeftVectorBar;[⥖] DoubleRightArrow;[⇒] DownArrowUpArrow;[⇵] DoubleDownArrow;[⇓] DoubleLeftArrow;[⇐] DownRightVector;[⇁] DoubleRightTee;[⊨] DownLeftVector;[↽] DoubleLeftTee;[⫤] DoubleUpArrow;[⇑] DownArrowBar;[⤓] DownTeeArrow;[↧] DoubleDot;[¨] DownArrow;[↓] DownBreve;[̑] Downarrow;[⇓] DotEqual;[≐] DownTee;[⊤] DotDot;[⃜] Dopf;[𝔻] Dot;[¨]. - "\x17ubleLongLeftRightArrow;\x03⟺\x14ubleContourIntegral;\x03∯\x13ubleLeftRightArrow;\x03⇔\x13ubleLongRightArrow;\x03⟹\x12ubleLongLeftArrow;\x03⟸\x12wnLeftRightVector;\x03⥐\x11wnRightTeeVector;\x03⥟\x11wnRightVectorBar;\x03⥗\x10ubleUpDownArrow;\x03⇕\x10ubleVerticalBar;\x03∥\x10wnLeftTeeVector;\x03⥞\x10wnLeftVectorBar;\x03⥖\x0fubleRightArrow;\x03⇒\x0fwnArrowUpArrow;\x03⇵\x0eubleDownArrow;\x03⇓\x0eubleLeftArrow;\x03⇐\x0ewnRightVector;\x03⇁\x0dubleRightTee;\x03⊨\x0dwnLeftVector;\x03↽\x0cubleLeftTee;\x03⫤\x0cubleUpArrow;\x03⇑\x0bwnArrowBar;\x03⤓\x0bwnTeeArrow;\x03↧\x08ubleDot;\x02¨\x08wnArrow;\x03↓\x08wnBreve;\x02̑\x08wnarrow;\x03⇓\x07tEqual;\x03≐\x06wnTee;\x03⊤\x05tDot;\x03⃜\x03pf;\x04𝔻\x02t;\x02¨", - // Dstrok;[Đ] Dscr;[𝒟]. - "\x05trok;\x02Đ\x03cr;\x04𝒟", - // ENG;[Ŋ]. - "\x02G;\x02Ŋ", - // ETH;[Ð] ETH[Ð]. - "\x02H;\x02Ð\x01H\x02Ð", - // Eacute;[É] Eacute[É]. - "\x05cute;\x02É\x04cute\x02É", - // Ecaron;[Ě] Ecirc;[Ê] Ecirc[Ê] Ecy;[Э]. - "\x05aron;\x02Ě\x04irc;\x02Ê\x03irc\x02Ê\x02y;\x02Э", - // Edot;[Ė]. - "\x03ot;\x02Ė", - // Efr;[𝔈]. - "\x02r;\x04𝔈", - // Egrave;[È] Egrave[È]. - "\x05rave;\x02È\x04rave\x02È", - // Element;[∈]. - "\x06ement;\x03∈", - // EmptyVerySmallSquare;[▫] EmptySmallSquare;[◻] Emacr;[Ē]. - "\x13ptyVerySmallSquare;\x03▫\x0fptySmallSquare;\x03◻\x04acr;\x02Ē", - // Eogon;[Ę] Eopf;[𝔼]. - "\x04gon;\x02Ę\x03pf;\x04𝔼", - // Epsilon;[Ε]. - "\x06silon;\x02Ε", - // Equilibrium;[⇌] EqualTilde;[≂] Equal;[⩵]. - "\x0auilibrium;\x03⇌\x09ualTilde;\x03≂\x04ual;\x03⩵", - // Escr;[ℰ] Esim;[⩳]. - "\x03cr;\x03ℰ\x03im;\x03⩳", - // Eta;[Η]. - "\x02a;\x02Η", - // Euml;[Ë] Euml[Ë]. - "\x03ml;\x02Ë\x02ml\x02Ë", - // ExponentialE;[ⅇ] Exists;[∃]. - "\x0bponentialE;\x03ⅇ\x05ists;\x03∃", - // Fcy;[Ф]. - "\x02y;\x02Ф", - // Ffr;[𝔉]. - "\x02r;\x04𝔉", - // FilledVerySmallSquare;[▪] FilledSmallSquare;[◼]. - "\x14lledVerySmallSquare;\x03▪\x10lledSmallSquare;\x03◼", - // Fouriertrf;[ℱ] ForAll;[∀] Fopf;[𝔽]. - "\x09uriertrf;\x03ℱ\x05rAll;\x03∀\x03pf;\x04𝔽", - // Fscr;[ℱ]. - "\x03cr;\x03ℱ", - // GJcy;[Ѓ]. - "\x03cy;\x02Ѓ", - // GT;[>]. - "\x01;\x01>", - // Gammad;[Ϝ] Gamma;[Γ]. - "\x05mmad;\x02Ϝ\x04mma;\x02Γ", - // Gbreve;[Ğ]. - "\x05reve;\x02Ğ", - // Gcedil;[Ģ] Gcirc;[Ĝ] Gcy;[Г]. - "\x05edil;\x02Ģ\x04irc;\x02Ĝ\x02y;\x02Г", - // Gdot;[Ġ]. - "\x03ot;\x02Ġ", - // Gfr;[𝔊]. - "\x02r;\x04𝔊", - // Gg;[⋙]. - "\x01;\x03⋙", - // Gopf;[𝔾]. - "\x03pf;\x04𝔾", - // GreaterSlantEqual;[⩾] GreaterEqualLess;[⋛] GreaterFullEqual;[≧] GreaterGreater;[⪢] GreaterEqual;[≥] GreaterTilde;[≳] GreaterLess;[≷]. - "\x10eaterSlantEqual;\x03⩾\x0featerEqualLess;\x03⋛\x0featerFullEqual;\x03≧\x0deaterGreater;\x03⪢\x0beaterEqual;\x03≥\x0beaterTilde;\x03≳\x0aeaterLess;\x03≷", - // Gscr;[𝒢]. - "\x03cr;\x04𝒢", - // Gt;[≫]. - "\x01;\x03≫", - // HARDcy;[Ъ]. - "\x05RDcy;\x02Ъ", - // Hacek;[ˇ] Hat;[^]. - "\x04cek;\x02ˇ\x02t;\x01^", - // Hcirc;[Ĥ]. - "\x04irc;\x02Ĥ", - // Hfr;[ℌ]. - "\x02r;\x03ℌ", - // HilbertSpace;[ℋ]. - "\x0blbertSpace;\x03ℋ", - // HorizontalLine;[─] Hopf;[ℍ]. - "\x0drizontalLine;\x03─\x03pf;\x03ℍ", - // Hstrok;[Ħ] Hscr;[ℋ]. - "\x05trok;\x02Ħ\x03cr;\x03ℋ", - // HumpDownHump;[≎] HumpEqual;[≏]. - "\x0bmpDownHump;\x03≎\x08mpEqual;\x03≏", - // IEcy;[Е]. - "\x03cy;\x02Е", - // IJlig;[IJ]. - "\x04lig;\x02IJ", - // IOcy;[Ё]. - "\x03cy;\x02Ё", - // Iacute;[Í] Iacute[Í]. - "\x05cute;\x02Í\x04cute\x02Í", - // Icirc;[Î] Icirc[Î] Icy;[И]. - "\x04irc;\x02Î\x03irc\x02Î\x02y;\x02И", - // Idot;[İ]. - "\x03ot;\x02İ", - // Ifr;[ℑ]. - "\x02r;\x03ℑ", - // Igrave;[Ì] Igrave[Ì]. - "\x05rave;\x02Ì\x04rave\x02Ì", - // ImaginaryI;[ⅈ] Implies;[⇒] Imacr;[Ī] Im;[ℑ]. - "\x09aginaryI;\x03ⅈ\x06plies;\x03⇒\x04acr;\x02Ī\x01;\x03ℑ", - // InvisibleComma;[⁣] InvisibleTimes;[⁢] Intersection;[⋂] Integral;[∫] Int;[∬]. - "\x0dvisibleComma;\x03⁣\x0dvisibleTimes;\x03⁢\x0btersection;\x03⋂\x07tegral;\x03∫\x02t;\x03∬", - // Iogon;[Į] Iopf;[𝕀] Iota;[Ι]. - "\x04gon;\x02Į\x03pf;\x04𝕀\x03ta;\x02Ι", - // Iscr;[ℐ]. - "\x03cr;\x03ℐ", - // Itilde;[Ĩ]. - "\x05ilde;\x02Ĩ", - // Iukcy;[І] Iuml;[Ï] Iuml[Ï]. - "\x04kcy;\x02І\x03ml;\x02Ï\x02ml\x02Ï", - // Jcirc;[Ĵ] Jcy;[Й]. - "\x04irc;\x02Ĵ\x02y;\x02Й", - // Jfr;[𝔍]. - "\x02r;\x04𝔍", - // Jopf;[𝕁]. - "\x03pf;\x04𝕁", - // Jsercy;[Ј] Jscr;[𝒥]. - "\x05ercy;\x02Ј\x03cr;\x04𝒥", - // Jukcy;[Є]. - "\x04kcy;\x02Є", - // KHcy;[Х]. - "\x03cy;\x02Х", - // KJcy;[Ќ]. - "\x03cy;\x02Ќ", - // Kappa;[Κ]. - "\x04ppa;\x02Κ", - // Kcedil;[Ķ] Kcy;[К]. - "\x05edil;\x02Ķ\x02y;\x02К", - // Kfr;[𝔎]. - "\x02r;\x04𝔎", - // Kopf;[𝕂]. - "\x03pf;\x04𝕂", - // Kscr;[𝒦]. - "\x03cr;\x04𝒦", - // LJcy;[Љ]. - "\x03cy;\x02Љ", - // LT;[<]. - "\x01;\x01<", - // Laplacetrf;[ℒ] Lacute;[Ĺ] Lambda;[Λ] Lang;[⟪] Larr;[↞]. - "\x09placetrf;\x03ℒ\x05cute;\x02Ĺ\x05mbda;\x02Λ\x03ng;\x03⟪\x03rr;\x03↞", - // Lcaron;[Ľ] Lcedil;[Ļ] Lcy;[Л]. - "\x05aron;\x02Ľ\x05edil;\x02Ļ\x02y;\x02Л", - // LeftArrowRightArrow;[⇆] LeftDoubleBracket;[⟦] LeftDownTeeVector;[⥡] LeftDownVectorBar;[⥙] LeftTriangleEqual;[⊴] LeftAngleBracket;[⟨] LeftUpDownVector;[⥑] LessEqualGreater;[⋚] LeftRightVector;[⥎] LeftTriangleBar;[⧏] LeftUpTeeVector;[⥠] LeftUpVectorBar;[⥘] LeftDownVector;[⇃] LeftRightArrow;[↔] Leftrightarrow;[⇔] LessSlantEqual;[⩽] LeftTeeVector;[⥚] LeftVectorBar;[⥒] LessFullEqual;[≦] LeftArrowBar;[⇤] LeftTeeArrow;[↤] LeftTriangle;[⊲] LeftUpVector;[↿] LeftCeiling;[⌈] LessGreater;[≶] LeftVector;[↼] LeftArrow;[←] LeftFloor;[⌊] Leftarrow;[⇐] LessTilde;[≲] LessLess;[⪡] LeftTee;[⊣]. - "\x12ftArrowRightArrow;\x03⇆\x10ftDoubleBracket;\x03⟦\x10ftDownTeeVector;\x03⥡\x10ftDownVectorBar;\x03⥙\x10ftTriangleEqual;\x03⊴\x0fftAngleBracket;\x03⟨\x0fftUpDownVector;\x03⥑\x0fssEqualGreater;\x03⋚\x0eftRightVector;\x03⥎\x0eftTriangleBar;\x03⧏\x0eftUpTeeVector;\x03⥠\x0eftUpVectorBar;\x03⥘\x0dftDownVector;\x03⇃\x0dftRightArrow;\x03↔\x0dftrightarrow;\x03⇔\x0dssSlantEqual;\x03⩽\x0cftTeeVector;\x03⥚\x0cftVectorBar;\x03⥒\x0cssFullEqual;\x03≦\x0bftArrowBar;\x03⇤\x0bftTeeArrow;\x03↤\x0bftTriangle;\x03⊲\x0bftUpVector;\x03↿\x0aftCeiling;\x03⌈\x0assGreater;\x03≶\x09ftVector;\x03↼\x08ftArrow;\x03←\x08ftFloor;\x03⌊\x08ftarrow;\x03⇐\x08ssTilde;\x03≲\x07ssLess;\x03⪡\x06ftTee;\x03⊣", - // Lfr;[𝔏]. - "\x02r;\x04𝔏", - // Lleftarrow;[⇚] Ll;[⋘]. - "\x09eftarrow;\x03⇚\x01;\x03⋘", - // Lmidot;[Ŀ]. - "\x05idot;\x02Ŀ", - // LongLeftRightArrow;[⟷] Longleftrightarrow;[⟺] LowerRightArrow;[↘] LongRightArrow;[⟶] Longrightarrow;[⟹] LowerLeftArrow;[↙] LongLeftArrow;[⟵] Longleftarrow;[⟸] Lopf;[𝕃]. - "\x11ngLeftRightArrow;\x03⟷\x11ngleftrightarrow;\x03⟺\x0ewerRightArrow;\x03↘\x0dngRightArrow;\x03⟶\x0dngrightarrow;\x03⟹\x0dwerLeftArrow;\x03↙\x0cngLeftArrow;\x03⟵\x0cngleftarrow;\x03⟸\x03pf;\x04𝕃", - // Lstrok;[Ł] Lscr;[ℒ] Lsh;[↰]. - "\x05trok;\x02Ł\x03cr;\x03ℒ\x02h;\x03↰", - // Lt;[≪]. - "\x01;\x03≪", - // Map;[⤅]. - "\x02p;\x03⤅", - // Mcy;[М]. - "\x02y;\x02М", - // MediumSpace;[ ] Mellintrf;[ℳ]. - "\x0adiumSpace;\x03 \x08llintrf;\x03ℳ", - // Mfr;[𝔐]. - "\x02r;\x04𝔐", - // MinusPlus;[∓]. - "\x08nusPlus;\x03∓", - // Mopf;[𝕄]. - "\x03pf;\x04𝕄", - // Mscr;[ℳ]. - "\x03cr;\x03ℳ", - // Mu;[Μ]. - "\x01;\x02Μ", - // NJcy;[Њ]. - "\x03cy;\x02Њ", - // Nacute;[Ń]. - "\x05cute;\x02Ń", - // Ncaron;[Ň] Ncedil;[Ņ] Ncy;[Н]. - "\x05aron;\x02Ň\x05edil;\x02Ņ\x02y;\x02Н", - // NegativeVeryThinSpace;[​] NestedGreaterGreater;[≫] NegativeMediumSpace;[​] NegativeThickSpace;[​] NegativeThinSpace;[​] NestedLessLess;[≪] NewLine;[\xa]. - "\x14gativeVeryThinSpace;\x03​\x13stedGreaterGreater;\x03≫\x12gativeMediumSpace;\x03​\x11gativeThickSpace;\x03​\x10gativeThinSpace;\x03​\x0dstedLessLess;\x03≪\x06wLine;\x01\xa", - // Nfr;[𝔑]. - "\x02r;\x04𝔑", - // NotNestedGreaterGreater;[⪢̸] NotSquareSupersetEqual;[⋣] NotPrecedesSlantEqual;[⋠] NotRightTriangleEqual;[⋭] NotSucceedsSlantEqual;[⋡] NotDoubleVerticalBar;[∦] NotGreaterSlantEqual;[⩾̸] NotLeftTriangleEqual;[⋬] NotSquareSubsetEqual;[⋢] NotGreaterFullEqual;[≧̸] NotRightTriangleBar;[⧐̸] NotLeftTriangleBar;[⧏̸] NotGreaterGreater;[≫̸] NotLessSlantEqual;[⩽̸] NotNestedLessLess;[⪡̸] NotReverseElement;[∌] NotSquareSuperset;[⊐̸] NotTildeFullEqual;[≇] NonBreakingSpace;[ ] NotPrecedesEqual;[⪯̸] NotRightTriangle;[⋫] NotSucceedsEqual;[⪰̸] NotSucceedsTilde;[≿̸] NotSupersetEqual;[⊉] NotGreaterEqual;[≱] NotGreaterTilde;[≵] NotHumpDownHump;[≎̸] NotLeftTriangle;[⋪] NotSquareSubset;[⊏̸] NotGreaterLess;[≹] NotLessGreater;[≸] NotSubsetEqual;[⊈] NotVerticalBar;[∤] NotEqualTilde;[≂̸] NotTildeEqual;[≄] NotTildeTilde;[≉] NotCongruent;[≢] NotHumpEqual;[≏̸] NotLessEqual;[≰] NotLessTilde;[≴] NotLessLess;[≪̸] NotPrecedes;[⊀] NotSucceeds;[⊁] NotSuperset;[⊃⃒] NotElement;[∉] NotGreater;[≯] NotCupCap;[≭] NotExists;[∄] NotSubset;[⊂⃒] NotEqual;[≠] NotTilde;[≁] NoBreak;[⁠] NotLess;[≮] Nopf;[ℕ] Not;[⫬]. - "\x16tNestedGreaterGreater;\x05⪢̸\x15tSquareSupersetEqual;\x03⋣\x14tPrecedesSlantEqual;\x03⋠\x14tRightTriangleEqual;\x03⋭\x14tSucceedsSlantEqual;\x03⋡\x13tDoubleVerticalBar;\x03∦\x13tGreaterSlantEqual;\x05⩾̸\x13tLeftTriangleEqual;\x03⋬\x13tSquareSubsetEqual;\x03⋢\x12tGreaterFullEqual;\x05≧̸\x12tRightTriangleBar;\x05⧐̸\x11tLeftTriangleBar;\x05⧏̸\x10tGreaterGreater;\x05≫̸\x10tLessSlantEqual;\x05⩽̸\x10tNestedLessLess;\x05⪡̸\x10tReverseElement;\x03∌\x10tSquareSuperset;\x05⊐̸\x10tTildeFullEqual;\x03≇\x0fnBreakingSpace;\x02 \x0ftPrecedesEqual;\x05⪯̸\x0ftRightTriangle;\x03⋫\x0ftSucceedsEqual;\x05⪰̸\x0ftSucceedsTilde;\x05≿̸\x0ftSupersetEqual;\x03⊉\x0etGreaterEqual;\x03≱\x0etGreaterTilde;\x03≵\x0etHumpDownHump;\x05≎̸\x0etLeftTriangle;\x03⋪\x0etSquareSubset;\x05⊏̸\x0dtGreaterLess;\x03≹\x0dtLessGreater;\x03≸\x0dtSubsetEqual;\x03⊈\x0dtVerticalBar;\x03∤\x0ctEqualTilde;\x05≂̸\x0ctTildeEqual;\x03≄\x0ctTildeTilde;\x03≉\x0btCongruent;\x03≢\x0btHumpEqual;\x05≏̸\x0btLessEqual;\x03≰\x0btLessTilde;\x03≴\x0atLessLess;\x05≪̸\x0atPrecedes;\x03⊀\x0atSucceeds;\x03⊁\x0atSuperset;\x06⊃⃒\x09tElement;\x03∉\x09tGreater;\x03≯\x08tCupCap;\x03≭\x08tExists;\x03∄\x08tSubset;\x06⊂⃒\x07tEqual;\x03≠\x07tTilde;\x03≁\x06Break;\x03⁠\x06tLess;\x03≮\x03pf;\x03ℕ\x02t;\x03⫬", - // Nscr;[𝒩]. - "\x03cr;\x04𝒩", - // Ntilde;[Ñ] Ntilde[Ñ]. - "\x05ilde;\x02Ñ\x04ilde\x02Ñ", - // Nu;[Ν]. - "\x01;\x02Ν", - // OElig;[Œ]. - "\x04lig;\x02Œ", - // Oacute;[Ó] Oacute[Ó]. - "\x05cute;\x02Ó\x04cute\x02Ó", - // Ocirc;[Ô] Ocirc[Ô] Ocy;[О]. - "\x04irc;\x02Ô\x03irc\x02Ô\x02y;\x02О", - // Odblac;[Ő]. - "\x05blac;\x02Ő", - // Ofr;[𝔒]. - "\x02r;\x04𝔒", - // Ograve;[Ò] Ograve[Ò]. - "\x05rave;\x02Ò\x04rave\x02Ò", - // Omicron;[Ο] Omacr;[Ō] Omega;[Ω]. - "\x06icron;\x02Ο\x04acr;\x02Ō\x04ega;\x02Ω", - // Oopf;[𝕆]. - "\x03pf;\x04𝕆", - // OpenCurlyDoubleQuote;[“] OpenCurlyQuote;[‘]. - "\x13enCurlyDoubleQuote;\x03“\x0denCurlyQuote;\x03‘", - // Or;[⩔]. - "\x01;\x03⩔", - // Oslash;[Ø] Oslash[Ø] Oscr;[𝒪]. - "\x05lash;\x02Ø\x04lash\x02Ø\x03cr;\x04𝒪", - // Otilde;[Õ] Otimes;[⨷] Otilde[Õ]. - "\x05ilde;\x02Õ\x05imes;\x03⨷\x04ilde\x02Õ", - // Ouml;[Ö] Ouml[Ö]. - "\x03ml;\x02Ö\x02ml\x02Ö", - // OverParenthesis;[⏜] OverBracket;[⎴] OverBrace;[⏞] OverBar;[‾]. - "\x0eerParenthesis;\x03⏜\x0aerBracket;\x03⎴\x08erBrace;\x03⏞\x06erBar;\x03‾", - // PartialD;[∂]. - "\x07rtialD;\x03∂", - // Pcy;[П]. - "\x02y;\x02П", - // Pfr;[𝔓]. - "\x02r;\x04𝔓", - // Phi;[Φ]. - "\x02i;\x02Φ", - // Pi;[Π]. - "\x01;\x02Π", - // PlusMinus;[±]. - "\x08usMinus;\x02±", - // Poincareplane;[ℌ] Popf;[ℙ]. - "\x0cincareplane;\x03ℌ\x03pf;\x03ℙ", - // PrecedesSlantEqual;[≼] PrecedesEqual;[⪯] PrecedesTilde;[≾] Proportional;[∝] Proportion;[∷] Precedes;[≺] Product;[∏] Prime;[″] Pr;[⪻]. - "\x11ecedesSlantEqual;\x03≼\x0cecedesEqual;\x03⪯\x0cecedesTilde;\x03≾\x0boportional;\x03∝\x09oportion;\x03∷\x07ecedes;\x03≺\x06oduct;\x03∏\x04ime;\x03″\x01;\x03⪻", - // Pscr;[𝒫] Psi;[Ψ]. - "\x03cr;\x04𝒫\x02i;\x02Ψ", - // QUOT;[\"] QUOT[\"]. - "\x03OT;\x01\"\x02OT\x01\"", - // Qfr;[𝔔]. - "\x02r;\x04𝔔", - // Qopf;[ℚ]. - "\x03pf;\x03ℚ", - // Qscr;[𝒬]. - "\x03cr;\x04𝒬", - // RBarr;[⤐]. - "\x04arr;\x03⤐", - // REG;[®] REG[®]. - "\x02G;\x02®\x01G\x02®", - // Racute;[Ŕ] Rarrtl;[⤖] Rang;[⟫] Rarr;[↠]. - "\x05cute;\x02Ŕ\x05rrtl;\x03⤖\x03ng;\x03⟫\x03rr;\x03↠", - // Rcaron;[Ř] Rcedil;[Ŗ] Rcy;[Р]. - "\x05aron;\x02Ř\x05edil;\x02Ŗ\x02y;\x02Р", - // ReverseUpEquilibrium;[⥯] ReverseEquilibrium;[⇋] ReverseElement;[∋] Re;[ℜ]. - "\x13verseUpEquilibrium;\x03⥯\x11verseEquilibrium;\x03⇋\x0dverseElement;\x03∋\x01;\x03ℜ", - // Rfr;[ℜ]. - "\x02r;\x03ℜ", - // Rho;[Ρ]. - "\x02o;\x02Ρ", - // RightArrowLeftArrow;[⇄] RightDoubleBracket;[⟧] RightDownTeeVector;[⥝] RightDownVectorBar;[⥕] RightTriangleEqual;[⊵] RightAngleBracket;[⟩] RightUpDownVector;[⥏] RightTriangleBar;[⧐] RightUpTeeVector;[⥜] RightUpVectorBar;[⥔] RightDownVector;[⇂] RightTeeVector;[⥛] RightVectorBar;[⥓] RightArrowBar;[⇥] RightTeeArrow;[↦] RightTriangle;[⊳] RightUpVector;[↾] RightCeiling;[⌉] RightVector;[⇀] RightArrow;[→] RightFloor;[⌋] Rightarrow;[⇒] RightTee;[⊢]. - "\x12ghtArrowLeftArrow;\x03⇄\x11ghtDoubleBracket;\x03⟧\x11ghtDownTeeVector;\x03⥝\x11ghtDownVectorBar;\x03⥕\x11ghtTriangleEqual;\x03⊵\x10ghtAngleBracket;\x03⟩\x10ghtUpDownVector;\x03⥏\x0fghtTriangleBar;\x03⧐\x0fghtUpTeeVector;\x03⥜\x0fghtUpVectorBar;\x03⥔\x0eghtDownVector;\x03⇂\x0dghtTeeVector;\x03⥛\x0dghtVectorBar;\x03⥓\x0cghtArrowBar;\x03⇥\x0cghtTeeArrow;\x03↦\x0cghtTriangle;\x03⊳\x0cghtUpVector;\x03↾\x0bghtCeiling;\x03⌉\x0aghtVector;\x03⇀\x09ghtArrow;\x03→\x09ghtFloor;\x03⌋\x09ghtarrow;\x03⇒\x07ghtTee;\x03⊢", - // RoundImplies;[⥰] Ropf;[ℝ]. - "\x0bundImplies;\x03⥰\x03pf;\x03ℝ", - // Rrightarrow;[⇛]. - "\x0aightarrow;\x03⇛", - // Rscr;[ℛ] Rsh;[↱]. - "\x03cr;\x03ℛ\x02h;\x03↱", - // RuleDelayed;[⧴]. - "\x0aleDelayed;\x03⧴", - // SHCHcy;[Щ] SHcy;[Ш]. - "\x05CHcy;\x02Щ\x03cy;\x02Ш", - // SOFTcy;[Ь]. - "\x05FTcy;\x02Ь", - // Sacute;[Ś]. - "\x05cute;\x02Ś", - // Scaron;[Š] Scedil;[Ş] Scirc;[Ŝ] Scy;[С] Sc;[⪼]. - "\x05aron;\x02Š\x05edil;\x02Ş\x04irc;\x02Ŝ\x02y;\x02С\x01;\x03⪼", - // Sfr;[𝔖]. - "\x02r;\x04𝔖", - // ShortRightArrow;[→] ShortDownArrow;[↓] ShortLeftArrow;[←] ShortUpArrow;[↑]. - "\x0eortRightArrow;\x03→\x0dortDownArrow;\x03↓\x0dortLeftArrow;\x03←\x0bortUpArrow;\x03↑", - // Sigma;[Σ]. - "\x04gma;\x02Σ", - // SmallCircle;[∘]. - "\x0aallCircle;\x03∘", - // Sopf;[𝕊]. - "\x03pf;\x04𝕊", - // SquareSupersetEqual;[⊒] SquareIntersection;[⊓] SquareSubsetEqual;[⊑] SquareSuperset;[⊐] SquareSubset;[⊏] SquareUnion;[⊔] Square;[□] Sqrt;[√]. - "\x12uareSupersetEqual;\x03⊒\x11uareIntersection;\x03⊓\x10uareSubsetEqual;\x03⊑\x0duareSuperset;\x03⊐\x0buareSubset;\x03⊏\x0auareUnion;\x03⊔\x05uare;\x03□\x03rt;\x03√", - // Sscr;[𝒮]. - "\x03cr;\x04𝒮", - // Star;[⋆]. - "\x03ar;\x03⋆", - // SucceedsSlantEqual;[≽] SucceedsEqual;[⪰] SucceedsTilde;[≿] SupersetEqual;[⊇] SubsetEqual;[⊆] Succeeds;[≻] SuchThat;[∋] Superset;[⊃] Subset;[⋐] Supset;[⋑] Sub;[⋐] Sum;[∑] Sup;[⋑]. - "\x11cceedsSlantEqual;\x03≽\x0ccceedsEqual;\x03⪰\x0ccceedsTilde;\x03≿\x0cpersetEqual;\x03⊇\x0absetEqual;\x03⊆\x07cceeds;\x03≻\x07chThat;\x03∋\x07perset;\x03⊃\x05bset;\x03⋐\x05pset;\x03⋑\x02b;\x03⋐\x02m;\x03∑\x02p;\x03⋑", - // THORN;[Þ] THORN[Þ]. - "\x04ORN;\x02Þ\x03ORN\x02Þ", - // TRADE;[™]. - "\x04ADE;\x03™", - // TSHcy;[Ћ] TScy;[Ц]. - "\x04Hcy;\x02Ћ\x03cy;\x02Ц", - // Tab;[\x9] Tau;[Τ]. - "\x02b;\x01\x9\x02u;\x02Τ", - // Tcaron;[Ť] Tcedil;[Ţ] Tcy;[Т]. - "\x05aron;\x02Ť\x05edil;\x02Ţ\x02y;\x02Т", - // Tfr;[𝔗]. - "\x02r;\x04𝔗", - // ThickSpace;[  ] Therefore;[∴] ThinSpace;[ ] Theta;[Θ]. - "\x09ickSpace;\x06  \x08erefore;\x03∴\x08inSpace;\x03 \x04eta;\x02Θ", - // TildeFullEqual;[≅] TildeEqual;[≃] TildeTilde;[≈] Tilde;[∼]. - "\x0dldeFullEqual;\x03≅\x09ldeEqual;\x03≃\x09ldeTilde;\x03≈\x04lde;\x03∼", - // Topf;[𝕋]. - "\x03pf;\x04𝕋", - // TripleDot;[⃛]. - "\x08ipleDot;\x03⃛", - // Tstrok;[Ŧ] Tscr;[𝒯]. - "\x05trok;\x02Ŧ\x03cr;\x04𝒯", - // Uarrocir;[⥉] Uacute;[Ú] Uacute[Ú] Uarr;[↟]. - "\x07rrocir;\x03⥉\x05cute;\x02Ú\x04cute\x02Ú\x03rr;\x03↟", - // Ubreve;[Ŭ] Ubrcy;[Ў]. - "\x05reve;\x02Ŭ\x04rcy;\x02Ў", - // Ucirc;[Û] Ucirc[Û] Ucy;[У]. - "\x04irc;\x02Û\x03irc\x02Û\x02y;\x02У", - // Udblac;[Ű]. - "\x05blac;\x02Ű", - // Ufr;[𝔘]. - "\x02r;\x04𝔘", - // Ugrave;[Ù] Ugrave[Ù]. - "\x05rave;\x02Ù\x04rave\x02Ù", - // Umacr;[Ū]. - "\x04acr;\x02Ū", - // UnderParenthesis;[⏝] UnderBracket;[⎵] UnderBrace;[⏟] UnionPlus;[⊎] UnderBar;[_] Union;[⋃]. - "\x0fderParenthesis;\x03⏝\x0bderBracket;\x03⎵\x09derBrace;\x03⏟\x08ionPlus;\x03⊎\x07derBar;\x01_\x04ion;\x03⋃", - // Uogon;[Ų] Uopf;[𝕌]. - "\x04gon;\x02Ų\x03pf;\x04𝕌", - // UpArrowDownArrow;[⇅] UpperRightArrow;[↗] UpperLeftArrow;[↖] UpEquilibrium;[⥮] UpDownArrow;[↕] Updownarrow;[⇕] UpArrowBar;[⤒] UpTeeArrow;[↥] UpArrow;[↑] Uparrow;[⇑] Upsilon;[Υ] UpTee;[⊥] Upsi;[ϒ]. - "\x0fArrowDownArrow;\x03⇅\x0eperRightArrow;\x03↗\x0dperLeftArrow;\x03↖\x0cEquilibrium;\x03⥮\x0aDownArrow;\x03↕\x0adownarrow;\x03⇕\x09ArrowBar;\x03⤒\x09TeeArrow;\x03↥\x06Arrow;\x03↑\x06arrow;\x03⇑\x06silon;\x02Υ\x04Tee;\x03⊥\x03si;\x02ϒ", - // Uring;[Ů]. - "\x04ing;\x02Ů", - // Uscr;[𝒰]. - "\x03cr;\x04𝒰", - // Utilde;[Ũ]. - "\x05ilde;\x02Ũ", - // Uuml;[Ü] Uuml[Ü]. - "\x03ml;\x02Ü\x02ml\x02Ü", - // VDash;[⊫]. - "\x04ash;\x03⊫", - // Vbar;[⫫]. - "\x03ar;\x03⫫", - // Vcy;[В]. - "\x02y;\x02В", - // Vdashl;[⫦] Vdash;[⊩]. - "\x05ashl;\x03⫦\x04ash;\x03⊩", - // VerticalSeparator;[❘] VerticalTilde;[≀] VeryThinSpace;[ ] VerticalLine;[|] VerticalBar;[∣] Verbar;[‖] Vert;[‖] Vee;[⋁]. - "\x10rticalSeparator;\x03❘\x0crticalTilde;\x03≀\x0cryThinSpace;\x03 \x0brticalLine;\x01|\x0articalBar;\x03∣\x05rbar;\x03‖\x03rt;\x03‖\x02e;\x03⋁", - // Vfr;[𝔙]. - "\x02r;\x04𝔙", - // Vopf;[𝕍]. - "\x03pf;\x04𝕍", - // Vscr;[𝒱]. - "\x03cr;\x04𝒱", - // Vvdash;[⊪]. - "\x05dash;\x03⊪", - // Wcirc;[Ŵ]. - "\x04irc;\x02Ŵ", - // Wedge;[⋀]. - "\x04dge;\x03⋀", - // Wfr;[𝔚]. - "\x02r;\x04𝔚", - // Wopf;[𝕎]. - "\x03pf;\x04𝕎", - // Wscr;[𝒲]. - "\x03cr;\x04𝒲", - // Xfr;[𝔛]. - "\x02r;\x04𝔛", - // Xi;[Ξ]. - "\x01;\x02Ξ", - // Xopf;[𝕏]. - "\x03pf;\x04𝕏", - // Xscr;[𝒳]. - "\x03cr;\x04𝒳", - // YAcy;[Я]. - "\x03cy;\x02Я", - // YIcy;[Ї]. - "\x03cy;\x02Ї", - // YUcy;[Ю]. - "\x03cy;\x02Ю", - // Yacute;[Ý] Yacute[Ý]. - "\x05cute;\x02Ý\x04cute\x02Ý", - // Ycirc;[Ŷ] Ycy;[Ы]. - "\x04irc;\x02Ŷ\x02y;\x02Ы", - // Yfr;[𝔜]. - "\x02r;\x04𝔜", - // Yopf;[𝕐]. - "\x03pf;\x04𝕐", - // Yscr;[𝒴]. - "\x03cr;\x04𝒴", - // Yuml;[Ÿ]. - "\x03ml;\x02Ÿ", - // ZHcy;[Ж]. - "\x03cy;\x02Ж", - // Zacute;[Ź]. - "\x05cute;\x02Ź", - // Zcaron;[Ž] Zcy;[З]. - "\x05aron;\x02Ž\x02y;\x02З", - // Zdot;[Ż]. - "\x03ot;\x02Ż", - // ZeroWidthSpace;[​] Zeta;[Ζ]. - "\x0droWidthSpace;\x03​\x03ta;\x02Ζ", - // Zfr;[ℨ]. - "\x02r;\x03ℨ", - // Zopf;[ℤ]. - "\x03pf;\x03ℤ", - // Zscr;[𝒵]. - "\x03cr;\x04𝒵", - // aacute;[á] aacute[á]. - "\x05cute;\x02á\x04cute\x02á", - // abreve;[ă]. - "\x05reve;\x02ă", - // acirc;[â] acute;[´] acirc[â] acute[´] acE;[∾̳] acd;[∿] acy;[а] ac;[∾]. - "\x04irc;\x02â\x04ute;\x02´\x03irc\x02â\x03ute\x02´\x02E;\x05∾̳\x02d;\x03∿\x02y;\x02а\x01;\x03∾", - // aelig;[æ] aelig[æ]. - "\x04lig;\x02æ\x03lig\x02æ", - // afr;[𝔞] af;[⁡]. - "\x02r;\x04𝔞\x01;\x03⁡", - // agrave;[à] agrave[à]. - "\x05rave;\x02à\x04rave\x02à", - // alefsym;[ℵ] aleph;[ℵ] alpha;[α]. - "\x06efsym;\x03ℵ\x04eph;\x03ℵ\x04pha;\x02α", - // amacr;[ā] amalg;[⨿] amp;[&] amp[&]. - "\x04acr;\x02ā\x04alg;\x03⨿\x02p;\x01&\x01p\x01&", - // andslope;[⩘] angmsdaa;[⦨] angmsdab;[⦩] angmsdac;[⦪] angmsdad;[⦫] angmsdae;[⦬] angmsdaf;[⦭] angmsdag;[⦮] angmsdah;[⦯] angrtvbd;[⦝] angrtvb;[⊾] angzarr;[⍼] andand;[⩕] angmsd;[∡] angsph;[∢] angle;[∠] angrt;[∟] angst;[Å] andd;[⩜] andv;[⩚] ange;[⦤] and;[∧] ang;[∠]. - "\x07dslope;\x03⩘\x07gmsdaa;\x03⦨\x07gmsdab;\x03⦩\x07gmsdac;\x03⦪\x07gmsdad;\x03⦫\x07gmsdae;\x03⦬\x07gmsdaf;\x03⦭\x07gmsdag;\x03⦮\x07gmsdah;\x03⦯\x07grtvbd;\x03⦝\x06grtvb;\x03⊾\x06gzarr;\x03⍼\x05dand;\x03⩕\x05gmsd;\x03∡\x05gsph;\x03∢\x04gle;\x03∠\x04grt;\x03∟\x04gst;\x02Å\x03dd;\x03⩜\x03dv;\x03⩚\x03ge;\x03⦤\x02d;\x03∧\x02g;\x03∠", - // aogon;[ą] aopf;[𝕒]. - "\x04gon;\x02ą\x03pf;\x04𝕒", - // approxeq;[≊] apacir;[⩯] approx;[≈] apid;[≋] apos;['] apE;[⩰] ape;[≊] ap;[≈]. - "\x07proxeq;\x03≊\x05acir;\x03⩯\x05prox;\x03≈\x03id;\x03≋\x03os;\x01'\x02E;\x03⩰\x02e;\x03≊\x01;\x03≈", - // aring;[å] aring[å]. - "\x04ing;\x02å\x03ing\x02å", - // asympeq;[≍] asymp;[≈] ascr;[𝒶] ast;[*]. - "\x06ympeq;\x03≍\x04ymp;\x03≈\x03cr;\x04𝒶\x02t;\x01*", - // atilde;[ã] atilde[ã]. - "\x05ilde;\x02ã\x04ilde\x02ã", - // auml;[ä] auml[ä]. - "\x03ml;\x02ä\x02ml\x02ä", - // awconint;[∳] awint;[⨑]. - "\x07conint;\x03∳\x04int;\x03⨑", - // bNot;[⫭]. - "\x03ot;\x03⫭", - // backepsilon;[϶] backprime;[‵] backsimeq;[⋍] backcong;[≌] barwedge;[⌅] backsim;[∽] barvee;[⊽] barwed;[⌅]. - "\x0ackepsilon;\x02϶\x08ckprime;\x03‵\x08cksimeq;\x03⋍\x07ckcong;\x03≌\x07rwedge;\x03⌅\x06cksim;\x03∽\x05rvee;\x03⊽\x05rwed;\x03⌅", - // bbrktbrk;[⎶] bbrk;[⎵]. - "\x07rktbrk;\x03⎶\x03rk;\x03⎵", - // bcong;[≌] bcy;[б]. - "\x04ong;\x03≌\x02y;\x02б", - // bdquo;[„]. - "\x04quo;\x03„", - // because;[∵] bemptyv;[⦰] between;[≬] becaus;[∵] bernou;[ℬ] bepsi;[϶] beta;[β] beth;[ℶ]. - "\x06cause;\x03∵\x06mptyv;\x03⦰\x06tween;\x03≬\x05caus;\x03∵\x05rnou;\x03ℬ\x04psi;\x02϶\x03ta;\x02β\x03th;\x03ℶ", - // bfr;[𝔟]. - "\x02r;\x04𝔟", - // bigtriangledown;[▽] bigtriangleup;[△] bigotimes;[⨂] bigoplus;[⨁] bigsqcup;[⨆] biguplus;[⨄] bigwedge;[⋀] bigcirc;[◯] bigodot;[⨀] bigstar;[★] bigcap;[⋂] bigcup;[⋃] bigvee;[⋁]. - "\x0egtriangledown;\x03▽\x0cgtriangleup;\x03△\x08gotimes;\x03⨂\x07goplus;\x03⨁\x07gsqcup;\x03⨆\x07guplus;\x03⨄\x07gwedge;\x03⋀\x06gcirc;\x03◯\x06godot;\x03⨀\x06gstar;\x03★\x05gcap;\x03⋂\x05gcup;\x03⋃\x05gvee;\x03⋁", - // bkarow;[⤍]. - "\x05arow;\x03⤍", - // blacktriangleright;[▸] blacktriangledown;[▾] blacktriangleleft;[◂] blacktriangle;[▴] blacklozenge;[⧫] blacksquare;[▪] blank;[␣] blk12;[▒] blk14;[░] blk34;[▓] block;[█]. - "\x11acktriangleright;\x03▸\x10acktriangledown;\x03▾\x10acktriangleleft;\x03◂\x0cacktriangle;\x03▴\x0backlozenge;\x03⧫\x0aacksquare;\x03▪\x04ank;\x03␣\x04k12;\x03▒\x04k14;\x03░\x04k34;\x03▓\x04ock;\x03█", - // bnequiv;[≡⃥] bnot;[⌐] bne;[=⃥]. - "\x06equiv;\x06≡⃥\x03ot;\x03⌐\x02e;\x04=⃥", - // boxminus;[⊟] boxtimes;[⊠] boxplus;[⊞] bottom;[⊥] bowtie;[⋈] boxbox;[⧉] boxDL;[╗] boxDR;[╔] boxDl;[╖] boxDr;[╓] boxHD;[╦] boxHU;[╩] boxHd;[╤] boxHu;[╧] boxUL;[╝] boxUR;[╚] boxUl;[╜] boxUr;[╙] boxVH;[╬] boxVL;[╣] boxVR;[╠] boxVh;[╫] boxVl;[╢] boxVr;[╟] boxdL;[╕] boxdR;[╒] boxdl;[┐] boxdr;[┌] boxhD;[╥] boxhU;[╨] boxhd;[┬] boxhu;[┴] boxuL;[╛] boxuR;[╘] boxul;[┘] boxur;[└] boxvH;[╪] boxvL;[╡] boxvR;[╞] boxvh;[┼] boxvl;[┤] boxvr;[├] bopf;[𝕓] boxH;[═] boxV;[║] boxh;[─] boxv;[│] bot;[⊥]. - "\x07xminus;\x03⊟\x07xtimes;\x03⊠\x06xplus;\x03⊞\x05ttom;\x03⊥\x05wtie;\x03⋈\x05xbox;\x03⧉\x04xDL;\x03╗\x04xDR;\x03╔\x04xDl;\x03╖\x04xDr;\x03╓\x04xHD;\x03╦\x04xHU;\x03╩\x04xHd;\x03╤\x04xHu;\x03╧\x04xUL;\x03╝\x04xUR;\x03╚\x04xUl;\x03╜\x04xUr;\x03╙\x04xVH;\x03╬\x04xVL;\x03╣\x04xVR;\x03╠\x04xVh;\x03╫\x04xVl;\x03╢\x04xVr;\x03╟\x04xdL;\x03╕\x04xdR;\x03╒\x04xdl;\x03┐\x04xdr;\x03┌\x04xhD;\x03╥\x04xhU;\x03╨\x04xhd;\x03┬\x04xhu;\x03┴\x04xuL;\x03╛\x04xuR;\x03╘\x04xul;\x03┘\x04xur;\x03└\x04xvH;\x03╪\x04xvL;\x03╡\x04xvR;\x03╞\x04xvh;\x03┼\x04xvl;\x03┤\x04xvr;\x03├\x03pf;\x04𝕓\x03xH;\x03═\x03xV;\x03║\x03xh;\x03─\x03xv;\x03│\x02t;\x03⊥", - // bprime;[‵]. - "\x05rime;\x03‵", - // brvbar;[¦] breve;[˘] brvbar[¦]. - "\x05vbar;\x02¦\x04eve;\x02˘\x04vbar\x02¦", - // bsolhsub;[⟈] bsemi;[⁏] bsime;[⋍] bsolb;[⧅] bscr;[𝒷] bsim;[∽] bsol;[\\]. - "\x07olhsub;\x03⟈\x04emi;\x03⁏\x04ime;\x03⋍\x04olb;\x03⧅\x03cr;\x04𝒷\x03im;\x03∽\x03ol;\x01\\", - // bullet;[•] bumpeq;[≏] bumpE;[⪮] bumpe;[≏] bull;[•] bump;[≎]. - "\x05llet;\x03•\x05mpeq;\x03≏\x04mpE;\x03⪮\x04mpe;\x03≏\x03ll;\x03•\x03mp;\x03≎", - // capbrcup;[⩉] cacute;[ć] capand;[⩄] capcap;[⩋] capcup;[⩇] capdot;[⩀] caret;[⁁] caron;[ˇ] caps;[∩︀] cap;[∩]. - "\x07pbrcup;\x03⩉\x05cute;\x02ć\x05pand;\x03⩄\x05pcap;\x03⩋\x05pcup;\x03⩇\x05pdot;\x03⩀\x04ret;\x03⁁\x04ron;\x02ˇ\x03ps;\x06∩︀\x02p;\x03∩", - // ccupssm;[⩐] ccaron;[č] ccedil;[ç] ccaps;[⩍] ccedil[ç] ccirc;[ĉ] ccups;[⩌]. - "\x06upssm;\x03⩐\x05aron;\x02č\x05edil;\x02ç\x04aps;\x03⩍\x04edil\x02ç\x04irc;\x02ĉ\x04ups;\x03⩌", - // cdot;[ċ]. - "\x03ot;\x02ċ", - // centerdot;[·] cemptyv;[⦲] cedil;[¸] cedil[¸] cent;[¢] cent[¢]. - "\x08nterdot;\x02·\x06mptyv;\x03⦲\x04dil;\x02¸\x03dil\x02¸\x03nt;\x02¢\x02nt\x02¢", - // cfr;[𝔠]. - "\x02r;\x04𝔠", - // checkmark;[✓] check;[✓] chcy;[ч] chi;[χ]. - "\x08eckmark;\x03✓\x04eck;\x03✓\x03cy;\x02ч\x02i;\x02χ", - // circlearrowright;[↻] circlearrowleft;[↺] circledcirc;[⊚] circleddash;[⊝] circledast;[⊛] circledR;[®] circledS;[Ⓢ] cirfnint;[⨐] cirscir;[⧂] circeq;[≗] cirmid;[⫯] cirE;[⧃] circ;[ˆ] cire;[≗] cir;[○]. - "\x0frclearrowright;\x03↻\x0erclearrowleft;\x03↺\x0arcledcirc;\x03⊚\x0arcleddash;\x03⊝\x09rcledast;\x03⊛\x07rcledR;\x02®\x07rcledS;\x03Ⓢ\x07rfnint;\x03⨐\x06rscir;\x03⧂\x05rceq;\x03≗\x05rmid;\x03⫯\x03rE;\x03⧃\x03rc;\x02ˆ\x03re;\x03≗\x02r;\x03○", - // clubsuit;[♣] clubs;[♣]. - "\x07ubsuit;\x03♣\x04ubs;\x03♣", - // complement;[∁] complexes;[ℂ] coloneq;[≔] congdot;[⩭] colone;[≔] commat;[@] compfn;[∘] conint;[∮] coprod;[∐] copysr;[℗] colon;[:] comma;[,] comp;[∁] cong;[≅] copf;[𝕔] copy;[©] copy[©]. - "\x09mplement;\x03∁\x08mplexes;\x03ℂ\x06loneq;\x03≔\x06ngdot;\x03⩭\x05lone;\x03≔\x05mmat;\x01@\x05mpfn;\x03∘\x05nint;\x03∮\x05prod;\x03∐\x05pysr;\x03℗\x04lon;\x01:\x04mma;\x01,\x03mp;\x03∁\x03ng;\x03≅\x03pf;\x04𝕔\x03py;\x02©\x02py\x02©", - // crarr;[↵] cross;[✗]. - "\x04arr;\x03↵\x04oss;\x03✗", - // csube;[⫑] csupe;[⫒] cscr;[𝒸] csub;[⫏] csup;[⫐]. - "\x04ube;\x03⫑\x04upe;\x03⫒\x03cr;\x04𝒸\x03ub;\x03⫏\x03up;\x03⫐", - // ctdot;[⋯]. - "\x04dot;\x03⋯", - // curvearrowright;[↷] curvearrowleft;[↶] curlyeqprec;[⋞] curlyeqsucc;[⋟] curlywedge;[⋏] cupbrcap;[⩈] curlyvee;[⋎] cudarrl;[⤸] cudarrr;[⤵] cularrp;[⤽] curarrm;[⤼] cularr;[↶] cupcap;[⩆] cupcup;[⩊] cupdot;[⊍] curarr;[↷] curren;[¤] cuepr;[⋞] cuesc;[⋟] cupor;[⩅] curren[¤] cuvee;[⋎] cuwed;[⋏] cups;[∪︀] cup;[∪]. - "\x0ervearrowright;\x03↷\x0drvearrowleft;\x03↶\x0arlyeqprec;\x03⋞\x0arlyeqsucc;\x03⋟\x09rlywedge;\x03⋏\x07pbrcap;\x03⩈\x07rlyvee;\x03⋎\x06darrl;\x03⤸\x06darrr;\x03⤵\x06larrp;\x03⤽\x06rarrm;\x03⤼\x05larr;\x03↶\x05pcap;\x03⩆\x05pcup;\x03⩊\x05pdot;\x03⊍\x05rarr;\x03↷\x05rren;\x02¤\x04epr;\x03⋞\x04esc;\x03⋟\x04por;\x03⩅\x04rren\x02¤\x04vee;\x03⋎\x04wed;\x03⋏\x03ps;\x06∪︀\x02p;\x03∪", - // cwconint;[∲] cwint;[∱]. - "\x07conint;\x03∲\x04int;\x03∱", - // cylcty;[⌭]. - "\x05lcty;\x03⌭", - // dArr;[⇓]. - "\x03rr;\x03⇓", - // dHar;[⥥]. - "\x03ar;\x03⥥", - // dagger;[†] daleth;[ℸ] dashv;[⊣] darr;[↓] dash;[‐]. - "\x05gger;\x03†\x05leth;\x03ℸ\x04shv;\x03⊣\x03rr;\x03↓\x03sh;\x03‐", - // dbkarow;[⤏] dblac;[˝]. - "\x06karow;\x03⤏\x04lac;\x02˝", - // dcaron;[ď] dcy;[д]. - "\x05aron;\x02ď\x02y;\x02д", - // ddagger;[‡] ddotseq;[⩷] ddarr;[⇊] dd;[ⅆ]. - "\x06agger;\x03‡\x06otseq;\x03⩷\x04arr;\x03⇊\x01;\x03ⅆ", - // demptyv;[⦱] delta;[δ] deg;[°] deg[°]. - "\x06mptyv;\x03⦱\x04lta;\x02δ\x02g;\x02°\x01g\x02°", - // dfisht;[⥿] dfr;[𝔡]. - "\x05isht;\x03⥿\x02r;\x04𝔡", - // dharl;[⇃] dharr;[⇂]. - "\x04arl;\x03⇃\x04arr;\x03⇂", - // divideontimes;[⋇] diamondsuit;[♦] diamond;[⋄] digamma;[ϝ] divide;[÷] divonx;[⋇] diams;[♦] disin;[⋲] divide[÷] diam;[⋄] die;[¨] div;[÷]. - "\x0cvideontimes;\x03⋇\x0aamondsuit;\x03♦\x06amond;\x03⋄\x06gamma;\x02ϝ\x05vide;\x02÷\x05vonx;\x03⋇\x04ams;\x03♦\x04sin;\x03⋲\x04vide\x02÷\x03am;\x03⋄\x02e;\x02¨\x02v;\x02÷", - // djcy;[ђ]. - "\x03cy;\x02ђ", - // dlcorn;[⌞] dlcrop;[⌍]. - "\x05corn;\x03⌞\x05crop;\x03⌍", - // downharpoonright;[⇂] downharpoonleft;[⇃] doublebarwedge;[⌆] downdownarrows;[⇊] dotsquare;[⊡] downarrow;[↓] doteqdot;[≑] dotminus;[∸] dotplus;[∔] dollar;[$] doteq;[≐] dopf;[𝕕] dot;[˙]. - "\x0fwnharpoonright;\x03⇂\x0ewnharpoonleft;\x03⇃\x0dublebarwedge;\x03⌆\x0dwndownarrows;\x03⇊\x08tsquare;\x03⊡\x08wnarrow;\x03↓\x07teqdot;\x03≑\x07tminus;\x03∸\x06tplus;\x03∔\x05llar;\x01$\x04teq;\x03≐\x03pf;\x04𝕕\x02t;\x02˙", - // drbkarow;[⤐] drcorn;[⌟] drcrop;[⌌]. - "\x07bkarow;\x03⤐\x05corn;\x03⌟\x05crop;\x03⌌", - // dstrok;[đ] dscr;[𝒹] dscy;[ѕ] dsol;[⧶]. - "\x05trok;\x02đ\x03cr;\x04𝒹\x03cy;\x02ѕ\x03ol;\x03⧶", - // dtdot;[⋱] dtrif;[▾] dtri;[▿]. - "\x04dot;\x03⋱\x04rif;\x03▾\x03ri;\x03▿", - // duarr;[⇵] duhar;[⥯]. - "\x04arr;\x03⇵\x04har;\x03⥯", - // dwangle;[⦦]. - "\x06angle;\x03⦦", - // dzigrarr;[⟿] dzcy;[џ]. - "\x07igrarr;\x03⟿\x03cy;\x02џ", - // eDDot;[⩷] eDot;[≑]. - "\x04Dot;\x03⩷\x03ot;\x03≑", - // eacute;[é] easter;[⩮] eacute[é]. - "\x05cute;\x02é\x05ster;\x03⩮\x04cute\x02é", - // ecaron;[ě] ecolon;[≕] ecirc;[ê] ecir;[≖] ecirc[ê] ecy;[э]. - "\x05aron;\x02ě\x05olon;\x03≕\x04irc;\x02ê\x03ir;\x03≖\x03irc\x02ê\x02y;\x02э", - // edot;[ė]. - "\x03ot;\x02ė", - // ee;[ⅇ]. - "\x01;\x03ⅇ", - // efDot;[≒] efr;[𝔢]. - "\x04Dot;\x03≒\x02r;\x04𝔢", - // egrave;[è] egsdot;[⪘] egrave[è] egs;[⪖] eg;[⪚]. - "\x05rave;\x02è\x05sdot;\x03⪘\x04rave\x02è\x02s;\x03⪖\x01;\x03⪚", - // elinters;[⏧] elsdot;[⪗] ell;[ℓ] els;[⪕] el;[⪙]. - "\x07inters;\x03⏧\x05sdot;\x03⪗\x02l;\x03ℓ\x02s;\x03⪕\x01;\x03⪙", - // emptyset;[∅] emptyv;[∅] emsp13;[ ] emsp14;[ ] emacr;[ē] empty;[∅] emsp;[ ]. - "\x07ptyset;\x03∅\x05ptyv;\x03∅\x05sp13;\x03 \x05sp14;\x03 \x04acr;\x02ē\x04pty;\x03∅\x03sp;\x03 ", - // ensp;[ ] eng;[ŋ]. - "\x03sp;\x03 \x02g;\x02ŋ", - // eogon;[ę] eopf;[𝕖]. - "\x04gon;\x02ę\x03pf;\x04𝕖", - // epsilon;[ε] eparsl;[⧣] eplus;[⩱] epsiv;[ϵ] epar;[⋕] epsi;[ε]. - "\x06silon;\x02ε\x05arsl;\x03⧣\x04lus;\x03⩱\x04siv;\x02ϵ\x03ar;\x03⋕\x03si;\x02ε", - // eqslantless;[⪕] eqslantgtr;[⪖] eqvparsl;[⧥] eqcolon;[≕] equivDD;[⩸] eqcirc;[≖] equals;[=] equest;[≟] eqsim;[≂] equiv;[≡]. - "\x0aslantless;\x03⪕\x09slantgtr;\x03⪖\x07vparsl;\x03⧥\x06colon;\x03≕\x06uivDD;\x03⩸\x05circ;\x03≖\x05uals;\x01=\x05uest;\x03≟\x04sim;\x03≂\x04uiv;\x03≡", - // erDot;[≓] erarr;[⥱]. - "\x04Dot;\x03≓\x04arr;\x03⥱", - // esdot;[≐] escr;[ℯ] esim;[≂]. - "\x04dot;\x03≐\x03cr;\x03ℯ\x03im;\x03≂", - // eta;[η] eth;[ð] eth[ð]. - "\x02a;\x02η\x02h;\x02ð\x01h\x02ð", - // euml;[ë] euro;[€] euml[ë]. - "\x03ml;\x02ë\x03ro;\x03€\x02ml\x02ë", - // exponentiale;[ⅇ] expectation;[ℰ] exist;[∃] excl;[!]. - "\x0bponentiale;\x03ⅇ\x0apectation;\x03ℰ\x04ist;\x03∃\x03cl;\x01!", - // fallingdotseq;[≒]. - "\x0cllingdotseq;\x03≒", - // fcy;[ф]. - "\x02y;\x02ф", - // female;[♀]. - "\x05male;\x03♀", - // ffilig;[ffi] ffllig;[ffl] fflig;[ff] ffr;[𝔣]. - "\x05ilig;\x03ffi\x05llig;\x03ffl\x04lig;\x03ff\x02r;\x04𝔣", - // filig;[fi]. - "\x04lig;\x03fi", - // fjlig;[fj]. - "\x04lig;\x02fj", - // fllig;[fl] fltns;[▱] flat;[♭]. - "\x04lig;\x03fl\x04tns;\x03▱\x03at;\x03♭", - // fnof;[ƒ]. - "\x03of;\x02ƒ", - // forall;[∀] forkv;[⫙] fopf;[𝕗] fork;[⋔]. - "\x05rall;\x03∀\x04rkv;\x03⫙\x03pf;\x04𝕗\x03rk;\x03⋔", - // fpartint;[⨍]. - "\x07artint;\x03⨍", - // frac12;[½] frac13;[⅓] frac14;[¼] frac15;[⅕] frac16;[⅙] frac18;[⅛] frac23;[⅔] frac25;[⅖] frac34;[¾] frac35;[⅗] frac38;[⅜] frac45;[⅘] frac56;[⅚] frac58;[⅝] frac78;[⅞] frac12[½] frac14[¼] frac34[¾] frasl;[⁄] frown;[⌢]. - "\x05ac12;\x02½\x05ac13;\x03⅓\x05ac14;\x02¼\x05ac15;\x03⅕\x05ac16;\x03⅙\x05ac18;\x03⅛\x05ac23;\x03⅔\x05ac25;\x03⅖\x05ac34;\x02¾\x05ac35;\x03⅗\x05ac38;\x03⅜\x05ac45;\x03⅘\x05ac56;\x03⅚\x05ac58;\x03⅝\x05ac78;\x03⅞\x04ac12\x02½\x04ac14\x02¼\x04ac34\x02¾\x04asl;\x03⁄\x04own;\x03⌢", - // fscr;[𝒻]. - "\x03cr;\x04𝒻", - // gEl;[⪌] gE;[≧]. - "\x02l;\x03⪌\x01;\x03≧", - // gacute;[ǵ] gammad;[ϝ] gamma;[γ] gap;[⪆]. - "\x05cute;\x02ǵ\x05mmad;\x02ϝ\x04mma;\x02γ\x02p;\x03⪆", - // gbreve;[ğ]. - "\x05reve;\x02ğ", - // gcirc;[ĝ] gcy;[г]. - "\x04irc;\x02ĝ\x02y;\x02г", - // gdot;[ġ]. - "\x03ot;\x02ġ", - // geqslant;[⩾] gesdotol;[⪄] gesdoto;[⪂] gesdot;[⪀] gesles;[⪔] gescc;[⪩] geqq;[≧] gesl;[⋛︀] gel;[⋛] geq;[≥] ges;[⩾] ge;[≥]. - "\x07qslant;\x03⩾\x07sdotol;\x03⪄\x06sdoto;\x03⪂\x05sdot;\x03⪀\x05sles;\x03⪔\x04scc;\x03⪩\x03qq;\x03≧\x03sl;\x06⋛︀\x02l;\x03⋛\x02q;\x03≥\x02s;\x03⩾\x01;\x03≥", - // gfr;[𝔤]. - "\x02r;\x04𝔤", - // ggg;[⋙] gg;[≫]. - "\x02g;\x03⋙\x01;\x03≫", - // gimel;[ℷ]. - "\x04mel;\x03ℷ", - // gjcy;[ѓ]. - "\x03cy;\x02ѓ", - // glE;[⪒] gla;[⪥] glj;[⪤] gl;[≷]. - "\x02E;\x03⪒\x02a;\x03⪥\x02j;\x03⪤\x01;\x03≷", - // gnapprox;[⪊] gneqq;[≩] gnsim;[⋧] gnap;[⪊] gneq;[⪈] gnE;[≩] gne;[⪈]. - "\x07approx;\x03⪊\x04eqq;\x03≩\x04sim;\x03⋧\x03ap;\x03⪊\x03eq;\x03⪈\x02E;\x03≩\x02e;\x03⪈", - // gopf;[𝕘]. - "\x03pf;\x04𝕘", - // grave;[`]. - "\x04ave;\x01`", - // gsime;[⪎] gsiml;[⪐] gscr;[ℊ] gsim;[≳]. - "\x04ime;\x03⪎\x04iml;\x03⪐\x03cr;\x03ℊ\x03im;\x03≳", - // gtreqqless;[⪌] gtrapprox;[⪆] gtreqless;[⋛] gtquest;[⩼] gtrless;[≷] gtlPar;[⦕] gtrarr;[⥸] gtrdot;[⋗] gtrsim;[≳] gtcir;[⩺] gtdot;[⋗] gtcc;[⪧] gt;[>]. - "\x09reqqless;\x03⪌\x08rapprox;\x03⪆\x08reqless;\x03⋛\x06quest;\x03⩼\x06rless;\x03≷\x05lPar;\x03⦕\x05rarr;\x03⥸\x05rdot;\x03⋗\x05rsim;\x03≳\x04cir;\x03⩺\x04dot;\x03⋗\x03cc;\x03⪧\x01;\x01>", - // gvertneqq;[≩︀] gvnE;[≩︀]. - "\x08ertneqq;\x06≩︀\x03nE;\x06≩︀", - // hArr;[⇔]. - "\x03rr;\x03⇔", - // harrcir;[⥈] hairsp;[ ] hamilt;[ℋ] hardcy;[ъ] harrw;[↭] half;[½] harr;[↔]. - "\x06rrcir;\x03⥈\x05irsp;\x03 \x05milt;\x03ℋ\x05rdcy;\x02ъ\x04rrw;\x03↭\x03lf;\x02½\x03rr;\x03↔", - // hbar;[ℏ]. - "\x03ar;\x03ℏ", - // hcirc;[ĥ]. - "\x04irc;\x02ĥ", - // heartsuit;[♥] hearts;[♥] hellip;[…] hercon;[⊹]. - "\x08artsuit;\x03♥\x05arts;\x03♥\x05llip;\x03…\x05rcon;\x03⊹", - // hfr;[𝔥]. - "\x02r;\x04𝔥", - // hksearow;[⤥] hkswarow;[⤦]. - "\x07searow;\x03⤥\x07swarow;\x03⤦", - // hookrightarrow;[↪] hookleftarrow;[↩] homtht;[∻] horbar;[―] hoarr;[⇿] hopf;[𝕙]. - "\x0dokrightarrow;\x03↪\x0cokleftarrow;\x03↩\x05mtht;\x03∻\x05rbar;\x03―\x04arr;\x03⇿\x03pf;\x04𝕙", - // hslash;[ℏ] hstrok;[ħ] hscr;[𝒽]. - "\x05lash;\x03ℏ\x05trok;\x02ħ\x03cr;\x04𝒽", - // hybull;[⁃] hyphen;[‐]. - "\x05bull;\x03⁃\x05phen;\x03‐", - // iacute;[í] iacute[í]. - "\x05cute;\x02í\x04cute\x02í", - // icirc;[î] icirc[î] icy;[и] ic;[⁣]. - "\x04irc;\x02î\x03irc\x02î\x02y;\x02и\x01;\x03⁣", - // iexcl;[¡] iecy;[е] iexcl[¡]. - "\x04xcl;\x02¡\x03cy;\x02е\x03xcl\x02¡", - // iff;[⇔] ifr;[𝔦]. - "\x02f;\x03⇔\x02r;\x04𝔦", - // igrave;[ì] igrave[ì]. - "\x05rave;\x02ì\x04rave\x02ì", - // iiiint;[⨌] iinfin;[⧜] iiint;[∭] iiota;[℩] ii;[ⅈ]. - "\x05iint;\x03⨌\x05nfin;\x03⧜\x04int;\x03∭\x04ota;\x03℩\x01;\x03ⅈ", - // ijlig;[ij]. - "\x04lig;\x02ij", - // imagline;[ℐ] imagpart;[ℑ] imacr;[ī] image;[ℑ] imath;[ı] imped;[Ƶ] imof;[⊷]. - "\x07agline;\x03ℐ\x07agpart;\x03ℑ\x04acr;\x02ī\x04age;\x03ℑ\x04ath;\x02ı\x04ped;\x02Ƶ\x03of;\x03⊷", - // infintie;[⧝] integers;[ℤ] intercal;[⊺] intlarhk;[⨗] intprod;[⨼] incare;[℅] inodot;[ı] intcal;[⊺] infin;[∞] int;[∫] in;[∈]. - "\x07fintie;\x03⧝\x07tegers;\x03ℤ\x07tercal;\x03⊺\x07tlarhk;\x03⨗\x06tprod;\x03⨼\x05care;\x03℅\x05odot;\x02ı\x05tcal;\x03⊺\x04fin;\x03∞\x02t;\x03∫\x01;\x03∈", - // iogon;[į] iocy;[ё] iopf;[𝕚] iota;[ι]. - "\x04gon;\x02į\x03cy;\x02ё\x03pf;\x04𝕚\x03ta;\x02ι", - // iprod;[⨼]. - "\x04rod;\x03⨼", - // iquest;[¿] iquest[¿]. - "\x05uest;\x02¿\x04uest\x02¿", - // isindot;[⋵] isinsv;[⋳] isinE;[⋹] isins;[⋴] isinv;[∈] iscr;[𝒾] isin;[∈]. - "\x06indot;\x03⋵\x05insv;\x03⋳\x04inE;\x03⋹\x04ins;\x03⋴\x04inv;\x03∈\x03cr;\x04𝒾\x03in;\x03∈", - // itilde;[ĩ] it;[⁢]. - "\x05ilde;\x02ĩ\x01;\x03⁢", - // iukcy;[і] iuml;[ï] iuml[ï]. - "\x04kcy;\x02і\x03ml;\x02ï\x02ml\x02ï", - // jcirc;[ĵ] jcy;[й]. - "\x04irc;\x02ĵ\x02y;\x02й", - // jfr;[𝔧]. - "\x02r;\x04𝔧", - // jmath;[ȷ]. - "\x04ath;\x02ȷ", - // jopf;[𝕛]. - "\x03pf;\x04𝕛", - // jsercy;[ј] jscr;[𝒿]. - "\x05ercy;\x02ј\x03cr;\x04𝒿", - // jukcy;[є]. - "\x04kcy;\x02є", - // kappav;[ϰ] kappa;[κ]. - "\x05ppav;\x02ϰ\x04ppa;\x02κ", - // kcedil;[ķ] kcy;[к]. - "\x05edil;\x02ķ\x02y;\x02к", - // kfr;[𝔨]. - "\x02r;\x04𝔨", - // kgreen;[ĸ]. - "\x05reen;\x02ĸ", - // khcy;[х]. - "\x03cy;\x02х", - // kjcy;[ќ]. - "\x03cy;\x02ќ", - // kopf;[𝕜]. - "\x03pf;\x04𝕜", - // kscr;[𝓀]. - "\x03cr;\x04𝓀", - // lAtail;[⤛] lAarr;[⇚] lArr;[⇐]. - "\x05tail;\x03⤛\x04arr;\x03⇚\x03rr;\x03⇐", - // lBarr;[⤎]. - "\x04arr;\x03⤎", - // lEg;[⪋] lE;[≦]. - "\x02g;\x03⪋\x01;\x03≦", - // lHar;[⥢]. - "\x03ar;\x03⥢", - // laemptyv;[⦴] larrbfs;[⤟] larrsim;[⥳] lacute;[ĺ] lagran;[ℒ] lambda;[λ] langle;[⟨] larrfs;[⤝] larrhk;[↩] larrlp;[↫] larrpl;[⤹] larrtl;[↢] latail;[⤙] langd;[⦑] laquo;[«] larrb;[⇤] lates;[⪭︀] lang;[⟨] laquo[«] larr;[←] late;[⪭] lap;[⪅] lat;[⪫]. - "\x07emptyv;\x03⦴\x06rrbfs;\x03⤟\x06rrsim;\x03⥳\x05cute;\x02ĺ\x05gran;\x03ℒ\x05mbda;\x02λ\x05ngle;\x03⟨\x05rrfs;\x03⤝\x05rrhk;\x03↩\x05rrlp;\x03↫\x05rrpl;\x03⤹\x05rrtl;\x03↢\x05tail;\x03⤙\x04ngd;\x03⦑\x04quo;\x02«\x04rrb;\x03⇤\x04tes;\x06⪭︀\x03ng;\x03⟨\x03quo\x02«\x03rr;\x03←\x03te;\x03⪭\x02p;\x03⪅\x02t;\x03⪫", - // lbrksld;[⦏] lbrkslu;[⦍] lbrace;[{] lbrack;[[] lbarr;[⤌] lbbrk;[❲] lbrke;[⦋]. - "\x06rksld;\x03⦏\x06rkslu;\x03⦍\x05race;\x01{\x05rack;\x01[\x04arr;\x03⤌\x04brk;\x03❲\x04rke;\x03⦋", - // lcaron;[ľ] lcedil;[ļ] lceil;[⌈] lcub;[{] lcy;[л]. - "\x05aron;\x02ľ\x05edil;\x02ļ\x04eil;\x03⌈\x03ub;\x01{\x02y;\x02л", - // ldrushar;[⥋] ldrdhar;[⥧] ldquor;[„] ldquo;[“] ldca;[⤶] ldsh;[↲]. - "\x07rushar;\x03⥋\x06rdhar;\x03⥧\x05quor;\x03„\x04quo;\x03“\x03ca;\x03⤶\x03sh;\x03↲", - // leftrightsquigarrow;[↭] leftrightharpoons;[⇋] leftharpoondown;[↽] leftrightarrows;[⇆] leftleftarrows;[⇇] leftrightarrow;[↔] leftthreetimes;[⋋] leftarrowtail;[↢] leftharpoonup;[↼] lessapprox;[⪅] lesseqqgtr;[⪋] leftarrow;[←] lesseqgtr;[⋚] leqslant;[⩽] lesdotor;[⪃] lesdoto;[⪁] lessdot;[⋖] lessgtr;[≶] lesssim;[≲] lesdot;[⩿] lesges;[⪓] lescc;[⪨] leqq;[≦] lesg;[⋚︀] leg;[⋚] leq;[≤] les;[⩽] le;[≤]. - "\x12ftrightsquigarrow;\x03↭\x10ftrightharpoons;\x03⇋\x0eftharpoondown;\x03↽\x0eftrightarrows;\x03⇆\x0dftleftarrows;\x03⇇\x0dftrightarrow;\x03↔\x0dftthreetimes;\x03⋋\x0cftarrowtail;\x03↢\x0cftharpoonup;\x03↼\x09ssapprox;\x03⪅\x09sseqqgtr;\x03⪋\x08ftarrow;\x03←\x08sseqgtr;\x03⋚\x07qslant;\x03⩽\x07sdotor;\x03⪃\x06sdoto;\x03⪁\x06ssdot;\x03⋖\x06ssgtr;\x03≶\x06sssim;\x03≲\x05sdot;\x03⩿\x05sges;\x03⪓\x04scc;\x03⪨\x03qq;\x03≦\x03sg;\x06⋚︀\x02g;\x03⋚\x02q;\x03≤\x02s;\x03⩽\x01;\x03≤", - // lfisht;[⥼] lfloor;[⌊] lfr;[𝔩]. - "\x05isht;\x03⥼\x05loor;\x03⌊\x02r;\x04𝔩", - // lgE;[⪑] lg;[≶]. - "\x02E;\x03⪑\x01;\x03≶", - // lharul;[⥪] lhard;[↽] lharu;[↼] lhblk;[▄]. - "\x05arul;\x03⥪\x04ard;\x03↽\x04aru;\x03↼\x04blk;\x03▄", - // ljcy;[љ]. - "\x03cy;\x02љ", - // llcorner;[⌞] llhard;[⥫] llarr;[⇇] lltri;[◺] ll;[≪]. - "\x07corner;\x03⌞\x05hard;\x03⥫\x04arr;\x03⇇\x04tri;\x03◺\x01;\x03≪", - // lmoustache;[⎰] lmidot;[ŀ] lmoust;[⎰]. - "\x09oustache;\x03⎰\x05idot;\x02ŀ\x05oust;\x03⎰", - // lnapprox;[⪉] lneqq;[≨] lnsim;[⋦] lnap;[⪉] lneq;[⪇] lnE;[≨] lne;[⪇]. - "\x07approx;\x03⪉\x04eqq;\x03≨\x04sim;\x03⋦\x03ap;\x03⪉\x03eq;\x03⪇\x02E;\x03≨\x02e;\x03⪇", - // longleftrightarrow;[⟷] longrightarrow;[⟶] looparrowright;[↬] longleftarrow;[⟵] looparrowleft;[↫] longmapsto;[⟼] lotimes;[⨴] lozenge;[◊] loplus;[⨭] lowast;[∗] lowbar;[_] loang;[⟬] loarr;[⇽] lobrk;[⟦] lopar;[⦅] lopf;[𝕝] lozf;[⧫] loz;[◊]. - "\x11ngleftrightarrow;\x03⟷\x0dngrightarrow;\x03⟶\x0doparrowright;\x03↬\x0cngleftarrow;\x03⟵\x0coparrowleft;\x03↫\x09ngmapsto;\x03⟼\x06times;\x03⨴\x06zenge;\x03◊\x05plus;\x03⨭\x05wast;\x03∗\x05wbar;\x01_\x04ang;\x03⟬\x04arr;\x03⇽\x04brk;\x03⟦\x04par;\x03⦅\x03pf;\x04𝕝\x03zf;\x03⧫\x02z;\x03◊", - // lparlt;[⦓] lpar;[(]. - "\x05arlt;\x03⦓\x03ar;\x01(", - // lrcorner;[⌟] lrhard;[⥭] lrarr;[⇆] lrhar;[⇋] lrtri;[⊿] lrm;[‎]. - "\x07corner;\x03⌟\x05hard;\x03⥭\x04arr;\x03⇆\x04har;\x03⇋\x04tri;\x03⊿\x02m;\x03‎", - // lsaquo;[‹] lsquor;[‚] lstrok;[ł] lsime;[⪍] lsimg;[⪏] lsquo;[‘] lscr;[𝓁] lsim;[≲] lsqb;[[] lsh;[↰]. - "\x05aquo;\x03‹\x05quor;\x03‚\x05trok;\x02ł\x04ime;\x03⪍\x04img;\x03⪏\x04quo;\x03‘\x03cr;\x04𝓁\x03im;\x03≲\x03qb;\x01[\x02h;\x03↰", - // ltquest;[⩻] lthree;[⋋] ltimes;[⋉] ltlarr;[⥶] ltrPar;[⦖] ltcir;[⩹] ltdot;[⋖] ltrie;[⊴] ltrif;[◂] ltcc;[⪦] ltri;[◃] lt;[<]. - "\x06quest;\x03⩻\x05hree;\x03⋋\x05imes;\x03⋉\x05larr;\x03⥶\x05rPar;\x03⦖\x04cir;\x03⩹\x04dot;\x03⋖\x04rie;\x03⊴\x04rif;\x03◂\x03cc;\x03⪦\x03ri;\x03◃\x01;\x01<", - // lurdshar;[⥊] luruhar;[⥦]. - "\x07rdshar;\x03⥊\x06ruhar;\x03⥦", - // lvertneqq;[≨︀] lvnE;[≨︀]. - "\x08ertneqq;\x06≨︀\x03nE;\x06≨︀", - // mDDot;[∺]. - "\x04Dot;\x03∺", - // mapstodown;[↧] mapstoleft;[↤] mapstoup;[↥] maltese;[✠] mapsto;[↦] marker;[▮] macr;[¯] male;[♂] malt;[✠] macr[¯] map;[↦]. - "\x09pstodown;\x03↧\x09pstoleft;\x03↤\x07pstoup;\x03↥\x06ltese;\x03✠\x05psto;\x03↦\x05rker;\x03▮\x03cr;\x02¯\x03le;\x03♂\x03lt;\x03✠\x02cr\x02¯\x02p;\x03↦", - // mcomma;[⨩] mcy;[м]. - "\x05omma;\x03⨩\x02y;\x02м", - // mdash;[—]. - "\x04ash;\x03—", - // measuredangle;[∡]. - "\x0casuredangle;\x03∡", - // mfr;[𝔪]. - "\x02r;\x04𝔪", - // mho;[℧]. - "\x02o;\x03℧", - // minusdu;[⨪] midast;[*] midcir;[⫰] middot;[·] minusb;[⊟] minusd;[∸] micro;[µ] middot[·] minus;[−] micro[µ] mid;[∣]. - "\x06nusdu;\x03⨪\x05dast;\x01*\x05dcir;\x03⫰\x05ddot;\x02·\x05nusb;\x03⊟\x05nusd;\x03∸\x04cro;\x02µ\x04ddot\x02·\x04nus;\x03−\x03cro\x02µ\x02d;\x03∣", - // mlcp;[⫛] mldr;[…]. - "\x03cp;\x03⫛\x03dr;\x03…", - // mnplus;[∓]. - "\x05plus;\x03∓", - // models;[⊧] mopf;[𝕞]. - "\x05dels;\x03⊧\x03pf;\x04𝕞", - // mp;[∓]. - "\x01;\x03∓", - // mstpos;[∾] mscr;[𝓂]. - "\x05tpos;\x03∾\x03cr;\x04𝓂", - // multimap;[⊸] mumap;[⊸] mu;[μ]. - "\x07ltimap;\x03⊸\x04map;\x03⊸\x01;\x02μ", - // nGtv;[≫̸] nGg;[⋙̸] nGt;[≫⃒]. - "\x03tv;\x05≫̸\x02g;\x05⋙̸\x02t;\x06≫⃒", - // nLeftrightarrow;[⇎] nLeftarrow;[⇍] nLtv;[≪̸] nLl;[⋘̸] nLt;[≪⃒]. - "\x0eeftrightarrow;\x03⇎\x09eftarrow;\x03⇍\x03tv;\x05≪̸\x02l;\x05⋘̸\x02t;\x06≪⃒", - // nRightarrow;[⇏]. - "\x0aightarrow;\x03⇏", - // nVDash;[⊯] nVdash;[⊮]. - "\x05Dash;\x03⊯\x05dash;\x03⊮", - // naturals;[ℕ] napprox;[≉] natural;[♮] nacute;[ń] nabla;[∇] napid;[≋̸] napos;[ʼn] natur;[♮] nang;[∠⃒] napE;[⩰̸] nap;[≉]. - "\x07turals;\x03ℕ\x06pprox;\x03≉\x06tural;\x03♮\x05cute;\x02ń\x04bla;\x03∇\x04pid;\x05≋̸\x04pos;\x02ʼn\x04tur;\x03♮\x03ng;\x06∠⃒\x03pE;\x05⩰̸\x02p;\x03≉", - // nbumpe;[≏̸] nbump;[≎̸] nbsp;[ ] nbsp[ ]. - "\x05umpe;\x05≏̸\x04ump;\x05≎̸\x03sp;\x02 \x02sp\x02 ", - // ncongdot;[⩭̸] ncaron;[ň] ncedil;[ņ] ncong;[≇] ncap;[⩃] ncup;[⩂] ncy;[н]. - "\x07ongdot;\x05⩭̸\x05aron;\x02ň\x05edil;\x02ņ\x04ong;\x03≇\x03ap;\x03⩃\x03up;\x03⩂\x02y;\x02н", - // ndash;[–]. - "\x04ash;\x03–", - // nearrow;[↗] nexists;[∄] nearhk;[⤤] nequiv;[≢] nesear;[⤨] nexist;[∄] neArr;[⇗] nearr;[↗] nedot;[≐̸] nesim;[≂̸] ne;[≠]. - "\x06arrow;\x03↗\x06xists;\x03∄\x05arhk;\x03⤤\x05quiv;\x03≢\x05sear;\x03⤨\x05xist;\x03∄\x04Arr;\x03⇗\x04arr;\x03↗\x04dot;\x05≐̸\x04sim;\x05≂̸\x01;\x03≠", - // nfr;[𝔫]. - "\x02r;\x04𝔫", - // ngeqslant;[⩾̸] ngeqq;[≧̸] ngsim;[≵] ngeq;[≱] nges;[⩾̸] ngtr;[≯] ngE;[≧̸] nge;[≱] ngt;[≯]. - "\x08eqslant;\x05⩾̸\x04eqq;\x05≧̸\x04sim;\x03≵\x03eq;\x03≱\x03es;\x05⩾̸\x03tr;\x03≯\x02E;\x05≧̸\x02e;\x03≱\x02t;\x03≯", - // nhArr;[⇎] nharr;[↮] nhpar;[⫲]. - "\x04Arr;\x03⇎\x04arr;\x03↮\x04par;\x03⫲", - // nisd;[⋺] nis;[⋼] niv;[∋] ni;[∋]. - "\x03sd;\x03⋺\x02s;\x03⋼\x02v;\x03∋\x01;\x03∋", - // njcy;[њ]. - "\x03cy;\x02њ", - // nleftrightarrow;[↮] nleftarrow;[↚] nleqslant;[⩽̸] nltrie;[⋬] nlArr;[⇍] nlarr;[↚] nleqq;[≦̸] nless;[≮] nlsim;[≴] nltri;[⋪] nldr;[‥] nleq;[≰] nles;[⩽̸] nlE;[≦̸] nle;[≰] nlt;[≮]. - "\x0eeftrightarrow;\x03↮\x09eftarrow;\x03↚\x08eqslant;\x05⩽̸\x05trie;\x03⋬\x04Arr;\x03⇍\x04arr;\x03↚\x04eqq;\x05≦̸\x04ess;\x03≮\x04sim;\x03≴\x04tri;\x03⋪\x03dr;\x03‥\x03eq;\x03≰\x03es;\x05⩽̸\x02E;\x05≦̸\x02e;\x03≰\x02t;\x03≮", - // nmid;[∤]. - "\x03id;\x03∤", - // notindot;[⋵̸] notinva;[∉] notinvb;[⋷] notinvc;[⋶] notniva;[∌] notnivb;[⋾] notnivc;[⋽] notinE;[⋹̸] notin;[∉] notni;[∌] nopf;[𝕟] not;[¬] not[¬]. - "\x07tindot;\x05⋵̸\x06tinva;\x03∉\x06tinvb;\x03⋷\x06tinvc;\x03⋶\x06tniva;\x03∌\x06tnivb;\x03⋾\x06tnivc;\x03⋽\x05tinE;\x05⋹̸\x04tin;\x03∉\x04tni;\x03∌\x03pf;\x04𝕟\x02t;\x02¬\x01t\x02¬", - // nparallel;[∦] npolint;[⨔] npreceq;[⪯̸] nparsl;[⫽⃥] nprcue;[⋠] npart;[∂̸] nprec;[⊀] npar;[∦] npre;[⪯̸] npr;[⊀]. - "\x08arallel;\x03∦\x06olint;\x03⨔\x06receq;\x05⪯̸\x05arsl;\x06⫽⃥\x05rcue;\x03⋠\x04art;\x05∂̸\x04rec;\x03⊀\x03ar;\x03∦\x03re;\x05⪯̸\x02r;\x03⊀", - // nrightarrow;[↛] nrarrc;[⤳̸] nrarrw;[↝̸] nrtrie;[⋭] nrArr;[⇏] nrarr;[↛] nrtri;[⋫]. - "\x0aightarrow;\x03↛\x05arrc;\x05⤳̸\x05arrw;\x05↝̸\x05trie;\x03⋭\x04Arr;\x03⇏\x04arr;\x03↛\x04tri;\x03⋫", - // nshortparallel;[∦] nsubseteqq;[⫅̸] nsupseteqq;[⫆̸] nshortmid;[∤] nsubseteq;[⊈] nsupseteq;[⊉] nsqsube;[⋢] nsqsupe;[⋣] nsubset;[⊂⃒] nsucceq;[⪰̸] nsupset;[⊃⃒] nsccue;[⋡] nsimeq;[≄] nsime;[≄] nsmid;[∤] nspar;[∦] nsubE;[⫅̸] nsube;[⊈] nsucc;[⊁] nsupE;[⫆̸] nsupe;[⊉] nsce;[⪰̸] nscr;[𝓃] nsim;[≁] nsub;[⊄] nsup;[⊅] nsc;[⊁]. - "\x0dhortparallel;\x03∦\x09ubseteqq;\x05⫅̸\x09upseteqq;\x05⫆̸\x08hortmid;\x03∤\x08ubseteq;\x03⊈\x08upseteq;\x03⊉\x06qsube;\x03⋢\x06qsupe;\x03⋣\x06ubset;\x06⊂⃒\x06ucceq;\x05⪰̸\x06upset;\x06⊃⃒\x05ccue;\x03⋡\x05imeq;\x03≄\x04ime;\x03≄\x04mid;\x03∤\x04par;\x03∦\x04ubE;\x05⫅̸\x04ube;\x03⊈\x04ucc;\x03⊁\x04upE;\x05⫆̸\x04upe;\x03⊉\x03ce;\x05⪰̸\x03cr;\x04𝓃\x03im;\x03≁\x03ub;\x03⊄\x03up;\x03⊅\x02c;\x03⊁", - // ntrianglerighteq;[⋭] ntrianglelefteq;[⋬] ntriangleright;[⋫] ntriangleleft;[⋪] ntilde;[ñ] ntilde[ñ] ntgl;[≹] ntlg;[≸]. - "\x0frianglerighteq;\x03⋭\x0erianglelefteq;\x03⋬\x0driangleright;\x03⋫\x0criangleleft;\x03⋪\x05ilde;\x02ñ\x04ilde\x02ñ\x03gl;\x03≹\x03lg;\x03≸", - // numero;[№] numsp;[ ] num;[#] nu;[ν]. - "\x05mero;\x03№\x04msp;\x03 \x02m;\x01#\x01;\x02ν", - // nvinfin;[⧞] nvltrie;[⊴⃒] nvrtrie;[⊵⃒] nvDash;[⊭] nvHarr;[⤄] nvdash;[⊬] nvlArr;[⤂] nvrArr;[⤃] nvsim;[∼⃒] nvap;[≍⃒] nvge;[≥⃒] nvgt;[>⃒] nvle;[≤⃒] nvlt;[<⃒]. - "\x06infin;\x03⧞\x06ltrie;\x06⊴⃒\x06rtrie;\x06⊵⃒\x05Dash;\x03⊭\x05Harr;\x03⤄\x05dash;\x03⊬\x05lArr;\x03⤂\x05rArr;\x03⤃\x04sim;\x06∼⃒\x03ap;\x06≍⃒\x03ge;\x06≥⃒\x03gt;\x04>⃒\x03le;\x06≤⃒\x03lt;\x04<⃒", - // nwarrow;[↖] nwarhk;[⤣] nwnear;[⤧] nwArr;[⇖] nwarr;[↖]. - "\x06arrow;\x03↖\x05arhk;\x03⤣\x05near;\x03⤧\x04Arr;\x03⇖\x04arr;\x03↖", - // oS;[Ⓢ]. - "\x01;\x03Ⓢ", - // oacute;[ó] oacute[ó] oast;[⊛]. - "\x05cute;\x02ó\x04cute\x02ó\x03st;\x03⊛", - // ocirc;[ô] ocir;[⊚] ocirc[ô] ocy;[о]. - "\x04irc;\x02ô\x03ir;\x03⊚\x03irc\x02ô\x02y;\x02о", - // odblac;[ő] odsold;[⦼] odash;[⊝] odiv;[⨸] odot;[⊙]. - "\x05blac;\x02ő\x05sold;\x03⦼\x04ash;\x03⊝\x03iv;\x03⨸\x03ot;\x03⊙", - // oelig;[œ]. - "\x04lig;\x02œ", - // ofcir;[⦿] ofr;[𝔬]. - "\x04cir;\x03⦿\x02r;\x04𝔬", - // ograve;[ò] ograve[ò] ogon;[˛] ogt;[⧁]. - "\x05rave;\x02ò\x04rave\x02ò\x03on;\x02˛\x02t;\x03⧁", - // ohbar;[⦵] ohm;[Ω]. - "\x04bar;\x03⦵\x02m;\x02Ω", - // oint;[∮]. - "\x03nt;\x03∮", - // olcross;[⦻] olarr;[↺] olcir;[⦾] oline;[‾] olt;[⧀]. - "\x06cross;\x03⦻\x04arr;\x03↺\x04cir;\x03⦾\x04ine;\x03‾\x02t;\x03⧀", - // omicron;[ο] ominus;[⊖] omacr;[ō] omega;[ω] omid;[⦶]. - "\x06icron;\x02ο\x05inus;\x03⊖\x04acr;\x02ō\x04ega;\x02ω\x03id;\x03⦶", - // oopf;[𝕠]. - "\x03pf;\x04𝕠", - // operp;[⦹] oplus;[⊕] opar;[⦷]. - "\x04erp;\x03⦹\x04lus;\x03⊕\x03ar;\x03⦷", - // orderof;[ℴ] orslope;[⩗] origof;[⊶] orarr;[↻] order;[ℴ] ordf;[ª] ordm;[º] oror;[⩖] ord;[⩝] ordf[ª] ordm[º] orv;[⩛] or;[∨]. - "\x06derof;\x03ℴ\x06slope;\x03⩗\x05igof;\x03⊶\x04arr;\x03↻\x04der;\x03ℴ\x03df;\x02ª\x03dm;\x02º\x03or;\x03⩖\x02d;\x03⩝\x02df\x02ª\x02dm\x02º\x02v;\x03⩛\x01;\x03∨", - // oslash;[ø] oslash[ø] oscr;[ℴ] osol;[⊘]. - "\x05lash;\x02ø\x04lash\x02ø\x03cr;\x03ℴ\x03ol;\x03⊘", - // otimesas;[⨶] otilde;[õ] otimes;[⊗] otilde[õ]. - "\x07imesas;\x03⨶\x05ilde;\x02õ\x05imes;\x03⊗\x04ilde\x02õ", - // ouml;[ö] ouml[ö]. - "\x03ml;\x02ö\x02ml\x02ö", - // ovbar;[⌽]. - "\x04bar;\x03⌽", - // parallel;[∥] parsim;[⫳] parsl;[⫽] para;[¶] part;[∂] par;[∥] para[¶]. - "\x07rallel;\x03∥\x05rsim;\x03⫳\x04rsl;\x03⫽\x03ra;\x02¶\x03rt;\x03∂\x02r;\x03∥\x02ra\x02¶", - // pcy;[п]. - "\x02y;\x02п", - // pertenk;[‱] percnt;[%] period;[.] permil;[‰] perp;[⊥]. - "\x06rtenk;\x03‱\x05rcnt;\x01%\x05riod;\x01.\x05rmil;\x03‰\x03rp;\x03⊥", - // pfr;[𝔭]. - "\x02r;\x04𝔭", - // phmmat;[ℳ] phone;[☎] phiv;[ϕ] phi;[φ]. - "\x05mmat;\x03ℳ\x04one;\x03☎\x03iv;\x02ϕ\x02i;\x02φ", - // pitchfork;[⋔] piv;[ϖ] pi;[π]. - "\x08tchfork;\x03⋔\x02v;\x02ϖ\x01;\x02π", - // plusacir;[⨣] planckh;[ℎ] pluscir;[⨢] plussim;[⨦] plustwo;[⨧] planck;[ℏ] plankv;[ℏ] plusdo;[∔] plusdu;[⨥] plusmn;[±] plusb;[⊞] pluse;[⩲] plusmn[±] plus;[+]. - "\x07usacir;\x03⨣\x06anckh;\x03ℎ\x06uscir;\x03⨢\x06ussim;\x03⨦\x06ustwo;\x03⨧\x05anck;\x03ℏ\x05ankv;\x03ℏ\x05usdo;\x03∔\x05usdu;\x03⨥\x05usmn;\x02±\x04usb;\x03⊞\x04use;\x03⩲\x04usmn\x02±\x03us;\x01+", - // pm;[±]. - "\x01;\x02±", - // pointint;[⨕] pound;[£] popf;[𝕡] pound[£]. - "\x07intint;\x03⨕\x04und;\x02£\x03pf;\x04𝕡\x03und\x02£", - // preccurlyeq;[≼] precnapprox;[⪹] precapprox;[⪷] precneqq;[⪵] precnsim;[⋨] profalar;[⌮] profline;[⌒] profsurf;[⌓] precsim;[≾] preceq;[⪯] primes;[ℙ] prnsim;[⋨] propto;[∝] prurel;[⊰] prcue;[≼] prime;[′] prnap;[⪹] prsim;[≾] prap;[⪷] prec;[≺] prnE;[⪵] prod;[∏] prop;[∝] prE;[⪳] pre;[⪯] pr;[≺]. - "\x0aeccurlyeq;\x03≼\x0aecnapprox;\x03⪹\x09ecapprox;\x03⪷\x07ecneqq;\x03⪵\x07ecnsim;\x03⋨\x07ofalar;\x03⌮\x07ofline;\x03⌒\x07ofsurf;\x03⌓\x06ecsim;\x03≾\x05eceq;\x03⪯\x05imes;\x03ℙ\x05nsim;\x03⋨\x05opto;\x03∝\x05urel;\x03⊰\x04cue;\x03≼\x04ime;\x03′\x04nap;\x03⪹\x04sim;\x03≾\x03ap;\x03⪷\x03ec;\x03≺\x03nE;\x03⪵\x03od;\x03∏\x03op;\x03∝\x02E;\x03⪳\x02e;\x03⪯\x01;\x03≺", - // pscr;[𝓅] psi;[ψ]. - "\x03cr;\x04𝓅\x02i;\x02ψ", - // puncsp;[ ]. - "\x05ncsp;\x03 ", - // qfr;[𝔮]. - "\x02r;\x04𝔮", - // qint;[⨌]. - "\x03nt;\x03⨌", - // qopf;[𝕢]. - "\x03pf;\x04𝕢", - // qprime;[⁗]. - "\x05rime;\x03⁗", - // qscr;[𝓆]. - "\x03cr;\x04𝓆", - // quaternions;[ℍ] quatint;[⨖] questeq;[≟] quest;[?] quot;[\"] quot[\"]. - "\x0aaternions;\x03ℍ\x06atint;\x03⨖\x06esteq;\x03≟\x04est;\x01?\x03ot;\x01\"\x02ot\x01\"", - // rAtail;[⤜] rAarr;[⇛] rArr;[⇒]. - "\x05tail;\x03⤜\x04arr;\x03⇛\x03rr;\x03⇒", - // rBarr;[⤏]. - "\x04arr;\x03⤏", - // rHar;[⥤]. - "\x03ar;\x03⥤", - // rationals;[ℚ] raemptyv;[⦳] rarrbfs;[⤠] rarrsim;[⥴] racute;[ŕ] rangle;[⟩] rarrap;[⥵] rarrfs;[⤞] rarrhk;[↪] rarrlp;[↬] rarrpl;[⥅] rarrtl;[↣] ratail;[⤚] radic;[√] rangd;[⦒] range;[⦥] raquo;[»] rarrb;[⇥] rarrc;[⤳] rarrw;[↝] ratio;[∶] race;[∽̱] rang;[⟩] raquo[»] rarr;[→]. - "\x08tionals;\x03ℚ\x07emptyv;\x03⦳\x06rrbfs;\x03⤠\x06rrsim;\x03⥴\x05cute;\x02ŕ\x05ngle;\x03⟩\x05rrap;\x03⥵\x05rrfs;\x03⤞\x05rrhk;\x03↪\x05rrlp;\x03↬\x05rrpl;\x03⥅\x05rrtl;\x03↣\x05tail;\x03⤚\x04dic;\x03√\x04ngd;\x03⦒\x04nge;\x03⦥\x04quo;\x02»\x04rrb;\x03⇥\x04rrc;\x03⤳\x04rrw;\x03↝\x04tio;\x03∶\x03ce;\x05∽̱\x03ng;\x03⟩\x03quo\x02»\x03rr;\x03→", - // rbrksld;[⦎] rbrkslu;[⦐] rbrace;[}] rbrack;[]] rbarr;[⤍] rbbrk;[❳] rbrke;[⦌]. - "\x06rksld;\x03⦎\x06rkslu;\x03⦐\x05race;\x01}\x05rack;\x01]\x04arr;\x03⤍\x04brk;\x03❳\x04rke;\x03⦌", - // rcaron;[ř] rcedil;[ŗ] rceil;[⌉] rcub;[}] rcy;[р]. - "\x05aron;\x02ř\x05edil;\x02ŗ\x04eil;\x03⌉\x03ub;\x01}\x02y;\x02р", - // rdldhar;[⥩] rdquor;[”] rdquo;[”] rdca;[⤷] rdsh;[↳]. - "\x06ldhar;\x03⥩\x05quor;\x03”\x04quo;\x03”\x03ca;\x03⤷\x03sh;\x03↳", - // realpart;[ℜ] realine;[ℛ] reals;[ℝ] real;[ℜ] rect;[▭] reg;[®] reg[®]. - "\x07alpart;\x03ℜ\x06aline;\x03ℛ\x04als;\x03ℝ\x03al;\x03ℜ\x03ct;\x03▭\x02g;\x02®\x01g\x02®", - // rfisht;[⥽] rfloor;[⌋] rfr;[𝔯]. - "\x05isht;\x03⥽\x05loor;\x03⌋\x02r;\x04𝔯", - // rharul;[⥬] rhard;[⇁] rharu;[⇀] rhov;[ϱ] rho;[ρ]. - "\x05arul;\x03⥬\x04ard;\x03⇁\x04aru;\x03⇀\x03ov;\x02ϱ\x02o;\x02ρ", - // rightleftharpoons;[⇌] rightharpoondown;[⇁] rightrightarrows;[⇉] rightleftarrows;[⇄] rightsquigarrow;[↝] rightthreetimes;[⋌] rightarrowtail;[↣] rightharpoonup;[⇀] risingdotseq;[≓] rightarrow;[→] ring;[˚]. - "\x10ghtleftharpoons;\x03⇌\x0fghtharpoondown;\x03⇁\x0fghtrightarrows;\x03⇉\x0eghtleftarrows;\x03⇄\x0eghtsquigarrow;\x03↝\x0eghtthreetimes;\x03⋌\x0dghtarrowtail;\x03↣\x0dghtharpoonup;\x03⇀\x0bsingdotseq;\x03≓\x09ghtarrow;\x03→\x03ng;\x02˚", - // rlarr;[⇄] rlhar;[⇌] rlm;[‏]. - "\x04arr;\x03⇄\x04har;\x03⇌\x02m;\x03‏", - // rmoustache;[⎱] rmoust;[⎱]. - "\x09oustache;\x03⎱\x05oust;\x03⎱", - // rnmid;[⫮]. - "\x04mid;\x03⫮", - // rotimes;[⨵] roplus;[⨮] roang;[⟭] roarr;[⇾] robrk;[⟧] ropar;[⦆] ropf;[𝕣]. - "\x06times;\x03⨵\x05plus;\x03⨮\x04ang;\x03⟭\x04arr;\x03⇾\x04brk;\x03⟧\x04par;\x03⦆\x03pf;\x04𝕣", - // rppolint;[⨒] rpargt;[⦔] rpar;[)]. - "\x07polint;\x03⨒\x05argt;\x03⦔\x03ar;\x01)", - // rrarr;[⇉]. - "\x04arr;\x03⇉", - // rsaquo;[›] rsquor;[’] rsquo;[’] rscr;[𝓇] rsqb;[]] rsh;[↱]. - "\x05aquo;\x03›\x05quor;\x03’\x04quo;\x03’\x03cr;\x04𝓇\x03qb;\x01]\x02h;\x03↱", - // rtriltri;[⧎] rthree;[⋌] rtimes;[⋊] rtrie;[⊵] rtrif;[▸] rtri;[▹]. - "\x07riltri;\x03⧎\x05hree;\x03⋌\x05imes;\x03⋊\x04rie;\x03⊵\x04rif;\x03▸\x03ri;\x03▹", - // ruluhar;[⥨]. - "\x06luhar;\x03⥨", - // rx;[℞]. - "\x01;\x03℞", - // sacute;[ś]. - "\x05cute;\x02ś", - // sbquo;[‚]. - "\x04quo;\x03‚", - // scpolint;[⨓] scaron;[š] scedil;[ş] scnsim;[⋩] sccue;[≽] scirc;[ŝ] scnap;[⪺] scsim;[≿] scap;[⪸] scnE;[⪶] scE;[⪴] sce;[⪰] scy;[с] sc;[≻]. - "\x07polint;\x03⨓\x05aron;\x02š\x05edil;\x02ş\x05nsim;\x03⋩\x04cue;\x03≽\x04irc;\x02ŝ\x04nap;\x03⪺\x04sim;\x03≿\x03ap;\x03⪸\x03nE;\x03⪶\x02E;\x03⪴\x02e;\x03⪰\x02y;\x02с\x01;\x03≻", - // sdotb;[⊡] sdote;[⩦] sdot;[⋅]. - "\x04otb;\x03⊡\x04ote;\x03⩦\x03ot;\x03⋅", - // setminus;[∖] searrow;[↘] searhk;[⤥] seswar;[⤩] seArr;[⇘] searr;[↘] setmn;[∖] sect;[§] semi;[;] sext;[✶] sect[§]. - "\x07tminus;\x03∖\x06arrow;\x03↘\x05arhk;\x03⤥\x05swar;\x03⤩\x04Arr;\x03⇘\x04arr;\x03↘\x04tmn;\x03∖\x03ct;\x02§\x03mi;\x01;\x03xt;\x03✶\x02ct\x02§", - // sfrown;[⌢] sfr;[𝔰]. - "\x05rown;\x03⌢\x02r;\x04𝔰", - // shortparallel;[∥] shortmid;[∣] shchcy;[щ] sharp;[♯] shcy;[ш] shy;[­] shy[­]. - "\x0cortparallel;\x03∥\x07ortmid;\x03∣\x05chcy;\x02щ\x04arp;\x03♯\x03cy;\x02ш\x02y;\x02­\x01y\x02­", - // simplus;[⨤] simrarr;[⥲] sigmaf;[ς] sigmav;[ς] simdot;[⩪] sigma;[σ] simeq;[≃] simgE;[⪠] simlE;[⪟] simne;[≆] sime;[≃] simg;[⪞] siml;[⪝] sim;[∼]. - "\x06mplus;\x03⨤\x06mrarr;\x03⥲\x05gmaf;\x02ς\x05gmav;\x02ς\x05mdot;\x03⩪\x04gma;\x02σ\x04meq;\x03≃\x04mgE;\x03⪠\x04mlE;\x03⪟\x04mne;\x03≆\x03me;\x03≃\x03mg;\x03⪞\x03ml;\x03⪝\x02m;\x03∼", - // slarr;[←]. - "\x04arr;\x03←", - // smallsetminus;[∖] smeparsl;[⧤] smashp;[⨳] smile;[⌣] smtes;[⪬︀] smid;[∣] smte;[⪬] smt;[⪪]. - "\x0callsetminus;\x03∖\x07eparsl;\x03⧤\x05ashp;\x03⨳\x04ile;\x03⌣\x04tes;\x06⪬︀\x03id;\x03∣\x03te;\x03⪬\x02t;\x03⪪", - // softcy;[ь] solbar;[⌿] solb;[⧄] sopf;[𝕤] sol;[/]. - "\x05ftcy;\x02ь\x05lbar;\x03⌿\x03lb;\x03⧄\x03pf;\x04𝕤\x02l;\x01/", - // spadesuit;[♠] spades;[♠] spar;[∥]. - "\x08adesuit;\x03♠\x05ades;\x03♠\x03ar;\x03∥", - // sqsubseteq;[⊑] sqsupseteq;[⊒] sqsubset;[⊏] sqsupset;[⊐] sqcaps;[⊓︀] sqcups;[⊔︀] sqsube;[⊑] sqsupe;[⊒] square;[□] squarf;[▪] sqcap;[⊓] sqcup;[⊔] sqsub;[⊏] sqsup;[⊐] squf;[▪] squ;[□]. - "\x09subseteq;\x03⊑\x09supseteq;\x03⊒\x07subset;\x03⊏\x07supset;\x03⊐\x05caps;\x06⊓︀\x05cups;\x06⊔︀\x05sube;\x03⊑\x05supe;\x03⊒\x05uare;\x03□\x05uarf;\x03▪\x04cap;\x03⊓\x04cup;\x03⊔\x04sub;\x03⊏\x04sup;\x03⊐\x03uf;\x03▪\x02u;\x03□", - // srarr;[→]. - "\x04arr;\x03→", - // ssetmn;[∖] ssmile;[⌣] sstarf;[⋆] sscr;[𝓈]. - "\x05etmn;\x03∖\x05mile;\x03⌣\x05tarf;\x03⋆\x03cr;\x04𝓈", - // straightepsilon;[ϵ] straightphi;[ϕ] starf;[★] strns;[¯] star;[☆]. - "\x0eraightepsilon;\x02ϵ\x0araightphi;\x02ϕ\x04arf;\x03★\x04rns;\x02¯\x03ar;\x03☆", - // succcurlyeq;[≽] succnapprox;[⪺] subsetneqq;[⫋] succapprox;[⪸] supsetneqq;[⫌] subseteqq;[⫅] subsetneq;[⊊] supseteqq;[⫆] supsetneq;[⊋] subseteq;[⊆] succneqq;[⪶] succnsim;[⋩] supseteq;[⊇] subedot;[⫃] submult;[⫁] subplus;[⪿] subrarr;[⥹] succsim;[≿] supdsub;[⫘] supedot;[⫄] suphsol;[⟉] suphsub;[⫗] suplarr;[⥻] supmult;[⫂] supplus;[⫀] subdot;[⪽] subset;[⊂] subsim;[⫇] subsub;[⫕] subsup;[⫓] succeq;[⪰] supdot;[⪾] supset;[⊃] supsim;[⫈] supsub;[⫔] supsup;[⫖] subnE;[⫋] subne;[⊊] supnE;[⫌] supne;[⊋] subE;[⫅] sube;[⊆] succ;[≻] sung;[♪] sup1;[¹] sup2;[²] sup3;[³] supE;[⫆] supe;[⊇] sub;[⊂] sum;[∑] sup1[¹] sup2[²] sup3[³] sup;[⊃]. - "\x0acccurlyeq;\x03≽\x0accnapprox;\x03⪺\x09bsetneqq;\x03⫋\x09ccapprox;\x03⪸\x09psetneqq;\x03⫌\x08bseteqq;\x03⫅\x08bsetneq;\x03⊊\x08pseteqq;\x03⫆\x08psetneq;\x03⊋\x07bseteq;\x03⊆\x07ccneqq;\x03⪶\x07ccnsim;\x03⋩\x07pseteq;\x03⊇\x06bedot;\x03⫃\x06bmult;\x03⫁\x06bplus;\x03⪿\x06brarr;\x03⥹\x06ccsim;\x03≿\x06pdsub;\x03⫘\x06pedot;\x03⫄\x06phsol;\x03⟉\x06phsub;\x03⫗\x06plarr;\x03⥻\x06pmult;\x03⫂\x06pplus;\x03⫀\x05bdot;\x03⪽\x05bset;\x03⊂\x05bsim;\x03⫇\x05bsub;\x03⫕\x05bsup;\x03⫓\x05cceq;\x03⪰\x05pdot;\x03⪾\x05pset;\x03⊃\x05psim;\x03⫈\x05psub;\x03⫔\x05psup;\x03⫖\x04bnE;\x03⫋\x04bne;\x03⊊\x04pnE;\x03⫌\x04pne;\x03⊋\x03bE;\x03⫅\x03be;\x03⊆\x03cc;\x03≻\x03ng;\x03♪\x03p1;\x02¹\x03p2;\x02²\x03p3;\x02³\x03pE;\x03⫆\x03pe;\x03⊇\x02b;\x03⊂\x02m;\x03∑\x02p1\x02¹\x02p2\x02²\x02p3\x02³\x02p;\x03⊃", - // swarrow;[↙] swarhk;[⤦] swnwar;[⤪] swArr;[⇙] swarr;[↙]. - "\x06arrow;\x03↙\x05arhk;\x03⤦\x05nwar;\x03⤪\x04Arr;\x03⇙\x04arr;\x03↙", - // szlig;[ß] szlig[ß]. - "\x04lig;\x02ß\x03lig\x02ß", - // target;[⌖] tau;[τ]. - "\x05rget;\x03⌖\x02u;\x02τ", - // tbrk;[⎴]. - "\x03rk;\x03⎴", - // tcaron;[ť] tcedil;[ţ] tcy;[т]. - "\x05aron;\x02ť\x05edil;\x02ţ\x02y;\x02т", - // tdot;[⃛]. - "\x03ot;\x03⃛", - // telrec;[⌕]. - "\x05lrec;\x03⌕", - // tfr;[𝔱]. - "\x02r;\x04𝔱", - // thickapprox;[≈] therefore;[∴] thetasym;[ϑ] thicksim;[∼] there4;[∴] thetav;[ϑ] thinsp;[ ] thksim;[∼] theta;[θ] thkap;[≈] thorn;[þ] thorn[þ]. - "\x0aickapprox;\x03≈\x08erefore;\x03∴\x07etasym;\x02ϑ\x07icksim;\x03∼\x05ere4;\x03∴\x05etav;\x02ϑ\x05insp;\x03 \x05ksim;\x03∼\x04eta;\x02θ\x04kap;\x03≈\x04orn;\x02þ\x03orn\x02þ", - // timesbar;[⨱] timesb;[⊠] timesd;[⨰] tilde;[˜] times;[×] times[×] tint;[∭]. - "\x07mesbar;\x03⨱\x05mesb;\x03⊠\x05mesd;\x03⨰\x04lde;\x02˜\x04mes;\x02×\x03mes\x02×\x03nt;\x03∭", - // topfork;[⫚] topbot;[⌶] topcir;[⫱] toea;[⤨] topf;[𝕥] tosa;[⤩] top;[⊤]. - "\x06pfork;\x03⫚\x05pbot;\x03⌶\x05pcir;\x03⫱\x03ea;\x03⤨\x03pf;\x04𝕥\x03sa;\x03⤩\x02p;\x03⊤", - // tprime;[‴]. - "\x05rime;\x03‴", - // trianglerighteq;[⊵] trianglelefteq;[⊴] triangleright;[▹] triangledown;[▿] triangleleft;[◃] triangleq;[≜] triangle;[▵] triminus;[⨺] trpezium;[⏢] triplus;[⨹] tritime;[⨻] tridot;[◬] trade;[™] trisb;[⧍] trie;[≜]. - "\x0eianglerighteq;\x03⊵\x0dianglelefteq;\x03⊴\x0ciangleright;\x03▹\x0biangledown;\x03▿\x0biangleleft;\x03◃\x08iangleq;\x03≜\x07iangle;\x03▵\x07iminus;\x03⨺\x07pezium;\x03⏢\x06iplus;\x03⨹\x06itime;\x03⨻\x05idot;\x03◬\x04ade;\x03™\x04isb;\x03⧍\x03ie;\x03≜", - // tstrok;[ŧ] tshcy;[ћ] tscr;[𝓉] tscy;[ц]. - "\x05trok;\x02ŧ\x04hcy;\x02ћ\x03cr;\x04𝓉\x03cy;\x02ц", - // twoheadrightarrow;[↠] twoheadleftarrow;[↞] twixt;[≬]. - "\x10oheadrightarrow;\x03↠\x0foheadleftarrow;\x03↞\x04ixt;\x03≬", - // uArr;[⇑]. - "\x03rr;\x03⇑", - // uHar;[⥣]. - "\x03ar;\x03⥣", - // uacute;[ú] uacute[ú] uarr;[↑]. - "\x05cute;\x02ú\x04cute\x02ú\x03rr;\x03↑", - // ubreve;[ŭ] ubrcy;[ў]. - "\x05reve;\x02ŭ\x04rcy;\x02ў", - // ucirc;[û] ucirc[û] ucy;[у]. - "\x04irc;\x02û\x03irc\x02û\x02y;\x02у", - // udblac;[ű] udarr;[⇅] udhar;[⥮]. - "\x05blac;\x02ű\x04arr;\x03⇅\x04har;\x03⥮", - // ufisht;[⥾] ufr;[𝔲]. - "\x05isht;\x03⥾\x02r;\x04𝔲", - // ugrave;[ù] ugrave[ù]. - "\x05rave;\x02ù\x04rave\x02ù", - // uharl;[↿] uharr;[↾] uhblk;[▀]. - "\x04arl;\x03↿\x04arr;\x03↾\x04blk;\x03▀", - // ulcorner;[⌜] ulcorn;[⌜] ulcrop;[⌏] ultri;[◸]. - "\x07corner;\x03⌜\x05corn;\x03⌜\x05crop;\x03⌏\x04tri;\x03◸", - // umacr;[ū] uml;[¨] uml[¨]. - "\x04acr;\x02ū\x02l;\x02¨\x01l\x02¨", - // uogon;[ų] uopf;[𝕦]. - "\x04gon;\x02ų\x03pf;\x04𝕦", - // upharpoonright;[↾] upharpoonleft;[↿] updownarrow;[↕] upuparrows;[⇈] uparrow;[↑] upsilon;[υ] uplus;[⊎] upsih;[ϒ] upsi;[υ]. - "\x0dharpoonright;\x03↾\x0charpoonleft;\x03↿\x0adownarrow;\x03↕\x09uparrows;\x03⇈\x06arrow;\x03↑\x06silon;\x02υ\x04lus;\x03⊎\x04sih;\x02ϒ\x03si;\x02υ", - // urcorner;[⌝] urcorn;[⌝] urcrop;[⌎] uring;[ů] urtri;[◹]. - "\x07corner;\x03⌝\x05corn;\x03⌝\x05crop;\x03⌎\x04ing;\x02ů\x04tri;\x03◹", - // uscr;[𝓊]. - "\x03cr;\x04𝓊", - // utilde;[ũ] utdot;[⋰] utrif;[▴] utri;[▵]. - "\x05ilde;\x02ũ\x04dot;\x03⋰\x04rif;\x03▴\x03ri;\x03▵", - // uuarr;[⇈] uuml;[ü] uuml[ü]. - "\x04arr;\x03⇈\x03ml;\x02ü\x02ml\x02ü", - // uwangle;[⦧]. - "\x06angle;\x03⦧", - // vArr;[⇕]. - "\x03rr;\x03⇕", - // vBarv;[⫩] vBar;[⫨]. - "\x04arv;\x03⫩\x03ar;\x03⫨", - // vDash;[⊨]. - "\x04ash;\x03⊨", - // vartriangleright;[⊳] vartriangleleft;[⊲] varsubsetneqq;[⫋︀] varsupsetneqq;[⫌︀] varsubsetneq;[⊊︀] varsupsetneq;[⊋︀] varepsilon;[ϵ] varnothing;[∅] varpropto;[∝] varkappa;[ϰ] varsigma;[ς] vartheta;[ϑ] vangrt;[⦜] varphi;[ϕ] varrho;[ϱ] varpi;[ϖ] varr;[↕]. - "\x0frtriangleright;\x03⊳\x0ertriangleleft;\x03⊲\x0crsubsetneqq;\x06⫋︀\x0crsupsetneqq;\x06⫌︀\x0brsubsetneq;\x06⊊︀\x0brsupsetneq;\x06⊋︀\x09repsilon;\x02ϵ\x09rnothing;\x03∅\x08rpropto;\x03∝\x07rkappa;\x02ϰ\x07rsigma;\x02ς\x07rtheta;\x02ϑ\x05ngrt;\x03⦜\x05rphi;\x02ϕ\x05rrho;\x02ϱ\x04rpi;\x02ϖ\x03rr;\x03↕", - // vcy;[в]. - "\x02y;\x02в", - // vdash;[⊢]. - "\x04ash;\x03⊢", - // veebar;[⊻] vellip;[⋮] verbar;[|] veeeq;[≚] vert;[|] vee;[∨]. - "\x05ebar;\x03⊻\x05llip;\x03⋮\x05rbar;\x01|\x04eeq;\x03≚\x03rt;\x01|\x02e;\x03∨", - // vfr;[𝔳]. - "\x02r;\x04𝔳", - // vltri;[⊲]. - "\x04tri;\x03⊲", - // vnsub;[⊂⃒] vnsup;[⊃⃒]. - "\x04sub;\x06⊂⃒\x04sup;\x06⊃⃒", - // vopf;[𝕧]. - "\x03pf;\x04𝕧", - // vprop;[∝]. - "\x04rop;\x03∝", - // vrtri;[⊳]. - "\x04tri;\x03⊳", - // vsubnE;[⫋︀] vsubne;[⊊︀] vsupnE;[⫌︀] vsupne;[⊋︀] vscr;[𝓋]. - "\x05ubnE;\x06⫋︀\x05ubne;\x06⊊︀\x05upnE;\x06⫌︀\x05upne;\x06⊋︀\x03cr;\x04𝓋", - // vzigzag;[⦚]. - "\x06igzag;\x03⦚", - // wcirc;[ŵ]. - "\x04irc;\x02ŵ", - // wedbar;[⩟] wedgeq;[≙] weierp;[℘] wedge;[∧]. - "\x05dbar;\x03⩟\x05dgeq;\x03≙\x05ierp;\x03℘\x04dge;\x03∧", - // wfr;[𝔴]. - "\x02r;\x04𝔴", - // wopf;[𝕨]. - "\x03pf;\x04𝕨", - // wp;[℘]. - "\x01;\x03℘", - // wreath;[≀] wr;[≀]. - "\x05eath;\x03≀\x01;\x03≀", - // wscr;[𝓌]. - "\x03cr;\x04𝓌", - // xcirc;[◯] xcap;[⋂] xcup;[⋃]. - "\x04irc;\x03◯\x03ap;\x03⋂\x03up;\x03⋃", - // xdtri;[▽]. - "\x04tri;\x03▽", - // xfr;[𝔵]. - "\x02r;\x04𝔵", - // xhArr;[⟺] xharr;[⟷]. - "\x04Arr;\x03⟺\x04arr;\x03⟷", - // xi;[ξ]. - "\x01;\x02ξ", - // xlArr;[⟸] xlarr;[⟵]. - "\x04Arr;\x03⟸\x04arr;\x03⟵", - // xmap;[⟼]. - "\x03ap;\x03⟼", - // xnis;[⋻]. - "\x03is;\x03⋻", - // xoplus;[⨁] xotime;[⨂] xodot;[⨀] xopf;[𝕩]. - "\x05plus;\x03⨁\x05time;\x03⨂\x04dot;\x03⨀\x03pf;\x04𝕩", - // xrArr;[⟹] xrarr;[⟶]. - "\x04Arr;\x03⟹\x04arr;\x03⟶", - // xsqcup;[⨆] xscr;[𝓍]. - "\x05qcup;\x03⨆\x03cr;\x04𝓍", - // xuplus;[⨄] xutri;[△]. - "\x05plus;\x03⨄\x04tri;\x03△", - // xvee;[⋁]. - "\x03ee;\x03⋁", - // xwedge;[⋀]. - "\x05edge;\x03⋀", - // yacute;[ý] yacute[ý] yacy;[я]. - "\x05cute;\x02ý\x04cute\x02ý\x03cy;\x02я", - // ycirc;[ŷ] ycy;[ы]. - "\x04irc;\x02ŷ\x02y;\x02ы", - // yen;[¥] yen[¥]. - "\x02n;\x02¥\x01n\x02¥", - // yfr;[𝔶]. - "\x02r;\x04𝔶", - // yicy;[ї]. - "\x03cy;\x02ї", - // yopf;[𝕪]. - "\x03pf;\x04𝕪", - // yscr;[𝓎]. - "\x03cr;\x04𝓎", - // yucy;[ю] yuml;[ÿ] yuml[ÿ]. - "\x03cy;\x02ю\x03ml;\x02ÿ\x02ml\x02ÿ", - // zacute;[ź]. - "\x05cute;\x02ź", - // zcaron;[ž] zcy;[з]. - "\x05aron;\x02ž\x02y;\x02з", - // zdot;[ż]. - "\x03ot;\x02ż", - // zeetrf;[ℨ] zeta;[ζ]. - "\x05etrf;\x03ℨ\x03ta;\x02ζ", - // zfr;[𝔷]. - "\x02r;\x04𝔷", - // zhcy;[ж]. - "\x03cy;\x02ж", - // zigrarr;[⇝]. - "\x06grarr;\x03⇝", - // zopf;[𝕫]. - "\x03pf;\x04𝕫", - // zscr;[𝓏]. - "\x03cr;\x04𝓏", - // zwnj;[‌] zwj;[‍]. - "\x03nj;\x03‌\x02j;\x03‍", - ), - "GT\x00LT\x00gt\x00lt\x00", - array( - ">", - "<", - ">", - "<", + "storage_version" => "6.6.0-trunk", + "key_length" => 2, + "groups" => "AE\x00AM\x00Aa\x00Ab\x00Ac\x00Af\x00Ag\x00Al\x00Am\x00An\x00Ao\x00Ap\x00Ar\x00As\x00At\x00Au\x00Ba\x00Bc\x00Be\x00Bf\x00Bo\x00Br\x00Bs\x00Bu\x00CH\x00CO\x00Ca\x00Cc\x00Cd\x00Ce\x00Cf\x00Ch\x00Ci\x00Cl\x00Co\x00Cr\x00Cs\x00Cu\x00DD\x00DJ\x00DS\x00DZ\x00Da\x00Dc\x00De\x00Df\x00Di\x00Do\x00Ds\x00EN\x00ET\x00Ea\x00Ec\x00Ed\x00Ef\x00Eg\x00El\x00Em\x00Eo\x00Ep\x00Eq\x00Es\x00Et\x00Eu\x00Ex\x00Fc\x00Ff\x00Fi\x00Fo\x00Fs\x00GJ\x00GT\x00Ga\x00Gb\x00Gc\x00Gd\x00Gf\x00Gg\x00Go\x00Gr\x00Gs\x00Gt\x00HA\x00Ha\x00Hc\x00Hf\x00Hi\x00Ho\x00Hs\x00Hu\x00IE\x00IJ\x00IO\x00Ia\x00Ic\x00Id\x00If\x00Ig\x00Im\x00In\x00Io\x00Is\x00It\x00Iu\x00Jc\x00Jf\x00Jo\x00Js\x00Ju\x00KH\x00KJ\x00Ka\x00Kc\x00Kf\x00Ko\x00Ks\x00LJ\x00LT\x00La\x00Lc\x00Le\x00Lf\x00Ll\x00Lm\x00Lo\x00Ls\x00Lt\x00Ma\x00Mc\x00Me\x00Mf\x00Mi\x00Mo\x00Ms\x00Mu\x00NJ\x00Na\x00Nc\x00Ne\x00Nf\x00No\x00Ns\x00Nt\x00Nu\x00OE\x00Oa\x00Oc\x00Od\x00Of\x00Og\x00Om\x00Oo\x00Op\x00Or\x00Os\x00Ot\x00Ou\x00Ov\x00Pa\x00Pc\x00Pf\x00Ph\x00Pi\x00Pl\x00Po\x00Pr\x00Ps\x00QU\x00Qf\x00Qo\x00Qs\x00RB\x00RE\x00Ra\x00Rc\x00Re\x00Rf\x00Rh\x00Ri\x00Ro\x00Rr\x00Rs\x00Ru\x00SH\x00SO\x00Sa\x00Sc\x00Sf\x00Sh\x00Si\x00Sm\x00So\x00Sq\x00Ss\x00St\x00Su\x00TH\x00TR\x00TS\x00Ta\x00Tc\x00Tf\x00Th\x00Ti\x00To\x00Tr\x00Ts\x00Ua\x00Ub\x00Uc\x00Ud\x00Uf\x00Ug\x00Um\x00Un\x00Uo\x00Up\x00Ur\x00Us\x00Ut\x00Uu\x00VD\x00Vb\x00Vc\x00Vd\x00Ve\x00Vf\x00Vo\x00Vs\x00Vv\x00Wc\x00We\x00Wf\x00Wo\x00Ws\x00Xf\x00Xi\x00Xo\x00Xs\x00YA\x00YI\x00YU\x00Ya\x00Yc\x00Yf\x00Yo\x00Ys\x00Yu\x00ZH\x00Za\x00Zc\x00Zd\x00Ze\x00Zf\x00Zo\x00Zs\x00aa\x00ab\x00ac\x00ae\x00af\x00ag\x00al\x00am\x00an\x00ao\x00ap\x00ar\x00as\x00at\x00au\x00aw\x00bN\x00ba\x00bb\x00bc\x00bd\x00be\x00bf\x00bi\x00bk\x00bl\x00bn\x00bo\x00bp\x00br\x00bs\x00bu\x00ca\x00cc\x00cd\x00ce\x00cf\x00ch\x00ci\x00cl\x00co\x00cr\x00cs\x00ct\x00cu\x00cw\x00cy\x00dA\x00dH\x00da\x00db\x00dc\x00dd\x00de\x00df\x00dh\x00di\x00dj\x00dl\x00do\x00dr\x00ds\x00dt\x00du\x00dw\x00dz\x00eD\x00ea\x00ec\x00ed\x00ee\x00ef\x00eg\x00el\x00em\x00en\x00eo\x00ep\x00eq\x00er\x00es\x00et\x00eu\x00ex\x00fa\x00fc\x00fe\x00ff\x00fi\x00fj\x00fl\x00fn\x00fo\x00fp\x00fr\x00fs\x00gE\x00ga\x00gb\x00gc\x00gd\x00ge\x00gf\x00gg\x00gi\x00gj\x00gl\x00gn\x00go\x00gr\x00gs\x00gt\x00gv\x00hA\x00ha\x00hb\x00hc\x00he\x00hf\x00hk\x00ho\x00hs\x00hy\x00ia\x00ic\x00ie\x00if\x00ig\x00ii\x00ij\x00im\x00in\x00io\x00ip\x00iq\x00is\x00it\x00iu\x00jc\x00jf\x00jm\x00jo\x00js\x00ju\x00ka\x00kc\x00kf\x00kg\x00kh\x00kj\x00ko\x00ks\x00lA\x00lB\x00lE\x00lH\x00la\x00lb\x00lc\x00ld\x00le\x00lf\x00lg\x00lh\x00lj\x00ll\x00lm\x00ln\x00lo\x00lp\x00lr\x00ls\x00lt\x00lu\x00lv\x00mD\x00ma\x00mc\x00md\x00me\x00mf\x00mh\x00mi\x00ml\x00mn\x00mo\x00mp\x00ms\x00mu\x00nG\x00nL\x00nR\x00nV\x00na\x00nb\x00nc\x00nd\x00ne\x00nf\x00ng\x00nh\x00ni\x00nj\x00nl\x00nm\x00no\x00np\x00nr\x00ns\x00nt\x00nu\x00nv\x00nw\x00oS\x00oa\x00oc\x00od\x00oe\x00of\x00og\x00oh\x00oi\x00ol\x00om\x00oo\x00op\x00or\x00os\x00ot\x00ou\x00ov\x00pa\x00pc\x00pe\x00pf\x00ph\x00pi\x00pl\x00pm\x00po\x00pr\x00ps\x00pu\x00qf\x00qi\x00qo\x00qp\x00qs\x00qu\x00rA\x00rB\x00rH\x00ra\x00rb\x00rc\x00rd\x00re\x00rf\x00rh\x00ri\x00rl\x00rm\x00rn\x00ro\x00rp\x00rr\x00rs\x00rt\x00ru\x00rx\x00sa\x00sb\x00sc\x00sd\x00se\x00sf\x00sh\x00si\x00sl\x00sm\x00so\x00sp\x00sq\x00sr\x00ss\x00st\x00su\x00sw\x00sz\x00ta\x00tb\x00tc\x00td\x00te\x00tf\x00th\x00ti\x00to\x00tp\x00tr\x00ts\x00tw\x00uA\x00uH\x00ua\x00ub\x00uc\x00ud\x00uf\x00ug\x00uh\x00ul\x00um\x00uo\x00up\x00ur\x00us\x00ut\x00uu\x00uw\x00vA\x00vB\x00vD\x00va\x00vc\x00vd\x00ve\x00vf\x00vl\x00vn\x00vo\x00vp\x00vr\x00vs\x00vz\x00wc\x00we\x00wf\x00wo\x00wp\x00wr\x00ws\x00xc\x00xd\x00xf\x00xh\x00xi\x00xl\x00xm\x00xn\x00xo\x00xr\x00xs\x00xu\x00xv\x00xw\x00ya\x00yc\x00ye\x00yf\x00yi\x00yo\x00ys\x00yu\x00za\x00zc\x00zd\x00ze\x00zf\x00zh\x00zi\x00zo\x00zs\x00zw\x00", + "large_words" => array( + // AElig;[Æ] AElig[Æ]. + "\x04lig;\x02Æ\x03lig\x02Æ", + // AMP;[&] AMP[&]. + "\x02P;\x01&\x01P\x01&", + // Aacute;[Á] Aacute[Á]. + "\x05cute;\x02Á\x04cute\x02Á", + // Abreve;[Ă]. + "\x05reve;\x02Ă", + // Acirc;[Â] Acirc[Â] Acy;[А]. + "\x04irc;\x02Â\x03irc\x02Â\x02y;\x02А", + // Afr;[𝔄]. + "\x02r;\x04𝔄", + // Agrave;[À] Agrave[À]. + "\x05rave;\x02À\x04rave\x02À", + // Alpha;[Α]. + "\x04pha;\x02Α", + // Amacr;[Ā]. + "\x04acr;\x02Ā", + // And;[⩓]. + "\x02d;\x03⩓", + // Aogon;[Ą] Aopf;[𝔸]. + "\x04gon;\x02Ą\x03pf;\x04𝔸", + // ApplyFunction;[⁡]. + "\x0cplyFunction;\x03⁡", + // Aring;[Å] Aring[Å]. + "\x04ing;\x02Å\x03ing\x02Å", + // Assign;[≔] Ascr;[𝒜]. + "\x05sign;\x03≔\x03cr;\x04𝒜", + // Atilde;[Ã] Atilde[Ã]. + "\x05ilde;\x02Ã\x04ilde\x02Ã", + // Auml;[Ä] Auml[Ä]. + "\x03ml;\x02Ä\x02ml\x02Ä", + // Backslash;[∖] Barwed;[⌆] Barv;[⫧]. + "\x08ckslash;\x03∖\x05rwed;\x03⌆\x03rv;\x03⫧", + // Bcy;[Б]. + "\x02y;\x02Б", + // Bernoullis;[ℬ] Because;[∵] Beta;[Β]. + "\x09rnoullis;\x03ℬ\x06cause;\x03∵\x03ta;\x02Β", + // Bfr;[𝔅]. + "\x02r;\x04𝔅", + // Bopf;[𝔹]. + "\x03pf;\x04𝔹", + // Breve;[˘]. + "\x04eve;\x02˘", + // Bscr;[ℬ]. + "\x03cr;\x03ℬ", + // Bumpeq;[≎]. + "\x05mpeq;\x03≎", + // CHcy;[Ч]. + "\x03cy;\x02Ч", + // COPY;[©] COPY[©]. + "\x03PY;\x02©\x02PY\x02©", + // CapitalDifferentialD;[ⅅ] Cayleys;[ℭ] Cacute;[Ć] Cap;[⋒]. + "\x13pitalDifferentialD;\x03ⅅ\x06yleys;\x03ℭ\x05cute;\x02Ć\x02p;\x03⋒", + // Cconint;[∰] Ccaron;[Č] Ccedil;[Ç] Ccedil[Ç] Ccirc;[Ĉ]. + "\x06onint;\x03∰\x05aron;\x02Č\x05edil;\x02Ç\x04edil\x02Ç\x04irc;\x02Ĉ", + // Cdot;[Ċ]. + "\x03ot;\x02Ċ", + // CenterDot;[·] Cedilla;[¸]. + "\x08nterDot;\x02·\x06dilla;\x02¸", + // Cfr;[ℭ]. + "\x02r;\x03ℭ", + // Chi;[Χ]. + "\x02i;\x02Χ", + // CircleMinus;[⊖] CircleTimes;[⊗] CirclePlus;[⊕] CircleDot;[⊙]. + "\x0arcleMinus;\x03⊖\x0arcleTimes;\x03⊗\x09rclePlus;\x03⊕\x08rcleDot;\x03⊙", + // ClockwiseContourIntegral;[∲] CloseCurlyDoubleQuote;[”] CloseCurlyQuote;[’]. + "\x17ockwiseContourIntegral;\x03∲\x14oseCurlyDoubleQuote;\x03”\x0eoseCurlyQuote;\x03’", + // CounterClockwiseContourIntegral;[∳] ContourIntegral;[∮] Congruent;[≡] Coproduct;[∐] Colone;[⩴] Conint;[∯] Colon;[∷] Copf;[ℂ]. + "\x1eunterClockwiseContourIntegral;\x03∳\x0entourIntegral;\x03∮\x08ngruent;\x03≡\x08product;\x03∐\x05lone;\x03⩴\x05nint;\x03∯\x04lon;\x03∷\x03pf;\x03ℂ", + // Cross;[⨯]. + "\x04oss;\x03⨯", + // Cscr;[𝒞]. + "\x03cr;\x04𝒞", + // CupCap;[≍] Cup;[⋓]. + "\x05pCap;\x03≍\x02p;\x03⋓", + // DDotrahd;[⤑] DD;[ⅅ]. + "\x07otrahd;\x03⤑\x01;\x03ⅅ", + // DJcy;[Ђ]. + "\x03cy;\x02Ђ", + // DScy;[Ѕ]. + "\x03cy;\x02Ѕ", + // DZcy;[Џ]. + "\x03cy;\x02Џ", + // Dagger;[‡] Dashv;[⫤] Darr;[↡]. + "\x05gger;\x03‡\x04shv;\x03⫤\x03rr;\x03↡", + // Dcaron;[Ď] Dcy;[Д]. + "\x05aron;\x02Ď\x02y;\x02Д", + // Delta;[Δ] Del;[∇]. + "\x04lta;\x02Δ\x02l;\x03∇", + // Dfr;[𝔇]. + "\x02r;\x04𝔇", + // DiacriticalDoubleAcute;[˝] DiacriticalAcute;[´] DiacriticalGrave;[`] DiacriticalTilde;[˜] DiacriticalDot;[˙] DifferentialD;[ⅆ] Diamond;[⋄]. + "\x15acriticalDoubleAcute;\x02˝\x0facriticalAcute;\x02´\x0facriticalGrave;\x01`\x0facriticalTilde;\x02˜\x0dacriticalDot;\x02˙\x0cfferentialD;\x03ⅆ\x06amond;\x03⋄", + // DoubleLongLeftRightArrow;[⟺] DoubleContourIntegral;[∯] DoubleLeftRightArrow;[⇔] DoubleLongRightArrow;[⟹] DoubleLongLeftArrow;[⟸] DownLeftRightVector;[⥐] DownRightTeeVector;[⥟] DownRightVectorBar;[⥗] DoubleUpDownArrow;[⇕] DoubleVerticalBar;[∥] DownLeftTeeVector;[⥞] DownLeftVectorBar;[⥖] DoubleRightArrow;[⇒] DownArrowUpArrow;[⇵] DoubleDownArrow;[⇓] DoubleLeftArrow;[⇐] DownRightVector;[⇁] DoubleRightTee;[⊨] DownLeftVector;[↽] DoubleLeftTee;[⫤] DoubleUpArrow;[⇑] DownArrowBar;[⤓] DownTeeArrow;[↧] DoubleDot;[¨] DownArrow;[↓] DownBreve;[̑] Downarrow;[⇓] DotEqual;[≐] DownTee;[⊤] DotDot;[⃜] Dopf;[𝔻] Dot;[¨]. + "\x17ubleLongLeftRightArrow;\x03⟺\x14ubleContourIntegral;\x03∯\x13ubleLeftRightArrow;\x03⇔\x13ubleLongRightArrow;\x03⟹\x12ubleLongLeftArrow;\x03⟸\x12wnLeftRightVector;\x03⥐\x11wnRightTeeVector;\x03⥟\x11wnRightVectorBar;\x03⥗\x10ubleUpDownArrow;\x03⇕\x10ubleVerticalBar;\x03∥\x10wnLeftTeeVector;\x03⥞\x10wnLeftVectorBar;\x03⥖\x0fubleRightArrow;\x03⇒\x0fwnArrowUpArrow;\x03⇵\x0eubleDownArrow;\x03⇓\x0eubleLeftArrow;\x03⇐\x0ewnRightVector;\x03⇁\x0dubleRightTee;\x03⊨\x0dwnLeftVector;\x03↽\x0cubleLeftTee;\x03⫤\x0cubleUpArrow;\x03⇑\x0bwnArrowBar;\x03⤓\x0bwnTeeArrow;\x03↧\x08ubleDot;\x02¨\x08wnArrow;\x03↓\x08wnBreve;\x02̑\x08wnarrow;\x03⇓\x07tEqual;\x03≐\x06wnTee;\x03⊤\x05tDot;\x03⃜\x03pf;\x04𝔻\x02t;\x02¨", + // Dstrok;[Đ] Dscr;[𝒟]. + "\x05trok;\x02Đ\x03cr;\x04𝒟", + // ENG;[Ŋ]. + "\x02G;\x02Ŋ", + // ETH;[Ð] ETH[Ð]. + "\x02H;\x02Ð\x01H\x02Ð", + // Eacute;[É] Eacute[É]. + "\x05cute;\x02É\x04cute\x02É", + // Ecaron;[Ě] Ecirc;[Ê] Ecirc[Ê] Ecy;[Э]. + "\x05aron;\x02Ě\x04irc;\x02Ê\x03irc\x02Ê\x02y;\x02Э", + // Edot;[Ė]. + "\x03ot;\x02Ė", + // Efr;[𝔈]. + "\x02r;\x04𝔈", + // Egrave;[È] Egrave[È]. + "\x05rave;\x02È\x04rave\x02È", + // Element;[∈]. + "\x06ement;\x03∈", + // EmptyVerySmallSquare;[▫] EmptySmallSquare;[◻] Emacr;[Ē]. + "\x13ptyVerySmallSquare;\x03▫\x0fptySmallSquare;\x03◻\x04acr;\x02Ē", + // Eogon;[Ę] Eopf;[𝔼]. + "\x04gon;\x02Ę\x03pf;\x04𝔼", + // Epsilon;[Ε]. + "\x06silon;\x02Ε", + // Equilibrium;[⇌] EqualTilde;[≂] Equal;[⩵]. + "\x0auilibrium;\x03⇌\x09ualTilde;\x03≂\x04ual;\x03⩵", + // Escr;[ℰ] Esim;[⩳]. + "\x03cr;\x03ℰ\x03im;\x03⩳", + // Eta;[Η]. + "\x02a;\x02Η", + // Euml;[Ë] Euml[Ë]. + "\x03ml;\x02Ë\x02ml\x02Ë", + // ExponentialE;[ⅇ] Exists;[∃]. + "\x0bponentialE;\x03ⅇ\x05ists;\x03∃", + // Fcy;[Ф]. + "\x02y;\x02Ф", + // Ffr;[𝔉]. + "\x02r;\x04𝔉", + // FilledVerySmallSquare;[▪] FilledSmallSquare;[◼]. + "\x14lledVerySmallSquare;\x03▪\x10lledSmallSquare;\x03◼", + // Fouriertrf;[ℱ] ForAll;[∀] Fopf;[𝔽]. + "\x09uriertrf;\x03ℱ\x05rAll;\x03∀\x03pf;\x04𝔽", + // Fscr;[ℱ]. + "\x03cr;\x03ℱ", + // GJcy;[Ѓ]. + "\x03cy;\x02Ѓ", + // GT;[>]. + "\x01;\x01>", + // Gammad;[Ϝ] Gamma;[Γ]. + "\x05mmad;\x02Ϝ\x04mma;\x02Γ", + // Gbreve;[Ğ]. + "\x05reve;\x02Ğ", + // Gcedil;[Ģ] Gcirc;[Ĝ] Gcy;[Г]. + "\x05edil;\x02Ģ\x04irc;\x02Ĝ\x02y;\x02Г", + // Gdot;[Ġ]. + "\x03ot;\x02Ġ", + // Gfr;[𝔊]. + "\x02r;\x04𝔊", + // Gg;[⋙]. + "\x01;\x03⋙", + // Gopf;[𝔾]. + "\x03pf;\x04𝔾", + // GreaterSlantEqual;[⩾] GreaterEqualLess;[⋛] GreaterFullEqual;[≧] GreaterGreater;[⪢] GreaterEqual;[≥] GreaterTilde;[≳] GreaterLess;[≷]. + "\x10eaterSlantEqual;\x03⩾\x0featerEqualLess;\x03⋛\x0featerFullEqual;\x03≧\x0deaterGreater;\x03⪢\x0beaterEqual;\x03≥\x0beaterTilde;\x03≳\x0aeaterLess;\x03≷", + // Gscr;[𝒢]. + "\x03cr;\x04𝒢", + // Gt;[≫]. + "\x01;\x03≫", + // HARDcy;[Ъ]. + "\x05RDcy;\x02Ъ", + // Hacek;[ˇ] Hat;[^]. + "\x04cek;\x02ˇ\x02t;\x01^", + // Hcirc;[Ĥ]. + "\x04irc;\x02Ĥ", + // Hfr;[ℌ]. + "\x02r;\x03ℌ", + // HilbertSpace;[ℋ]. + "\x0blbertSpace;\x03ℋ", + // HorizontalLine;[─] Hopf;[ℍ]. + "\x0drizontalLine;\x03─\x03pf;\x03ℍ", + // Hstrok;[Ħ] Hscr;[ℋ]. + "\x05trok;\x02Ħ\x03cr;\x03ℋ", + // HumpDownHump;[≎] HumpEqual;[≏]. + "\x0bmpDownHump;\x03≎\x08mpEqual;\x03≏", + // IEcy;[Е]. + "\x03cy;\x02Е", + // IJlig;[IJ]. + "\x04lig;\x02IJ", + // IOcy;[Ё]. + "\x03cy;\x02Ё", + // Iacute;[Í] Iacute[Í]. + "\x05cute;\x02Í\x04cute\x02Í", + // Icirc;[Î] Icirc[Î] Icy;[И]. + "\x04irc;\x02Î\x03irc\x02Î\x02y;\x02И", + // Idot;[İ]. + "\x03ot;\x02İ", + // Ifr;[ℑ]. + "\x02r;\x03ℑ", + // Igrave;[Ì] Igrave[Ì]. + "\x05rave;\x02Ì\x04rave\x02Ì", + // ImaginaryI;[ⅈ] Implies;[⇒] Imacr;[Ī] Im;[ℑ]. + "\x09aginaryI;\x03ⅈ\x06plies;\x03⇒\x04acr;\x02Ī\x01;\x03ℑ", + // InvisibleComma;[⁣] InvisibleTimes;[⁢] Intersection;[⋂] Integral;[∫] Int;[∬]. + "\x0dvisibleComma;\x03⁣\x0dvisibleTimes;\x03⁢\x0btersection;\x03⋂\x07tegral;\x03∫\x02t;\x03∬", + // Iogon;[Į] Iopf;[𝕀] Iota;[Ι]. + "\x04gon;\x02Į\x03pf;\x04𝕀\x03ta;\x02Ι", + // Iscr;[ℐ]. + "\x03cr;\x03ℐ", + // Itilde;[Ĩ]. + "\x05ilde;\x02Ĩ", + // Iukcy;[І] Iuml;[Ï] Iuml[Ï]. + "\x04kcy;\x02І\x03ml;\x02Ï\x02ml\x02Ï", + // Jcirc;[Ĵ] Jcy;[Й]. + "\x04irc;\x02Ĵ\x02y;\x02Й", + // Jfr;[𝔍]. + "\x02r;\x04𝔍", + // Jopf;[𝕁]. + "\x03pf;\x04𝕁", + // Jsercy;[Ј] Jscr;[𝒥]. + "\x05ercy;\x02Ј\x03cr;\x04𝒥", + // Jukcy;[Є]. + "\x04kcy;\x02Є", + // KHcy;[Х]. + "\x03cy;\x02Х", + // KJcy;[Ќ]. + "\x03cy;\x02Ќ", + // Kappa;[Κ]. + "\x04ppa;\x02Κ", + // Kcedil;[Ķ] Kcy;[К]. + "\x05edil;\x02Ķ\x02y;\x02К", + // Kfr;[𝔎]. + "\x02r;\x04𝔎", + // Kopf;[𝕂]. + "\x03pf;\x04𝕂", + // Kscr;[𝒦]. + "\x03cr;\x04𝒦", + // LJcy;[Љ]. + "\x03cy;\x02Љ", + // LT;[<]. + "\x01;\x01<", + // Laplacetrf;[ℒ] Lacute;[Ĺ] Lambda;[Λ] Lang;[⟪] Larr;[↞]. + "\x09placetrf;\x03ℒ\x05cute;\x02Ĺ\x05mbda;\x02Λ\x03ng;\x03⟪\x03rr;\x03↞", + // Lcaron;[Ľ] Lcedil;[Ļ] Lcy;[Л]. + "\x05aron;\x02Ľ\x05edil;\x02Ļ\x02y;\x02Л", + // LeftArrowRightArrow;[⇆] LeftDoubleBracket;[⟦] LeftDownTeeVector;[⥡] LeftDownVectorBar;[⥙] LeftTriangleEqual;[⊴] LeftAngleBracket;[⟨] LeftUpDownVector;[⥑] LessEqualGreater;[⋚] LeftRightVector;[⥎] LeftTriangleBar;[⧏] LeftUpTeeVector;[⥠] LeftUpVectorBar;[⥘] LeftDownVector;[⇃] LeftRightArrow;[↔] Leftrightarrow;[⇔] LessSlantEqual;[⩽] LeftTeeVector;[⥚] LeftVectorBar;[⥒] LessFullEqual;[≦] LeftArrowBar;[⇤] LeftTeeArrow;[↤] LeftTriangle;[⊲] LeftUpVector;[↿] LeftCeiling;[⌈] LessGreater;[≶] LeftVector;[↼] LeftArrow;[←] LeftFloor;[⌊] Leftarrow;[⇐] LessTilde;[≲] LessLess;[⪡] LeftTee;[⊣]. + "\x12ftArrowRightArrow;\x03⇆\x10ftDoubleBracket;\x03⟦\x10ftDownTeeVector;\x03⥡\x10ftDownVectorBar;\x03⥙\x10ftTriangleEqual;\x03⊴\x0fftAngleBracket;\x03⟨\x0fftUpDownVector;\x03⥑\x0fssEqualGreater;\x03⋚\x0eftRightVector;\x03⥎\x0eftTriangleBar;\x03⧏\x0eftUpTeeVector;\x03⥠\x0eftUpVectorBar;\x03⥘\x0dftDownVector;\x03⇃\x0dftRightArrow;\x03↔\x0dftrightarrow;\x03⇔\x0dssSlantEqual;\x03⩽\x0cftTeeVector;\x03⥚\x0cftVectorBar;\x03⥒\x0cssFullEqual;\x03≦\x0bftArrowBar;\x03⇤\x0bftTeeArrow;\x03↤\x0bftTriangle;\x03⊲\x0bftUpVector;\x03↿\x0aftCeiling;\x03⌈\x0assGreater;\x03≶\x09ftVector;\x03↼\x08ftArrow;\x03←\x08ftFloor;\x03⌊\x08ftarrow;\x03⇐\x08ssTilde;\x03≲\x07ssLess;\x03⪡\x06ftTee;\x03⊣", + // Lfr;[𝔏]. + "\x02r;\x04𝔏", + // Lleftarrow;[⇚] Ll;[⋘]. + "\x09eftarrow;\x03⇚\x01;\x03⋘", + // Lmidot;[Ŀ]. + "\x05idot;\x02Ŀ", + // LongLeftRightArrow;[⟷] Longleftrightarrow;[⟺] LowerRightArrow;[↘] LongRightArrow;[⟶] Longrightarrow;[⟹] LowerLeftArrow;[↙] LongLeftArrow;[⟵] Longleftarrow;[⟸] Lopf;[𝕃]. + "\x11ngLeftRightArrow;\x03⟷\x11ngleftrightarrow;\x03⟺\x0ewerRightArrow;\x03↘\x0dngRightArrow;\x03⟶\x0dngrightarrow;\x03⟹\x0dwerLeftArrow;\x03↙\x0cngLeftArrow;\x03⟵\x0cngleftarrow;\x03⟸\x03pf;\x04𝕃", + // Lstrok;[Ł] Lscr;[ℒ] Lsh;[↰]. + "\x05trok;\x02Ł\x03cr;\x03ℒ\x02h;\x03↰", + // Lt;[≪]. + "\x01;\x03≪", + // Map;[⤅]. + "\x02p;\x03⤅", + // Mcy;[М]. + "\x02y;\x02М", + // MediumSpace;[ ] Mellintrf;[ℳ]. + "\x0adiumSpace;\x03 \x08llintrf;\x03ℳ", + // Mfr;[𝔐]. + "\x02r;\x04𝔐", + // MinusPlus;[∓]. + "\x08nusPlus;\x03∓", + // Mopf;[𝕄]. + "\x03pf;\x04𝕄", + // Mscr;[ℳ]. + "\x03cr;\x03ℳ", + // Mu;[Μ]. + "\x01;\x02Μ", + // NJcy;[Њ]. + "\x03cy;\x02Њ", + // Nacute;[Ń]. + "\x05cute;\x02Ń", + // Ncaron;[Ň] Ncedil;[Ņ] Ncy;[Н]. + "\x05aron;\x02Ň\x05edil;\x02Ņ\x02y;\x02Н", + // NegativeVeryThinSpace;[​] NestedGreaterGreater;[≫] NegativeMediumSpace;[​] NegativeThickSpace;[​] NegativeThinSpace;[​] NestedLessLess;[≪] NewLine;[\xa]. + "\x14gativeVeryThinSpace;\x03​\x13stedGreaterGreater;\x03≫\x12gativeMediumSpace;\x03​\x11gativeThickSpace;\x03​\x10gativeThinSpace;\x03​\x0dstedLessLess;\x03≪\x06wLine;\x01\xa", + // Nfr;[𝔑]. + "\x02r;\x04𝔑", + // NotNestedGreaterGreater;[⪢̸] NotSquareSupersetEqual;[⋣] NotPrecedesSlantEqual;[⋠] NotRightTriangleEqual;[⋭] NotSucceedsSlantEqual;[⋡] NotDoubleVerticalBar;[∦] NotGreaterSlantEqual;[⩾̸] NotLeftTriangleEqual;[⋬] NotSquareSubsetEqual;[⋢] NotGreaterFullEqual;[≧̸] NotRightTriangleBar;[⧐̸] NotLeftTriangleBar;[⧏̸] NotGreaterGreater;[≫̸] NotLessSlantEqual;[⩽̸] NotNestedLessLess;[⪡̸] NotReverseElement;[∌] NotSquareSuperset;[⊐̸] NotTildeFullEqual;[≇] NonBreakingSpace;[ ] NotPrecedesEqual;[⪯̸] NotRightTriangle;[⋫] NotSucceedsEqual;[⪰̸] NotSucceedsTilde;[≿̸] NotSupersetEqual;[⊉] NotGreaterEqual;[≱] NotGreaterTilde;[≵] NotHumpDownHump;[≎̸] NotLeftTriangle;[⋪] NotSquareSubset;[⊏̸] NotGreaterLess;[≹] NotLessGreater;[≸] NotSubsetEqual;[⊈] NotVerticalBar;[∤] NotEqualTilde;[≂̸] NotTildeEqual;[≄] NotTildeTilde;[≉] NotCongruent;[≢] NotHumpEqual;[≏̸] NotLessEqual;[≰] NotLessTilde;[≴] NotLessLess;[≪̸] NotPrecedes;[⊀] NotSucceeds;[⊁] NotSuperset;[⊃⃒] NotElement;[∉] NotGreater;[≯] NotCupCap;[≭] NotExists;[∄] NotSubset;[⊂⃒] NotEqual;[≠] NotTilde;[≁] NoBreak;[⁠] NotLess;[≮] Nopf;[ℕ] Not;[⫬]. + "\x16tNestedGreaterGreater;\x05⪢̸\x15tSquareSupersetEqual;\x03⋣\x14tPrecedesSlantEqual;\x03⋠\x14tRightTriangleEqual;\x03⋭\x14tSucceedsSlantEqual;\x03⋡\x13tDoubleVerticalBar;\x03∦\x13tGreaterSlantEqual;\x05⩾̸\x13tLeftTriangleEqual;\x03⋬\x13tSquareSubsetEqual;\x03⋢\x12tGreaterFullEqual;\x05≧̸\x12tRightTriangleBar;\x05⧐̸\x11tLeftTriangleBar;\x05⧏̸\x10tGreaterGreater;\x05≫̸\x10tLessSlantEqual;\x05⩽̸\x10tNestedLessLess;\x05⪡̸\x10tReverseElement;\x03∌\x10tSquareSuperset;\x05⊐̸\x10tTildeFullEqual;\x03≇\x0fnBreakingSpace;\x02 \x0ftPrecedesEqual;\x05⪯̸\x0ftRightTriangle;\x03⋫\x0ftSucceedsEqual;\x05⪰̸\x0ftSucceedsTilde;\x05≿̸\x0ftSupersetEqual;\x03⊉\x0etGreaterEqual;\x03≱\x0etGreaterTilde;\x03≵\x0etHumpDownHump;\x05≎̸\x0etLeftTriangle;\x03⋪\x0etSquareSubset;\x05⊏̸\x0dtGreaterLess;\x03≹\x0dtLessGreater;\x03≸\x0dtSubsetEqual;\x03⊈\x0dtVerticalBar;\x03∤\x0ctEqualTilde;\x05≂̸\x0ctTildeEqual;\x03≄\x0ctTildeTilde;\x03≉\x0btCongruent;\x03≢\x0btHumpEqual;\x05≏̸\x0btLessEqual;\x03≰\x0btLessTilde;\x03≴\x0atLessLess;\x05≪̸\x0atPrecedes;\x03⊀\x0atSucceeds;\x03⊁\x0atSuperset;\x06⊃⃒\x09tElement;\x03∉\x09tGreater;\x03≯\x08tCupCap;\x03≭\x08tExists;\x03∄\x08tSubset;\x06⊂⃒\x07tEqual;\x03≠\x07tTilde;\x03≁\x06Break;\x03⁠\x06tLess;\x03≮\x03pf;\x03ℕ\x02t;\x03⫬", + // Nscr;[𝒩]. + "\x03cr;\x04𝒩", + // Ntilde;[Ñ] Ntilde[Ñ]. + "\x05ilde;\x02Ñ\x04ilde\x02Ñ", + // Nu;[Ν]. + "\x01;\x02Ν", + // OElig;[Œ]. + "\x04lig;\x02Œ", + // Oacute;[Ó] Oacute[Ó]. + "\x05cute;\x02Ó\x04cute\x02Ó", + // Ocirc;[Ô] Ocirc[Ô] Ocy;[О]. + "\x04irc;\x02Ô\x03irc\x02Ô\x02y;\x02О", + // Odblac;[Ő]. + "\x05blac;\x02Ő", + // Ofr;[𝔒]. + "\x02r;\x04𝔒", + // Ograve;[Ò] Ograve[Ò]. + "\x05rave;\x02Ò\x04rave\x02Ò", + // Omicron;[Ο] Omacr;[Ō] Omega;[Ω]. + "\x06icron;\x02Ο\x04acr;\x02Ō\x04ega;\x02Ω", + // Oopf;[𝕆]. + "\x03pf;\x04𝕆", + // OpenCurlyDoubleQuote;[“] OpenCurlyQuote;[‘]. + "\x13enCurlyDoubleQuote;\x03“\x0denCurlyQuote;\x03‘", + // Or;[⩔]. + "\x01;\x03⩔", + // Oslash;[Ø] Oslash[Ø] Oscr;[𝒪]. + "\x05lash;\x02Ø\x04lash\x02Ø\x03cr;\x04𝒪", + // Otilde;[Õ] Otimes;[⨷] Otilde[Õ]. + "\x05ilde;\x02Õ\x05imes;\x03⨷\x04ilde\x02Õ", + // Ouml;[Ö] Ouml[Ö]. + "\x03ml;\x02Ö\x02ml\x02Ö", + // OverParenthesis;[⏜] OverBracket;[⎴] OverBrace;[⏞] OverBar;[‾]. + "\x0eerParenthesis;\x03⏜\x0aerBracket;\x03⎴\x08erBrace;\x03⏞\x06erBar;\x03‾", + // PartialD;[∂]. + "\x07rtialD;\x03∂", + // Pcy;[П]. + "\x02y;\x02П", + // Pfr;[𝔓]. + "\x02r;\x04𝔓", + // Phi;[Φ]. + "\x02i;\x02Φ", + // Pi;[Π]. + "\x01;\x02Π", + // PlusMinus;[±]. + "\x08usMinus;\x02±", + // Poincareplane;[ℌ] Popf;[ℙ]. + "\x0cincareplane;\x03ℌ\x03pf;\x03ℙ", + // PrecedesSlantEqual;[≼] PrecedesEqual;[⪯] PrecedesTilde;[≾] Proportional;[∝] Proportion;[∷] Precedes;[≺] Product;[∏] Prime;[″] Pr;[⪻]. + "\x11ecedesSlantEqual;\x03≼\x0cecedesEqual;\x03⪯\x0cecedesTilde;\x03≾\x0boportional;\x03∝\x09oportion;\x03∷\x07ecedes;\x03≺\x06oduct;\x03∏\x04ime;\x03″\x01;\x03⪻", + // Pscr;[𝒫] Psi;[Ψ]. + "\x03cr;\x04𝒫\x02i;\x02Ψ", + // QUOT;[\"] QUOT[\"]. + "\x03OT;\x01\"\x02OT\x01\"", + // Qfr;[𝔔]. + "\x02r;\x04𝔔", + // Qopf;[ℚ]. + "\x03pf;\x03ℚ", + // Qscr;[𝒬]. + "\x03cr;\x04𝒬", + // RBarr;[⤐]. + "\x04arr;\x03⤐", + // REG;[®] REG[®]. + "\x02G;\x02®\x01G\x02®", + // Racute;[Ŕ] Rarrtl;[⤖] Rang;[⟫] Rarr;[↠]. + "\x05cute;\x02Ŕ\x05rrtl;\x03⤖\x03ng;\x03⟫\x03rr;\x03↠", + // Rcaron;[Ř] Rcedil;[Ŗ] Rcy;[Р]. + "\x05aron;\x02Ř\x05edil;\x02Ŗ\x02y;\x02Р", + // ReverseUpEquilibrium;[⥯] ReverseEquilibrium;[⇋] ReverseElement;[∋] Re;[ℜ]. + "\x13verseUpEquilibrium;\x03⥯\x11verseEquilibrium;\x03⇋\x0dverseElement;\x03∋\x01;\x03ℜ", + // Rfr;[ℜ]. + "\x02r;\x03ℜ", + // Rho;[Ρ]. + "\x02o;\x02Ρ", + // RightArrowLeftArrow;[⇄] RightDoubleBracket;[⟧] RightDownTeeVector;[⥝] RightDownVectorBar;[⥕] RightTriangleEqual;[⊵] RightAngleBracket;[⟩] RightUpDownVector;[⥏] RightTriangleBar;[⧐] RightUpTeeVector;[⥜] RightUpVectorBar;[⥔] RightDownVector;[⇂] RightTeeVector;[⥛] RightVectorBar;[⥓] RightArrowBar;[⇥] RightTeeArrow;[↦] RightTriangle;[⊳] RightUpVector;[↾] RightCeiling;[⌉] RightVector;[⇀] RightArrow;[→] RightFloor;[⌋] Rightarrow;[⇒] RightTee;[⊢]. + "\x12ghtArrowLeftArrow;\x03⇄\x11ghtDoubleBracket;\x03⟧\x11ghtDownTeeVector;\x03⥝\x11ghtDownVectorBar;\x03⥕\x11ghtTriangleEqual;\x03⊵\x10ghtAngleBracket;\x03⟩\x10ghtUpDownVector;\x03⥏\x0fghtTriangleBar;\x03⧐\x0fghtUpTeeVector;\x03⥜\x0fghtUpVectorBar;\x03⥔\x0eghtDownVector;\x03⇂\x0dghtTeeVector;\x03⥛\x0dghtVectorBar;\x03⥓\x0cghtArrowBar;\x03⇥\x0cghtTeeArrow;\x03↦\x0cghtTriangle;\x03⊳\x0cghtUpVector;\x03↾\x0bghtCeiling;\x03⌉\x0aghtVector;\x03⇀\x09ghtArrow;\x03→\x09ghtFloor;\x03⌋\x09ghtarrow;\x03⇒\x07ghtTee;\x03⊢", + // RoundImplies;[⥰] Ropf;[ℝ]. + "\x0bundImplies;\x03⥰\x03pf;\x03ℝ", + // Rrightarrow;[⇛]. + "\x0aightarrow;\x03⇛", + // Rscr;[ℛ] Rsh;[↱]. + "\x03cr;\x03ℛ\x02h;\x03↱", + // RuleDelayed;[⧴]. + "\x0aleDelayed;\x03⧴", + // SHCHcy;[Щ] SHcy;[Ш]. + "\x05CHcy;\x02Щ\x03cy;\x02Ш", + // SOFTcy;[Ь]. + "\x05FTcy;\x02Ь", + // Sacute;[Ś]. + "\x05cute;\x02Ś", + // Scaron;[Š] Scedil;[Ş] Scirc;[Ŝ] Scy;[С] Sc;[⪼]. + "\x05aron;\x02Š\x05edil;\x02Ş\x04irc;\x02Ŝ\x02y;\x02С\x01;\x03⪼", + // Sfr;[𝔖]. + "\x02r;\x04𝔖", + // ShortRightArrow;[→] ShortDownArrow;[↓] ShortLeftArrow;[←] ShortUpArrow;[↑]. + "\x0eortRightArrow;\x03→\x0dortDownArrow;\x03↓\x0dortLeftArrow;\x03←\x0bortUpArrow;\x03↑", + // Sigma;[Σ]. + "\x04gma;\x02Σ", + // SmallCircle;[∘]. + "\x0aallCircle;\x03∘", + // Sopf;[𝕊]. + "\x03pf;\x04𝕊", + // SquareSupersetEqual;[⊒] SquareIntersection;[⊓] SquareSubsetEqual;[⊑] SquareSuperset;[⊐] SquareSubset;[⊏] SquareUnion;[⊔] Square;[□] Sqrt;[√]. + "\x12uareSupersetEqual;\x03⊒\x11uareIntersection;\x03⊓\x10uareSubsetEqual;\x03⊑\x0duareSuperset;\x03⊐\x0buareSubset;\x03⊏\x0auareUnion;\x03⊔\x05uare;\x03□\x03rt;\x03√", + // Sscr;[𝒮]. + "\x03cr;\x04𝒮", + // Star;[⋆]. + "\x03ar;\x03⋆", + // SucceedsSlantEqual;[≽] SucceedsEqual;[⪰] SucceedsTilde;[≿] SupersetEqual;[⊇] SubsetEqual;[⊆] Succeeds;[≻] SuchThat;[∋] Superset;[⊃] Subset;[⋐] Supset;[⋑] Sub;[⋐] Sum;[∑] Sup;[⋑]. + "\x11cceedsSlantEqual;\x03≽\x0ccceedsEqual;\x03⪰\x0ccceedsTilde;\x03≿\x0cpersetEqual;\x03⊇\x0absetEqual;\x03⊆\x07cceeds;\x03≻\x07chThat;\x03∋\x07perset;\x03⊃\x05bset;\x03⋐\x05pset;\x03⋑\x02b;\x03⋐\x02m;\x03∑\x02p;\x03⋑", + // THORN;[Þ] THORN[Þ]. + "\x04ORN;\x02Þ\x03ORN\x02Þ", + // TRADE;[™]. + "\x04ADE;\x03™", + // TSHcy;[Ћ] TScy;[Ц]. + "\x04Hcy;\x02Ћ\x03cy;\x02Ц", + // Tab;[\x9] Tau;[Τ]. + "\x02b;\x01\x9\x02u;\x02Τ", + // Tcaron;[Ť] Tcedil;[Ţ] Tcy;[Т]. + "\x05aron;\x02Ť\x05edil;\x02Ţ\x02y;\x02Т", + // Tfr;[𝔗]. + "\x02r;\x04𝔗", + // ThickSpace;[  ] Therefore;[∴] ThinSpace;[ ] Theta;[Θ]. + "\x09ickSpace;\x06  \x08erefore;\x03∴\x08inSpace;\x03 \x04eta;\x02Θ", + // TildeFullEqual;[≅] TildeEqual;[≃] TildeTilde;[≈] Tilde;[∼]. + "\x0dldeFullEqual;\x03≅\x09ldeEqual;\x03≃\x09ldeTilde;\x03≈\x04lde;\x03∼", + // Topf;[𝕋]. + "\x03pf;\x04𝕋", + // TripleDot;[⃛]. + "\x08ipleDot;\x03⃛", + // Tstrok;[Ŧ] Tscr;[𝒯]. + "\x05trok;\x02Ŧ\x03cr;\x04𝒯", + // Uarrocir;[⥉] Uacute;[Ú] Uacute[Ú] Uarr;[↟]. + "\x07rrocir;\x03⥉\x05cute;\x02Ú\x04cute\x02Ú\x03rr;\x03↟", + // Ubreve;[Ŭ] Ubrcy;[Ў]. + "\x05reve;\x02Ŭ\x04rcy;\x02Ў", + // Ucirc;[Û] Ucirc[Û] Ucy;[У]. + "\x04irc;\x02Û\x03irc\x02Û\x02y;\x02У", + // Udblac;[Ű]. + "\x05blac;\x02Ű", + // Ufr;[𝔘]. + "\x02r;\x04𝔘", + // Ugrave;[Ù] Ugrave[Ù]. + "\x05rave;\x02Ù\x04rave\x02Ù", + // Umacr;[Ū]. + "\x04acr;\x02Ū", + // UnderParenthesis;[⏝] UnderBracket;[⎵] UnderBrace;[⏟] UnionPlus;[⊎] UnderBar;[_] Union;[⋃]. + "\x0fderParenthesis;\x03⏝\x0bderBracket;\x03⎵\x09derBrace;\x03⏟\x08ionPlus;\x03⊎\x07derBar;\x01_\x04ion;\x03⋃", + // Uogon;[Ų] Uopf;[𝕌]. + "\x04gon;\x02Ų\x03pf;\x04𝕌", + // UpArrowDownArrow;[⇅] UpperRightArrow;[↗] UpperLeftArrow;[↖] UpEquilibrium;[⥮] UpDownArrow;[↕] Updownarrow;[⇕] UpArrowBar;[⤒] UpTeeArrow;[↥] UpArrow;[↑] Uparrow;[⇑] Upsilon;[Υ] UpTee;[⊥] Upsi;[ϒ]. + "\x0fArrowDownArrow;\x03⇅\x0eperRightArrow;\x03↗\x0dperLeftArrow;\x03↖\x0cEquilibrium;\x03⥮\x0aDownArrow;\x03↕\x0adownarrow;\x03⇕\x09ArrowBar;\x03⤒\x09TeeArrow;\x03↥\x06Arrow;\x03↑\x06arrow;\x03⇑\x06silon;\x02Υ\x04Tee;\x03⊥\x03si;\x02ϒ", + // Uring;[Ů]. + "\x04ing;\x02Ů", + // Uscr;[𝒰]. + "\x03cr;\x04𝒰", + // Utilde;[Ũ]. + "\x05ilde;\x02Ũ", + // Uuml;[Ü] Uuml[Ü]. + "\x03ml;\x02Ü\x02ml\x02Ü", + // VDash;[⊫]. + "\x04ash;\x03⊫", + // Vbar;[⫫]. + "\x03ar;\x03⫫", + // Vcy;[В]. + "\x02y;\x02В", + // Vdashl;[⫦] Vdash;[⊩]. + "\x05ashl;\x03⫦\x04ash;\x03⊩", + // VerticalSeparator;[❘] VerticalTilde;[≀] VeryThinSpace;[ ] VerticalLine;[|] VerticalBar;[∣] Verbar;[‖] Vert;[‖] Vee;[⋁]. + "\x10rticalSeparator;\x03❘\x0crticalTilde;\x03≀\x0cryThinSpace;\x03 \x0brticalLine;\x01|\x0articalBar;\x03∣\x05rbar;\x03‖\x03rt;\x03‖\x02e;\x03⋁", + // Vfr;[𝔙]. + "\x02r;\x04𝔙", + // Vopf;[𝕍]. + "\x03pf;\x04𝕍", + // Vscr;[𝒱]. + "\x03cr;\x04𝒱", + // Vvdash;[⊪]. + "\x05dash;\x03⊪", + // Wcirc;[Ŵ]. + "\x04irc;\x02Ŵ", + // Wedge;[⋀]. + "\x04dge;\x03⋀", + // Wfr;[𝔚]. + "\x02r;\x04𝔚", + // Wopf;[𝕎]. + "\x03pf;\x04𝕎", + // Wscr;[𝒲]. + "\x03cr;\x04𝒲", + // Xfr;[𝔛]. + "\x02r;\x04𝔛", + // Xi;[Ξ]. + "\x01;\x02Ξ", + // Xopf;[𝕏]. + "\x03pf;\x04𝕏", + // Xscr;[𝒳]. + "\x03cr;\x04𝒳", + // YAcy;[Я]. + "\x03cy;\x02Я", + // YIcy;[Ї]. + "\x03cy;\x02Ї", + // YUcy;[Ю]. + "\x03cy;\x02Ю", + // Yacute;[Ý] Yacute[Ý]. + "\x05cute;\x02Ý\x04cute\x02Ý", + // Ycirc;[Ŷ] Ycy;[Ы]. + "\x04irc;\x02Ŷ\x02y;\x02Ы", + // Yfr;[𝔜]. + "\x02r;\x04𝔜", + // Yopf;[𝕐]. + "\x03pf;\x04𝕐", + // Yscr;[𝒴]. + "\x03cr;\x04𝒴", + // Yuml;[Ÿ]. + "\x03ml;\x02Ÿ", + // ZHcy;[Ж]. + "\x03cy;\x02Ж", + // Zacute;[Ź]. + "\x05cute;\x02Ź", + // Zcaron;[Ž] Zcy;[З]. + "\x05aron;\x02Ž\x02y;\x02З", + // Zdot;[Ż]. + "\x03ot;\x02Ż", + // ZeroWidthSpace;[​] Zeta;[Ζ]. + "\x0droWidthSpace;\x03​\x03ta;\x02Ζ", + // Zfr;[ℨ]. + "\x02r;\x03ℨ", + // Zopf;[ℤ]. + "\x03pf;\x03ℤ", + // Zscr;[𝒵]. + "\x03cr;\x04𝒵", + // aacute;[á] aacute[á]. + "\x05cute;\x02á\x04cute\x02á", + // abreve;[ă]. + "\x05reve;\x02ă", + // acirc;[â] acute;[´] acirc[â] acute[´] acE;[∾̳] acd;[∿] acy;[а] ac;[∾]. + "\x04irc;\x02â\x04ute;\x02´\x03irc\x02â\x03ute\x02´\x02E;\x05∾̳\x02d;\x03∿\x02y;\x02а\x01;\x03∾", + // aelig;[æ] aelig[æ]. + "\x04lig;\x02æ\x03lig\x02æ", + // afr;[𝔞] af;[⁡]. + "\x02r;\x04𝔞\x01;\x03⁡", + // agrave;[à] agrave[à]. + "\x05rave;\x02à\x04rave\x02à", + // alefsym;[ℵ] aleph;[ℵ] alpha;[α]. + "\x06efsym;\x03ℵ\x04eph;\x03ℵ\x04pha;\x02α", + // amacr;[ā] amalg;[⨿] amp;[&] amp[&]. + "\x04acr;\x02ā\x04alg;\x03⨿\x02p;\x01&\x01p\x01&", + // andslope;[⩘] angmsdaa;[⦨] angmsdab;[⦩] angmsdac;[⦪] angmsdad;[⦫] angmsdae;[⦬] angmsdaf;[⦭] angmsdag;[⦮] angmsdah;[⦯] angrtvbd;[⦝] angrtvb;[⊾] angzarr;[⍼] andand;[⩕] angmsd;[∡] angsph;[∢] angle;[∠] angrt;[∟] angst;[Å] andd;[⩜] andv;[⩚] ange;[⦤] and;[∧] ang;[∠]. + "\x07dslope;\x03⩘\x07gmsdaa;\x03⦨\x07gmsdab;\x03⦩\x07gmsdac;\x03⦪\x07gmsdad;\x03⦫\x07gmsdae;\x03⦬\x07gmsdaf;\x03⦭\x07gmsdag;\x03⦮\x07gmsdah;\x03⦯\x07grtvbd;\x03⦝\x06grtvb;\x03⊾\x06gzarr;\x03⍼\x05dand;\x03⩕\x05gmsd;\x03∡\x05gsph;\x03∢\x04gle;\x03∠\x04grt;\x03∟\x04gst;\x02Å\x03dd;\x03⩜\x03dv;\x03⩚\x03ge;\x03⦤\x02d;\x03∧\x02g;\x03∠", + // aogon;[ą] aopf;[𝕒]. + "\x04gon;\x02ą\x03pf;\x04𝕒", + // approxeq;[≊] apacir;[⩯] approx;[≈] apid;[≋] apos;['] apE;[⩰] ape;[≊] ap;[≈]. + "\x07proxeq;\x03≊\x05acir;\x03⩯\x05prox;\x03≈\x03id;\x03≋\x03os;\x01'\x02E;\x03⩰\x02e;\x03≊\x01;\x03≈", + // aring;[å] aring[å]. + "\x04ing;\x02å\x03ing\x02å", + // asympeq;[≍] asymp;[≈] ascr;[𝒶] ast;[*]. + "\x06ympeq;\x03≍\x04ymp;\x03≈\x03cr;\x04𝒶\x02t;\x01*", + // atilde;[ã] atilde[ã]. + "\x05ilde;\x02ã\x04ilde\x02ã", + // auml;[ä] auml[ä]. + "\x03ml;\x02ä\x02ml\x02ä", + // awconint;[∳] awint;[⨑]. + "\x07conint;\x03∳\x04int;\x03⨑", + // bNot;[⫭]. + "\x03ot;\x03⫭", + // backepsilon;[϶] backprime;[‵] backsimeq;[⋍] backcong;[≌] barwedge;[⌅] backsim;[∽] barvee;[⊽] barwed;[⌅]. + "\x0ackepsilon;\x02϶\x08ckprime;\x03‵\x08cksimeq;\x03⋍\x07ckcong;\x03≌\x07rwedge;\x03⌅\x06cksim;\x03∽\x05rvee;\x03⊽\x05rwed;\x03⌅", + // bbrktbrk;[⎶] bbrk;[⎵]. + "\x07rktbrk;\x03⎶\x03rk;\x03⎵", + // bcong;[≌] bcy;[б]. + "\x04ong;\x03≌\x02y;\x02б", + // bdquo;[„]. + "\x04quo;\x03„", + // because;[∵] bemptyv;[⦰] between;[≬] becaus;[∵] bernou;[ℬ] bepsi;[϶] beta;[β] beth;[ℶ]. + "\x06cause;\x03∵\x06mptyv;\x03⦰\x06tween;\x03≬\x05caus;\x03∵\x05rnou;\x03ℬ\x04psi;\x02϶\x03ta;\x02β\x03th;\x03ℶ", + // bfr;[𝔟]. + "\x02r;\x04𝔟", + // bigtriangledown;[▽] bigtriangleup;[△] bigotimes;[⨂] bigoplus;[⨁] bigsqcup;[⨆] biguplus;[⨄] bigwedge;[⋀] bigcirc;[◯] bigodot;[⨀] bigstar;[★] bigcap;[⋂] bigcup;[⋃] bigvee;[⋁]. + "\x0egtriangledown;\x03▽\x0cgtriangleup;\x03△\x08gotimes;\x03⨂\x07goplus;\x03⨁\x07gsqcup;\x03⨆\x07guplus;\x03⨄\x07gwedge;\x03⋀\x06gcirc;\x03◯\x06godot;\x03⨀\x06gstar;\x03★\x05gcap;\x03⋂\x05gcup;\x03⋃\x05gvee;\x03⋁", + // bkarow;[⤍]. + "\x05arow;\x03⤍", + // blacktriangleright;[▸] blacktriangledown;[▾] blacktriangleleft;[◂] blacktriangle;[▴] blacklozenge;[⧫] blacksquare;[▪] blank;[␣] blk12;[▒] blk14;[░] blk34;[▓] block;[█]. + "\x11acktriangleright;\x03▸\x10acktriangledown;\x03▾\x10acktriangleleft;\x03◂\x0cacktriangle;\x03▴\x0backlozenge;\x03⧫\x0aacksquare;\x03▪\x04ank;\x03␣\x04k12;\x03▒\x04k14;\x03░\x04k34;\x03▓\x04ock;\x03█", + // bnequiv;[≡⃥] bnot;[⌐] bne;[=⃥]. + "\x06equiv;\x06≡⃥\x03ot;\x03⌐\x02e;\x04=⃥", + // boxminus;[⊟] boxtimes;[⊠] boxplus;[⊞] bottom;[⊥] bowtie;[⋈] boxbox;[⧉] boxDL;[╗] boxDR;[╔] boxDl;[╖] boxDr;[╓] boxHD;[╦] boxHU;[╩] boxHd;[╤] boxHu;[╧] boxUL;[╝] boxUR;[╚] boxUl;[╜] boxUr;[╙] boxVH;[╬] boxVL;[╣] boxVR;[╠] boxVh;[╫] boxVl;[╢] boxVr;[╟] boxdL;[╕] boxdR;[╒] boxdl;[┐] boxdr;[┌] boxhD;[╥] boxhU;[╨] boxhd;[┬] boxhu;[┴] boxuL;[╛] boxuR;[╘] boxul;[┘] boxur;[└] boxvH;[╪] boxvL;[╡] boxvR;[╞] boxvh;[┼] boxvl;[┤] boxvr;[├] bopf;[𝕓] boxH;[═] boxV;[║] boxh;[─] boxv;[│] bot;[⊥]. + "\x07xminus;\x03⊟\x07xtimes;\x03⊠\x06xplus;\x03⊞\x05ttom;\x03⊥\x05wtie;\x03⋈\x05xbox;\x03⧉\x04xDL;\x03╗\x04xDR;\x03╔\x04xDl;\x03╖\x04xDr;\x03╓\x04xHD;\x03╦\x04xHU;\x03╩\x04xHd;\x03╤\x04xHu;\x03╧\x04xUL;\x03╝\x04xUR;\x03╚\x04xUl;\x03╜\x04xUr;\x03╙\x04xVH;\x03╬\x04xVL;\x03╣\x04xVR;\x03╠\x04xVh;\x03╫\x04xVl;\x03╢\x04xVr;\x03╟\x04xdL;\x03╕\x04xdR;\x03╒\x04xdl;\x03┐\x04xdr;\x03┌\x04xhD;\x03╥\x04xhU;\x03╨\x04xhd;\x03┬\x04xhu;\x03┴\x04xuL;\x03╛\x04xuR;\x03╘\x04xul;\x03┘\x04xur;\x03└\x04xvH;\x03╪\x04xvL;\x03╡\x04xvR;\x03╞\x04xvh;\x03┼\x04xvl;\x03┤\x04xvr;\x03├\x03pf;\x04𝕓\x03xH;\x03═\x03xV;\x03║\x03xh;\x03─\x03xv;\x03│\x02t;\x03⊥", + // bprime;[‵]. + "\x05rime;\x03‵", + // brvbar;[¦] breve;[˘] brvbar[¦]. + "\x05vbar;\x02¦\x04eve;\x02˘\x04vbar\x02¦", + // bsolhsub;[⟈] bsemi;[⁏] bsime;[⋍] bsolb;[⧅] bscr;[𝒷] bsim;[∽] bsol;[\\]. + "\x07olhsub;\x03⟈\x04emi;\x03⁏\x04ime;\x03⋍\x04olb;\x03⧅\x03cr;\x04𝒷\x03im;\x03∽\x03ol;\x01\\", + // bullet;[•] bumpeq;[≏] bumpE;[⪮] bumpe;[≏] bull;[•] bump;[≎]. + "\x05llet;\x03•\x05mpeq;\x03≏\x04mpE;\x03⪮\x04mpe;\x03≏\x03ll;\x03•\x03mp;\x03≎", + // capbrcup;[⩉] cacute;[ć] capand;[⩄] capcap;[⩋] capcup;[⩇] capdot;[⩀] caret;[⁁] caron;[ˇ] caps;[∩︀] cap;[∩]. + "\x07pbrcup;\x03⩉\x05cute;\x02ć\x05pand;\x03⩄\x05pcap;\x03⩋\x05pcup;\x03⩇\x05pdot;\x03⩀\x04ret;\x03⁁\x04ron;\x02ˇ\x03ps;\x06∩︀\x02p;\x03∩", + // ccupssm;[⩐] ccaron;[č] ccedil;[ç] ccaps;[⩍] ccedil[ç] ccirc;[ĉ] ccups;[⩌]. + "\x06upssm;\x03⩐\x05aron;\x02č\x05edil;\x02ç\x04aps;\x03⩍\x04edil\x02ç\x04irc;\x02ĉ\x04ups;\x03⩌", + // cdot;[ċ]. + "\x03ot;\x02ċ", + // centerdot;[·] cemptyv;[⦲] cedil;[¸] cedil[¸] cent;[¢] cent[¢]. + "\x08nterdot;\x02·\x06mptyv;\x03⦲\x04dil;\x02¸\x03dil\x02¸\x03nt;\x02¢\x02nt\x02¢", + // cfr;[𝔠]. + "\x02r;\x04𝔠", + // checkmark;[✓] check;[✓] chcy;[ч] chi;[χ]. + "\x08eckmark;\x03✓\x04eck;\x03✓\x03cy;\x02ч\x02i;\x02χ", + // circlearrowright;[↻] circlearrowleft;[↺] circledcirc;[⊚] circleddash;[⊝] circledast;[⊛] circledR;[®] circledS;[Ⓢ] cirfnint;[⨐] cirscir;[⧂] circeq;[≗] cirmid;[⫯] cirE;[⧃] circ;[ˆ] cire;[≗] cir;[○]. + "\x0frclearrowright;\x03↻\x0erclearrowleft;\x03↺\x0arcledcirc;\x03⊚\x0arcleddash;\x03⊝\x09rcledast;\x03⊛\x07rcledR;\x02®\x07rcledS;\x03Ⓢ\x07rfnint;\x03⨐\x06rscir;\x03⧂\x05rceq;\x03≗\x05rmid;\x03⫯\x03rE;\x03⧃\x03rc;\x02ˆ\x03re;\x03≗\x02r;\x03○", + // clubsuit;[♣] clubs;[♣]. + "\x07ubsuit;\x03♣\x04ubs;\x03♣", + // complement;[∁] complexes;[ℂ] coloneq;[≔] congdot;[⩭] colone;[≔] commat;[@] compfn;[∘] conint;[∮] coprod;[∐] copysr;[℗] colon;[:] comma;[,] comp;[∁] cong;[≅] copf;[𝕔] copy;[©] copy[©]. + "\x09mplement;\x03∁\x08mplexes;\x03ℂ\x06loneq;\x03≔\x06ngdot;\x03⩭\x05lone;\x03≔\x05mmat;\x01@\x05mpfn;\x03∘\x05nint;\x03∮\x05prod;\x03∐\x05pysr;\x03℗\x04lon;\x01:\x04mma;\x01,\x03mp;\x03∁\x03ng;\x03≅\x03pf;\x04𝕔\x03py;\x02©\x02py\x02©", + // crarr;[↵] cross;[✗]. + "\x04arr;\x03↵\x04oss;\x03✗", + // csube;[⫑] csupe;[⫒] cscr;[𝒸] csub;[⫏] csup;[⫐]. + "\x04ube;\x03⫑\x04upe;\x03⫒\x03cr;\x04𝒸\x03ub;\x03⫏\x03up;\x03⫐", + // ctdot;[⋯]. + "\x04dot;\x03⋯", + // curvearrowright;[↷] curvearrowleft;[↶] curlyeqprec;[⋞] curlyeqsucc;[⋟] curlywedge;[⋏] cupbrcap;[⩈] curlyvee;[⋎] cudarrl;[⤸] cudarrr;[⤵] cularrp;[⤽] curarrm;[⤼] cularr;[↶] cupcap;[⩆] cupcup;[⩊] cupdot;[⊍] curarr;[↷] curren;[¤] cuepr;[⋞] cuesc;[⋟] cupor;[⩅] curren[¤] cuvee;[⋎] cuwed;[⋏] cups;[∪︀] cup;[∪]. + "\x0ervearrowright;\x03↷\x0drvearrowleft;\x03↶\x0arlyeqprec;\x03⋞\x0arlyeqsucc;\x03⋟\x09rlywedge;\x03⋏\x07pbrcap;\x03⩈\x07rlyvee;\x03⋎\x06darrl;\x03⤸\x06darrr;\x03⤵\x06larrp;\x03⤽\x06rarrm;\x03⤼\x05larr;\x03↶\x05pcap;\x03⩆\x05pcup;\x03⩊\x05pdot;\x03⊍\x05rarr;\x03↷\x05rren;\x02¤\x04epr;\x03⋞\x04esc;\x03⋟\x04por;\x03⩅\x04rren\x02¤\x04vee;\x03⋎\x04wed;\x03⋏\x03ps;\x06∪︀\x02p;\x03∪", + // cwconint;[∲] cwint;[∱]. + "\x07conint;\x03∲\x04int;\x03∱", + // cylcty;[⌭]. + "\x05lcty;\x03⌭", + // dArr;[⇓]. + "\x03rr;\x03⇓", + // dHar;[⥥]. + "\x03ar;\x03⥥", + // dagger;[†] daleth;[ℸ] dashv;[⊣] darr;[↓] dash;[‐]. + "\x05gger;\x03†\x05leth;\x03ℸ\x04shv;\x03⊣\x03rr;\x03↓\x03sh;\x03‐", + // dbkarow;[⤏] dblac;[˝]. + "\x06karow;\x03⤏\x04lac;\x02˝", + // dcaron;[ď] dcy;[д]. + "\x05aron;\x02ď\x02y;\x02д", + // ddagger;[‡] ddotseq;[⩷] ddarr;[⇊] dd;[ⅆ]. + "\x06agger;\x03‡\x06otseq;\x03⩷\x04arr;\x03⇊\x01;\x03ⅆ", + // demptyv;[⦱] delta;[δ] deg;[°] deg[°]. + "\x06mptyv;\x03⦱\x04lta;\x02δ\x02g;\x02°\x01g\x02°", + // dfisht;[⥿] dfr;[𝔡]. + "\x05isht;\x03⥿\x02r;\x04𝔡", + // dharl;[⇃] dharr;[⇂]. + "\x04arl;\x03⇃\x04arr;\x03⇂", + // divideontimes;[⋇] diamondsuit;[♦] diamond;[⋄] digamma;[ϝ] divide;[÷] divonx;[⋇] diams;[♦] disin;[⋲] divide[÷] diam;[⋄] die;[¨] div;[÷]. + "\x0cvideontimes;\x03⋇\x0aamondsuit;\x03♦\x06amond;\x03⋄\x06gamma;\x02ϝ\x05vide;\x02÷\x05vonx;\x03⋇\x04ams;\x03♦\x04sin;\x03⋲\x04vide\x02÷\x03am;\x03⋄\x02e;\x02¨\x02v;\x02÷", + // djcy;[ђ]. + "\x03cy;\x02ђ", + // dlcorn;[⌞] dlcrop;[⌍]. + "\x05corn;\x03⌞\x05crop;\x03⌍", + // downharpoonright;[⇂] downharpoonleft;[⇃] doublebarwedge;[⌆] downdownarrows;[⇊] dotsquare;[⊡] downarrow;[↓] doteqdot;[≑] dotminus;[∸] dotplus;[∔] dollar;[$] doteq;[≐] dopf;[𝕕] dot;[˙]. + "\x0fwnharpoonright;\x03⇂\x0ewnharpoonleft;\x03⇃\x0dublebarwedge;\x03⌆\x0dwndownarrows;\x03⇊\x08tsquare;\x03⊡\x08wnarrow;\x03↓\x07teqdot;\x03≑\x07tminus;\x03∸\x06tplus;\x03∔\x05llar;\x01$\x04teq;\x03≐\x03pf;\x04𝕕\x02t;\x02˙", + // drbkarow;[⤐] drcorn;[⌟] drcrop;[⌌]. + "\x07bkarow;\x03⤐\x05corn;\x03⌟\x05crop;\x03⌌", + // dstrok;[đ] dscr;[𝒹] dscy;[ѕ] dsol;[⧶]. + "\x05trok;\x02đ\x03cr;\x04𝒹\x03cy;\x02ѕ\x03ol;\x03⧶", + // dtdot;[⋱] dtrif;[▾] dtri;[▿]. + "\x04dot;\x03⋱\x04rif;\x03▾\x03ri;\x03▿", + // duarr;[⇵] duhar;[⥯]. + "\x04arr;\x03⇵\x04har;\x03⥯", + // dwangle;[⦦]. + "\x06angle;\x03⦦", + // dzigrarr;[⟿] dzcy;[џ]. + "\x07igrarr;\x03⟿\x03cy;\x02џ", + // eDDot;[⩷] eDot;[≑]. + "\x04Dot;\x03⩷\x03ot;\x03≑", + // eacute;[é] easter;[⩮] eacute[é]. + "\x05cute;\x02é\x05ster;\x03⩮\x04cute\x02é", + // ecaron;[ě] ecolon;[≕] ecirc;[ê] ecir;[≖] ecirc[ê] ecy;[э]. + "\x05aron;\x02ě\x05olon;\x03≕\x04irc;\x02ê\x03ir;\x03≖\x03irc\x02ê\x02y;\x02э", + // edot;[ė]. + "\x03ot;\x02ė", + // ee;[ⅇ]. + "\x01;\x03ⅇ", + // efDot;[≒] efr;[𝔢]. + "\x04Dot;\x03≒\x02r;\x04𝔢", + // egrave;[è] egsdot;[⪘] egrave[è] egs;[⪖] eg;[⪚]. + "\x05rave;\x02è\x05sdot;\x03⪘\x04rave\x02è\x02s;\x03⪖\x01;\x03⪚", + // elinters;[⏧] elsdot;[⪗] ell;[ℓ] els;[⪕] el;[⪙]. + "\x07inters;\x03⏧\x05sdot;\x03⪗\x02l;\x03ℓ\x02s;\x03⪕\x01;\x03⪙", + // emptyset;[∅] emptyv;[∅] emsp13;[ ] emsp14;[ ] emacr;[ē] empty;[∅] emsp;[ ]. + "\x07ptyset;\x03∅\x05ptyv;\x03∅\x05sp13;\x03 \x05sp14;\x03 \x04acr;\x02ē\x04pty;\x03∅\x03sp;\x03 ", + // ensp;[ ] eng;[ŋ]. + "\x03sp;\x03 \x02g;\x02ŋ", + // eogon;[ę] eopf;[𝕖]. + "\x04gon;\x02ę\x03pf;\x04𝕖", + // epsilon;[ε] eparsl;[⧣] eplus;[⩱] epsiv;[ϵ] epar;[⋕] epsi;[ε]. + "\x06silon;\x02ε\x05arsl;\x03⧣\x04lus;\x03⩱\x04siv;\x02ϵ\x03ar;\x03⋕\x03si;\x02ε", + // eqslantless;[⪕] eqslantgtr;[⪖] eqvparsl;[⧥] eqcolon;[≕] equivDD;[⩸] eqcirc;[≖] equals;[=] equest;[≟] eqsim;[≂] equiv;[≡]. + "\x0aslantless;\x03⪕\x09slantgtr;\x03⪖\x07vparsl;\x03⧥\x06colon;\x03≕\x06uivDD;\x03⩸\x05circ;\x03≖\x05uals;\x01=\x05uest;\x03≟\x04sim;\x03≂\x04uiv;\x03≡", + // erDot;[≓] erarr;[⥱]. + "\x04Dot;\x03≓\x04arr;\x03⥱", + // esdot;[≐] escr;[ℯ] esim;[≂]. + "\x04dot;\x03≐\x03cr;\x03ℯ\x03im;\x03≂", + // eta;[η] eth;[ð] eth[ð]. + "\x02a;\x02η\x02h;\x02ð\x01h\x02ð", + // euml;[ë] euro;[€] euml[ë]. + "\x03ml;\x02ë\x03ro;\x03€\x02ml\x02ë", + // exponentiale;[ⅇ] expectation;[ℰ] exist;[∃] excl;[!]. + "\x0bponentiale;\x03ⅇ\x0apectation;\x03ℰ\x04ist;\x03∃\x03cl;\x01!", + // fallingdotseq;[≒]. + "\x0cllingdotseq;\x03≒", + // fcy;[ф]. + "\x02y;\x02ф", + // female;[♀]. + "\x05male;\x03♀", + // ffilig;[ffi] ffllig;[ffl] fflig;[ff] ffr;[𝔣]. + "\x05ilig;\x03ffi\x05llig;\x03ffl\x04lig;\x03ff\x02r;\x04𝔣", + // filig;[fi]. + "\x04lig;\x03fi", + // fjlig;[fj]. + "\x04lig;\x02fj", + // fllig;[fl] fltns;[▱] flat;[♭]. + "\x04lig;\x03fl\x04tns;\x03▱\x03at;\x03♭", + // fnof;[ƒ]. + "\x03of;\x02ƒ", + // forall;[∀] forkv;[⫙] fopf;[𝕗] fork;[⋔]. + "\x05rall;\x03∀\x04rkv;\x03⫙\x03pf;\x04𝕗\x03rk;\x03⋔", + // fpartint;[⨍]. + "\x07artint;\x03⨍", + // frac12;[½] frac13;[⅓] frac14;[¼] frac15;[⅕] frac16;[⅙] frac18;[⅛] frac23;[⅔] frac25;[⅖] frac34;[¾] frac35;[⅗] frac38;[⅜] frac45;[⅘] frac56;[⅚] frac58;[⅝] frac78;[⅞] frac12[½] frac14[¼] frac34[¾] frasl;[⁄] frown;[⌢]. + "\x05ac12;\x02½\x05ac13;\x03⅓\x05ac14;\x02¼\x05ac15;\x03⅕\x05ac16;\x03⅙\x05ac18;\x03⅛\x05ac23;\x03⅔\x05ac25;\x03⅖\x05ac34;\x02¾\x05ac35;\x03⅗\x05ac38;\x03⅜\x05ac45;\x03⅘\x05ac56;\x03⅚\x05ac58;\x03⅝\x05ac78;\x03⅞\x04ac12\x02½\x04ac14\x02¼\x04ac34\x02¾\x04asl;\x03⁄\x04own;\x03⌢", + // fscr;[𝒻]. + "\x03cr;\x04𝒻", + // gEl;[⪌] gE;[≧]. + "\x02l;\x03⪌\x01;\x03≧", + // gacute;[ǵ] gammad;[ϝ] gamma;[γ] gap;[⪆]. + "\x05cute;\x02ǵ\x05mmad;\x02ϝ\x04mma;\x02γ\x02p;\x03⪆", + // gbreve;[ğ]. + "\x05reve;\x02ğ", + // gcirc;[ĝ] gcy;[г]. + "\x04irc;\x02ĝ\x02y;\x02г", + // gdot;[ġ]. + "\x03ot;\x02ġ", + // geqslant;[⩾] gesdotol;[⪄] gesdoto;[⪂] gesdot;[⪀] gesles;[⪔] gescc;[⪩] geqq;[≧] gesl;[⋛︀] gel;[⋛] geq;[≥] ges;[⩾] ge;[≥]. + "\x07qslant;\x03⩾\x07sdotol;\x03⪄\x06sdoto;\x03⪂\x05sdot;\x03⪀\x05sles;\x03⪔\x04scc;\x03⪩\x03qq;\x03≧\x03sl;\x06⋛︀\x02l;\x03⋛\x02q;\x03≥\x02s;\x03⩾\x01;\x03≥", + // gfr;[𝔤]. + "\x02r;\x04𝔤", + // ggg;[⋙] gg;[≫]. + "\x02g;\x03⋙\x01;\x03≫", + // gimel;[ℷ]. + "\x04mel;\x03ℷ", + // gjcy;[ѓ]. + "\x03cy;\x02ѓ", + // glE;[⪒] gla;[⪥] glj;[⪤] gl;[≷]. + "\x02E;\x03⪒\x02a;\x03⪥\x02j;\x03⪤\x01;\x03≷", + // gnapprox;[⪊] gneqq;[≩] gnsim;[⋧] gnap;[⪊] gneq;[⪈] gnE;[≩] gne;[⪈]. + "\x07approx;\x03⪊\x04eqq;\x03≩\x04sim;\x03⋧\x03ap;\x03⪊\x03eq;\x03⪈\x02E;\x03≩\x02e;\x03⪈", + // gopf;[𝕘]. + "\x03pf;\x04𝕘", + // grave;[`]. + "\x04ave;\x01`", + // gsime;[⪎] gsiml;[⪐] gscr;[ℊ] gsim;[≳]. + "\x04ime;\x03⪎\x04iml;\x03⪐\x03cr;\x03ℊ\x03im;\x03≳", + // gtreqqless;[⪌] gtrapprox;[⪆] gtreqless;[⋛] gtquest;[⩼] gtrless;[≷] gtlPar;[⦕] gtrarr;[⥸] gtrdot;[⋗] gtrsim;[≳] gtcir;[⩺] gtdot;[⋗] gtcc;[⪧] gt;[>]. + "\x09reqqless;\x03⪌\x08rapprox;\x03⪆\x08reqless;\x03⋛\x06quest;\x03⩼\x06rless;\x03≷\x05lPar;\x03⦕\x05rarr;\x03⥸\x05rdot;\x03⋗\x05rsim;\x03≳\x04cir;\x03⩺\x04dot;\x03⋗\x03cc;\x03⪧\x01;\x01>", + // gvertneqq;[≩︀] gvnE;[≩︀]. + "\x08ertneqq;\x06≩︀\x03nE;\x06≩︀", + // hArr;[⇔]. + "\x03rr;\x03⇔", + // harrcir;[⥈] hairsp;[ ] hamilt;[ℋ] hardcy;[ъ] harrw;[↭] half;[½] harr;[↔]. + "\x06rrcir;\x03⥈\x05irsp;\x03 \x05milt;\x03ℋ\x05rdcy;\x02ъ\x04rrw;\x03↭\x03lf;\x02½\x03rr;\x03↔", + // hbar;[ℏ]. + "\x03ar;\x03ℏ", + // hcirc;[ĥ]. + "\x04irc;\x02ĥ", + // heartsuit;[♥] hearts;[♥] hellip;[…] hercon;[⊹]. + "\x08artsuit;\x03♥\x05arts;\x03♥\x05llip;\x03…\x05rcon;\x03⊹", + // hfr;[𝔥]. + "\x02r;\x04𝔥", + // hksearow;[⤥] hkswarow;[⤦]. + "\x07searow;\x03⤥\x07swarow;\x03⤦", + // hookrightarrow;[↪] hookleftarrow;[↩] homtht;[∻] horbar;[―] hoarr;[⇿] hopf;[𝕙]. + "\x0dokrightarrow;\x03↪\x0cokleftarrow;\x03↩\x05mtht;\x03∻\x05rbar;\x03―\x04arr;\x03⇿\x03pf;\x04𝕙", + // hslash;[ℏ] hstrok;[ħ] hscr;[𝒽]. + "\x05lash;\x03ℏ\x05trok;\x02ħ\x03cr;\x04𝒽", + // hybull;[⁃] hyphen;[‐]. + "\x05bull;\x03⁃\x05phen;\x03‐", + // iacute;[í] iacute[í]. + "\x05cute;\x02í\x04cute\x02í", + // icirc;[î] icirc[î] icy;[и] ic;[⁣]. + "\x04irc;\x02î\x03irc\x02î\x02y;\x02и\x01;\x03⁣", + // iexcl;[¡] iecy;[е] iexcl[¡]. + "\x04xcl;\x02¡\x03cy;\x02е\x03xcl\x02¡", + // iff;[⇔] ifr;[𝔦]. + "\x02f;\x03⇔\x02r;\x04𝔦", + // igrave;[ì] igrave[ì]. + "\x05rave;\x02ì\x04rave\x02ì", + // iiiint;[⨌] iinfin;[⧜] iiint;[∭] iiota;[℩] ii;[ⅈ]. + "\x05iint;\x03⨌\x05nfin;\x03⧜\x04int;\x03∭\x04ota;\x03℩\x01;\x03ⅈ", + // ijlig;[ij]. + "\x04lig;\x02ij", + // imagline;[ℐ] imagpart;[ℑ] imacr;[ī] image;[ℑ] imath;[ı] imped;[Ƶ] imof;[⊷]. + "\x07agline;\x03ℐ\x07agpart;\x03ℑ\x04acr;\x02ī\x04age;\x03ℑ\x04ath;\x02ı\x04ped;\x02Ƶ\x03of;\x03⊷", + // infintie;[⧝] integers;[ℤ] intercal;[⊺] intlarhk;[⨗] intprod;[⨼] incare;[℅] inodot;[ı] intcal;[⊺] infin;[∞] int;[∫] in;[∈]. + "\x07fintie;\x03⧝\x07tegers;\x03ℤ\x07tercal;\x03⊺\x07tlarhk;\x03⨗\x06tprod;\x03⨼\x05care;\x03℅\x05odot;\x02ı\x05tcal;\x03⊺\x04fin;\x03∞\x02t;\x03∫\x01;\x03∈", + // iogon;[į] iocy;[ё] iopf;[𝕚] iota;[ι]. + "\x04gon;\x02į\x03cy;\x02ё\x03pf;\x04𝕚\x03ta;\x02ι", + // iprod;[⨼]. + "\x04rod;\x03⨼", + // iquest;[¿] iquest[¿]. + "\x05uest;\x02¿\x04uest\x02¿", + // isindot;[⋵] isinsv;[⋳] isinE;[⋹] isins;[⋴] isinv;[∈] iscr;[𝒾] isin;[∈]. + "\x06indot;\x03⋵\x05insv;\x03⋳\x04inE;\x03⋹\x04ins;\x03⋴\x04inv;\x03∈\x03cr;\x04𝒾\x03in;\x03∈", + // itilde;[ĩ] it;[⁢]. + "\x05ilde;\x02ĩ\x01;\x03⁢", + // iukcy;[і] iuml;[ï] iuml[ï]. + "\x04kcy;\x02і\x03ml;\x02ï\x02ml\x02ï", + // jcirc;[ĵ] jcy;[й]. + "\x04irc;\x02ĵ\x02y;\x02й", + // jfr;[𝔧]. + "\x02r;\x04𝔧", + // jmath;[ȷ]. + "\x04ath;\x02ȷ", + // jopf;[𝕛]. + "\x03pf;\x04𝕛", + // jsercy;[ј] jscr;[𝒿]. + "\x05ercy;\x02ј\x03cr;\x04𝒿", + // jukcy;[є]. + "\x04kcy;\x02є", + // kappav;[ϰ] kappa;[κ]. + "\x05ppav;\x02ϰ\x04ppa;\x02κ", + // kcedil;[ķ] kcy;[к]. + "\x05edil;\x02ķ\x02y;\x02к", + // kfr;[𝔨]. + "\x02r;\x04𝔨", + // kgreen;[ĸ]. + "\x05reen;\x02ĸ", + // khcy;[х]. + "\x03cy;\x02х", + // kjcy;[ќ]. + "\x03cy;\x02ќ", + // kopf;[𝕜]. + "\x03pf;\x04𝕜", + // kscr;[𝓀]. + "\x03cr;\x04𝓀", + // lAtail;[⤛] lAarr;[⇚] lArr;[⇐]. + "\x05tail;\x03⤛\x04arr;\x03⇚\x03rr;\x03⇐", + // lBarr;[⤎]. + "\x04arr;\x03⤎", + // lEg;[⪋] lE;[≦]. + "\x02g;\x03⪋\x01;\x03≦", + // lHar;[⥢]. + "\x03ar;\x03⥢", + // laemptyv;[⦴] larrbfs;[⤟] larrsim;[⥳] lacute;[ĺ] lagran;[ℒ] lambda;[λ] langle;[⟨] larrfs;[⤝] larrhk;[↩] larrlp;[↫] larrpl;[⤹] larrtl;[↢] latail;[⤙] langd;[⦑] laquo;[«] larrb;[⇤] lates;[⪭︀] lang;[⟨] laquo[«] larr;[←] late;[⪭] lap;[⪅] lat;[⪫]. + "\x07emptyv;\x03⦴\x06rrbfs;\x03⤟\x06rrsim;\x03⥳\x05cute;\x02ĺ\x05gran;\x03ℒ\x05mbda;\x02λ\x05ngle;\x03⟨\x05rrfs;\x03⤝\x05rrhk;\x03↩\x05rrlp;\x03↫\x05rrpl;\x03⤹\x05rrtl;\x03↢\x05tail;\x03⤙\x04ngd;\x03⦑\x04quo;\x02«\x04rrb;\x03⇤\x04tes;\x06⪭︀\x03ng;\x03⟨\x03quo\x02«\x03rr;\x03←\x03te;\x03⪭\x02p;\x03⪅\x02t;\x03⪫", + // lbrksld;[⦏] lbrkslu;[⦍] lbrace;[{] lbrack;[[] lbarr;[⤌] lbbrk;[❲] lbrke;[⦋]. + "\x06rksld;\x03⦏\x06rkslu;\x03⦍\x05race;\x01{\x05rack;\x01[\x04arr;\x03⤌\x04brk;\x03❲\x04rke;\x03⦋", + // lcaron;[ľ] lcedil;[ļ] lceil;[⌈] lcub;[{] lcy;[л]. + "\x05aron;\x02ľ\x05edil;\x02ļ\x04eil;\x03⌈\x03ub;\x01{\x02y;\x02л", + // ldrushar;[⥋] ldrdhar;[⥧] ldquor;[„] ldquo;[“] ldca;[⤶] ldsh;[↲]. + "\x07rushar;\x03⥋\x06rdhar;\x03⥧\x05quor;\x03„\x04quo;\x03“\x03ca;\x03⤶\x03sh;\x03↲", + // leftrightsquigarrow;[↭] leftrightharpoons;[⇋] leftharpoondown;[↽] leftrightarrows;[⇆] leftleftarrows;[⇇] leftrightarrow;[↔] leftthreetimes;[⋋] leftarrowtail;[↢] leftharpoonup;[↼] lessapprox;[⪅] lesseqqgtr;[⪋] leftarrow;[←] lesseqgtr;[⋚] leqslant;[⩽] lesdotor;[⪃] lesdoto;[⪁] lessdot;[⋖] lessgtr;[≶] lesssim;[≲] lesdot;[⩿] lesges;[⪓] lescc;[⪨] leqq;[≦] lesg;[⋚︀] leg;[⋚] leq;[≤] les;[⩽] le;[≤]. + "\x12ftrightsquigarrow;\x03↭\x10ftrightharpoons;\x03⇋\x0eftharpoondown;\x03↽\x0eftrightarrows;\x03⇆\x0dftleftarrows;\x03⇇\x0dftrightarrow;\x03↔\x0dftthreetimes;\x03⋋\x0cftarrowtail;\x03↢\x0cftharpoonup;\x03↼\x09ssapprox;\x03⪅\x09sseqqgtr;\x03⪋\x08ftarrow;\x03←\x08sseqgtr;\x03⋚\x07qslant;\x03⩽\x07sdotor;\x03⪃\x06sdoto;\x03⪁\x06ssdot;\x03⋖\x06ssgtr;\x03≶\x06sssim;\x03≲\x05sdot;\x03⩿\x05sges;\x03⪓\x04scc;\x03⪨\x03qq;\x03≦\x03sg;\x06⋚︀\x02g;\x03⋚\x02q;\x03≤\x02s;\x03⩽\x01;\x03≤", + // lfisht;[⥼] lfloor;[⌊] lfr;[𝔩]. + "\x05isht;\x03⥼\x05loor;\x03⌊\x02r;\x04𝔩", + // lgE;[⪑] lg;[≶]. + "\x02E;\x03⪑\x01;\x03≶", + // lharul;[⥪] lhard;[↽] lharu;[↼] lhblk;[▄]. + "\x05arul;\x03⥪\x04ard;\x03↽\x04aru;\x03↼\x04blk;\x03▄", + // ljcy;[љ]. + "\x03cy;\x02љ", + // llcorner;[⌞] llhard;[⥫] llarr;[⇇] lltri;[◺] ll;[≪]. + "\x07corner;\x03⌞\x05hard;\x03⥫\x04arr;\x03⇇\x04tri;\x03◺\x01;\x03≪", + // lmoustache;[⎰] lmidot;[ŀ] lmoust;[⎰]. + "\x09oustache;\x03⎰\x05idot;\x02ŀ\x05oust;\x03⎰", + // lnapprox;[⪉] lneqq;[≨] lnsim;[⋦] lnap;[⪉] lneq;[⪇] lnE;[≨] lne;[⪇]. + "\x07approx;\x03⪉\x04eqq;\x03≨\x04sim;\x03⋦\x03ap;\x03⪉\x03eq;\x03⪇\x02E;\x03≨\x02e;\x03⪇", + // longleftrightarrow;[⟷] longrightarrow;[⟶] looparrowright;[↬] longleftarrow;[⟵] looparrowleft;[↫] longmapsto;[⟼] lotimes;[⨴] lozenge;[◊] loplus;[⨭] lowast;[∗] lowbar;[_] loang;[⟬] loarr;[⇽] lobrk;[⟦] lopar;[⦅] lopf;[𝕝] lozf;[⧫] loz;[◊]. + "\x11ngleftrightarrow;\x03⟷\x0dngrightarrow;\x03⟶\x0doparrowright;\x03↬\x0cngleftarrow;\x03⟵\x0coparrowleft;\x03↫\x09ngmapsto;\x03⟼\x06times;\x03⨴\x06zenge;\x03◊\x05plus;\x03⨭\x05wast;\x03∗\x05wbar;\x01_\x04ang;\x03⟬\x04arr;\x03⇽\x04brk;\x03⟦\x04par;\x03⦅\x03pf;\x04𝕝\x03zf;\x03⧫\x02z;\x03◊", + // lparlt;[⦓] lpar;[(]. + "\x05arlt;\x03⦓\x03ar;\x01(", + // lrcorner;[⌟] lrhard;[⥭] lrarr;[⇆] lrhar;[⇋] lrtri;[⊿] lrm;[‎]. + "\x07corner;\x03⌟\x05hard;\x03⥭\x04arr;\x03⇆\x04har;\x03⇋\x04tri;\x03⊿\x02m;\x03‎", + // lsaquo;[‹] lsquor;[‚] lstrok;[ł] lsime;[⪍] lsimg;[⪏] lsquo;[‘] lscr;[𝓁] lsim;[≲] lsqb;[[] lsh;[↰]. + "\x05aquo;\x03‹\x05quor;\x03‚\x05trok;\x02ł\x04ime;\x03⪍\x04img;\x03⪏\x04quo;\x03‘\x03cr;\x04𝓁\x03im;\x03≲\x03qb;\x01[\x02h;\x03↰", + // ltquest;[⩻] lthree;[⋋] ltimes;[⋉] ltlarr;[⥶] ltrPar;[⦖] ltcir;[⩹] ltdot;[⋖] ltrie;[⊴] ltrif;[◂] ltcc;[⪦] ltri;[◃] lt;[<]. + "\x06quest;\x03⩻\x05hree;\x03⋋\x05imes;\x03⋉\x05larr;\x03⥶\x05rPar;\x03⦖\x04cir;\x03⩹\x04dot;\x03⋖\x04rie;\x03⊴\x04rif;\x03◂\x03cc;\x03⪦\x03ri;\x03◃\x01;\x01<", + // lurdshar;[⥊] luruhar;[⥦]. + "\x07rdshar;\x03⥊\x06ruhar;\x03⥦", + // lvertneqq;[≨︀] lvnE;[≨︀]. + "\x08ertneqq;\x06≨︀\x03nE;\x06≨︀", + // mDDot;[∺]. + "\x04Dot;\x03∺", + // mapstodown;[↧] mapstoleft;[↤] mapstoup;[↥] maltese;[✠] mapsto;[↦] marker;[▮] macr;[¯] male;[♂] malt;[✠] macr[¯] map;[↦]. + "\x09pstodown;\x03↧\x09pstoleft;\x03↤\x07pstoup;\x03↥\x06ltese;\x03✠\x05psto;\x03↦\x05rker;\x03▮\x03cr;\x02¯\x03le;\x03♂\x03lt;\x03✠\x02cr\x02¯\x02p;\x03↦", + // mcomma;[⨩] mcy;[м]. + "\x05omma;\x03⨩\x02y;\x02м", + // mdash;[—]. + "\x04ash;\x03—", + // measuredangle;[∡]. + "\x0casuredangle;\x03∡", + // mfr;[𝔪]. + "\x02r;\x04𝔪", + // mho;[℧]. + "\x02o;\x03℧", + // minusdu;[⨪] midast;[*] midcir;[⫰] middot;[·] minusb;[⊟] minusd;[∸] micro;[µ] middot[·] minus;[−] micro[µ] mid;[∣]. + "\x06nusdu;\x03⨪\x05dast;\x01*\x05dcir;\x03⫰\x05ddot;\x02·\x05nusb;\x03⊟\x05nusd;\x03∸\x04cro;\x02µ\x04ddot\x02·\x04nus;\x03−\x03cro\x02µ\x02d;\x03∣", + // mlcp;[⫛] mldr;[…]. + "\x03cp;\x03⫛\x03dr;\x03…", + // mnplus;[∓]. + "\x05plus;\x03∓", + // models;[⊧] mopf;[𝕞]. + "\x05dels;\x03⊧\x03pf;\x04𝕞", + // mp;[∓]. + "\x01;\x03∓", + // mstpos;[∾] mscr;[𝓂]. + "\x05tpos;\x03∾\x03cr;\x04𝓂", + // multimap;[⊸] mumap;[⊸] mu;[μ]. + "\x07ltimap;\x03⊸\x04map;\x03⊸\x01;\x02μ", + // nGtv;[≫̸] nGg;[⋙̸] nGt;[≫⃒]. + "\x03tv;\x05≫̸\x02g;\x05⋙̸\x02t;\x06≫⃒", + // nLeftrightarrow;[⇎] nLeftarrow;[⇍] nLtv;[≪̸] nLl;[⋘̸] nLt;[≪⃒]. + "\x0eeftrightarrow;\x03⇎\x09eftarrow;\x03⇍\x03tv;\x05≪̸\x02l;\x05⋘̸\x02t;\x06≪⃒", + // nRightarrow;[⇏]. + "\x0aightarrow;\x03⇏", + // nVDash;[⊯] nVdash;[⊮]. + "\x05Dash;\x03⊯\x05dash;\x03⊮", + // naturals;[ℕ] napprox;[≉] natural;[♮] nacute;[ń] nabla;[∇] napid;[≋̸] napos;[ʼn] natur;[♮] nang;[∠⃒] napE;[⩰̸] nap;[≉]. + "\x07turals;\x03ℕ\x06pprox;\x03≉\x06tural;\x03♮\x05cute;\x02ń\x04bla;\x03∇\x04pid;\x05≋̸\x04pos;\x02ʼn\x04tur;\x03♮\x03ng;\x06∠⃒\x03pE;\x05⩰̸\x02p;\x03≉", + // nbumpe;[≏̸] nbump;[≎̸] nbsp;[ ] nbsp[ ]. + "\x05umpe;\x05≏̸\x04ump;\x05≎̸\x03sp;\x02 \x02sp\x02 ", + // ncongdot;[⩭̸] ncaron;[ň] ncedil;[ņ] ncong;[≇] ncap;[⩃] ncup;[⩂] ncy;[н]. + "\x07ongdot;\x05⩭̸\x05aron;\x02ň\x05edil;\x02ņ\x04ong;\x03≇\x03ap;\x03⩃\x03up;\x03⩂\x02y;\x02н", + // ndash;[–]. + "\x04ash;\x03–", + // nearrow;[↗] nexists;[∄] nearhk;[⤤] nequiv;[≢] nesear;[⤨] nexist;[∄] neArr;[⇗] nearr;[↗] nedot;[≐̸] nesim;[≂̸] ne;[≠]. + "\x06arrow;\x03↗\x06xists;\x03∄\x05arhk;\x03⤤\x05quiv;\x03≢\x05sear;\x03⤨\x05xist;\x03∄\x04Arr;\x03⇗\x04arr;\x03↗\x04dot;\x05≐̸\x04sim;\x05≂̸\x01;\x03≠", + // nfr;[𝔫]. + "\x02r;\x04𝔫", + // ngeqslant;[⩾̸] ngeqq;[≧̸] ngsim;[≵] ngeq;[≱] nges;[⩾̸] ngtr;[≯] ngE;[≧̸] nge;[≱] ngt;[≯]. + "\x08eqslant;\x05⩾̸\x04eqq;\x05≧̸\x04sim;\x03≵\x03eq;\x03≱\x03es;\x05⩾̸\x03tr;\x03≯\x02E;\x05≧̸\x02e;\x03≱\x02t;\x03≯", + // nhArr;[⇎] nharr;[↮] nhpar;[⫲]. + "\x04Arr;\x03⇎\x04arr;\x03↮\x04par;\x03⫲", + // nisd;[⋺] nis;[⋼] niv;[∋] ni;[∋]. + "\x03sd;\x03⋺\x02s;\x03⋼\x02v;\x03∋\x01;\x03∋", + // njcy;[њ]. + "\x03cy;\x02њ", + // nleftrightarrow;[↮] nleftarrow;[↚] nleqslant;[⩽̸] nltrie;[⋬] nlArr;[⇍] nlarr;[↚] nleqq;[≦̸] nless;[≮] nlsim;[≴] nltri;[⋪] nldr;[‥] nleq;[≰] nles;[⩽̸] nlE;[≦̸] nle;[≰] nlt;[≮]. + "\x0eeftrightarrow;\x03↮\x09eftarrow;\x03↚\x08eqslant;\x05⩽̸\x05trie;\x03⋬\x04Arr;\x03⇍\x04arr;\x03↚\x04eqq;\x05≦̸\x04ess;\x03≮\x04sim;\x03≴\x04tri;\x03⋪\x03dr;\x03‥\x03eq;\x03≰\x03es;\x05⩽̸\x02E;\x05≦̸\x02e;\x03≰\x02t;\x03≮", + // nmid;[∤]. + "\x03id;\x03∤", + // notindot;[⋵̸] notinva;[∉] notinvb;[⋷] notinvc;[⋶] notniva;[∌] notnivb;[⋾] notnivc;[⋽] notinE;[⋹̸] notin;[∉] notni;[∌] nopf;[𝕟] not;[¬] not[¬]. + "\x07tindot;\x05⋵̸\x06tinva;\x03∉\x06tinvb;\x03⋷\x06tinvc;\x03⋶\x06tniva;\x03∌\x06tnivb;\x03⋾\x06tnivc;\x03⋽\x05tinE;\x05⋹̸\x04tin;\x03∉\x04tni;\x03∌\x03pf;\x04𝕟\x02t;\x02¬\x01t\x02¬", + // nparallel;[∦] npolint;[⨔] npreceq;[⪯̸] nparsl;[⫽⃥] nprcue;[⋠] npart;[∂̸] nprec;[⊀] npar;[∦] npre;[⪯̸] npr;[⊀]. + "\x08arallel;\x03∦\x06olint;\x03⨔\x06receq;\x05⪯̸\x05arsl;\x06⫽⃥\x05rcue;\x03⋠\x04art;\x05∂̸\x04rec;\x03⊀\x03ar;\x03∦\x03re;\x05⪯̸\x02r;\x03⊀", + // nrightarrow;[↛] nrarrc;[⤳̸] nrarrw;[↝̸] nrtrie;[⋭] nrArr;[⇏] nrarr;[↛] nrtri;[⋫]. + "\x0aightarrow;\x03↛\x05arrc;\x05⤳̸\x05arrw;\x05↝̸\x05trie;\x03⋭\x04Arr;\x03⇏\x04arr;\x03↛\x04tri;\x03⋫", + // nshortparallel;[∦] nsubseteqq;[⫅̸] nsupseteqq;[⫆̸] nshortmid;[∤] nsubseteq;[⊈] nsupseteq;[⊉] nsqsube;[⋢] nsqsupe;[⋣] nsubset;[⊂⃒] nsucceq;[⪰̸] nsupset;[⊃⃒] nsccue;[⋡] nsimeq;[≄] nsime;[≄] nsmid;[∤] nspar;[∦] nsubE;[⫅̸] nsube;[⊈] nsucc;[⊁] nsupE;[⫆̸] nsupe;[⊉] nsce;[⪰̸] nscr;[𝓃] nsim;[≁] nsub;[⊄] nsup;[⊅] nsc;[⊁]. + "\x0dhortparallel;\x03∦\x09ubseteqq;\x05⫅̸\x09upseteqq;\x05⫆̸\x08hortmid;\x03∤\x08ubseteq;\x03⊈\x08upseteq;\x03⊉\x06qsube;\x03⋢\x06qsupe;\x03⋣\x06ubset;\x06⊂⃒\x06ucceq;\x05⪰̸\x06upset;\x06⊃⃒\x05ccue;\x03⋡\x05imeq;\x03≄\x04ime;\x03≄\x04mid;\x03∤\x04par;\x03∦\x04ubE;\x05⫅̸\x04ube;\x03⊈\x04ucc;\x03⊁\x04upE;\x05⫆̸\x04upe;\x03⊉\x03ce;\x05⪰̸\x03cr;\x04𝓃\x03im;\x03≁\x03ub;\x03⊄\x03up;\x03⊅\x02c;\x03⊁", + // ntrianglerighteq;[⋭] ntrianglelefteq;[⋬] ntriangleright;[⋫] ntriangleleft;[⋪] ntilde;[ñ] ntilde[ñ] ntgl;[≹] ntlg;[≸]. + "\x0frianglerighteq;\x03⋭\x0erianglelefteq;\x03⋬\x0driangleright;\x03⋫\x0criangleleft;\x03⋪\x05ilde;\x02ñ\x04ilde\x02ñ\x03gl;\x03≹\x03lg;\x03≸", + // numero;[№] numsp;[ ] num;[#] nu;[ν]. + "\x05mero;\x03№\x04msp;\x03 \x02m;\x01#\x01;\x02ν", + // nvinfin;[⧞] nvltrie;[⊴⃒] nvrtrie;[⊵⃒] nvDash;[⊭] nvHarr;[⤄] nvdash;[⊬] nvlArr;[⤂] nvrArr;[⤃] nvsim;[∼⃒] nvap;[≍⃒] nvge;[≥⃒] nvgt;[>⃒] nvle;[≤⃒] nvlt;[<⃒]. + "\x06infin;\x03⧞\x06ltrie;\x06⊴⃒\x06rtrie;\x06⊵⃒\x05Dash;\x03⊭\x05Harr;\x03⤄\x05dash;\x03⊬\x05lArr;\x03⤂\x05rArr;\x03⤃\x04sim;\x06∼⃒\x03ap;\x06≍⃒\x03ge;\x06≥⃒\x03gt;\x04>⃒\x03le;\x06≤⃒\x03lt;\x04<⃒", + // nwarrow;[↖] nwarhk;[⤣] nwnear;[⤧] nwArr;[⇖] nwarr;[↖]. + "\x06arrow;\x03↖\x05arhk;\x03⤣\x05near;\x03⤧\x04Arr;\x03⇖\x04arr;\x03↖", + // oS;[Ⓢ]. + "\x01;\x03Ⓢ", + // oacute;[ó] oacute[ó] oast;[⊛]. + "\x05cute;\x02ó\x04cute\x02ó\x03st;\x03⊛", + // ocirc;[ô] ocir;[⊚] ocirc[ô] ocy;[о]. + "\x04irc;\x02ô\x03ir;\x03⊚\x03irc\x02ô\x02y;\x02о", + // odblac;[ő] odsold;[⦼] odash;[⊝] odiv;[⨸] odot;[⊙]. + "\x05blac;\x02ő\x05sold;\x03⦼\x04ash;\x03⊝\x03iv;\x03⨸\x03ot;\x03⊙", + // oelig;[œ]. + "\x04lig;\x02œ", + // ofcir;[⦿] ofr;[𝔬]. + "\x04cir;\x03⦿\x02r;\x04𝔬", + // ograve;[ò] ograve[ò] ogon;[˛] ogt;[⧁]. + "\x05rave;\x02ò\x04rave\x02ò\x03on;\x02˛\x02t;\x03⧁", + // ohbar;[⦵] ohm;[Ω]. + "\x04bar;\x03⦵\x02m;\x02Ω", + // oint;[∮]. + "\x03nt;\x03∮", + // olcross;[⦻] olarr;[↺] olcir;[⦾] oline;[‾] olt;[⧀]. + "\x06cross;\x03⦻\x04arr;\x03↺\x04cir;\x03⦾\x04ine;\x03‾\x02t;\x03⧀", + // omicron;[ο] ominus;[⊖] omacr;[ō] omega;[ω] omid;[⦶]. + "\x06icron;\x02ο\x05inus;\x03⊖\x04acr;\x02ō\x04ega;\x02ω\x03id;\x03⦶", + // oopf;[𝕠]. + "\x03pf;\x04𝕠", + // operp;[⦹] oplus;[⊕] opar;[⦷]. + "\x04erp;\x03⦹\x04lus;\x03⊕\x03ar;\x03⦷", + // orderof;[ℴ] orslope;[⩗] origof;[⊶] orarr;[↻] order;[ℴ] ordf;[ª] ordm;[º] oror;[⩖] ord;[⩝] ordf[ª] ordm[º] orv;[⩛] or;[∨]. + "\x06derof;\x03ℴ\x06slope;\x03⩗\x05igof;\x03⊶\x04arr;\x03↻\x04der;\x03ℴ\x03df;\x02ª\x03dm;\x02º\x03or;\x03⩖\x02d;\x03⩝\x02df\x02ª\x02dm\x02º\x02v;\x03⩛\x01;\x03∨", + // oslash;[ø] oslash[ø] oscr;[ℴ] osol;[⊘]. + "\x05lash;\x02ø\x04lash\x02ø\x03cr;\x03ℴ\x03ol;\x03⊘", + // otimesas;[⨶] otilde;[õ] otimes;[⊗] otilde[õ]. + "\x07imesas;\x03⨶\x05ilde;\x02õ\x05imes;\x03⊗\x04ilde\x02õ", + // ouml;[ö] ouml[ö]. + "\x03ml;\x02ö\x02ml\x02ö", + // ovbar;[⌽]. + "\x04bar;\x03⌽", + // parallel;[∥] parsim;[⫳] parsl;[⫽] para;[¶] part;[∂] par;[∥] para[¶]. + "\x07rallel;\x03∥\x05rsim;\x03⫳\x04rsl;\x03⫽\x03ra;\x02¶\x03rt;\x03∂\x02r;\x03∥\x02ra\x02¶", + // pcy;[п]. + "\x02y;\x02п", + // pertenk;[‱] percnt;[%] period;[.] permil;[‰] perp;[⊥]. + "\x06rtenk;\x03‱\x05rcnt;\x01%\x05riod;\x01.\x05rmil;\x03‰\x03rp;\x03⊥", + // pfr;[𝔭]. + "\x02r;\x04𝔭", + // phmmat;[ℳ] phone;[☎] phiv;[ϕ] phi;[φ]. + "\x05mmat;\x03ℳ\x04one;\x03☎\x03iv;\x02ϕ\x02i;\x02φ", + // pitchfork;[⋔] piv;[ϖ] pi;[π]. + "\x08tchfork;\x03⋔\x02v;\x02ϖ\x01;\x02π", + // plusacir;[⨣] planckh;[ℎ] pluscir;[⨢] plussim;[⨦] plustwo;[⨧] planck;[ℏ] plankv;[ℏ] plusdo;[∔] plusdu;[⨥] plusmn;[±] plusb;[⊞] pluse;[⩲] plusmn[±] plus;[+]. + "\x07usacir;\x03⨣\x06anckh;\x03ℎ\x06uscir;\x03⨢\x06ussim;\x03⨦\x06ustwo;\x03⨧\x05anck;\x03ℏ\x05ankv;\x03ℏ\x05usdo;\x03∔\x05usdu;\x03⨥\x05usmn;\x02±\x04usb;\x03⊞\x04use;\x03⩲\x04usmn\x02±\x03us;\x01+", + // pm;[±]. + "\x01;\x02±", + // pointint;[⨕] pound;[£] popf;[𝕡] pound[£]. + "\x07intint;\x03⨕\x04und;\x02£\x03pf;\x04𝕡\x03und\x02£", + // preccurlyeq;[≼] precnapprox;[⪹] precapprox;[⪷] precneqq;[⪵] precnsim;[⋨] profalar;[⌮] profline;[⌒] profsurf;[⌓] precsim;[≾] preceq;[⪯] primes;[ℙ] prnsim;[⋨] propto;[∝] prurel;[⊰] prcue;[≼] prime;[′] prnap;[⪹] prsim;[≾] prap;[⪷] prec;[≺] prnE;[⪵] prod;[∏] prop;[∝] prE;[⪳] pre;[⪯] pr;[≺]. + "\x0aeccurlyeq;\x03≼\x0aecnapprox;\x03⪹\x09ecapprox;\x03⪷\x07ecneqq;\x03⪵\x07ecnsim;\x03⋨\x07ofalar;\x03⌮\x07ofline;\x03⌒\x07ofsurf;\x03⌓\x06ecsim;\x03≾\x05eceq;\x03⪯\x05imes;\x03ℙ\x05nsim;\x03⋨\x05opto;\x03∝\x05urel;\x03⊰\x04cue;\x03≼\x04ime;\x03′\x04nap;\x03⪹\x04sim;\x03≾\x03ap;\x03⪷\x03ec;\x03≺\x03nE;\x03⪵\x03od;\x03∏\x03op;\x03∝\x02E;\x03⪳\x02e;\x03⪯\x01;\x03≺", + // pscr;[𝓅] psi;[ψ]. + "\x03cr;\x04𝓅\x02i;\x02ψ", + // puncsp;[ ]. + "\x05ncsp;\x03 ", + // qfr;[𝔮]. + "\x02r;\x04𝔮", + // qint;[⨌]. + "\x03nt;\x03⨌", + // qopf;[𝕢]. + "\x03pf;\x04𝕢", + // qprime;[⁗]. + "\x05rime;\x03⁗", + // qscr;[𝓆]. + "\x03cr;\x04𝓆", + // quaternions;[ℍ] quatint;[⨖] questeq;[≟] quest;[?] quot;[\"] quot[\"]. + "\x0aaternions;\x03ℍ\x06atint;\x03⨖\x06esteq;\x03≟\x04est;\x01?\x03ot;\x01\"\x02ot\x01\"", + // rAtail;[⤜] rAarr;[⇛] rArr;[⇒]. + "\x05tail;\x03⤜\x04arr;\x03⇛\x03rr;\x03⇒", + // rBarr;[⤏]. + "\x04arr;\x03⤏", + // rHar;[⥤]. + "\x03ar;\x03⥤", + // rationals;[ℚ] raemptyv;[⦳] rarrbfs;[⤠] rarrsim;[⥴] racute;[ŕ] rangle;[⟩] rarrap;[⥵] rarrfs;[⤞] rarrhk;[↪] rarrlp;[↬] rarrpl;[⥅] rarrtl;[↣] ratail;[⤚] radic;[√] rangd;[⦒] range;[⦥] raquo;[»] rarrb;[⇥] rarrc;[⤳] rarrw;[↝] ratio;[∶] race;[∽̱] rang;[⟩] raquo[»] rarr;[→]. + "\x08tionals;\x03ℚ\x07emptyv;\x03⦳\x06rrbfs;\x03⤠\x06rrsim;\x03⥴\x05cute;\x02ŕ\x05ngle;\x03⟩\x05rrap;\x03⥵\x05rrfs;\x03⤞\x05rrhk;\x03↪\x05rrlp;\x03↬\x05rrpl;\x03⥅\x05rrtl;\x03↣\x05tail;\x03⤚\x04dic;\x03√\x04ngd;\x03⦒\x04nge;\x03⦥\x04quo;\x02»\x04rrb;\x03⇥\x04rrc;\x03⤳\x04rrw;\x03↝\x04tio;\x03∶\x03ce;\x05∽̱\x03ng;\x03⟩\x03quo\x02»\x03rr;\x03→", + // rbrksld;[⦎] rbrkslu;[⦐] rbrace;[}] rbrack;[]] rbarr;[⤍] rbbrk;[❳] rbrke;[⦌]. + "\x06rksld;\x03⦎\x06rkslu;\x03⦐\x05race;\x01}\x05rack;\x01]\x04arr;\x03⤍\x04brk;\x03❳\x04rke;\x03⦌", + // rcaron;[ř] rcedil;[ŗ] rceil;[⌉] rcub;[}] rcy;[р]. + "\x05aron;\x02ř\x05edil;\x02ŗ\x04eil;\x03⌉\x03ub;\x01}\x02y;\x02р", + // rdldhar;[⥩] rdquor;[”] rdquo;[”] rdca;[⤷] rdsh;[↳]. + "\x06ldhar;\x03⥩\x05quor;\x03”\x04quo;\x03”\x03ca;\x03⤷\x03sh;\x03↳", + // realpart;[ℜ] realine;[ℛ] reals;[ℝ] real;[ℜ] rect;[▭] reg;[®] reg[®]. + "\x07alpart;\x03ℜ\x06aline;\x03ℛ\x04als;\x03ℝ\x03al;\x03ℜ\x03ct;\x03▭\x02g;\x02®\x01g\x02®", + // rfisht;[⥽] rfloor;[⌋] rfr;[𝔯]. + "\x05isht;\x03⥽\x05loor;\x03⌋\x02r;\x04𝔯", + // rharul;[⥬] rhard;[⇁] rharu;[⇀] rhov;[ϱ] rho;[ρ]. + "\x05arul;\x03⥬\x04ard;\x03⇁\x04aru;\x03⇀\x03ov;\x02ϱ\x02o;\x02ρ", + // rightleftharpoons;[⇌] rightharpoondown;[⇁] rightrightarrows;[⇉] rightleftarrows;[⇄] rightsquigarrow;[↝] rightthreetimes;[⋌] rightarrowtail;[↣] rightharpoonup;[⇀] risingdotseq;[≓] rightarrow;[→] ring;[˚]. + "\x10ghtleftharpoons;\x03⇌\x0fghtharpoondown;\x03⇁\x0fghtrightarrows;\x03⇉\x0eghtleftarrows;\x03⇄\x0eghtsquigarrow;\x03↝\x0eghtthreetimes;\x03⋌\x0dghtarrowtail;\x03↣\x0dghtharpoonup;\x03⇀\x0bsingdotseq;\x03≓\x09ghtarrow;\x03→\x03ng;\x02˚", + // rlarr;[⇄] rlhar;[⇌] rlm;[‏]. + "\x04arr;\x03⇄\x04har;\x03⇌\x02m;\x03‏", + // rmoustache;[⎱] rmoust;[⎱]. + "\x09oustache;\x03⎱\x05oust;\x03⎱", + // rnmid;[⫮]. + "\x04mid;\x03⫮", + // rotimes;[⨵] roplus;[⨮] roang;[⟭] roarr;[⇾] robrk;[⟧] ropar;[⦆] ropf;[𝕣]. + "\x06times;\x03⨵\x05plus;\x03⨮\x04ang;\x03⟭\x04arr;\x03⇾\x04brk;\x03⟧\x04par;\x03⦆\x03pf;\x04𝕣", + // rppolint;[⨒] rpargt;[⦔] rpar;[)]. + "\x07polint;\x03⨒\x05argt;\x03⦔\x03ar;\x01)", + // rrarr;[⇉]. + "\x04arr;\x03⇉", + // rsaquo;[›] rsquor;[’] rsquo;[’] rscr;[𝓇] rsqb;[]] rsh;[↱]. + "\x05aquo;\x03›\x05quor;\x03’\x04quo;\x03’\x03cr;\x04𝓇\x03qb;\x01]\x02h;\x03↱", + // rtriltri;[⧎] rthree;[⋌] rtimes;[⋊] rtrie;[⊵] rtrif;[▸] rtri;[▹]. + "\x07riltri;\x03⧎\x05hree;\x03⋌\x05imes;\x03⋊\x04rie;\x03⊵\x04rif;\x03▸\x03ri;\x03▹", + // ruluhar;[⥨]. + "\x06luhar;\x03⥨", + // rx;[℞]. + "\x01;\x03℞", + // sacute;[ś]. + "\x05cute;\x02ś", + // sbquo;[‚]. + "\x04quo;\x03‚", + // scpolint;[⨓] scaron;[š] scedil;[ş] scnsim;[⋩] sccue;[≽] scirc;[ŝ] scnap;[⪺] scsim;[≿] scap;[⪸] scnE;[⪶] scE;[⪴] sce;[⪰] scy;[с] sc;[≻]. + "\x07polint;\x03⨓\x05aron;\x02š\x05edil;\x02ş\x05nsim;\x03⋩\x04cue;\x03≽\x04irc;\x02ŝ\x04nap;\x03⪺\x04sim;\x03≿\x03ap;\x03⪸\x03nE;\x03⪶\x02E;\x03⪴\x02e;\x03⪰\x02y;\x02с\x01;\x03≻", + // sdotb;[⊡] sdote;[⩦] sdot;[⋅]. + "\x04otb;\x03⊡\x04ote;\x03⩦\x03ot;\x03⋅", + // setminus;[∖] searrow;[↘] searhk;[⤥] seswar;[⤩] seArr;[⇘] searr;[↘] setmn;[∖] sect;[§] semi;[;] sext;[✶] sect[§]. + "\x07tminus;\x03∖\x06arrow;\x03↘\x05arhk;\x03⤥\x05swar;\x03⤩\x04Arr;\x03⇘\x04arr;\x03↘\x04tmn;\x03∖\x03ct;\x02§\x03mi;\x01;\x03xt;\x03✶\x02ct\x02§", + // sfrown;[⌢] sfr;[𝔰]. + "\x05rown;\x03⌢\x02r;\x04𝔰", + // shortparallel;[∥] shortmid;[∣] shchcy;[щ] sharp;[♯] shcy;[ш] shy;[­] shy[­]. + "\x0cortparallel;\x03∥\x07ortmid;\x03∣\x05chcy;\x02щ\x04arp;\x03♯\x03cy;\x02ш\x02y;\x02­\x01y\x02­", + // simplus;[⨤] simrarr;[⥲] sigmaf;[ς] sigmav;[ς] simdot;[⩪] sigma;[σ] simeq;[≃] simgE;[⪠] simlE;[⪟] simne;[≆] sime;[≃] simg;[⪞] siml;[⪝] sim;[∼]. + "\x06mplus;\x03⨤\x06mrarr;\x03⥲\x05gmaf;\x02ς\x05gmav;\x02ς\x05mdot;\x03⩪\x04gma;\x02σ\x04meq;\x03≃\x04mgE;\x03⪠\x04mlE;\x03⪟\x04mne;\x03≆\x03me;\x03≃\x03mg;\x03⪞\x03ml;\x03⪝\x02m;\x03∼", + // slarr;[←]. + "\x04arr;\x03←", + // smallsetminus;[∖] smeparsl;[⧤] smashp;[⨳] smile;[⌣] smtes;[⪬︀] smid;[∣] smte;[⪬] smt;[⪪]. + "\x0callsetminus;\x03∖\x07eparsl;\x03⧤\x05ashp;\x03⨳\x04ile;\x03⌣\x04tes;\x06⪬︀\x03id;\x03∣\x03te;\x03⪬\x02t;\x03⪪", + // softcy;[ь] solbar;[⌿] solb;[⧄] sopf;[𝕤] sol;[/]. + "\x05ftcy;\x02ь\x05lbar;\x03⌿\x03lb;\x03⧄\x03pf;\x04𝕤\x02l;\x01/", + // spadesuit;[♠] spades;[♠] spar;[∥]. + "\x08adesuit;\x03♠\x05ades;\x03♠\x03ar;\x03∥", + // sqsubseteq;[⊑] sqsupseteq;[⊒] sqsubset;[⊏] sqsupset;[⊐] sqcaps;[⊓︀] sqcups;[⊔︀] sqsube;[⊑] sqsupe;[⊒] square;[□] squarf;[▪] sqcap;[⊓] sqcup;[⊔] sqsub;[⊏] sqsup;[⊐] squf;[▪] squ;[□]. + "\x09subseteq;\x03⊑\x09supseteq;\x03⊒\x07subset;\x03⊏\x07supset;\x03⊐\x05caps;\x06⊓︀\x05cups;\x06⊔︀\x05sube;\x03⊑\x05supe;\x03⊒\x05uare;\x03□\x05uarf;\x03▪\x04cap;\x03⊓\x04cup;\x03⊔\x04sub;\x03⊏\x04sup;\x03⊐\x03uf;\x03▪\x02u;\x03□", + // srarr;[→]. + "\x04arr;\x03→", + // ssetmn;[∖] ssmile;[⌣] sstarf;[⋆] sscr;[𝓈]. + "\x05etmn;\x03∖\x05mile;\x03⌣\x05tarf;\x03⋆\x03cr;\x04𝓈", + // straightepsilon;[ϵ] straightphi;[ϕ] starf;[★] strns;[¯] star;[☆]. + "\x0eraightepsilon;\x02ϵ\x0araightphi;\x02ϕ\x04arf;\x03★\x04rns;\x02¯\x03ar;\x03☆", + // succcurlyeq;[≽] succnapprox;[⪺] subsetneqq;[⫋] succapprox;[⪸] supsetneqq;[⫌] subseteqq;[⫅] subsetneq;[⊊] supseteqq;[⫆] supsetneq;[⊋] subseteq;[⊆] succneqq;[⪶] succnsim;[⋩] supseteq;[⊇] subedot;[⫃] submult;[⫁] subplus;[⪿] subrarr;[⥹] succsim;[≿] supdsub;[⫘] supedot;[⫄] suphsol;[⟉] suphsub;[⫗] suplarr;[⥻] supmult;[⫂] supplus;[⫀] subdot;[⪽] subset;[⊂] subsim;[⫇] subsub;[⫕] subsup;[⫓] succeq;[⪰] supdot;[⪾] supset;[⊃] supsim;[⫈] supsub;[⫔] supsup;[⫖] subnE;[⫋] subne;[⊊] supnE;[⫌] supne;[⊋] subE;[⫅] sube;[⊆] succ;[≻] sung;[♪] sup1;[¹] sup2;[²] sup3;[³] supE;[⫆] supe;[⊇] sub;[⊂] sum;[∑] sup1[¹] sup2[²] sup3[³] sup;[⊃]. + "\x0acccurlyeq;\x03≽\x0accnapprox;\x03⪺\x09bsetneqq;\x03⫋\x09ccapprox;\x03⪸\x09psetneqq;\x03⫌\x08bseteqq;\x03⫅\x08bsetneq;\x03⊊\x08pseteqq;\x03⫆\x08psetneq;\x03⊋\x07bseteq;\x03⊆\x07ccneqq;\x03⪶\x07ccnsim;\x03⋩\x07pseteq;\x03⊇\x06bedot;\x03⫃\x06bmult;\x03⫁\x06bplus;\x03⪿\x06brarr;\x03⥹\x06ccsim;\x03≿\x06pdsub;\x03⫘\x06pedot;\x03⫄\x06phsol;\x03⟉\x06phsub;\x03⫗\x06plarr;\x03⥻\x06pmult;\x03⫂\x06pplus;\x03⫀\x05bdot;\x03⪽\x05bset;\x03⊂\x05bsim;\x03⫇\x05bsub;\x03⫕\x05bsup;\x03⫓\x05cceq;\x03⪰\x05pdot;\x03⪾\x05pset;\x03⊃\x05psim;\x03⫈\x05psub;\x03⫔\x05psup;\x03⫖\x04bnE;\x03⫋\x04bne;\x03⊊\x04pnE;\x03⫌\x04pne;\x03⊋\x03bE;\x03⫅\x03be;\x03⊆\x03cc;\x03≻\x03ng;\x03♪\x03p1;\x02¹\x03p2;\x02²\x03p3;\x02³\x03pE;\x03⫆\x03pe;\x03⊇\x02b;\x03⊂\x02m;\x03∑\x02p1\x02¹\x02p2\x02²\x02p3\x02³\x02p;\x03⊃", + // swarrow;[↙] swarhk;[⤦] swnwar;[⤪] swArr;[⇙] swarr;[↙]. + "\x06arrow;\x03↙\x05arhk;\x03⤦\x05nwar;\x03⤪\x04Arr;\x03⇙\x04arr;\x03↙", + // szlig;[ß] szlig[ß]. + "\x04lig;\x02ß\x03lig\x02ß", + // target;[⌖] tau;[τ]. + "\x05rget;\x03⌖\x02u;\x02τ", + // tbrk;[⎴]. + "\x03rk;\x03⎴", + // tcaron;[ť] tcedil;[ţ] tcy;[т]. + "\x05aron;\x02ť\x05edil;\x02ţ\x02y;\x02т", + // tdot;[⃛]. + "\x03ot;\x03⃛", + // telrec;[⌕]. + "\x05lrec;\x03⌕", + // tfr;[𝔱]. + "\x02r;\x04𝔱", + // thickapprox;[≈] therefore;[∴] thetasym;[ϑ] thicksim;[∼] there4;[∴] thetav;[ϑ] thinsp;[ ] thksim;[∼] theta;[θ] thkap;[≈] thorn;[þ] thorn[þ]. + "\x0aickapprox;\x03≈\x08erefore;\x03∴\x07etasym;\x02ϑ\x07icksim;\x03∼\x05ere4;\x03∴\x05etav;\x02ϑ\x05insp;\x03 \x05ksim;\x03∼\x04eta;\x02θ\x04kap;\x03≈\x04orn;\x02þ\x03orn\x02þ", + // timesbar;[⨱] timesb;[⊠] timesd;[⨰] tilde;[˜] times;[×] times[×] tint;[∭]. + "\x07mesbar;\x03⨱\x05mesb;\x03⊠\x05mesd;\x03⨰\x04lde;\x02˜\x04mes;\x02×\x03mes\x02×\x03nt;\x03∭", + // topfork;[⫚] topbot;[⌶] topcir;[⫱] toea;[⤨] topf;[𝕥] tosa;[⤩] top;[⊤]. + "\x06pfork;\x03⫚\x05pbot;\x03⌶\x05pcir;\x03⫱\x03ea;\x03⤨\x03pf;\x04𝕥\x03sa;\x03⤩\x02p;\x03⊤", + // tprime;[‴]. + "\x05rime;\x03‴", + // trianglerighteq;[⊵] trianglelefteq;[⊴] triangleright;[▹] triangledown;[▿] triangleleft;[◃] triangleq;[≜] triangle;[▵] triminus;[⨺] trpezium;[⏢] triplus;[⨹] tritime;[⨻] tridot;[◬] trade;[™] trisb;[⧍] trie;[≜]. + "\x0eianglerighteq;\x03⊵\x0dianglelefteq;\x03⊴\x0ciangleright;\x03▹\x0biangledown;\x03▿\x0biangleleft;\x03◃\x08iangleq;\x03≜\x07iangle;\x03▵\x07iminus;\x03⨺\x07pezium;\x03⏢\x06iplus;\x03⨹\x06itime;\x03⨻\x05idot;\x03◬\x04ade;\x03™\x04isb;\x03⧍\x03ie;\x03≜", + // tstrok;[ŧ] tshcy;[ћ] tscr;[𝓉] tscy;[ц]. + "\x05trok;\x02ŧ\x04hcy;\x02ћ\x03cr;\x04𝓉\x03cy;\x02ц", + // twoheadrightarrow;[↠] twoheadleftarrow;[↞] twixt;[≬]. + "\x10oheadrightarrow;\x03↠\x0foheadleftarrow;\x03↞\x04ixt;\x03≬", + // uArr;[⇑]. + "\x03rr;\x03⇑", + // uHar;[⥣]. + "\x03ar;\x03⥣", + // uacute;[ú] uacute[ú] uarr;[↑]. + "\x05cute;\x02ú\x04cute\x02ú\x03rr;\x03↑", + // ubreve;[ŭ] ubrcy;[ў]. + "\x05reve;\x02ŭ\x04rcy;\x02ў", + // ucirc;[û] ucirc[û] ucy;[у]. + "\x04irc;\x02û\x03irc\x02û\x02y;\x02у", + // udblac;[ű] udarr;[⇅] udhar;[⥮]. + "\x05blac;\x02ű\x04arr;\x03⇅\x04har;\x03⥮", + // ufisht;[⥾] ufr;[𝔲]. + "\x05isht;\x03⥾\x02r;\x04𝔲", + // ugrave;[ù] ugrave[ù]. + "\x05rave;\x02ù\x04rave\x02ù", + // uharl;[↿] uharr;[↾] uhblk;[▀]. + "\x04arl;\x03↿\x04arr;\x03↾\x04blk;\x03▀", + // ulcorner;[⌜] ulcorn;[⌜] ulcrop;[⌏] ultri;[◸]. + "\x07corner;\x03⌜\x05corn;\x03⌜\x05crop;\x03⌏\x04tri;\x03◸", + // umacr;[ū] uml;[¨] uml[¨]. + "\x04acr;\x02ū\x02l;\x02¨\x01l\x02¨", + // uogon;[ų] uopf;[𝕦]. + "\x04gon;\x02ų\x03pf;\x04𝕦", + // upharpoonright;[↾] upharpoonleft;[↿] updownarrow;[↕] upuparrows;[⇈] uparrow;[↑] upsilon;[υ] uplus;[⊎] upsih;[ϒ] upsi;[υ]. + "\x0dharpoonright;\x03↾\x0charpoonleft;\x03↿\x0adownarrow;\x03↕\x09uparrows;\x03⇈\x06arrow;\x03↑\x06silon;\x02υ\x04lus;\x03⊎\x04sih;\x02ϒ\x03si;\x02υ", + // urcorner;[⌝] urcorn;[⌝] urcrop;[⌎] uring;[ů] urtri;[◹]. + "\x07corner;\x03⌝\x05corn;\x03⌝\x05crop;\x03⌎\x04ing;\x02ů\x04tri;\x03◹", + // uscr;[𝓊]. + "\x03cr;\x04𝓊", + // utilde;[ũ] utdot;[⋰] utrif;[▴] utri;[▵]. + "\x05ilde;\x02ũ\x04dot;\x03⋰\x04rif;\x03▴\x03ri;\x03▵", + // uuarr;[⇈] uuml;[ü] uuml[ü]. + "\x04arr;\x03⇈\x03ml;\x02ü\x02ml\x02ü", + // uwangle;[⦧]. + "\x06angle;\x03⦧", + // vArr;[⇕]. + "\x03rr;\x03⇕", + // vBarv;[⫩] vBar;[⫨]. + "\x04arv;\x03⫩\x03ar;\x03⫨", + // vDash;[⊨]. + "\x04ash;\x03⊨", + // vartriangleright;[⊳] vartriangleleft;[⊲] varsubsetneqq;[⫋︀] varsupsetneqq;[⫌︀] varsubsetneq;[⊊︀] varsupsetneq;[⊋︀] varepsilon;[ϵ] varnothing;[∅] varpropto;[∝] varkappa;[ϰ] varsigma;[ς] vartheta;[ϑ] vangrt;[⦜] varphi;[ϕ] varrho;[ϱ] varpi;[ϖ] varr;[↕]. + "\x0frtriangleright;\x03⊳\x0ertriangleleft;\x03⊲\x0crsubsetneqq;\x06⫋︀\x0crsupsetneqq;\x06⫌︀\x0brsubsetneq;\x06⊊︀\x0brsupsetneq;\x06⊋︀\x09repsilon;\x02ϵ\x09rnothing;\x03∅\x08rpropto;\x03∝\x07rkappa;\x02ϰ\x07rsigma;\x02ς\x07rtheta;\x02ϑ\x05ngrt;\x03⦜\x05rphi;\x02ϕ\x05rrho;\x02ϱ\x04rpi;\x02ϖ\x03rr;\x03↕", + // vcy;[в]. + "\x02y;\x02в", + // vdash;[⊢]. + "\x04ash;\x03⊢", + // veebar;[⊻] vellip;[⋮] verbar;[|] veeeq;[≚] vert;[|] vee;[∨]. + "\x05ebar;\x03⊻\x05llip;\x03⋮\x05rbar;\x01|\x04eeq;\x03≚\x03rt;\x01|\x02e;\x03∨", + // vfr;[𝔳]. + "\x02r;\x04𝔳", + // vltri;[⊲]. + "\x04tri;\x03⊲", + // vnsub;[⊂⃒] vnsup;[⊃⃒]. + "\x04sub;\x06⊂⃒\x04sup;\x06⊃⃒", + // vopf;[𝕧]. + "\x03pf;\x04𝕧", + // vprop;[∝]. + "\x04rop;\x03∝", + // vrtri;[⊳]. + "\x04tri;\x03⊳", + // vsubnE;[⫋︀] vsubne;[⊊︀] vsupnE;[⫌︀] vsupne;[⊋︀] vscr;[𝓋]. + "\x05ubnE;\x06⫋︀\x05ubne;\x06⊊︀\x05upnE;\x06⫌︀\x05upne;\x06⊋︀\x03cr;\x04𝓋", + // vzigzag;[⦚]. + "\x06igzag;\x03⦚", + // wcirc;[ŵ]. + "\x04irc;\x02ŵ", + // wedbar;[⩟] wedgeq;[≙] weierp;[℘] wedge;[∧]. + "\x05dbar;\x03⩟\x05dgeq;\x03≙\x05ierp;\x03℘\x04dge;\x03∧", + // wfr;[𝔴]. + "\x02r;\x04𝔴", + // wopf;[𝕨]. + "\x03pf;\x04𝕨", + // wp;[℘]. + "\x01;\x03℘", + // wreath;[≀] wr;[≀]. + "\x05eath;\x03≀\x01;\x03≀", + // wscr;[𝓌]. + "\x03cr;\x04𝓌", + // xcirc;[◯] xcap;[⋂] xcup;[⋃]. + "\x04irc;\x03◯\x03ap;\x03⋂\x03up;\x03⋃", + // xdtri;[▽]. + "\x04tri;\x03▽", + // xfr;[𝔵]. + "\x02r;\x04𝔵", + // xhArr;[⟺] xharr;[⟷]. + "\x04Arr;\x03⟺\x04arr;\x03⟷", + // xi;[ξ]. + "\x01;\x02ξ", + // xlArr;[⟸] xlarr;[⟵]. + "\x04Arr;\x03⟸\x04arr;\x03⟵", + // xmap;[⟼]. + "\x03ap;\x03⟼", + // xnis;[⋻]. + "\x03is;\x03⋻", + // xoplus;[⨁] xotime;[⨂] xodot;[⨀] xopf;[𝕩]. + "\x05plus;\x03⨁\x05time;\x03⨂\x04dot;\x03⨀\x03pf;\x04𝕩", + // xrArr;[⟹] xrarr;[⟶]. + "\x04Arr;\x03⟹\x04arr;\x03⟶", + // xsqcup;[⨆] xscr;[𝓍]. + "\x05qcup;\x03⨆\x03cr;\x04𝓍", + // xuplus;[⨄] xutri;[△]. + "\x05plus;\x03⨄\x04tri;\x03△", + // xvee;[⋁]. + "\x03ee;\x03⋁", + // xwedge;[⋀]. + "\x05edge;\x03⋀", + // yacute;[ý] yacute[ý] yacy;[я]. + "\x05cute;\x02ý\x04cute\x02ý\x03cy;\x02я", + // ycirc;[ŷ] ycy;[ы]. + "\x04irc;\x02ŷ\x02y;\x02ы", + // yen;[¥] yen[¥]. + "\x02n;\x02¥\x01n\x02¥", + // yfr;[𝔶]. + "\x02r;\x04𝔶", + // yicy;[ї]. + "\x03cy;\x02ї", + // yopf;[𝕪]. + "\x03pf;\x04𝕪", + // yscr;[𝓎]. + "\x03cr;\x04𝓎", + // yucy;[ю] yuml;[ÿ] yuml[ÿ]. + "\x03cy;\x02ю\x03ml;\x02ÿ\x02ml\x02ÿ", + // zacute;[ź]. + "\x05cute;\x02ź", + // zcaron;[ž] zcy;[з]. + "\x05aron;\x02ž\x02y;\x02з", + // zdot;[ż]. + "\x03ot;\x02ż", + // zeetrf;[ℨ] zeta;[ζ]. + "\x05etrf;\x03ℨ\x03ta;\x02ζ", + // zfr;[𝔷]. + "\x02r;\x04𝔷", + // zhcy;[ж]. + "\x03cy;\x02ж", + // zigrarr;[⇝]. + "\x06grarr;\x03⇝", + // zopf;[𝕫]. + "\x03pf;\x04𝕫", + // zscr;[𝓏]. + "\x03cr;\x04𝓏", + // zwnj;[‌] zwj;[‍]. + "\x03nj;\x03‌\x02j;\x03‍", + ), + "small_words" => "GT\x00LT\x00gt\x00lt\x00", + "small_mappings" => array( + ">", + "<", + ">", + "<", + ) ) ); From 7d0cbbea86313d5e99500f85875564fe5a264b09 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Mon, 20 May 2024 14:41:36 -0700 Subject: [PATCH 24/28] Clarify case insensitivity. --- src/wp-includes/class-wp-token-map.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php index 40c0520659b98..398de6c2aa438 100644 --- a/src/wp-includes/class-wp-token-map.php +++ b/src/wp-includes/class-wp-token-map.php @@ -432,11 +432,11 @@ public static function from_precomputed_table( $state ) { * @since 6.6.0 * * @param string $word Determine if this word is a lookup key in the map. - * @param ?string $case_sensitivity 'case-insensitive' to ignore ASCII case or default of 'case-sensitive'. + * @param ?string $case_sensitivity 'ascii-case-insensitive' to ignore ASCII case or default of 'case-sensitive'. * @return bool Whether there's an entry for the given word in the map. */ public function contains( $word, $case_sensitivity = 'case-sensitive' ) { - $ignore_case = 'case-insensitive' === $case_sensitivity; + $ignore_case = 'ascii-case-insensitive' === $case_sensitivity; if ( $this->key_length >= strlen( $word ) ) { if ( 0 === strlen( $this->small_words ) ) { @@ -519,11 +519,11 @@ public function contains( $word, $case_sensitivity = 'case-sensitive' ) { * @param string $text String in which to search for a lookup key. * @param ?int $offset How many bytes into the string where the lookup key ought to start. * @param ?int &$skip_bytes Holds byte-length of found lookup key if matched, otherwise not set. - * @param ?string $case_sensitivity 'case-insensitive' to ignore ASCII case or default of 'case-sensitive'. + * @param ?string $case_sensitivity 'ascii-case-insensitive' to ignore ASCII case or default of 'case-sensitive'. * @return string|false Mapped value of lookup key if found, otherwise `false`. */ public function read_token( $text, $offset = 0, &$skip_bytes = null, $case_sensitivity = 'case-sensitive' ) { - $ignore_case = 'case-insensitive' === $case_sensitivity; + $ignore_case = 'ascii-case-insensitive' === $case_sensitivity; $text_length = strlen( $text ); // Search for a long word first, if the text is long enough, and if that fails, a short one. @@ -571,11 +571,11 @@ public function read_token( $text, $offset = 0, &$skip_bytes = null, $case_sensi * @param string $text String in which to search for a lookup key. * @param ?int $offset How many bytes into the string where the lookup key ought to start. * @param ?int &$skip_bytes Holds byte-length of found lookup key if matched, otherwise not set. - * @param ?string $case_sensitivity 'case-insensitive' to ignore ASCII case or default of 'case-sensitive'. + * @param ?string $case_sensitivity 'ascii-case-insensitive' to ignore ASCII case or default of 'case-sensitive'. * @return string|false Mapped value of lookup key if found, otherwise `false`. */ private function read_small_token( $text, $offset, &$skip_bytes, $case_sensitivity = 'case-sensitive' ) { - $ignore_case = 'case-insensitive' === $case_sensitivity; + $ignore_case = 'ascii-case-insensitive' === $case_sensitivity; $small_length = strlen( $this->small_words ); $search_text = substr( $text, $offset, $this->key_length ); if ( $ignore_case ) { From 71ccdf6bacf569c3a55cf5f64c3d20f52a47f484 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Mon, 20 May 2024 14:59:55 -0700 Subject: [PATCH 25/28] Rename $skip_bytes to $matched_token_byte_length --- src/wp-includes/class-wp-token-map.php | 46 +++++++++++++------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php index 398de6c2aa438..6527abb9d2cb7 100644 --- a/src/wp-includes/class-wp-token-map.php +++ b/src/wp-includes/class-wp-token-map.php @@ -485,15 +485,15 @@ public function contains( $word, $case_sensitivity = 'case-sensitive' ) { * return the corresponding transformation from the map, else `false`. * * This function returns the translated string, but accepts an optional - * parameter `$skip_bytes` which communicates how many bytes long the - * lookup key was, if it found one. This can be used to advance a cursor - * in calling code if a lookup key was found. + * parameter `$matched_token_byte_length`, which communicates how many + * bytes long the lookup key was, if it found one. This can be used to + * advance a cursor in calling code if a lookup key was found. * * Example: * - * false === $smilies->read_token( 'Not sure :?.', 0, $bytes_skipped ); - * '😕' === $smilies->read_token( 'Not sure :?.', 9, $bytes_skipped ); - * 2 === $bytes_skipped; + * false === $smilies->read_token( 'Not sure :?.', 0, $token_byte_length ); + * '😕' === $smilies->read_token( 'Not sure :?.', 9, $token_byte_length ); + * 2 === $token_byte_length; * * Example: * @@ -503,26 +503,26 @@ public function contains( $word, $case_sensitivity = 'case-sensitive' ) { * break; * } * - * $smily = $smilies->read_token( $input, $next_at, $bytes_skipped ); + * $smily = $smilies->read_token( $input, $next_at, $token_byte_length ); * if ( false === $next_at ) { * ++$at; * continue; * } * * $prefix = substr( $input, $at, $next_at - $at ); - * $at += $bytes_skipped; + * $at += $token_byte_length; * $output .= "{$prefix}{$smily}"; * } * * @since 6.6.0 * - * @param string $text String in which to search for a lookup key. - * @param ?int $offset How many bytes into the string where the lookup key ought to start. - * @param ?int &$skip_bytes Holds byte-length of found lookup key if matched, otherwise not set. - * @param ?string $case_sensitivity 'ascii-case-insensitive' to ignore ASCII case or default of 'case-sensitive'. + * @param string $text String in which to search for a lookup key. + * @param ?int $offset How many bytes into the string where the lookup key ought to start. + * @param ?int &$matched_token_byte_length Holds byte-length of found token matched, otherwise not set. + * @param ?string $case_sensitivity 'ascii-case-insensitive' to ignore ASCII case or default of 'case-sensitive'. * @return string|false Mapped value of lookup key if found, otherwise `false`. */ - public function read_token( $text, $offset = 0, &$skip_bytes = null, $case_sensitivity = 'case-sensitive' ) { + public function read_token( $text, $offset = 0, &$matched_token_byte_length = null, $case_sensitivity = 'case-sensitive' ) { $ignore_case = 'ascii-case-insensitive' === $case_sensitivity; $text_length = strlen( $text ); @@ -534,7 +534,7 @@ public function read_token( $text, $offset = 0, &$skip_bytes = null, $case_sensi if ( false === $group_at ) { // Perhaps a short word then. return strlen( $this->small_words ) > 0 - ? $this->read_small_token( $text, $offset, $skip_bytes, $case_sensitivity ) + ? $this->read_small_token( $text, $offset, $matched_token_byte_length, $case_sensitivity ) : false; } @@ -549,7 +549,7 @@ public function read_token( $text, $offset = 0, &$skip_bytes = null, $case_sensi $mapping_at = $at; if ( 0 === substr_compare( $text, $token, $offset + $this->key_length, $token_length, $ignore_case ) ) { - $skip_bytes = $this->key_length + $token_length; + $matched_token_byte_length = $this->key_length + $token_length; return substr( $group, $mapping_at, $mapping_length ); } @@ -559,7 +559,7 @@ public function read_token( $text, $offset = 0, &$skip_bytes = null, $case_sensi // Perhaps a short word then. return strlen( $this->small_words ) > 0 - ? $this->read_small_token( $text, $offset, $skip_bytes, $case_sensitivity ) + ? $this->read_small_token( $text, $offset, $matched_token_byte_length, $case_sensitivity ) : false; } @@ -568,13 +568,13 @@ public function read_token( $text, $offset = 0, &$skip_bytes = null, $case_sensi * * @since 6.6.0. * - * @param string $text String in which to search for a lookup key. - * @param ?int $offset How many bytes into the string where the lookup key ought to start. - * @param ?int &$skip_bytes Holds byte-length of found lookup key if matched, otherwise not set. - * @param ?string $case_sensitivity 'ascii-case-insensitive' to ignore ASCII case or default of 'case-sensitive'. + * @param string $text String in which to search for a lookup key. + * @param ?int $offset How many bytes into the string where the lookup key ought to start. + * @param ?int &$matched_token_byte_length Holds byte-length of found lookup key if matched, otherwise not set. + * @param ?string $case_sensitivity 'ascii-case-insensitive' to ignore ASCII case or default of 'case-sensitive'. * @return string|false Mapped value of lookup key if found, otherwise `false`. */ - private function read_small_token( $text, $offset, &$skip_bytes, $case_sensitivity = 'case-sensitive' ) { + private function read_small_token( $text, $offset, &$matched_token_byte_length, $case_sensitivity = 'case-sensitive' ) { $ignore_case = 'ascii-case-insensitive' === $case_sensitivity; $small_length = strlen( $this->small_words ); $search_text = substr( $text, $offset, $this->key_length ); @@ -595,7 +595,7 @@ private function read_small_token( $text, $offset, &$skip_bytes, $case_sensitivi for ( $adjust = 1; $adjust < $this->key_length; $adjust++ ) { if ( "\x00" === $this->small_words[ $at + $adjust ] ) { - $skip_bytes = $adjust; + $matched_token_byte_length = $adjust; return $this->small_mappings[ $at / ( $this->key_length + 1 ) ]; } @@ -608,7 +608,7 @@ private function read_small_token( $text, $offset, &$skip_bytes, $case_sensitivi } } - $skip_bytes = $adjust; + $matched_token_byte_length = $adjust; return $this->small_mappings[ $at / ( $this->key_length + 1 ) ]; } From 42c0d085c000259752d9287172608d951b7a954a Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Mon, 20 May 2024 15:01:48 -0700 Subject: [PATCH 26/28] Fix compare result description. --- src/wp-includes/class-wp-token-map.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php index 6527abb9d2cb7..2c7e79a14480f 100644 --- a/src/wp-includes/class-wp-token-map.php +++ b/src/wp-includes/class-wp-token-map.php @@ -790,7 +790,7 @@ static function ( $match_result ) { * * @param string $a First string to compare. * @param string $b Second string to compare. - * @return int -1 if `$a` is less than `$b`; 1 if `$a` is greater than `$b`, and 0 if they are equal. + * @return int -1 or lower if `$a` is less than `$b`; 1 or greater if `$a` is greater than `$b`, and 0 if they are equal. */ private static function longest_first_then_alphabetical( $a, $b ) { if ( $a === $b ) { From ff0e59f08705927ce0f2684372e4bdf2cc0404bc Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Mon, 20 May 2024 15:27:33 -0700 Subject: [PATCH 27/28] Update docblock wording and examples --- src/wp-includes/class-wp-token-map.php | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php index 2c7e79a14480f..a649a5adc69d3 100644 --- a/src/wp-includes/class-wp-token-map.php +++ b/src/wp-includes/class-wp-token-map.php @@ -33,8 +33,8 @@ * true === $smilies->contains( ':)' ); * false === $smilies->contains( 'simile' ); * - * '😕' === $smilies->read_token( 'Not sure :?.', 9, $bytes_skipped ); - * 2 === $bytes_skipped; + * '😕' === $smilies->read_token( 'Not sure :?.', 9, $length_of_smily_syntax ); + * 2 === $length_of_smily_syntax; * * ## Precomputing the Token Map. * @@ -52,7 +52,7 @@ * // Output, to be pasted into a PHP source file: * WP_Token_Map::from_precomputed_table( * array( - * "storage_version" => "1", + * "storage_version" => "6.6.0", * "key_length" => 2, * "groups" => "", * "long_words" => array(), @@ -105,7 +105,7 @@ * // Output * WP_Token_Map::from_precomputed_table( * array( - * "storage_version" => "1", + * "storage_version" => "6.6.0", * "key_length" => 2, * "groups" => "si\x00so\x00", * "long_words" => array( @@ -672,14 +672,18 @@ public function to_array() { * * Example: * - * echo $smilies->precomputed_php_source_table( ' ' ); + * echo $smilies->precomputed_php_source_table(); * * // Output. * WP_Token_Map::from_precomputed_table( - * 2, - * array(), - * "8O\x00:)\x00:(\x00:?\x00", - * array( "😯", "🙂", "🙁", "😕" ) + * array( + * "storage_version" => "6.6.0", + * "key_length" => 2, + * "groups" => "", + * "long_words" => array(), + * "small_words" => "8O\x00:)\x00:(\x00:?\x00", + * "small_mappings" => array( "😯", "🙂", "🙁", "😕" ) + * ) * ); * * @since 6.6.0 From 0e7ab4ca52d97da25a20e0e493bc33308f56cf1d Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Tue, 21 May 2024 16:15:39 -0700 Subject: [PATCH 28/28] PR Feedback --- src/wp-includes/class-wp-token-map.php | 6 +++++- tests/phpunit/tests/wp-token-map/wpTokenMap.php | 5 ++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php index a649a5adc69d3..564c0e07de095 100644 --- a/src/wp-includes/class-wp-token-map.php +++ b/src/wp-includes/class-wp-token-map.php @@ -295,7 +295,11 @@ public static function from_array( $mappings, $key_length = 2 ) { ) { _doing_it_wrong( __METHOD__, - __( 'Token Map tokens and substitutions must all be shorter than 256 bytes.' ), + sprintf( + /* translators: 1: maximum byte length (a count) */ + __( 'Token Map tokens and substitutions must all be shorter than %1$d bytes.' ), + self::MAX_LENGTH + ), '6.6.0' ); return null; diff --git a/tests/phpunit/tests/wp-token-map/wpTokenMap.php b/tests/phpunit/tests/wp-token-map/wpTokenMap.php index 63bad0b8fe844..fb2a08655d2a6 100644 --- a/tests/phpunit/tests/wp-token-map/wpTokenMap.php +++ b/tests/phpunit/tests/wp-token-map/wpTokenMap.php @@ -5,6 +5,7 @@ * @package WordPress * * @since 6.6.0 + * @group html-api-token-map * * @coversDefaultClass WP_Token_Map */ @@ -46,8 +47,6 @@ class Tests_WpTokenMap extends WP_UnitTestCase { * be downloaded on every test run. By specification, it cannot change * and will not be updated. * - * @ticket 60698 - * * @param string $dataset_name Which dataset to return. * @return array The dataset as an associative array. */ @@ -114,7 +113,7 @@ public function test_creates_map_from_array_containing_proper_values( $dataset ) $this->assertSame( $replacement, $response, - 'Returned the wrong replacement value' + "Returned the wrong replacement value for '{$token}'." ); $token_length = strlen( $token );