[general] moving ios and android project under ./platform folder

This commit is contained in:
Petr Pokorny
2020-12-20 12:38:56 +01:00
parent 8e759a51e4
commit 41f0be34e7
9877 changed files with 141 additions and 2889 deletions

19
vendor/nunicode/LICENSE vendored Normal file
View File

@@ -0,0 +1,19 @@
Copyright (c) 2013 Aleksey Tulinov <aleksey.tulinov@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

20
vendor/nunicode/files.txt vendored Normal file
View File

@@ -0,0 +1,20 @@
include/libnu/casemap.h
include/libnu/casemap_internal.h
include/libnu/config.h
include/libnu/defines.h
include/libnu/ducet.h
include/libnu/mph.h
include/libnu/strcoll.h
include/libnu/strcoll_internal.h
include/libnu/strings.h
include/libnu/udb.h
include/libnu/unaccent.h
include/libnu/utf8.h
include/libnu/utf8_internal.h
src/libnu/ducet.c
src/libnu/strcoll.c
src/libnu/strings.c
src/libnu/tolower.c
src/libnu/tounaccent.c
src/libnu/toupper.c
src/libnu/utf8.c

140
vendor/nunicode/include/libnu/casemap.h vendored Normal file
View File

@@ -0,0 +1,140 @@
#ifndef NU_TOUPPER_H
#define NU_TOUPPER_H
#include <stdint.h>
#include <libnu/config.h>
#include <libnu/defines.h>
#include <libnu/strings.h>
#include <libnu/udb.h>
#if defined (__cplusplus) || defined (c_plusplus)
extern "C" {
#endif
/**
* @example folding.c
* @example special_casing.c
*/
/** Synonim to nu_casemap_read. It is recommended to use
* nu_casemap_read instead.
*/
#define NU_CASEMAP_DECODING_FUNCTION NU_UDB_DECODING_FUNCTION
/** Read (decoding) function for use with transformation results of
* casemapping functions. E.g. nu_casemap_read(nu_tolower(0x0041));
* will read first codepoint of 'A' transformed to lower case.
*/
#define nu_casemap_read (nu_udb_read)
/** Casemap codepoint
*
* @ingroup transformations
*/
typedef nu_transformation_t nu_casemapping_t;
#ifdef NU_WITH_TOUPPER
/** Return uppercase value of codepoint. Uncoditional casemapping.
*
* @ingroup transformations
* @param codepoint unicode codepoint
* @return uppercase codepoint or 0 if mapping doesn't exist
*/
NU_EXPORT
const char* nu_toupper(uint32_t codepoint);
/** Return uppercase value of codepoint. Context-sensitivity is not
* implemented internally, returned result is equal to calling nu_toupper()
* on corresponding codepoint.
*
* @ingroup transformations_internal
* @param encoded pointer to encoded string
* @param limit memory limit of encoded string or NU_UNLIMITED
* @param read read (decoding) function
* @param u (optional) codepoint which was (or wasn't) transformed
* @param transform output value of codepoint transformed into uppercase or 0
* if mapping doesn't exist. Can't be NULL, supposed to be decoded with
* nu_casemap_read
* @param context not used
* @return pointer to the next codepoint in string
*/
NU_EXPORT
const char* _nu_toupper(const char *encoded, const char *limit, nu_read_iterator_t read,
uint32_t *u, const char **transform,
void *context);
#endif /* NU_WITH_TOUPPER */
#ifdef NU_WITH_TOLOWER
/** Return lowercase value of codepoint. Unconditional casemapping.
*
* @ingroup transformations
* @param codepoint unicode codepoint
* @return lowercase codepoint or 0 if mapping doesn't exist
*/
NU_EXPORT
const char* nu_tolower(uint32_t codepoint);
/** Return lowercase value of codepoint. Will transform uppercase
* Sigma ('Σ') into final sigma ('ς') if it occurs at string boundary or
* followed by U+0000. Might require single read-ahead when
* encountering Sigma.
*
* @ingroup transformations_internal
* @param encoded pointer to encoded string
* @param limit memory limit of encoded string or NU_UNLIMITED
* @param read read (decoding) function
* @param u (optional) codepoint which was (or wasn't) transformed
* @param transform output value of codepoint transformed into lowercase or 0
* if mapping doesn't exist. Can't be NULL, supposed to be decoded with
* nu_casemap_read
* @param context not used
* @return pointer to the next codepoint in string
*/
NU_EXPORT
const char* _nu_tolower(const char *encoded, const char *limit, nu_read_iterator_t read,
uint32_t *u, const char **transform,
void *context);
#endif /* NU_WITH_TOLOWER */
#ifdef NU_WITH_TOFOLD
/** Return value of codepoint with case differences eliminated
*
* @ingroup transformations
* @param codepoint unicode codepoint
* @return casefolded codepoint or 0 if mapping doesn't exist
*/
NU_EXPORT
const char* nu_tofold(uint32_t codepoint);
/** Return value of codepoint with case differences eliminated.
* Context-sensitivity is not implemented internally, returned result is equal
* to calling nu_tofold() on corresponding codepoint.
*
* @ingroup transformations_internal
* @param encoded pointer to encoded string
* @param limit memory limit of encoded string or NU_UNLIMITED
* @param read read (decoding) function
* @param u (optional) codepoint which was (or wasn't) transformed
* @param transform output value of casefolded codepoint or 0
* if mapping doesn't exist. Can't be NULL, supposed to be decoded with
* nu_casemap_read
* @param context not used
* @return pointer to the next codepoint in string
*/
NU_EXPORT
const char* _nu_tofold(const char *encoded, const char *limit, nu_read_iterator_t read,
uint32_t *u, const char **transform,
void *context);
#endif /* NU_WITH_TOFOLD */
#if defined (__cplusplus) || defined (c_plusplus)
}
#endif
#endif /* NU_TOUPPER_H */

View File

@@ -0,0 +1,21 @@
#ifndef NU_CASEMAP_INTERNAL_H
#define NU_CASEMAP_INTERNAL_H
#include <stdint.h>
#include <sys/types.h>
#include <libnu/udb.h>
/** Casemap codepoint
*
* @ingroup transformations_internal
*/
static inline
const char* _nu_to_something(uint32_t codepoint,
const int16_t *G, size_t G_SIZE,
const uint32_t *VALUES_C, const uint16_t *VALUES_I, const uint8_t *COMBINED) {
return nu_udb_lookup(codepoint, G, G_SIZE, VALUES_C, VALUES_I, COMBINED);
}
#endif /* NU_CASEMAP_INTERNAL_H */

201
vendor/nunicode/include/libnu/config.h vendored Normal file
View File

@@ -0,0 +1,201 @@
#ifndef NU_BUILD_CONFIG_H
#define NU_BUILD_CONFIG_H
// Hardcoded defines for vendored copy
#define NU_WITH_UTF8
#define NU_WITH_TOUPPER
#define NU_WITH_TOLOWER
#define NU_WITH_UNACCENT
#define NU_WITH_Z_COLLATION
/** @file config.h
*
* This file list available build options and provide some shortcuts,
* like NU_WITH_UTF16 will enable NU_WITH_UTF16LE + NU_WITH_UTF16BE.
*
* At build time you might set either particular option or shortcut. Either
* way you don't have to and shouldn't modify this file, just set build flags
* at the environment.
*
* This file will also enable several dependencies for you: case-mapping
* depends on NU_WITH_UDB, NU_UTF8_READER and so.
*/
/* Definitions not covered in this file which should be defined
* externally.
*
* NU_BUILD_STATIC: will change functions visibility to "hidden" (GCC).
* @see defines.h
*
* NU_DISABLE_CONTRACTIONS: disables forward-reading during collation,
* only weights of a single codepoints will be compared (enabled in release build)
*/
/* Enable everything, see below for details on a specific option */
#ifdef NU_WITH_EVERYTHING
# define NU_WITH_UTF8
# define NU_WITH_CESU8
# define NU_WITH_UTF16
# define NU_WITH_UTF16HE
# define NU_WITH_UTF32
# define NU_WITH_UTF32HE
# define NU_WITH_STRINGS
# define NU_WITH_EXTRA
# define NU_WITH_REVERSE_READ
# define NU_WITH_VALIDATION
# define NU_WITH_COLLATION
# define NU_WITH_CASEMAP
# define NU_WITH_UNACCENT
#endif /* NU_WITH_EVERYTHING */
/* Enable UTF-8 decoding and encoding */
#ifdef NU_WITH_UTF8
# define NU_WITH_UTF8_READER /* UTF-8 decoding functions */
# define NU_WITH_UTF8_WRITER /* UTF-8 encoding functions */
#endif /* NU_WITH_UTF8 */
/* Enable CESU-8 decoding and encoding */
#ifdef NU_WITH_CESU8
# define NU_WITH_CESU8_READER
# define NU_WITH_CESU8_WRITER
#endif /* NU_WITH_CESU8 */
/* Enable UTF-16LE decoding and encoding */
#ifdef NU_WITH_UTF16LE
# define NU_WITH_UTF16LE_READER
# define NU_WITH_UTF16LE_WRITER
#endif /* NU_WITH_UTF16LE */
/* Enable UTF-16BE decoding and encoding */
#ifdef NU_WITH_UTF16BE
# define NU_WITH_UTF16BE_READER
# define NU_WITH_UTF16BE_WRITER
#endif /* NU_WITH_UTF16BE */
/* Enable UTF-16HE decoding and encoding */
#ifdef NU_WITH_UTF16HE
# define NU_WITH_UTF16HE_READER
# define NU_WITH_UTF16HE_WRITER
#endif /* NU_WITH_UTF16HE */
/* Enable all UTF-16 options */
#ifdef NU_WITH_UTF16
# define NU_WITH_UTF16_READER
# define NU_WITH_UTF16_WRITER
#endif /* NU_WITH_UTF16 */
/* Enable UTF-16LE and BE decoders of UTF-16 decoder is requested */
#ifdef NU_WITH_UTF16_READER
# define NU_WITH_UTF16LE_READER
# define NU_WITH_UTF16BE_READER
#endif /* NU_WITH_UTF16_READER */
/* Enable UTF-16LE and BE encoders of UTF-16 encoder is requested */
#ifdef NU_WITH_UTF16_WRITER
# define NU_WITH_UTF16LE_WRITER
# define NU_WITH_UTF16BE_WRITER
#endif /* NU_WITH_UTF16_WRITER */
/* Enable UTF-32LE decoding and encoding */
#ifdef NU_WITH_UTF32LE
# define NU_WITH_UTF32LE_READER
# define NU_WITH_UTF32LE_WRITER
#endif /* NU_WITH_UTF32LE */
/* Enable UTF-32BE decoding and encoding */
#ifdef NU_WITH_UTF32BE
# define NU_WITH_UTF32BE_READER
# define NU_WITH_UTF32BE_WRITER
#endif /* NU_WITH_UTF32BE */
/* Enable UTF-32HE decoding and encoding */
#ifdef NU_WITH_UTF32HE
# define NU_WITH_UTF32HE_READER
# define NU_WITH_UTF32HE_WRITER
#endif /* NU_WITH_UTF32HE */
/* Enable all UTF-32 options */
#ifdef NU_WITH_UTF32
# define NU_WITH_UTF32_READER
# define NU_WITH_UTF32_WRITER
#endif /* NU_WITH_UTF32 */
/* Enable UTF-32LE and BE decoders of UTF-32 decoder is requested */
#ifdef NU_WITH_UTF32_READER
# define NU_WITH_UTF32LE_READER
# define NU_WITH_UTF32BE_READER
#endif /* NU_WITH_UTF32_READER */
/* Enable UTF-32LE and BE encoders of UTF-32 encoder is requested */
#ifdef NU_WITH_UTF32_WRITER
# define NU_WITH_UTF32LE_WRITER
# define NU_WITH_UTF32BE_WRITER
#endif /* NU_WITH_UTF32_WRITER */
/* Shortcut for all string functions */
#ifdef NU_WITH_STRINGS
# define NU_WITH_Z_STRINGS /* 0-terminated string functions */
# define NU_WITH_N_STRINGS /* unterminated string functions */
#endif /* NU_WITH_STRINGS */
/* Shortcut for extra string functions */
#ifdef NU_WITH_EXTRA
# define NU_WITH_Z_EXTRA /* extra functions for 0-terminated strings */
# define NU_WITH_N_EXTRA /* extra functions for unterminated strings */
#endif /* NU_WITH_STRINGS */
/* Enable collation functions */
#ifdef NU_WITH_COLLATION
# define NU_WITH_Z_COLLATION /* collation functions for 0-terminated strings */
# define NU_WITH_N_COLLATION /* collation functions for unterminated strings */
#endif /* NU_WITH_COLLATION */
/* Requirements for collation functions on 0-terminated strings */
#ifdef NU_WITH_Z_COLLATION
# define NU_WITH_Z_STRINGS
# define NU_WITH_TOUPPER /* nu_toupper() */
#endif
/* Requirements for collation functions
* on unterminated strings */
#ifdef NU_WITH_N_COLLATION
# define NU_WITH_N_STRINGS
# define NU_WITH_TOUPPER
#endif
/* Requirements for casemap functions */
#ifdef NU_WITH_CASEMAP
# define NU_WITH_TOLOWER /* nu_tolower() */
# define NU_WITH_TOUPPER
# define NU_WITH_TOFOLD
#endif /* NU_WITH_CASEMAP */
/* More requirements for collation functions all collation functions depends
* on NU_WITH_DUCET */
#if (defined NU_WITH_Z_COLLATION) || (defined NU_WITH_N_COLLATION)
# ifndef NU_WITH_DUCET
# define NU_WITH_DUCET
# endif
#endif
/* All collation and casemapping functions depends on NU_WITH_UDB */
#if (defined NU_WITH_Z_COLLATION) || (defined NU_WITH_N_COLLATION) \
|| (defined NU_WITH_TOLOWER) || (defined NU_WITH_TOUPPER) || (defined NU_WITH_TOFOLD) \
|| (defined NU_WITH_UNACCENT)
# ifndef NU_WITH_UDB
# define NU_WITH_UDB /* nu_udb_* functions, pretty much internal stuff */
# endif /* NU_WITH_UDB */
#endif
/* DUCET implementation depends on NU_WITH_UDB */
#ifdef NU_WITH_DUCET
# define NU_WITH_UDB
#endif /* NU_WITH_DUCET */
/* NU_WITH_UDB depends on NU_WITH_UTF8_READER because internal encoding
* of UDB is UTF-8 */
#ifdef NU_WITH_UDB
# define NU_WITH_UTF8_READER
#endif /* NU_WITH_UDB */
#endif /* NU_BUILD_CONFIG_H */

43
vendor/nunicode/include/libnu/defines.h vendored Normal file
View File

@@ -0,0 +1,43 @@
#ifndef NU_DEFINES_H
#define NU_DEFINES_H
/** @file
*/
/** @defgroup defines Defines
*/
#ifndef NU_EXPORT
# ifdef _WIN32
# define NU_EXPORT __declspec(dllexport)
# elif __GNUC__ >= 4
# ifdef NU_BUILD_STATIC
# define NU_EXPORT __attribute__ ((visibility ("hidden")))
# else
# define NU_EXPORT __attribute__ ((visibility ("default")))
# endif
# else
# define NU_EXPORT
# endif
#endif /* NU_EXPORT */
/** Integer version of Unicode specification implemented. 900 == 9.0.0
*
* @ingroup defines
*/
#define NU_UNICODE_VERSION 1000
/** Special limit value to unset limit on string. Used internally by nunicode.
*
* @ingroup defines
*/
#define NU_UNLIMITED ((const void *)(-1))
#ifdef _MSC_VER
#define ssize_t ptrdiff_t
#endif
#endif /* NU_DEFINES_H */

37
vendor/nunicode/include/libnu/ducet.h vendored Normal file
View File

@@ -0,0 +1,37 @@
#ifndef NU_DUCET_H
#define NU_DUCET_H
#include <stdint.h>
#include <libnu/config.h>
#include <libnu/defines.h>
#if defined (__cplusplus) || defined (c_plusplus)
extern "C" {
#endif
#ifdef NU_WITH_DUCET
/** Get DUCET value of codepoint
*
* Normally, for unlisted codepoints, this function will return number greater
* than max weight of listed codepoints, hence putting all unlisted codepoints
* (not letters and not numbers) to the end of the sorted list (in codepoint
* order).
*
* @ingroup udb
* @param codepoint codepoint
* @param weight previous weight for compound weight (not used here)
* @param context pointer passed to nu_strcoll()
* @return comparable weight of the codepoint
*/
NU_EXPORT
int32_t nu_ducet_weight(uint32_t codepoint, int32_t *weight, void *context);
#endif /* NU_WITH_DUCET */
#if defined (__cplusplus) || defined (c_plusplus)
}
#endif
#endif /* NU_DUCET_H */

71
vendor/nunicode/include/libnu/mph.h vendored Normal file
View File

@@ -0,0 +1,71 @@
#ifndef NU_MPH_H
#define NU_MPH_H
/* Intentionally undocumented
*
* http://iswsa.acm.org/mphf/index.html
*/
#include <stdint.h>
#include <sys/types.h>
#include <libnu/config.h>
#if defined (__cplusplus) || defined (c_plusplus)
extern "C" {
#endif
#ifdef NU_WITH_UDB
/* those need to be the same values as used in MPH generation */
#define PRIME 0x01000193
/** Calculate G offset from codepoint
*/
static inline
uint32_t _nu_hash(uint32_t hash, uint32_t codepoint) {
if (hash == 0) {
hash = PRIME;
}
return hash ^ codepoint;
}
/** Get hash value of Unicode codepoint
*/
static inline
uint32_t nu_mph_hash(const int16_t *G, size_t G_SIZE,
uint32_t codepoint) {
uint32_t h = _nu_hash(0, codepoint);
int16_t offset = G[h % G_SIZE];
if (offset < 0) {
return (uint32_t)(-offset - 1);
}
return (_nu_hash(offset, codepoint) % G_SIZE);
}
/** Lookup value in MPH
*/
static inline
uint32_t nu_mph_lookup(const uint32_t *V_C, const uint16_t *V_I,
uint32_t codepoint, uint32_t hash) {
const uint32_t *c = (V_C + hash);
const uint16_t *i = (V_I + hash);
/* due to nature of minimal perfect hash, it will always
* produce collision for codepoints outside of MPH original set.
* thus VALUES_C contain original codepoint to check if
* collision occurred */
return (*c != codepoint ? 0 : *i);
}
#endif /* NU_WITH_UDB */
#if defined (__cplusplus) || defined (c_plusplus)
}
#endif
#endif /* NU_MPH_H */

199
vendor/nunicode/include/libnu/strcoll.h vendored Normal file
View File

@@ -0,0 +1,199 @@
#ifndef NU_STRCOLL_H
#define NU_STRCOLL_H
/** @defgroup collation Collation functions
*
* All functions in this group are following full Unicode collation rules,
* i.e. nu_strstr(haystack, "Æ") will find "AE" in haystack and
* nu_strstr(haystack, "ß") will find "ss".
*
* Same applies for *every* function, nu_strchr(str, 0x00DF), as you would
* guess, will also find "ss" in str.
*
* Please expect this.
*
* Note on "n" functions variant: please see comment on this topic
* in strings.h
*/
#include <sys/types.h>
#include <libnu/config.h>
#include <libnu/casemap.h>
#include <libnu/defines.h>
#include <libnu/strings.h>
#if defined (__cplusplus) || defined (c_plusplus)
extern "C" {
#endif
#ifdef NU_WITH_TOFOLD
# define NU_FOLDING_FUNCTION nu_tofold
#else
# define NU_FOLDING_FUNCTION nu_toupper
#endif /* NU_WITH_TOFOLD */
#ifdef NU_WITH_Z_COLLATION
/** Locate codepoint in string
*
* @ingroup collation
* @param encoded encoded string
* @param c charater to locate
* @param read read (decode) function for encoded string
* @return pointer to codepoint in string or 0
*/
NU_EXPORT
const char* nu_strchr(const char *encoded, uint32_t c, nu_read_iterator_t read);
/** Locate codepoint in string ignoring case
*
* @ingroup collation
* @see nu_strchr
*/
NU_EXPORT
const char* nu_strcasechr(const char *encoded, uint32_t c, nu_read_iterator_t read);
/** Locate codepoint in string in reverse direction
*
* @ingroup collation
* @param encoded encoded string
* @param c charater to locate
* @param read read (decode) function for encoded string
* @return pointer to codepoint in string or 0
*/
NU_EXPORT
const char* nu_strrchr(const char *encoded, uint32_t c, nu_read_iterator_t read);
/** Locate codepoint in string in reverse direction, case-insensitive
*
* @ingroup collation
* @see nu_strrchr
*/
NU_EXPORT
const char* nu_strrcasechr(const char *encoded, uint32_t c, nu_read_iterator_t read);
/** Compare strings in case-sensitive manner.
*
* @ingroup collation
* @param s1 first encoded strings
* @param s2 second encoded strings
* @param s1_read read (decode) function for first string
* @param s2_read read (decode) function for second string
* @return -1, 0, 1
*/
NU_EXPORT
int nu_strcoll(const char *s1, const char *s2,
nu_read_iterator_t s1_read, nu_read_iterator_t s2_read);
/** Compare strings in case-insensitive manner.
*
* @ingroup collation
* @see nu_strcoll
*/
NU_EXPORT
int nu_strcasecoll(const char *s1, const char *s2,
nu_read_iterator_t s1_read, nu_read_iterator_t s2_read);
/** Find needle in haystack
*
* @ingroup collation
* @param haystack encoded haystack
* @param needle encoded needle
* @param haystack_read haystack read (decode) function
* @param needle_read needle read (decode) function
* @return pointer to found string or 0, will return
* haystack if needle is empty string
*/
NU_EXPORT
const char* nu_strstr(const char *haystack, const char *needle,
nu_read_iterator_t haystack_read, nu_read_iterator_t needle_read);
/** Find needle in haystack (case-insensitive)
*
* @ingroup collation
* @see nu_strstr
*/
NU_EXPORT
const char* nu_strcasestr(const char *haystack, const char *needle,
nu_read_iterator_t haystack_read, nu_read_iterator_t needle_read);
#endif /* NU_WITH_Z_COLLATION */
#ifdef NU_WITH_N_COLLATION
/**
* @ingroup collation
* @see nu_strchr
*/
NU_EXPORT
const char* nu_strnchr(const char *encoded, size_t max_len, uint32_t c,
nu_read_iterator_t read);
/**
* @ingroup collation
* @see nu_strcasechr
*/
NU_EXPORT
const char* nu_strcasenchr(const char *encoded, size_t max_len, uint32_t c,
nu_read_iterator_t read);
/**
* @ingroup collation
* @see nu_strrchr
*/
NU_EXPORT
const char* nu_strrnchr(const char *encoded, size_t max_len, uint32_t c,
nu_read_iterator_t read);
/**
* @ingroup collation
* @see nu_strrcasechr
*/
NU_EXPORT
const char* nu_strrcasenchr(const char *encoded, size_t max_len, uint32_t c,
nu_read_iterator_t read);
/**
* @ingroup collation
* @see nu_strcoll
*/
NU_EXPORT
int nu_strncoll(const char *s1, size_t s1_max_len,
const char *s2, size_t s2_max_len,
nu_read_iterator_t s1_read, nu_read_iterator_t s2_read);
/**
* @ingroup collation
* @see nu_strncoll
*/
NU_EXPORT
int nu_strcasencoll(const char *s1, size_t s1_max_len,
const char *s2, size_t s2_max_len,
nu_read_iterator_t s1_read, nu_read_iterator_t s2_read);
/**
* @ingroup collation
* @see nu_strstr
*/
NU_EXPORT
const char* nu_strnstr(const char *haystack, size_t haystack_max_len,
const char *needle, size_t needle_max_len,
nu_read_iterator_t haystack_read, nu_read_iterator_t needle_read);
/**
* @ingroup collation
* @see nu_strcasestr
*/
NU_EXPORT
const char* nu_strcasenstr(const char *haystack, size_t haystack_max_len,
const char *needle, size_t needle_max_len,
nu_read_iterator_t haystack_read, nu_read_iterator_t needle_read);
#endif /* NU_WITH_N_COLLATION */
#if defined (__cplusplus) || defined (c_plusplus)
}
#endif
#endif /* NU_STRCOLL_H */

View File

@@ -0,0 +1,232 @@
#ifndef NU_STRCOLL_INTERNAL_H
#define NU_STRCOLL_INTERNAL_H
/** @defgroup collation_internal Internal collation functions
*
* Functions in this group are mostly for the internal use. PLease use them
* with care.
*/
#include <libnu/config.h>
#include <libnu/casemap.h>
#include <libnu/defines.h>
#include <libnu/strings.h>
#if defined (__cplusplus) || defined (c_plusplus)
extern "C" {
#endif
/** Read (decode) iterator with transformation applied inside of it
*
* @ingroup collation_internal
* @see nu_default_compound_read
* @see nu_nocase_compound_read
*/
typedef const char* (*nu_compound_read_t)(
const char *encoded, const char *encoded_limit, nu_read_iterator_t encoded_read,
uint32_t *unicode, const char **tail);
/** Weight unicode codepoint (or several codepoints)
*
* 0 should always be weighted to 0. If your weight function need more
* than one codepoint - return negative value, which will be passed back to
* this function along with next codepoint.
*
* When function decided on weight and returned positive result, it has to
* fill weight with how many (Unicode) codepoints nunicode should rollback.
* E.g. function consumed "ZZS" and decided weight (in Hungarian collation),
* it fills 0 to \*weight because no rollback is needed. Then function
* consumed "ZZZ" and no weight available for such contraction - it
* returns weight for "Z" and fills \*weight with 2, to rollback
* redundant "ZZ".
*
* If string suddenly ends before weight function can decide (string limit
* reached), 0 will be passed additionally to the previous string to signal
* end of the string.
*
* @ingroup collation_internal
* @param u unicode codepoint to weight
* @param weight 0 at first call or (on sequential calls) pointer to negative
* weight previously returned by this function
* @param context pointer passed to _nu_strcoll() or _nu_strstr()
* @return positive codepoint weight or negative value if function need more
* codepoints
*/
typedef int32_t (*nu_codepoint_weight_t)(uint32_t u, int32_t *weight, void *context);
#if (defined NU_WITH_Z_COLLATION) || (defined NU_WITH_N_COLLATION)
/** Default compound read, equal to simply calling encoded_read(encoded, &unicode)
*
* @ingroup collation_internal
* @param encoded encoded string
* @param encoded_limit upper limit for encoded. NU_UNLIMITED for 0-terminated
* strings
* @param encoded_read read (decode) function
* @param unicode output unicode codepoint
* @param tail output pointer to compound tail, should never be 0
* @return pointer to next encoded codepoint
*/
static inline
const char* nu_default_compound_read(const char *encoded, const char *encoded_limit,
nu_read_iterator_t encoded_read, uint32_t *unicode,
const char **tail) {
(void)(encoded_limit);
(void)(tail);
return encoded_read(encoded, unicode);
}
/** Case-ignoring compound read, equal to calling
* encoded_read(encoded, &unicode) with nu_toupper() applied internally
*
* @ingroup collation_internal
* @param encoded encoded string
* @param encoded_limit upper limit for encoded. NU_UNLIMITED for 0-terminated
* strings
* @param encoded_read read (decode) function
* @param unicode output unicode codepoint
* @param tail output pointer to compound tail, should never be 0
* @return pointer to next encoded codepoint
*/
static inline
const char* nu_nocase_compound_read(const char *encoded, const char *encoded_limit,
nu_read_iterator_t encoded_read, uint32_t *unicode,
const char **tail) {
/* re-entry with tail != 0 */
if (*tail != 0) {
*tail = nu_casemap_read(*tail, unicode);
if (*unicode != 0) {
return encoded;
}
*tail = 0; // fall thru
}
if (encoded >= encoded_limit) {
*unicode = 0;
return encoded;
}
const char *p = encoded_read(encoded, unicode);
if (*unicode == 0) {
return p;
}
const char *map = NU_FOLDING_FUNCTION(*unicode);
if (map != 0) {
*tail = nu_casemap_read(map, unicode);
}
return p;
}
/** Internal interface for nu_strcoll
*
* @ingroup collation_internal
* @param lhs left-hand side encoded string
* @param lhs_limit upper limit for lhs, use NU_UNLIMITED for 0-terminated
* strings
* @param rhs right-hand side encoded string
* @param rhs_limit upper limit for rhs, use NU_UNLIMITED for 0-terminated
* strings
* @param it1 lhs read (decoding) function
* @param it2 rhs read (decoding) function
* @param com1 lhs compound read function
* @param com2 rhs compound read function
* @param weight codepoint weighting function
* @param context pointer which will be passed to weight
* @param collated_left (optional) number of codepoints collated in lhs
* @param collated_right (optional) number of codepoints collated in rhs
*
* @see nu_strcoll
* @see nu_default_compound_read
* @see nu_nocase_compound_read
* @see nu_ducet_weight
*/
NU_EXPORT
int _nu_strcoll(const char *lhs, const char *lhs_limit,
const char *rhs, const char *rhs_limit,
nu_read_iterator_t it1, nu_read_iterator_t it2,
nu_compound_read_t com1, nu_compound_read_t com2,
nu_codepoint_weight_t weight, void *context,
ssize_t *collated_left, ssize_t *collated_right);
/** Internal interface for nu_strchr
*
* @ingroup collation_internal
* @param lhs left-hand side encoded string
* @param lhs_limit upper limit for lhs, use NU_UNLIMITED for 0-terminated
* strings
* @param c unicode codepoint to look for
* @param read lhs read (decoding) function
* @param com lhs compound read function
* @param casemap casemapping function
* @param casemap_read casemapping result decoding function
*
* @see nu_strchr
* @see nu_default_compound_read
* @see nu_nocase_compound_read
* @see nu_toupper
* @see nu_tolower
*/
NU_EXPORT
const char* _nu_strchr(const char *lhs, const char *lhs_limit,
uint32_t c, nu_read_iterator_t read,
nu_compound_read_t com,
nu_casemapping_t casemap, nu_read_iterator_t casemap_read);
/** Internal interface for nu_strchr
*
* @ingroup collation_internal
* @see _nu_strchr
*/
NU_EXPORT
const char* _nu_strrchr(const char *encoded, const char *limit,
uint32_t c, nu_read_iterator_t read,
nu_compound_read_t com,
nu_casemapping_t casemap, nu_read_iterator_t casemap_read);
/** Internal interface for nu_strcoll
*
* @ingroup collation_internal
* @param haystack encoded haystack
* @param haystack_limit upper limit for haystack, use NU_UNLIMITED for
* 0-terminated strings
* @param needle encoded needle string
* @param needle_limit upper limit for needle, use NU_UNLIMITED for
* 0-terminated strings
* @param it1 haystack read (decoding) function
* @param it2 needle read (decoding) function
* @param com1 haystack compound read function
* @param com2 needle compound read function
* @param casemap casemapping function
* @param casemap_read casemapping result decoding function
* @param weight codepoint weighting function
* @param context pointer which will be passed to weight
*
* @see nu_strstr
* @see nu_default_compound_read
* @see nu_nocase_compound_read
* @see nu_toupper
* @see nu_tolower
* @see nu_ducet_weight
*/
NU_EXPORT
const char* _nu_strstr(const char *haystack, const char *haystack_limit,
const char *needle, const char *needle_limit,
nu_read_iterator_t it1, nu_read_iterator_t it2,
nu_compound_read_t com1, nu_compound_read_t com2,
nu_casemapping_t casemap, nu_read_iterator_t casemap_read,
nu_codepoint_weight_t weight, void *context);
#endif /* (defined NU_WITH_Z_COLLATION) || (defined NU_WITH_N_COLLATION) */
#if defined (__cplusplus) || defined (c_plusplus)
}
#endif
#endif /* NU_STRCOLL_INTERNAL_H */

142
vendor/nunicode/include/libnu/strings.h vendored Normal file
View File

@@ -0,0 +1,142 @@
#ifndef NU_STRINGS_H
#define NU_STRINGS_H
/** @defgroup strings String functions
*
* Note on "n" functions variant: "n" is in bytes in all functions,
* note though that those are not for memory overrun control.
* They are just for strings not having terminating 0 byte and those
* functions won't go further than m-th *codepoint* in string, but might go
* further than n-th byte in case of multibyte sequence.
*
* E.g.: ``nu_strnlen("абв", 3, nu_utf8_read);``.
* Since codepoints are 2-byte sequences, nu_strnlen() won't go further than 2nd
* codepoint, but will go further than 3rd byte while reading "б".
*/
#include <stdint.h>
#include <sys/types.h>
#include <libnu/config.h>
#include <libnu/defines.h>
#if defined (__cplusplus) || defined (c_plusplus)
extern "C" {
#endif
/**
* @defgroup iterators Iterators
* @defgroup transformations Codepoint transformations
* @defgroup transformations_internal Codepoint transformations (internal)
*/
/** Read (decode) iterator
*
* @ingroup iterators
* @see nu_utf8_read
*/
typedef const char* (*nu_read_iterator_t)(const char *encoded, uint32_t *unicode);
/** Read (decode) backwards iterator
*
* Arguments intentionally reversed to not mix this with nu_read_iterator_t.
* Reverse read is not compatible with any of string functions.
*
* @ingroup iterators
* @see nu_utf8_revread
*/
typedef const char* (*nu_revread_iterator_t)(uint32_t *unicode, const char *encoded);
/** Write (encode) iterator
*
* @ingroup iterators
* @see nu_utf8_write
*/
typedef char* (*nu_write_iterator_t)(uint32_t unicode, char *encoded);
/** Transform codepoint
*
* @ingroup transformations
* @see nu_toupper
* @see nu_tolower
*/
typedef const char* (*nu_transformation_t)(uint32_t codepoint);
/** Transform codepoint (used internally). This kind of transformation
* delegates iteration on string to transformation implementation.
*
* @ingroup transformations_internal
* @see _nu_toupper
* @see _nu_tolower
*/
typedef const char* (*nu_transform_read_t)(
const char *encoded, const char *limit, nu_read_iterator_t read,
uint32_t *u, const char **transformed,
void *context);
#if (defined NU_WITH_Z_STRINGS) || (defined NU_WITH_N_STRINGS)
#endif /* NU_WITH_Z_STRINGS NU_WITH_N_STRINGS */
#ifdef NU_WITH_Z_STRINGS
/** Get decoded string codepoints length
*
* @ingroup strings
* @param encoded encoded string
* @param it decoding function
* @return string length or negative error
*
* @see nu_strnlen
*/
NU_EXPORT
ssize_t nu_strlen(const char *encoded, nu_read_iterator_t it);
/** Get encoded string bytes length (encoding variant)
*
* @ingroup strings
* @param unicode unicode codepoints
* @param it encoding function
* @return byte length or negative error
*
* @see nu_bytenlen
*/
NU_EXPORT
ssize_t nu_bytelen(const uint32_t *unicode, nu_write_iterator_t it);
/** Get encoded string bytes length
*
* @ingroup strings
* @param encoded encoded string
* @param it decoding function
* @return string length or negative error
*/
NU_EXPORT
ssize_t nu_strbytelen(const char *encoded, nu_read_iterator_t it);
#endif /* NU_WITH_Z_STRINGS */
#ifdef NU_WITH_N_STRINGS
/**
* @ingroup strings
* @see nu_strlen
*/
NU_EXPORT
ssize_t nu_strnlen(const char *encoded, size_t max_len, nu_read_iterator_t it);
/**
* @ingroup strings
* @see nu_bytelen
*/
NU_EXPORT
ssize_t nu_bytenlen(const uint32_t *unicode, size_t max_len,
nu_write_iterator_t it);
#endif /* NU_WITH_N_STRINGS */
#if defined (__cplusplus) || defined (c_plusplus)
}
#endif
#endif /* NU_STRINGS_H */

81
vendor/nunicode/include/libnu/udb.h vendored Normal file
View File

@@ -0,0 +1,81 @@
#ifndef NU_UDB_H
#define NU_UDB_H
#include <stdint.h>
#include <sys/types.h>
#include <libnu/config.h>
#include <libnu/defines.h>
#include <libnu/mph.h>
#include <libnu/strings.h>
#include <libnu/utf8.h>
/** @defgroup udb Unicode database
*
* Note: never use it directly, it is subject to change in next releases
*/
#if defined (__cplusplus) || defined (c_plusplus)
extern "C" {
#endif
#ifdef NU_WITH_UDB
#define NU_UDB_DECODING_FUNCTION (nu_utf8_read)
#define nu_udb_read (nu_utf8_read)
/** Lookup value in UDB
*
* Similar to nu_udb_lookup(), but doesn't look into COMBINED
*
* @ingroup udb
* @see nu_udb_lookup
* @return raw value from VALUES_I or 0 if value wasn't found
*/
static inline
uint32_t nu_udb_lookup_value(uint32_t codepoint,
const int16_t *G, size_t G_SIZE,
const uint32_t *VALUES_C, const uint16_t *VALUES_I) {
uint32_t hash = nu_mph_hash(G, G_SIZE, codepoint);
uint32_t value = nu_mph_lookup(VALUES_C, VALUES_I, codepoint, hash);
return value;
}
/** Lookup data in UDB
*
* Returned data is encoded, therefore you need to use p = it(p, &u) to
* fetch it. Returned string might contain more than 1 codepoint.
*
* @ingroup udb
* @param codepoint unicode codepoint
* @param G first MPH table
* @param G_SIZE first table number of elements (original MPH set size)
* @param VALUES_C codepoints array
* @param VALUES_I offsets array
* @param COMBINED joined values addressed by index stored in VALUES
* @return looked up data or 0
*/
static inline
const char* nu_udb_lookup(uint32_t codepoint,
const int16_t *G, size_t G_SIZE,
const uint32_t *VALUES_C, const uint16_t *VALUES_I, const uint8_t *COMBINED) {
uint32_t combined_offset = nu_udb_lookup_value(codepoint,
G, G_SIZE, VALUES_C, VALUES_I);
if (combined_offset == 0) {
return 0;
}
return (const char *)(COMBINED + combined_offset);
}
#endif /* NU_WITH_UDB */
#if defined (__cplusplus) || defined (c_plusplus)
}
#endif
#endif /* NU_UDB_H */

View File

@@ -0,0 +1,57 @@
#ifndef NU_UNACCENT_H
#define NU_UNACCENT_H
#include <libnu/casemap.h>
#include <libnu/strings.h>
#if defined (__cplusplus) || defined (c_plusplus)
extern "C" {
#endif
/**
* @example unaccent.c
*/
#ifdef NU_WITH_UNACCENT
/** Return unaccented value of codepoint. If codepoint is
* accent (disacritic) itself, returns empty string.
*
* @note This is nunicode extenstion.
*
* @ingroup transformations
* @param codepoint unicode codepoint
* @return unaccented codepoint, 0 if mapping doesn't exist
* and empty string if codepoint is accent
*/
NU_EXPORT
const char* nu_tounaccent(uint32_t codepoint);
/** Return unaccented value of codepoint. If codepoint is
* accent (disacritic) itself, returns empty string.
*
* @note This is nunicode extenstion.
*
* @ingroup transformations_internal
* @param encoded pointer to encoded string
* @param limit memory limit of encoded string or NU_UNLIMITED
* @param read read (decoding) function
* @param u (optional) codepoint which was (or wasn't) transformed
* @param transform output value of codepoint unaccented or 0 if
* mapping doesn't exist, or empty string if codepoint is accent.
* Can't be NULL, supposed to be decoded with nu_casemap_read
* @param context not used
* @return pointer to the next codepoint in string
*/
NU_EXPORT
const char* _nu_tounaccent(const char *encoded, const char *limit, nu_read_iterator_t read,
uint32_t *u, const char **transform,
void *context);
#endif /* NU_WITH_UNACCENT */
#if defined (__cplusplus) || defined (c_plusplus)
}
#endif
#endif /* NU_UNACCENT_H */

130
vendor/nunicode/include/libnu/utf8.h vendored Normal file
View File

@@ -0,0 +1,130 @@
#ifndef NU_UTF8_H
#define NU_UTF8_H
#include <stdint.h>
#include <sys/types.h>
#include <libnu/config.h>
#include <libnu/defines.h>
#include <libnu/utf8_internal.h>
/** @defgroup utf8 UTF-8 support
*
* Note: There is no utf8_string[i] equivalent - it will be slow,
* use nu_utf8_read() and nu_utf8_revread() instead
*
* @example utf8.c
* @example revread.c
*/
#if defined (__cplusplus) || defined (c_plusplus)
extern "C" {
#endif
#ifdef NU_WITH_UTF8_READER
/** Read codepoint from UTF-8 string
*
* @ingroup utf8
* @param utf8 pointer to UTF-8 encoded string
* @param unicode output unicode codepoint or 0
* @return pointer to next codepoint in UTF-8 string
*/
static inline
const char* nu_utf8_read(const char *utf8, uint32_t *unicode) {
uint32_t c = *(unsigned char *)(utf8);
if (c >= 0x80) {
if (c < 0xE0) {
if (unicode != 0) {
utf8_2b(utf8, unicode);
}
return utf8 + 2;
}
else if (c < 0xF0) {
if (unicode != 0) {
utf8_3b(utf8, unicode);
}
return utf8 + 3;
}
else {
if (unicode != 0) {
utf8_4b(utf8, unicode);
}
return utf8 + 4;
}
}
else if (unicode != 0) {
*unicode = c;
}
return utf8 + 1;
}
#ifdef NU_WITH_REVERSE_READ
/** Read codepoint from UTF-8 string in backward direction
*
* Note that it is your responsibility to check that this call
* is not going under beginning of encoded string. Normally you
* shouldn't call it like this: nu_utf8_revread(&u, "hello"); which
* will result in undefined behavior
*
* @ingroup utf8
* @param unicode output unicode codepoint or 0
* @param utf8 pointer to UTF-8 encoded string
* @return pointer to previous codepoint in UTF-8 string
*/
static inline
const char* nu_utf8_revread(uint32_t *unicode, const char *utf8) {
/* valid UTF-8 has either 10xxxxxx (continuation byte)
* or beginning of byte sequence */
const char *p = utf8 - 1;
while (((unsigned char)(*p) & 0xC0) == 0x80) { /* skip every 0b10000000 */
--p;
}
if (unicode != 0) {
nu_utf8_read(p, unicode);
}
return p;
}
#endif /* NU_WITH_REVERSE_READ */
#ifdef NU_WITH_VALIDATION
/** Validate codepoint in string
*
* @ingroup utf8
* @param encoded buffer with encoded string
* @param max_len buffer length
* @return codepoint length or 0 on error
*/
NU_EXPORT
int nu_utf8_validread(const char *encoded, size_t max_len);
#endif /* NU_WITH_VALIDATION */
#endif /* NU_WITH_UTF8_READER */
#ifdef NU_WITH_UTF8_WRITER
/** Write unicode codepoints into UTF-8 encoded string
*
* @ingroup utf8
* @param unicode unicode codepoint
* @param utf8 pointer to buffer to write UTF-8 encoded text to,
* should be large enough to hold encoded value
* @return pointer to byte after last written
*/
NU_EXPORT
char* nu_utf8_write(uint32_t unicode, char *utf8);
#endif /* NU_WITH_UTF8_WRITER */
#if defined (__cplusplus) || defined (c_plusplus)
}
#endif
#endif /* NU_UTF8_H */

View File

@@ -0,0 +1,168 @@
#ifndef NU_UTF8_INTERNAL_H
#define NU_UTF8_INTERNAL_H
#include <sys/types.h>
static inline
unsigned utf8_char_length(const char c) {
const unsigned char uc = c;
if ((uc & 0x80) == 0) return 1;
if ((uc & 0xE0) == 0xC0) return 2;
if ((uc & 0xF0) == 0xE0) return 3;
if ((uc & 0xF8) == 0xF0) return 4;
return 0; /* undefined */
}
static inline
void utf8_2b(const char *p, uint32_t *codepoint) {
const unsigned char *up = (const unsigned char *)(p);
/* UTF-8: 110xxxxx 10xxxxxx
* |__ 1st unicode octet
* 110xxx00 << 6 -> 00000xxx 00000000 |
* --------
* 110000xx << 6 -> 00000xxx xx000000 |__ 2nd unicode octet
* 10xxxxxx -> 00000xxx xxxxxxxx |
* -------- */
*codepoint = (*(up) & 0x1C) << 6
| ((*(up) & 0x03) << 6 | (*(up + 1) & 0x3F));
}
static inline
void utf8_3b(const char *p, uint32_t *codepoint) {
const unsigned char *up = (const unsigned char *)(p);
/* UTF-8: 1110xxxx 10xxxxxx 10xxxxxx
*
* 1110xxxx << 12 -> xxxx0000 0000000 |__ 1st unicode octet
* 10xxxx00 << 6 -> xxxxxxxx 0000000 |
* --------
* 100000xx << 6 -> xxxxxxxx xx00000 |__ 2nd unicode octet
* 10xxxxxx -> xxxxxxxx xxxxxxx |
* ------- */
*codepoint =
((*(up) & 0x0F) << 12 | (*(up + 1) & 0x3C) << 6)
| ((*(up + 1) & 0x03) << 6 | (*(up + 2) & 0x3F));
}
static inline
void utf8_4b(const char *p, uint32_t *codepoint) {
const unsigned char *up = (const unsigned char *)(p);
/* UTF-8: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
*
* 11110xxx << 18 -> 00xxx00 00000000 00000000 |__ 1st unicode octet
* 10xx0000 << 12 -> 00xxxxx 00000000 00000000 |
* -------
* 1000xxxx << 12 -> 00xxxxx xxxx0000 00000000 |__ 2nd unicode octet
* 10xxxx00 << 6 -> 00xxxxx xxxxxxxx 00000000 |
* --------
* 100000xx << 6 -> 00xxxxx xxxxxxxx xx000000 |__ 3rd unicode octet
* 10xxxxxx -> 00xxxxx xxxxxxxx xxxxxxxx |
* --------- */
*codepoint =
((*(up) & 0x07) << 18 | (*(up + 1) & 0x30) << 12)
| ((*(up + 1) & 0x0F) << 12 | (*(up + 2) & 0x3C) << 6)
| ((*(up + 2) & 0x03) << 6 | (*(up + 3) & 0x3F));
}
static inline
unsigned utf8_codepoint_length(uint32_t codepoint) {
if (codepoint < 128) return 1;
if (codepoint < 0x0800) return 2;
if (codepoint < 0x10000) return 3;
return 4; /* de facto max length in UTF-8 */
}
static inline
void b2_utf8(uint32_t codepoint, char *p) {
unsigned char *up = (unsigned char *)(p);
/* UNICODE: 00000xxx xxxxxxxx
*
* 00000xxx >> 6 -> 110xxx00 10000000 |__ 1st UTF-8 octet
* xxxxxxxx >> 6 -> 110xxxxx 10000000 |
* --------
* |__ 2nd UTF-8 octet
* xxxxxxxx -> 110xxxxx 10xxxxxx |
* -------- */
*(up) = (0xC0 | (codepoint & 0xFF00) >> 6 | (codepoint & 0xFF) >> 6);
*(up + 1) = (0x80 | (codepoint & 0x3F));
}
static inline
void b3_utf8(uint32_t codepoint, char *p) {
unsigned char *up = (unsigned char *)(p);
/* UNICODE: xxxxxxxx xxxxxxxx
* |__ 1st UTF-8 octet
* xxxxxxxx >> 12 -> 1110xxxx 10000000 10000000 |
* --------
* xxxxxxxx >> 6 -> 1110xxxx 10xxxx00 10000000 |__ 2nd UTF-8 octet
* xxxxxxxx >> 6 -> 1110xxxx 10xxxxxx 10000000 |
* --------
* |__ 3rd UTF-8 octet
* xxxxxxxx -> 1110xxxx 10xxxxxx 10xxxxxx |
* -------- */
*(up) = (0xE0 | (codepoint & 0xF000) >> 12);
*(up + 1) = (0x80 | (codepoint & 0x0F00) >> 6 | (codepoint & 0xC0) >> 6);
*(up + 2) = (0x80 | (codepoint & 0x3F));
}
static inline
void b4_utf8(uint32_t codepoint, char *p) {
unsigned char *up = (unsigned char *)(p);
/* UNICODE: 000xxxxx xxxxxxxx xxxxxxxx
* |__ 1st UTF-8 octet
* 000xxxxx >> 18 -> 11110xxx 1000000 10000000 10000000 |
* --------
* 000xxxxx >> 12 -> 11110xxx 10xx000 10000000 10000000 |__ 2nd UTF-8 octet
* xxxxxxxx >> 12 -> 11110xxx 10xxxxx 10000000 10000000 |
* -------
* xxxxxxxx >> 6 -> 11110xxx 10xxxxx 10xxxxx0 10000000 |__ 3rd UTF-8 octet
* xxxxxxxx >> 6 -> 11110xxx 10xxxxx 10xxxxxx 10000000 |
* --------
* |__ 4th UTF-8 octet
* xxxxxxxx -> 11110xxx 10xxxxx 10xxxxxx 10000000 | */
*(up) = (0xF0 | ((codepoint & 0x1C0000) >> 18));
*(up + 1) = (0x80 | (codepoint & 0x030000) >> 12 | (codepoint & 0x00E000) >> 12);
*(up + 2) = (0x80 | (codepoint & 0x001F00) >> 6 | (codepoint & 0x0000E0) >> 6);
*(up + 3) = (0x80 | (codepoint & 0x3F));
}
static inline
int utf8_validread_basic(const char *p, size_t max_len) {
const unsigned char *up = (const unsigned char *)(p);
/* it should be 0xxxxxxx or 110xxxxx or 1110xxxx or 11110xxx
* latter should be followed by number of 10xxxxxx */
unsigned len = utf8_char_length(*p);
/* codepoints longer than 6 bytes does not currently exist
* and not currently supported
* TODO: longer UTF-8 sequences support
*/
if (max_len < len) {
return 0;
}
switch (len) {
case 1: return 1; /* one byte codepoint */
case 2: return ((*(up + 1) & 0xC0) == 0x80 ? 2 : 0);
case 3: return ((*(up + 1) & 0xC0) == 0x80
&& (*(up + 2) & 0xC0) == 0x80 ? 3 : 0);
case 4: return ((*(up + 1) & 0xC0) == 0x80
&& (*(up + 2) & 0xC0) == 0x80
&& (*(up + 3) & 0xC0) == 0x80 ? 4 : 0);
}
return 0;
}
#endif /* NU_UTF8_INTERNAL_H */

65
vendor/nunicode/src/libnu/ducet.c vendored Normal file
View File

@@ -0,0 +1,65 @@
#include <assert.h>
#include <libnu/ducet.h>
#include <libnu/udb.h>
#ifdef NU_WITH_DUCET
#include "gen/_ducet.c"
#ifndef NU_DISABLE_CONTRACTIONS
# include "gen/_ducet_switch.c"
#else
const size_t _NU_DUCET_CONTRACTIONS = 0;
#endif
static size_t _nu_ducet_weights_count() {
return NU_DUCET_G_SIZE + _NU_DUCET_CONTRACTIONS;
}
int32_t nu_ducet_weight(uint32_t codepoint, int32_t *weight, void *context) {
(void)(weight);
(void)(context);
assert(_nu_ducet_weights_count() < 0x7FFFFFFF - 0x10FFFF);
#ifndef NU_DISABLE_CONTRACTIONS
int32_t switch_value = _nu_ducet_weight_switch(codepoint, weight, context);
/* weight switch should return weight (if any) and fill value of *weight
* with fallback (if needed). returned value of 0 is impossible result - this
* special case is already handled above, this return value indicates that switch
* couldn't find weight for a codepoint */
if (switch_value != 0) {
return switch_value;
}
#endif
/* special case switch after contractions switch
* to let state-machine figure out its state on abort */
if (codepoint == 0) {
return 0;
}
uint32_t mph_value = nu_udb_lookup_value(codepoint, NU_DUCET_G, NU_DUCET_G_SIZE,
NU_DUCET_VALUES_C, NU_DUCET_VALUES_I);
return (mph_value != 0
? (int32_t)(mph_value)
: (int32_t)(codepoint + _nu_ducet_weights_count()));
/* ISO/IEC 14651 requests that codepoints with undefined weight should be
* sorted before max weight in collation table. This way all codepoints
* defined in ducet would have weight under a value of _nu_ducet_weights_count(),
* all undefined codepoints would have weight under
* 0x10FFFF + _nu_ducet_weights_count() - 1, max weight will be
* 0x10FFFF + _nu_ducet_weights_count() */
/* Regarding integer overflow:
*
* int32_t can hold 0xFFFFFFFF / 2 = 0x7FFFFFFF positive numbers, this
* function can safely offset codepoint value up to +2146369536 without
* risk of overflow. Thus max collation table size supported is
* 2146369536 (0x7FFFFFFF - 0x10FFFF) */
}
#endif /* NU_WITH_DUCET */

6197
vendor/nunicode/src/libnu/gen/_ducet.c vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

846
vendor/nunicode/src/libnu/gen/_tolower.c vendored Normal file
View File

@@ -0,0 +1,846 @@
/* Automatically generated file (mph.py), 1490539881
*
* Tag : NU_TOLOWER
* Prime : 01000193,
* G size : 1304,
* Combined length : 5006,
* Encoding : UTF-8
*/
#include <stdint.h>
const int16_t NU_TOLOWER_G[] = {
0, 1, 0, 1, -1279, 1, 0, 1, 1, 0, 1, -1277,
1, -1271, 1, -1269, 1, 0, 1, 0, -1267, 0, 1, 0,
1, 1, 1, 1, 0, 1, -1265, 1, 0, -1256, 0, -1254,
-1238, -1236, -1220, 1, -1194, 1, 0, 1, -1160, -1153, -1147, -1143,
0, 1, -1135, -1133, -1131, 1, 0, 1, 1, 1, 5, 1,
1, 1, 9, 1, -1129, 3, -1117, 2, -1116, 1, -1115, 1,
-1112, 1, -1111, 1, -1110, 1, -1108, 1, -1106, 1, -1103, 1,
-1101, 1, -1090, 1, 0, 1, 0, 5, 0, 32, 0, 32,
0, 1, 0, 1, 0, 1, 0, 1, -1052, 1, -1049, 1,
-1019, 1, -1016, 1, -1013, 3, -1012, 4, -1010, 1, -1007, 1,
-1005, -1000, -999, -998, -997, -996, -995, -994, 0, 3, 0, 2,
0, 1, 0, 2, 0, 1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 0, 1, 0, 4, 0, 1, 0, 5,
0, 1, 0, 4, -992, 1, -991, 4, -990, 1, -989, 1,
0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, -985, -984, -982, 1, 0, -981, -980, -979,
0, 1, 0, 1, 0, 1, 0, 1, -978, 2, -977, 1,
-976, 1, -975, 1, -974, 1, -973, 1, -972, 2, -971, 1,
-970, 3, -969, 2, -968, 1, -966, 1, -964, 1, -963, 1,
-962, 2, -961, 1, 0, -949, 0, -904, 0, -902, 0, -900,
0, -898, 0, -896, 0, -894, 0, -893, 0, -892, 0, -891,
0, -890, 0, -889, 0, -888, 0, -887, 0, -881, 0, -879,
0, -878, 0, -877, 0, -876, 0, -875, -874, 1, -873, 1,
0, 1, -872, 1, -871, 2, -870, 14, 0, 24, -869, 24,
-866, 1, -865, 1, -864, 1, -863, 4, 14, 1, 25, 1,
29, 1, 49, 1, -862, 2, -861, 1, -860, 2, -859, 2,
0, -858, 0, -856, 0, -854, 0, -853, 0, 0, 0, 0,
0, 0, 0, 0, -852, -849, -848, -847, -846, -845, 0, 0,
1, -844, -843, -842, -841, -840, -839, -838, -837, -836, -834, -832,
-831, -830, -828, -826, -824, -822, -821, -820, -819, -818, -817, -816,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -815, -814, -813, -812, -811, -810, -809, -808,
-807, -804, -798, -797, -796, -795, -793, -790, -788, -785, -783, -782,
-778, -777, -776, -775, 9, 42, 45, 46, 76, 76, 94, 97,
-774, 104, 125, 126, -773, -772, -770, -768, 185, 186, 191, -767,
197, 208, 224, 236, 5, 6, 56, 56, 60, 60, 71, 81,
-766, -765, -764, -763, -762, -761, -760, -759, 31, 74, 80, 85,
88, 92, 92, 92, -758, -757, -756, -754, -753, -752, -751, -750,
0, 0, 0, 0, 0, 0, 0, 0, -749, -748, -747, 0,
-746, -745, -744, -743, 1, 1, 1, 4, 2, -742, 16, 18,
0, -741, 0, 0, 0, -740, -739, 0, 0, -738, -737, -734,
-731, -730, 0, -728, 0, 0, 0, 0, 0, -725, 0, 0,
-724, -723, 0, 0, 0, 0, 0, 0, -722, 0, -721, -720,
-719, -718, -717, -716, -715, -714, -713, -712, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -711, 0, -710,
0, -709, 0, -708, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -707, 0, 0, 0, -706, -705, -704, -703,
1, -702, -701, 1, -700, 1, 1, -699, 1, 1, 1, -698,
0, -697, 0, -696, 0, -695, 0, -694, 0, -693, 0, -692,
0, -691, 0, -690, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -689, -688, -687, -686,
-685, -684, -683, -682, -681, 3, -680, 2, -679, 2, -678, -677,
-676, -675, -674, -673, 1, -672, -671, -670, -669, -668, -667, -666,
-665, -664, -663, -662, -661, -660, -659, -658, -657, -656, -655, -654,
-653, 8, -652, 8, -651, 40, -650, -649, -648, 4, -647, 64,
-646, 72, -645, 72, -644, 56, -643, 56, -642, 65, -641, 65,
8, -640, -639, -638, 0, 0, 8, -637, -636, -635, -634, -633,
0, -632, 0, -631, -630, -629, -628, -627, -626, -625, -624, -623,
-622, 64, -621, 64, -620, 64, -619, 64, -618, -617, 0, -616,
0, -615, -614, -613, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -612, 0, -611,
0, -610, 0, -609, 0, -608, 0, -607, 0, -606, 0, -605,
0, -604, 0, -603, 0, -602, 0, -601, 0, -600, 0, -599,
0, -598, 0, -597, 0, 1, 0, -596, 0, -595, 0, -594,
-593, 1, 0, -591, 0, 1, -589, -587, 0, 2, 0, -585,
0, 4, 0, 14, 0, 19, 0, 20, 0, 16, 0, 17,
0, -584, 0, -583, 0, -582, 0, -581, 0, -580, 0, -578,
0, -571, 0, -569, -568, -567, -566, -565, 0, 4, -563, 4,
0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, -562, 0, -561, 0, 0, -560, -559, 0,
0, -558, 0, -557, 0, -556, 0, -554, 0, -553, 0, -552,
0, -551, 0, -550, 0, -549, 0, -548, 0, -546, 0, -544,
0, -543, 0, -542, 0, 0, 0, 0, 0, -541, 0, -540,
0, -539, 0, -538, 0, -537, 0, -536, 0, -535, 0, -534,
-533, -532, -531, -530, -529, -528, -527, -526, -525, -524, -523, -522,
-521, -520, -519, -518, -517, -516, -515, -514, -513, -511, -509, -507,
-505, -503, -501, -499, -498, -497, -495, -493, 0, 32, -491, 32,
0, -489, 0, -487, 0, -485, 0, -484, 0, -481, 0, -479,
-478, 40, -477, 40, -476, 41, -474, 41, -472, 33, -471, 33,
-470, 51, -468, 53, 0, -466, 0, -464, 0, -463, 0, -462,
0, -461, 0, -459, 0, -457, 0, -456, 0, -455, 0, -453,
0, -452, 0, -451, 0, -450, 0, -449, 0, -447, 0, -444,
0, 34, 0, 33, 0, 33, 0, 79, 0, 92, 0, 92,
0, 126, 0, 167, -439, 4, -438, 4, -437, 8, -436, 8,
-432, 26, -428, 38, -421, 40, -419, 40, 47, 8, 73, 423,
73, 76, 89, 105, 132, 241, 305, 306, 317, 318, 324, 324,
244, 9, 459, 8, -416, 142, -415, 44, -412, -410, 0, -409,
0, -405, -403, -395, 1, 64, 9, 65, 1, 64, 4, 64,
-393, 81, 128, 65, -390, 81, -389, 80, 1, 64, 1, 64,
145, 76, 159, 83, 213, 84, 379, 87, 377, 107, 377, 109,
-388, -387, -386, -385, 0, 0, 0, -383, 0, 0, 0, 0,
0, 0, 0, 0, 1, 64, 2, 64, -375, 80, -371, 64,
-369, 80, -359, 80, 0, -357, -355, 80, -353, 14, -343, 32,
0, -339, 0, 37, -335, 112, -330, 197, -327, 193, -320, 200,
-315, 174, 288, 34, 0, 0, -308, -303, 236, 201, 358, -285,
544, 1, -254, 2, 544, 33, 548, 32, 32, 32, 32, 32,
0, 17, -252, -250, 14, 1, 0, 17, 4, 1, 37, 6,
9, 2, -232, 8, 21, 40, 32, -231, 39, 40, 41, -230,
-228, 86, -226, 1, -152, 227, -143, 6, };
const size_t NU_TOLOWER_G_SIZE = sizeof(NU_TOLOWER_G) / sizeof(*NU_TOLOWER_G);
/* codepoints */
const uint32_t NU_TOLOWER_VALUES_C[] = {
0x01E908, 0x001E92, 0x001E90, 0x01E90A, 0x000533, 0x001E94, 0x00054A, 0x000548,
0x01E912, 0x00054C, 0x00004D, 0x000055, 0x00050C, 0x00054E, 0x00050E, 0x001E9E,
0x000520, 0x001EA2, 0x01E91A, 0x000522, 0x001EA0, 0x001EA4, 0x000508, 0x001EA6,
0x000512, 0x000510, 0x000056, 0x000057, 0x001E8C, 0x00004C, 0x001E8E, 0x000516,
0x01E90C, 0x001EB0, 0x000532, 0x001EB2, 0x000059, 0x001EB4, 0x000058, 0x001EB6,
0x000541, 0x001EB8, 0x000543, 0x001EBA, 0x000518, 0x001EBC, 0x00051A, 0x001EBE,
0x001EC4, 0x001EC0, 0x00005A, 0x001EC2, 0x01E91B, 0x000054, 0x01E910, 0x001EC6,
0x001ECC, 0x000555, 0x000553, 0x001ECA, 0x01E914, 0x001EC8, 0x01E916, 0x001ECE,
0x000551, 0x001ED2, 0x001ED0, 0x000514, 0x01E91D, 0x000534, 0x001ED4, 0x001ED6,
0x00051E, 0x001ED8, 0x01041B, 0x001EDA, 0x00004A, 0x001EDC, 0x00004B, 0x001EDE,
0x01E919, 0x001EE0, 0x01E91E, 0x001EE2, 0x000535, 0x001EE4, 0x01E91F, 0x001EE6,
0x00FF28, 0x001EE8, 0x000053, 0x00FF2A, 0x00FF2C, 0x00FF2D, 0x00FF2E, 0x00FF2F,
0x000531, 0x01E920, 0x000536, 0x001EF2, 0x001EF0, 0x001EF4, 0x000537, 0x001EF6,
0x01041A, 0x001EF8, 0x00FF38, 0x001EFA, 0x010419, 0x001EFC, 0x010418, 0x001EFE,
0x000048, 0x000049, 0x00004E, 0x00004F, 0x010423, 0x01E91C, 0x00FF24, 0x00FF26,
0x000052, 0x0118A2, 0x0118A0, 0x01041D, 0x000051, 0x0118A4, 0x000050, 0x0118A6,
0x01E90E, 0x0118A8, 0x000047, 0x0118AA, 0x0118AE, 0x0118AC, 0x00054B, 0x01E903,
0x0118B2, 0x0118B0, 0x01041E, 0x01041F, 0x001F39, 0x0118B4, 0x001F2D, 0x0118B6,
0x000526, 0x0118B8, 0x00FF32, 0x0118BA, 0x0118BE, 0x0118BC, 0x000046, 0x001F2F,
0x001F08, 0x001F28, 0x001F2C, 0x001F0A, 0x001F0C, 0x001F0D, 0x001F0E, 0x001F0F,
0x010422, 0x01E921, 0x010402, 0x00051C, 0x001F3C, 0x000045, 0x001F3F, 0x00053B,
0x000044, 0x010421, 0x001F18, 0x001F3A, 0x001F3E, 0x010420, 0x001F38, 0x001F3B,
0x010424, 0x010425, 0x010426, 0x00053A, 0x010401, 0x01041C, 0x010400, 0x010427,
0x001F49, 0x001F48, 0x001F4B, 0x001F4A, 0x0104B5, 0x001F4C, 0x000547, 0x001FBB,
0x0000C4, 0x0000C0, 0x000545, 0x0000C2, 0x0000DC, 0x0000CB, 0x0000DE, 0x0000C6,
0x001F59, 0x0000C8, 0x001F5B, 0x0000CA, 0x001F5D, 0x0000CC, 0x001F5F, 0x0000CE,
0x0000C9, 0x0000D0, 0x0000CF, 0x0000D2, 0x001F6D, 0x0000D4, 0x0000D8, 0x0000D6,
0x0000DA, 0x001F68, 0x001F6B, 0x001F6A, 0x001F69, 0x001F6C, 0x001F6F, 0x001F6E,
0x0104B1, 0x001F29, 0x0104B7, 0x001F2B, 0x00FF3A, 0x0004AC, 0x0004A8, 0x001F3D,
0x01040A, 0x0104B0, 0x01040B, 0x0104B2, 0x001F2A, 0x0104B4, 0x010409, 0x0104B6,
0x0104BA, 0x0104B8, 0x001F8A, 0x01E902, 0x0104BE, 0x0104B3, 0x0104BC, 0x000191,
0x000042, 0x0004B8, 0x000043, 0x000181, 0x0000CD, 0x00FF25, 0x000041, 0x01E90B,
0x001FBC, 0x000100, 0x01040F, 0x000102, 0x001F9C, 0x000104, 0x001F9E, 0x000106,
0x001FD8, 0x000108, 0x001FDA, 0x00010A, 0x001F98, 0x00010C, 0x001F9A, 0x00010E,
0x001FA9, 0x000110, 0x0024BB, 0x000112, 0x001F8B, 0x000114, 0x01040E, 0x000116,
0x01040C, 0x001FAD, 0x001FAB, 0x00011A, 0x000190, 0x000118, 0x001FAF, 0x00FF23,
0x001FB8, 0x000122, 0x000120, 0x001FBA, 0x001F1A, 0x01040D, 0x000124, 0x000126,
0x001FF8, 0x000128, 0x001FFA, 0x00012A, 0x001FFC, 0x00012C, 0x001F1C, 0x00012E,
0x001F89, 0x000132, 0x001F8E, 0x001F1D, 0x000130, 0x000134, 0x001F8F, 0x000136,
0x001FE8, 0x001FEC, 0x001F1B, 0x00FF22, 0x00011C, 0x001F2E, 0x00011E, 0x00FF35,
0x0010B0, 0x0010B1, 0x0010B6, 0x0010B7, 0x001F8D, 0x00FF30, 0x00FF37, 0x00FF36,
0x001FD9, 0x00FF31, 0x001FDB, 0x00014A, 0x00FF34, 0x00014C, 0x00FF33, 0x00014E,
0x000154, 0x000150, 0x000496, 0x000152, 0x001FEA, 0x001F8C, 0x001FE9, 0x000156,
0x00015C, 0x001FA8, 0x001FAA, 0x00015A, 0x001FAC, 0x000158, 0x001FAE, 0x00015E,
0x001FEB, 0x000160, 0x002C2D, 0x000162, 0x002C2E, 0x000164, 0x002C29, 0x000166,
0x00016A, 0x000168, 0x001FFB, 0x001FF9, 0x0010B2, 0x00016C, 0x0010B3, 0x00016E,
0x002C2B, 0x000170, 0x002C25, 0x000172, 0x0010A3, 0x000174, 0x002C27, 0x000176,
0x0010C1, 0x000178, 0x0010C3, 0x0010C2, 0x0010C0, 0x0010C7, 0x001FCC, 0x000193,
0x001FC8, 0x001FC9, 0x001FCA, 0x001FCB, 0x002C1D, 0x002C1F, 0x00018F, 0x000186,
0x002C1B, 0x000187, 0x00052C, 0x00018A, 0x00018E, 0x0010C5, 0x0010C4, 0x00018B,
0x0001B7, 0x0001B1, 0x002CED, 0x000182, 0x00052E, 0x000184, 0x000194, 0x000196,
0x000528, 0x00052A, 0x0001B2, 0x002CEB, 0x0001B5, 0x0010B4, 0x01E90D, 0x01E90F,
0x0010A2, 0x0001A0, 0x01E915, 0x0001A2, 0x01E917, 0x0001A4, 0x0001B3, 0x0001A6,
0x0001A9, 0x0010A1, 0x0010B5, 0x01E911, 0x000189, 0x0010A0, 0x0001AF, 0x01E913,
0x0010A4, 0x0010A5, 0x0010A6, 0x001F9D, 0x001F9F, 0x001F99, 0x001F9B, 0x0010A7,
0x000198, 0x0001B8, 0x0001BC, 0x002CAC, 0x00019C, 0x00019D, 0x002CAE, 0x00019F,
0x002CA8, 0x002CAA, 0x002CA4, 0x002CA6, 0x002CA0, 0x0001C4, 0x002CA2, 0x002CBC,
0x002CBE, 0x0001C8, 0x002CB8, 0x0001CA, 0x002CBA, 0x002CB4, 0x002CB6, 0x002CB0,
0x0001D1, 0x002CB2, 0x0001D3, 0x010CAD, 0x0001D5, 0x010CAF, 0x010CA9, 0x010CAB,
0x0001D9, 0x010CA5, 0x0001DB, 0x010CA7, 0x010CA1, 0x010CA3, 0x002C9C, 0x0001DE,
0x002C9E, 0x0001E2, 0x0001E0, 0x002C98, 0x002C9A, 0x0001E4, 0x002C94, 0x0001E6,
0x002C96, 0x0001E8, 0x010CB1, 0x0001EA, 0x010C8C, 0x0001EC, 0x010C8D, 0x0001EE,
0x010C8E, 0x010C8F, 0x010C88, 0x0001F2, 0x010C89, 0x0001F4, 0x010C8A, 0x0001F6,
0x010C8B, 0x0001F8, 0x010C84, 0x0001FA, 0x010C85, 0x0001FC, 0x010C86, 0x0001FE,
0x010C87, 0x010C80, 0x010C81, 0x010C82, 0x010C83, 0x010C9C, 0x010C9D, 0x010C9E,
0x010C9F, 0x010C98, 0x010C99, 0x010C9A, 0x010C9B, 0x010C94, 0x010C95, 0x010C96,
0x010C97, 0x010C90, 0x010C91, 0x010C92, 0x010C93, 0x00A68C, 0x00A68E, 0x00A688,
0x00A68A, 0x00A684, 0x00A686, 0x00A680, 0x00A682, 0x00A698, 0x00A69A, 0x00A694,
0x000222, 0x00A696, 0x000226, 0x00A690, 0x00A692, 0x00A76C, 0x00A76E, 0x00A768,
0x00A76A, 0x00A764, 0x000224, 0x00A766, 0x00A760, 0x00A762, 0x00A77D, 0x00A77E,
0x00A779, 0x00A77B, 0x000245, 0x000232, 0x00A740, 0x000241, 0x00A742, 0x000243,
0x00A75C, 0x00022A, 0x00A75E, 0x00023A, 0x000228, 0x00022C, 0x00022E, 0x00023E,
0x000244, 0x00A758, 0x000246, 0x00A75A, 0x00A754, 0x00A756, 0x00A750, 0x00A752,
0x000220, 0x000248, 0x00A73C, 0x00024A, 0x00023D, 0x00024C, 0x00A738, 0x00024E,
0x00023B, 0x00A734, 0x00A736, 0x000230, 0x00020C, 0x00020E, 0x000208, 0x00020A,
0x000204, 0x000206, 0x000200, 0x000202, 0x00021C, 0x00021E, 0x000218, 0x00021A,
0x000214, 0x000216, 0x000210, 0x000212, 0x00A7AC, 0x00A7AD, 0x00A7AE, 0x00A7A8,
0x00A7AA, 0x00A7AB, 0x0013ED, 0x0013EF, 0x0013E9, 0x0013EB, 0x0013E4, 0x0013E5,
0x0013E6, 0x0013E7, 0x0013E0, 0x0013E1, 0x0013E2, 0x0013E3, 0x00A7B4, 0x00A7B6,
0x00A7B0, 0x00A7B1, 0x00A7B2, 0x00A7B3, 0x0013F4, 0x0013F0, 0x0013F1, 0x0013F2,
0x0013CD, 0x0013CF, 0x0013C9, 0x0013CB, 0x0013C5, 0x0013C7, 0x0013C1, 0x0013C3,
0x0013DC, 0x0013DD, 0x0013DF, 0x0013D9, 0x0013DB, 0x0013D4, 0x0013D5, 0x0013D6,
0x0013D7, 0x0013D0, 0x0013D1, 0x0013D2, 0x0013D3, 0x0013AC, 0x0013AD, 0x0013AE,
0x0013AF, 0x0013A8, 0x0013A9, 0x0013AA, 0x0013AB, 0x0013A4, 0x0013A5, 0x0013A6,
0x0013A0, 0x0013A1, 0x0013A2, 0x0013A3, 0x0013BC, 0x0013BD, 0x0013BF, 0x0013B9,
0x0013BB, 0x0013B4, 0x0013B5, 0x0013B6, 0x0013B7, 0x0013B0, 0x0013B1, 0x0013B2,
0x0013B3, 0x0003EC, 0x0003EE, 0x0003E8, 0x0003EA, 0x0003E4, 0x0003E6, 0x0003E0,
0x0003E2, 0x00216C, 0x002168, 0x00216B, 0x002165, 0x002166, 0x002160, 0x002161,
0x002162, 0x002163, 0x0003CF, 0x0003DC, 0x0003DE, 0x0003D8, 0x0003DA, 0x0003A8,
0x0003A9, 0x0003AA, 0x0003AB, 0x0003A4, 0x0003A5, 0x0003A6, 0x0003A7, 0x0003A0,
0x0003A1, 0x0003A3, 0x00212A, 0x00212B, 0x002126, 0x002164, 0x002167, 0x00038C,
0x002169, 0x00038E, 0x00038F, 0x00216A, 0x00216D, 0x000388, 0x00216F, 0x00216E,
0x000389, 0x00038A, 0x0010CD, 0x000386, 0x002132, 0x00039E, 0x000394, 0x000395,
0x000396, 0x000397, 0x000391, 0x000392, 0x000393, 0x0010AC, 0x0010AD, 0x0010AE,
0x0010AF, 0x0010A8, 0x002183, 0x0010A9, 0x0010AA, 0x0010AB, 0x0010BC, 0x0010BD,
0x0010BE, 0x0010BF, 0x0010B8, 0x0010B9, 0x0010BA, 0x0010BB, 0x010408, 0x010404,
0x00A640, 0x010405, 0x00A642, 0x010406, 0x010407, 0x010403, 0x010414, 0x010415,
0x010416, 0x010417, 0x00A646, 0x00A65A, 0x00A65C, 0x010410, 0x010411, 0x00A65E,
0x010412, 0x00A650, 0x00A652, 0x010413, 0x00A654, 0x0024CC, 0x00A656, 0x00A644,
0x0024CD, 0x00A658, 0x0024CE, 0x0024CF, 0x0024C8, 0x0024C9, 0x00A64A, 0x00A648,
0x00A660, 0x00A64C, 0x00A662, 0x0024CA, 0x00A664, 0x00A64E, 0x0024CB, 0x0024C4,
0x0024C5, 0x0024C6, 0x0024C7, 0x0024C0, 0x0024C1, 0x0024C2, 0x0024C3, 0x0104CC,
0x0104CD, 0x0104CE, 0x0104CF, 0x0104C8, 0x0104C9, 0x0104CA, 0x00A666, 0x0104CB,
0x00A668, 0x0104C4, 0x00A66A, 0x0104C5, 0x00A66C, 0x0104C6, 0x0104C7, 0x0104C0,
0x002C01, 0x0104C1, 0x002C03, 0x0104C2, 0x0104C3, 0x0024BC, 0x0024BD, 0x0024BE,
0x0024BF, 0x0024B8, 0x0024B9, 0x0024BA, 0x0024B6, 0x0024B7, 0x0104D0, 0x0104D1,
0x0104D2, 0x002C15, 0x002C13, 0x0104D3, 0x001E6C, 0x001E6E, 0x002C17, 0x001E68,
0x002C11, 0x001E6A, 0x0104BD, 0x0104BF, 0x0104B9, 0x0104BB, 0x0000C5, 0x0000C7,
0x0000C1, 0x0000C3, 0x002C23, 0x002C21, 0x0000DD, 0x0000D9, 0x0000DB, 0x0000D5,
0x0000D1, 0x0000D3, 0x001E5C, 0x001E5E, 0x001E58, 0x001E5A, 0x001E54, 0x00FF27,
0x001E56, 0x000372, 0x000370, 0x00FF2B, 0x000376, 0x00FF29, 0x001E50, 0x001E52,
0x001E2C, 0x001E2E, 0x001E28, 0x001E2A, 0x001E24, 0x001E26, 0x00037F, 0x001E20,
0x002C00, 0x001E22, 0x002C02, 0x001E3C, 0x002C6D, 0x001E3E, 0x002C6E, 0x001E38,
0x002C6F, 0x002C69, 0x002C06, 0x002C1A, 0x002C1C, 0x00039D, 0x00039C, 0x002C1E,
0x002C70, 0x002C10, 0x002C12, 0x002C72, 0x002C14, 0x002C75, 0x002C16, 0x002C04,
0x000399, 0x002C18, 0x00039B, 0x00039A, 0x000398, 0x00039F, 0x002C0A, 0x002C08,
0x002C20, 0x002C0C, 0x002C22, 0x002C62, 0x002C24, 0x002C0E, 0x002C60, 0x002C63,
0x010CA0, 0x010CA8, 0x010CA2, 0x010CAA, 0x002C64, 0x010CA4, 0x002C67, 0x010CA6,
0x010CB0, 0x002C7F, 0x010CB2, 0x001F0B, 0x001E3A, 0x001F09, 0x002C26, 0x000197,
0x002C28, 0x010CAC, 0x002C2A, 0x002CDC, 0x002C2C, 0x010CAE, 0x002C6B, 0x002C7E,
0x0118AD, 0x0118AF, 0x0118A9, 0x0118AB, 0x002CD8, 0x0118A5, 0x002CDA, 0x0118A7,
0x0118A1, 0x0118A3, 0x0118BD, 0x0118BF, 0x0118B9, 0x0118BB, 0x0118B5, 0x0118B7,
0x0118B1, 0x0118B3, 0x001EEC, 0x00017D, 0x001EEE, 0x000179, 0x002C07, 0x001EEA,
0x00017B, 0x002C19, 0x002C05, 0x002CD4, 0x000145, 0x000147, 0x000141, 0x000143,
0x002CDE, 0x001EAC, 0x00013D, 0x001EAE, 0x00013F, 0x001EA8, 0x000139, 0x001EAA,
0x002C80, 0x002C88, 0x002C82, 0x002C8A, 0x00013B, 0x002C84, 0x00042D, 0x002C86,
0x002C90, 0x00042F, 0x002C92, 0x000429, 0x00042B, 0x0003F4, 0x0003F7, 0x000425,
0x0003F9, 0x002C8C, 0x000427, 0x0003FA, 0x0003FD, 0x002C8E, 0x0003FF, 0x0003FE,
0x00053E, 0x000400, 0x00053F, 0x000402, 0x002CC0, 0x000404, 0x002CC2, 0x000406,
0x000539, 0x000408, 0x000538, 0x00040A, 0x002CC4, 0x00040C, 0x002CC6, 0x00040E,
0x002CCA, 0x000410, 0x000413, 0x000412, 0x000411, 0x000414, 0x000417, 0x000416,
0x000421, 0x00041A, 0x000418, 0x000423, 0x000415, 0x00041C, 0x002C0B, 0x00041E,
0x00A722, 0x000420, 0x00A726, 0x000422, 0x002CCC, 0x000424, 0x002CCE, 0x000426,
0x002CE0, 0x00042A, 0x00A724, 0x002CE2, 0x000428, 0x00042C, 0x002CC8, 0x00042E,
0x002CD2, 0x002CD0, 0x000549, 0x00A732, 0x00054D, 0x0004D6, 0x00054F, 0x002CD6,
0x0013C0, 0x00A72A, 0x002CF2, 0x00A73A, 0x00A728, 0x00A72C, 0x00A72E, 0x00A73E,
0x00A744, 0x00040D, 0x00A746, 0x00048A, 0x0013C4, 0x0013CC, 0x0013C6, 0x0013CE,
0x01E901, 0x00A748, 0x01E900, 0x00A74A, 0x00040F, 0x00A74C, 0x000409, 0x00A74E,
0x01E906, 0x00040B, 0x01E907, 0x000405, 0x00049C, 0x000407, 0x000401, 0x000403,
0x01E904, 0x01E905, 0x00041D, 0x00041F, 0x000419, 0x000498, 0x0013A7, 0x00049E,
0x0013E8, 0x000460, 0x0013EA, 0x000462, 0x0013EC, 0x000464, 0x0013EE, 0x000466,
0x00041B, 0x000468, 0x0001F7, 0x00046A, 0x0004E8, 0x00046C, 0x0001F1, 0x00046E,
0x000474, 0x0013BA, 0x0013B8, 0x000472, 0x0013BE, 0x000470, 0x0004E4, 0x000476,
0x00053C, 0x00053D, 0x0001CD, 0x00047A, 0x000478, 0x00047C, 0x0013C2, 0x00047E,
0x0004E6, 0x00FF39, 0x0004AA, 0x00A78B, 0x0004D2, 0x00A78D, 0x0004AE, 0x0001CF,
0x0013D8, 0x001E00, 0x0013DA, 0x001E02, 0x001E06, 0x001E04, 0x00048C, 0x00048E,
0x0004B0, 0x001E0A, 0x001E08, 0x0004B2, 0x0004B4, 0x001E0C, 0x0004B6, 0x001E0E,
0x00A790, 0x001E10, 0x00A792, 0x001E12, 0x000492, 0x001E14, 0x00A79A, 0x001E16,
0x001E1A, 0x001E18, 0x000480, 0x0004A2, 0x0004A6, 0x001E1C, 0x0004A0, 0x001E1E,
0x0013C8, 0x0001CB, 0x0013CA, 0x0004BA, 0x0004A4, 0x0004BC, 0x0013DE, 0x00FF21,
0x000490, 0x000494, 0x002C09, 0x0013F3, 0x002C0D, 0x0013F5, 0x002C0F, 0x001F88,
0x00A780, 0x001E30, 0x00A782, 0x001E32, 0x001E36, 0x001E34, 0x00A796, 0x0004BE,
0x0004C1, 0x001F19, 0x0004C3, 0x0001C5, 0x0004C5, 0x00A784, 0x0004C7, 0x00A786,
0x0004C9, 0x001E40, 0x0004CB, 0x001E42, 0x0004CD, 0x001E44, 0x001E48, 0x001E46,
0x001E4A, 0x0004D0, 0x0004D4, 0x0004FE, 0x00A79C, 0x0001C7, 0x00A79E, 0x01E918,
0x00A798, 0x0004D8, 0x01E909, 0x0004DA, 0x001E4C, 0x0004DC, 0x001E4E, 0x0004DE,
0x00A7A0, 0x0004E0, 0x00A7A2, 0x0004E2, 0x00A7A4, 0x0004F8, 0x00A7A6, 0x0004FA,
0x001E62, 0x001E60, 0x00049A, 0x0004EA, 0x001E66, 0x0004EC, 0x001E64, 0x0004EE,
0x001F4D, 0x0004F0, 0x0001D7, 0x0004F2, 0x0001AC, 0x0004F4, 0x0001AE, 0x0004F6,
0x001E74, 0x001E70, 0x001FB9, 0x001E72, 0x0004C0, 0x0004FC, 0x0001A7, 0x001E76,
0x000540, 0x001E78, 0x000542, 0x001E7A, 0x000500, 0x001E7C, 0x000502, 0x001E7E,
0x000524, 0x001E80, 0x000546, 0x001E82, 0x000504, 0x001E84, 0x000506, 0x001E86,
0x00050A, 0x000550, 0x000552, 0x001E8A, 0x000554, 0x001E88, 0x000556, 0x000544,
};
/* indexes */
const uint16_t NU_TOLOWER_VALUES_I[] = {
0x0BC6, 0x0C3E, 0x0B9A, 0x0BD0, 0x04FB, 0x0C4C, 0x0540, 0x053A, 0x0BF8, 0x0546,
0x0019, 0x0029, 0x04BF, 0x054C, 0x04C2, 0x0C50, 0x04DD, 0x0C57, 0x0C20, 0x04E0,
0x0C53, 0x0C5B, 0x04B9, 0x0C5F, 0x04C8, 0x04C5, 0x002B, 0x002D, 0x0B92, 0x0017,
0x0B96, 0x04CE, 0x0BDA, 0x0C73, 0x04F8, 0x0C77, 0x0031, 0x0C7B, 0x002F, 0x0C7F,
0x0525, 0x0C83, 0x052B, 0x0C87, 0x04D1, 0x0C8B, 0x04D4, 0x0C8F, 0x0C9B, 0x0C93,
0x0033, 0x0C97, 0x0C25, 0x0027, 0x0BEE, 0x0C9F, 0x0CAB, 0x0561, 0x055B, 0x0CA7,
0x0C02, 0x0CA3, 0x0C0C, 0x0CAF, 0x0555, 0x0CB7, 0x0CB3, 0x04CB, 0x0C2F, 0x04FE,
0x0CBB, 0x0CBF, 0x04DA, 0x0CC3, 0x05EE, 0x0CC7, 0x0013, 0x0CCB, 0x0015, 0x0CCF,
0x0C1B, 0x0CD3, 0x0C34, 0x0CD7, 0x0501, 0x0CDB, 0x0C39, 0x0CDF, 0x12D2, 0x0CE3,
0x0025, 0x12DA, 0x12E2, 0x12E6, 0x12EA, 0x12EE, 0x04F5, 0x0C42, 0x0504, 0x0CF7,
0x0CF3, 0x0CFB, 0x0507, 0x0CFF, 0x05E9, 0x0D03, 0x1312, 0x0D07, 0x05E4, 0x0D0B,
0x05DF, 0x0D0F, 0x000F, 0x0011, 0x001B, 0x001D, 0x0616, 0x0C2A, 0x12C2, 0x12CA,
0x0023, 0x088C, 0x0882, 0x05F8, 0x0021, 0x0896, 0x001F, 0x08A0, 0x0BE4, 0x08AA,
0x000D, 0x08B4, 0x08C8, 0x08BE, 0x0543, 0x0BAD, 0x08DC, 0x08D2, 0x05FD, 0x0602,
0x0D6F, 0x08E6, 0x0D5F, 0x08F0, 0x04E6, 0x08FA, 0x12FA, 0x0904, 0x0918, 0x090E,
0x000B, 0x0D67, 0x0D13, 0x0D4B, 0x0D5B, 0x0D1B, 0x0D23, 0x0D27, 0x0D2B, 0x0D2F,
0x0611, 0x0C47, 0x0571, 0x04D7, 0x0D7B, 0x0009, 0x0D87, 0x0513, 0x0007, 0x060C,
0x0D33, 0x0D73, 0x0D83, 0x0607, 0x0D6B, 0x0D77, 0x061B, 0x0620, 0x0625, 0x0510,
0x056C, 0x05F3, 0x0567, 0x062A, 0x0D8F, 0x0D8B, 0x0D97, 0x0D93, 0x0648, 0x0D9B,
0x0537, 0x0E3F, 0x0041, 0x0035, 0x0531, 0x003B, 0x0086, 0x0056, 0x008C, 0x0047,
0x0DA3, 0x004D, 0x0DA7, 0x0053, 0x0DAB, 0x0059, 0x0DAF, 0x005F, 0x0050, 0x0065,
0x0062, 0x006B, 0x0DC7, 0x0071, 0x007A, 0x0077, 0x0080, 0x0DB3, 0x0DBF, 0x0DBB,
0x0DB7, 0x0DC3, 0x0DCF, 0x0DCB, 0x0634, 0x0D4F, 0x0652, 0x0D57, 0x131A, 0x042F,
0x0429, 0x0D7F, 0x0599, 0x062F, 0x059E, 0x0639, 0x0D53, 0x0643, 0x0594, 0x064D,
0x0661, 0x0657, 0x132A, 0x0BA8, 0x0675, 0x063E, 0x066B, 0x016C, 0x0003, 0x0441,
0x0005, 0x014B, 0x005C, 0x12C6, 0x0001, 0x0BD5, 0x1382, 0x008F, 0x05B2, 0x0092,
0x1352, 0x0095, 0x135A, 0x0098, 0x0E5B, 0x009B, 0x0E63, 0x009E, 0x1342, 0x00A1,
0x134A, 0x00A4, 0x1366, 0x00A7, 0x0EF7, 0x00AA, 0x132E, 0x00AD, 0x05AD, 0x00B0,
0x05A3, 0x1376, 0x136E, 0x00B6, 0x0169, 0x00B3, 0x137E, 0x12BE, 0x0E33, 0x00C2,
0x00BF, 0x0E3B, 0x0D3B, 0x05A8, 0x00C5, 0x00C8, 0x0E7F, 0x00CB, 0x0E87, 0x00CE,
0x138A, 0x00D1, 0x0D43, 0x00D4, 0x1326, 0x00D9, 0x133A, 0x0D47, 0x131E, 0x00DC,
0x133E, 0x00DF, 0x0E6B, 0x0E7B, 0x0D3F, 0x12BA, 0x00B9, 0x0D63, 0x00BC, 0x1306,
0x0723, 0x0727, 0x073B, 0x073F, 0x1336, 0x12F2, 0x130E, 0x130A, 0x0E5F, 0x12F6,
0x0E67, 0x00FA, 0x1302, 0x00FD, 0x12FE, 0x0100, 0x0109, 0x0103, 0x040E, 0x0106,
0x0E73, 0x1332, 0x0E6F, 0x010C, 0x0115, 0x1362, 0x136A, 0x0112, 0x1372, 0x010F,
0x137A, 0x0118, 0x0E77, 0x011B, 0x0FFF, 0x011E, 0x1003, 0x0121, 0x0FEF, 0x0124,
0x012A, 0x0127, 0x0E8B, 0x0E83, 0x072B, 0x012D, 0x072F, 0x0130, 0x0FF7, 0x0133,
0x0FDF, 0x0136, 0x06EF, 0x0139, 0x0FE7, 0x013C, 0x0767, 0x013F, 0x076F, 0x076B,
0x0763, 0x077B, 0x1386, 0x016F, 0x0E47, 0x0E4B, 0x0E4F, 0x0E53, 0x0FBF, 0x0FC7,
0x0166, 0x0154, 0x0FB7, 0x0157, 0x04EF, 0x015D, 0x0163, 0x0777, 0x0773, 0x0160,
0x01AE, 0x01A2, 0x1107, 0x014E, 0x04F2, 0x0151, 0x0172, 0x0175, 0x04E9, 0x04EC,
0x01A5, 0x1103, 0x01AB, 0x0733, 0x0BDF, 0x0BE9, 0x06EB, 0x0187, 0x0C07, 0x018A,
0x0C11, 0x018D, 0x01A8, 0x0190, 0x0196, 0x06E7, 0x0737, 0x0BF3, 0x015A, 0x06E3,
0x019F, 0x0BFD, 0x06F3, 0x06F7, 0x06FB, 0x1356, 0x135E, 0x1346, 0x134E, 0x06FF,
0x017B, 0x01B1, 0x01B4, 0x1093, 0x017E, 0x0181, 0x1097, 0x0184, 0x108B, 0x108F,
0x1083, 0x1087, 0x107B, 0x01B7, 0x107F, 0x10B3, 0x10B7, 0x01C0, 0x10AB, 0x01C3,
0x10AF, 0x10A3, 0x10A7, 0x109B, 0x01CF, 0x109F, 0x01D2, 0x0860, 0x01D5, 0x086A,
0x084C, 0x0856, 0x01DB, 0x0838, 0x01DE, 0x0842, 0x0824, 0x082E, 0x1073, 0x01E1,
0x1077, 0x01E7, 0x01E4, 0x106B, 0x106F, 0x01EA, 0x1063, 0x01ED, 0x1067, 0x01F0,
0x0874, 0x01F3, 0x07BB, 0x01F6, 0x07C0, 0x01F9, 0x07C5, 0x07CA, 0x07A7, 0x01FF,
0x07AC, 0x0202, 0x07B1, 0x0205, 0x07B6, 0x020B, 0x0793, 0x020E, 0x0798, 0x0211,
0x079D, 0x0214, 0x07A2, 0x077F, 0x0784, 0x0789, 0x078E, 0x080B, 0x0810, 0x0815,
0x081A, 0x07F7, 0x07FC, 0x0801, 0x0806, 0x07E3, 0x07E8, 0x07ED, 0x07F2, 0x07CF,
0x07D4, 0x07D9, 0x07DE, 0x1183, 0x1187, 0x117B, 0x117F, 0x1173, 0x1177, 0x116B,
0x116F, 0x119B, 0x119F, 0x1193, 0x024A, 0x1197, 0x0250, 0x118B, 0x118F, 0x1233,
0x1237, 0x122B, 0x122F, 0x1223, 0x024D, 0x1227, 0x121B, 0x121F, 0x1243, 0x1247,
0x123B, 0x123F, 0x027C, 0x0262, 0x11DB, 0x0273, 0x11DF, 0x0276, 0x1213, 0x0256,
0x1217, 0x0265, 0x0253, 0x0259, 0x025C, 0x026F, 0x0279, 0x120B, 0x027F, 0x120F,
0x1203, 0x1207, 0x11FB, 0x11FF, 0x0247, 0x0282, 0x11D3, 0x0285, 0x026C, 0x0288,
0x11CB, 0x028B, 0x0269, 0x11C3, 0x11C7, 0x025F, 0x0229, 0x022C, 0x0223, 0x0226,
0x021D, 0x0220, 0x0217, 0x021A, 0x0241, 0x0244, 0x023B, 0x023E, 0x0235, 0x0238,
0x022F, 0x0232, 0x1298, 0x129B, 0x129E, 0x128E, 0x1292, 0x1295, 0x0A56, 0x0A5E,
0x0A46, 0x0A4E, 0x0A32, 0x0A36, 0x0A3A, 0x0A3E, 0x0A22, 0x0A26, 0x0A2A, 0x0A2E,
0x12AE, 0x12B2, 0x12A1, 0x12A4, 0x12A7, 0x12AA, 0x0A72, 0x0A62, 0x0A66, 0x0A6A,
0x09D6, 0x09DE, 0x09C6, 0x09CE, 0x09B6, 0x09BE, 0x09A6, 0x09AE, 0x0A12, 0x0A16,
0x0A1E, 0x0A06, 0x0A0E, 0x09F2, 0x09F6, 0x09FA, 0x09FE, 0x09E2, 0x09E6, 0x09EA,
0x09EE, 0x0952, 0x0956, 0x095A, 0x095E, 0x0942, 0x0946, 0x094A, 0x094E, 0x0932,
0x0936, 0x093A, 0x0922, 0x0926, 0x092A, 0x092E, 0x0992, 0x0996, 0x099E, 0x0986,
0x098E, 0x0972, 0x0976, 0x097A, 0x097E, 0x0962, 0x0966, 0x096A, 0x096E, 0x031E,
0x0321, 0x0318, 0x031B, 0x0312, 0x0315, 0x030C, 0x030F, 0x0ECF, 0x0EBF, 0x0ECB,
0x0EB3, 0x0EB7, 0x0E9F, 0x0EA3, 0x0EA7, 0x0EAB, 0x02FD, 0x0306, 0x0309, 0x0300,
0x0303, 0x02F1, 0x02F4, 0x02F7, 0x02FA, 0x02E5, 0x02E8, 0x02EB, 0x02EE, 0x02DC,
0x02DF, 0x02E2, 0x0E96, 0x0E98, 0x0E93, 0x0EAF, 0x0EBB, 0x02A6, 0x0EC3, 0x02A9,
0x02AC, 0x0EC7, 0x0ED3, 0x029D, 0x0EDB, 0x0ED7, 0x02A0, 0x02A3, 0x087E, 0x029A,
0x0E9B, 0x02D6, 0x02B8, 0x02BB, 0x02BE, 0x02C1, 0x02AF, 0x02B2, 0x02B5, 0x0713,
0x0717, 0x071B, 0x071F, 0x0703, 0x0EDF, 0x0707, 0x070B, 0x070F, 0x0753, 0x0757,
0x075B, 0x075F, 0x0743, 0x0747, 0x074B, 0x074F, 0x058F, 0x057B, 0x110F, 0x0580,
0x1113, 0x0585, 0x058A, 0x0576, 0x05CB, 0x05D0, 0x05D5, 0x05DA, 0x111B, 0x1143,
0x1147, 0x05B7, 0x05BC, 0x114B, 0x05C1, 0x112F, 0x1133, 0x05C6, 0x1137, 0x0F3B,
0x113B, 0x1117, 0x0F3F, 0x113F, 0x0F43, 0x0F47, 0x0F2B, 0x0F2F, 0x1123, 0x111F,
0x114F, 0x1127, 0x1153, 0x0F33, 0x1157, 0x112B, 0x0F37, 0x0F1B, 0x0F1F, 0x0F23,
0x0F27, 0x0F0B, 0x0F0F, 0x0F13, 0x0F17, 0x06BB, 0x06C0, 0x06C5, 0x06CA, 0x06A7,
0x06AC, 0x06B1, 0x115B, 0x06B6, 0x115F, 0x0693, 0x1163, 0x0698, 0x1167, 0x069D,
0x06A2, 0x067F, 0x0F4F, 0x0684, 0x0F57, 0x0689, 0x068E, 0x0EFB, 0x0EFF, 0x0F03,
0x0F07, 0x0EEB, 0x0EEF, 0x0EF3, 0x0EE3, 0x0EE7, 0x06CF, 0x06D4, 0x06D9, 0x0F9F,
0x0F97, 0x06DE, 0x0B52, 0x0B56, 0x0FA7, 0x0B4A, 0x0F8F, 0x0B4E, 0x0670, 0x067A,
0x065C, 0x0666, 0x0044, 0x004A, 0x0038, 0x003E, 0x0FD7, 0x0FCF, 0x0089, 0x007D,
0x0083, 0x0074, 0x0068, 0x006E, 0x0B32, 0x0B36, 0x0B2A, 0x0B2E, 0x0B22, 0x12CE,
0x0B26, 0x0291, 0x028E, 0x12DE, 0x0294, 0x12D6, 0x0B1A, 0x0B1E, 0x0AD2, 0x0AD6,
0x0ACA, 0x0ACE, 0x0AC2, 0x0AC6, 0x0297, 0x0ABA, 0x0F4B, 0x0ABE, 0x0F53, 0x0AF2,
0x1021, 0x0AF6, 0x1024, 0x0AEA, 0x1027, 0x1019, 0x0F63, 0x0FB3, 0x0FBB, 0x02D3,
0x02D0, 0x0FC3, 0x102A, 0x0F8B, 0x0F93, 0x102D, 0x0F9B, 0x1031, 0x0FA3, 0x0F5B,
0x02C7, 0x0FAB, 0x02CD, 0x02CA, 0x02C4, 0x02D9, 0x0F73, 0x0F6B, 0x0FCB, 0x0F7B,
0x0FD3, 0x100B, 0x0FDB, 0x0F83, 0x1007, 0x100E, 0x081F, 0x0847, 0x0829, 0x0851,
0x1012, 0x0833, 0x1015, 0x083D, 0x086F, 0x1038, 0x0879, 0x0D1F, 0x0AEE, 0x0D17,
0x0FE3, 0x0178, 0x0FEB, 0x085B, 0x0FF3, 0x10F3, 0x0FFB, 0x0865, 0x101D, 0x1035,
0x08C3, 0x08CD, 0x08AF, 0x08B9, 0x10EB, 0x089B, 0x10EF, 0x08A5, 0x0887, 0x0891,
0x0913, 0x091D, 0x08FF, 0x0909, 0x08EB, 0x08F5, 0x08D7, 0x08E1, 0x0CEB, 0x0148,
0x0CEF, 0x0142, 0x0F67, 0x0CE7, 0x0145, 0x0FAF, 0x0F5F, 0x10E3, 0x00F4, 0x00F7,
0x00EE, 0x00F1, 0x10F7, 0x0C6B, 0x00E8, 0x0C6F, 0x00EB, 0x0C63, 0x00E2, 0x0C67,
0x103B, 0x104B, 0x103F, 0x104F, 0x00E5, 0x1043, 0x03C0, 0x1047, 0x105B, 0x03C6,
0x105F, 0x03B4, 0x03BA, 0x0324, 0x0327, 0x03A8, 0x032A, 0x1053, 0x03AE, 0x032D,
0x0330, 0x1057, 0x0336, 0x0333, 0x051C, 0x0339, 0x051F, 0x033F, 0x10BB, 0x0345,
0x10BF, 0x034B, 0x050D, 0x0351, 0x050A, 0x0357, 0x10C3, 0x035D, 0x10C7, 0x0363,
0x10CF, 0x0369, 0x0372, 0x036F, 0x036C, 0x0375, 0x037E, 0x037B, 0x039C, 0x0387,
0x0381, 0x03A2, 0x0378, 0x038D, 0x0F77, 0x0393, 0x11A3, 0x0399, 0x11AB, 0x039F,
0x10D3, 0x03A5, 0x10D7, 0x03AB, 0x10FB, 0x03B7, 0x11A7, 0x10FF, 0x03B1, 0x03BD,
0x10CB, 0x03C3, 0x10DF, 0x10DB, 0x053D, 0x11BF, 0x0549, 0x046E, 0x054F, 0x10E7,
0x09A2, 0x11B3, 0x110B, 0x11CF, 0x11AF, 0x11B7, 0x11BB, 0x11D7, 0x11E3, 0x0360,
0x11E7, 0x03FC, 0x09B2, 0x09D2, 0x09BA, 0x09DA, 0x0BA3, 0x11EB, 0x0B9E, 0x11EF,
0x0366, 0x11F3, 0x0354, 0x11F7, 0x0BBC, 0x035A, 0x0BC1, 0x0348, 0x0417, 0x034E,
0x033C, 0x0342, 0x0BB2, 0x0BB7, 0x0390, 0x0396, 0x0384, 0x0411, 0x093E, 0x041A,
0x0A42, 0x03C9, 0x0A4A, 0x03CC, 0x0A52, 0x03CF, 0x0A5A, 0x03D2, 0x038A, 0x03D5,
0x0208, 0x03D8, 0x0489, 0x03DB, 0x01FC, 0x03DE, 0x03E7, 0x098A, 0x0982, 0x03E4,
0x099A, 0x03E1, 0x0483, 0x03EA, 0x0516, 0x0519, 0x01C9, 0x03F0, 0x03ED, 0x03F3,
0x09AA, 0x03F6, 0x0486, 0x1316, 0x042C, 0x125B, 0x0468, 0x125F, 0x0432, 0x01CC,
0x0A02, 0x0A7A, 0x0A0A, 0x0A7E, 0x0A86, 0x0A82, 0x03FF, 0x0402, 0x0435, 0x0A8E,
0x0A8A, 0x0438, 0x043B, 0x0A92, 0x043E, 0x0A96, 0x1262, 0x0A9A, 0x1266, 0x0A9E,
0x0408, 0x0AA2, 0x1272, 0x0AA6, 0x0AAE, 0x0AAA, 0x03F9, 0x0420, 0x0426, 0x0AB2,
0x041D, 0x0AB6, 0x09C2, 0x01C6, 0x09CA, 0x0444, 0x0423, 0x0447, 0x0A1A, 0x12B6,
0x0405, 0x040B, 0x0F6F, 0x0A6E, 0x0F7F, 0x0A76, 0x0F87, 0x1322, 0x124B, 0x0ADA,
0x124F, 0x0ADE, 0x0AE6, 0x0AE2, 0x126A, 0x044A, 0x0450, 0x0D37, 0x0453, 0x01BA,
0x0456, 0x1253, 0x0459, 0x1257, 0x045C, 0x0AFA, 0x045F, 0x0AFE, 0x0462, 0x0B02,
0x0B0A, 0x0B06, 0x0B0E, 0x0465, 0x046B, 0x04AA, 0x1276, 0x01BD, 0x127A, 0x0C16,
0x126E, 0x0471, 0x0BCB, 0x0474, 0x0B12, 0x0477, 0x0B16, 0x047A, 0x127E, 0x047D,
0x1282, 0x0480, 0x1286, 0x04A1, 0x128A, 0x04A4, 0x0B3E, 0x0B3A, 0x0414, 0x048C,
0x0B46, 0x048F, 0x0B42, 0x0492, 0x0D9F, 0x0495, 0x01D8, 0x0498, 0x0199, 0x049B,
0x019C, 0x049E, 0x0B62, 0x0B5A, 0x0E37, 0x0B5E, 0x044D, 0x04A7, 0x0193, 0x0B66,
0x0522, 0x0B6A, 0x0528, 0x0B6E, 0x04AD, 0x0B72, 0x04B0, 0x0B76, 0x04E3, 0x0B7A,
0x0534, 0x0B7E, 0x04B3, 0x0B82, 0x04B6, 0x0B86, 0x04BC, 0x0552, 0x0558, 0x0B8E,
0x055E, 0x0B8A, 0x0564, 0x052E, };
const uint8_t NU_TOLOWER_COMBINED[] = {
0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66,
0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6C,
0x00, 0x6D, 0x00, 0x6E, 0x00, 0x6F, 0x00, 0x70, 0x00, 0x71, 0x00, 0x72,
0x00, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, 0x00, 0x78,
0x00, 0x79, 0x00, 0x7A, 0x00, 0xC3, 0xA0, 0x00, 0xC3, 0xA1, 0x00, 0xC3,
0xA2, 0x00, 0xC3, 0xA3, 0x00, 0xC3, 0xA4, 0x00, 0xC3, 0xA5, 0x00, 0xC3,
0xA6, 0x00, 0xC3, 0xA7, 0x00, 0xC3, 0xA8, 0x00, 0xC3, 0xA9, 0x00, 0xC3,
0xAA, 0x00, 0xC3, 0xAB, 0x00, 0xC3, 0xAC, 0x00, 0xC3, 0xAD, 0x00, 0xC3,
0xAE, 0x00, 0xC3, 0xAF, 0x00, 0xC3, 0xB0, 0x00, 0xC3, 0xB1, 0x00, 0xC3,
0xB2, 0x00, 0xC3, 0xB3, 0x00, 0xC3, 0xB4, 0x00, 0xC3, 0xB5, 0x00, 0xC3,
0xB6, 0x00, 0xC3, 0xB8, 0x00, 0xC3, 0xB9, 0x00, 0xC3, 0xBA, 0x00, 0xC3,
0xBB, 0x00, 0xC3, 0xBC, 0x00, 0xC3, 0xBD, 0x00, 0xC3, 0xBE, 0x00, 0xC4,
0x81, 0x00, 0xC4, 0x83, 0x00, 0xC4, 0x85, 0x00, 0xC4, 0x87, 0x00, 0xC4,
0x89, 0x00, 0xC4, 0x8B, 0x00, 0xC4, 0x8D, 0x00, 0xC4, 0x8F, 0x00, 0xC4,
0x91, 0x00, 0xC4, 0x93, 0x00, 0xC4, 0x95, 0x00, 0xC4, 0x97, 0x00, 0xC4,
0x99, 0x00, 0xC4, 0x9B, 0x00, 0xC4, 0x9D, 0x00, 0xC4, 0x9F, 0x00, 0xC4,
0xA1, 0x00, 0xC4, 0xA3, 0x00, 0xC4, 0xA5, 0x00, 0xC4, 0xA7, 0x00, 0xC4,
0xA9, 0x00, 0xC4, 0xAB, 0x00, 0xC4, 0xAD, 0x00, 0xC4, 0xAF, 0x00, 0x69,
0x00, 0xC4, 0xB3, 0x00, 0xC4, 0xB5, 0x00, 0xC4, 0xB7, 0x00, 0xC4, 0xBA,
0x00, 0xC4, 0xBC, 0x00, 0xC4, 0xBE, 0x00, 0xC5, 0x80, 0x00, 0xC5, 0x82,
0x00, 0xC5, 0x84, 0x00, 0xC5, 0x86, 0x00, 0xC5, 0x88, 0x00, 0xC5, 0x8B,
0x00, 0xC5, 0x8D, 0x00, 0xC5, 0x8F, 0x00, 0xC5, 0x91, 0x00, 0xC5, 0x93,
0x00, 0xC5, 0x95, 0x00, 0xC5, 0x97, 0x00, 0xC5, 0x99, 0x00, 0xC5, 0x9B,
0x00, 0xC5, 0x9D, 0x00, 0xC5, 0x9F, 0x00, 0xC5, 0xA1, 0x00, 0xC5, 0xA3,
0x00, 0xC5, 0xA5, 0x00, 0xC5, 0xA7, 0x00, 0xC5, 0xA9, 0x00, 0xC5, 0xAB,
0x00, 0xC5, 0xAD, 0x00, 0xC5, 0xAF, 0x00, 0xC5, 0xB1, 0x00, 0xC5, 0xB3,
0x00, 0xC5, 0xB5, 0x00, 0xC5, 0xB7, 0x00, 0xC3, 0xBF, 0x00, 0xC5, 0xBA,
0x00, 0xC5, 0xBC, 0x00, 0xC5, 0xBE, 0x00, 0xC9, 0x93, 0x00, 0xC6, 0x83,
0x00, 0xC6, 0x85, 0x00, 0xC9, 0x94, 0x00, 0xC6, 0x88, 0x00, 0xC9, 0x96,
0x00, 0xC9, 0x97, 0x00, 0xC6, 0x8C, 0x00, 0xC7, 0x9D, 0x00, 0xC9, 0x99,
0x00, 0xC9, 0x9B, 0x00, 0xC6, 0x92, 0x00, 0xC9, 0xA0, 0x00, 0xC9, 0xA3,
0x00, 0xC9, 0xA9, 0x00, 0xC9, 0xA8, 0x00, 0xC6, 0x99, 0x00, 0xC9, 0xAF,
0x00, 0xC9, 0xB2, 0x00, 0xC9, 0xB5, 0x00, 0xC6, 0xA1, 0x00, 0xC6, 0xA3,
0x00, 0xC6, 0xA5, 0x00, 0xCA, 0x80, 0x00, 0xC6, 0xA8, 0x00, 0xCA, 0x83,
0x00, 0xC6, 0xAD, 0x00, 0xCA, 0x88, 0x00, 0xC6, 0xB0, 0x00, 0xCA, 0x8A,
0x00, 0xCA, 0x8B, 0x00, 0xC6, 0xB4, 0x00, 0xC6, 0xB6, 0x00, 0xCA, 0x92,
0x00, 0xC6, 0xB9, 0x00, 0xC6, 0xBD, 0x00, 0xC7, 0x86, 0x00, 0xC7, 0x86,
0x00, 0xC7, 0x89, 0x00, 0xC7, 0x89, 0x00, 0xC7, 0x8C, 0x00, 0xC7, 0x8C,
0x00, 0xC7, 0x8E, 0x00, 0xC7, 0x90, 0x00, 0xC7, 0x92, 0x00, 0xC7, 0x94,
0x00, 0xC7, 0x96, 0x00, 0xC7, 0x98, 0x00, 0xC7, 0x9A, 0x00, 0xC7, 0x9C,
0x00, 0xC7, 0x9F, 0x00, 0xC7, 0xA1, 0x00, 0xC7, 0xA3, 0x00, 0xC7, 0xA5,
0x00, 0xC7, 0xA7, 0x00, 0xC7, 0xA9, 0x00, 0xC7, 0xAB, 0x00, 0xC7, 0xAD,
0x00, 0xC7, 0xAF, 0x00, 0xC7, 0xB3, 0x00, 0xC7, 0xB3, 0x00, 0xC7, 0xB5,
0x00, 0xC6, 0x95, 0x00, 0xC6, 0xBF, 0x00, 0xC7, 0xB9, 0x00, 0xC7, 0xBB,
0x00, 0xC7, 0xBD, 0x00, 0xC7, 0xBF, 0x00, 0xC8, 0x81, 0x00, 0xC8, 0x83,
0x00, 0xC8, 0x85, 0x00, 0xC8, 0x87, 0x00, 0xC8, 0x89, 0x00, 0xC8, 0x8B,
0x00, 0xC8, 0x8D, 0x00, 0xC8, 0x8F, 0x00, 0xC8, 0x91, 0x00, 0xC8, 0x93,
0x00, 0xC8, 0x95, 0x00, 0xC8, 0x97, 0x00, 0xC8, 0x99, 0x00, 0xC8, 0x9B,
0x00, 0xC8, 0x9D, 0x00, 0xC8, 0x9F, 0x00, 0xC6, 0x9E, 0x00, 0xC8, 0xA3,
0x00, 0xC8, 0xA5, 0x00, 0xC8, 0xA7, 0x00, 0xC8, 0xA9, 0x00, 0xC8, 0xAB,
0x00, 0xC8, 0xAD, 0x00, 0xC8, 0xAF, 0x00, 0xC8, 0xB1, 0x00, 0xC8, 0xB3,
0x00, 0xE2, 0xB1, 0xA5, 0x00, 0xC8, 0xBC, 0x00, 0xC6, 0x9A, 0x00, 0xE2,
0xB1, 0xA6, 0x00, 0xC9, 0x82, 0x00, 0xC6, 0x80, 0x00, 0xCA, 0x89, 0x00,
0xCA, 0x8C, 0x00, 0xC9, 0x87, 0x00, 0xC9, 0x89, 0x00, 0xC9, 0x8B, 0x00,
0xC9, 0x8D, 0x00, 0xC9, 0x8F, 0x00, 0xCD, 0xB1, 0x00, 0xCD, 0xB3, 0x00,
0xCD, 0xB7, 0x00, 0xCF, 0xB3, 0x00, 0xCE, 0xAC, 0x00, 0xCE, 0xAD, 0x00,
0xCE, 0xAE, 0x00, 0xCE, 0xAF, 0x00, 0xCF, 0x8C, 0x00, 0xCF, 0x8D, 0x00,
0xCF, 0x8E, 0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB2, 0x00, 0xCE, 0xB3, 0x00,
0xCE, 0xB4, 0x00, 0xCE, 0xB5, 0x00, 0xCE, 0xB6, 0x00, 0xCE, 0xB7, 0x00,
0xCE, 0xB8, 0x00, 0xCE, 0xB9, 0x00, 0xCE, 0xBA, 0x00, 0xCE, 0xBB, 0x00,
0xCE, 0xBC, 0x00, 0xCE, 0xBD, 0x00, 0xCE, 0xBE, 0x00, 0xCE, 0xBF, 0x00,
0xCF, 0x80, 0x00, 0xCF, 0x81, 0x00, 0xCF, 0x83, 0x00, 0xCF, 0x84, 0x00,
0xCF, 0x85, 0x00, 0xCF, 0x86, 0x00, 0xCF, 0x87, 0x00, 0xCF, 0x88, 0x00,
0xCF, 0x89, 0x00, 0xCF, 0x8A, 0x00, 0xCF, 0x8B, 0x00, 0xCF, 0x97, 0x00,
0xCF, 0x99, 0x00, 0xCF, 0x9B, 0x00, 0xCF, 0x9D, 0x00, 0xCF, 0x9F, 0x00,
0xCF, 0xA1, 0x00, 0xCF, 0xA3, 0x00, 0xCF, 0xA5, 0x00, 0xCF, 0xA7, 0x00,
0xCF, 0xA9, 0x00, 0xCF, 0xAB, 0x00, 0xCF, 0xAD, 0x00, 0xCF, 0xAF, 0x00,
0xCE, 0xB8, 0x00, 0xCF, 0xB8, 0x00, 0xCF, 0xB2, 0x00, 0xCF, 0xBB, 0x00,
0xCD, 0xBB, 0x00, 0xCD, 0xBC, 0x00, 0xCD, 0xBD, 0x00, 0xD1, 0x90, 0x00,
0xD1, 0x91, 0x00, 0xD1, 0x92, 0x00, 0xD1, 0x93, 0x00, 0xD1, 0x94, 0x00,
0xD1, 0x95, 0x00, 0xD1, 0x96, 0x00, 0xD1, 0x97, 0x00, 0xD1, 0x98, 0x00,
0xD1, 0x99, 0x00, 0xD1, 0x9A, 0x00, 0xD1, 0x9B, 0x00, 0xD1, 0x9C, 0x00,
0xD1, 0x9D, 0x00, 0xD1, 0x9E, 0x00, 0xD1, 0x9F, 0x00, 0xD0, 0xB0, 0x00,
0xD0, 0xB1, 0x00, 0xD0, 0xB2, 0x00, 0xD0, 0xB3, 0x00, 0xD0, 0xB4, 0x00,
0xD0, 0xB5, 0x00, 0xD0, 0xB6, 0x00, 0xD0, 0xB7, 0x00, 0xD0, 0xB8, 0x00,
0xD0, 0xB9, 0x00, 0xD0, 0xBA, 0x00, 0xD0, 0xBB, 0x00, 0xD0, 0xBC, 0x00,
0xD0, 0xBD, 0x00, 0xD0, 0xBE, 0x00, 0xD0, 0xBF, 0x00, 0xD1, 0x80, 0x00,
0xD1, 0x81, 0x00, 0xD1, 0x82, 0x00, 0xD1, 0x83, 0x00, 0xD1, 0x84, 0x00,
0xD1, 0x85, 0x00, 0xD1, 0x86, 0x00, 0xD1, 0x87, 0x00, 0xD1, 0x88, 0x00,
0xD1, 0x89, 0x00, 0xD1, 0x8A, 0x00, 0xD1, 0x8B, 0x00, 0xD1, 0x8C, 0x00,
0xD1, 0x8D, 0x00, 0xD1, 0x8E, 0x00, 0xD1, 0x8F, 0x00, 0xD1, 0xA1, 0x00,
0xD1, 0xA3, 0x00, 0xD1, 0xA5, 0x00, 0xD1, 0xA7, 0x00, 0xD1, 0xA9, 0x00,
0xD1, 0xAB, 0x00, 0xD1, 0xAD, 0x00, 0xD1, 0xAF, 0x00, 0xD1, 0xB1, 0x00,
0xD1, 0xB3, 0x00, 0xD1, 0xB5, 0x00, 0xD1, 0xB7, 0x00, 0xD1, 0xB9, 0x00,
0xD1, 0xBB, 0x00, 0xD1, 0xBD, 0x00, 0xD1, 0xBF, 0x00, 0xD2, 0x81, 0x00,
0xD2, 0x8B, 0x00, 0xD2, 0x8D, 0x00, 0xD2, 0x8F, 0x00, 0xD2, 0x91, 0x00,
0xD2, 0x93, 0x00, 0xD2, 0x95, 0x00, 0xD2, 0x97, 0x00, 0xD2, 0x99, 0x00,
0xD2, 0x9B, 0x00, 0xD2, 0x9D, 0x00, 0xD2, 0x9F, 0x00, 0xD2, 0xA1, 0x00,
0xD2, 0xA3, 0x00, 0xD2, 0xA5, 0x00, 0xD2, 0xA7, 0x00, 0xD2, 0xA9, 0x00,
0xD2, 0xAB, 0x00, 0xD2, 0xAD, 0x00, 0xD2, 0xAF, 0x00, 0xD2, 0xB1, 0x00,
0xD2, 0xB3, 0x00, 0xD2, 0xB5, 0x00, 0xD2, 0xB7, 0x00, 0xD2, 0xB9, 0x00,
0xD2, 0xBB, 0x00, 0xD2, 0xBD, 0x00, 0xD2, 0xBF, 0x00, 0xD3, 0x8F, 0x00,
0xD3, 0x82, 0x00, 0xD3, 0x84, 0x00, 0xD3, 0x86, 0x00, 0xD3, 0x88, 0x00,
0xD3, 0x8A, 0x00, 0xD3, 0x8C, 0x00, 0xD3, 0x8E, 0x00, 0xD3, 0x91, 0x00,
0xD3, 0x93, 0x00, 0xD3, 0x95, 0x00, 0xD3, 0x97, 0x00, 0xD3, 0x99, 0x00,
0xD3, 0x9B, 0x00, 0xD3, 0x9D, 0x00, 0xD3, 0x9F, 0x00, 0xD3, 0xA1, 0x00,
0xD3, 0xA3, 0x00, 0xD3, 0xA5, 0x00, 0xD3, 0xA7, 0x00, 0xD3, 0xA9, 0x00,
0xD3, 0xAB, 0x00, 0xD3, 0xAD, 0x00, 0xD3, 0xAF, 0x00, 0xD3, 0xB1, 0x00,
0xD3, 0xB3, 0x00, 0xD3, 0xB5, 0x00, 0xD3, 0xB7, 0x00, 0xD3, 0xB9, 0x00,
0xD3, 0xBB, 0x00, 0xD3, 0xBD, 0x00, 0xD3, 0xBF, 0x00, 0xD4, 0x81, 0x00,
0xD4, 0x83, 0x00, 0xD4, 0x85, 0x00, 0xD4, 0x87, 0x00, 0xD4, 0x89, 0x00,
0xD4, 0x8B, 0x00, 0xD4, 0x8D, 0x00, 0xD4, 0x8F, 0x00, 0xD4, 0x91, 0x00,
0xD4, 0x93, 0x00, 0xD4, 0x95, 0x00, 0xD4, 0x97, 0x00, 0xD4, 0x99, 0x00,
0xD4, 0x9B, 0x00, 0xD4, 0x9D, 0x00, 0xD4, 0x9F, 0x00, 0xD4, 0xA1, 0x00,
0xD4, 0xA3, 0x00, 0xD4, 0xA5, 0x00, 0xD4, 0xA7, 0x00, 0xD4, 0xA9, 0x00,
0xD4, 0xAB, 0x00, 0xD4, 0xAD, 0x00, 0xD4, 0xAF, 0x00, 0xD5, 0xA1, 0x00,
0xD5, 0xA2, 0x00, 0xD5, 0xA3, 0x00, 0xD5, 0xA4, 0x00, 0xD5, 0xA5, 0x00,
0xD5, 0xA6, 0x00, 0xD5, 0xA7, 0x00, 0xD5, 0xA8, 0x00, 0xD5, 0xA9, 0x00,
0xD5, 0xAA, 0x00, 0xD5, 0xAB, 0x00, 0xD5, 0xAC, 0x00, 0xD5, 0xAD, 0x00,
0xD5, 0xAE, 0x00, 0xD5, 0xAF, 0x00, 0xD5, 0xB0, 0x00, 0xD5, 0xB1, 0x00,
0xD5, 0xB2, 0x00, 0xD5, 0xB3, 0x00, 0xD5, 0xB4, 0x00, 0xD5, 0xB5, 0x00,
0xD5, 0xB6, 0x00, 0xD5, 0xB7, 0x00, 0xD5, 0xB8, 0x00, 0xD5, 0xB9, 0x00,
0xD5, 0xBA, 0x00, 0xD5, 0xBB, 0x00, 0xD5, 0xBC, 0x00, 0xD5, 0xBD, 0x00,
0xD5, 0xBE, 0x00, 0xD5, 0xBF, 0x00, 0xD6, 0x80, 0x00, 0xD6, 0x81, 0x00,
0xD6, 0x82, 0x00, 0xD6, 0x83, 0x00, 0xD6, 0x84, 0x00, 0xD6, 0x85, 0x00,
0xD6, 0x86, 0x00, 0xF0, 0x90, 0x90, 0xA8, 0x00, 0xF0, 0x90, 0x90, 0xA9,
0x00, 0xF0, 0x90, 0x90, 0xAA, 0x00, 0xF0, 0x90, 0x90, 0xAB, 0x00, 0xF0,
0x90, 0x90, 0xAC, 0x00, 0xF0, 0x90, 0x90, 0xAD, 0x00, 0xF0, 0x90, 0x90,
0xAE, 0x00, 0xF0, 0x90, 0x90, 0xAF, 0x00, 0xF0, 0x90, 0x90, 0xB0, 0x00,
0xF0, 0x90, 0x90, 0xB1, 0x00, 0xF0, 0x90, 0x90, 0xB2, 0x00, 0xF0, 0x90,
0x90, 0xB3, 0x00, 0xF0, 0x90, 0x90, 0xB4, 0x00, 0xF0, 0x90, 0x90, 0xB5,
0x00, 0xF0, 0x90, 0x90, 0xB6, 0x00, 0xF0, 0x90, 0x90, 0xB7, 0x00, 0xF0,
0x90, 0x90, 0xB8, 0x00, 0xF0, 0x90, 0x90, 0xB9, 0x00, 0xF0, 0x90, 0x90,
0xBA, 0x00, 0xF0, 0x90, 0x90, 0xBB, 0x00, 0xF0, 0x90, 0x90, 0xBC, 0x00,
0xF0, 0x90, 0x90, 0xBD, 0x00, 0xF0, 0x90, 0x90, 0xBE, 0x00, 0xF0, 0x90,
0x90, 0xBF, 0x00, 0xF0, 0x90, 0x91, 0x80, 0x00, 0xF0, 0x90, 0x91, 0x81,
0x00, 0xF0, 0x90, 0x91, 0x82, 0x00, 0xF0, 0x90, 0x91, 0x83, 0x00, 0xF0,
0x90, 0x91, 0x84, 0x00, 0xF0, 0x90, 0x91, 0x85, 0x00, 0xF0, 0x90, 0x91,
0x86, 0x00, 0xF0, 0x90, 0x91, 0x87, 0x00, 0xF0, 0x90, 0x91, 0x88, 0x00,
0xF0, 0x90, 0x91, 0x89, 0x00, 0xF0, 0x90, 0x91, 0x8A, 0x00, 0xF0, 0x90,
0x91, 0x8B, 0x00, 0xF0, 0x90, 0x91, 0x8C, 0x00, 0xF0, 0x90, 0x91, 0x8D,
0x00, 0xF0, 0x90, 0x91, 0x8E, 0x00, 0xF0, 0x90, 0x91, 0x8F, 0x00, 0xF0,
0x90, 0x93, 0x98, 0x00, 0xF0, 0x90, 0x93, 0x99, 0x00, 0xF0, 0x90, 0x93,
0x9A, 0x00, 0xF0, 0x90, 0x93, 0x9B, 0x00, 0xF0, 0x90, 0x93, 0x9C, 0x00,
0xF0, 0x90, 0x93, 0x9D, 0x00, 0xF0, 0x90, 0x93, 0x9E, 0x00, 0xF0, 0x90,
0x93, 0x9F, 0x00, 0xF0, 0x90, 0x93, 0xA0, 0x00, 0xF0, 0x90, 0x93, 0xA1,
0x00, 0xF0, 0x90, 0x93, 0xA2, 0x00, 0xF0, 0x90, 0x93, 0xA3, 0x00, 0xF0,
0x90, 0x93, 0xA4, 0x00, 0xF0, 0x90, 0x93, 0xA5, 0x00, 0xF0, 0x90, 0x93,
0xA6, 0x00, 0xF0, 0x90, 0x93, 0xA7, 0x00, 0xF0, 0x90, 0x93, 0xA8, 0x00,
0xF0, 0x90, 0x93, 0xA9, 0x00, 0xF0, 0x90, 0x93, 0xAA, 0x00, 0xF0, 0x90,
0x93, 0xAB, 0x00, 0xF0, 0x90, 0x93, 0xAC, 0x00, 0xF0, 0x90, 0x93, 0xAD,
0x00, 0xF0, 0x90, 0x93, 0xAE, 0x00, 0xF0, 0x90, 0x93, 0xAF, 0x00, 0xF0,
0x90, 0x93, 0xB0, 0x00, 0xF0, 0x90, 0x93, 0xB1, 0x00, 0xF0, 0x90, 0x93,
0xB2, 0x00, 0xF0, 0x90, 0x93, 0xB3, 0x00, 0xF0, 0x90, 0x93, 0xB4, 0x00,
0xF0, 0x90, 0x93, 0xB5, 0x00, 0xF0, 0x90, 0x93, 0xB6, 0x00, 0xF0, 0x90,
0x93, 0xB7, 0x00, 0xF0, 0x90, 0x93, 0xB8, 0x00, 0xF0, 0x90, 0x93, 0xB9,
0x00, 0xF0, 0x90, 0x93, 0xBA, 0x00, 0xF0, 0x90, 0x93, 0xBB, 0x00, 0xE2,
0xB4, 0x80, 0x00, 0xE2, 0xB4, 0x81, 0x00, 0xE2, 0xB4, 0x82, 0x00, 0xE2,
0xB4, 0x83, 0x00, 0xE2, 0xB4, 0x84, 0x00, 0xE2, 0xB4, 0x85, 0x00, 0xE2,
0xB4, 0x86, 0x00, 0xE2, 0xB4, 0x87, 0x00, 0xE2, 0xB4, 0x88, 0x00, 0xE2,
0xB4, 0x89, 0x00, 0xE2, 0xB4, 0x8A, 0x00, 0xE2, 0xB4, 0x8B, 0x00, 0xE2,
0xB4, 0x8C, 0x00, 0xE2, 0xB4, 0x8D, 0x00, 0xE2, 0xB4, 0x8E, 0x00, 0xE2,
0xB4, 0x8F, 0x00, 0xE2, 0xB4, 0x90, 0x00, 0xE2, 0xB4, 0x91, 0x00, 0xE2,
0xB4, 0x92, 0x00, 0xE2, 0xB4, 0x93, 0x00, 0xE2, 0xB4, 0x94, 0x00, 0xE2,
0xB4, 0x95, 0x00, 0xE2, 0xB4, 0x96, 0x00, 0xE2, 0xB4, 0x97, 0x00, 0xE2,
0xB4, 0x98, 0x00, 0xE2, 0xB4, 0x99, 0x00, 0xE2, 0xB4, 0x9A, 0x00, 0xE2,
0xB4, 0x9B, 0x00, 0xE2, 0xB4, 0x9C, 0x00, 0xE2, 0xB4, 0x9D, 0x00, 0xE2,
0xB4, 0x9E, 0x00, 0xE2, 0xB4, 0x9F, 0x00, 0xE2, 0xB4, 0xA0, 0x00, 0xE2,
0xB4, 0xA1, 0x00, 0xE2, 0xB4, 0xA2, 0x00, 0xE2, 0xB4, 0xA3, 0x00, 0xE2,
0xB4, 0xA4, 0x00, 0xE2, 0xB4, 0xA5, 0x00, 0xE2, 0xB4, 0xA7, 0x00, 0xF0,
0x90, 0xB3, 0x80, 0x00, 0xF0, 0x90, 0xB3, 0x81, 0x00, 0xF0, 0x90, 0xB3,
0x82, 0x00, 0xF0, 0x90, 0xB3, 0x83, 0x00, 0xF0, 0x90, 0xB3, 0x84, 0x00,
0xF0, 0x90, 0xB3, 0x85, 0x00, 0xF0, 0x90, 0xB3, 0x86, 0x00, 0xF0, 0x90,
0xB3, 0x87, 0x00, 0xF0, 0x90, 0xB3, 0x88, 0x00, 0xF0, 0x90, 0xB3, 0x89,
0x00, 0xF0, 0x90, 0xB3, 0x8A, 0x00, 0xF0, 0x90, 0xB3, 0x8B, 0x00, 0xF0,
0x90, 0xB3, 0x8C, 0x00, 0xF0, 0x90, 0xB3, 0x8D, 0x00, 0xF0, 0x90, 0xB3,
0x8E, 0x00, 0xF0, 0x90, 0xB3, 0x8F, 0x00, 0xF0, 0x90, 0xB3, 0x90, 0x00,
0xF0, 0x90, 0xB3, 0x91, 0x00, 0xF0, 0x90, 0xB3, 0x92, 0x00, 0xF0, 0x90,
0xB3, 0x93, 0x00, 0xF0, 0x90, 0xB3, 0x94, 0x00, 0xF0, 0x90, 0xB3, 0x95,
0x00, 0xF0, 0x90, 0xB3, 0x96, 0x00, 0xF0, 0x90, 0xB3, 0x97, 0x00, 0xF0,
0x90, 0xB3, 0x98, 0x00, 0xF0, 0x90, 0xB3, 0x99, 0x00, 0xF0, 0x90, 0xB3,
0x9A, 0x00, 0xF0, 0x90, 0xB3, 0x9B, 0x00, 0xF0, 0x90, 0xB3, 0x9C, 0x00,
0xF0, 0x90, 0xB3, 0x9D, 0x00, 0xF0, 0x90, 0xB3, 0x9E, 0x00, 0xF0, 0x90,
0xB3, 0x9F, 0x00, 0xF0, 0x90, 0xB3, 0xA0, 0x00, 0xF0, 0x90, 0xB3, 0xA1,
0x00, 0xF0, 0x90, 0xB3, 0xA2, 0x00, 0xF0, 0x90, 0xB3, 0xA3, 0x00, 0xF0,
0x90, 0xB3, 0xA4, 0x00, 0xF0, 0x90, 0xB3, 0xA5, 0x00, 0xF0, 0x90, 0xB3,
0xA6, 0x00, 0xF0, 0x90, 0xB3, 0xA7, 0x00, 0xF0, 0x90, 0xB3, 0xA8, 0x00,
0xF0, 0x90, 0xB3, 0xA9, 0x00, 0xF0, 0x90, 0xB3, 0xAA, 0x00, 0xF0, 0x90,
0xB3, 0xAB, 0x00, 0xF0, 0x90, 0xB3, 0xAC, 0x00, 0xF0, 0x90, 0xB3, 0xAD,
0x00, 0xF0, 0x90, 0xB3, 0xAE, 0x00, 0xF0, 0x90, 0xB3, 0xAF, 0x00, 0xF0,
0x90, 0xB3, 0xB0, 0x00, 0xF0, 0x90, 0xB3, 0xB1, 0x00, 0xF0, 0x90, 0xB3,
0xB2, 0x00, 0xE2, 0xB4, 0xAD, 0x00, 0xF0, 0x91, 0xA3, 0x80, 0x00, 0xF0,
0x91, 0xA3, 0x81, 0x00, 0xF0, 0x91, 0xA3, 0x82, 0x00, 0xF0, 0x91, 0xA3,
0x83, 0x00, 0xF0, 0x91, 0xA3, 0x84, 0x00, 0xF0, 0x91, 0xA3, 0x85, 0x00,
0xF0, 0x91, 0xA3, 0x86, 0x00, 0xF0, 0x91, 0xA3, 0x87, 0x00, 0xF0, 0x91,
0xA3, 0x88, 0x00, 0xF0, 0x91, 0xA3, 0x89, 0x00, 0xF0, 0x91, 0xA3, 0x8A,
0x00, 0xF0, 0x91, 0xA3, 0x8B, 0x00, 0xF0, 0x91, 0xA3, 0x8C, 0x00, 0xF0,
0x91, 0xA3, 0x8D, 0x00, 0xF0, 0x91, 0xA3, 0x8E, 0x00, 0xF0, 0x91, 0xA3,
0x8F, 0x00, 0xF0, 0x91, 0xA3, 0x90, 0x00, 0xF0, 0x91, 0xA3, 0x91, 0x00,
0xF0, 0x91, 0xA3, 0x92, 0x00, 0xF0, 0x91, 0xA3, 0x93, 0x00, 0xF0, 0x91,
0xA3, 0x94, 0x00, 0xF0, 0x91, 0xA3, 0x95, 0x00, 0xF0, 0x91, 0xA3, 0x96,
0x00, 0xF0, 0x91, 0xA3, 0x97, 0x00, 0xF0, 0x91, 0xA3, 0x98, 0x00, 0xF0,
0x91, 0xA3, 0x99, 0x00, 0xF0, 0x91, 0xA3, 0x9A, 0x00, 0xF0, 0x91, 0xA3,
0x9B, 0x00, 0xF0, 0x91, 0xA3, 0x9C, 0x00, 0xF0, 0x91, 0xA3, 0x9D, 0x00,
0xF0, 0x91, 0xA3, 0x9E, 0x00, 0xF0, 0x91, 0xA3, 0x9F, 0x00, 0xEA, 0xAD,
0xB0, 0x00, 0xEA, 0xAD, 0xB1, 0x00, 0xEA, 0xAD, 0xB2, 0x00, 0xEA, 0xAD,
0xB3, 0x00, 0xEA, 0xAD, 0xB4, 0x00, 0xEA, 0xAD, 0xB5, 0x00, 0xEA, 0xAD,
0xB6, 0x00, 0xEA, 0xAD, 0xB7, 0x00, 0xEA, 0xAD, 0xB8, 0x00, 0xEA, 0xAD,
0xB9, 0x00, 0xEA, 0xAD, 0xBA, 0x00, 0xEA, 0xAD, 0xBB, 0x00, 0xEA, 0xAD,
0xBC, 0x00, 0xEA, 0xAD, 0xBD, 0x00, 0xEA, 0xAD, 0xBE, 0x00, 0xEA, 0xAD,
0xBF, 0x00, 0xEA, 0xAE, 0x80, 0x00, 0xEA, 0xAE, 0x81, 0x00, 0xEA, 0xAE,
0x82, 0x00, 0xEA, 0xAE, 0x83, 0x00, 0xEA, 0xAE, 0x84, 0x00, 0xEA, 0xAE,
0x85, 0x00, 0xEA, 0xAE, 0x86, 0x00, 0xEA, 0xAE, 0x87, 0x00, 0xEA, 0xAE,
0x88, 0x00, 0xEA, 0xAE, 0x89, 0x00, 0xEA, 0xAE, 0x8A, 0x00, 0xEA, 0xAE,
0x8B, 0x00, 0xEA, 0xAE, 0x8C, 0x00, 0xEA, 0xAE, 0x8D, 0x00, 0xEA, 0xAE,
0x8E, 0x00, 0xEA, 0xAE, 0x8F, 0x00, 0xEA, 0xAE, 0x90, 0x00, 0xEA, 0xAE,
0x91, 0x00, 0xEA, 0xAE, 0x92, 0x00, 0xEA, 0xAE, 0x93, 0x00, 0xEA, 0xAE,
0x94, 0x00, 0xEA, 0xAE, 0x95, 0x00, 0xEA, 0xAE, 0x96, 0x00, 0xEA, 0xAE,
0x97, 0x00, 0xEA, 0xAE, 0x98, 0x00, 0xEA, 0xAE, 0x99, 0x00, 0xEA, 0xAE,
0x9A, 0x00, 0xEA, 0xAE, 0x9B, 0x00, 0xEA, 0xAE, 0x9C, 0x00, 0xEA, 0xAE,
0x9D, 0x00, 0xEA, 0xAE, 0x9E, 0x00, 0xEA, 0xAE, 0x9F, 0x00, 0xEA, 0xAE,
0xA0, 0x00, 0xEA, 0xAE, 0xA1, 0x00, 0xEA, 0xAE, 0xA2, 0x00, 0xEA, 0xAE,
0xA3, 0x00, 0xEA, 0xAE, 0xA4, 0x00, 0xEA, 0xAE, 0xA5, 0x00, 0xEA, 0xAE,
0xA6, 0x00, 0xEA, 0xAE, 0xA7, 0x00, 0xEA, 0xAE, 0xA8, 0x00, 0xEA, 0xAE,
0xA9, 0x00, 0xEA, 0xAE, 0xAA, 0x00, 0xEA, 0xAE, 0xAB, 0x00, 0xEA, 0xAE,
0xAC, 0x00, 0xEA, 0xAE, 0xAD, 0x00, 0xEA, 0xAE, 0xAE, 0x00, 0xEA, 0xAE,
0xAF, 0x00, 0xEA, 0xAE, 0xB0, 0x00, 0xEA, 0xAE, 0xB1, 0x00, 0xEA, 0xAE,
0xB2, 0x00, 0xEA, 0xAE, 0xB3, 0x00, 0xEA, 0xAE, 0xB4, 0x00, 0xEA, 0xAE,
0xB5, 0x00, 0xEA, 0xAE, 0xB6, 0x00, 0xEA, 0xAE, 0xB7, 0x00, 0xEA, 0xAE,
0xB8, 0x00, 0xEA, 0xAE, 0xB9, 0x00, 0xEA, 0xAE, 0xBA, 0x00, 0xEA, 0xAE,
0xBB, 0x00, 0xEA, 0xAE, 0xBC, 0x00, 0xEA, 0xAE, 0xBD, 0x00, 0xEA, 0xAE,
0xBE, 0x00, 0xEA, 0xAE, 0xBF, 0x00, 0xE1, 0x8F, 0xB8, 0x00, 0xE1, 0x8F,
0xB9, 0x00, 0xE1, 0x8F, 0xBA, 0x00, 0xE1, 0x8F, 0xBB, 0x00, 0xE1, 0x8F,
0xBC, 0x00, 0xE1, 0x8F, 0xBD, 0x00, 0xE1, 0xB8, 0x81, 0x00, 0xE1, 0xB8,
0x83, 0x00, 0xE1, 0xB8, 0x85, 0x00, 0xE1, 0xB8, 0x87, 0x00, 0xE1, 0xB8,
0x89, 0x00, 0xE1, 0xB8, 0x8B, 0x00, 0xE1, 0xB8, 0x8D, 0x00, 0xE1, 0xB8,
0x8F, 0x00, 0xE1, 0xB8, 0x91, 0x00, 0xE1, 0xB8, 0x93, 0x00, 0xE1, 0xB8,
0x95, 0x00, 0xE1, 0xB8, 0x97, 0x00, 0xE1, 0xB8, 0x99, 0x00, 0xE1, 0xB8,
0x9B, 0x00, 0xE1, 0xB8, 0x9D, 0x00, 0xE1, 0xB8, 0x9F, 0x00, 0xE1, 0xB8,
0xA1, 0x00, 0xE1, 0xB8, 0xA3, 0x00, 0xE1, 0xB8, 0xA5, 0x00, 0xE1, 0xB8,
0xA7, 0x00, 0xE1, 0xB8, 0xA9, 0x00, 0xE1, 0xB8, 0xAB, 0x00, 0xE1, 0xB8,
0xAD, 0x00, 0xE1, 0xB8, 0xAF, 0x00, 0xE1, 0xB8, 0xB1, 0x00, 0xE1, 0xB8,
0xB3, 0x00, 0xE1, 0xB8, 0xB5, 0x00, 0xE1, 0xB8, 0xB7, 0x00, 0xE1, 0xB8,
0xB9, 0x00, 0xE1, 0xB8, 0xBB, 0x00, 0xE1, 0xB8, 0xBD, 0x00, 0xE1, 0xB8,
0xBF, 0x00, 0xE1, 0xB9, 0x81, 0x00, 0xE1, 0xB9, 0x83, 0x00, 0xE1, 0xB9,
0x85, 0x00, 0xE1, 0xB9, 0x87, 0x00, 0xE1, 0xB9, 0x89, 0x00, 0xE1, 0xB9,
0x8B, 0x00, 0xE1, 0xB9, 0x8D, 0x00, 0xE1, 0xB9, 0x8F, 0x00, 0xE1, 0xB9,
0x91, 0x00, 0xE1, 0xB9, 0x93, 0x00, 0xE1, 0xB9, 0x95, 0x00, 0xE1, 0xB9,
0x97, 0x00, 0xE1, 0xB9, 0x99, 0x00, 0xE1, 0xB9, 0x9B, 0x00, 0xE1, 0xB9,
0x9D, 0x00, 0xE1, 0xB9, 0x9F, 0x00, 0xE1, 0xB9, 0xA1, 0x00, 0xE1, 0xB9,
0xA3, 0x00, 0xE1, 0xB9, 0xA5, 0x00, 0xE1, 0xB9, 0xA7, 0x00, 0xE1, 0xB9,
0xA9, 0x00, 0xE1, 0xB9, 0xAB, 0x00, 0xE1, 0xB9, 0xAD, 0x00, 0xE1, 0xB9,
0xAF, 0x00, 0xE1, 0xB9, 0xB1, 0x00, 0xE1, 0xB9, 0xB3, 0x00, 0xE1, 0xB9,
0xB5, 0x00, 0xE1, 0xB9, 0xB7, 0x00, 0xE1, 0xB9, 0xB9, 0x00, 0xE1, 0xB9,
0xBB, 0x00, 0xE1, 0xB9, 0xBD, 0x00, 0xE1, 0xB9, 0xBF, 0x00, 0xE1, 0xBA,
0x81, 0x00, 0xE1, 0xBA, 0x83, 0x00, 0xE1, 0xBA, 0x85, 0x00, 0xE1, 0xBA,
0x87, 0x00, 0xE1, 0xBA, 0x89, 0x00, 0xE1, 0xBA, 0x8B, 0x00, 0xE1, 0xBA,
0x8D, 0x00, 0xE1, 0xBA, 0x8F, 0x00, 0xE1, 0xBA, 0x91, 0x00, 0xF0, 0x9E,
0xA4, 0xA2, 0x00, 0xF0, 0x9E, 0xA4, 0xA3, 0x00, 0xF0, 0x9E, 0xA4, 0xA4,
0x00, 0xF0, 0x9E, 0xA4, 0xA5, 0x00, 0xF0, 0x9E, 0xA4, 0xA6, 0x00, 0xF0,
0x9E, 0xA4, 0xA7, 0x00, 0xF0, 0x9E, 0xA4, 0xA8, 0x00, 0xF0, 0x9E, 0xA4,
0xA9, 0x00, 0xF0, 0x9E, 0xA4, 0xAA, 0x00, 0xF0, 0x9E, 0xA4, 0xAB, 0x00,
0xF0, 0x9E, 0xA4, 0xAC, 0x00, 0xF0, 0x9E, 0xA4, 0xAD, 0x00, 0xF0, 0x9E,
0xA4, 0xAE, 0x00, 0xF0, 0x9E, 0xA4, 0xAF, 0x00, 0xF0, 0x9E, 0xA4, 0xB0,
0x00, 0xF0, 0x9E, 0xA4, 0xB1, 0x00, 0xF0, 0x9E, 0xA4, 0xB2, 0x00, 0xF0,
0x9E, 0xA4, 0xB3, 0x00, 0xF0, 0x9E, 0xA4, 0xB4, 0x00, 0xF0, 0x9E, 0xA4,
0xB5, 0x00, 0xF0, 0x9E, 0xA4, 0xB6, 0x00, 0xF0, 0x9E, 0xA4, 0xB7, 0x00,
0xF0, 0x9E, 0xA4, 0xB8, 0x00, 0xF0, 0x9E, 0xA4, 0xB9, 0x00, 0xF0, 0x9E,
0xA4, 0xBA, 0x00, 0xF0, 0x9E, 0xA4, 0xBB, 0x00, 0xF0, 0x9E, 0xA4, 0xBC,
0x00, 0xF0, 0x9E, 0xA4, 0xBD, 0x00, 0xF0, 0x9E, 0xA4, 0xBE, 0x00, 0xF0,
0x9E, 0xA4, 0xBF, 0x00, 0xF0, 0x9E, 0xA5, 0x80, 0x00, 0xF0, 0x9E, 0xA5,
0x81, 0x00, 0xE1, 0xBA, 0x93, 0x00, 0xF0, 0x9E, 0xA5, 0x82, 0x00, 0xF0,
0x9E, 0xA5, 0x83, 0x00, 0xE1, 0xBA, 0x95, 0x00, 0xC3, 0x9F, 0x00, 0xE1,
0xBA, 0xA1, 0x00, 0xE1, 0xBA, 0xA3, 0x00, 0xE1, 0xBA, 0xA5, 0x00, 0xE1,
0xBA, 0xA7, 0x00, 0xE1, 0xBA, 0xA9, 0x00, 0xE1, 0xBA, 0xAB, 0x00, 0xE1,
0xBA, 0xAD, 0x00, 0xE1, 0xBA, 0xAF, 0x00, 0xE1, 0xBA, 0xB1, 0x00, 0xE1,
0xBA, 0xB3, 0x00, 0xE1, 0xBA, 0xB5, 0x00, 0xE1, 0xBA, 0xB7, 0x00, 0xE1,
0xBA, 0xB9, 0x00, 0xE1, 0xBA, 0xBB, 0x00, 0xE1, 0xBA, 0xBD, 0x00, 0xE1,
0xBA, 0xBF, 0x00, 0xE1, 0xBB, 0x81, 0x00, 0xE1, 0xBB, 0x83, 0x00, 0xE1,
0xBB, 0x85, 0x00, 0xE1, 0xBB, 0x87, 0x00, 0xE1, 0xBB, 0x89, 0x00, 0xE1,
0xBB, 0x8B, 0x00, 0xE1, 0xBB, 0x8D, 0x00, 0xE1, 0xBB, 0x8F, 0x00, 0xE1,
0xBB, 0x91, 0x00, 0xE1, 0xBB, 0x93, 0x00, 0xE1, 0xBB, 0x95, 0x00, 0xE1,
0xBB, 0x97, 0x00, 0xE1, 0xBB, 0x99, 0x00, 0xE1, 0xBB, 0x9B, 0x00, 0xE1,
0xBB, 0x9D, 0x00, 0xE1, 0xBB, 0x9F, 0x00, 0xE1, 0xBB, 0xA1, 0x00, 0xE1,
0xBB, 0xA3, 0x00, 0xE1, 0xBB, 0xA5, 0x00, 0xE1, 0xBB, 0xA7, 0x00, 0xE1,
0xBB, 0xA9, 0x00, 0xE1, 0xBB, 0xAB, 0x00, 0xE1, 0xBB, 0xAD, 0x00, 0xE1,
0xBB, 0xAF, 0x00, 0xE1, 0xBB, 0xB1, 0x00, 0xE1, 0xBB, 0xB3, 0x00, 0xE1,
0xBB, 0xB5, 0x00, 0xE1, 0xBB, 0xB7, 0x00, 0xE1, 0xBB, 0xB9, 0x00, 0xE1,
0xBB, 0xBB, 0x00, 0xE1, 0xBB, 0xBD, 0x00, 0xE1, 0xBB, 0xBF, 0x00, 0xE1,
0xBC, 0x80, 0x00, 0xE1, 0xBC, 0x81, 0x00, 0xE1, 0xBC, 0x82, 0x00, 0xE1,
0xBC, 0x83, 0x00, 0xE1, 0xBC, 0x84, 0x00, 0xE1, 0xBC, 0x85, 0x00, 0xE1,
0xBC, 0x86, 0x00, 0xE1, 0xBC, 0x87, 0x00, 0xE1, 0xBC, 0x90, 0x00, 0xE1,
0xBC, 0x91, 0x00, 0xE1, 0xBC, 0x92, 0x00, 0xE1, 0xBC, 0x93, 0x00, 0xE1,
0xBC, 0x94, 0x00, 0xE1, 0xBC, 0x95, 0x00, 0xE1, 0xBC, 0xA0, 0x00, 0xE1,
0xBC, 0xA1, 0x00, 0xE1, 0xBC, 0xA2, 0x00, 0xE1, 0xBC, 0xA3, 0x00, 0xE1,
0xBC, 0xA4, 0x00, 0xE1, 0xBC, 0xA5, 0x00, 0xE1, 0xBC, 0xA6, 0x00, 0xE1,
0xBC, 0xA7, 0x00, 0xE1, 0xBC, 0xB0, 0x00, 0xE1, 0xBC, 0xB1, 0x00, 0xE1,
0xBC, 0xB2, 0x00, 0xE1, 0xBC, 0xB3, 0x00, 0xE1, 0xBC, 0xB4, 0x00, 0xE1,
0xBC, 0xB5, 0x00, 0xE1, 0xBC, 0xB6, 0x00, 0xE1, 0xBC, 0xB7, 0x00, 0xE1,
0xBD, 0x80, 0x00, 0xE1, 0xBD, 0x81, 0x00, 0xE1, 0xBD, 0x82, 0x00, 0xE1,
0xBD, 0x83, 0x00, 0xE1, 0xBD, 0x84, 0x00, 0xE1, 0xBD, 0x85, 0x00, 0xE1,
0xBD, 0x91, 0x00, 0xE1, 0xBD, 0x93, 0x00, 0xE1, 0xBD, 0x95, 0x00, 0xE1,
0xBD, 0x97, 0x00, 0xE1, 0xBD, 0xA0, 0x00, 0xE1, 0xBD, 0xA1, 0x00, 0xE1,
0xBD, 0xA2, 0x00, 0xE1, 0xBD, 0xA3, 0x00, 0xE1, 0xBD, 0xA4, 0x00, 0xE1,
0xBD, 0xA5, 0x00, 0xE1, 0xBD, 0xA6, 0x00, 0xE1, 0xBD, 0xA7, 0x00, 0xE1,
0xBE, 0x80, 0x00, 0xE1, 0xBE, 0x81, 0x00, 0xE1, 0xBE, 0x82, 0x00, 0xE1,
0xBE, 0x83, 0x00, 0xE1, 0xBE, 0x84, 0x00, 0xE1, 0xBE, 0x85, 0x00, 0xE1,
0xBE, 0x86, 0x00, 0xE1, 0xBE, 0x87, 0x00, 0xE1, 0xBE, 0x90, 0x00, 0xE1,
0xBE, 0x91, 0x00, 0xE1, 0xBE, 0x92, 0x00, 0xE1, 0xBE, 0x93, 0x00, 0xE1,
0xBE, 0x94, 0x00, 0xE1, 0xBE, 0x95, 0x00, 0xE1, 0xBE, 0x96, 0x00, 0xE1,
0xBE, 0x97, 0x00, 0xE1, 0xBE, 0xA0, 0x00, 0xE1, 0xBE, 0xA1, 0x00, 0xE1,
0xBE, 0xA2, 0x00, 0xE1, 0xBE, 0xA3, 0x00, 0xE1, 0xBE, 0xA4, 0x00, 0xE1,
0xBE, 0xA5, 0x00, 0xE1, 0xBE, 0xA6, 0x00, 0xE1, 0xBE, 0xA7, 0x00, 0xE1,
0xBE, 0xB0, 0x00, 0xE1, 0xBE, 0xB1, 0x00, 0xE1, 0xBD, 0xB0, 0x00, 0xE1,
0xBD, 0xB1, 0x00, 0xE1, 0xBE, 0xB3, 0x00, 0xE1, 0xBD, 0xB2, 0x00, 0xE1,
0xBD, 0xB3, 0x00, 0xE1, 0xBD, 0xB4, 0x00, 0xE1, 0xBD, 0xB5, 0x00, 0xE1,
0xBF, 0x83, 0x00, 0xE1, 0xBF, 0x90, 0x00, 0xE1, 0xBF, 0x91, 0x00, 0xE1,
0xBD, 0xB6, 0x00, 0xE1, 0xBD, 0xB7, 0x00, 0xE1, 0xBF, 0xA0, 0x00, 0xE1,
0xBF, 0xA1, 0x00, 0xE1, 0xBD, 0xBA, 0x00, 0xE1, 0xBD, 0xBB, 0x00, 0xE1,
0xBF, 0xA5, 0x00, 0xE1, 0xBD, 0xB8, 0x00, 0xE1, 0xBD, 0xB9, 0x00, 0xE1,
0xBD, 0xBC, 0x00, 0xE1, 0xBD, 0xBD, 0x00, 0xE1, 0xBF, 0xB3, 0x00, 0xCF,
0x89, 0x00, 0x6B, 0x00, 0xC3, 0xA5, 0x00, 0xE2, 0x85, 0x8E, 0x00, 0xE2,
0x85, 0xB0, 0x00, 0xE2, 0x85, 0xB1, 0x00, 0xE2, 0x85, 0xB2, 0x00, 0xE2,
0x85, 0xB3, 0x00, 0xE2, 0x85, 0xB4, 0x00, 0xE2, 0x85, 0xB5, 0x00, 0xE2,
0x85, 0xB6, 0x00, 0xE2, 0x85, 0xB7, 0x00, 0xE2, 0x85, 0xB8, 0x00, 0xE2,
0x85, 0xB9, 0x00, 0xE2, 0x85, 0xBA, 0x00, 0xE2, 0x85, 0xBB, 0x00, 0xE2,
0x85, 0xBC, 0x00, 0xE2, 0x85, 0xBD, 0x00, 0xE2, 0x85, 0xBE, 0x00, 0xE2,
0x85, 0xBF, 0x00, 0xE2, 0x86, 0x84, 0x00, 0xE2, 0x93, 0x90, 0x00, 0xE2,
0x93, 0x91, 0x00, 0xE2, 0x93, 0x92, 0x00, 0xE2, 0x93, 0x93, 0x00, 0xE2,
0x93, 0x94, 0x00, 0xE2, 0x93, 0x95, 0x00, 0xE2, 0x93, 0x96, 0x00, 0xE2,
0x93, 0x97, 0x00, 0xE2, 0x93, 0x98, 0x00, 0xE2, 0x93, 0x99, 0x00, 0xE2,
0x93, 0x9A, 0x00, 0xE2, 0x93, 0x9B, 0x00, 0xE2, 0x93, 0x9C, 0x00, 0xE2,
0x93, 0x9D, 0x00, 0xE2, 0x93, 0x9E, 0x00, 0xE2, 0x93, 0x9F, 0x00, 0xE2,
0x93, 0xA0, 0x00, 0xE2, 0x93, 0xA1, 0x00, 0xE2, 0x93, 0xA2, 0x00, 0xE2,
0x93, 0xA3, 0x00, 0xE2, 0x93, 0xA4, 0x00, 0xE2, 0x93, 0xA5, 0x00, 0xE2,
0x93, 0xA6, 0x00, 0xE2, 0x93, 0xA7, 0x00, 0xE2, 0x93, 0xA8, 0x00, 0xE2,
0x93, 0xA9, 0x00, 0xE2, 0xB0, 0xB0, 0x00, 0xE2, 0xB0, 0xB1, 0x00, 0xE2,
0xB0, 0xB2, 0x00, 0xE2, 0xB0, 0xB3, 0x00, 0xE2, 0xB0, 0xB4, 0x00, 0xE2,
0xB0, 0xB5, 0x00, 0xE2, 0xB0, 0xB6, 0x00, 0xE2, 0xB0, 0xB7, 0x00, 0xE2,
0xB0, 0xB8, 0x00, 0xE2, 0xB0, 0xB9, 0x00, 0xE2, 0xB0, 0xBA, 0x00, 0xE2,
0xB0, 0xBB, 0x00, 0xE2, 0xB0, 0xBC, 0x00, 0xE2, 0xB0, 0xBD, 0x00, 0xE2,
0xB0, 0xBE, 0x00, 0xE2, 0xB0, 0xBF, 0x00, 0xE2, 0xB1, 0x80, 0x00, 0xE2,
0xB1, 0x81, 0x00, 0xE2, 0xB1, 0x82, 0x00, 0xE2, 0xB1, 0x83, 0x00, 0xE2,
0xB1, 0x84, 0x00, 0xE2, 0xB1, 0x85, 0x00, 0xE2, 0xB1, 0x86, 0x00, 0xE2,
0xB1, 0x87, 0x00, 0xE2, 0xB1, 0x88, 0x00, 0xE2, 0xB1, 0x89, 0x00, 0xE2,
0xB1, 0x8A, 0x00, 0xE2, 0xB1, 0x8B, 0x00, 0xE2, 0xB1, 0x8C, 0x00, 0xE2,
0xB1, 0x8D, 0x00, 0xE2, 0xB1, 0x8E, 0x00, 0xE2, 0xB1, 0x8F, 0x00, 0xE2,
0xB1, 0x90, 0x00, 0xE2, 0xB1, 0x91, 0x00, 0xE2, 0xB1, 0x92, 0x00, 0xE2,
0xB1, 0x93, 0x00, 0xE2, 0xB1, 0x94, 0x00, 0xE2, 0xB1, 0x95, 0x00, 0xE2,
0xB1, 0x96, 0x00, 0xE2, 0xB1, 0x97, 0x00, 0xE2, 0xB1, 0x98, 0x00, 0xE2,
0xB1, 0x99, 0x00, 0xE2, 0xB1, 0x9A, 0x00, 0xE2, 0xB1, 0x9B, 0x00, 0xE2,
0xB1, 0x9C, 0x00, 0xE2, 0xB1, 0x9D, 0x00, 0xE2, 0xB1, 0x9E, 0x00, 0xE2,
0xB1, 0xA1, 0x00, 0xC9, 0xAB, 0x00, 0xE1, 0xB5, 0xBD, 0x00, 0xC9, 0xBD,
0x00, 0xE2, 0xB1, 0xA8, 0x00, 0xE2, 0xB1, 0xAA, 0x00, 0xE2, 0xB1, 0xAC,
0x00, 0xC9, 0x91, 0x00, 0xC9, 0xB1, 0x00, 0xC9, 0x90, 0x00, 0xC9, 0x92,
0x00, 0xE2, 0xB1, 0xB3, 0x00, 0xE2, 0xB1, 0xB6, 0x00, 0xC8, 0xBF, 0x00,
0xC9, 0x80, 0x00, 0xE2, 0xB2, 0x81, 0x00, 0xE2, 0xB2, 0x83, 0x00, 0xE2,
0xB2, 0x85, 0x00, 0xE2, 0xB2, 0x87, 0x00, 0xE2, 0xB2, 0x89, 0x00, 0xE2,
0xB2, 0x8B, 0x00, 0xE2, 0xB2, 0x8D, 0x00, 0xE2, 0xB2, 0x8F, 0x00, 0xE2,
0xB2, 0x91, 0x00, 0xE2, 0xB2, 0x93, 0x00, 0xE2, 0xB2, 0x95, 0x00, 0xE2,
0xB2, 0x97, 0x00, 0xE2, 0xB2, 0x99, 0x00, 0xE2, 0xB2, 0x9B, 0x00, 0xE2,
0xB2, 0x9D, 0x00, 0xE2, 0xB2, 0x9F, 0x00, 0xE2, 0xB2, 0xA1, 0x00, 0xE2,
0xB2, 0xA3, 0x00, 0xE2, 0xB2, 0xA5, 0x00, 0xE2, 0xB2, 0xA7, 0x00, 0xE2,
0xB2, 0xA9, 0x00, 0xE2, 0xB2, 0xAB, 0x00, 0xE2, 0xB2, 0xAD, 0x00, 0xE2,
0xB2, 0xAF, 0x00, 0xE2, 0xB2, 0xB1, 0x00, 0xE2, 0xB2, 0xB3, 0x00, 0xE2,
0xB2, 0xB5, 0x00, 0xE2, 0xB2, 0xB7, 0x00, 0xE2, 0xB2, 0xB9, 0x00, 0xE2,
0xB2, 0xBB, 0x00, 0xE2, 0xB2, 0xBD, 0x00, 0xE2, 0xB2, 0xBF, 0x00, 0xE2,
0xB3, 0x81, 0x00, 0xE2, 0xB3, 0x83, 0x00, 0xE2, 0xB3, 0x85, 0x00, 0xE2,
0xB3, 0x87, 0x00, 0xE2, 0xB3, 0x89, 0x00, 0xE2, 0xB3, 0x8B, 0x00, 0xE2,
0xB3, 0x8D, 0x00, 0xE2, 0xB3, 0x8F, 0x00, 0xE2, 0xB3, 0x91, 0x00, 0xE2,
0xB3, 0x93, 0x00, 0xE2, 0xB3, 0x95, 0x00, 0xE2, 0xB3, 0x97, 0x00, 0xE2,
0xB3, 0x99, 0x00, 0xE2, 0xB3, 0x9B, 0x00, 0xE2, 0xB3, 0x9D, 0x00, 0xE2,
0xB3, 0x9F, 0x00, 0xE2, 0xB3, 0xA1, 0x00, 0xE2, 0xB3, 0xA3, 0x00, 0xE2,
0xB3, 0xAC, 0x00, 0xE2, 0xB3, 0xAE, 0x00, 0xE2, 0xB3, 0xB3, 0x00, 0xEA,
0x99, 0x81, 0x00, 0xEA, 0x99, 0x83, 0x00, 0xEA, 0x99, 0x85, 0x00, 0xEA,
0x99, 0x87, 0x00, 0xEA, 0x99, 0x89, 0x00, 0xEA, 0x99, 0x8B, 0x00, 0xEA,
0x99, 0x8D, 0x00, 0xEA, 0x99, 0x8F, 0x00, 0xEA, 0x99, 0x91, 0x00, 0xEA,
0x99, 0x93, 0x00, 0xEA, 0x99, 0x95, 0x00, 0xEA, 0x99, 0x97, 0x00, 0xEA,
0x99, 0x99, 0x00, 0xEA, 0x99, 0x9B, 0x00, 0xEA, 0x99, 0x9D, 0x00, 0xEA,
0x99, 0x9F, 0x00, 0xEA, 0x99, 0xA1, 0x00, 0xEA, 0x99, 0xA3, 0x00, 0xEA,
0x99, 0xA5, 0x00, 0xEA, 0x99, 0xA7, 0x00, 0xEA, 0x99, 0xA9, 0x00, 0xEA,
0x99, 0xAB, 0x00, 0xEA, 0x99, 0xAD, 0x00, 0xEA, 0x9A, 0x81, 0x00, 0xEA,
0x9A, 0x83, 0x00, 0xEA, 0x9A, 0x85, 0x00, 0xEA, 0x9A, 0x87, 0x00, 0xEA,
0x9A, 0x89, 0x00, 0xEA, 0x9A, 0x8B, 0x00, 0xEA, 0x9A, 0x8D, 0x00, 0xEA,
0x9A, 0x8F, 0x00, 0xEA, 0x9A, 0x91, 0x00, 0xEA, 0x9A, 0x93, 0x00, 0xEA,
0x9A, 0x95, 0x00, 0xEA, 0x9A, 0x97, 0x00, 0xEA, 0x9A, 0x99, 0x00, 0xEA,
0x9A, 0x9B, 0x00, 0xEA, 0x9C, 0xA3, 0x00, 0xEA, 0x9C, 0xA5, 0x00, 0xEA,
0x9C, 0xA7, 0x00, 0xEA, 0x9C, 0xA9, 0x00, 0xEA, 0x9C, 0xAB, 0x00, 0xEA,
0x9C, 0xAD, 0x00, 0xEA, 0x9C, 0xAF, 0x00, 0xEA, 0x9C, 0xB3, 0x00, 0xEA,
0x9C, 0xB5, 0x00, 0xEA, 0x9C, 0xB7, 0x00, 0xEA, 0x9C, 0xB9, 0x00, 0xEA,
0x9C, 0xBB, 0x00, 0xEA, 0x9C, 0xBD, 0x00, 0xEA, 0x9C, 0xBF, 0x00, 0xEA,
0x9D, 0x81, 0x00, 0xEA, 0x9D, 0x83, 0x00, 0xEA, 0x9D, 0x85, 0x00, 0xEA,
0x9D, 0x87, 0x00, 0xEA, 0x9D, 0x89, 0x00, 0xEA, 0x9D, 0x8B, 0x00, 0xEA,
0x9D, 0x8D, 0x00, 0xEA, 0x9D, 0x8F, 0x00, 0xEA, 0x9D, 0x91, 0x00, 0xEA,
0x9D, 0x93, 0x00, 0xEA, 0x9D, 0x95, 0x00, 0xEA, 0x9D, 0x97, 0x00, 0xEA,
0x9D, 0x99, 0x00, 0xEA, 0x9D, 0x9B, 0x00, 0xEA, 0x9D, 0x9D, 0x00, 0xEA,
0x9D, 0x9F, 0x00, 0xEA, 0x9D, 0xA1, 0x00, 0xEA, 0x9D, 0xA3, 0x00, 0xEA,
0x9D, 0xA5, 0x00, 0xEA, 0x9D, 0xA7, 0x00, 0xEA, 0x9D, 0xA9, 0x00, 0xEA,
0x9D, 0xAB, 0x00, 0xEA, 0x9D, 0xAD, 0x00, 0xEA, 0x9D, 0xAF, 0x00, 0xEA,
0x9D, 0xBA, 0x00, 0xEA, 0x9D, 0xBC, 0x00, 0xE1, 0xB5, 0xB9, 0x00, 0xEA,
0x9D, 0xBF, 0x00, 0xEA, 0x9E, 0x81, 0x00, 0xEA, 0x9E, 0x83, 0x00, 0xEA,
0x9E, 0x85, 0x00, 0xEA, 0x9E, 0x87, 0x00, 0xEA, 0x9E, 0x8C, 0x00, 0xC9,
0xA5, 0x00, 0xEA, 0x9E, 0x91, 0x00, 0xEA, 0x9E, 0x93, 0x00, 0xEA, 0x9E,
0x97, 0x00, 0xEA, 0x9E, 0x99, 0x00, 0xEA, 0x9E, 0x9B, 0x00, 0xEA, 0x9E,
0x9D, 0x00, 0xEA, 0x9E, 0x9F, 0x00, 0xEA, 0x9E, 0xA1, 0x00, 0xEA, 0x9E,
0xA3, 0x00, 0xEA, 0x9E, 0xA5, 0x00, 0xEA, 0x9E, 0xA7, 0x00, 0xEA, 0x9E,
0xA9, 0x00, 0xC9, 0xA6, 0x00, 0xC9, 0x9C, 0x00, 0xC9, 0xA1, 0x00, 0xC9,
0xAC, 0x00, 0xC9, 0xAA, 0x00, 0xCA, 0x9E, 0x00, 0xCA, 0x87, 0x00, 0xCA,
0x9D, 0x00, 0xEA, 0xAD, 0x93, 0x00, 0xEA, 0x9E, 0xB5, 0x00, 0xEA, 0x9E,
0xB7, 0x00, 0xEF, 0xBD, 0x81, 0x00, 0xEF, 0xBD, 0x82, 0x00, 0xEF, 0xBD,
0x83, 0x00, 0xEF, 0xBD, 0x84, 0x00, 0xEF, 0xBD, 0x85, 0x00, 0xEF, 0xBD,
0x86, 0x00, 0xEF, 0xBD, 0x87, 0x00, 0xEF, 0xBD, 0x88, 0x00, 0xEF, 0xBD,
0x89, 0x00, 0xEF, 0xBD, 0x8A, 0x00, 0xEF, 0xBD, 0x8B, 0x00, 0xEF, 0xBD,
0x8C, 0x00, 0xEF, 0xBD, 0x8D, 0x00, 0xEF, 0xBD, 0x8E, 0x00, 0xEF, 0xBD,
0x8F, 0x00, 0xEF, 0xBD, 0x90, 0x00, 0xEF, 0xBD, 0x91, 0x00, 0xEF, 0xBD,
0x92, 0x00, 0xEF, 0xBD, 0x93, 0x00, 0xEF, 0xBD, 0x94, 0x00, 0xEF, 0xBD,
0x95, 0x00, 0xEF, 0xBD, 0x96, 0x00, 0xEF, 0xBD, 0x97, 0x00, 0xEF, 0xBD,
0x98, 0x00, 0xEF, 0xBD, 0x99, 0x00, 0xEF, 0xBD, 0x9A, 0x00, 0x69, 0xCC,
0x87, 0x00, 0xE1, 0xBE, 0x80, 0x00, 0xE1, 0xBE, 0x81, 0x00, 0xE1, 0xBE,
0x82, 0x00, 0xE1, 0xBE, 0x83, 0x00, 0xE1, 0xBE, 0x84, 0x00, 0xE1, 0xBE,
0x85, 0x00, 0xE1, 0xBE, 0x86, 0x00, 0xE1, 0xBE, 0x87, 0x00, 0xE1, 0xBE,
0x90, 0x00, 0xE1, 0xBE, 0x91, 0x00, 0xE1, 0xBE, 0x92, 0x00, 0xE1, 0xBE,
0x93, 0x00, 0xE1, 0xBE, 0x94, 0x00, 0xE1, 0xBE, 0x95, 0x00, 0xE1, 0xBE,
0x96, 0x00, 0xE1, 0xBE, 0x97, 0x00, 0xE1, 0xBE, 0xA0, 0x00, 0xE1, 0xBE,
0xA1, 0x00, 0xE1, 0xBE, 0xA2, 0x00, 0xE1, 0xBE, 0xA3, 0x00, 0xE1, 0xBE,
0xA4, 0x00, 0xE1, 0xBE, 0xA5, 0x00, 0xE1, 0xBE, 0xA6, 0x00, 0xE1, 0xBE,
0xA7, 0x00, 0xE1, 0xBE, 0xB3, 0x00, 0xE1, 0xBF, 0x83, 0x00, 0xE1, 0xBF,
0xB3, 0x00,
};

View File

@@ -0,0 +1,460 @@
/* Automatically generated file (mph.py), 1491062342
*
* Tag : NU_TOUNACCENT
* Prime : 01000193,
* G size : 845,
* Combined length : 2082,
* Encoding : UTF-8
*/
#include <stdint.h>
const int16_t NU_TOUNACCENT_G[] = {
-845, -844, -843, -842, -841, -840, -839, -838, -837, -836, -834, -833,
-832, -831, -830, -829, -828, 0, -827, 0, -826, 0, -825, 0,
-824, -823, -822, -821, 0, 0, -820, -819, -818, -817, -816, -815,
0, 0, -814, -813, -812, -811, -810, -809, -808, -807, -806, -805,
-804, -803, -802, -801, 0, 0, -800, -799, -798, -797, -796, -795,
-794, 1, 1, 1, -793, -792, 1, 1, 1, 1, 1, 1,
1, -791, -790, 11, 2, 1, 1, 5, -789, -788, -787, 2,
-786, -785, -784, -783, 1, 30, 2, 32, 32, 2, 24, 18,
-782, -781, 48, 48, 52, 49, 20, 49, 1, 4, -780, 5,
6, 10, 17, 30, 16, 66, -779, 68, 68, 65, 20, 69,
65, 24, 65, 79, 65, -778, -777, -776, -775, -774, -773, -772,
-771, -770, -769, -768, -767, -766, -765, -764, -763, -762, -761, -760,
-759, -758, -757, -756, -755, -754, -753, -752, -751, -750, -749, -748,
-747, -746, -745, -744, -743, -742, -741, -740, -739, -738, -737, -736,
-735, -734, -733, -732, -731, -730, -729, -728, 0, 0, -727, -726,
0, 0, 0, 0, -725, -724, -723, -722, -721, -720, -719, -718,
-717, -716, -715, -714, -713, -712, -711, -710, -709, -708, -707, -706,
-705, -704, -703, -702, -701, -700, -699, -698, -697, -696, -695, -694,
-693, -692, -691, -690, -689, -688, -687, -686, -685, -684, -683, -682,
-681, -680, -679, -678, -677, -676, -675, -674, -673, -672, -671, -670,
1, 1, 4, 1, 1, 1, -669, -668, 1, 1, -667, -666,
1, 1, 1, 1, 1, 1, 1, -665, -664, -663, -662, -661,
-660, -659, -658, -657, -656, 2, 21, -655, 9, 1, 1, 1,
-654, 16, 1, 1, 1, 5, 2, 1, 1, -653, -652, -651,
1, 1, -650, -649, 2, 1, 4, 8, 1, 1, -648, -647,
1, 6, 4, 18, -646, -645, -644, -643, -642, 10, 18, 16,
9, 1, 1, 5, 9, -641, -640, -639, 88, -638, 88, 88,
88, -637, -636, -635, 0, 0, 0, 0, 0, -634, -633, -632,
-631, -630, 0, 0, 0, -629, -628, 0, 0, 0, 64, -627,
-626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -625, -624, -623, -622, 0, -621, 0, -620, 6,
11, 0, 0, 0, 0, -619, -618, 0, 0, -617, -616, -615,
0, 0, 0, 0, 0, -614, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -613, 0, -612, 6, 0, 0,
0, 0, -611, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-610, -609, -608, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-607, 0, -606, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -605, 0, -604, 0, 0, -603, 0,
0, -602, 0, 0, 0, 0, 0, 0, 0, -601, -600, 0,
0, -599, -598, 0, 0, -597, -596, 0, 0, 0, 0, 0,
-595, 0, -594, 0, 0, 0, 0, 0, 0, 0, 0, -593,
-592, -591, 0, 0, 0, 0, 0, 0, -590, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -589, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-588, 2, -379, -336, -297, -295, -293, -290, -289, -277, 6, -152,
-148, -145, 1, -136, -132, 1, 1, 5, 5, 16, 16, 13,
16, 1, 4, 2, 7, 8, 8, 20, 22, 1, 1, 1,
1, -97, -73, -72, -58, -57, 32, 32, 37, -54, -53, -52,
-50, 8, -48, -47, 2, 2, 1, 9, 56, 1, 4, 2,
14, 16, 16, -46, 1, 39, 71, 80, -41, 0, -39, -34,
82, 84, 80, 80, 88, 96, 12, 12, 64, 64, 64, 68,
73, 64, 66, 81, 85, 1, 2, 2, 5, 9, 1, -32,
-31, 17, 23, 17, 34, 30, 33, 35, -30, 27, 20, 24,
-29, 49, -28, 0, -27, 9, 15, 20, 181, 254, 253, 249,
252, -26, -25, -24, -23, 2, 6, -22, 15, 224, 229, 259,
261, -21, -20, -19, 258, 260, 262, 260, 265, 267, -18, -17,
200, 256, 256, 280, 256, -16, 280, 280, 284, 5, 5, 1,
5, -15, -14, 12, 12, -13, 18, 4, 42, -12, 0, -11,
-10, 33, 36, 32, 42, 41, 260, 44, 261, 38, 266, 73,
268, 273, 257, 261, 286, 274, -9, 288, 261, 298, 256, 16,
339, 336, -6, -4, 291, 338, 365, 365, 365, 330, 293, 295,
308, 335, -3, -2, -1, };
const size_t NU_TOUNACCENT_G_SIZE = sizeof(NU_TOUNACCENT_G) / sizeof(*NU_TOUNACCENT_G);
/* codepoints */
const uint32_t NU_TOUNACCENT_VALUES_C[] = {
0x001F24, 0x001F25, 0x001F26, 0x001F39, 0x000169, 0x001F3A, 0x00016B, 0x00016A,
0x001F32, 0x001F1C, 0x001F1D, 0x000144, 0x001F1B, 0x000143, 0x00015C, 0x000154,
0x001FE5, 0x001FE6, 0x00012A, 0x00012B, 0x000124, 0x000122, 0x00013D, 0x00013E,
0x001FF2, 0x001FF3, 0x001FC4, 0x001FC6, 0x00010D, 0x000109, 0x000101, 0x000102,
0x000125, 0x0001EA, 0x000168, 0x00016C, 0x00012D, 0x000126, 0x0001EB, 0x00012C,
0x001FB8, 0x00012F, 0x00012E, 0x000129, 0x000128, 0x00022D, 0x001F89, 0x001F8A,
0x000160, 0x001F84, 0x000161, 0x001F85, 0x001F86, 0x001F87, 0x000164, 0x000385,
0x001F83, 0x001F9C, 0x000386, 0x000389, 0x000388, 0x00038F, 0x00038A, 0x00038E,
0x00038C, 0x0003CE, 0x00015A, 0x00015B, 0x000390, 0x000159, 0x000165, 0x001F9D,
0x001F9E, 0x00016E, 0x00016F, 0x001F0A, 0x001F04, 0x001F06, 0x000156, 0x001F08,
0x000150, 0x001F21, 0x001F22, 0x001F0D, 0x0003AB, 0x000155, 0x00017C, 0x000157,
0x0003AC, 0x00016D, 0x001F0E, 0x0003AD, 0x001F31, 0x001F0C, 0x00017E, 0x001F20,
0x001F9F, 0x0003AF, 0x0003AE, 0x000163, 0x0003B0, 0x000174, 0x001F38, 0x000179,
0x001F37, 0x001F0F, 0x000178, 0x0003AA, 0x001F33, 0x001E23, 0x001E22, 0x001E25,
0x001E24, 0x001E27, 0x001E26, 0x001E29, 0x000171, 0x001E2B, 0x001E2A, 0x000173,
0x00017D, 0x000175, 0x00017B, 0x001E68, 0x001E69, 0x000177, 0x001E6B, 0x00017A,
0x001F30, 0x001F36, 0x001E6F, 0x0001D1, 0x001E38, 0x001E3B, 0x001E3A, 0x0001D2,
0x001E39, 0x001E3F, 0x001E3E, 0x001E55, 0x001E40, 0x001E43, 0x001E41, 0x001E4C,
0x00021F, 0x001E47, 0x001E42, 0x000218, 0x001E4D, 0x001E4B, 0x001E4A, 0x000219,
0x001E4F, 0x001E5E, 0x001E4E, 0x001F3D, 0x001F3C, 0x001E5B, 0x001F3E, 0x001E56,
0x0000E4, 0x0000E5, 0x0000ED, 0x001E59, 0x001E58, 0x0000E7, 0x001E5A, 0x001E5D,
0x001E5C, 0x0000E8, 0x0000EB, 0x001E61, 0x0000E9, 0x0000EC, 0x001E62, 0x0000EE,
0x001E60, 0x001E74, 0x001F34, 0x001F27, 0x001F23, 0x001E63, 0x001F3B, 0x001E7C,
0x001F3F, 0x001E67, 0x001E7D, 0x001E76, 0x001E75, 0x001E73, 0x001E72, 0x001E7E,
0x0000F4, 0x001E77, 0x0000C3, 0x0000C2, 0x0000C1, 0x0000F5, 0x0000F6, 0x0000C5,
0x0000F9, 0x0000C8, 0x0000FB, 0x000419, 0x0000CE, 0x001E83, 0x001E81, 0x001E86,
0x0000D1, 0x0000CF, 0x0000D3, 0x0000D2, 0x0000D5, 0x0000D4, 0x0000DD, 0x0000D6,
0x0000D9, 0x0000D8, 0x0000DB, 0x0000DA, 0x001E94, 0x001E93, 0x0000DC, 0x001E95,
0x001E97, 0x001E84, 0x001E96, 0x0000F1, 0x001E8D, 0x001E98, 0x001E90, 0x001E82,
0x001E85, 0x0000E3, 0x0000F2, 0x001E80, 0x0000CC, 0x0000CD, 0x0000FA, 0x001EB5,
0x0000E0, 0x0000F3, 0x001E87, 0x0000E2, 0x001EBD, 0x001EB4, 0x001EBB, 0x0000EF,
0x0000FD, 0x0000F8, 0x0000FC, 0x0000FF, 0x001EB7, 0x001EB3, 0x0000EA, 0x0000E1,
0x001EB0, 0x001EB2, 0x000103, 0x001E88, 0x001E89, 0x001EA2, 0x001E8F, 0x001EB6,
0x001E8C, 0x000450, 0x001E8E, 0x000400, 0x000401, 0x002209, 0x000403, 0x000457,
0x000107, 0x000100, 0x000407, 0x000108, 0x00021B, 0x00011C, 0x00010E, 0x000106,
0x00011D, 0x000118, 0x000104, 0x00010F, 0x00011E, 0x00011F, 0x000112, 0x000113,
0x000214, 0x000215, 0x000136, 0x000476, 0x000216, 0x000123, 0x000217, 0x000105,
0x000210, 0x00010A, 0x00010B, 0x001EA1, 0x000439, 0x001EA3, 0x000121, 0x001FE2,
0x001FE1, 0x001EA7, 0x001FE3, 0x001FE8, 0x001FE0, 0x001FEA, 0x001FEB, 0x001FE7,
0x000137, 0x000130, 0x001EA0, 0x001FEC, 0x001FE9, 0x00010C, 0x00013C, 0x000176,
0x001FED, 0x001FEE, 0x000146, 0x001EBA, 0x001EBC, 0x001FF9, 0x001EBF, 0x001EB8,
0x001FF8, 0x001FFC, 0x001EBE, 0x00011A, 0x000119, 0x000141, 0x000142, 0x000211,
0x000110, 0x000111, 0x000116, 0x001F1A, 0x000114, 0x000147, 0x000170, 0x000117,
0x00015D, 0x00011B, 0x00015F, 0x001F11, 0x000115, 0x000158, 0x000172, 0x00015E,
0x001F10, 0x001F13, 0x001F12, 0x001F14, 0x001F15, 0x00014C, 0x001FFB, 0x00014D,
0x001F19, 0x000148, 0x001FFA, 0x00014F, 0x001F01, 0x001F03, 0x00014E, 0x000145,
0x001F35, 0x001F02, 0x000162, 0x0004C1, 0x001F05, 0x001F00, 0x0004C2, 0x001FE4,
0x001F0B, 0x001F07, 0x000212, 0x001FCC, 0x001FCF, 0x001F18, 0x001FCE, 0x001FCD,
0x000135, 0x002281, 0x002285, 0x002284, 0x0004D0, 0x0004D3, 0x0004D2, 0x002288,
0x0004D1, 0x0004D7, 0x0004D6, 0x001F09, 0x0001EC, 0x0004DB, 0x0004DA, 0x0004DD,
0x0004DC, 0x0004DF, 0x0004DE, 0x002280, 0x0004E5, 0x0004E3, 0x0004E2, 0x002289,
0x0004E7, 0x000151, 0x0004E6, 0x0004EE, 0x0004ED, 0x0004EB, 0x0004EA, 0x0004E4,
0x0001E7, 0x0004EF, 0x0001A0, 0x0004F1, 0x0004F0, 0x0022AE, 0x0004F2, 0x0004F5,
0x0004F4, 0x0001AF, 0x0022AD, 0x0022AC, 0x0004F8, 0x0004F3, 0x0004F9, 0x001F65,
0x001F64, 0x0004EC, 0x001F66, 0x001F69, 0x001F68, 0x0001ED, 0x0001E6, 0x001F6D,
0x001F6C, 0x001F6F, 0x001F6E, 0x0001E9, 0x0001E8, 0x0022AF, 0x0001EE, 0x0001EF,
0x000120, 0x0001F9, 0x000127, 0x00013A, 0x0001D4, 0x000139, 0x00013B, 0x0001E0,
0x001FC8, 0x0001D9, 0x000134, 0x0001DB, 0x001F95, 0x001F94, 0x001F8B, 0x001F8D,
0x0001D5, 0x0001D0, 0x0001D3, 0x0001D6, 0x0001DC, 0x001F88, 0x0001D7, 0x0001DA,
0x001F8F, 0x0001D8, 0x001F8E, 0x0001DF, 0x0001DE, 0x001F93, 0x001F91, 0x0022EA,
0x0001E1, 0x001F92, 0x001F90, 0x001F99, 0x001F98, 0x001F9B, 0x001F9A, 0x001FBB,
0x0001CD, 0x001F96, 0x001F97, 0x0022EB, 0x001F81, 0x001F82, 0x0001CE, 0x0001CF,
0x001F80, 0x001FB6, 0x001FB7, 0x0001FA, 0x001FA5, 0x001FA6, 0x0001F4, 0x0001F5,
0x0001F0, 0x0001F8, 0x0001FB, 0x0001FF, 0x0001FE, 0x001FB3, 0x001FB1, 0x001F8C,
0x001FB4, 0x001FB2, 0x000203, 0x000202, 0x000201, 0x000200, 0x00020E, 0x00020F,
0x000205, 0x001FB0, 0x00020B, 0x000209, 0x001FDF, 0x001FCB, 0x00020A, 0x000208,
0x001FCA, 0x000213, 0x001FA7, 0x001FD9, 0x000204, 0x001FDB, 0x000206, 0x000207,
0x001FDA, 0x00020D, 0x00020C, 0x001FD2, 0x00021A, 0x001FD3, 0x001FD1, 0x00021E,
0x001FD0, 0x001FC2, 0x001FD6, 0x001FC3, 0x001FC1, 0x000227, 0x000228, 0x000226,
0x001FC9, 0x001FD7, 0x00022B, 0x000229, 0x001FA8, 0x00022C, 0x00022A, 0x001FA4,
0x000231, 0x000230, 0x000233, 0x000232, 0x001FB9, 0x001FAA, 0x001FAB, 0x001FAE,
0x001FA9, 0x001FBC, 0x001FAF, 0x001FF6, 0x001FA1, 0x001FA2, 0x00022E, 0x00022F,
0x001FF7, 0x001FC7, 0x001FA3, 0x001FA0, 0x001FAC, 0x001FD8, 0x001FF4, 0x001FAD,
0x001FBA, 0x001FDD, 0x001FDE, 0x0001A1, 0x0001B0, 0x00212B, 0x00226D, 0x00226E,
0x00226F, 0x002260, 0x002262, 0x002278, 0x002279, 0x002274, 0x002275, 0x002270,
0x002271, 0x002249, 0x002244, 0x002247, 0x002241, 0x002224, 0x002226, 0x0021CD,
0x0021CE, 0x0021CF, 0x00220C, 0x000477, 0x002204, 0x0021AE, 0x00045C, 0x00045D,
0x00045E, 0x0022EC, 0x0022ED, 0x000451, 0x000453, 0x0022E0, 0x0022E1, 0x0022E2,
0x0022E3, 0x0003CC, 0x0003CD, 0x0003CA, 0x0003CB, 0x00219A, 0x00219B, 0x00040C,
0x00040D, 0x00040E, 0x001E6C, 0x001E6D, 0x001E6E, 0x001E6A, 0x001E64, 0x001E65,
0x001E66, 0x001E7F, 0x001E78, 0x001E79, 0x001E7A, 0x001E7B, 0x001E70, 0x001E71,
0x001E48, 0x001E49, 0x001E44, 0x001E45, 0x001E46, 0x001E5F, 0x001E54, 0x001E57,
0x001E50, 0x001E51, 0x001E52, 0x001E53, 0x001E2C, 0x001E2D, 0x001E2E, 0x001E2F,
0x001E28, 0x001E20, 0x001E21, 0x001E3C, 0x001E3D, 0x001E34, 0x001E35, 0x001E36,
0x001E37, 0x001E30, 0x001E31, 0x001E32, 0x001E33, 0x001E0C, 0x001E0D, 0x001E0E,
0x001E0F, 0x001E08, 0x001E09, 0x001E0A, 0x001E0B, 0x001E04, 0x001E05, 0x001E06,
0x001E07, 0x001E00, 0x001E01, 0x001E02, 0x001E03, 0x001E1C, 0x001E1D, 0x001E1E,
0x001E1F, 0x001E18, 0x001E19, 0x001E1A, 0x001E1B, 0x001E14, 0x001E15, 0x001E16,
0x001E17, 0x001E10, 0x001E11, 0x001E12, 0x001E13, 0x001EEC, 0x001EED, 0x001EEE,
0x001EEF, 0x001EE8, 0x001EE9, 0x001EEA, 0x001EEB, 0x001EE4, 0x001EE5, 0x001EE6,
0x001EE7, 0x001EE0, 0x001EE1, 0x001EE2, 0x001EE3, 0x001EF8, 0x001EF9, 0x001EF4,
0x001EF5, 0x001EF6, 0x001EF7, 0x001EF0, 0x001EF1, 0x001EF2, 0x001EF3, 0x001ECC,
0x001ECD, 0x001ECE, 0x001ECF, 0x001EC8, 0x001EC9, 0x001ECA, 0x001ECB, 0x001EC4,
0x001EC5, 0x001EC6, 0x001EC7, 0x001EC0, 0x001EC1, 0x001EC2, 0x001EC3, 0x001EDC,
0x001EDD, 0x001EDE, 0x001EDF, 0x001ED8, 0x001ED9, 0x001EDA, 0x001EDB, 0x001ED4,
0x001ED5, 0x001ED6, 0x001ED7, 0x001ED0, 0x001ED1, 0x001ED2, 0x001ED3, 0x001EAC,
0x001EAD, 0x001EAE, 0x001EAF, 0x001EA8, 0x001EA9, 0x001EAA, 0x001EAB, 0x001EA4,
0x001EA5, 0x001EA6, 0x001EB9, 0x001EB1, 0x001E8A, 0x001E8B, 0x0000C9, 0x0000CA,
0x0000CB, 0x0000C4, 0x001E99, 0x0000C7, 0x0000C0, 0x001E91, 0x001E92, 0x001F6A,
0x001F6B, 0x001F67, 0x001F60, 0x001F61, 0x001F62, 0x001F63, 0x001F7C, 0x001F7D,
0x001F78, 0x001F79, 0x001F7A, 0x001F7B, 0x001F74, 0x001F75, 0x001F76, 0x001F77,
0x001F70, 0x001F71, 0x001F72, 0x001F73, 0x001F4C, 0x001F4D, 0x001F48, 0x001F49,
0x001F4A, 0x001F4B, 0x001F44, 0x001F45, 0x001F40, 0x001F41, 0x001F42, 0x001F43,
0x001F5D, 0x001F5F, 0x001F59, 0x001F5B, 0x001F54, 0x001F55, 0x001F56, 0x001F57,
0x001F50, 0x001F51, 0x002ADC, 0x001F52, 0x001F53, 0x001F2C, 0x001F2D, 0x001F2E,
0x001F2F, 0x001F28, 0x001F29, 0x001F2A, 0x001F2B, };
/* indexes */
const uint16_t NU_TOUNACCENT_VALUES_I[] = {
0x0526, 0x0529, 0x052C, 0x0565, 0x0127, 0x0568, 0x012B, 0x0129, 0x0550, 0x0514,
0x0517, 0x00EB, 0x0511, 0x00E9, 0x0111, 0x0101, 0x0736, 0x0739, 0x00C3, 0x00C5,
0x00B7, 0x00B3, 0x00E1, 0x00E3, 0x0754, 0x0757, 0x06D9, 0x06DC, 0x0089, 0x0081,
0x0071, 0x0073, 0x00B9, 0x018B, 0x0125, 0x012D, 0x00C9, 0x00BB, 0x018D, 0x00C7,
0x06C1, 0x00CD, 0x00CB, 0x00C1, 0x00BF, 0x01F5, 0x0637, 0x063A, 0x0119, 0x0628,
0x011B, 0x062B, 0x062E, 0x0631, 0x0121, 0x0203, 0x0625, 0x0670, 0x0206, 0x020C,
0x0209, 0x0218, 0x020F, 0x0215, 0x0212, 0x023F, 0x010D, 0x010F, 0x021B, 0x010B,
0x0123, 0x0673, 0x0676, 0x0131, 0x0133, 0x04E4, 0x04D2, 0x04D8, 0x0105, 0x04DE,
0x00FD, 0x051D, 0x0520, 0x04ED, 0x0221, 0x0103, 0x014D, 0x0107, 0x0224, 0x012F,
0x04F0, 0x0227, 0x054D, 0x04EA, 0x0151, 0x051A, 0x0679, 0x022D, 0x022A, 0x011F,
0x0230, 0x013D, 0x0562, 0x0147, 0x055F, 0x04F3, 0x0145, 0x021E, 0x0553, 0x0324,
0x0322, 0x0328, 0x0326, 0x032C, 0x032A, 0x0330, 0x0137, 0x0334, 0x0332, 0x013B,
0x014F, 0x013F, 0x014B, 0x03AE, 0x03B0, 0x0143, 0x03B4, 0x0149, 0x054A, 0x055C,
0x03BC, 0x0163, 0x034E, 0x0354, 0x0352, 0x0165, 0x0350, 0x035C, 0x035A, 0x0388,
0x035E, 0x0364, 0x0360, 0x0376, 0x01E5, 0x036C, 0x0362, 0x01DB, 0x0378, 0x0374,
0x0372, 0x01DD, 0x037C, 0x039A, 0x037A, 0x0571, 0x056E, 0x0394, 0x0574, 0x038A,
0x003F, 0x0041, 0x004F, 0x0390, 0x038E, 0x0043, 0x0392, 0x0398, 0x0396, 0x0045,
0x004B, 0x03A0, 0x0047, 0x004D, 0x03A2, 0x0051, 0x039E, 0x03C6, 0x0556, 0x052F,
0x0523, 0x03A4, 0x056B, 0x03D6, 0x0577, 0x03AC, 0x03D8, 0x03CA, 0x03C8, 0x03C4,
0x03C2, 0x03DA, 0x005B, 0x03CC, 0x0007, 0x0005, 0x0003, 0x005D, 0x005F, 0x000B,
0x0063, 0x000F, 0x0067, 0x0257, 0x001B, 0x03E4, 0x03E0, 0x03EA, 0x001F, 0x001D,
0x0023, 0x0021, 0x0027, 0x0025, 0x0035, 0x0029, 0x002D, 0x002B, 0x0031, 0x002F,
0x0406, 0x0404, 0x0033, 0x0408, 0x040C, 0x03E6, 0x040A, 0x0055, 0x03F8, 0x040E,
0x03FE, 0x03E2, 0x03E8, 0x003D, 0x0057, 0x03DE, 0x0017, 0x0019, 0x0065, 0x043C,
0x0037, 0x0059, 0x03EC, 0x003B, 0x044C, 0x043A, 0x0448, 0x0053, 0x006B, 0x0061,
0x0069, 0x006D, 0x0440, 0x0438, 0x0049, 0x0039, 0x0432, 0x0436, 0x0075, 0x03EE,
0x03F0, 0x0416, 0x03FC, 0x043E, 0x03F6, 0x025D, 0x03FA, 0x0242, 0x0245, 0x0790,
0x0248, 0x0266, 0x007D, 0x006F, 0x024B, 0x007F, 0x01E1, 0x00A7, 0x008B, 0x007B,
0x00A9, 0x009F, 0x0077, 0x008D, 0x00AB, 0x00AD, 0x0093, 0x0095, 0x01D3, 0x01D5,
0x00D5, 0x0272, 0x01D7, 0x00B5, 0x01D9, 0x0079, 0x01CB, 0x0083, 0x0085, 0x0414,
0x025A, 0x0418, 0x00B1, 0x072D, 0x072A, 0x0420, 0x0730, 0x073F, 0x0727, 0x0745,
0x0748, 0x073C, 0x00D7, 0x00CF, 0x0412, 0x074B, 0x0742, 0x0087, 0x00DF, 0x0141,
0x074E, 0x0751, 0x00EF, 0x0446, 0x044A, 0x0766, 0x0450, 0x0442, 0x0763, 0x076F,
0x044E, 0x00A3, 0x00A1, 0x00E5, 0x00E7, 0x01CD, 0x008F, 0x0091, 0x009B, 0x050E,
0x0097, 0x00F1, 0x0135, 0x009D, 0x0113, 0x00A5, 0x0117, 0x04F9, 0x0099, 0x0109,
0x0139, 0x0115, 0x04F6, 0x04FF, 0x04FC, 0x0502, 0x0505, 0x00F5, 0x076C, 0x00F7,
0x050B, 0x00F3, 0x0769, 0x00FB, 0x04C9, 0x04CF, 0x00F9, 0x00ED, 0x0559, 0x04CC,
0x011D, 0x0278, 0x04D5, 0x04C6, 0x027B, 0x0733, 0x04E7, 0x04DB, 0x01CF, 0x06EE,
0x06F9, 0x0508, 0x06F5, 0x06F1, 0x00D3, 0x07DA, 0x07E2, 0x07DE, 0x027E, 0x0287,
0x0284, 0x07E6, 0x0281, 0x028D, 0x028A, 0x04E1, 0x018F, 0x0293, 0x0290, 0x0299,
0x0296, 0x029F, 0x029C, 0x07D6, 0x02AB, 0x02A5, 0x02A2, 0x07EA, 0x02B1, 0x00FF,
0x02AE, 0x02C0, 0x02BD, 0x02B7, 0x02B4, 0x02A8, 0x0185, 0x02C3, 0x0153, 0x02C9,
0x02C6, 0x07F6, 0x02CC, 0x02D5, 0x02D2, 0x0157, 0x07F2, 0x07EE, 0x02D8, 0x02CF,
0x02DB, 0x05D1, 0x05CE, 0x02BA, 0x05D4, 0x05DD, 0x05DA, 0x0191, 0x0183, 0x05E9,
0x05E6, 0x05EF, 0x05EC, 0x0189, 0x0187, 0x07FA, 0x0193, 0x0196, 0x00AF, 0x01A1,
0x00BD, 0x00DB, 0x0169, 0x00D9, 0x00DD, 0x017F, 0x06E2, 0x0173, 0x00D1, 0x0177,
0x065B, 0x0658, 0x063D, 0x0643, 0x016B, 0x0161, 0x0167, 0x016D, 0x0179, 0x0634,
0x016F, 0x0175, 0x0649, 0x0171, 0x0646, 0x017D, 0x017B, 0x0655, 0x064F, 0x080E,
0x0181, 0x0652, 0x064C, 0x0667, 0x0664, 0x066D, 0x066A, 0x06CA, 0x015B, 0x065E,
0x0661, 0x0812, 0x061F, 0x0622, 0x015D, 0x015F, 0x061C, 0x06BB, 0x06BE, 0x01A3,
0x068B, 0x068E, 0x019B, 0x019D, 0x0199, 0x019F, 0x01A5, 0x01A9, 0x01A7, 0x06B5,
0x06AF, 0x0640, 0x06B8, 0x06B2, 0x01B1, 0x01AF, 0x01AD, 0x01AB, 0x01C7, 0x01C9,
0x01B5, 0x06AC, 0x01C1, 0x01BD, 0x0723, 0x06EB, 0x01BF, 0x01BB, 0x06E8, 0x01D1,
0x0691, 0x0712, 0x01B3, 0x0718, 0x01B7, 0x01B9, 0x0715, 0x01C5, 0x01C3, 0x0703,
0x01DF, 0x0706, 0x0700, 0x01E3, 0x06FD, 0x06D3, 0x0709, 0x06D6, 0x06D0, 0x01E9,
0x01EB, 0x01E7, 0x06E5, 0x070C, 0x01F1, 0x01ED, 0x0694, 0x01F3, 0x01EF, 0x0688,
0x01FD, 0x01FB, 0x0201, 0x01FF, 0x06C4, 0x069A, 0x069D, 0x06A6, 0x0697, 0x06CD,
0x06A9, 0x075D, 0x067F, 0x0682, 0x01F7, 0x01F9, 0x0760, 0x06DF, 0x0685, 0x067C,
0x06A0, 0x070F, 0x075A, 0x06A3, 0x06C7, 0x071B, 0x071F, 0x0155, 0x0159, 0x0772,
0x07B6, 0x07BA, 0x07BC, 0x07B0, 0x07B2, 0x07CE, 0x07D2, 0x07C6, 0x07CA, 0x07BE,
0x07C2, 0x07AC, 0x07A4, 0x07A8, 0x07A0, 0x0798, 0x079C, 0x0780, 0x0784, 0x0788,
0x0794, 0x0275, 0x078C, 0x077C, 0x0269, 0x026C, 0x026F, 0x0816, 0x081A, 0x0260,
0x0263, 0x07FE, 0x0802, 0x0806, 0x080A, 0x0239, 0x023C, 0x0233, 0x0236, 0x0774,
0x0778, 0x024E, 0x0251, 0x0254, 0x03B6, 0x03B8, 0x03BA, 0x03B2, 0x03A6, 0x03A8,
0x03AA, 0x03DC, 0x03CE, 0x03D0, 0x03D2, 0x03D4, 0x03BE, 0x03C0, 0x036E, 0x0370,
0x0366, 0x0368, 0x036A, 0x039C, 0x0386, 0x038C, 0x037E, 0x0380, 0x0382, 0x0384,
0x0336, 0x0338, 0x033A, 0x033C, 0x032E, 0x031E, 0x0320, 0x0356, 0x0358, 0x0346,
0x0348, 0x034A, 0x034C, 0x033E, 0x0340, 0x0342, 0x0344, 0x02F6, 0x02F8, 0x02FA,
0x02FC, 0x02EE, 0x02F0, 0x02F2, 0x02F4, 0x02E6, 0x02E8, 0x02EA, 0x02EC, 0x02DE,
0x02E0, 0x02E2, 0x02E4, 0x0316, 0x0318, 0x031A, 0x031C, 0x030E, 0x0310, 0x0312,
0x0314, 0x0306, 0x0308, 0x030A, 0x030C, 0x02FE, 0x0300, 0x0302, 0x0304, 0x04AA,
0x04AC, 0x04AE, 0x04B0, 0x04A2, 0x04A4, 0x04A6, 0x04A8, 0x049A, 0x049C, 0x049E,
0x04A0, 0x0492, 0x0494, 0x0496, 0x0498, 0x04C2, 0x04C4, 0x04BA, 0x04BC, 0x04BE,
0x04C0, 0x04B2, 0x04B4, 0x04B6, 0x04B8, 0x046A, 0x046C, 0x046E, 0x0470, 0x0462,
0x0464, 0x0466, 0x0468, 0x045A, 0x045C, 0x045E, 0x0460, 0x0452, 0x0454, 0x0456,
0x0458, 0x048A, 0x048C, 0x048E, 0x0490, 0x0482, 0x0484, 0x0486, 0x0488, 0x047A,
0x047C, 0x047E, 0x0480, 0x0472, 0x0474, 0x0476, 0x0478, 0x042A, 0x042C, 0x042E,
0x0430, 0x0422, 0x0424, 0x0426, 0x0428, 0x041A, 0x041C, 0x041E, 0x0444, 0x0434,
0x03F2, 0x03F4, 0x0011, 0x0013, 0x0015, 0x0009, 0x0410, 0x000D, 0x0001, 0x0400,
0x0402, 0x05E0, 0x05E3, 0x05D7, 0x05C2, 0x05C5, 0x05C8, 0x05CB, 0x0616, 0x0619,
0x060A, 0x060D, 0x0610, 0x0613, 0x05FE, 0x0601, 0x0604, 0x0607, 0x05F2, 0x05F5,
0x05F8, 0x05FB, 0x0598, 0x059B, 0x058C, 0x058F, 0x0592, 0x0595, 0x0586, 0x0589,
0x057A, 0x057D, 0x0580, 0x0583, 0x05BC, 0x05BF, 0x05B6, 0x05B9, 0x05AA, 0x05AD,
0x05B0, 0x05B3, 0x059E, 0x05A1, 0x081E, 0x05A4, 0x05A7, 0x053E, 0x0541, 0x0544,
0x0547, 0x0532, 0x0535, 0x0538, 0x053B, };
const uint8_t NU_TOUNACCENT_COMBINED[] = {
0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41,
0x00, 0x43, 0x00, 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x49,
0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4E, 0x00, 0x4F, 0x00, 0x4F,
0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x55, 0x00, 0x55,
0x00, 0x55, 0x00, 0x55, 0x00, 0x59, 0x00, 0x61, 0x00, 0x61, 0x00, 0x61,
0x00, 0x61, 0x00, 0x61, 0x00, 0x61, 0x00, 0x63, 0x00, 0x65, 0x00, 0x65,
0x00, 0x65, 0x00, 0x65, 0x00, 0x69, 0x00, 0x69, 0x00, 0x69, 0x00, 0x69,
0x00, 0x6E, 0x00, 0x6F, 0x00, 0x6F, 0x00, 0x6F, 0x00, 0x6F, 0x00, 0x6F,
0x00, 0x6F, 0x00, 0x75, 0x00, 0x75, 0x00, 0x75, 0x00, 0x75, 0x00, 0x79,
0x00, 0x79, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41,
0x00, 0x61, 0x00, 0x43, 0x00, 0x63, 0x00, 0x43, 0x00, 0x63, 0x00, 0x43,
0x00, 0x63, 0x00, 0x43, 0x00, 0x63, 0x00, 0x44, 0x00, 0x64, 0x00, 0x44,
0x00, 0x64, 0x00, 0x45, 0x00, 0x65, 0x00, 0x45, 0x00, 0x65, 0x00, 0x45,
0x00, 0x65, 0x00, 0x45, 0x00, 0x65, 0x00, 0x45, 0x00, 0x65, 0x00, 0x47,
0x00, 0x67, 0x00, 0x47, 0x00, 0x67, 0x00, 0x47, 0x00, 0x67, 0x00, 0x47,
0x00, 0x67, 0x00, 0x48, 0x00, 0x68, 0x00, 0x48, 0x00, 0x68, 0x00, 0x49,
0x00, 0x69, 0x00, 0x49, 0x00, 0x69, 0x00, 0x49, 0x00, 0x69, 0x00, 0x49,
0x00, 0x69, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4B, 0x00, 0x6B,
0x00, 0x4C, 0x00, 0x6C, 0x00, 0x4C, 0x00, 0x6C, 0x00, 0x4C, 0x00, 0x6C,
0x00, 0x4C, 0x00, 0x6C, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x4E, 0x00, 0x6E,
0x00, 0x4E, 0x00, 0x6E, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x4F, 0x00, 0x6F,
0x00, 0x4F, 0x00, 0x6F, 0x00, 0x52, 0x00, 0x72, 0x00, 0x52, 0x00, 0x72,
0x00, 0x52, 0x00, 0x72, 0x00, 0x53, 0x00, 0x73, 0x00, 0x53, 0x00, 0x73,
0x00, 0x53, 0x00, 0x73, 0x00, 0x53, 0x00, 0x73, 0x00, 0x54, 0x00, 0x74,
0x00, 0x54, 0x00, 0x74, 0x00, 0x55, 0x00, 0x75, 0x00, 0x55, 0x00, 0x75,
0x00, 0x55, 0x00, 0x75, 0x00, 0x55, 0x00, 0x75, 0x00, 0x55, 0x00, 0x75,
0x00, 0x55, 0x00, 0x75, 0x00, 0x57, 0x00, 0x77, 0x00, 0x59, 0x00, 0x79,
0x00, 0x59, 0x00, 0x5A, 0x00, 0x7A, 0x00, 0x5A, 0x00, 0x7A, 0x00, 0x5A,
0x00, 0x7A, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x55, 0x00, 0x75, 0x00, 0x41,
0x00, 0x61, 0x00, 0x49, 0x00, 0x69, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x55,
0x00, 0x75, 0x00, 0x55, 0x00, 0x75, 0x00, 0x55, 0x00, 0x75, 0x00, 0x55,
0x00, 0x75, 0x00, 0x55, 0x00, 0x75, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41,
0x00, 0x61, 0x00, 0x47, 0x00, 0x67, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4F,
0x00, 0x6F, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0xC6, 0xB7, 0x00, 0xCA, 0x92,
0x00, 0x6A, 0x00, 0x47, 0x00, 0x67, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x41,
0x00, 0x61, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41,
0x00, 0x61, 0x00, 0x45, 0x00, 0x65, 0x00, 0x45, 0x00, 0x65, 0x00, 0x49,
0x00, 0x69, 0x00, 0x49, 0x00, 0x69, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x4F,
0x00, 0x6F, 0x00, 0x52, 0x00, 0x72, 0x00, 0x52, 0x00, 0x72, 0x00, 0x55,
0x00, 0x75, 0x00, 0x55, 0x00, 0x75, 0x00, 0x53, 0x00, 0x73, 0x00, 0x54,
0x00, 0x74, 0x00, 0x48, 0x00, 0x68, 0x00, 0x41, 0x00, 0x61, 0x00, 0x45,
0x00, 0x65, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x4F,
0x00, 0x6F, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x59, 0x00, 0x79, 0x00, 0xC2,
0xA8, 0x00, 0xCE, 0x91, 0x00, 0xCE, 0x95, 0x00, 0xCE, 0x97, 0x00, 0xCE,
0x99, 0x00, 0xCE, 0x9F, 0x00, 0xCE, 0xA5, 0x00, 0xCE, 0xA9, 0x00, 0xCE,
0xB9, 0x00, 0xCE, 0x99, 0x00, 0xCE, 0xA5, 0x00, 0xCE, 0xB1, 0x00, 0xCE,
0xB5, 0x00, 0xCE, 0xB7, 0x00, 0xCE, 0xB9, 0x00, 0xCF, 0x85, 0x00, 0xCE,
0xB9, 0x00, 0xCF, 0x85, 0x00, 0xCE, 0xBF, 0x00, 0xCF, 0x85, 0x00, 0xCF,
0x89, 0x00, 0xD0, 0x95, 0x00, 0xD0, 0x95, 0x00, 0xD0, 0x93, 0x00, 0xD0,
0x86, 0x00, 0xD0, 0x9A, 0x00, 0xD0, 0x98, 0x00, 0xD0, 0xA3, 0x00, 0xD0,
0x98, 0x00, 0xD0, 0xB8, 0x00, 0xD0, 0xB5, 0x00, 0xD0, 0xB5, 0x00, 0xD0,
0xB3, 0x00, 0xD1, 0x96, 0x00, 0xD0, 0xBA, 0x00, 0xD0, 0xB8, 0x00, 0xD1,
0x83, 0x00, 0xD1, 0xB4, 0x00, 0xD1, 0xB5, 0x00, 0xD0, 0x96, 0x00, 0xD0,
0xB6, 0x00, 0xD0, 0x90, 0x00, 0xD0, 0xB0, 0x00, 0xD0, 0x90, 0x00, 0xD0,
0xB0, 0x00, 0xD0, 0x95, 0x00, 0xD0, 0xB5, 0x00, 0xD3, 0x98, 0x00, 0xD3,
0x99, 0x00, 0xD0, 0x96, 0x00, 0xD0, 0xB6, 0x00, 0xD0, 0x97, 0x00, 0xD0,
0xB7, 0x00, 0xD0, 0x98, 0x00, 0xD0, 0xB8, 0x00, 0xD0, 0x98, 0x00, 0xD0,
0xB8, 0x00, 0xD0, 0x9E, 0x00, 0xD0, 0xBE, 0x00, 0xD3, 0xA8, 0x00, 0xD3,
0xA9, 0x00, 0xD0, 0xAD, 0x00, 0xD1, 0x8D, 0x00, 0xD0, 0xA3, 0x00, 0xD1,
0x83, 0x00, 0xD0, 0xA3, 0x00, 0xD1, 0x83, 0x00, 0xD0, 0xA3, 0x00, 0xD1,
0x83, 0x00, 0xD0, 0xA7, 0x00, 0xD1, 0x87, 0x00, 0xD0, 0xAB, 0x00, 0xD1,
0x8B, 0x00, 0x41, 0x00, 0x61, 0x00, 0x42, 0x00, 0x62, 0x00, 0x42, 0x00,
0x62, 0x00, 0x42, 0x00, 0x62, 0x00, 0x43, 0x00, 0x63, 0x00, 0x44, 0x00,
0x64, 0x00, 0x44, 0x00, 0x64, 0x00, 0x44, 0x00, 0x64, 0x00, 0x44, 0x00,
0x64, 0x00, 0x44, 0x00, 0x64, 0x00, 0x45, 0x00, 0x65, 0x00, 0x45, 0x00,
0x65, 0x00, 0x45, 0x00, 0x65, 0x00, 0x45, 0x00, 0x65, 0x00, 0x45, 0x00,
0x65, 0x00, 0x46, 0x00, 0x66, 0x00, 0x47, 0x00, 0x67, 0x00, 0x48, 0x00,
0x68, 0x00, 0x48, 0x00, 0x68, 0x00, 0x48, 0x00, 0x68, 0x00, 0x48, 0x00,
0x68, 0x00, 0x48, 0x00, 0x68, 0x00, 0x49, 0x00, 0x69, 0x00, 0x49, 0x00,
0x69, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x00,
0x6B, 0x00, 0x4C, 0x00, 0x6C, 0x00, 0x4C, 0x00, 0x6C, 0x00, 0x4C, 0x00,
0x6C, 0x00, 0x4C, 0x00, 0x6C, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x4D, 0x00,
0x6D, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x4E, 0x00,
0x6E, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x4F, 0x00,
0x6F, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x4F, 0x00,
0x6F, 0x00, 0x50, 0x00, 0x70, 0x00, 0x50, 0x00, 0x70, 0x00, 0x52, 0x00,
0x72, 0x00, 0x52, 0x00, 0x72, 0x00, 0x52, 0x00, 0x72, 0x00, 0x52, 0x00,
0x72, 0x00, 0x53, 0x00, 0x73, 0x00, 0x53, 0x00, 0x73, 0x00, 0x53, 0x00,
0x73, 0x00, 0x53, 0x00, 0x73, 0x00, 0x53, 0x00, 0x73, 0x00, 0x54, 0x00,
0x74, 0x00, 0x54, 0x00, 0x74, 0x00, 0x54, 0x00, 0x74, 0x00, 0x54, 0x00,
0x74, 0x00, 0x55, 0x00, 0x75, 0x00, 0x55, 0x00, 0x75, 0x00, 0x55, 0x00,
0x75, 0x00, 0x55, 0x00, 0x75, 0x00, 0x55, 0x00, 0x75, 0x00, 0x56, 0x00,
0x76, 0x00, 0x56, 0x00, 0x76, 0x00, 0x57, 0x00, 0x77, 0x00, 0x57, 0x00,
0x77, 0x00, 0x57, 0x00, 0x77, 0x00, 0x57, 0x00, 0x77, 0x00, 0x57, 0x00,
0x77, 0x00, 0x58, 0x00, 0x78, 0x00, 0x58, 0x00, 0x78, 0x00, 0x59, 0x00,
0x79, 0x00, 0x5A, 0x00, 0x7A, 0x00, 0x5A, 0x00, 0x7A, 0x00, 0x5A, 0x00,
0x7A, 0x00, 0x68, 0x00, 0x74, 0x00, 0x77, 0x00, 0x79, 0x00, 0x41, 0x00,
0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00,
0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00,
0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00,
0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x45, 0x00,
0x65, 0x00, 0x45, 0x00, 0x65, 0x00, 0x45, 0x00, 0x65, 0x00, 0x45, 0x00,
0x65, 0x00, 0x45, 0x00, 0x65, 0x00, 0x45, 0x00, 0x65, 0x00, 0x45, 0x00,
0x65, 0x00, 0x45, 0x00, 0x65, 0x00, 0x49, 0x00, 0x69, 0x00, 0x49, 0x00,
0x69, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x4F, 0x00,
0x6F, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x4F, 0x00,
0x6F, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x4F, 0x00,
0x6F, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x4F, 0x00, 0x6F, 0x00, 0x4F, 0x00,
0x6F, 0x00, 0x55, 0x00, 0x75, 0x00, 0x55, 0x00, 0x75, 0x00, 0x55, 0x00,
0x75, 0x00, 0x55, 0x00, 0x75, 0x00, 0x55, 0x00, 0x75, 0x00, 0x55, 0x00,
0x75, 0x00, 0x55, 0x00, 0x75, 0x00, 0x59, 0x00, 0x79, 0x00, 0x59, 0x00,
0x79, 0x00, 0x59, 0x00, 0x79, 0x00, 0x59, 0x00, 0x79, 0x00, 0xCE, 0xB1,
0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB1,
0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB1, 0x00, 0xCE, 0x91,
0x00, 0xCE, 0x91, 0x00, 0xCE, 0x91, 0x00, 0xCE, 0x91, 0x00, 0xCE, 0x91,
0x00, 0xCE, 0x91, 0x00, 0xCE, 0x91, 0x00, 0xCE, 0x91, 0x00, 0xCE, 0xB5,
0x00, 0xCE, 0xB5, 0x00, 0xCE, 0xB5, 0x00, 0xCE, 0xB5, 0x00, 0xCE, 0xB5,
0x00, 0xCE, 0xB5, 0x00, 0xCE, 0x95, 0x00, 0xCE, 0x95, 0x00, 0xCE, 0x95,
0x00, 0xCE, 0x95, 0x00, 0xCE, 0x95, 0x00, 0xCE, 0x95, 0x00, 0xCE, 0xB7,
0x00, 0xCE, 0xB7, 0x00, 0xCE, 0xB7, 0x00, 0xCE, 0xB7, 0x00, 0xCE, 0xB7,
0x00, 0xCE, 0xB7, 0x00, 0xCE, 0xB7, 0x00, 0xCE, 0xB7, 0x00, 0xCE, 0x97,
0x00, 0xCE, 0x97, 0x00, 0xCE, 0x97, 0x00, 0xCE, 0x97, 0x00, 0xCE, 0x97,
0x00, 0xCE, 0x97, 0x00, 0xCE, 0x97, 0x00, 0xCE, 0x97, 0x00, 0xCE, 0xB9,
0x00, 0xCE, 0xB9, 0x00, 0xCE, 0xB9, 0x00, 0xCE, 0xB9, 0x00, 0xCE, 0xB9,
0x00, 0xCE, 0xB9, 0x00, 0xCE, 0xB9, 0x00, 0xCE, 0xB9, 0x00, 0xCE, 0x99,
0x00, 0xCE, 0x99, 0x00, 0xCE, 0x99, 0x00, 0xCE, 0x99, 0x00, 0xCE, 0x99,
0x00, 0xCE, 0x99, 0x00, 0xCE, 0x99, 0x00, 0xCE, 0x99, 0x00, 0xCE, 0xBF,
0x00, 0xCE, 0xBF, 0x00, 0xCE, 0xBF, 0x00, 0xCE, 0xBF, 0x00, 0xCE, 0xBF,
0x00, 0xCE, 0xBF, 0x00, 0xCE, 0x9F, 0x00, 0xCE, 0x9F, 0x00, 0xCE, 0x9F,
0x00, 0xCE, 0x9F, 0x00, 0xCE, 0x9F, 0x00, 0xCE, 0x9F, 0x00, 0xCF, 0x85,
0x00, 0xCF, 0x85, 0x00, 0xCF, 0x85, 0x00, 0xCF, 0x85, 0x00, 0xCF, 0x85,
0x00, 0xCF, 0x85, 0x00, 0xCF, 0x85, 0x00, 0xCF, 0x85, 0x00, 0xCE, 0xA5,
0x00, 0xCE, 0xA5, 0x00, 0xCE, 0xA5, 0x00, 0xCE, 0xA5, 0x00, 0xCF, 0x89,
0x00, 0xCF, 0x89, 0x00, 0xCF, 0x89, 0x00, 0xCF, 0x89, 0x00, 0xCF, 0x89,
0x00, 0xCF, 0x89, 0x00, 0xCF, 0x89, 0x00, 0xCF, 0x89, 0x00, 0xCE, 0xA9,
0x00, 0xCE, 0xA9, 0x00, 0xCE, 0xA9, 0x00, 0xCE, 0xA9, 0x00, 0xCE, 0xA9,
0x00, 0xCE, 0xA9, 0x00, 0xCE, 0xA9, 0x00, 0xCE, 0xA9, 0x00, 0xCE, 0xB1,
0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB5, 0x00, 0xCE, 0xB5, 0x00, 0xCE, 0xB7,
0x00, 0xCE, 0xB7, 0x00, 0xCE, 0xB9, 0x00, 0xCE, 0xB9, 0x00, 0xCE, 0xBF,
0x00, 0xCE, 0xBF, 0x00, 0xCF, 0x85, 0x00, 0xCF, 0x85, 0x00, 0xCF, 0x89,
0x00, 0xCF, 0x89, 0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB1,
0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB1,
0x00, 0xCE, 0xB1, 0x00, 0xCE, 0x91, 0x00, 0xCE, 0x91, 0x00, 0xCE, 0x91,
0x00, 0xCE, 0x91, 0x00, 0xCE, 0x91, 0x00, 0xCE, 0x91, 0x00, 0xCE, 0x91,
0x00, 0xCE, 0x91, 0x00, 0xCE, 0xB7, 0x00, 0xCE, 0xB7, 0x00, 0xCE, 0xB7,
0x00, 0xCE, 0xB7, 0x00, 0xCE, 0xB7, 0x00, 0xCE, 0xB7, 0x00, 0xCE, 0xB7,
0x00, 0xCE, 0xB7, 0x00, 0xCE, 0x97, 0x00, 0xCE, 0x97, 0x00, 0xCE, 0x97,
0x00, 0xCE, 0x97, 0x00, 0xCE, 0x97, 0x00, 0xCE, 0x97, 0x00, 0xCE, 0x97,
0x00, 0xCE, 0x97, 0x00, 0xCF, 0x89, 0x00, 0xCF, 0x89, 0x00, 0xCF, 0x89,
0x00, 0xCF, 0x89, 0x00, 0xCF, 0x89, 0x00, 0xCF, 0x89, 0x00, 0xCF, 0x89,
0x00, 0xCF, 0x89, 0x00, 0xCE, 0xA9, 0x00, 0xCE, 0xA9, 0x00, 0xCE, 0xA9,
0x00, 0xCE, 0xA9, 0x00, 0xCE, 0xA9, 0x00, 0xCE, 0xA9, 0x00, 0xCE, 0xA9,
0x00, 0xCE, 0xA9, 0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB1,
0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB1, 0x00, 0xCE, 0xB1,
0x00, 0xCE, 0x91, 0x00, 0xCE, 0x91, 0x00, 0xCE, 0x91, 0x00, 0xCE, 0x91,
0x00, 0xCE, 0x91, 0x00, 0xC2, 0xA8, 0x00, 0xCE, 0xB7, 0x00, 0xCE, 0xB7,
0x00, 0xCE, 0xB7, 0x00, 0xCE, 0xB7, 0x00, 0xCE, 0xB7, 0x00, 0xCE, 0x95,
0x00, 0xCE, 0x95, 0x00, 0xCE, 0x97, 0x00, 0xCE, 0x97, 0x00, 0xCE, 0x97,
0x00, 0xE1, 0xBE, 0xBF, 0x00, 0xE1, 0xBE, 0xBF, 0x00, 0xE1, 0xBE, 0xBF,
0x00, 0xCE, 0xB9, 0x00, 0xCE, 0xB9, 0x00, 0xCE, 0xB9, 0x00, 0xCE, 0xB9,
0x00, 0xCE, 0xB9, 0x00, 0xCE, 0xB9, 0x00, 0xCE, 0x99, 0x00, 0xCE, 0x99,
0x00, 0xCE, 0x99, 0x00, 0xCE, 0x99, 0x00, 0xE1, 0xBF, 0xBE, 0x00, 0xE1,
0xBF, 0xBE, 0x00, 0xE1, 0xBF, 0xBE, 0x00, 0xCF, 0x85, 0x00, 0xCF, 0x85,
0x00, 0xCF, 0x85, 0x00, 0xCF, 0x85, 0x00, 0xCF, 0x81, 0x00, 0xCF, 0x81,
0x00, 0xCF, 0x85, 0x00, 0xCF, 0x85, 0x00, 0xCE, 0xA5, 0x00, 0xCE, 0xA5,
0x00, 0xCE, 0xA5, 0x00, 0xCE, 0xA5, 0x00, 0xCE, 0xA1, 0x00, 0xC2, 0xA8,
0x00, 0xC2, 0xA8, 0x00, 0xCF, 0x89, 0x00, 0xCF, 0x89, 0x00, 0xCF, 0x89,
0x00, 0xCF, 0x89, 0x00, 0xCF, 0x89, 0x00, 0xCE, 0x9F, 0x00, 0xCE, 0x9F,
0x00, 0xCE, 0xA9, 0x00, 0xCE, 0xA9, 0x00, 0xCE, 0xA9, 0x00, 0x41, 0x00,
0xE2, 0x86, 0x90, 0x00, 0xE2, 0x86, 0x92, 0x00, 0xE2, 0x86, 0x94, 0x00,
0xE2, 0x87, 0x90, 0x00, 0xE2, 0x87, 0x94, 0x00, 0xE2, 0x87, 0x92, 0x00,
0xE2, 0x88, 0x83, 0x00, 0xE2, 0x88, 0x88, 0x00, 0xE2, 0x88, 0x8B, 0x00,
0xE2, 0x88, 0xA3, 0x00, 0xE2, 0x88, 0xA5, 0x00, 0xE2, 0x88, 0xBC, 0x00,
0xE2, 0x89, 0x83, 0x00, 0xE2, 0x89, 0x85, 0x00, 0xE2, 0x89, 0x88, 0x00,
0x3D, 0x00, 0xE2, 0x89, 0xA1, 0x00, 0xE2, 0x89, 0x8D, 0x00, 0x3C, 0x00,
0x3E, 0x00, 0xE2, 0x89, 0xA4, 0x00, 0xE2, 0x89, 0xA5, 0x00, 0xE2, 0x89,
0xB2, 0x00, 0xE2, 0x89, 0xB3, 0x00, 0xE2, 0x89, 0xB6, 0x00, 0xE2, 0x89,
0xB7, 0x00, 0xE2, 0x89, 0xBA, 0x00, 0xE2, 0x89, 0xBB, 0x00, 0xE2, 0x8A,
0x82, 0x00, 0xE2, 0x8A, 0x83, 0x00, 0xE2, 0x8A, 0x86, 0x00, 0xE2, 0x8A,
0x87, 0x00, 0xE2, 0x8A, 0xA2, 0x00, 0xE2, 0x8A, 0xA8, 0x00, 0xE2, 0x8A,
0xA9, 0x00, 0xE2, 0x8A, 0xAB, 0x00, 0xE2, 0x89, 0xBC, 0x00, 0xE2, 0x89,
0xBD, 0x00, 0xE2, 0x8A, 0x91, 0x00, 0xE2, 0x8A, 0x92, 0x00, 0xE2, 0x8A,
0xB2, 0x00, 0xE2, 0x8A, 0xB3, 0x00, 0xE2, 0x8A, 0xB4, 0x00, 0xE2, 0x8A,
0xB5, 0x00, 0xE2, 0xAB, 0x9D, 0x00,
};

917
vendor/nunicode/src/libnu/gen/_toupper.c vendored Normal file
View File

@@ -0,0 +1,917 @@
/* Automatically generated file (mph.py), 1490539881
*
* Tag : NU_TOUPPER
* Prime : 01000193,
* G size : 1396,
* Combined length : 5530,
* Encoding : UTF-8
*/
#include <stdint.h>
const int16_t NU_TOUPPER_G[] = {
1, -1396, 1, -1395, 1, -1394, 1, -1393, 1, -1392, 1, -1391,
1, -1390, 1, -1389, 1, 1, 1, 5, 8, 1, 4, 9,
-1388, 0, -1387, 0, -1386, 0, -1385, 0, -1384, 0, -1383, 0,
-1382, 0, -1381, 0, -1380, 0, -1379, 0, -1377, 0, -1376, 0,
-1375, 0, -1374, 0, 0, -1373, 0, 0, -1372, 1, -1371, 1,
-1370, 1, -1369, 1, 7, 10, -1368, 12, 2, -1367, 2, -1366,
-1365, 0, -1364, 0, -1363, 0, -1362, 0, 2, -1361, 1, -1360,
1, -1359, 1, -1358, -1357, -1355, -1354, 0, -1353, 0, 17, 0,
-1352, -1351, 19, 0, 0, -1350, 0, 0, 1, -1349, -1348, 1,
-1347, -1346, 3, -1345, -1343, -1342, -1341, 4, -1340, -1339, -1338, 2,
0, 0, 0, -1337, 0, 2, 0, -1336, -1335, -1334, 8, -1333,
1, 8, 1, 9, 1, 1, 1, 7, 28, 31, 1, 33,
-1332, -1331, -1330, 1, 0, 0, -1329, 0, 0, -1327, 0, -1325,
0, -1324, 0, -1322, 0, -1320, 0, -1319, 1, -1316, 1, 1,
-1314, -1312, -1310, -1308, -1306, 1, 1, -1304, 1, -1302, 1, 1,
-1300, 1, -1298, 1, 1, 1, -1296, 1, -1295, -1292, 1, -1290,
1, -1288, 1, -1286, 1, 0, 1, 0, 1, 0, 1, 0,
1, 0, 1, 0, 1, 0, 2, 0, 1, 0, 1, 0,
1, 0, 1, 0, 2, 0, 2, 0, 2, 0, 1, 0,
-1284, 0, -1282, 0, -1280, 0, -1276, 0, -1275, 0, -1274, 0,
-1272, 0, -1271, 0, -1270, 0, -1269, 0, -1267, 0, -1265, 0,
-1264, 0, -1263, 0, 0, -1262, 0, 0, 0, -1261, 0, -1260,
-1259, 0, -1258, 0, -1257, 0, -1256, 0, -1255, 0, -1254, 0,
-1253, 0, -1252, 0, -1250, 0, -1248, 0, -1247, 0, -1246, 0,
-1245, 0, -1242, 0, -1241, 0, -1240, 0, 0, -1239, 0, -1238,
0, -1237, 0, -1236, -1235, 0, -1234, -1233, -1231, 0, -1230, 0,
48, -1229, 49, -1227, 63, -1223, 64, -1220, -1219, 64, -1218, -1216,
68, 70, -1214, 69, 64, -1126, 64, -1115, 32, 1, 32, 1,
32, 1, 32, 1, 32, 1, 32, 1, -1114, -1111, -1110, -1109,
-906, -893, -891, -887, -884, -883, -881, -872, -870, -868, -862, -860,
32, 32, 32, 32, 33, -859, 33, 40, -858, -857, -853, -850,
-848, -846, 35, -839, -837, -836, -833, -830, -828, -826, 17, -825,
-824, -823, -822, -820, -819, -818, -817, -816, -812, -810, -808, -804,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 32, -800, 32, -799,
-798, -797, 33, -796, 32, -794, 35, -792, 32, -790, 32, -788,
40, -786, 40, -784, 40, -783, 40, -782, 33, -781, 33, -780,
33, -778, 33, -776, -774, 0, -772, 0, -770, 0, -768, 0,
-766, 0, -761, 0, -760, 0, -758, 0, -756, 0, -754, 0,
-748, 0, -747, 0, -746, 0, -745, 0, -743, 0, -742, 0,
-741, 0, -736, 0, -734, 0, 1, 0, -732, 0, 4, 0,
-730, 0, -720, 0, -717, 0, -706, 0, 1, 0, -703, 0,
-701, 0, -689, 0, -671, 0, -669, 0, -668, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -667, -666, -665, -641,
5, -640, 5, -639, -638, -635, -634, 11, -615, -613, -612, -610,
-608, 2, -607, 6, 2, 1, 1, 5, -606, -605, -604, -603,
0, -602, -601, -597, 0, 0, 0, 0, -594, -592, -588, 0,
-587, -584, -581, -580, -578, -577, -576, -575, -574, -573, -572, -571,
-570, -569, -568, 1, -567, -564, -563, -562, -561, -560, -558, -556,
1, 1, 1, 1, -555, -554, 9, 10, -553, -552, -551, -550,
-549, -548, -547, -546, -545, -544, -543, -542, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, -541, 1, 16, 1,
-540, -539, -538, -537, -536, -534, -532, -530, -528, -526, -525, -524,
1, 1, 1, 4, 1, -523, 16, 19, 12, 1, 16, -522,
16, -521, 64, -520, -519, 0, -518, 0, -517, -516, 17, -515,
-514, 30, 28, -513, -512, 32, -510, 41, 0, -508, -506, 47,
-504, -503, -502, -497, 0, 0, -496, 0, 12, 0, -494, -490,
-489, 0, 0, 0, 44, 0, 53, 0, 67, 0, 69, 0,
31, 0, 32, 0, 39, 0, 43, 0, 0, 0, 0, 0,
0, 0, 0, -488, 0, 0, 0, 0, -486, 0, -484, 0,
0, 0, 0, 0, 0, 0, 0, 0, -482, 0, -480, 0,
-476, 0, -475, 0, 0, 0, -474, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -473, -472, -471, -470,
-469, -468, -467, -466, -465, -463, -461, -455, -451, -449, -439, -428,
-424, -423, -422, -384, -383, -382, -381, -380, -379, -377, 4, -376,
-375, -374, -373, -372, -371, -370, -369, -363, 2, -361, -352, -351,
-350, 0, 0, 0, -349, -348, 0, -347, -346, -345, 2, 5,
-344, -343, -342, -341, -340, -339, -338, -337, -335, -323, -322, -312,
-311, -308, -307, -306, -305, 1, 0, 0, 0, 0, 0, 0,
-304, 0, 0, 0, 4, 3, 8, 0, 1, -303, -302, 1,
4, 0, -301, 0, 1, -300, -299, 23, 2, -298, -297, -296,
4, -294, -293, -291, 1, -289, 5, -287, 36, -285, 53, 1,
8, 12, 9, 40, 1, 40, 1, 40, 11, -279, 64, -264,
64, -263, 64, -262, 4, 45, 4, 44, 76, -261, 11, 41,
-260, 0, -259, 0, 0, 0, 0, 0, 66, 69, 68, 79,
180, 4, 186, 189, 70, -258, -257, 81, 93, -256, 100, -255,
5, 67, 65, -254, 5, 67, 4, 131, 68, -253, 78, -252,
68, -251, 115, -250, 81, -249, 98, -248, 101, -247, 101, -246,
0, 0, 0, 0, -245, 0, -244, 0, 3, 167, 2, 169,
1, -243, 1, -242, 1, 0, 1, 0, -241, 0, -240, 0,
136, -239, 139, -238, -237, 0, 15, -236, -235, 0, -234, 0,
-233, 0, -232, 0, 158, -231, 157, -230, 136, -229, 142, -228,
-227, -226, -225, -223, 0, 0, -221, -215, 183, -214, -168, 199,
141, -167, -163, -161, -156, 0, -155, 0, -154, 0, -153, 0,
1, 0, 1, 0, 1, 1, 1, -152, 1, 1, -151, 1,
-150, 0, -148, 0, -147, 0, -145, -144, -143, -142, -141, -140,
2, 0, -139, 0, 2, 0, 1, 0, 1, 0, 1, 0,
-138, -137, 9, 0, -136, 0, 1, 0, 48, -135, 54, -134,
6, -133, 1, -132, 1, -131, 1, 23, -130, -129, 16, 0,
1, 39, 1, -128, 1, -127, 81, 46, 22, -126, 83, -125,
89, -124, 98, -123, -122, 0, -121, 0, -120, 0, -119, 0,
1, -117, 1, -115, 1, -112, 1, -111, -110, 0, -109, 0,
-108, 0, -107, 0, -106, 0, -105, 0, -104, 0, -103, 0,
39, 0, 43, 0, 8, 0, 35, 0, 32, 0, 32, 0,
32, 0, 37, 0, 77, 0, 82, 0, 7, 0, 8, 0,
1, 0, 20, 0, 38, 0, 40, 0, -102, 0, -101, 0,
-100, 0, -99, 0, -98, 0, -97, 0, -96, 0, -95, 0,
5, 0, 10, 0, 75, 0, 79, 0, 5, 0, 11, 0,
-94, 0, 83, 0, -93, 0, -92, 0, -91, 0, -90, 0,
-89, 0, -88, 0, -87, 0, -86, 0, -85, 0, -84, 0,
-83, 0, -82, 0, 1, 0, 1, 0, 1, 0, 1, 0,
1, -81, 1, -80, 1, -79, 1, -78, 1, -77, 1, -76,
1, -75, 1, -74, 1, 0, 1, 0, 2, 0, 1, 0,
-73, 0, -72, 0, -71, 0, -70, 0, -69, 0, -68, 0,
-67, 0, -66, 0, 1, 0, 1, 0, 2, 0, 1, 0,
1, -65, 1, -64, 16, -62, 162, -60, 0, 0, -58, -57,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -55, -53, -52, -51, -50, -49, -47, -45,
-40, -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, 0,
-29, -27, -26, -25, -24, -23, -22, -21, 14, 37, 64, 67,
72, -20, 75, -18, -16, 0, -14, 0, -12, 0, -11, 0,
-10, 0, -9, 0, 0, 0, -8, 0, -7, -6, -5, -4,
68, -3, -2, -1, };
const size_t NU_TOUPPER_G_SIZE = sizeof(NU_TOUPPER_G) / sizeof(*NU_TOUPPER_G);
/* codepoints */
const uint32_t NU_TOUPPER_VALUES_C[] = {
0x0104F4, 0x0104F5, 0x0104F6, 0x0104F0, 0x0104F1, 0x0104F2, 0x0104F3, 0x000481,
0x00049D, 0x00049F, 0x000499, 0x00049B, 0x000581, 0x000495, 0x000583, 0x000497,
0x000585, 0x0104DC, 0x000587, 0x0104DE, 0x000568, 0x000569, 0x00056A, 0x00056B,
0x000564, 0x000565, 0x000566, 0x00052D, 0x000567, 0x000561, 0x000562, 0x000563,
0x00057C, 0x00057D, 0x00057E, 0x00057F, 0x000578, 0x000579, 0x00057A, 0x00057B,
0x00FB01, 0x00FB05, 0x00FB03, 0x00FB02, 0x000574, 0x00FB00, 0x000575, 0x00FB06,
0x000576, 0x000577, 0x000570, 0x000571, 0x000572, 0x00FB04, 0x000573, 0x002184,
0x0024E8, 0x0024E9, 0x00FB13, 0x0024E4, 0x00FB15, 0x0024E6, 0x00FB17, 0x0024E0,
0x0024E2, 0x001E61, 0x001E63, 0x001E7D, 0x001E7F, 0x001E79, 0x001E7B, 0x001E75,
0x001E77, 0x0024DC, 0x0024DE, 0x0024D8, 0x0024DA, 0x0024D4, 0x0024D6, 0x0024D0,
0x0024D2, 0x001E51, 0x001E53, 0x001E2D, 0x001E2F, 0x001E29, 0x001E2B, 0x001E25,
0x001E27, 0x001E21, 0x001E23, 0x001E3D, 0x001E3F, 0x001E3B, 0x001E09, 0x001E0B,
0x001E05, 0x001E07, 0x001E01, 0x001E03, 0x001E1D, 0x001E1F, 0x001EF9, 0x001EFB,
0x001EF5, 0x001EF7, 0x001EF1, 0x001EF3, 0x001ECD, 0x001ECF, 0x000584, 0x000586,
0x000071, 0x000073, 0x000580, 0x000072, 0x000582, 0x000070, 0x001EC1, 0x001EC3,
0x001EDD, 0x001EDF, 0x00FF4C, 0x00FF4E, 0x00FF48, 0x00FF4A, 0x00FF46, 0x000268,
0x000266, 0x001EAB, 0x00FF5A, 0x00FF54, 0x00FF56, 0x00FF50, 0x00FF52, 0x001EBB,
0x000272, 0x001EB7, 0x001E89, 0x000240, 0x001E85, 0x000242, 0x001E87, 0x00025C,
0x001E81, 0x002C30, 0x001E83, 0x000259, 0x00214E, 0x00025B, 0x001E99, 0x000250,
0x000229, 0x00022B, 0x000225, 0x000227, 0x002C3D, 0x002C3C, 0x002C3F, 0x002C3E,
0x001F64, 0x002C68, 0x001F65, 0x002C6C, 0x0000B5, 0x00217C, 0x001F66, 0x001F61,
0x002C4C, 0x00217E, 0x002C6A, 0x00217F, 0x002C4D, 0x002C5D, 0x002C4F, 0x002C4E,
0x002C51, 0x002C50, 0x002C53, 0x002C52, 0x002C55, 0x002C54, 0x002C57, 0x002C56,
0x002C59, 0x002C58, 0x002C5B, 0x002C5A, 0x002175, 0x002C5C, 0x002177, 0x002C5E,
0x002179, 0x002171, 0x00217B, 0x00217A, 0x00217D, 0x002174, 0x002176, 0x002178,
0x0000E9, 0x0000E1, 0x0000EB, 0x0000E3, 0x0000ED, 0x0000E5, 0x0000EF, 0x0000E7,
0x002C61, 0x0000F1, 0x002C73, 0x0000F3, 0x0000F5, 0x001F62, 0x001F7C, 0x002C76,
0x002C66, 0x002C65, 0x0000F9, 0x0000FB, 0x001F7D, 0x0000FD, 0x001F78, 0x0000FF,
0x001F79, 0x001F7A, 0x001F7B, 0x001F74, 0x001F76, 0x001F70, 0x001F72, 0x000209,
0x00020B, 0x000205, 0x000207, 0x001F44, 0x000203, 0x001F40, 0x001F42, 0x000219,
0x00021B, 0x001F54, 0x001F56, 0x00A681, 0x00A683, 0x001F24, 0x001F26, 0x001F20,
0x001F22, 0x01E92C, 0x01E92E, 0x01E928, 0x01E92A, 0x001F30, 0x01E93C, 0x01E93E,
0x01E939, 0x01E93A, 0x00A74D, 0x00A74F, 0x0118CE, 0x0118C4, 0x0118C6, 0x0118C0,
0x002C89, 0x002C81, 0x002C8B, 0x002C83, 0x002C8D, 0x002C85, 0x002C8F, 0x002C87,
0x000111, 0x002C91, 0x000113, 0x002C93, 0x002C95, 0x000117, 0x0118C2, 0x000115,
0x000119, 0x00011B, 0x002C99, 0x002C9B, 0x0118D6, 0x002C9D, 0x0118D0, 0x002C9F,
0x0118D2, 0x000161, 0x001FF4, 0x000163, 0x00A729, 0x001FF6, 0x002CC7, 0x00028C,
0x00A725, 0x001FF2, 0x000289, 0x00028A, 0x00A73D, 0x00A739, 0x001FC6, 0x00A733,
0x001FD7, 0x001FD0, 0x001FD1, 0x001FD2, 0x002CD5, 0x000175, 0x001FD3, 0x001FAC,
0x00017E, 0x00017C, 0x00017A, 0x00017F, 0x001C85, 0x002CD9, 0x001C87, 0x001C88,
0x000171, 0x001FAD, 0x001FAE, 0x000173, 0x002CE1, 0x000165, 0x002CE3, 0x000167,
0x000177, 0x000169, 0x002CEC, 0x00016B, 0x002CEE, 0x00016D, 0x001FAF, 0x00016F,
0x001FA8, 0x001FA9, 0x001FAA, 0x001FAB, 0x001FA4, 0x001FA5, 0x001FA6, 0x001FA7,
0x001FA2, 0x001FA3, 0x001FBC, 0x001FBE, 0x00037B, 0x000377, 0x001FB4, 0x000371,
0x002D20, 0x002D21, 0x002D22, 0x002D23, 0x002D25, 0x002D04, 0x002D27, 0x002D06,
0x001FB6, 0x002D08, 0x001FB0, 0x002D0A, 0x002D24, 0x002D0C, 0x002D2D, 0x002D0E,
0x001FB1, 0x001FB2, 0x001FB3, 0x001F8C, 0x001F8D, 0x001F8E, 0x001F8F, 0x001F88,
0x001F8A, 0x010CED, 0x001F8B, 0x001F84, 0x001F85, 0x001F86, 0x001F87, 0x001F80,
0x002D11, 0x000180, 0x000183, 0x002D13, 0x000195, 0x002D05, 0x000185, 0x002D07,
0x002D17, 0x002D09, 0x000199, 0x002D0B, 0x000188, 0x002D0D, 0x00018C, 0x002D0F,
0x010CC5, 0x010CC4, 0x010CC7, 0x010CC6, 0x010CC9, 0x010CC8, 0x010CCB, 0x010CCA,
0x010CCD, 0x010CCC, 0x010CCF, 0x010CCE, 0x010CD1, 0x010CD0, 0x010CD3, 0x010CD2,
0x0001A1, 0x002D01, 0x0001A3, 0x002D03, 0x0001A5, 0x001F81, 0x001F82, 0x001F83,
0x010CD5, 0x0001A8, 0x010CD4, 0x001F9C, 0x010CE1, 0x010CF1, 0x010CE3, 0x010CE2,
0x010CE0, 0x0001B9, 0x010CE7, 0x010CEB, 0x0001B6, 0x002D15, 0x001F9D, 0x010CEA,
0x002D1E, 0x002D1C, 0x002D1A, 0x002D1F, 0x0001BD, 0x010CF0, 0x0001BF, 0x010CF2,
0x001F9E, 0x010CE5, 0x001F9F, 0x010CE4, 0x0001C5, 0x010CE9, 0x001F98, 0x0001C6,
0x0001C9, 0x0001C8, 0x0001CB, 0x010CEF, 0x001F99, 0x0001CC, 0x001F9A, 0x0001CE,
0x001F9B, 0x001F94, 0x001F95, 0x001F96, 0x001F97, 0x001F90, 0x001F91, 0x001F92,
0x001F93, 0x00A7A9, 0x00A7A5, 0x00A7A7, 0x0001DD, 0x0001DC, 0x0001DF, 0x00A7A1,
0x0001E1, 0x00A7A3, 0x0001E3, 0x00A7B5, 0x0001E5, 0x00A7B7, 0x0001E7, 0x00A78C,
0x00A797, 0x0003F8, 0x0001EB, 0x0001E9, 0x0001ED, 0x00A791, 0x0001EF, 0x0003F5,
0x0003F0, 0x0001F0, 0x0001F3, 0x0001F2, 0x0001F5, 0x0003F1, 0x0003F2, 0x0003F3,
0x0001F9, 0x0003CD, 0x0001FB, 0x0003CE, 0x0001FD, 0x0003C9, 0x0001FF, 0x0003CB,
0x0003C4, 0x0003C7, 0x0003C0, 0x0003C2, 0x0003C3, 0x0003DD, 0x0003DF, 0x010CEC,
0x010CEE, 0x010CE8, 0x010CE6, 0x002C48, 0x002C49, 0x002C4A, 0x000201, 0x002C4B,
0x000211, 0x002C44, 0x000213, 0x002C45, 0x000215, 0x002C46, 0x000217, 0x002C47,
0x002C40, 0x002C41, 0x002C42, 0x002C43, 0x0003BF, 0x010CC0, 0x010CC1, 0x010CC2,
0x010CC3, 0x010CDC, 0x010CDD, 0x010CDE, 0x010CDF, 0x010CD8, 0x010CD9, 0x010CDA,
0x010CDB, 0x010CD6, 0x010CD7, 0x002C38, 0x00022D, 0x002C39, 0x00022F, 0x002C3A,
0x002C3B, 0x002C34, 0x002C35, 0x002C36, 0x001D79, 0x001D7D, 0x002C37, 0x002C31,
0x002C32, 0x002C33, 0x00006C, 0x00006D, 0x00006E, 0x00006F, 0x000068, 0x000069,
0x00006A, 0x00006B, 0x00026C, 0x000064, 0x000065, 0x000247, 0x00AB53, 0x000066,
0x000249, 0x00024B, 0x000067, 0x000061, 0x00024D, 0x00026A, 0x00024F, 0x000062,
0x000251, 0x000063, 0x000253, 0x000252, 0x000078, 0x000254, 0x000257, 0x000256,
0x000079, 0x00007A, 0x000074, 0x000075, 0x000076, 0x000077, 0x00AB79, 0x00AB7B,
0x000261, 0x00AB74, 0x000263, 0x00AB75, 0x00AB76, 0x0118C1, 0x00AB77, 0x0118CF,
0x000269, 0x0118C5, 0x00026B, 0x0118C7, 0x00AB7A, 0x00AB7C, 0x00026F, 0x00AB70,
0x00AB7D, 0x00AB7F, 0x00AB78, 0x00AB7E, 0x000275, 0x000265, 0x00A643, 0x000260,
0x000271, 0x00AB71, 0x00AB72, 0x00A641, 0x00027D, 0x00AB73, 0x001C84, 0x001C86,
0x001C80, 0x000280, 0x000283, 0x000287, 0x00ABB1, 0x00AB90, 0x00ABB3, 0x00AB92,
0x00023F, 0x00AB94, 0x00028B, 0x00AB96, 0x00ABB0, 0x00AB98, 0x00ABB9, 0x00AB9A,
0x00020D, 0x00020F, 0x00A665, 0x000292, 0x00A667, 0x00029D, 0x00021D, 0x00021F,
0x001C81, 0x001C82, 0x001C83, 0x002CF3, 0x002CCD, 0x00029E, 0x002CCF, 0x000288,
0x00AB8C, 0x00AB8D, 0x00AB8E, 0x00AB8F, 0x00ABA1, 0x00AB91, 0x00A66D, 0x00AB93,
0x00A647, 0x00AB95, 0x0118CD, 0x00AB97, 0x0118C3, 0x00AB99, 0x000223, 0x00AB9B,
0x002CC9, 0x0118C9, 0x00A64B, 0x0118CB, 0x0118D9, 0x00A645, 0x0118D3, 0x0118DB,
0x0118D1, 0x0118D4, 0x0118DA, 0x000233, 0x002CCB, 0x001E15, 0x002CC5, 0x000231,
0x0118DD, 0x002CC1, 0x0118DF, 0x001E0D, 0x0118D5, 0x00A649, 0x001E0F, 0x00A657,
0x0118C8, 0x0118CC, 0x00A669, 0x0118CA, 0x002CC3, 0x00A64D, 0x00A663, 0x002CDD,
0x001E13, 0x00A64F, 0x001E17, 0x00A661, 0x0118D8, 0x001E11, 0x00A66B, 0x0118D7,
0x0118DC, 0x002CDF, 0x0118DE, 0x002CDB, 0x00A653, 0x002CD7, 0x00A655, 0x002CD1,
0x00A65D, 0x00A659, 0x00A651, 0x00A65B, 0x002CD3, 0x002CAD, 0x002CAF, 0x00A65F,
0x002CA9, 0x002CAB, 0x002CA5, 0x002CA7, 0x00A687, 0x001E19, 0x001E37, 0x00A685,
0x00A689, 0x002CA1, 0x00A68B, 0x002CA3, 0x00A68D, 0x002CBD, 0x00A68F, 0x002CBF,
0x002CB9, 0x001E1B, 0x001E35, 0x00023C, 0x001E41, 0x002CBB, 0x001E43, 0x002CB5,
0x001E45, 0x002CB7, 0x001E47, 0x002CB1, 0x001E49, 0x002CB3, 0x001E4B, 0x0000EC,
0x001E4D, 0x0000EE, 0x001E4F, 0x0000E8, 0x0000EA, 0x0000E4, 0x0000E6, 0x0000E0,
0x001E55, 0x0000E2, 0x001E57, 0x0000FC, 0x001E59, 0x0000FE, 0x001E5B, 0x0000F8,
0x001E5D, 0x0000FA, 0x001E5F, 0x0000F4, 0x0000F6, 0x002C97, 0x0000F0, 0x0000F2,
0x001E65, 0x0000DF, 0x001E67, 0x00ABAC, 0x001E69, 0x001E6B, 0x001E39, 0x00ABAD,
0x001E6D, 0x00ABAE, 0x001E6F, 0x00ABAF, 0x001E71, 0x001E73, 0x00A697, 0x00ABA8,
0x00ABA9, 0x00ABAA, 0x00ABAB, 0x00ABA4, 0x001E33, 0x00ABA5, 0x00ABA6, 0x00ABA7,
0x00ABA0, 0x00ABA2, 0x001E31, 0x00ABA3, 0x001ED1, 0x00ABBC, 0x001EDB, 0x00A693,
0x00ABBD, 0x000345, 0x001ED5, 0x00ABBE, 0x00ABBF, 0x001E8B, 0x00ABB8, 0x001EBD,
0x001E8D, 0x001E8F, 0x00A691, 0x001EBF, 0x001E91, 0x00ABBA, 0x001E93, 0x00ABBB,
0x001E95, 0x00ABB4, 0x001E97, 0x001E96, 0x00ABB5, 0x001E98, 0x001E9B, 0x001E9A,
0x00ABB6, 0x00ABB7, 0x00ABB2, 0x00AB88, 0x001EA1, 0x00AB89, 0x001EEF, 0x00A695,
0x001EA5, 0x001EA3, 0x001EA7, 0x00AB8A, 0x00A699, 0x00AB8B, 0x00A69B, 0x00AB84,
0x001EAD, 0x00A741, 0x001EAF, 0x00A743, 0x001EB1, 0x00A761, 0x001EB3, 0x00A74B,
0x00AB85, 0x000373, 0x00AB86, 0x00AB87, 0x001EB9, 0x001EA9, 0x00AB80, 0x001ED9,
0x001EB5, 0x00037C, 0x00AB81, 0x001EED, 0x00AB82, 0x001ED7, 0x001EE1, 0x00037D,
0x001EC5, 0x001EE5, 0x001EC7, 0x001EE7, 0x001EC9, 0x00A75D, 0x001ECB, 0x001EEB,
0x001EE9, 0x00AB83, 0x00A723, 0x00A76D, 0x00A765, 0x00A727, 0x001ED3, 0x0024E5,
0x00A72D, 0x000390, 0x001EFD, 0x00A76F, 0x001EFF, 0x00A77C, 0x00A72F, 0x00A72B,
0x0013FD, 0x0003D9, 0x0013FC, 0x00A737, 0x0013F9, 0x0013F8, 0x0013FB, 0x0013FA,
0x0003E5, 0x00A77F, 0x00A73B, 0x00A73F, 0x0003E7, 0x00A735, 0x00A763, 0x001EE3,
0x0003AC, 0x00A745, 0x00A749, 0x00A747, 0x0003AD, 0x0003BD, 0x0003AF, 0x0003AE,
0x0003B1, 0x0003B0, 0x0003B3, 0x0003B2, 0x0003B5, 0x0003B4, 0x0003B7, 0x0003B6,
0x0003B9, 0x0003B8, 0x0003BB, 0x0003BA, 0x00A75F, 0x0003BC, 0x001F06, 0x0003BE,
0x00A759, 0x0003D1, 0x00A75B, 0x0003D0, 0x00A755, 0x0003D5, 0x0003ED, 0x00A757,
0x0003EF, 0x0003E9, 0x00A767, 0x0003DB, 0x00A751, 0x01E925, 0x01E927, 0x0003E3,
0x0003C1, 0x001F11, 0x01E923, 0x001F13, 0x0003E1, 0x00A769, 0x00A76B, 0x0003D6,
0x0003C6, 0x0003C5, 0x001F15, 0x0003D7, 0x010429, 0x01042B, 0x01E936, 0x00A753,
0x01042D, 0x0003C8, 0x01042F, 0x0003CC, 0x01043A, 0x010430, 0x00A77A, 0x010432,
0x010438, 0x010434, 0x0003CA, 0x010436, 0x01E943, 0x001F35, 0x001F37, 0x01E941,
0x01043B, 0x01043F, 0x001F33, 0x01043D, 0x0003EB, 0x010440, 0x010443, 0x0003FB,
0x001F10, 0x001F14, 0x010445, 0x001F12, 0x001F25, 0x001F03, 0x001F27, 0x001F21,
0x010448, 0x001F01, 0x01044C, 0x001F02, 0x00A783, 0x01E93D, 0x001F45, 0x00A793,
0x00A787, 0x00A781, 0x01E92D, 0x001F00, 0x001F53, 0x01E922, 0x01E93F, 0x001F51,
0x001F55, 0x01E926, 0x001F57, 0x01E929, 0x00A799, 0x01E938, 0x00A785, 0x01E92F,
0x0024D1, 0x000438, 0x0024D3, 0x01E92B, 0x0024D5, 0x01E933, 0x0024D7, 0x00A79B,
0x0024D9, 0x01E931, 0x0024DB, 0x01E932, 0x0024DD, 0x00043A, 0x0024DF, 0x00043B,
0x0024E1, 0x01E93B, 0x0024E3, 0x01E930, 0x001F31, 0x001F32, 0x001F23, 0x01E937,
0x000431, 0x001F36, 0x000433, 0x000434, 0x000435, 0x01E934, 0x000437, 0x000436,
0x000439, 0x000430, 0x000432, 0x01E935, 0x00FF45, 0x00043C, 0x00FF4F, 0x0024E7,
0x00A79D, 0x000440, 0x00FF49, 0x000442, 0x00A79F, 0x000444, 0x000447, 0x000446,
0x000449, 0x001F89, 0x0104DD, 0x0104DF, 0x00044D, 0x0104D9, 0x00044F, 0x0104D8,
0x000451, 0x000450, 0x000453, 0x01E924, 0x00AB9C, 0x00AB9D, 0x00AB9E, 0x00FF4D,
0x000459, 0x00AB9F, 0x002D00, 0x00045A, 0x00045D, 0x00045C, 0x00045F, 0x001FA1,
0x000461, 0x001FA0, 0x000463, 0x001F60, 0x000465, 0x002D02, 0x000467, 0x0104F7,
0x00FF41, 0x00046B, 0x00FF43, 0x000469, 0x00046D, 0x00046F, 0x00FF47, 0x001F07,
0x000471, 0x001FB7, 0x000473, 0x001F34, 0x000475, 0x001F04, 0x000477, 0x00FF58,
0x000479, 0x00FF57, 0x00047B, 0x001F05, 0x00FF55, 0x001FC2, 0x00047F, 0x00047D,
0x00FF59, 0x001FC4, 0x001FC7, 0x001FC3, 0x001FE0, 0x00FF4B, 0x001F41, 0x001F43,
0x001FE4, 0x0104DB, 0x001FE6, 0x00FF53, 0x00048D, 0x00FF42, 0x00048F, 0x00FF51,
0x001F63, 0x01E942, 0x00FF44, 0x001FD6, 0x0104E1, 0x01E940, 0x0104E3, 0x001FCC,
0x0104E5, 0x0104EC, 0x0104E7, 0x0104EF, 0x0104E9, 0x0104ED, 0x0104EB, 0x0104EA,
0x001FE5, 0x0104E8, 0x001FE7, 0x0104EE, 0x001FE1, 0x0004A1, 0x001F67, 0x001FE3,
0x001F71, 0x001F73, 0x001FE2, 0x0004A3, 0x0104F9, 0x001FF3, 0x0104FB, 0x001FF7,
0x0004B1, 0x001F52, 0x0004B3, 0x0104DA, 0x0004B5, 0x001F50, 0x0004B7, 0x001F75,
0x0004B9, 0x001FFC, 0x0004BB, 0x001F77, 0x0004BD, 0x002D1D, 0x0004BF, 0x002D18,
0x0004CC, 0x002D19, 0x002D1B, 0x002D14, 0x0004CE, 0x0004C4, 0x002D16, 0x0004C6,
0x0004CF, 0x0004C8, 0x002D10, 0x0004CA, 0x002D12, 0x00014D, 0x00014F, 0x00048B,
0x000148, 0x000149, 0x00014B, 0x000144, 0x000146, 0x000140, 0x000142, 0x00015D,
0x00015F, 0x000159, 0x000491, 0x000493, 0x00015B, 0x000155, 0x000157, 0x000151,
0x0004E1, 0x000153, 0x0004E3, 0x00012D, 0x00012F, 0x000129, 0x00012B, 0x000125,
0x000127, 0x000121, 0x000123, 0x00013C, 0x00013E, 0x00013A, 0x000135, 0x000137,
0x000131, 0x0004F3, 0x000133, 0x0004F1, 0x00010D, 0x00010F, 0x000109, 0x00010B,
0x0004E9, 0x000105, 0x000107, 0x000101, 0x0004FD, 0x0004FF, 0x0004ED, 0x000103,
0x000501, 0x00011D, 0x000503, 0x00011F, 0x000505, 0x00044C, 0x000507, 0x00044E,
0x000509, 0x000448, 0x00050B, 0x00044A, 0x00050D, 0x00050F, 0x00044B, 0x000445,
0x000511, 0x000441, 0x000513, 0x000443, 0x000515, 0x00045E, 0x000517, 0x000458,
0x000519, 0x00045B, 0x00051B, 0x000454, 0x00051D, 0x000455, 0x00051F, 0x000456,
0x000521, 0x000457, 0x000523, 0x000452, 0x000525, 0x000527, 0x0001D8, 0x0001DA,
0x000529, 0x0001D4, 0x00052B, 0x0001D6, 0x0001D0, 0x00056D, 0x0001D2, 0x00056C,
0x0001AD, 0x00043D, 0x00043E, 0x00043F, 0x002170, 0x002172, 0x002173, 0x0001B4,
0x0001B0, 0x01044D, 0x01044E, 0x01044F, 0x010449, 0x01044A, 0x01044B, 0x00052F,
0x010444, 0x010446, 0x010447, 0x010441, 0x010442, 0x00019E, 0x00019A, 0x0004EF,
0x0004EB, 0x0004E5, 0x000192, 0x00056E, 0x0004E7, 0x01042C, 0x01042E, 0x010428,
0x01042A, 0x0004F9, 0x0004FB, 0x0004F5, 0x0004F7, 0x01043C, 0x01043E, 0x010439,
0x010435, 0x010437, 0x010431, 0x010433, 0x0004C2, 0x0004DD, 0x0004DF, 0x0004D9,
0x0004DB, 0x00056F, 0x0004D5, 0x0004D7, 0x0004D1, 0x0004D3, 0x0004AD, 0x0004AF,
0x0004A9, 0x0004AB, 0x0004A5, 0x0004A7, 0x0104E4, 0x0104E6, 0x0104E0, 0x0104E2,
0x00FB14, 0x00FB16, 0x0104F8, 0x0104FA, };
/* indexes */
const uint16_t NU_TOUPPER_VALUES_I[] = {
0x0714, 0x0719, 0x071E, 0x0700, 0x0705, 0x070A, 0x070F, 0x0452, 0x0470, 0x0473,
0x046A, 0x046D, 0x05AE, 0x0464, 0x05B4, 0x0467, 0x05BA, 0x069C, 0x137B, 0x06A6,
0x0563, 0x0566, 0x0569, 0x056C, 0x0557, 0x055A, 0x055D, 0x0548, 0x0560, 0x054E,
0x0551, 0x0554, 0x059F, 0x05A2, 0x05A5, 0x05A8, 0x0593, 0x0596, 0x0599, 0x059C,
0x156D, 0x157B, 0x1573, 0x1570, 0x0587, 0x156A, 0x058A, 0x157E, 0x058D, 0x0590,
0x057B, 0x057E, 0x0581, 0x1577, 0x0584, 0x0D78, 0x0DDC, 0x0DE0, 0x1581, 0x0DCC,
0x158B, 0x0DD4, 0x1595, 0x0DBC, 0x0DC4, 0x09D7, 0x09DB, 0x0A0F, 0x0A13, 0x0A07,
0x0A0B, 0x09FF, 0x0A03, 0x0DAC, 0x0DB4, 0x0D9C, 0x0DA4, 0x0D8C, 0x0D94, 0x0D7C,
0x0D84, 0x09B7, 0x09BB, 0x096F, 0x0973, 0x0967, 0x096B, 0x095F, 0x0963, 0x0957,
0x095B, 0x098F, 0x0993, 0x098B, 0x0927, 0x092B, 0x091F, 0x0923, 0x0917, 0x091B,
0x094F, 0x0953, 0x0BA1, 0x0BA5, 0x0B99, 0x0B9D, 0x0B91, 0x0B95, 0x0B49, 0x0B4D,
0x05B7, 0x05BD, 0x0021, 0x0025, 0x05AB, 0x0023, 0x05B1, 0x001F, 0x0B31, 0x0B35,
0x0B69, 0x0B6D, 0x1326, 0x132E, 0x1316, 0x131E, 0x130E, 0x0288, 0x0284, 0x0B05,
0x135E, 0x1346, 0x134E, 0x1336, 0x133E, 0x0B25, 0x02A1, 0x0B1D, 0x0A27, 0x023E,
0x0A1F, 0x0242, 0x0A23, 0x0272, 0x0A17, 0x0DE4, 0x0A1B, 0x026C, 0x0D34, 0x026F,
0x138C, 0x0254, 0x0225, 0x0228, 0x021F, 0x0222, 0x0E18, 0x0E14, 0x0E20, 0x0E1C,
0x0C61, 0x0EAA, 0x0C65, 0x0EB2, 0x0035, 0x0D68, 0x0C69, 0x0C55, 0x0E54, 0x0D70,
0x0EAE, 0x0D74, 0x0E58, 0x0E98, 0x0E60, 0x0E5C, 0x0E68, 0x0E64, 0x0E70, 0x0E6C,
0x0E78, 0x0E74, 0x0E80, 0x0E7C, 0x0E88, 0x0E84, 0x0E90, 0x0E8C, 0x0D4C, 0x0E94,
0x0D54, 0x0E9C, 0x0D5C, 0x0D3C, 0x0D64, 0x0D60, 0x0D6C, 0x0D48, 0x0D50, 0x0D58,
0x0053, 0x003B, 0x0059, 0x0041, 0x005F, 0x0047, 0x0065, 0x004D, 0x0EA0, 0x006B,
0x0EB6, 0x0071, 0x0077, 0x0C59, 0x0CA1, 0x0EBA, 0x0EA7, 0x0EA4, 0x0080, 0x0086,
0x0CA5, 0x008C, 0x0C91, 0x0092, 0x0C95, 0x0C99, 0x0C9D, 0x0C81, 0x0C89, 0x0C71,
0x0C79, 0x01F8, 0x01FB, 0x01F2, 0x01F5, 0x0C39, 0x01EF, 0x0C29, 0x0C31, 0x0210,
0x0213, 0x13A0, 0x13A7, 0x108E, 0x1092, 0x0BF9, 0x0C01, 0x0BE9, 0x0BF1, 0x0A6D,
0x0A77, 0x0A59, 0x0A63, 0x0C09, 0x0AC1, 0x0ACB, 0x0AB2, 0x0AB7, 0x1116, 0x111A,
0x0881, 0x084F, 0x0859, 0x083B, 0x0ECE, 0x0EBE, 0x0ED2, 0x0EC2, 0x0ED6, 0x0EC6,
0x0EDA, 0x0ECA, 0x00AD, 0x0EDE, 0x00B0, 0x0EE2, 0x0EE6, 0x00B6, 0x0845, 0x00B3,
0x00B9, 0x00BC, 0x0EEE, 0x0EF2, 0x08A9, 0x0EF6, 0x088B, 0x0EFA, 0x0895, 0x0121,
0x1554, 0x0124, 0x10D2, 0x1559, 0x0F4A, 0x02C1, 0x10CA, 0x1549, 0x02B8, 0x02BB,
0x10F6, 0x10EE, 0x14FF, 0x10E2, 0x1523, 0x0D1C, 0x0D20, 0x1510, 0x0F66, 0x013F,
0x1517, 0x14B6, 0x014B, 0x0148, 0x0145, 0x014E, 0x0902, 0x0F6E, 0x0908, 0x090B,
0x0139, 0x14BC, 0x14C2, 0x013C, 0x0F7E, 0x0127, 0x0F82, 0x012A, 0x0142, 0x012D,
0x0F86, 0x0130, 0x0F8A, 0x0133, 0x14C8, 0x0136, 0x149E, 0x14A4, 0x14AA, 0x14B0,
0x1486, 0x148C, 0x1492, 0x1498, 0x147A, 0x1480, 0x14EA, 0x0D15, 0x02DB, 0x02D8,
0x14D9, 0x02D2, 0x1012, 0x1016, 0x101A, 0x101E, 0x1026, 0x0FA2, 0x102A, 0x0FAA,
0x14DE, 0x0FB2, 0x0D09, 0x0FBA, 0x1022, 0x0FC2, 0x102E, 0x0FCA, 0x0D0D, 0x14CE,
0x14D4, 0x13F6, 0x13FC, 0x1402, 0x1408, 0x13DE, 0x13EA, 0x081D, 0x13F0, 0x13C6,
0x13CC, 0x13D2, 0x13D8, 0x13AE, 0x0FD6, 0x0150, 0x0153, 0x0FDE, 0x0162, 0x0FA6,
0x0156, 0x0FAE, 0x0FEE, 0x0FB6, 0x0165, 0x0FBE, 0x0159, 0x0FC6, 0x015C, 0x0FCE,
0x0755, 0x0750, 0x075F, 0x075A, 0x0769, 0x0764, 0x0773, 0x076E, 0x077D, 0x0778,
0x0787, 0x0782, 0x0791, 0x078C, 0x079B, 0x0796, 0x016E, 0x0F96, 0x0171, 0x0F9E,
0x0174, 0x13B4, 0x13BA, 0x13C0, 0x07A5, 0x0177, 0x07A0, 0x1456, 0x07E1, 0x0831,
0x07EB, 0x07E6, 0x07DC, 0x0186, 0x07FF, 0x0813, 0x0183, 0x0FE6, 0x145C, 0x080E,
0x100A, 0x1002, 0x0FFA, 0x100E, 0x0189, 0x082C, 0x018C, 0x0836, 0x1462, 0x07F5,
0x1468, 0x07F0, 0x018F, 0x0809, 0x143E, 0x0192, 0x0198, 0x0195, 0x019B, 0x0827,
0x1444, 0x019E, 0x144A, 0x01A1, 0x1450, 0x1426, 0x142C, 0x1432, 0x1438, 0x140E,
0x1414, 0x141A, 0x1420, 0x11AA, 0x11A2, 0x11A6, 0x01B9, 0x01B6, 0x01BC, 0x119A,
0x01BF, 0x119E, 0x01C2, 0x11AE, 0x01C5, 0x11B2, 0x01C8, 0x117A, 0x1186, 0x038C,
0x01CE, 0x01CB, 0x01D1, 0x117E, 0x01D4, 0x0389, 0x037D, 0x1369, 0x01DA, 0x01D7,
0x01DD, 0x0380, 0x0383, 0x0386, 0x01E0, 0x0344, 0x01E3, 0x0347, 0x01E6, 0x0338,
0x01E9, 0x033E, 0x0329, 0x0332, 0x031D, 0x0323, 0x0326, 0x035F, 0x0362, 0x0818,
0x0822, 0x0804, 0x07FA, 0x0E44, 0x0E48, 0x0E4C, 0x01EC, 0x0E50, 0x0204, 0x0E34,
0x0207, 0x0E38, 0x020A, 0x0E3C, 0x020D, 0x0E40, 0x0E24, 0x0E28, 0x0E2C, 0x0E30,
0x031A, 0x073C, 0x0741, 0x0746, 0x074B, 0x07C8, 0x07CD, 0x07D2, 0x07D7, 0x07B4,
0x07B9, 0x07BE, 0x07C3, 0x07AA, 0x07AF, 0x0E04, 0x022B, 0x0E08, 0x022E, 0x0E0C,
0x0E10, 0x0DF4, 0x0DF8, 0x0DFC, 0x090F, 0x0913, 0x0E00, 0x0DE8, 0x0DEC, 0x0DF0,
0x0017, 0x0019, 0x001B, 0x001D, 0x000F, 0x0011, 0x0013, 0x0015, 0x0296, 0x0007,
0x0009, 0x0245, 0x11B6, 0x000B, 0x0248, 0x024B, 0x000D, 0x0001, 0x024E, 0x028E,
0x0251, 0x0003, 0x0258, 0x0005, 0x0260, 0x025C, 0x002F, 0x0263, 0x0269, 0x0266,
0x0031, 0x0033, 0x0027, 0x0029, 0x002B, 0x002D, 0x11DE, 0x11E6, 0x0279, 0x11CA,
0x027D, 0x11CE, 0x11D2, 0x0840, 0x11D6, 0x0886, 0x028B, 0x0854, 0x0292, 0x085E,
0x11E2, 0x11EA, 0x029A, 0x11BA, 0x11EE, 0x11F6, 0x11DA, 0x11F2, 0x02A4, 0x0280,
0x1036, 0x0276, 0x029D, 0x11BE, 0x11C2, 0x1032, 0x02A7, 0x11C6, 0x08FF, 0x0905,
0x08F3, 0x02AB, 0x02AE, 0x02B1, 0x12BE, 0x123A, 0x12C6, 0x1242, 0x023A, 0x124A,
0x02BE, 0x1252, 0x12BA, 0x125A, 0x12DE, 0x1262, 0x01FE, 0x0201, 0x107A, 0x02C4,
0x107E, 0x02C7, 0x0216, 0x0219, 0x08F6, 0x08F9, 0x08FC, 0x0F8E, 0x0F56, 0x02CB,
0x0F5A, 0x02B5, 0x122A, 0x122E, 0x1232, 0x1236, 0x127E, 0x123E, 0x108A, 0x1246,
0x103E, 0x124E, 0x087C, 0x1256, 0x084A, 0x125E, 0x021C, 0x1266, 0x0F4E, 0x0868,
0x1046, 0x0872, 0x08B8, 0x103A, 0x089A, 0x08C2, 0x0890, 0x089F, 0x08BD, 0x0234,
0x0F52, 0x093F, 0x0F46, 0x0231, 0x08CC, 0x0F3E, 0x08D6, 0x092F, 0x08A4, 0x1042,
0x0933, 0x105E, 0x0863, 0x0877, 0x1082, 0x086D, 0x0F42, 0x104A, 0x1076, 0x0F76,
0x093B, 0x104E, 0x0943, 0x1072, 0x08B3, 0x0937, 0x1086, 0x08AE, 0x08C7, 0x0F7A,
0x08D1, 0x0F72, 0x1056, 0x0F6A, 0x105A, 0x0F5E, 0x106A, 0x1062, 0x1052, 0x1066,
0x0F62, 0x0F16, 0x0F1A, 0x106E, 0x0F0E, 0x0F12, 0x0F06, 0x0F0A, 0x109A, 0x0947,
0x0983, 0x1096, 0x109E, 0x0EFE, 0x10A2, 0x0F02, 0x10A6, 0x0F36, 0x10AA, 0x0F3A,
0x0F2E, 0x094B, 0x097F, 0x0237, 0x0997, 0x0F32, 0x099B, 0x0F26, 0x099F, 0x0F2A,
0x09A3, 0x0F1E, 0x09A7, 0x0F22, 0x09AB, 0x005C, 0x09AF, 0x0062, 0x09B3, 0x0050,
0x0056, 0x0044, 0x004A, 0x0038, 0x09BF, 0x003E, 0x09C3, 0x0089, 0x09C7, 0x008F,
0x09CB, 0x007D, 0x09CF, 0x0083, 0x09D3, 0x0074, 0x007A, 0x0EEA, 0x0068, 0x006E,
0x09DF, 0x1362, 0x09E3, 0x12AA, 0x09E7, 0x09EB, 0x0987, 0x12AE, 0x09EF, 0x12B2,
0x09F3, 0x12B6, 0x09F7, 0x09FB, 0x10BA, 0x129A, 0x129E, 0x12A2, 0x12A6, 0x128A,
0x097B, 0x128E, 0x1292, 0x1296, 0x127A, 0x1282, 0x0977, 0x1286, 0x0B51, 0x12EA,
0x0B65, 0x10B2, 0x12EE, 0x02CF, 0x0B59, 0x12F2, 0x12F6, 0x0A2B, 0x12DA, 0x0B29,
0x0A2F, 0x0A33, 0x10AE, 0x0B2D, 0x0A37, 0x12E2, 0x0A81, 0x12E6, 0x0AE9, 0x12CA,
0x1384, 0x1380, 0x12CE, 0x1388, 0x0AED, 0x1390, 0x12D2, 0x12D6, 0x12C2, 0x121A,
0x0AF1, 0x121E, 0x0B8D, 0x10B6, 0x0AF9, 0x0AF5, 0x0AFD, 0x1222, 0x10BE, 0x1226,
0x10C2, 0x120A, 0x0B09, 0x10FE, 0x0B0D, 0x1102, 0x0B11, 0x113E, 0x0B15, 0x1112,
0x120E, 0x02D5, 0x1212, 0x1216, 0x0B21, 0x0B01, 0x11FA, 0x0B61, 0x0B19, 0x02DE,
0x11FE, 0x0B89, 0x1202, 0x0B5D, 0x0B71, 0x02E1, 0x0B39, 0x0B79, 0x0B3D, 0x0B7D,
0x0B41, 0x1136, 0x0B45, 0x0B85, 0x0B81, 0x1206, 0x10C6, 0x1156, 0x1146, 0x10CE,
0x0B55, 0x0DD0, 0x10DA, 0x136D, 0x0BA9, 0x115A, 0x0BAD, 0x1162, 0x10DE, 0x10D6,
0x08EF, 0x0359, 0x08EB, 0x10EA, 0x08DF, 0x08DB, 0x08E7, 0x08E3, 0x036B, 0x1166,
0x10F2, 0x10FA, 0x036E, 0x10E6, 0x1142, 0x0B75, 0x02E4, 0x1106, 0x110E, 0x110A,
0x02E7, 0x0314, 0x02ED, 0x02EA, 0x02F0, 0x1374, 0x02F6, 0x02F3, 0x02FC, 0x02F9,
0x0302, 0x02FF, 0x0308, 0x0305, 0x030E, 0x030B, 0x113A, 0x0311, 0x0BC9, 0x0317,
0x112E, 0x034D, 0x1132, 0x034A, 0x1126, 0x0350, 0x0377, 0x112A, 0x037A, 0x0371,
0x114A, 0x035C, 0x111E, 0x0A4A, 0x0A54, 0x0368, 0x0320, 0x0BD5, 0x0A40, 0x0BDD,
0x0365, 0x114E, 0x1152, 0x0353, 0x032F, 0x032C, 0x0BE5, 0x0356, 0x05C5, 0x05CF,
0x0AA3, 0x1122, 0x05D9, 0x0335, 0x05E3, 0x0341, 0x061A, 0x05E8, 0x115E, 0x05F2,
0x0610, 0x05FC, 0x033B, 0x0606, 0x0AE4, 0x0C1D, 0x0C25, 0x0ADA, 0x061F, 0x0633,
0x0C15, 0x0629, 0x0374, 0x0638, 0x0647, 0x038F, 0x0BD1, 0x0BE1, 0x0651, 0x0BD9,
0x0BFD, 0x0BBD, 0x0C05, 0x0BED, 0x0660, 0x0BB5, 0x0674, 0x0BB9, 0x116E, 0x0AC6,
0x0C3D, 0x1182, 0x1176, 0x116A, 0x0A72, 0x0BB1, 0x0C45, 0x0A3B, 0x0AD0, 0x0C41,
0x0C49, 0x0A4F, 0x0C4D, 0x0A5E, 0x118A, 0x0AAD, 0x1172, 0x0A7C, 0x0D80, 0x03AA,
0x0D88, 0x0A68, 0x0D90, 0x0A94, 0x0D98, 0x118E, 0x0DA0, 0x0A8A, 0x0DA8, 0x0A8F,
0x0DB0, 0x03B0, 0x0DB8, 0x03B3, 0x0DC0, 0x0ABC, 0x0DC8, 0x0A85, 0x0C0D, 0x0C11,
0x0BF5, 0x0AA8, 0x0395, 0x0C21, 0x039B, 0x039E, 0x03A1, 0x0A99, 0x03A7, 0x03A4,
0x03AD, 0x0392, 0x0398, 0x0A9E, 0x130A, 0x03B6, 0x1332, 0x0DD8, 0x1192, 0x03C2,
0x131A, 0x03C8, 0x1196, 0x03CE, 0x03D7, 0x03D4, 0x03DD, 0x13E4, 0x06A1, 0x06AB,
0x03E9, 0x068D, 0x03EF, 0x0688, 0x03F5, 0x03F2, 0x03FB, 0x0A45, 0x126A, 0x126E,
0x1272, 0x132A, 0x040D, 0x1276, 0x0F92, 0x0410, 0x0419, 0x0416, 0x041F, 0x1474,
0x0422, 0x146E, 0x0425, 0x0C51, 0x0428, 0x0F9A, 0x042B, 0x0723, 0x12FA, 0x0431,
0x1302, 0x042E, 0x0434, 0x0437, 0x1312, 0x0BCD, 0x043A, 0x14E3, 0x043D, 0x0C19,
0x0440, 0x0BC1, 0x0443, 0x1356, 0x0446, 0x1352, 0x0449, 0x0BC5, 0x134A, 0x14EF,
0x044F, 0x044C, 0x135A, 0x14FA, 0x1504, 0x14F5, 0x0D24, 0x1322, 0x0C2D, 0x0C35,
0x1538, 0x0697, 0x153D, 0x1342, 0x0458, 0x12FE, 0x045B, 0x133A, 0x0C5D, 0x0ADF,
0x1306, 0x151E, 0x06B5, 0x0AD5, 0x06BF, 0x150B, 0x06C9, 0x06EC, 0x06D3, 0x06FB,
0x06DD, 0x06F1, 0x06E7, 0x06E2, 0x0D2C, 0x06D8, 0x1542, 0x06F6, 0x0D28, 0x0476,
0x0C6D, 0x1531, 0x0C75, 0x0C7D, 0x152A, 0x0479, 0x072D, 0x154F, 0x0737, 0x155E,
0x048E, 0x1399, 0x0491, 0x0692, 0x0494, 0x1394, 0x0497, 0x0C85, 0x049A, 0x1565,
0x049D, 0x0C8D, 0x04A0, 0x1006, 0x04A3, 0x0FF2, 0x04B5, 0x0FF6, 0x0FFE, 0x0FE2,
0x04B8, 0x04A9, 0x0FEA, 0x04AC, 0x04BB, 0x04AF, 0x0FD2, 0x04B2, 0x0FDA, 0x0103,
0x0106, 0x0455, 0x00FD, 0x1365, 0x0100, 0x00F7, 0x00FA, 0x00F1, 0x00F4, 0x011B,
0x011E, 0x0115, 0x045E, 0x0461, 0x0118, 0x010F, 0x0112, 0x0109, 0x04D6, 0x010C,
0x04D9, 0x00D7, 0x00DA, 0x00D1, 0x00D4, 0x00CB, 0x00CE, 0x00C5, 0x00C8, 0x00EB,
0x00EE, 0x00E8, 0x00E2, 0x00E5, 0x00DD, 0x04F1, 0x00DF, 0x04EE, 0x00A7, 0x00AA,
0x00A1, 0x00A4, 0x04E2, 0x009B, 0x009E, 0x0095, 0x0500, 0x0503, 0x04E8, 0x0098,
0x0506, 0x00BF, 0x0509, 0x00C2, 0x050C, 0x03E6, 0x050F, 0x03EC, 0x0512, 0x03DA,
0x0515, 0x03E0, 0x0518, 0x051B, 0x03E3, 0x03D1, 0x051E, 0x03C5, 0x0521, 0x03CB,
0x0524, 0x041C, 0x0527, 0x040A, 0x052A, 0x0413, 0x052D, 0x03FE, 0x0530, 0x0401,
0x0533, 0x0404, 0x0536, 0x0407, 0x0539, 0x03F8, 0x053C, 0x053F, 0x01B0, 0x01B3,
0x0542, 0x01AA, 0x0545, 0x01AD, 0x01A4, 0x0572, 0x01A7, 0x056F, 0x017A, 0x03B9,
0x03BC, 0x03BF, 0x0D38, 0x0D40, 0x0D44, 0x0180, 0x017D, 0x0679, 0x067E, 0x0683,
0x0665, 0x066A, 0x066F, 0x054B, 0x064C, 0x0656, 0x065B, 0x063D, 0x0642, 0x016B,
0x0168, 0x04EB, 0x04E5, 0x04DC, 0x015F, 0x0575, 0x04DF, 0x05D4, 0x05DE, 0x05C0,
0x05CA, 0x04FA, 0x04FD, 0x04F4, 0x04F7, 0x0624, 0x062E, 0x0615, 0x0601, 0x060B,
0x05ED, 0x05F7, 0x04A6, 0x04D0, 0x04D3, 0x04CA, 0x04CD, 0x0578, 0x04C4, 0x04C7,
0x04BE, 0x04C1, 0x0488, 0x048B, 0x0482, 0x0485, 0x047C, 0x047F, 0x06C4, 0x06CE,
0x06B0, 0x06BA, 0x1586, 0x1590, 0x0728, 0x0732, };
const uint8_t NU_TOUPPER_COMBINED[] = {
0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46,
0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4C,
0x00, 0x4D, 0x00, 0x4E, 0x00, 0x4F, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52,
0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58,
0x00, 0x59, 0x00, 0x5A, 0x00, 0xCE, 0x9C, 0x00, 0xC3, 0x80, 0x00, 0xC3,
0x81, 0x00, 0xC3, 0x82, 0x00, 0xC3, 0x83, 0x00, 0xC3, 0x84, 0x00, 0xC3,
0x85, 0x00, 0xC3, 0x86, 0x00, 0xC3, 0x87, 0x00, 0xC3, 0x88, 0x00, 0xC3,
0x89, 0x00, 0xC3, 0x8A, 0x00, 0xC3, 0x8B, 0x00, 0xC3, 0x8C, 0x00, 0xC3,
0x8D, 0x00, 0xC3, 0x8E, 0x00, 0xC3, 0x8F, 0x00, 0xC3, 0x90, 0x00, 0xC3,
0x91, 0x00, 0xC3, 0x92, 0x00, 0xC3, 0x93, 0x00, 0xC3, 0x94, 0x00, 0xC3,
0x95, 0x00, 0xC3, 0x96, 0x00, 0xC3, 0x98, 0x00, 0xC3, 0x99, 0x00, 0xC3,
0x9A, 0x00, 0xC3, 0x9B, 0x00, 0xC3, 0x9C, 0x00, 0xC3, 0x9D, 0x00, 0xC3,
0x9E, 0x00, 0xC5, 0xB8, 0x00, 0xC4, 0x80, 0x00, 0xC4, 0x82, 0x00, 0xC4,
0x84, 0x00, 0xC4, 0x86, 0x00, 0xC4, 0x88, 0x00, 0xC4, 0x8A, 0x00, 0xC4,
0x8C, 0x00, 0xC4, 0x8E, 0x00, 0xC4, 0x90, 0x00, 0xC4, 0x92, 0x00, 0xC4,
0x94, 0x00, 0xC4, 0x96, 0x00, 0xC4, 0x98, 0x00, 0xC4, 0x9A, 0x00, 0xC4,
0x9C, 0x00, 0xC4, 0x9E, 0x00, 0xC4, 0xA0, 0x00, 0xC4, 0xA2, 0x00, 0xC4,
0xA4, 0x00, 0xC4, 0xA6, 0x00, 0xC4, 0xA8, 0x00, 0xC4, 0xAA, 0x00, 0xC4,
0xAC, 0x00, 0xC4, 0xAE, 0x00, 0x49, 0x00, 0xC4, 0xB2, 0x00, 0xC4, 0xB4,
0x00, 0xC4, 0xB6, 0x00, 0xC4, 0xB9, 0x00, 0xC4, 0xBB, 0x00, 0xC4, 0xBD,
0x00, 0xC4, 0xBF, 0x00, 0xC5, 0x81, 0x00, 0xC5, 0x83, 0x00, 0xC5, 0x85,
0x00, 0xC5, 0x87, 0x00, 0xC5, 0x8A, 0x00, 0xC5, 0x8C, 0x00, 0xC5, 0x8E,
0x00, 0xC5, 0x90, 0x00, 0xC5, 0x92, 0x00, 0xC5, 0x94, 0x00, 0xC5, 0x96,
0x00, 0xC5, 0x98, 0x00, 0xC5, 0x9A, 0x00, 0xC5, 0x9C, 0x00, 0xC5, 0x9E,
0x00, 0xC5, 0xA0, 0x00, 0xC5, 0xA2, 0x00, 0xC5, 0xA4, 0x00, 0xC5, 0xA6,
0x00, 0xC5, 0xA8, 0x00, 0xC5, 0xAA, 0x00, 0xC5, 0xAC, 0x00, 0xC5, 0xAE,
0x00, 0xC5, 0xB0, 0x00, 0xC5, 0xB2, 0x00, 0xC5, 0xB4, 0x00, 0xC5, 0xB6,
0x00, 0xC5, 0xB9, 0x00, 0xC5, 0xBB, 0x00, 0xC5, 0xBD, 0x00, 0x53, 0x00,
0xC9, 0x83, 0x00, 0xC6, 0x82, 0x00, 0xC6, 0x84, 0x00, 0xC6, 0x87, 0x00,
0xC6, 0x8B, 0x00, 0xC6, 0x91, 0x00, 0xC7, 0xB6, 0x00, 0xC6, 0x98, 0x00,
0xC8, 0xBD, 0x00, 0xC8, 0xA0, 0x00, 0xC6, 0xA0, 0x00, 0xC6, 0xA2, 0x00,
0xC6, 0xA4, 0x00, 0xC6, 0xA7, 0x00, 0xC6, 0xAC, 0x00, 0xC6, 0xAF, 0x00,
0xC6, 0xB3, 0x00, 0xC6, 0xB5, 0x00, 0xC6, 0xB8, 0x00, 0xC6, 0xBC, 0x00,
0xC7, 0xB7, 0x00, 0xC7, 0x84, 0x00, 0xC7, 0x84, 0x00, 0xC7, 0x87, 0x00,
0xC7, 0x87, 0x00, 0xC7, 0x8A, 0x00, 0xC7, 0x8A, 0x00, 0xC7, 0x8D, 0x00,
0xC7, 0x8F, 0x00, 0xC7, 0x91, 0x00, 0xC7, 0x93, 0x00, 0xC7, 0x95, 0x00,
0xC7, 0x97, 0x00, 0xC7, 0x99, 0x00, 0xC7, 0x9B, 0x00, 0xC6, 0x8E, 0x00,
0xC7, 0x9E, 0x00, 0xC7, 0xA0, 0x00, 0xC7, 0xA2, 0x00, 0xC7, 0xA4, 0x00,
0xC7, 0xA6, 0x00, 0xC7, 0xA8, 0x00, 0xC7, 0xAA, 0x00, 0xC7, 0xAC, 0x00,
0xC7, 0xAE, 0x00, 0xC7, 0xB1, 0x00, 0xC7, 0xB1, 0x00, 0xC7, 0xB4, 0x00,
0xC7, 0xB8, 0x00, 0xC7, 0xBA, 0x00, 0xC7, 0xBC, 0x00, 0xC7, 0xBE, 0x00,
0xC8, 0x80, 0x00, 0xC8, 0x82, 0x00, 0xC8, 0x84, 0x00, 0xC8, 0x86, 0x00,
0xC8, 0x88, 0x00, 0xC8, 0x8A, 0x00, 0xC8, 0x8C, 0x00, 0xC8, 0x8E, 0x00,
0xC8, 0x90, 0x00, 0xC8, 0x92, 0x00, 0xC8, 0x94, 0x00, 0xC8, 0x96, 0x00,
0xC8, 0x98, 0x00, 0xC8, 0x9A, 0x00, 0xC8, 0x9C, 0x00, 0xC8, 0x9E, 0x00,
0xC8, 0xA2, 0x00, 0xC8, 0xA4, 0x00, 0xC8, 0xA6, 0x00, 0xC8, 0xA8, 0x00,
0xC8, 0xAA, 0x00, 0xC8, 0xAC, 0x00, 0xC8, 0xAE, 0x00, 0xC8, 0xB0, 0x00,
0xC8, 0xB2, 0x00, 0xC8, 0xBB, 0x00, 0xE2, 0xB1, 0xBE, 0x00, 0xE2, 0xB1,
0xBF, 0x00, 0xC9, 0x81, 0x00, 0xC9, 0x86, 0x00, 0xC9, 0x88, 0x00, 0xC9,
0x8A, 0x00, 0xC9, 0x8C, 0x00, 0xC9, 0x8E, 0x00, 0xE2, 0xB1, 0xAF, 0x00,
0xE2, 0xB1, 0xAD, 0x00, 0xE2, 0xB1, 0xB0, 0x00, 0xC6, 0x81, 0x00, 0xC6,
0x86, 0x00, 0xC6, 0x89, 0x00, 0xC6, 0x8A, 0x00, 0xC6, 0x8F, 0x00, 0xC6,
0x90, 0x00, 0xEA, 0x9E, 0xAB, 0x00, 0xC6, 0x93, 0x00, 0xEA, 0x9E, 0xAC,
0x00, 0xC6, 0x94, 0x00, 0xEA, 0x9E, 0x8D, 0x00, 0xEA, 0x9E, 0xAA, 0x00,
0xC6, 0x97, 0x00, 0xC6, 0x96, 0x00, 0xEA, 0x9E, 0xAE, 0x00, 0xE2, 0xB1,
0xA2, 0x00, 0xEA, 0x9E, 0xAD, 0x00, 0xC6, 0x9C, 0x00, 0xE2, 0xB1, 0xAE,
0x00, 0xC6, 0x9D, 0x00, 0xC6, 0x9F, 0x00, 0xE2, 0xB1, 0xA4, 0x00, 0xC6,
0xA6, 0x00, 0xC6, 0xA9, 0x00, 0xEA, 0x9E, 0xB1, 0x00, 0xC6, 0xAE, 0x00,
0xC9, 0x84, 0x00, 0xC6, 0xB1, 0x00, 0xC6, 0xB2, 0x00, 0xC9, 0x85, 0x00,
0xC6, 0xB7, 0x00, 0xEA, 0x9E, 0xB2, 0x00, 0xEA, 0x9E, 0xB0, 0x00, 0xCE,
0x99, 0x00, 0xCD, 0xB0, 0x00, 0xCD, 0xB2, 0x00, 0xCD, 0xB6, 0x00, 0xCF,
0xBD, 0x00, 0xCF, 0xBE, 0x00, 0xCF, 0xBF, 0x00, 0xCE, 0x86, 0x00, 0xCE,
0x88, 0x00, 0xCE, 0x89, 0x00, 0xCE, 0x8A, 0x00, 0xCE, 0x91, 0x00, 0xCE,
0x92, 0x00, 0xCE, 0x93, 0x00, 0xCE, 0x94, 0x00, 0xCE, 0x95, 0x00, 0xCE,
0x96, 0x00, 0xCE, 0x97, 0x00, 0xCE, 0x98, 0x00, 0xCE, 0x99, 0x00, 0xCE,
0x9A, 0x00, 0xCE, 0x9B, 0x00, 0xCE, 0x9C, 0x00, 0xCE, 0x9D, 0x00, 0xCE,
0x9E, 0x00, 0xCE, 0x9F, 0x00, 0xCE, 0xA0, 0x00, 0xCE, 0xA1, 0x00, 0xCE,
0xA3, 0x00, 0xCE, 0xA3, 0x00, 0xCE, 0xA4, 0x00, 0xCE, 0xA5, 0x00, 0xCE,
0xA6, 0x00, 0xCE, 0xA7, 0x00, 0xCE, 0xA8, 0x00, 0xCE, 0xA9, 0x00, 0xCE,
0xAA, 0x00, 0xCE, 0xAB, 0x00, 0xCE, 0x8C, 0x00, 0xCE, 0x8E, 0x00, 0xCE,
0x8F, 0x00, 0xCE, 0x92, 0x00, 0xCE, 0x98, 0x00, 0xCE, 0xA6, 0x00, 0xCE,
0xA0, 0x00, 0xCF, 0x8F, 0x00, 0xCF, 0x98, 0x00, 0xCF, 0x9A, 0x00, 0xCF,
0x9C, 0x00, 0xCF, 0x9E, 0x00, 0xCF, 0xA0, 0x00, 0xCF, 0xA2, 0x00, 0xCF,
0xA4, 0x00, 0xCF, 0xA6, 0x00, 0xCF, 0xA8, 0x00, 0xCF, 0xAA, 0x00, 0xCF,
0xAC, 0x00, 0xCF, 0xAE, 0x00, 0xCE, 0x9A, 0x00, 0xCE, 0xA1, 0x00, 0xCF,
0xB9, 0x00, 0xCD, 0xBF, 0x00, 0xCE, 0x95, 0x00, 0xCF, 0xB7, 0x00, 0xCF,
0xBA, 0x00, 0xD0, 0x90, 0x00, 0xD0, 0x91, 0x00, 0xD0, 0x92, 0x00, 0xD0,
0x93, 0x00, 0xD0, 0x94, 0x00, 0xD0, 0x95, 0x00, 0xD0, 0x96, 0x00, 0xD0,
0x97, 0x00, 0xD0, 0x98, 0x00, 0xD0, 0x99, 0x00, 0xD0, 0x9A, 0x00, 0xD0,
0x9B, 0x00, 0xD0, 0x9C, 0x00, 0xD0, 0x9D, 0x00, 0xD0, 0x9E, 0x00, 0xD0,
0x9F, 0x00, 0xD0, 0xA0, 0x00, 0xD0, 0xA1, 0x00, 0xD0, 0xA2, 0x00, 0xD0,
0xA3, 0x00, 0xD0, 0xA4, 0x00, 0xD0, 0xA5, 0x00, 0xD0, 0xA6, 0x00, 0xD0,
0xA7, 0x00, 0xD0, 0xA8, 0x00, 0xD0, 0xA9, 0x00, 0xD0, 0xAA, 0x00, 0xD0,
0xAB, 0x00, 0xD0, 0xAC, 0x00, 0xD0, 0xAD, 0x00, 0xD0, 0xAE, 0x00, 0xD0,
0xAF, 0x00, 0xD0, 0x80, 0x00, 0xD0, 0x81, 0x00, 0xD0, 0x82, 0x00, 0xD0,
0x83, 0x00, 0xD0, 0x84, 0x00, 0xD0, 0x85, 0x00, 0xD0, 0x86, 0x00, 0xD0,
0x87, 0x00, 0xD0, 0x88, 0x00, 0xD0, 0x89, 0x00, 0xD0, 0x8A, 0x00, 0xD0,
0x8B, 0x00, 0xD0, 0x8C, 0x00, 0xD0, 0x8D, 0x00, 0xD0, 0x8E, 0x00, 0xD0,
0x8F, 0x00, 0xD1, 0xA0, 0x00, 0xD1, 0xA2, 0x00, 0xD1, 0xA4, 0x00, 0xD1,
0xA6, 0x00, 0xD1, 0xA8, 0x00, 0xD1, 0xAA, 0x00, 0xD1, 0xAC, 0x00, 0xD1,
0xAE, 0x00, 0xD1, 0xB0, 0x00, 0xD1, 0xB2, 0x00, 0xD1, 0xB4, 0x00, 0xD1,
0xB6, 0x00, 0xD1, 0xB8, 0x00, 0xD1, 0xBA, 0x00, 0xD1, 0xBC, 0x00, 0xD1,
0xBE, 0x00, 0xD2, 0x80, 0x00, 0xD2, 0x8A, 0x00, 0xD2, 0x8C, 0x00, 0xD2,
0x8E, 0x00, 0xD2, 0x90, 0x00, 0xD2, 0x92, 0x00, 0xD2, 0x94, 0x00, 0xD2,
0x96, 0x00, 0xD2, 0x98, 0x00, 0xD2, 0x9A, 0x00, 0xD2, 0x9C, 0x00, 0xD2,
0x9E, 0x00, 0xD2, 0xA0, 0x00, 0xD2, 0xA2, 0x00, 0xD2, 0xA4, 0x00, 0xD2,
0xA6, 0x00, 0xD2, 0xA8, 0x00, 0xD2, 0xAA, 0x00, 0xD2, 0xAC, 0x00, 0xD2,
0xAE, 0x00, 0xD2, 0xB0, 0x00, 0xD2, 0xB2, 0x00, 0xD2, 0xB4, 0x00, 0xD2,
0xB6, 0x00, 0xD2, 0xB8, 0x00, 0xD2, 0xBA, 0x00, 0xD2, 0xBC, 0x00, 0xD2,
0xBE, 0x00, 0xD3, 0x81, 0x00, 0xD3, 0x83, 0x00, 0xD3, 0x85, 0x00, 0xD3,
0x87, 0x00, 0xD3, 0x89, 0x00, 0xD3, 0x8B, 0x00, 0xD3, 0x8D, 0x00, 0xD3,
0x80, 0x00, 0xD3, 0x90, 0x00, 0xD3, 0x92, 0x00, 0xD3, 0x94, 0x00, 0xD3,
0x96, 0x00, 0xD3, 0x98, 0x00, 0xD3, 0x9A, 0x00, 0xD3, 0x9C, 0x00, 0xD3,
0x9E, 0x00, 0xD3, 0xA0, 0x00, 0xD3, 0xA2, 0x00, 0xD3, 0xA4, 0x00, 0xD3,
0xA6, 0x00, 0xD3, 0xA8, 0x00, 0xD3, 0xAA, 0x00, 0xD3, 0xAC, 0x00, 0xD3,
0xAE, 0x00, 0xD3, 0xB0, 0x00, 0xD3, 0xB2, 0x00, 0xD3, 0xB4, 0x00, 0xD3,
0xB6, 0x00, 0xD3, 0xB8, 0x00, 0xD3, 0xBA, 0x00, 0xD3, 0xBC, 0x00, 0xD3,
0xBE, 0x00, 0xD4, 0x80, 0x00, 0xD4, 0x82, 0x00, 0xD4, 0x84, 0x00, 0xD4,
0x86, 0x00, 0xD4, 0x88, 0x00, 0xD4, 0x8A, 0x00, 0xD4, 0x8C, 0x00, 0xD4,
0x8E, 0x00, 0xD4, 0x90, 0x00, 0xD4, 0x92, 0x00, 0xD4, 0x94, 0x00, 0xD4,
0x96, 0x00, 0xD4, 0x98, 0x00, 0xD4, 0x9A, 0x00, 0xD4, 0x9C, 0x00, 0xD4,
0x9E, 0x00, 0xD4, 0xA0, 0x00, 0xD4, 0xA2, 0x00, 0xD4, 0xA4, 0x00, 0xD4,
0xA6, 0x00, 0xD4, 0xA8, 0x00, 0xD4, 0xAA, 0x00, 0xD4, 0xAC, 0x00, 0xD4,
0xAE, 0x00, 0xD4, 0xB1, 0x00, 0xD4, 0xB2, 0x00, 0xD4, 0xB3, 0x00, 0xD4,
0xB4, 0x00, 0xD4, 0xB5, 0x00, 0xD4, 0xB6, 0x00, 0xD4, 0xB7, 0x00, 0xD4,
0xB8, 0x00, 0xD4, 0xB9, 0x00, 0xD4, 0xBA, 0x00, 0xD4, 0xBB, 0x00, 0xD4,
0xBC, 0x00, 0xD4, 0xBD, 0x00, 0xD4, 0xBE, 0x00, 0xD4, 0xBF, 0x00, 0xD5,
0x80, 0x00, 0xD5, 0x81, 0x00, 0xD5, 0x82, 0x00, 0xD5, 0x83, 0x00, 0xD5,
0x84, 0x00, 0xD5, 0x85, 0x00, 0xD5, 0x86, 0x00, 0xD5, 0x87, 0x00, 0xD5,
0x88, 0x00, 0xD5, 0x89, 0x00, 0xD5, 0x8A, 0x00, 0xD5, 0x8B, 0x00, 0xD5,
0x8C, 0x00, 0xD5, 0x8D, 0x00, 0xD5, 0x8E, 0x00, 0xD5, 0x8F, 0x00, 0xD5,
0x90, 0x00, 0xD5, 0x91, 0x00, 0xD5, 0x92, 0x00, 0xD5, 0x93, 0x00, 0xD5,
0x94, 0x00, 0xD5, 0x95, 0x00, 0xD5, 0x96, 0x00, 0xF0, 0x90, 0x90, 0x80,
0x00, 0xF0, 0x90, 0x90, 0x81, 0x00, 0xF0, 0x90, 0x90, 0x82, 0x00, 0xF0,
0x90, 0x90, 0x83, 0x00, 0xF0, 0x90, 0x90, 0x84, 0x00, 0xF0, 0x90, 0x90,
0x85, 0x00, 0xF0, 0x90, 0x90, 0x86, 0x00, 0xF0, 0x90, 0x90, 0x87, 0x00,
0xF0, 0x90, 0x90, 0x88, 0x00, 0xF0, 0x90, 0x90, 0x89, 0x00, 0xF0, 0x90,
0x90, 0x8A, 0x00, 0xF0, 0x90, 0x90, 0x8B, 0x00, 0xF0, 0x90, 0x90, 0x8C,
0x00, 0xF0, 0x90, 0x90, 0x8D, 0x00, 0xF0, 0x90, 0x90, 0x8E, 0x00, 0xF0,
0x90, 0x90, 0x8F, 0x00, 0xF0, 0x90, 0x90, 0x90, 0x00, 0xF0, 0x90, 0x90,
0x91, 0x00, 0xF0, 0x90, 0x90, 0x92, 0x00, 0xF0, 0x90, 0x90, 0x93, 0x00,
0xF0, 0x90, 0x90, 0x94, 0x00, 0xF0, 0x90, 0x90, 0x95, 0x00, 0xF0, 0x90,
0x90, 0x96, 0x00, 0xF0, 0x90, 0x90, 0x97, 0x00, 0xF0, 0x90, 0x90, 0x98,
0x00, 0xF0, 0x90, 0x90, 0x99, 0x00, 0xF0, 0x90, 0x90, 0x9A, 0x00, 0xF0,
0x90, 0x90, 0x9B, 0x00, 0xF0, 0x90, 0x90, 0x9C, 0x00, 0xF0, 0x90, 0x90,
0x9D, 0x00, 0xF0, 0x90, 0x90, 0x9E, 0x00, 0xF0, 0x90, 0x90, 0x9F, 0x00,
0xF0, 0x90, 0x90, 0xA0, 0x00, 0xF0, 0x90, 0x90, 0xA1, 0x00, 0xF0, 0x90,
0x90, 0xA2, 0x00, 0xF0, 0x90, 0x90, 0xA3, 0x00, 0xF0, 0x90, 0x90, 0xA4,
0x00, 0xF0, 0x90, 0x90, 0xA5, 0x00, 0xF0, 0x90, 0x90, 0xA6, 0x00, 0xF0,
0x90, 0x90, 0xA7, 0x00, 0xF0, 0x90, 0x92, 0xB0, 0x00, 0xF0, 0x90, 0x92,
0xB1, 0x00, 0xF0, 0x90, 0x92, 0xB2, 0x00, 0xF0, 0x90, 0x92, 0xB3, 0x00,
0xF0, 0x90, 0x92, 0xB4, 0x00, 0xF0, 0x90, 0x92, 0xB5, 0x00, 0xF0, 0x90,
0x92, 0xB6, 0x00, 0xF0, 0x90, 0x92, 0xB7, 0x00, 0xF0, 0x90, 0x92, 0xB8,
0x00, 0xF0, 0x90, 0x92, 0xB9, 0x00, 0xF0, 0x90, 0x92, 0xBA, 0x00, 0xF0,
0x90, 0x92, 0xBB, 0x00, 0xF0, 0x90, 0x92, 0xBC, 0x00, 0xF0, 0x90, 0x92,
0xBD, 0x00, 0xF0, 0x90, 0x92, 0xBE, 0x00, 0xF0, 0x90, 0x92, 0xBF, 0x00,
0xF0, 0x90, 0x93, 0x80, 0x00, 0xF0, 0x90, 0x93, 0x81, 0x00, 0xF0, 0x90,
0x93, 0x82, 0x00, 0xF0, 0x90, 0x93, 0x83, 0x00, 0xF0, 0x90, 0x93, 0x84,
0x00, 0xF0, 0x90, 0x93, 0x85, 0x00, 0xF0, 0x90, 0x93, 0x86, 0x00, 0xF0,
0x90, 0x93, 0x87, 0x00, 0xF0, 0x90, 0x93, 0x88, 0x00, 0xF0, 0x90, 0x93,
0x89, 0x00, 0xF0, 0x90, 0x93, 0x8A, 0x00, 0xF0, 0x90, 0x93, 0x8B, 0x00,
0xF0, 0x90, 0x93, 0x8C, 0x00, 0xF0, 0x90, 0x93, 0x8D, 0x00, 0xF0, 0x90,
0x93, 0x8E, 0x00, 0xF0, 0x90, 0x93, 0x8F, 0x00, 0xF0, 0x90, 0x93, 0x90,
0x00, 0xF0, 0x90, 0x93, 0x91, 0x00, 0xF0, 0x90, 0x93, 0x92, 0x00, 0xF0,
0x90, 0x93, 0x93, 0x00, 0xF0, 0x90, 0xB2, 0x80, 0x00, 0xF0, 0x90, 0xB2,
0x81, 0x00, 0xF0, 0x90, 0xB2, 0x82, 0x00, 0xF0, 0x90, 0xB2, 0x83, 0x00,
0xF0, 0x90, 0xB2, 0x84, 0x00, 0xF0, 0x90, 0xB2, 0x85, 0x00, 0xF0, 0x90,
0xB2, 0x86, 0x00, 0xF0, 0x90, 0xB2, 0x87, 0x00, 0xF0, 0x90, 0xB2, 0x88,
0x00, 0xF0, 0x90, 0xB2, 0x89, 0x00, 0xF0, 0x90, 0xB2, 0x8A, 0x00, 0xF0,
0x90, 0xB2, 0x8B, 0x00, 0xF0, 0x90, 0xB2, 0x8C, 0x00, 0xF0, 0x90, 0xB2,
0x8D, 0x00, 0xF0, 0x90, 0xB2, 0x8E, 0x00, 0xF0, 0x90, 0xB2, 0x8F, 0x00,
0xF0, 0x90, 0xB2, 0x90, 0x00, 0xF0, 0x90, 0xB2, 0x91, 0x00, 0xF0, 0x90,
0xB2, 0x92, 0x00, 0xF0, 0x90, 0xB2, 0x93, 0x00, 0xF0, 0x90, 0xB2, 0x94,
0x00, 0xF0, 0x90, 0xB2, 0x95, 0x00, 0xF0, 0x90, 0xB2, 0x96, 0x00, 0xF0,
0x90, 0xB2, 0x97, 0x00, 0xF0, 0x90, 0xB2, 0x98, 0x00, 0xF0, 0x90, 0xB2,
0x99, 0x00, 0xF0, 0x90, 0xB2, 0x9A, 0x00, 0xF0, 0x90, 0xB2, 0x9B, 0x00,
0xF0, 0x90, 0xB2, 0x9C, 0x00, 0xF0, 0x90, 0xB2, 0x9D, 0x00, 0xF0, 0x90,
0xB2, 0x9E, 0x00, 0xF0, 0x90, 0xB2, 0x9F, 0x00, 0xF0, 0x90, 0xB2, 0xA0,
0x00, 0xF0, 0x90, 0xB2, 0xA1, 0x00, 0xF0, 0x90, 0xB2, 0xA2, 0x00, 0xF0,
0x90, 0xB2, 0xA3, 0x00, 0xF0, 0x90, 0xB2, 0xA4, 0x00, 0xF0, 0x90, 0xB2,
0xA5, 0x00, 0xF0, 0x90, 0xB2, 0xA6, 0x00, 0xF0, 0x90, 0xB2, 0xA7, 0x00,
0xF0, 0x90, 0xB2, 0xA8, 0x00, 0xF0, 0x90, 0xB2, 0xA9, 0x00, 0xF0, 0x90,
0xB2, 0xAA, 0x00, 0xF0, 0x90, 0xB2, 0xAB, 0x00, 0xF0, 0x90, 0xB2, 0xAC,
0x00, 0xF0, 0x90, 0xB2, 0xAD, 0x00, 0xF0, 0x90, 0xB2, 0xAE, 0x00, 0xF0,
0x90, 0xB2, 0xAF, 0x00, 0xF0, 0x90, 0xB2, 0xB0, 0x00, 0xF0, 0x90, 0xB2,
0xB1, 0x00, 0xF0, 0x90, 0xB2, 0xB2, 0x00, 0xF0, 0x91, 0xA2, 0xA0, 0x00,
0xF0, 0x91, 0xA2, 0xA1, 0x00, 0xF0, 0x91, 0xA2, 0xA2, 0x00, 0xF0, 0x91,
0xA2, 0xA3, 0x00, 0xF0, 0x91, 0xA2, 0xA4, 0x00, 0xF0, 0x91, 0xA2, 0xA5,
0x00, 0xF0, 0x91, 0xA2, 0xA6, 0x00, 0xF0, 0x91, 0xA2, 0xA7, 0x00, 0xF0,
0x91, 0xA2, 0xA8, 0x00, 0xF0, 0x91, 0xA2, 0xA9, 0x00, 0xF0, 0x91, 0xA2,
0xAA, 0x00, 0xF0, 0x91, 0xA2, 0xAB, 0x00, 0xF0, 0x91, 0xA2, 0xAC, 0x00,
0xF0, 0x91, 0xA2, 0xAD, 0x00, 0xF0, 0x91, 0xA2, 0xAE, 0x00, 0xF0, 0x91,
0xA2, 0xAF, 0x00, 0xF0, 0x91, 0xA2, 0xB0, 0x00, 0xF0, 0x91, 0xA2, 0xB1,
0x00, 0xF0, 0x91, 0xA2, 0xB2, 0x00, 0xF0, 0x91, 0xA2, 0xB3, 0x00, 0xF0,
0x91, 0xA2, 0xB4, 0x00, 0xF0, 0x91, 0xA2, 0xB5, 0x00, 0xF0, 0x91, 0xA2,
0xB6, 0x00, 0xF0, 0x91, 0xA2, 0xB7, 0x00, 0xF0, 0x91, 0xA2, 0xB8, 0x00,
0xF0, 0x91, 0xA2, 0xB9, 0x00, 0xF0, 0x91, 0xA2, 0xBA, 0x00, 0xF0, 0x91,
0xA2, 0xBB, 0x00, 0xF0, 0x91, 0xA2, 0xBC, 0x00, 0xF0, 0x91, 0xA2, 0xBD,
0x00, 0xF0, 0x91, 0xA2, 0xBE, 0x00, 0xF0, 0x91, 0xA2, 0xBF, 0x00, 0xE1,
0x8F, 0xB0, 0x00, 0xE1, 0x8F, 0xB1, 0x00, 0xE1, 0x8F, 0xB2, 0x00, 0xE1,
0x8F, 0xB3, 0x00, 0xE1, 0x8F, 0xB4, 0x00, 0xE1, 0x8F, 0xB5, 0x00, 0xD0,
0x92, 0x00, 0xD0, 0x94, 0x00, 0xD0, 0x9E, 0x00, 0xD0, 0xA1, 0x00, 0xD0,
0xA2, 0x00, 0xD0, 0xA2, 0x00, 0xD0, 0xAA, 0x00, 0xD1, 0xA2, 0x00, 0xEA,
0x99, 0x8A, 0x00, 0xEA, 0x9D, 0xBD, 0x00, 0xE2, 0xB1, 0xA3, 0x00, 0xE1,
0xB8, 0x80, 0x00, 0xE1, 0xB8, 0x82, 0x00, 0xE1, 0xB8, 0x84, 0x00, 0xE1,
0xB8, 0x86, 0x00, 0xE1, 0xB8, 0x88, 0x00, 0xE1, 0xB8, 0x8A, 0x00, 0xE1,
0xB8, 0x8C, 0x00, 0xE1, 0xB8, 0x8E, 0x00, 0xE1, 0xB8, 0x90, 0x00, 0xE1,
0xB8, 0x92, 0x00, 0xE1, 0xB8, 0x94, 0x00, 0xE1, 0xB8, 0x96, 0x00, 0xE1,
0xB8, 0x98, 0x00, 0xE1, 0xB8, 0x9A, 0x00, 0xE1, 0xB8, 0x9C, 0x00, 0xE1,
0xB8, 0x9E, 0x00, 0xE1, 0xB8, 0xA0, 0x00, 0xE1, 0xB8, 0xA2, 0x00, 0xE1,
0xB8, 0xA4, 0x00, 0xE1, 0xB8, 0xA6, 0x00, 0xE1, 0xB8, 0xA8, 0x00, 0xE1,
0xB8, 0xAA, 0x00, 0xE1, 0xB8, 0xAC, 0x00, 0xE1, 0xB8, 0xAE, 0x00, 0xE1,
0xB8, 0xB0, 0x00, 0xE1, 0xB8, 0xB2, 0x00, 0xE1, 0xB8, 0xB4, 0x00, 0xE1,
0xB8, 0xB6, 0x00, 0xE1, 0xB8, 0xB8, 0x00, 0xE1, 0xB8, 0xBA, 0x00, 0xE1,
0xB8, 0xBC, 0x00, 0xE1, 0xB8, 0xBE, 0x00, 0xE1, 0xB9, 0x80, 0x00, 0xE1,
0xB9, 0x82, 0x00, 0xE1, 0xB9, 0x84, 0x00, 0xE1, 0xB9, 0x86, 0x00, 0xE1,
0xB9, 0x88, 0x00, 0xE1, 0xB9, 0x8A, 0x00, 0xE1, 0xB9, 0x8C, 0x00, 0xE1,
0xB9, 0x8E, 0x00, 0xE1, 0xB9, 0x90, 0x00, 0xE1, 0xB9, 0x92, 0x00, 0xE1,
0xB9, 0x94, 0x00, 0xE1, 0xB9, 0x96, 0x00, 0xE1, 0xB9, 0x98, 0x00, 0xE1,
0xB9, 0x9A, 0x00, 0xE1, 0xB9, 0x9C, 0x00, 0xE1, 0xB9, 0x9E, 0x00, 0xE1,
0xB9, 0xA0, 0x00, 0xE1, 0xB9, 0xA2, 0x00, 0xE1, 0xB9, 0xA4, 0x00, 0xE1,
0xB9, 0xA6, 0x00, 0xE1, 0xB9, 0xA8, 0x00, 0xE1, 0xB9, 0xAA, 0x00, 0xE1,
0xB9, 0xAC, 0x00, 0xE1, 0xB9, 0xAE, 0x00, 0xE1, 0xB9, 0xB0, 0x00, 0xE1,
0xB9, 0xB2, 0x00, 0xE1, 0xB9, 0xB4, 0x00, 0xE1, 0xB9, 0xB6, 0x00, 0xE1,
0xB9, 0xB8, 0x00, 0xE1, 0xB9, 0xBA, 0x00, 0xE1, 0xB9, 0xBC, 0x00, 0xE1,
0xB9, 0xBE, 0x00, 0xE1, 0xBA, 0x80, 0x00, 0xE1, 0xBA, 0x82, 0x00, 0xE1,
0xBA, 0x84, 0x00, 0xE1, 0xBA, 0x86, 0x00, 0xE1, 0xBA, 0x88, 0x00, 0xE1,
0xBA, 0x8A, 0x00, 0xE1, 0xBA, 0x8C, 0x00, 0xE1, 0xBA, 0x8E, 0x00, 0xE1,
0xBA, 0x90, 0x00, 0xF0, 0x9E, 0xA4, 0x80, 0x00, 0xF0, 0x9E, 0xA4, 0x81,
0x00, 0xF0, 0x9E, 0xA4, 0x82, 0x00, 0xF0, 0x9E, 0xA4, 0x83, 0x00, 0xF0,
0x9E, 0xA4, 0x84, 0x00, 0xF0, 0x9E, 0xA4, 0x85, 0x00, 0xF0, 0x9E, 0xA4,
0x86, 0x00, 0xF0, 0x9E, 0xA4, 0x87, 0x00, 0xF0, 0x9E, 0xA4, 0x88, 0x00,
0xF0, 0x9E, 0xA4, 0x89, 0x00, 0xF0, 0x9E, 0xA4, 0x8A, 0x00, 0xF0, 0x9E,
0xA4, 0x8B, 0x00, 0xF0, 0x9E, 0xA4, 0x8C, 0x00, 0xF0, 0x9E, 0xA4, 0x8D,
0x00, 0xE1, 0xBA, 0x92, 0x00, 0xF0, 0x9E, 0xA4, 0x8E, 0x00, 0xF0, 0x9E,
0xA4, 0x8F, 0x00, 0xF0, 0x9E, 0xA4, 0x90, 0x00, 0xF0, 0x9E, 0xA4, 0x91,
0x00, 0xF0, 0x9E, 0xA4, 0x92, 0x00, 0xF0, 0x9E, 0xA4, 0x93, 0x00, 0xF0,
0x9E, 0xA4, 0x94, 0x00, 0xF0, 0x9E, 0xA4, 0x95, 0x00, 0xF0, 0x9E, 0xA4,
0x96, 0x00, 0xF0, 0x9E, 0xA4, 0x97, 0x00, 0xF0, 0x9E, 0xA4, 0x98, 0x00,
0xF0, 0x9E, 0xA4, 0x99, 0x00, 0xF0, 0x9E, 0xA4, 0x9A, 0x00, 0xF0, 0x9E,
0xA4, 0x9B, 0x00, 0xF0, 0x9E, 0xA4, 0x9C, 0x00, 0xF0, 0x9E, 0xA4, 0x9D,
0x00, 0xF0, 0x9E, 0xA4, 0x9E, 0x00, 0xF0, 0x9E, 0xA4, 0x9F, 0x00, 0xF0,
0x9E, 0xA4, 0xA0, 0x00, 0xF0, 0x9E, 0xA4, 0xA1, 0x00, 0xE1, 0xBA, 0x94,
0x00, 0xE1, 0xB9, 0xA0, 0x00, 0xE1, 0xBA, 0xA0, 0x00, 0xE1, 0xBA, 0xA2,
0x00, 0xE1, 0xBA, 0xA4, 0x00, 0xE1, 0xBA, 0xA6, 0x00, 0xE1, 0xBA, 0xA8,
0x00, 0xE1, 0xBA, 0xAA, 0x00, 0xE1, 0xBA, 0xAC, 0x00, 0xE1, 0xBA, 0xAE,
0x00, 0xE1, 0xBA, 0xB0, 0x00, 0xE1, 0xBA, 0xB2, 0x00, 0xE1, 0xBA, 0xB4,
0x00, 0xE1, 0xBA, 0xB6, 0x00, 0xE1, 0xBA, 0xB8, 0x00, 0xE1, 0xBA, 0xBA,
0x00, 0xE1, 0xBA, 0xBC, 0x00, 0xE1, 0xBA, 0xBE, 0x00, 0xE1, 0xBB, 0x80,
0x00, 0xE1, 0xBB, 0x82, 0x00, 0xE1, 0xBB, 0x84, 0x00, 0xE1, 0xBB, 0x86,
0x00, 0xE1, 0xBB, 0x88, 0x00, 0xE1, 0xBB, 0x8A, 0x00, 0xE1, 0xBB, 0x8C,
0x00, 0xE1, 0xBB, 0x8E, 0x00, 0xE1, 0xBB, 0x90, 0x00, 0xE1, 0xBB, 0x92,
0x00, 0xE1, 0xBB, 0x94, 0x00, 0xE1, 0xBB, 0x96, 0x00, 0xE1, 0xBB, 0x98,
0x00, 0xE1, 0xBB, 0x9A, 0x00, 0xE1, 0xBB, 0x9C, 0x00, 0xE1, 0xBB, 0x9E,
0x00, 0xE1, 0xBB, 0xA0, 0x00, 0xE1, 0xBB, 0xA2, 0x00, 0xE1, 0xBB, 0xA4,
0x00, 0xE1, 0xBB, 0xA6, 0x00, 0xE1, 0xBB, 0xA8, 0x00, 0xE1, 0xBB, 0xAA,
0x00, 0xE1, 0xBB, 0xAC, 0x00, 0xE1, 0xBB, 0xAE, 0x00, 0xE1, 0xBB, 0xB0,
0x00, 0xE1, 0xBB, 0xB2, 0x00, 0xE1, 0xBB, 0xB4, 0x00, 0xE1, 0xBB, 0xB6,
0x00, 0xE1, 0xBB, 0xB8, 0x00, 0xE1, 0xBB, 0xBA, 0x00, 0xE1, 0xBB, 0xBC,
0x00, 0xE1, 0xBB, 0xBE, 0x00, 0xE1, 0xBC, 0x88, 0x00, 0xE1, 0xBC, 0x89,
0x00, 0xE1, 0xBC, 0x8A, 0x00, 0xE1, 0xBC, 0x8B, 0x00, 0xE1, 0xBC, 0x8C,
0x00, 0xE1, 0xBC, 0x8D, 0x00, 0xE1, 0xBC, 0x8E, 0x00, 0xE1, 0xBC, 0x8F,
0x00, 0xE1, 0xBC, 0x98, 0x00, 0xE1, 0xBC, 0x99, 0x00, 0xE1, 0xBC, 0x9A,
0x00, 0xE1, 0xBC, 0x9B, 0x00, 0xE1, 0xBC, 0x9C, 0x00, 0xE1, 0xBC, 0x9D,
0x00, 0xE1, 0xBC, 0xA8, 0x00, 0xE1, 0xBC, 0xA9, 0x00, 0xE1, 0xBC, 0xAA,
0x00, 0xE1, 0xBC, 0xAB, 0x00, 0xE1, 0xBC, 0xAC, 0x00, 0xE1, 0xBC, 0xAD,
0x00, 0xE1, 0xBC, 0xAE, 0x00, 0xE1, 0xBC, 0xAF, 0x00, 0xE1, 0xBC, 0xB8,
0x00, 0xE1, 0xBC, 0xB9, 0x00, 0xE1, 0xBC, 0xBA, 0x00, 0xE1, 0xBC, 0xBB,
0x00, 0xE1, 0xBC, 0xBC, 0x00, 0xE1, 0xBC, 0xBD, 0x00, 0xE1, 0xBC, 0xBE,
0x00, 0xE1, 0xBC, 0xBF, 0x00, 0xE1, 0xBD, 0x88, 0x00, 0xE1, 0xBD, 0x89,
0x00, 0xE1, 0xBD, 0x8A, 0x00, 0xE1, 0xBD, 0x8B, 0x00, 0xE1, 0xBD, 0x8C,
0x00, 0xE1, 0xBD, 0x8D, 0x00, 0xE1, 0xBD, 0x99, 0x00, 0xE1, 0xBD, 0x9B,
0x00, 0xE1, 0xBD, 0x9D, 0x00, 0xE1, 0xBD, 0x9F, 0x00, 0xE1, 0xBD, 0xA8,
0x00, 0xE1, 0xBD, 0xA9, 0x00, 0xE1, 0xBD, 0xAA, 0x00, 0xE1, 0xBD, 0xAB,
0x00, 0xE1, 0xBD, 0xAC, 0x00, 0xE1, 0xBD, 0xAD, 0x00, 0xE1, 0xBD, 0xAE,
0x00, 0xE1, 0xBD, 0xAF, 0x00, 0xE1, 0xBE, 0xBA, 0x00, 0xE1, 0xBE, 0xBB,
0x00, 0xE1, 0xBF, 0x88, 0x00, 0xE1, 0xBF, 0x89, 0x00, 0xE1, 0xBF, 0x8A,
0x00, 0xE1, 0xBF, 0x8B, 0x00, 0xE1, 0xBF, 0x9A, 0x00, 0xE1, 0xBF, 0x9B,
0x00, 0xE1, 0xBF, 0xB8, 0x00, 0xE1, 0xBF, 0xB9, 0x00, 0xE1, 0xBF, 0xAA,
0x00, 0xE1, 0xBF, 0xAB, 0x00, 0xE1, 0xBF, 0xBA, 0x00, 0xE1, 0xBF, 0xBB,
0x00, 0xE1, 0xBE, 0x88, 0x00, 0xE1, 0xBE, 0x89, 0x00, 0xE1, 0xBE, 0x8A,
0x00, 0xE1, 0xBE, 0x8B, 0x00, 0xE1, 0xBE, 0x8C, 0x00, 0xE1, 0xBE, 0x8D,
0x00, 0xE1, 0xBE, 0x8E, 0x00, 0xE1, 0xBE, 0x8F, 0x00, 0xE1, 0xBE, 0x98,
0x00, 0xE1, 0xBE, 0x99, 0x00, 0xE1, 0xBE, 0x9A, 0x00, 0xE1, 0xBE, 0x9B,
0x00, 0xE1, 0xBE, 0x9C, 0x00, 0xE1, 0xBE, 0x9D, 0x00, 0xE1, 0xBE, 0x9E,
0x00, 0xE1, 0xBE, 0x9F, 0x00, 0xE1, 0xBE, 0xA8, 0x00, 0xE1, 0xBE, 0xA9,
0x00, 0xE1, 0xBE, 0xAA, 0x00, 0xE1, 0xBE, 0xAB, 0x00, 0xE1, 0xBE, 0xAC,
0x00, 0xE1, 0xBE, 0xAD, 0x00, 0xE1, 0xBE, 0xAE, 0x00, 0xE1, 0xBE, 0xAF,
0x00, 0xE1, 0xBE, 0xB8, 0x00, 0xE1, 0xBE, 0xB9, 0x00, 0xE1, 0xBE, 0xBC,
0x00, 0xCE, 0x99, 0x00, 0xE1, 0xBF, 0x8C, 0x00, 0xE1, 0xBF, 0x98, 0x00,
0xE1, 0xBF, 0x99, 0x00, 0xE1, 0xBF, 0xA8, 0x00, 0xE1, 0xBF, 0xA9, 0x00,
0xE1, 0xBF, 0xAC, 0x00, 0xE1, 0xBF, 0xBC, 0x00, 0xE2, 0x84, 0xB2, 0x00,
0xE2, 0x85, 0xA0, 0x00, 0xE2, 0x85, 0xA1, 0x00, 0xE2, 0x85, 0xA2, 0x00,
0xE2, 0x85, 0xA3, 0x00, 0xE2, 0x85, 0xA4, 0x00, 0xE2, 0x85, 0xA5, 0x00,
0xE2, 0x85, 0xA6, 0x00, 0xE2, 0x85, 0xA7, 0x00, 0xE2, 0x85, 0xA8, 0x00,
0xE2, 0x85, 0xA9, 0x00, 0xE2, 0x85, 0xAA, 0x00, 0xE2, 0x85, 0xAB, 0x00,
0xE2, 0x85, 0xAC, 0x00, 0xE2, 0x85, 0xAD, 0x00, 0xE2, 0x85, 0xAE, 0x00,
0xE2, 0x85, 0xAF, 0x00, 0xE2, 0x86, 0x83, 0x00, 0xE2, 0x92, 0xB6, 0x00,
0xE2, 0x92, 0xB7, 0x00, 0xE2, 0x92, 0xB8, 0x00, 0xE2, 0x92, 0xB9, 0x00,
0xE2, 0x92, 0xBA, 0x00, 0xE2, 0x92, 0xBB, 0x00, 0xE2, 0x92, 0xBC, 0x00,
0xE2, 0x92, 0xBD, 0x00, 0xE2, 0x92, 0xBE, 0x00, 0xE2, 0x92, 0xBF, 0x00,
0xE2, 0x93, 0x80, 0x00, 0xE2, 0x93, 0x81, 0x00, 0xE2, 0x93, 0x82, 0x00,
0xE2, 0x93, 0x83, 0x00, 0xE2, 0x93, 0x84, 0x00, 0xE2, 0x93, 0x85, 0x00,
0xE2, 0x93, 0x86, 0x00, 0xE2, 0x93, 0x87, 0x00, 0xE2, 0x93, 0x88, 0x00,
0xE2, 0x93, 0x89, 0x00, 0xE2, 0x93, 0x8A, 0x00, 0xE2, 0x93, 0x8B, 0x00,
0xE2, 0x93, 0x8C, 0x00, 0xE2, 0x93, 0x8D, 0x00, 0xE2, 0x93, 0x8E, 0x00,
0xE2, 0x93, 0x8F, 0x00, 0xE2, 0xB0, 0x80, 0x00, 0xE2, 0xB0, 0x81, 0x00,
0xE2, 0xB0, 0x82, 0x00, 0xE2, 0xB0, 0x83, 0x00, 0xE2, 0xB0, 0x84, 0x00,
0xE2, 0xB0, 0x85, 0x00, 0xE2, 0xB0, 0x86, 0x00, 0xE2, 0xB0, 0x87, 0x00,
0xE2, 0xB0, 0x88, 0x00, 0xE2, 0xB0, 0x89, 0x00, 0xE2, 0xB0, 0x8A, 0x00,
0xE2, 0xB0, 0x8B, 0x00, 0xE2, 0xB0, 0x8C, 0x00, 0xE2, 0xB0, 0x8D, 0x00,
0xE2, 0xB0, 0x8E, 0x00, 0xE2, 0xB0, 0x8F, 0x00, 0xE2, 0xB0, 0x90, 0x00,
0xE2, 0xB0, 0x91, 0x00, 0xE2, 0xB0, 0x92, 0x00, 0xE2, 0xB0, 0x93, 0x00,
0xE2, 0xB0, 0x94, 0x00, 0xE2, 0xB0, 0x95, 0x00, 0xE2, 0xB0, 0x96, 0x00,
0xE2, 0xB0, 0x97, 0x00, 0xE2, 0xB0, 0x98, 0x00, 0xE2, 0xB0, 0x99, 0x00,
0xE2, 0xB0, 0x9A, 0x00, 0xE2, 0xB0, 0x9B, 0x00, 0xE2, 0xB0, 0x9C, 0x00,
0xE2, 0xB0, 0x9D, 0x00, 0xE2, 0xB0, 0x9E, 0x00, 0xE2, 0xB0, 0x9F, 0x00,
0xE2, 0xB0, 0xA0, 0x00, 0xE2, 0xB0, 0xA1, 0x00, 0xE2, 0xB0, 0xA2, 0x00,
0xE2, 0xB0, 0xA3, 0x00, 0xE2, 0xB0, 0xA4, 0x00, 0xE2, 0xB0, 0xA5, 0x00,
0xE2, 0xB0, 0xA6, 0x00, 0xE2, 0xB0, 0xA7, 0x00, 0xE2, 0xB0, 0xA8, 0x00,
0xE2, 0xB0, 0xA9, 0x00, 0xE2, 0xB0, 0xAA, 0x00, 0xE2, 0xB0, 0xAB, 0x00,
0xE2, 0xB0, 0xAC, 0x00, 0xE2, 0xB0, 0xAD, 0x00, 0xE2, 0xB0, 0xAE, 0x00,
0xE2, 0xB1, 0xA0, 0x00, 0xC8, 0xBA, 0x00, 0xC8, 0xBE, 0x00, 0xE2, 0xB1,
0xA7, 0x00, 0xE2, 0xB1, 0xA9, 0x00, 0xE2, 0xB1, 0xAB, 0x00, 0xE2, 0xB1,
0xB2, 0x00, 0xE2, 0xB1, 0xB5, 0x00, 0xE2, 0xB2, 0x80, 0x00, 0xE2, 0xB2,
0x82, 0x00, 0xE2, 0xB2, 0x84, 0x00, 0xE2, 0xB2, 0x86, 0x00, 0xE2, 0xB2,
0x88, 0x00, 0xE2, 0xB2, 0x8A, 0x00, 0xE2, 0xB2, 0x8C, 0x00, 0xE2, 0xB2,
0x8E, 0x00, 0xE2, 0xB2, 0x90, 0x00, 0xE2, 0xB2, 0x92, 0x00, 0xE2, 0xB2,
0x94, 0x00, 0xE2, 0xB2, 0x96, 0x00, 0xE2, 0xB2, 0x98, 0x00, 0xE2, 0xB2,
0x9A, 0x00, 0xE2, 0xB2, 0x9C, 0x00, 0xE2, 0xB2, 0x9E, 0x00, 0xE2, 0xB2,
0xA0, 0x00, 0xE2, 0xB2, 0xA2, 0x00, 0xE2, 0xB2, 0xA4, 0x00, 0xE2, 0xB2,
0xA6, 0x00, 0xE2, 0xB2, 0xA8, 0x00, 0xE2, 0xB2, 0xAA, 0x00, 0xE2, 0xB2,
0xAC, 0x00, 0xE2, 0xB2, 0xAE, 0x00, 0xE2, 0xB2, 0xB0, 0x00, 0xE2, 0xB2,
0xB2, 0x00, 0xE2, 0xB2, 0xB4, 0x00, 0xE2, 0xB2, 0xB6, 0x00, 0xE2, 0xB2,
0xB8, 0x00, 0xE2, 0xB2, 0xBA, 0x00, 0xE2, 0xB2, 0xBC, 0x00, 0xE2, 0xB2,
0xBE, 0x00, 0xE2, 0xB3, 0x80, 0x00, 0xE2, 0xB3, 0x82, 0x00, 0xE2, 0xB3,
0x84, 0x00, 0xE2, 0xB3, 0x86, 0x00, 0xE2, 0xB3, 0x88, 0x00, 0xE2, 0xB3,
0x8A, 0x00, 0xE2, 0xB3, 0x8C, 0x00, 0xE2, 0xB3, 0x8E, 0x00, 0xE2, 0xB3,
0x90, 0x00, 0xE2, 0xB3, 0x92, 0x00, 0xE2, 0xB3, 0x94, 0x00, 0xE2, 0xB3,
0x96, 0x00, 0xE2, 0xB3, 0x98, 0x00, 0xE2, 0xB3, 0x9A, 0x00, 0xE2, 0xB3,
0x9C, 0x00, 0xE2, 0xB3, 0x9E, 0x00, 0xE2, 0xB3, 0xA0, 0x00, 0xE2, 0xB3,
0xA2, 0x00, 0xE2, 0xB3, 0xAB, 0x00, 0xE2, 0xB3, 0xAD, 0x00, 0xE2, 0xB3,
0xB2, 0x00, 0xE1, 0x82, 0xA0, 0x00, 0xE1, 0x82, 0xA1, 0x00, 0xE1, 0x82,
0xA2, 0x00, 0xE1, 0x82, 0xA3, 0x00, 0xE1, 0x82, 0xA4, 0x00, 0xE1, 0x82,
0xA5, 0x00, 0xE1, 0x82, 0xA6, 0x00, 0xE1, 0x82, 0xA7, 0x00, 0xE1, 0x82,
0xA8, 0x00, 0xE1, 0x82, 0xA9, 0x00, 0xE1, 0x82, 0xAA, 0x00, 0xE1, 0x82,
0xAB, 0x00, 0xE1, 0x82, 0xAC, 0x00, 0xE1, 0x82, 0xAD, 0x00, 0xE1, 0x82,
0xAE, 0x00, 0xE1, 0x82, 0xAF, 0x00, 0xE1, 0x82, 0xB0, 0x00, 0xE1, 0x82,
0xB1, 0x00, 0xE1, 0x82, 0xB2, 0x00, 0xE1, 0x82, 0xB3, 0x00, 0xE1, 0x82,
0xB4, 0x00, 0xE1, 0x82, 0xB5, 0x00, 0xE1, 0x82, 0xB6, 0x00, 0xE1, 0x82,
0xB7, 0x00, 0xE1, 0x82, 0xB8, 0x00, 0xE1, 0x82, 0xB9, 0x00, 0xE1, 0x82,
0xBA, 0x00, 0xE1, 0x82, 0xBB, 0x00, 0xE1, 0x82, 0xBC, 0x00, 0xE1, 0x82,
0xBD, 0x00, 0xE1, 0x82, 0xBE, 0x00, 0xE1, 0x82, 0xBF, 0x00, 0xE1, 0x83,
0x80, 0x00, 0xE1, 0x83, 0x81, 0x00, 0xE1, 0x83, 0x82, 0x00, 0xE1, 0x83,
0x83, 0x00, 0xE1, 0x83, 0x84, 0x00, 0xE1, 0x83, 0x85, 0x00, 0xE1, 0x83,
0x87, 0x00, 0xE1, 0x83, 0x8D, 0x00, 0xEA, 0x99, 0x80, 0x00, 0xEA, 0x99,
0x82, 0x00, 0xEA, 0x99, 0x84, 0x00, 0xEA, 0x99, 0x86, 0x00, 0xEA, 0x99,
0x88, 0x00, 0xEA, 0x99, 0x8A, 0x00, 0xEA, 0x99, 0x8C, 0x00, 0xEA, 0x99,
0x8E, 0x00, 0xEA, 0x99, 0x90, 0x00, 0xEA, 0x99, 0x92, 0x00, 0xEA, 0x99,
0x94, 0x00, 0xEA, 0x99, 0x96, 0x00, 0xEA, 0x99, 0x98, 0x00, 0xEA, 0x99,
0x9A, 0x00, 0xEA, 0x99, 0x9C, 0x00, 0xEA, 0x99, 0x9E, 0x00, 0xEA, 0x99,
0xA0, 0x00, 0xEA, 0x99, 0xA2, 0x00, 0xEA, 0x99, 0xA4, 0x00, 0xEA, 0x99,
0xA6, 0x00, 0xEA, 0x99, 0xA8, 0x00, 0xEA, 0x99, 0xAA, 0x00, 0xEA, 0x99,
0xAC, 0x00, 0xEA, 0x9A, 0x80, 0x00, 0xEA, 0x9A, 0x82, 0x00, 0xEA, 0x9A,
0x84, 0x00, 0xEA, 0x9A, 0x86, 0x00, 0xEA, 0x9A, 0x88, 0x00, 0xEA, 0x9A,
0x8A, 0x00, 0xEA, 0x9A, 0x8C, 0x00, 0xEA, 0x9A, 0x8E, 0x00, 0xEA, 0x9A,
0x90, 0x00, 0xEA, 0x9A, 0x92, 0x00, 0xEA, 0x9A, 0x94, 0x00, 0xEA, 0x9A,
0x96, 0x00, 0xEA, 0x9A, 0x98, 0x00, 0xEA, 0x9A, 0x9A, 0x00, 0xEA, 0x9C,
0xA2, 0x00, 0xEA, 0x9C, 0xA4, 0x00, 0xEA, 0x9C, 0xA6, 0x00, 0xEA, 0x9C,
0xA8, 0x00, 0xEA, 0x9C, 0xAA, 0x00, 0xEA, 0x9C, 0xAC, 0x00, 0xEA, 0x9C,
0xAE, 0x00, 0xEA, 0x9C, 0xB2, 0x00, 0xEA, 0x9C, 0xB4, 0x00, 0xEA, 0x9C,
0xB6, 0x00, 0xEA, 0x9C, 0xB8, 0x00, 0xEA, 0x9C, 0xBA, 0x00, 0xEA, 0x9C,
0xBC, 0x00, 0xEA, 0x9C, 0xBE, 0x00, 0xEA, 0x9D, 0x80, 0x00, 0xEA, 0x9D,
0x82, 0x00, 0xEA, 0x9D, 0x84, 0x00, 0xEA, 0x9D, 0x86, 0x00, 0xEA, 0x9D,
0x88, 0x00, 0xEA, 0x9D, 0x8A, 0x00, 0xEA, 0x9D, 0x8C, 0x00, 0xEA, 0x9D,
0x8E, 0x00, 0xEA, 0x9D, 0x90, 0x00, 0xEA, 0x9D, 0x92, 0x00, 0xEA, 0x9D,
0x94, 0x00, 0xEA, 0x9D, 0x96, 0x00, 0xEA, 0x9D, 0x98, 0x00, 0xEA, 0x9D,
0x9A, 0x00, 0xEA, 0x9D, 0x9C, 0x00, 0xEA, 0x9D, 0x9E, 0x00, 0xEA, 0x9D,
0xA0, 0x00, 0xEA, 0x9D, 0xA2, 0x00, 0xEA, 0x9D, 0xA4, 0x00, 0xEA, 0x9D,
0xA6, 0x00, 0xEA, 0x9D, 0xA8, 0x00, 0xEA, 0x9D, 0xAA, 0x00, 0xEA, 0x9D,
0xAC, 0x00, 0xEA, 0x9D, 0xAE, 0x00, 0xEA, 0x9D, 0xB9, 0x00, 0xEA, 0x9D,
0xBB, 0x00, 0xEA, 0x9D, 0xBE, 0x00, 0xEA, 0x9E, 0x80, 0x00, 0xEA, 0x9E,
0x82, 0x00, 0xEA, 0x9E, 0x84, 0x00, 0xEA, 0x9E, 0x86, 0x00, 0xEA, 0x9E,
0x8B, 0x00, 0xEA, 0x9E, 0x90, 0x00, 0xEA, 0x9E, 0x92, 0x00, 0xEA, 0x9E,
0x96, 0x00, 0xEA, 0x9E, 0x98, 0x00, 0xEA, 0x9E, 0x9A, 0x00, 0xEA, 0x9E,
0x9C, 0x00, 0xEA, 0x9E, 0x9E, 0x00, 0xEA, 0x9E, 0xA0, 0x00, 0xEA, 0x9E,
0xA2, 0x00, 0xEA, 0x9E, 0xA4, 0x00, 0xEA, 0x9E, 0xA6, 0x00, 0xEA, 0x9E,
0xA8, 0x00, 0xEA, 0x9E, 0xB4, 0x00, 0xEA, 0x9E, 0xB6, 0x00, 0xEA, 0x9E,
0xB3, 0x00, 0xE1, 0x8E, 0xA0, 0x00, 0xE1, 0x8E, 0xA1, 0x00, 0xE1, 0x8E,
0xA2, 0x00, 0xE1, 0x8E, 0xA3, 0x00, 0xE1, 0x8E, 0xA4, 0x00, 0xE1, 0x8E,
0xA5, 0x00, 0xE1, 0x8E, 0xA6, 0x00, 0xE1, 0x8E, 0xA7, 0x00, 0xE1, 0x8E,
0xA8, 0x00, 0xE1, 0x8E, 0xA9, 0x00, 0xE1, 0x8E, 0xAA, 0x00, 0xE1, 0x8E,
0xAB, 0x00, 0xE1, 0x8E, 0xAC, 0x00, 0xE1, 0x8E, 0xAD, 0x00, 0xE1, 0x8E,
0xAE, 0x00, 0xE1, 0x8E, 0xAF, 0x00, 0xE1, 0x8E, 0xB0, 0x00, 0xE1, 0x8E,
0xB1, 0x00, 0xE1, 0x8E, 0xB2, 0x00, 0xE1, 0x8E, 0xB3, 0x00, 0xE1, 0x8E,
0xB4, 0x00, 0xE1, 0x8E, 0xB5, 0x00, 0xE1, 0x8E, 0xB6, 0x00, 0xE1, 0x8E,
0xB7, 0x00, 0xE1, 0x8E, 0xB8, 0x00, 0xE1, 0x8E, 0xB9, 0x00, 0xE1, 0x8E,
0xBA, 0x00, 0xE1, 0x8E, 0xBB, 0x00, 0xE1, 0x8E, 0xBC, 0x00, 0xE1, 0x8E,
0xBD, 0x00, 0xE1, 0x8E, 0xBE, 0x00, 0xE1, 0x8E, 0xBF, 0x00, 0xE1, 0x8F,
0x80, 0x00, 0xE1, 0x8F, 0x81, 0x00, 0xE1, 0x8F, 0x82, 0x00, 0xE1, 0x8F,
0x83, 0x00, 0xE1, 0x8F, 0x84, 0x00, 0xE1, 0x8F, 0x85, 0x00, 0xE1, 0x8F,
0x86, 0x00, 0xE1, 0x8F, 0x87, 0x00, 0xE1, 0x8F, 0x88, 0x00, 0xE1, 0x8F,
0x89, 0x00, 0xE1, 0x8F, 0x8A, 0x00, 0xE1, 0x8F, 0x8B, 0x00, 0xE1, 0x8F,
0x8C, 0x00, 0xE1, 0x8F, 0x8D, 0x00, 0xE1, 0x8F, 0x8E, 0x00, 0xE1, 0x8F,
0x8F, 0x00, 0xE1, 0x8F, 0x90, 0x00, 0xE1, 0x8F, 0x91, 0x00, 0xE1, 0x8F,
0x92, 0x00, 0xE1, 0x8F, 0x93, 0x00, 0xE1, 0x8F, 0x94, 0x00, 0xE1, 0x8F,
0x95, 0x00, 0xE1, 0x8F, 0x96, 0x00, 0xE1, 0x8F, 0x97, 0x00, 0xE1, 0x8F,
0x98, 0x00, 0xE1, 0x8F, 0x99, 0x00, 0xE1, 0x8F, 0x9A, 0x00, 0xE1, 0x8F,
0x9B, 0x00, 0xE1, 0x8F, 0x9C, 0x00, 0xE1, 0x8F, 0x9D, 0x00, 0xE1, 0x8F,
0x9E, 0x00, 0xE1, 0x8F, 0x9F, 0x00, 0xE1, 0x8F, 0xA0, 0x00, 0xE1, 0x8F,
0xA1, 0x00, 0xE1, 0x8F, 0xA2, 0x00, 0xE1, 0x8F, 0xA3, 0x00, 0xE1, 0x8F,
0xA4, 0x00, 0xE1, 0x8F, 0xA5, 0x00, 0xE1, 0x8F, 0xA6, 0x00, 0xE1, 0x8F,
0xA7, 0x00, 0xE1, 0x8F, 0xA8, 0x00, 0xE1, 0x8F, 0xA9, 0x00, 0xE1, 0x8F,
0xAA, 0x00, 0xE1, 0x8F, 0xAB, 0x00, 0xE1, 0x8F, 0xAC, 0x00, 0xE1, 0x8F,
0xAD, 0x00, 0xE1, 0x8F, 0xAE, 0x00, 0xE1, 0x8F, 0xAF, 0x00, 0xEF, 0xBC,
0xA1, 0x00, 0xEF, 0xBC, 0xA2, 0x00, 0xEF, 0xBC, 0xA3, 0x00, 0xEF, 0xBC,
0xA4, 0x00, 0xEF, 0xBC, 0xA5, 0x00, 0xEF, 0xBC, 0xA6, 0x00, 0xEF, 0xBC,
0xA7, 0x00, 0xEF, 0xBC, 0xA8, 0x00, 0xEF, 0xBC, 0xA9, 0x00, 0xEF, 0xBC,
0xAA, 0x00, 0xEF, 0xBC, 0xAB, 0x00, 0xEF, 0xBC, 0xAC, 0x00, 0xEF, 0xBC,
0xAD, 0x00, 0xEF, 0xBC, 0xAE, 0x00, 0xEF, 0xBC, 0xAF, 0x00, 0xEF, 0xBC,
0xB0, 0x00, 0xEF, 0xBC, 0xB1, 0x00, 0xEF, 0xBC, 0xB2, 0x00, 0xEF, 0xBC,
0xB3, 0x00, 0xEF, 0xBC, 0xB4, 0x00, 0xEF, 0xBC, 0xB5, 0x00, 0xEF, 0xBC,
0xB6, 0x00, 0xEF, 0xBC, 0xB7, 0x00, 0xEF, 0xBC, 0xB8, 0x00, 0xEF, 0xBC,
0xB9, 0x00, 0xEF, 0xBC, 0xBA, 0x00, 0x53, 0x53, 0x00, 0xCA, 0xBC, 0x4E,
0x00, 0x4A, 0xCC, 0x8C, 0x00, 0xCE, 0x99, 0xCC, 0x88, 0xCC, 0x81, 0x00,
0xCE, 0xA5, 0xCC, 0x88, 0xCC, 0x81, 0x00, 0xD4, 0xB5, 0xD5, 0x92, 0x00,
0x48, 0xCC, 0xB1, 0x00, 0x54, 0xCC, 0x88, 0x00, 0x57, 0xCC, 0x8A, 0x00,
0x59, 0xCC, 0x8A, 0x00, 0x41, 0xCA, 0xBE, 0x00, 0xCE, 0xA5, 0xCC, 0x93,
0x00, 0xCE, 0xA5, 0xCC, 0x93, 0xCC, 0x80, 0x00, 0xCE, 0xA5, 0xCC, 0x93,
0xCC, 0x81, 0x00, 0xCE, 0xA5, 0xCC, 0x93, 0xCD, 0x82, 0x00, 0xE1, 0xBC,
0x88, 0xCE, 0x99, 0x00, 0xE1, 0xBC, 0x89, 0xCE, 0x99, 0x00, 0xE1, 0xBC,
0x8A, 0xCE, 0x99, 0x00, 0xE1, 0xBC, 0x8B, 0xCE, 0x99, 0x00, 0xE1, 0xBC,
0x8C, 0xCE, 0x99, 0x00, 0xE1, 0xBC, 0x8D, 0xCE, 0x99, 0x00, 0xE1, 0xBC,
0x8E, 0xCE, 0x99, 0x00, 0xE1, 0xBC, 0x8F, 0xCE, 0x99, 0x00, 0xE1, 0xBC,
0x88, 0xCE, 0x99, 0x00, 0xE1, 0xBC, 0x89, 0xCE, 0x99, 0x00, 0xE1, 0xBC,
0x8A, 0xCE, 0x99, 0x00, 0xE1, 0xBC, 0x8B, 0xCE, 0x99, 0x00, 0xE1, 0xBC,
0x8C, 0xCE, 0x99, 0x00, 0xE1, 0xBC, 0x8D, 0xCE, 0x99, 0x00, 0xE1, 0xBC,
0x8E, 0xCE, 0x99, 0x00, 0xE1, 0xBC, 0x8F, 0xCE, 0x99, 0x00, 0xE1, 0xBC,
0xA8, 0xCE, 0x99, 0x00, 0xE1, 0xBC, 0xA9, 0xCE, 0x99, 0x00, 0xE1, 0xBC,
0xAA, 0xCE, 0x99, 0x00, 0xE1, 0xBC, 0xAB, 0xCE, 0x99, 0x00, 0xE1, 0xBC,
0xAC, 0xCE, 0x99, 0x00, 0xE1, 0xBC, 0xAD, 0xCE, 0x99, 0x00, 0xE1, 0xBC,
0xAE, 0xCE, 0x99, 0x00, 0xE1, 0xBC, 0xAF, 0xCE, 0x99, 0x00, 0xE1, 0xBC,
0xA8, 0xCE, 0x99, 0x00, 0xE1, 0xBC, 0xA9, 0xCE, 0x99, 0x00, 0xE1, 0xBC,
0xAA, 0xCE, 0x99, 0x00, 0xE1, 0xBC, 0xAB, 0xCE, 0x99, 0x00, 0xE1, 0xBC,
0xAC, 0xCE, 0x99, 0x00, 0xE1, 0xBC, 0xAD, 0xCE, 0x99, 0x00, 0xE1, 0xBC,
0xAE, 0xCE, 0x99, 0x00, 0xE1, 0xBC, 0xAF, 0xCE, 0x99, 0x00, 0xE1, 0xBD,
0xA8, 0xCE, 0x99, 0x00, 0xE1, 0xBD, 0xA9, 0xCE, 0x99, 0x00, 0xE1, 0xBD,
0xAA, 0xCE, 0x99, 0x00, 0xE1, 0xBD, 0xAB, 0xCE, 0x99, 0x00, 0xE1, 0xBD,
0xAC, 0xCE, 0x99, 0x00, 0xE1, 0xBD, 0xAD, 0xCE, 0x99, 0x00, 0xE1, 0xBD,
0xAE, 0xCE, 0x99, 0x00, 0xE1, 0xBD, 0xAF, 0xCE, 0x99, 0x00, 0xE1, 0xBD,
0xA8, 0xCE, 0x99, 0x00, 0xE1, 0xBD, 0xA9, 0xCE, 0x99, 0x00, 0xE1, 0xBD,
0xAA, 0xCE, 0x99, 0x00, 0xE1, 0xBD, 0xAB, 0xCE, 0x99, 0x00, 0xE1, 0xBD,
0xAC, 0xCE, 0x99, 0x00, 0xE1, 0xBD, 0xAD, 0xCE, 0x99, 0x00, 0xE1, 0xBD,
0xAE, 0xCE, 0x99, 0x00, 0xE1, 0xBD, 0xAF, 0xCE, 0x99, 0x00, 0xE1, 0xBE,
0xBA, 0xCE, 0x99, 0x00, 0xCE, 0x91, 0xCE, 0x99, 0x00, 0xCE, 0x86, 0xCE,
0x99, 0x00, 0xCE, 0x91, 0xCD, 0x82, 0x00, 0xCE, 0x91, 0xCD, 0x82, 0xCE,
0x99, 0x00, 0xCE, 0x91, 0xCE, 0x99, 0x00, 0xE1, 0xBF, 0x8A, 0xCE, 0x99,
0x00, 0xCE, 0x97, 0xCE, 0x99, 0x00, 0xCE, 0x89, 0xCE, 0x99, 0x00, 0xCE,
0x97, 0xCD, 0x82, 0x00, 0xCE, 0x97, 0xCD, 0x82, 0xCE, 0x99, 0x00, 0xCE,
0x97, 0xCE, 0x99, 0x00, 0xCE, 0x99, 0xCC, 0x88, 0xCC, 0x80, 0x00, 0xCE,
0x99, 0xCC, 0x88, 0xCC, 0x81, 0x00, 0xCE, 0x99, 0xCD, 0x82, 0x00, 0xCE,
0x99, 0xCC, 0x88, 0xCD, 0x82, 0x00, 0xCE, 0xA5, 0xCC, 0x88, 0xCC, 0x80,
0x00, 0xCE, 0xA5, 0xCC, 0x88, 0xCC, 0x81, 0x00, 0xCE, 0xA1, 0xCC, 0x93,
0x00, 0xCE, 0xA5, 0xCD, 0x82, 0x00, 0xCE, 0xA5, 0xCC, 0x88, 0xCD, 0x82,
0x00, 0xE1, 0xBF, 0xBA, 0xCE, 0x99, 0x00, 0xCE, 0xA9, 0xCE, 0x99, 0x00,
0xCE, 0x8F, 0xCE, 0x99, 0x00, 0xCE, 0xA9, 0xCD, 0x82, 0x00, 0xCE, 0xA9,
0xCD, 0x82, 0xCE, 0x99, 0x00, 0xCE, 0xA9, 0xCE, 0x99, 0x00, 0x46, 0x46,
0x00, 0x46, 0x49, 0x00, 0x46, 0x4C, 0x00, 0x46, 0x46, 0x49, 0x00, 0x46,
0x46, 0x4C, 0x00, 0x53, 0x54, 0x00, 0x53, 0x54, 0x00, 0xD5, 0x84, 0xD5,
0x86, 0x00, 0xD5, 0x84, 0xD4, 0xB5, 0x00, 0xD5, 0x84, 0xD4, 0xBB, 0x00,
0xD5, 0x8E, 0xD5, 0x86, 0x00, 0xD5, 0x84, 0xD4, 0xBD, 0x00,
};

452
vendor/nunicode/src/libnu/strcoll.c vendored Normal file
View File

@@ -0,0 +1,452 @@
#include <assert.h>
#include <libnu/defines.h>
#include <libnu/ducet.h>
#include <libnu/strcoll.h>
#include <libnu/strcoll_internal.h>
#if (defined NU_WITH_Z_COLLATION) || (defined NU_WITH_N_COLLATION)
int32_t _compound_weight(int32_t w,
const char **encoded, const char *limit,
nu_read_iterator_t read, nu_compound_read_t com,
const char **tail,
nu_codepoint_weight_t weight, void *context) {
const char *tailp = *tail;
const char *p = *encoded;
int32_t new_w = w;
int32_t consumed = 1; /* one codepoint was consumed at the top of the stack (_nu_strcoll) */
while (p < limit) {
uint32_t u = 0;
const char *np = com(p, limit, read, &u, &tailp);
new_w = weight(u, &w, context);
/* after this point, w might hold rollback value
* and new_w holds actual weight */
++consumed;
if (new_w >= 0) {
/* if w == 0 or w == 1, then *p or *np is already pointing
* to needed place, otherwise re-read encoded in the forward
* direction preserving correctness of tail pointer */
if (w != 0 && w != 1) {
assert(consumed + w > 1);
np = *encoded;
tailp = *tail;
for (int32_t i = 0; i < consumed - w; ++i) {
np = com(np, limit, read, 0, &tailp);
}
w = 0;
}
*encoded = (w == 0 ? np : p);
*tail = tailp;
break;
}
p = np;
w = new_w;
}
if (new_w < 0) {
new_w = weight(0, &w, context);
}
assert(new_w >= 0);
return new_w;
}
inline
int _nu_strcoll(const char *lhs, const char *lhs_limit,
const char *rhs, const char *rhs_limit,
nu_read_iterator_t it1, nu_read_iterator_t it2,
nu_compound_read_t com1, nu_compound_read_t com2,
nu_codepoint_weight_t weight, void *context,
ssize_t *collated_left, ssize_t *collated_right) {
int cmp = 0;
const char *lp = lhs, *rp = rhs;
const char *ltailp = 0, *rtailp = 0;
uint32_t u1 = 0, u2 = 0;
while ((lp < lhs_limit && rp < rhs_limit)
|| (ltailp != 0 && rp < rhs_limit)
|| (rtailp != 0 && lp < lhs_limit)) {
lp = com1(lp, lhs_limit, it1, &u1, &ltailp);
rp = com2(rp, rhs_limit, it2, &u2, &rtailp);
#ifdef NU_DISABLE_CONTRACTIONS
/* if contractions are disabled, then same codepoints
* will produce same weights and there is no need
* to weight each, i.e. weight(u1) == weight(u2) and
* collation may proceed to next codepoints */
if (u1 != u2) {
#endif
int32_t w1 = weight(u1, 0, context);
int32_t w2 = weight(u2, 0, context);
if (w1 < 0) {
w1 = _compound_weight(w1, &lp, lhs_limit,
it1, com1, &ltailp,
weight, context);
}
if (w2 < 0) {
w2 = _compound_weight(w2, &rp, rhs_limit,
it2, com2, &rtailp,
weight, context);
}
assert(w1 >= 0);
assert(w2 >= 0);
if (w1 < w2) {
cmp = -1;
break;
}
else if (w1 > w2) {
cmp = 1;
break;
}
#ifdef NU_DISABLE_CONTRACTIONS
}
#endif
if (u1 == 0 || u2 == 0) {
break;
}
}
/* collated_left and collated_right should count
* number of successfully collated bytes, not taking
* into account limits. therefore if cmp != 0,
* number of collated bytes is decreased by (at least) 1
* and cmp is limits-fixed afterwards */
if (collated_left != 0) {
*collated_left = (lp - lhs) - (cmp == 0 ? 0 : 1);
}
if (collated_right != 0) {
*collated_right = (rp - rhs) - (cmp == 0 ? 0 : 1);
}
if (cmp == 0) {
if (rp < rhs_limit && lp >= lhs_limit) {
cmp = -1;
}
else if (lp < lhs_limit && rp >= rhs_limit) {
cmp = 1;
}
}
return cmp;
}
inline
const char* _nu_strchr(const char *lhs, const char *lhs_limit,
uint32_t c, nu_read_iterator_t read,
nu_compound_read_t com,
nu_casemapping_t casemap, nu_read_iterator_t casemap_read) {
const char *p = lhs;
const char *tail = 0;
uint32_t u = 0;
const char *rhs = 0;
if (casemap != 0) {
rhs = casemap(c);
if (rhs != 0) {
rhs = casemap_read(rhs, &c); /* read new lead codepoint */
}
}
while (p < lhs_limit) {
const char *np = com(p, lhs_limit, read, &u, &tail);
if (u == 0) {
break;
}
if (u == c) {
if (rhs == 0) {
return p;
}
/* rhs != 0 */
const char *rp = rhs;
uint32_t u2 = 0;
do {
rp = casemap_read(rp, &u2);
if (u2 == 0) {
return p; /* succ exit point */
}
if (np >= lhs_limit) {
return 0;
}
np = com(np, lhs_limit, read, &u, &tail);
if (u == 0) {
return 0;
}
if (u != u2) {
break;
}
}
while (u2 != 0);
}
p = np;
}
return 0;
}
inline
const char* _nu_strrchr(const char *encoded, const char *limit,
uint32_t c, nu_read_iterator_t read,
nu_compound_read_t com,
nu_casemapping_t casemap, nu_read_iterator_t casemap_read) {
/* there is probably not much sense in finding string end by decoding it
* and then reverse read string again to find last codepoint, therefore
* this is a sequence of _nu_strchr() in forward direction
*
* please let me know if i'm wrong */
const char *p = encoded;
const char *last = 0;
while (p < limit) {
p = _nu_strchr(p, limit, c, read, com, casemap, casemap_read);
if (p == 0) {
return last;
}
last = p;
p = read(p, 0); /* skip one codepoint and continue */
}
return last;
}
inline
const char* _nu_strstr(const char *haystack, const char *haystack_limit,
const char *needle, const char *needle_limit,
nu_read_iterator_t it1, nu_read_iterator_t it2,
nu_compound_read_t com1, nu_compound_read_t com2,
nu_casemapping_t casemap, nu_read_iterator_t casemap_read,
nu_codepoint_weight_t weight, void *context) {
uint32_t n0 = 0;
if (needle_limit != needle) {
it2(needle, &n0);
}
if (needle_limit == needle || n0 == 0) {
return haystack;
}
ssize_t needle_len = (needle_limit != NU_UNLIMITED
? (needle_limit - needle)
: nu_strbytelen(needle, it2));
const char *h0 = haystack;
do {
h0 = _nu_strchr(h0, haystack_limit,
n0, it1,
com1,
casemap, casemap_read);
if (h0 == 0) {
break;
}
ssize_t collated_left = 0, collated_right = 0;
_nu_strcoll(h0, haystack_limit, needle, needle_limit,
it1, it2,
com1, com2,
weight, context,
&collated_left, &collated_right);
/* it doesn't matter what collate result is
* if whole needle was successfully collated */
if (collated_right >= needle_len) {
return h0;
}
/* skip one codepoint in haystack */
if (h0 < haystack_limit) {
h0 = it1(h0, 0);
}
}
while (h0 != 0 && h0 < haystack_limit);
return 0;
}
#ifdef NU_WITH_Z_COLLATION
const char* nu_strchr(const char *encoded, uint32_t c, nu_read_iterator_t read) {
return _nu_strchr(encoded, NU_UNLIMITED,
c, read,
nu_default_compound_read,
0, 0);
}
const char* nu_strcasechr(const char *encoded, uint32_t c, nu_read_iterator_t read) {
return _nu_strchr(encoded, NU_UNLIMITED,
c, read,
nu_nocase_compound_read,
NU_FOLDING_FUNCTION, nu_casemap_read);
}
const char* nu_strrchr(const char *encoded, uint32_t c, nu_read_iterator_t read) {
return _nu_strrchr(encoded, NU_UNLIMITED,
c, read,
nu_default_compound_read,
0, 0);
}
const char* nu_strrcasechr(const char *encoded, uint32_t c, nu_read_iterator_t read) {
return _nu_strrchr(encoded, NU_UNLIMITED, c, read,
nu_nocase_compound_read,
NU_FOLDING_FUNCTION, nu_casemap_read);
}
int nu_strcoll(const char *s1, const char *s2,
nu_read_iterator_t s1_read, nu_read_iterator_t s2_read) {
return _nu_strcoll(s1, NU_UNLIMITED, s2, NU_UNLIMITED,
s1_read, s2_read,
nu_default_compound_read, nu_default_compound_read,
nu_ducet_weight, 0,
0, 0);
}
int nu_strcasecoll(const char *s1, const char *s2,
nu_read_iterator_t s1_read, nu_read_iterator_t s2_read) {
return _nu_strcoll(s1, NU_UNLIMITED, s2, NU_UNLIMITED,
s1_read, s2_read,
nu_nocase_compound_read, nu_nocase_compound_read,
nu_ducet_weight, 0,
0, 0);
}
const char* nu_strstr(const char *haystack, const char *needle,
nu_read_iterator_t haystack_read, nu_read_iterator_t needle_read) {
return _nu_strstr(haystack, NU_UNLIMITED, needle, NU_UNLIMITED,
haystack_read, needle_read,
nu_default_compound_read, nu_default_compound_read,
0, 0,
nu_ducet_weight, 0);
}
const char* nu_strcasestr(const char *haystack, const char *needle,
nu_read_iterator_t haystack_read, nu_read_iterator_t needle_read) {
return _nu_strstr(haystack, NU_UNLIMITED, needle, NU_UNLIMITED,
haystack_read, needle_read,
nu_nocase_compound_read, nu_nocase_compound_read,
NU_FOLDING_FUNCTION, nu_casemap_read,
nu_ducet_weight, 0);
}
#endif /* NU_WITH_Z_COLLATION */
#ifdef NU_WITH_N_COLLATION
const char* nu_strnchr(const char *encoded, size_t max_len, uint32_t c, nu_read_iterator_t read) {
return _nu_strchr(encoded, encoded + max_len,
c, read,
nu_default_compound_read,
0, 0);
}
const char* nu_strcasenchr(const char *encoded, size_t max_len, uint32_t c, nu_read_iterator_t read) {
return _nu_strchr(encoded, encoded + max_len,
c, read,
nu_nocase_compound_read,
NU_FOLDING_FUNCTION, nu_casemap_read);
}
const char* nu_strrnchr(const char *encoded, size_t max_len, uint32_t c, nu_read_iterator_t read) {
return _nu_strrchr(encoded, encoded + max_len,
c, read,
nu_default_compound_read,
0, 0);
}
const char* nu_strrcasenchr(const char *encoded, size_t max_len, uint32_t c,
nu_read_iterator_t read) {
return _nu_strrchr(encoded, encoded + max_len,
c, read,
nu_nocase_compound_read,
NU_FOLDING_FUNCTION, nu_casemap_read);
}
int nu_strncoll(const char *s1, size_t s1_max_len,
const char *s2, size_t s2_max_len,
nu_read_iterator_t s1_read, nu_read_iterator_t s2_read) {
return _nu_strcoll(s1, s1 + s1_max_len, s2, s2 + s2_max_len,
s1_read, s2_read,
nu_default_compound_read, nu_default_compound_read,
nu_ducet_weight, 0,
0, 0);
}
int nu_strcasencoll(const char *s1, size_t s1_max_len,
const char *s2, size_t s2_max_len,
nu_read_iterator_t s1_read, nu_read_iterator_t s2_read) {
return _nu_strcoll(s1, s1 + s1_max_len, s2, s2 + s2_max_len,
s1_read, s2_read,
nu_nocase_compound_read, nu_nocase_compound_read,
nu_ducet_weight, 0,
0, 0);
}
const char* nu_strnstr(const char *haystack, size_t haystack_max_len,
const char *needle, size_t needle_max_len,
nu_read_iterator_t haystack_read, nu_read_iterator_t needle_read) {
return _nu_strstr(haystack, haystack + haystack_max_len,
needle, needle + needle_max_len,
haystack_read, needle_read,
nu_default_compound_read, nu_default_compound_read,
0, 0,
nu_ducet_weight, 0);
}
const char* nu_strcasenstr(const char *haystack, size_t haystack_max_len,
const char *needle, size_t needle_max_len,
nu_read_iterator_t haystack_read, nu_read_iterator_t needle_read) {
return _nu_strstr(haystack, haystack + haystack_max_len,
needle, needle + needle_max_len,
haystack_read, needle_read,
nu_nocase_compound_read, nu_nocase_compound_read,
NU_FOLDING_FUNCTION, nu_casemap_read,
nu_ducet_weight, 0);
}
#endif /* NU_WITH_N_COLLATION */
#endif /* NU_WITH_Z_COLLATION || NU_WITH_N_COLLATION */

89
vendor/nunicode/src/libnu/strings.c vendored Normal file
View File

@@ -0,0 +1,89 @@
#include <libnu/defines.h>
#include <libnu/strings.h>
#if defined (NU_WITH_Z_STRINGS) || defined(NU_WITH_N_STRINGS)
static ssize_t _nu_strlen(const char *encoded, const char *limit, nu_read_iterator_t it) {
ssize_t len = 0;
const char *p = encoded;
while (p < limit) {
uint32_t u = 0;
p = it(p, &u);
if (u == 0) {
break;
}
++len;
}
return len;
}
static ssize_t _nu_bytelen(const uint32_t *unicode, const uint32_t *limit, nu_write_iterator_t it) {
ssize_t len = 0;
const uint32_t *p = unicode;
while (p < limit) {
if (*p == 0) {
break;
}
/* nu_write_iterator_t will return offset relative to 0
* which is effectively bytes length of codepoint */
size_t byte_len = (size_t)it(*p, 0);
len += byte_len;
++p;
}
return len;
}
static ssize_t _nu_strbytelen(const char *encoded, const char *limit, nu_read_iterator_t it) {
uint32_t u = 0;
const char *p = encoded;
while (p < limit) {
const char *np = it(p, &u);
if (u == 0) {
return (p - encoded);
}
p = np;
}
return 0;
}
#endif /* NU_WITH_N_STRINGS || NU_WITH_Z_STRINGS */
#ifdef NU_WITH_Z_STRINGS
ssize_t nu_strlen(const char *encoded, nu_read_iterator_t it) {
return _nu_strlen(encoded, NU_UNLIMITED, it);
}
ssize_t nu_bytelen(const uint32_t *unicode, nu_write_iterator_t it) {
return _nu_bytelen(unicode, NU_UNLIMITED, it);
}
ssize_t nu_strbytelen(const char *encoded, nu_read_iterator_t it) {
return _nu_strbytelen(encoded, NU_UNLIMITED, it);
}
#endif /* NU_WITH_Z_STRINGS */
#ifdef NU_WITH_N_STRINGS
ssize_t nu_strnlen(const char *encoded, size_t max_len, nu_read_iterator_t it) {
return _nu_strlen(encoded, encoded + max_len, it);
}
ssize_t nu_bytenlen(const uint32_t *unicode, size_t max_len, nu_write_iterator_t it) {
return _nu_bytelen(unicode, unicode + max_len, it);
}
#endif /* NU_WITH_N_STRINGS */

58
vendor/nunicode/src/libnu/tolower.c vendored Normal file
View File

@@ -0,0 +1,58 @@
#include <assert.h>
#include <libnu/casemap.h>
#ifdef NU_WITH_TOLOWER
#include <libnu/casemap_internal.h>
#include "gen/_tolower.c"
/* in nu_casemap_read (UTF-8), zero-terminated */
static const char *__nu_final_sigma = "ς";
const char* nu_tolower(uint32_t codepoint) {
return _nu_to_something(codepoint, NU_TOLOWER_G, NU_TOLOWER_G_SIZE,
NU_TOLOWER_VALUES_C, NU_TOLOWER_VALUES_I, NU_TOLOWER_COMBINED);
}
const char* _nu_tolower(const char *encoded, const char *limit, nu_read_iterator_t read,
uint32_t *u, const char **transform,
void *context) {
(void)(context);
uint32_t _u = 0;
const char *np = read(encoded, &_u);
if (u != 0) {
*u = _u;
}
/* handling of 0x03A3 ('Σ')
*
* this is the only language-independent exception described in
* SpecialCasing.txt (Unicode 7.0) */
assert(nu_casemap_read == nu_utf8_read);
if (_u == 0x03A3) {
if (np >= limit) {
*transform = __nu_final_sigma;
return np;
}
uint32_t nu = 0;
read(np, &nu);
if (nu == 0) {
*transform = __nu_final_sigma;
return np;
}
}
*transform = nu_tolower(_u);
return np;
}
#endif /* NU_WITH_TOLOWER */

57
vendor/nunicode/src/libnu/tounaccent.c vendored Normal file
View File

@@ -0,0 +1,57 @@
#include <assert.h>
#include <libnu/casemap.h>
#ifdef NU_WITH_UNACCENT
#include <libnu/casemap_internal.h>
#include "gen/_tounaccent.c"
const char* nu_tounaccent(uint32_t codepoint) {
typedef struct {
uint32_t block_start;
uint32_t block_end;
} block_t;
static const block_t blocks[] = {
{ 0x0300, 0x036F }, /* Combining Diacritical Marks */
{ 0x1AB0, 0x1AFF }, /* Combining Diacritical Marks Extended */
{ 0x20D0, 0x20FF }, /* Combining Diacritical Marks for Symbols */
{ 0x1DC0, 0x1DFF }, /* Combining Diacritical Marks Supplement */
};
static const size_t blocks_count = sizeof(blocks) / sizeof(*blocks);
/* check if codepoint itself is a diacritic,
* return empty string in that case
* (transform into empty string */
assert(nu_casemap_read == nu_utf8_read);
for (size_t i = 0; i < blocks_count; ++i) {
if (codepoint >= blocks[i].block_start && codepoint <= blocks[i].block_end) {
return ""; /* return zero-terminated empty string in nu_casemap_read (utf-8) */
}
}
return _nu_to_something(codepoint, NU_TOUNACCENT_G, NU_TOUNACCENT_G_SIZE,
NU_TOUNACCENT_VALUES_C, NU_TOUNACCENT_VALUES_I, NU_TOUNACCENT_COMBINED);
}
const char* _nu_tounaccent(const char *encoded, const char *limit, nu_read_iterator_t read,
uint32_t *u, const char **transform,
void *context) {
(void)(limit);
(void)(context);
uint32_t _u = 0;
const char *np = read(encoded, &_u);
*transform = nu_tounaccent(_u);
if (u != 0) {
*u = _u;
}
return np;
}
#endif /* NU_WITH_UNACCENT */

32
vendor/nunicode/src/libnu/toupper.c vendored Normal file
View File

@@ -0,0 +1,32 @@
#include <libnu/casemap.h>
#ifdef NU_WITH_TOUPPER
#include <libnu/casemap_internal.h>
#include "gen/_toupper.c"
const char* nu_toupper(uint32_t codepoint) {
return _nu_to_something(codepoint, NU_TOUPPER_G, NU_TOUPPER_G_SIZE,
NU_TOUPPER_VALUES_C, NU_TOUPPER_VALUES_I, NU_TOUPPER_COMBINED);
}
const char* _nu_toupper(const char *encoded, const char *limit, nu_read_iterator_t read,
uint32_t *u, const char **transform,
void *context) {
(void)(limit);
(void)(context);
uint32_t _u = 0;
const char *np = read(encoded, &_u);
*transform = nu_toupper(_u);
if (u != 0) {
*u = _u;
}
return np;
}
#endif /* NU_WITH_TOUPPER */

97
vendor/nunicode/src/libnu/utf8.c vendored Normal file
View File

@@ -0,0 +1,97 @@
#include <libnu/utf8.h>
#ifdef NU_WITH_UTF8_READER
#ifdef NU_WITH_VALIDATION
int nu_utf8_validread(const char *encoded, size_t max_len) {
int len = utf8_validread_basic(encoded, max_len);
if (len <= 0) {
return 0;
}
/* Unicode core spec, D92, Table 3-7
*/
switch (len) {
/* case 1: single byte sequence can't be > 0x7F and produce len == 1
*/
case 2: {
uint8_t p1 = *(const unsigned char *)(encoded);
if (p1 < 0xC2) { /* 2-byte sequences with p1 > 0xDF are 3-byte sequences */
return 0;
}
/* the rest will be handled by utf8_validread_basic() */
break;
}
case 3: {
uint8_t p1 = *(const unsigned char *)(encoded);
/* 3-byte sequences with p1 < 0xE0 are 2-byte sequences,
* 3-byte sequences with p1 > 0xEF are 4-byte sequences */
uint8_t p2 = *(const unsigned char *)(encoded + 1);
if (p1 == 0xE0 && p2 < 0xA0) {
return 0;
}
else if (p1 == 0xED && p2 > 0x9F) {
return 0;
}
/* (p2 < 0x80 || p2 > 0xBF) and p3 will be covered
* by utf8_validread_basic() */
break;
}
case 4: {
uint8_t p1 = *(const unsigned char *)(encoded);
if (p1 > 0xF4) { /* 4-byte sequence with p1 < 0xF0 are 3-byte sequences */
return 0;
}
uint8_t p2 = *(const unsigned char *)(encoded + 1);
if (p1 == 0xF0 && p2 < 0x90) {
return 0;
}
/* (p2 < 0x80 || p2 > 0xBF) and the rest (p3, p4)
* will be covered by utf8_validread_basic() */
break;
}
} /* switch */
return len;
}
#endif /* NU_WITH_VALIDATION */
#endif /* NU_WITH_UTF8_READER */
#ifdef NU_WITH_UTF8_WRITER
char* nu_utf8_write(uint32_t unicode, char *utf8) {
unsigned codepoint_len = utf8_codepoint_length(unicode);
if (utf8 != 0) {
switch (codepoint_len) {
case 1: *utf8 = (char)(unicode); break;
case 2: b2_utf8(unicode, utf8); break;
case 3: b3_utf8(unicode, utf8); break;
default: b4_utf8(unicode, utf8); break; /* len == 4 */
}
}
return utf8 + codepoint_len;
}
#endif /* NU_WITH_UTF8_WRITER */

1
vendor/nunicode/version.txt vendored Normal file
View File

@@ -0,0 +1 @@
1.8