Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/lexborisov/Modest.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlexborisov <lex.borisov@gmail.com>2017-03-21 09:56:42 +0300
committerlexborisov <lex.borisov@gmail.com>2017-03-21 09:56:42 +0300
commit7024458c55c0baedfb29c2f9db213d3b0474c851 (patch)
tree7ec10676fc5a24bffed67d9f6f89ba14130ea781 /source/myhtml
parent0708dba577f51a9cb504db1feeb094aa9badd795 (diff)
Merge branch 'master' into coverity_scancoverity_scan
Diffstat (limited to 'source/myhtml')
-rw-r--r--source/myhtml/Makefile.mk21
-rwxr-xr-xsource/myhtml/api.h578
-rw-r--r--source/myhtml/api_encoding.h71
-rw-r--r--source/myhtml/callback.c2
-rw-r--r--source/myhtml/callback.h2
-rw-r--r--source/myhtml/charef.c2
-rw-r--r--source/myhtml/charef.h2
-rw-r--r--source/myhtml/charef_resource.h2
-rw-r--r--source/myhtml/data_process.c54
-rw-r--r--source/myhtml/data_process.h24
-rw-r--r--source/myhtml/def.h2
-rw-r--r--source/myhtml/encoding.c1222
-rw-r--r--source/myhtml/encoding.h163
-rw-r--r--source/myhtml/encoding_detect.c948
-rw-r--r--source/myhtml/encoding_detect_resource.h5626
-rw-r--r--source/myhtml/encoding_resource.h9330
-rw-r--r--source/myhtml/incoming.c232
-rw-r--r--source/myhtml/incoming.h68
-rw-r--r--source/myhtml/myhtml.c409
-rw-r--r--source/myhtml/myhtml.h97
-rw-r--r--source/myhtml/mynamespace.c10
-rw-r--r--source/myhtml/mynamespace.h4
-rw-r--r--source/myhtml/mynamespace_resource.h2
-rw-r--r--source/myhtml/myosi.c50
-rw-r--r--source/myhtml/myosi.h260
-rw-r--r--source/myhtml/mystring.c449
-rw-r--r--source/myhtml/mystring.h128
-rw-r--r--source/myhtml/parser.c66
-rw-r--r--source/myhtml/parser.h8
-rw-r--r--source/myhtml/perf.c288
-rw-r--r--source/myhtml/rules.c69
-rw-r--r--source/myhtml/rules.h6
-rwxr-xr-xsource/myhtml/serialization.c326
-rw-r--r--source/myhtml/serialization.h14
-rw-r--r--source/myhtml/stream.c26
-rw-r--r--source/myhtml/stream.h8
-rwxr-xr-xsource/myhtml/tag.c45
-rw-r--r--source/myhtml/tag.h20
-rw-r--r--source/myhtml/tag_const.h2
-rwxr-xr-xsource/myhtml/tag_init.c12
-rw-r--r--source/myhtml/thread.c1185
-rw-r--r--source/myhtml/thread.h224
-rw-r--r--source/myhtml/token.c294
-rw-r--r--source/myhtml/token.h26
-rw-r--r--source/myhtml/tokenizer.c122
-rw-r--r--source/myhtml/tokenizer.h18
-rw-r--r--source/myhtml/tokenizer_doctype.c6
-rw-r--r--source/myhtml/tokenizer_doctype.h4
-rw-r--r--source/myhtml/tokenizer_end.c2
-rw-r--r--source/myhtml/tokenizer_end.h2
-rw-r--r--source/myhtml/tokenizer_script.c18
-rw-r--r--source/myhtml/tokenizer_script.h4
-rw-r--r--source/myhtml/tree.c440
-rw-r--r--source/myhtml/tree.h46
-rw-r--r--source/myhtml/utils.c201
-rw-r--r--source/myhtml/utils.h49
-rw-r--r--source/myhtml/utils/avl_tree.c353
-rw-r--r--source/myhtml/utils/avl_tree.h68
-rw-r--r--source/myhtml/utils/mchar_async.c770
-rw-r--r--source/myhtml/utils/mchar_async.h131
-rw-r--r--source/myhtml/utils/mcobject.c194
-rw-r--r--source/myhtml/utils/mcobject.h70
-rw-r--r--source/myhtml/utils/mcobject_async.c475
-rw-r--r--source/myhtml/utils/mcobject_async.h114
-rw-r--r--source/myhtml/utils/mcsimple.c125
-rw-r--r--source/myhtml/utils/mcsimple.h61
-rw-r--r--source/myhtml/utils/mcsync.c155
-rw-r--r--source/myhtml/utils/mcsync.h81
-rw-r--r--source/myhtml/utils/mctree.c285
-rw-r--r--source/myhtml/utils/mctree.h97
-rw-r--r--source/myhtml/utils/mhash.c267
-rw-r--r--source/myhtml/utils/mhash.h65
-rw-r--r--source/myhtml/utils/resources.h217
73 files changed, 1408 insertions, 25409 deletions
diff --git a/source/myhtml/Makefile.mk b/source/myhtml/Makefile.mk
index 81d5d63..b4b30cb 100644
--- a/source/myhtml/Makefile.mk
+++ b/source/myhtml/Makefile.mk
@@ -1,14 +1,13 @@
-find_files_h = $(wildcard $(SRCDIR)/myhtml/$(dir)/*.h)
-find_files_c = $(wildcard $(SRCDIR)/myhtml/$(dir)/*.c)
+myhtml_dirs := .
+myhtml_objs := $(call MODEST_UTILS_OBJS,myhtml,$(myhtml_dirs))
-SUBDIRS := . utils
-HDRS += $(foreach dir,$(SUBDIRS),$(find_files_h))
-SRCS += $(foreach dir,$(SUBDIRS),$(find_files_c))
+myhtml_description := HTML parser by https://html.spec.whatwg.org/multipage/
+myhtml_dependencies := mycore myencoding myport
-myhtml_clone: MyHTML_DIR_$(SUBDIRS)
- mkdir -p $(INCLUDE_TMP)/myhtml/utils
- cp $(SRCDIR)/myhtml/utils/*.h $(INCLUDE_TMP)/myhtml/utils
+myhtml_all: $(myhtml_objs)
-MyHTML_DIR_$(SUBDIRS):
- mkdir -p $(INCLUDE_TMP)/myhtml/$(patsubst MyHTML_DIR_%,%,$@)
- cp $(SRCDIR)/myhtml/$(patsubst MyHTML_DIR_%,%,$@)/*.h $(INCLUDE_TMP)/myhtml/$(patsubst MyHTML_DIR_%,%,$@)/
+myhtml_clean:
+ rm -f $(myhtml_objs)
+
+myhtml_clone:
+ $(call MODEST_UTILS_HDRS_CLONE,myhtml,$(myhtml_dirs))
diff --git a/source/myhtml/api.h b/source/myhtml/api.h
index e7eb4a6..9599750 100755
--- a/source/myhtml/api.h
+++ b/source/myhtml/api.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -34,14 +34,22 @@
*
*/
-#define MyHTML_VERSION_MAJOR 3
+#define MyHTML_VERSION_MAJOR 4
#define MyHTML_VERSION_MINOR 0
#define MyHTML_VERSION_PATCH 0
+#define MyHTML_VERSION_STRING MyCORE_STR(MyHTML_VERSION_MAJOR) MyCORE_STR(.) MyCORE_STR(MyHTML_VERSION_MINOR) MyCORE_STR(.) MyCORE_STR(MyHTML_VERSION_PATCH)
+
#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>
+#include <mycore/myosi.h>
+#include <mycore/incoming.h>
+#include <mycore/mystring.h>
+#include <mycore/utils/mchar_async.h>
+#include <myencoding/myosi.h>
+
#if defined(_MSC_VER)
# define MyHTML_DEPRECATED(func) __declspec(deprecated) func
#elif defined(__GNUC__) || defined(__INTEL_COMPILER)
@@ -55,56 +63,6 @@ extern "C" {
#endif
/**
- * encodings type
- */
-enum myhtml_encoding_list {
- MyHTML_ENCODING_DEFAULT = 0x00,
-// MyHTML_ENCODING_AUTO = 0x01, // future
- MyHTML_ENCODING_NOT_DETERMINED = 0x02,
- MyHTML_ENCODING_UTF_8 = 0x00, // default encoding
- MyHTML_ENCODING_UTF_16LE = 0x04,
- MyHTML_ENCODING_UTF_16BE = 0x05,
- MyHTML_ENCODING_X_USER_DEFINED = 0x06,
- MyHTML_ENCODING_BIG5 = 0x07,
- MyHTML_ENCODING_EUC_JP = 0x08,
- MyHTML_ENCODING_EUC_KR = 0x09,
- MyHTML_ENCODING_GB18030 = 0x0a,
- MyHTML_ENCODING_GBK = 0x0b,
- MyHTML_ENCODING_IBM866 = 0x0c,
- MyHTML_ENCODING_ISO_2022_JP = 0x0d,
- MyHTML_ENCODING_ISO_8859_10 = 0x0e,
- MyHTML_ENCODING_ISO_8859_13 = 0x0f,
- MyHTML_ENCODING_ISO_8859_14 = 0x10,
- MyHTML_ENCODING_ISO_8859_15 = 0x11,
- MyHTML_ENCODING_ISO_8859_16 = 0x12,
- MyHTML_ENCODING_ISO_8859_2 = 0x13,
- MyHTML_ENCODING_ISO_8859_3 = 0x14,
- MyHTML_ENCODING_ISO_8859_4 = 0x15,
- MyHTML_ENCODING_ISO_8859_5 = 0x16,
- MyHTML_ENCODING_ISO_8859_6 = 0x17,
- MyHTML_ENCODING_ISO_8859_7 = 0x18,
- MyHTML_ENCODING_ISO_8859_8 = 0x19,
- MyHTML_ENCODING_ISO_8859_8_I = 0x1a,
- MyHTML_ENCODING_KOI8_R = 0x1b,
- MyHTML_ENCODING_KOI8_U = 0x1c,
- MyHTML_ENCODING_MACINTOSH = 0x1d,
- MyHTML_ENCODING_SHIFT_JIS = 0x1e,
- MyHTML_ENCODING_WINDOWS_1250 = 0x1f,
- MyHTML_ENCODING_WINDOWS_1251 = 0x20,
- MyHTML_ENCODING_WINDOWS_1252 = 0x21,
- MyHTML_ENCODING_WINDOWS_1253 = 0x22,
- MyHTML_ENCODING_WINDOWS_1254 = 0x23,
- MyHTML_ENCODING_WINDOWS_1255 = 0x24,
- MyHTML_ENCODING_WINDOWS_1256 = 0x25,
- MyHTML_ENCODING_WINDOWS_1257 = 0x26,
- MyHTML_ENCODING_WINDOWS_1258 = 0x27,
- MyHTML_ENCODING_WINDOWS_874 = 0x28,
- MyHTML_ENCODING_X_MAC_CYRILLIC = 0x29,
- MyHTML_ENCODING_LAST_ENTRY = 0x2a
-}
-typedef myhtml_encoding_t;
-
-/**
* @struct basic tag ids
*/
enum myhtml_tags {
@@ -384,54 +342,27 @@ enum myhtml_status {
MyHTML_STATUS_OK = 0x0000,
MyHTML_STATUS_ERROR = 0x0001,
MyHTML_STATUS_ERROR_MEMORY_ALLOCATION = 0x0002,
- MyHTML_STATUS_THREAD_ERROR_MEMORY_ALLOCATION = 0x0009,
- MyHTML_STATUS_THREAD_ERROR_LIST_INIT = 0x000a,
- MyHTML_STATUS_THREAD_ERROR_ATTR_MALLOC = 0x000b,
- MyHTML_STATUS_THREAD_ERROR_ATTR_INIT = 0x000c,
- MyHTML_STATUS_THREAD_ERROR_ATTR_SET = 0x000d,
- MyHTML_STATUS_THREAD_ERROR_ATTR_DESTROY = 0x000e,
- MyHTML_STATUS_THREAD_ERROR_NO_SLOTS = 0x000f,
- MyHTML_STATUS_THREAD_ERROR_BATCH_INIT = 0x0010,
- MyHTML_STATUS_THREAD_ERROR_WORKER_MALLOC = 0x0011,
- MyHTML_STATUS_THREAD_ERROR_WORKER_SEM_CREATE = 0x0012,
- MyHTML_STATUS_THREAD_ERROR_WORKER_THREAD_CREATE = 0x0013,
- MyHTML_STATUS_THREAD_ERROR_MASTER_THREAD_CREATE = 0x0014,
- MyHTML_STATUS_THREAD_ERROR_SEM_PREFIX_MALLOC = 0x0032,
- MyHTML_STATUS_THREAD_ERROR_SEM_CREATE = 0x0033,
- MyHTML_STATUS_THREAD_ERROR_QUEUE_MALLOC = 0x003c,
- MyHTML_STATUS_THREAD_ERROR_QUEUE_NODES_MALLOC = 0x003d,
- MyHTML_STATUS_THREAD_ERROR_QUEUE_NODE_MALLOC = 0x003e,
- MyHTML_STATUS_THREAD_ERROR_MUTEX_MALLOC = 0x0046,
- MyHTML_STATUS_THREAD_ERROR_MUTEX_INIT = 0x0047,
- MyHTML_STATUS_THREAD_ERROR_MUTEX_LOCK = 0x0048,
- MyHTML_STATUS_THREAD_ERROR_MUTEX_UNLOCK = 0x0049,
- MyHTML_STATUS_RULES_ERROR_MEMORY_ALLOCATION = 0x0064,
- MyHTML_STATUS_PERF_ERROR_COMPILED_WITHOUT_PERF = 0x00c8,
- MyHTML_STATUS_PERF_ERROR_FIND_CPU_CLOCK = 0x00c9,
- MyHTML_STATUS_TOKENIZER_ERROR_MEMORY_ALLOCATION = 0x012c,
- MyHTML_STATUS_TOKENIZER_ERROR_FRAGMENT_INIT = 0x012d,
- MyHTML_STATUS_TAGS_ERROR_MEMORY_ALLOCATION = 0x0190,
- MyHTML_STATUS_TAGS_ERROR_MCOBJECT_CREATE = 0x0191,
- MyHTML_STATUS_TAGS_ERROR_MCOBJECT_MALLOC = 0x0192,
- MyHTML_STATUS_TAGS_ERROR_MCOBJECT_CREATE_NODE = 0x0193,
- MyHTML_STATUS_TAGS_ERROR_CACHE_MEMORY_ALLOCATION = 0x0194,
- MyHTML_STATUS_TAGS_ERROR_INDEX_MEMORY_ALLOCATION = 0x0195,
- MyHTML_STATUS_TREE_ERROR_MEMORY_ALLOCATION = 0x01f4,
- MyHTML_STATUS_TREE_ERROR_MCOBJECT_CREATE = 0x01f5,
- MyHTML_STATUS_TREE_ERROR_MCOBJECT_INIT = 0x01f6,
- MyHTML_STATUS_TREE_ERROR_MCOBJECT_CREATE_NODE = 0x01f7,
- MyHTML_STATUS_TREE_ERROR_INCOMING_BUFFER_CREATE = 0x01f8,
- MyHTML_STATUS_ATTR_ERROR_ALLOCATION = 0x0258,
- MyHTML_STATUS_ATTR_ERROR_CREATE = 0x0259,
- MyHTML_STATUS_STREAM_BUFFER_ERROR_CREATE = 0x0300,
- MyHTML_STATUS_STREAM_BUFFER_ERROR_INIT = 0x0301,
- MyHTML_STATUS_STREAM_BUFFER_ENTRY_ERROR_CREATE = 0x0302,
- MyHTML_STATUS_STREAM_BUFFER_ENTRY_ERROR_INIT = 0x0303,
- MyHTML_STATUS_STREAM_BUFFER_ERROR_ADD_ENTRY = 0x0304,
- MyHTML_STATUS_MCOBJECT_ERROR_CACHE_CREATE = 0x0340,
- MyHTML_STATUS_MCOBJECT_ERROR_CHUNK_CREATE = 0x0341,
- MyHTML_STATUS_MCOBJECT_ERROR_CHUNK_INIT = 0x0342,
- MyHTML_STATUS_MCOBJECT_ERROR_CACHE_REALLOC = 0x0343
+ MyHTML_STATUS_RULES_ERROR_MEMORY_ALLOCATION = 0x9064,
+ MyHTML_STATUS_TOKENIZER_ERROR_MEMORY_ALLOCATION = 0x912c,
+ MyHTML_STATUS_TOKENIZER_ERROR_FRAGMENT_INIT = 0x912d,
+ MyHTML_STATUS_TAGS_ERROR_MEMORY_ALLOCATION = 0x9190,
+ MyHTML_STATUS_TAGS_ERROR_MCOBJECT_CREATE = 0x9191,
+ MyHTML_STATUS_TAGS_ERROR_MCOBJECT_MALLOC = 0x9192,
+ MyHTML_STATUS_TAGS_ERROR_MCOBJECT_CREATE_NODE = 0x9193,
+ MyHTML_STATUS_TAGS_ERROR_CACHE_MEMORY_ALLOCATION = 0x9194,
+ MyHTML_STATUS_TAGS_ERROR_INDEX_MEMORY_ALLOCATION = 0x9195,
+ MyHTML_STATUS_TREE_ERROR_MEMORY_ALLOCATION = 0x91f4,
+ MyHTML_STATUS_TREE_ERROR_MCOBJECT_CREATE = 0x91f5,
+ MyHTML_STATUS_TREE_ERROR_MCOBJECT_INIT = 0x91f6,
+ MyHTML_STATUS_TREE_ERROR_MCOBJECT_CREATE_NODE = 0x91f7,
+ MyHTML_STATUS_TREE_ERROR_INCOMING_BUFFER_CREATE = 0x91f8,
+ MyHTML_STATUS_ATTR_ERROR_ALLOCATION = 0x9258,
+ MyHTML_STATUS_ATTR_ERROR_CREATE = 0x9259,
+ MyHTML_STATUS_STREAM_BUFFER_ERROR_CREATE = 0x9300,
+ MyHTML_STATUS_STREAM_BUFFER_ERROR_INIT = 0x9301,
+ MyHTML_STATUS_STREAM_BUFFER_ENTRY_ERROR_CREATE = 0x9302,
+ MyHTML_STATUS_STREAM_BUFFER_ENTRY_ERROR_INIT = 0x9303,
+ MyHTML_STATUS_STREAM_BUFFER_ERROR_ADD_ENTRY = 0x9304
}
typedef myhtml_status_t;
@@ -492,6 +423,11 @@ typedef struct myhtml myhtml_t;
*/
typedef struct myhtml_tree myhtml_tree_t;
+/**
+ * @struct myhtml_token_t MyHTML_TOKEN
+ */
+typedef struct myhtml_token myhtml_token_t;
+
typedef struct myhtml_token_attr myhtml_tree_attr_t;
typedef struct myhtml_tree_node myhtml_tree_node_t;
@@ -503,39 +439,6 @@ typedef size_t myhtml_tag_id_t;
typedef struct myhtml_tag myhtml_tag_t;
/**
- * MCHAR_ASYNC structures
- *
- */
-typedef struct mchar_async mchar_async_t;
-
-/**
- * MyHTML_INCOMING structures
- *
- */
-typedef struct myhtml_incoming_buffer myhtml_incoming_buffer_t;
-
-/**
- * MyHTML_STRING structures
- *
- */
-struct myhtml_string {
- char* data;
- size_t size;
- size_t length;
-
- mchar_async_t *mchar;
- size_t node_idx;
-}
-typedef myhtml_string_t;
-
-struct myhtml_string_raw {
- char* data;
- size_t size;
- size_t length;
-}
-typedef myhtml_string_raw_t;
-
-/**
* @struct myhtml_collection_t
*/
struct myhtml_collection {
@@ -572,7 +475,6 @@ typedef myhtml_version_t;
// callback functions
typedef void* (*myhtml_callback_token_f)(myhtml_tree_t* tree, myhtml_token_node_t* token, void* ctx);
typedef void (*myhtml_callback_tree_node_f)(myhtml_tree_t* tree, myhtml_tree_node_t* node, void* ctx);
-typedef void (*myhtml_callback_serialize_f)(const char* buffer, size_t size, void* ctx);
/***********************************************************************************
*
@@ -602,7 +504,7 @@ myhtml_create(void);
*
* @return MyHTML_STATUS_OK if successful, otherwise an error status value.
*/
-myhtml_status_t
+mystatus_t
myhtml_init(myhtml_t* myhtml, enum myhtml_options opt,
size_t thread_count, size_t queue_size);
@@ -627,7 +529,7 @@ myhtml_destroy(myhtml_t* myhtml);
* Parsing HTML
*
* @param[in] previously created structure myhtml_tree_t*
- * @param[in] Input character encoding; Default: MyHTML_ENCODING_UTF_8 or MyHTML_ENCODING_DEFAULT or 0
+ * @param[in] Input character encoding; Default: MyENCODING_UTF_8 or MyENCODING_DEFAULT or 0
* @param[in] HTML
* @param[in] HTML size
*
@@ -635,15 +537,15 @@ myhtml_destroy(myhtml_t* myhtml);
*
* @return MyHTML_STATUS_OK if successful, otherwise an error status
*/
-myhtml_status_t
-myhtml_parse(myhtml_tree_t* tree, myhtml_encoding_t encoding,
+mystatus_t
+myhtml_parse(myhtml_tree_t* tree, myencoding_t encoding,
const char* html, size_t html_size);
/**
* Parsing fragment of HTML
*
* @param[in] previously created structure myhtml_tree_t*
- * @param[in] Input character encoding; Default: MyHTML_ENCODING_UTF_8 or MyHTML_ENCODING_DEFAULT or 0
+ * @param[in] Input character encoding; Default: MyENCODING_UTF_8 or MyENCODING_DEFAULT or 0
* @param[in] HTML
* @param[in] HTML size
* @param[in] fragment base (root) tag id. Default: MyHTML_TAG_DIV if set 0
@@ -653,8 +555,8 @@ myhtml_parse(myhtml_tree_t* tree, myhtml_encoding_t encoding,
*
* @return MyHTML_STATUS_OK if successful, otherwise an error status
*/
-myhtml_status_t
-myhtml_parse_fragment(myhtml_tree_t* tree, myhtml_encoding_t encoding,
+mystatus_t
+myhtml_parse_fragment(myhtml_tree_t* tree, myencoding_t encoding,
const char* html, size_t html_size,
myhtml_tag_id_t tag_id, enum myhtml_namespace ns);
@@ -663,7 +565,7 @@ myhtml_parse_fragment(myhtml_tree_t* tree, myhtml_encoding_t encoding,
* No matter what was said during initialization MyHTML
*
* @param[in] previously created structure myhtml_tree_t*
- * @param[in] Input character encoding; Default: MyHTML_ENCODING_UTF_8 or MyHTML_ENCODING_DEFAULT or 0
+ * @param[in] Input character encoding; Default: MyENCODING_UTF_8 or MyENCODING_DEFAULT or 0
* @param[in] HTML
* @param[in] HTML size
*
@@ -671,8 +573,8 @@ myhtml_parse_fragment(myhtml_tree_t* tree, myhtml_encoding_t encoding,
*
* @return MyHTML_STATUS_OK if successful, otherwise an error status
*/
-myhtml_status_t
-myhtml_parse_single(myhtml_tree_t* tree, myhtml_encoding_t encoding,
+mystatus_t
+myhtml_parse_single(myhtml_tree_t* tree, myencoding_t encoding,
const char* html, size_t html_size);
/**
@@ -680,7 +582,7 @@ myhtml_parse_single(myhtml_tree_t* tree, myhtml_encoding_t encoding,
* No matter what was said during initialization MyHTML
*
* @param[in] previously created structure myhtml_tree_t*
- * @param[in] Input character encoding; Default: MyHTML_ENCODING_UTF_8 or MyHTML_ENCODING_DEFAULT or 0
+ * @param[in] Input character encoding; Default: MyENCODING_UTF_8 or MyENCODING_DEFAULT or 0
* @param[in] HTML
* @param[in] HTML size
* @param[in] fragment base (root) tag id. Default: MyHTML_TAG_DIV if set 0
@@ -690,8 +592,8 @@ myhtml_parse_single(myhtml_tree_t* tree, myhtml_encoding_t encoding,
*
* @return MyHTML_STATUS_OK if successful, otherwise an error status
*/
-myhtml_status_t
-myhtml_parse_fragment_single(myhtml_tree_t* tree, myhtml_encoding_t encoding,
+mystatus_t
+myhtml_parse_fragment_single(myhtml_tree_t* tree, myencoding_t encoding,
const char* html, size_t html_size,
myhtml_tag_id_t tag_id, enum myhtml_namespace ns);
@@ -704,7 +606,7 @@ myhtml_parse_fragment_single(myhtml_tree_t* tree, myhtml_encoding_t encoding,
*
* @return MyHTML_STATUS_OK if successful, otherwise an error status
*/
-myhtml_status_t
+mystatus_t
myhtml_parse_chunk(myhtml_tree_t* tree, const char* html, size_t html_size);
/**
@@ -718,7 +620,7 @@ myhtml_parse_chunk(myhtml_tree_t* tree, const char* html, size_t html_size);
*
* @return MyHTML_STATUS_OK if successful, otherwise an error status
*/
-myhtml_status_t
+mystatus_t
myhtml_parse_chunk_fragment(myhtml_tree_t* tree, const char* html,size_t html_size,
myhtml_tag_id_t tag_id, enum myhtml_namespace ns);
@@ -732,7 +634,7 @@ myhtml_parse_chunk_fragment(myhtml_tree_t* tree, const char* html,size_t html_si
*
* @return MyHTML_STATUS_OK if successful, otherwise an error status
*/
-myhtml_status_t
+mystatus_t
myhtml_parse_chunk_single(myhtml_tree_t* tree, const char* html, size_t html_size);
/**
@@ -747,7 +649,7 @@ myhtml_parse_chunk_single(myhtml_tree_t* tree, const char* html, size_t html_siz
*
* @return MyHTML_STATUS_OK if successful, otherwise an error status
*/
-myhtml_status_t
+mystatus_t
myhtml_parse_chunk_fragment_single(myhtml_tree_t* tree, const char* html, size_t html_size,
myhtml_tag_id_t tag_id, enum myhtml_namespace ns);
@@ -758,7 +660,7 @@ myhtml_parse_chunk_fragment_single(myhtml_tree_t* tree, const char* html, size_t
*
* @return MyHTML_STATUS_OK if successful, otherwise an error status
*/
-myhtml_status_t
+mystatus_t
myhtml_parse_chunk_end(myhtml_tree_t* tree);
/***********************************************************************************
@@ -783,7 +685,7 @@ myhtml_tree_create(void);
*
* @return MyHTML_STATUS_OK if successful, otherwise an error status
*/
-myhtml_status_t
+mystatus_t
myhtml_tree_init(myhtml_tree_t* tree, myhtml_t* myhtml);
/**
@@ -936,47 +838,13 @@ size_t
myhtml_tree_get_mchar_node_id(myhtml_tree_t* tree);
/**
- * Print tree of a node. Print including current node
- *
- * @param[in] myhtml_tree_t*
- * @param[in] myhtml_tree_node_t*
- * @param[in] file handle, for example use stdout
- * @param[in] tab (\t) increment for pretty print, set 0
- */
-void
-myhtml_tree_print_by_node(myhtml_tree_t* tree, myhtml_tree_node_t* node,
- FILE* out, size_t inc);
-
-/**
- * Print tree of a node. Print excluding current node
- *
- * @param[in] myhtml_tree_t*
- * @param[in] myhtml_tree_node_t*
- * @param[in] file handle, for example use stdout
- * @param[in] tab (\t) increment for pretty print, set 0
- */
-void
-myhtml_tree_print_node_children(myhtml_tree_t* tree, myhtml_tree_node_t* node,
- FILE* out, size_t inc);
-
-/**
- * Print a node
- *
- * @param[in] myhtml_tree_t*
- * @param[in] myhtml_tree_node_t*
- * @param[in] file handle, for example use stdout
- */
-void
-myhtml_tree_print_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, FILE* out);
-
-/**
* Get first Incoming Buffer
*
* @param[in] myhtml_tree_t*
*
- * @return myhtml_incoming_buffer_t* if successful, otherwise a NULL value
+ * @return mycore_incoming_buffer_t* if successful, otherwise a NULL value
*/
-myhtml_incoming_buffer_t*
+mycore_incoming_buffer_t*
myhtml_tree_incoming_buffer_first(myhtml_tree_t *tree);
/***********************************************************************************
@@ -1007,7 +875,7 @@ myhtml_node_first(myhtml_tree_t* tree);
*/
myhtml_collection_t*
myhtml_get_nodes_by_tag_id(myhtml_tree_t* tree, myhtml_collection_t *collection,
- myhtml_tag_id_t tag_id, myhtml_status_t *status);
+ myhtml_tag_id_t tag_id, mystatus_t *status);
/**
* Get nodes by tag name
@@ -1022,7 +890,7 @@ myhtml_get_nodes_by_tag_id(myhtml_tree_t* tree, myhtml_collection_t *collection,
*/
myhtml_collection_t*
myhtml_get_nodes_by_name(myhtml_tree_t* tree, myhtml_collection_t *collection,
- const char* name, size_t length, myhtml_status_t *status);
+ const char* name, size_t length, mystatus_t *status);
/**
* Get nodes by attribute key
@@ -1039,7 +907,7 @@ myhtml_get_nodes_by_name(myhtml_tree_t* tree, myhtml_collection_t *collection,
myhtml_collection_t*
myhtml_get_nodes_by_attribute_key(myhtml_tree_t *tree, myhtml_collection_t* collection,
myhtml_tree_node_t* scope_node,
- const char* key, size_t key_len, myhtml_status_t* status);
+ const char* key, size_t key_len, mystatus_t* status);
/**
* Get nodes by attribute value; exactly equal; like a [foo="bar"]
@@ -1063,7 +931,7 @@ myhtml_get_nodes_by_attribute_value(myhtml_tree_t *tree,
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status);
+ mystatus_t* status);
/**
* Get nodes by attribute value; whitespace separated; like a [foo~="bar"]
@@ -1089,7 +957,7 @@ myhtml_get_nodes_by_attribute_value_whitespace_separated(myhtml_tree_t *tree,
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status);
+ mystatus_t* status);
/**
* Get nodes by attribute value; value begins exactly with the string; like a [foo^="bar"]
@@ -1115,7 +983,7 @@ myhtml_get_nodes_by_attribute_value_begin(myhtml_tree_t *tree,
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status);
+ mystatus_t* status);
/**
@@ -1142,7 +1010,7 @@ myhtml_get_nodes_by_attribute_value_end(myhtml_tree_t *tree,
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status);
+ mystatus_t* status);
/**
* Get nodes by attribute value; value contains the substring; like a [foo*="bar"]
@@ -1168,7 +1036,7 @@ myhtml_get_nodes_by_attribute_value_contain(myhtml_tree_t *tree,
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status);
+ mystatus_t* status);
/**
* Get nodes by attribute value; attribute value is a hyphen-separated list of values beginning;
@@ -1193,7 +1061,7 @@ myhtml_get_nodes_by_attribute_value_hyphen_separated(myhtml_tree_t *tree,
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status);
+ mystatus_t* status);
/**
* Get nodes by tag id in node scope
@@ -1209,7 +1077,7 @@ myhtml_get_nodes_by_attribute_value_hyphen_separated(myhtml_tree_t *tree,
myhtml_collection_t*
myhtml_get_nodes_by_tag_id_in_scope(myhtml_tree_t* tree, myhtml_collection_t *collection,
myhtml_tree_node_t *node, myhtml_tag_id_t tag_id,
- myhtml_status_t *status);
+ mystatus_t *status);
/**
* Get nodes by tag name in node scope
@@ -1226,7 +1094,7 @@ myhtml_get_nodes_by_tag_id_in_scope(myhtml_tree_t* tree, myhtml_collection_t *co
myhtml_collection_t*
myhtml_get_nodes_by_name_in_scope(myhtml_tree_t* tree, myhtml_collection_t *collection,
myhtml_tree_node_t *node, const char* html, size_t length,
- myhtml_status_t *status);
+ mystatus_t *status);
/**
* Get next sibling node
@@ -1378,11 +1246,11 @@ myhtml_node_insert_before(myhtml_tree_node_t *target, myhtml_tree_node_t *node);
* @param[in] text length
* @param[in] character encoding
*
- * @return myhtml_string_t* if successful, otherwise a NULL value
+ * @return mycore_string_t* if successful, otherwise a NULL value
*/
-myhtml_string_t*
+mycore_string_t*
myhtml_node_text_set(myhtml_tree_node_t *node, const char* text, size_t length,
- myhtml_encoding_t encoding);
+ myencoding_t encoding);
/**
* Add text for a node with convert character encoding.
@@ -1392,11 +1260,11 @@ myhtml_node_text_set(myhtml_tree_node_t *node, const char* text, size_t length,
* @param[in] text length
* @param[in] character encoding
*
- * @return myhtml_string_t* if successful, otherwise a NULL value
+ * @return mycore_string_t* if successful, otherwise a NULL value
*/
-myhtml_string_t*
+mycore_string_t*
myhtml_node_text_set_with_charef(myhtml_tree_node_t *node, const char* text, size_t length,
- myhtml_encoding_t encoding);
+ myencoding_t encoding);
/**
* Get token node
@@ -1479,13 +1347,13 @@ const char*
myhtml_node_text(myhtml_tree_node_t *node, size_t *length);
/**
- * Get myhtml_string_t object by Tree node
+ * Get mycore_string_t object by Tree node
*
* @param[in] myhtml_tree_node_t*
*
- * @return myhtml_string_t* if exists, otherwise an NULL value
+ * @return mycore_string_t* if exists, otherwise an NULL value
*/
-myhtml_string_t*
+mycore_string_t*
myhtml_node_string(myhtml_tree_node_t *node);
/**
@@ -1613,9 +1481,9 @@ myhtml_attribute_value(myhtml_tree_attr_t *attr, size_t *length);
*
* @param[in] myhtml_tree_attr_t*
*
- * @return myhtml_string_t* if exists, otherwise an NULL value
+ * @return mycore_string_t* if exists, otherwise an NULL value
*/
-myhtml_string_t*
+mycore_string_t*
myhtml_attribute_key_string(myhtml_tree_attr_t* attr);
/**
@@ -1623,9 +1491,9 @@ myhtml_attribute_key_string(myhtml_tree_attr_t* attr);
*
* @param[in] myhtml_tree_attr_t*
*
- * @return myhtml_string_t* if exists, otherwise an NULL value
+ * @return mycore_string_t* if exists, otherwise an NULL value
*/
-myhtml_string_t*
+mycore_string_t*
myhtml_attribute_value_string(myhtml_tree_attr_t* attr);
/**
@@ -1649,7 +1517,7 @@ myhtml_attribute_by_key(myhtml_tree_node_t *node,
* @param[in] attr key name length
* @param[in] attr value name
* @param[in] attr value name length
- * @param[in] character encoding; Default: MyHTML_ENCODING_UTF_8 or MyHTML_ENCODING_DEFAULT or 0
+ * @param[in] character encoding; Default: MyENCODING_UTF_8 or MyENCODING_DEFAULT or 0
*
* @return created myhtml_tree_attr_t* if successful, otherwise a NULL value
*/
@@ -1657,7 +1525,7 @@ myhtml_tree_attr_t*
myhtml_attribute_add(myhtml_tree_node_t *node,
const char *key, size_t key_len,
const char *value, size_t value_len,
- myhtml_encoding_t encoding);
+ myencoding_t encoding);
/**
* Remove attribute reference. Not release the resources
@@ -1797,13 +1665,13 @@ const char*
myhtml_token_node_text(myhtml_token_node_t *token_node, size_t *length);
/**
- * Get myhtml_string_t object by token node
+ * Get mycore_string_t object by token node
*
* @param[in] myhtml_token_node_t*
*
- * @return myhtml_string_t* if exists, otherwise an NULL value
+ * @return mycore_string_t* if exists, otherwise an NULL value
*/
-myhtml_string_t*
+mycore_string_t*
myhtml_token_node_string(myhtml_token_node_t *token_node);
/**
@@ -1829,10 +1697,11 @@ myhtml_token_node_is_close_self(myhtml_token_node_t *token_node);
/**
* Wait for process token all parsing stage. Need if you use thread mode
*
+ * @param[in] myhtml_token_t*
* @param[in] myhtml_token_node_t*
*/
void
-myhtml_token_node_wait_for_done(myhtml_token_node_t* node);
+myhtml_token_node_wait_for_done(myhtml_token_t* token, myhtml_token_node_t* node);
/***********************************************************************************
*
@@ -1881,7 +1750,7 @@ myhtml_tag_id_by_name(myhtml_tree_t* tree,
* @return myhtml_collection_t* if successful, otherwise an NULL value
*/
myhtml_collection_t*
-myhtml_collection_create(size_t size, myhtml_status_t *status);
+myhtml_collection_create(size_t size, mystatus_t *status);
/**
* Clears collection
@@ -1911,7 +1780,7 @@ myhtml_collection_destroy(myhtml_collection_t *collection);
*
* @return NULL if successful, otherwise an myhtml_collection_t* structure
*/
-myhtml_status_t
+mystatus_t
myhtml_collection_check_size(myhtml_collection_t *collection, size_t need, size_t upto_length);
/***********************************************************************************
@@ -1928,16 +1797,16 @@ myhtml_collection_check_size(myhtml_collection_t *collection, size_t need, size_
*
*/
void
-myhtml_encoding_set(myhtml_tree_t* tree, myhtml_encoding_t encoding);
+myhtml_encoding_set(myhtml_tree_t* tree, myencoding_t encoding);
/**
* Get character encoding for current stream
*
* @param[in] myhtml_tree_t*
*
- * @return myhtml_encoding_t
+ * @return myencoding_t
*/
-myhtml_encoding_t
+myencoding_t
myhtml_encoding_get(myhtml_tree_t* tree);
/**
@@ -1950,7 +1819,7 @@ myhtml_encoding_get(myhtml_tree_t* tree);
* @return size character set
*/
size_t
-myhtml_encoding_codepoint_to_ascii_utf_8(size_t codepoint, char *data);
+myencoding_codepoint_to_ascii_utf_8(size_t codepoint, char *data);
/**
* Convert Unicode Codepoint to UTF-16LE
@@ -1964,7 +1833,7 @@ myhtml_encoding_codepoint_to_ascii_utf_8(size_t codepoint, char *data);
* @return size character set
*/
size_t
-myhtml_encoding_codepoint_to_ascii_utf_16(size_t codepoint, char *data);
+myencoding_codepoint_to_ascii_utf_16(size_t codepoint, char *data);
/**
* Detect character encoding
@@ -1980,7 +1849,7 @@ myhtml_encoding_codepoint_to_ascii_utf_16(size_t codepoint, char *data);
* @return true if encoding found, otherwise false
*/
bool
-myhtml_encoding_detect(const char *text, size_t length, myhtml_encoding_t *encoding);
+myencoding_detect(const char *text, size_t length, myencoding_t *encoding);
/**
* Detect Russian character encoding
@@ -1994,7 +1863,7 @@ myhtml_encoding_detect(const char *text, size_t length, myhtml_encoding_t *encod
* @return true if encoding found, otherwise false
*/
bool
-myhtml_encoding_detect_russian(const char *text, size_t length, myhtml_encoding_t *encoding);
+myencoding_detect_russian(const char *text, size_t length, myencoding_t *encoding);
/**
* Detect Unicode character encoding
@@ -2008,7 +1877,7 @@ myhtml_encoding_detect_russian(const char *text, size_t length, myhtml_encoding_
* @return true if encoding found, otherwise false
*/
bool
-myhtml_encoding_detect_unicode(const char *text, size_t length, myhtml_encoding_t *encoding);
+myencoding_detect_unicode(const char *text, size_t length, myencoding_t *encoding);
/**
* Detect Unicode character encoding by BOM
@@ -2022,7 +1891,7 @@ myhtml_encoding_detect_unicode(const char *text, size_t length, myhtml_encoding_
* @return true if encoding found, otherwise false
*/
bool
-myhtml_encoding_detect_bom(const char *text, size_t length, myhtml_encoding_t *encoding);
+myencoding_detect_bom(const char *text, size_t length, myencoding_t *encoding);
/**
* Detect Unicode character encoding by BOM. Cut BOM if will be found
@@ -2038,13 +1907,13 @@ myhtml_encoding_detect_bom(const char *text, size_t length, myhtml_encoding_t *e
* @return true if encoding found, otherwise false
*/
bool
-myhtml_encoding_detect_and_cut_bom(const char *text, size_t length, myhtml_encoding_t *encoding,
+myencoding_detect_and_cut_bom(const char *text, size_t length, myencoding_t *encoding,
const char **new_text, size_t *new_size);
/**
* Detect encoding by name
- * Names like: windows-1258 return MyHTML_ENCODING_WINDOWS_1258
- * cp1251 or windows-1251 return MyHTML_ENCODING_WINDOWS_1251
+ * Names like: windows-1258 return MyENCODING_WINDOWS_1258
+ * cp1251 or windows-1251 return MyENCODING_WINDOWS_1251
*
* See https://encoding.spec.whatwg.org/#names-and-labels
*
@@ -2055,18 +1924,18 @@ myhtml_encoding_detect_and_cut_bom(const char *text, size_t length, myhtml_encod
* @return true if encoding found, otherwise false
*/
bool
-myhtml_encoding_by_name(const char *name, size_t length, myhtml_encoding_t *encoding);
+myencoding_by_name(const char *name, size_t length, myencoding_t *encoding);
/**
- * Get Encoding name by myhtml_encoding_t (by id)
+ * Get Encoding name by myencoding_t (by id)
*
- * @param[in] myhtml_encoding_t, encoding id
+ * @param[in] myencoding_t, encoding id
* @param[out] return name length
*
* @return encoding name, otherwise NULL value
*/
const char*
-myhtml_encoding_name_by_id(myhtml_encoding_t encoding, size_t *length);
+myencoding_name_by_id(myencoding_t encoding, size_t *length);
/**
* Detect encoding in meta tag (<meta ...>) before start parsing
@@ -2076,10 +1945,27 @@ myhtml_encoding_name_by_id(myhtml_encoding_t encoding, size_t *length);
* @param[in] html data bytes
* @param[in] html data length
*
- * @return detected encoding if encoding found, otherwise MyHTML_ENCODING_NOT_DETERMINED
+ * @return detected encoding if encoding found, otherwise MyENCODING_NOT_DETERMINED
*/
-myhtml_encoding_t
-myhtml_encoding_prescan_stream_to_determine_encoding(const char *data, size_t data_size);
+myencoding_t
+myencoding_prescan_stream_to_determine_encoding(const char *data, size_t data_size);
+
+/**
+ * Extracting character encoding from string. Find "charset=" and see encoding.
+ * For example: "text/html; charset=windows-1251". Return MyENCODING_WINDOWS_1251
+ *
+ *
+ * See https://html.spec.whatwg.org/multipage/infrastructure.html#algorithm-for-extracting-a-character-encoding-from-a-meta-element
+ *
+ * @param[in] data
+ * @param[in] data length
+ * @param[out] return encoding
+ *
+ * @return true if encoding found
+ */
+bool
+myencoding_extracting_character_encoding_from_charset(const char *data, size_t data_size,
+ myencoding_t *encoding);
/***********************************************************************************
*
@@ -2088,7 +1974,7 @@ myhtml_encoding_prescan_stream_to_determine_encoding(const char *data, size_t da
***********************************************************************************/
/**
- * Init myhtml_string_t structure
+ * Init mycore_string_t structure
*
* @param[in] mchar_async_t*. It can be obtained from myhtml_tree_t object
* (see myhtml_tree_get_mchar function) or create manualy
@@ -2098,7 +1984,7 @@ myhtml_encoding_prescan_stream_to_determine_encoding(const char *data, size_t da
* if created mchar_async_t object manually you know it, if not then take from the Tree
* (see myhtml_tree_get_mchar_node_id)
*
- * @param[in] myhtml_string_t*. It can be obtained from myhtml_tree_node_t object
+ * @param[in] mycore_string_t*. It can be obtained from myhtml_tree_node_t object
* (see myhtml_node_string function) or create manualy
*
* @param[in] data size. Set the size you want for char*
@@ -2106,137 +1992,137 @@ myhtml_encoding_prescan_stream_to_determine_encoding(const char *data, size_t da
* @return char* of the size if successful, otherwise a NULL value
*/
char*
-myhtml_string_init(mchar_async_t *mchar, size_t node_id,
- myhtml_string_t* str, size_t size);
+mycore_string_init(mchar_async_t *mchar, size_t node_id,
+ mycore_string_t* str, size_t size);
/**
- * Increase the current size for myhtml_string_t object
+ * Increase the current size for mycore_string_t object
*
- * @param[in] myhtml_string_t*. See description for myhtml_string_init function
- * @param[in] data size. Set the new size you want for myhtml_string_t object
+ * @param[in] mycore_string_t*. See description for mycore_string_init function
+ * @param[in] data size. Set the new size you want for mycore_string_t object
*
* @return char* of the size if successful, otherwise a NULL value
*/
char*
-myhtml_string_realloc(myhtml_string_t *str, size_t new_size);
+mycore_string_realloc(mycore_string_t *str, size_t new_size);
/**
- * Clean myhtml_string_t object. In reality, data length set to 0
- * Equivalently: myhtml_string_length_set(str, 0);
+ * Clean mycore_string_t object. In reality, data length set to 0
+ * Equivalently: mycore_string_length_set(str, 0);
*
- * @param[in] myhtml_string_t*. See description for myhtml_string_init function
+ * @param[in] mycore_string_t*. See description for mycore_string_init function
*/
void
-myhtml_string_clean(myhtml_string_t* str);
+mycore_string_clean(mycore_string_t* str);
/**
- * Clean myhtml_string_t object. Equivalently: memset(str, 0, sizeof(myhtml_string_t))
+ * Clean mycore_string_t object. Equivalently: memset(str, 0, sizeof(mycore_string_t))
*
- * @param[in] myhtml_string_t*. See description for myhtml_string_init function
+ * @param[in] mycore_string_t*. See description for mycore_string_init function
*/
void
-myhtml_string_clean_all(myhtml_string_t* str);
+mycore_string_clean_all(mycore_string_t* str);
/**
- * Release all resources for myhtml_string_t object
+ * Release all resources for mycore_string_t object
*
- * @param[in] myhtml_string_t*. See description for myhtml_string_init function
+ * @param[in] mycore_string_t*. See description for mycore_string_init function
* @param[in] call free function for current object or not
*
- * @return NULL if destroy_obj set true, otherwise a current myhtml_string_t object
+ * @return NULL if destroy_obj set true, otherwise a current mycore_string_t object
*/
-myhtml_string_t*
-myhtml_string_destroy(myhtml_string_t* str, bool destroy_obj);
+mycore_string_t*
+mycore_string_destroy(mycore_string_t* str, bool destroy_obj);
/**
- * Get data (char*) from a myhtml_string_t object
+ * Get data (char*) from a mycore_string_t object
*
- * @param[in] myhtml_string_t*. See description for myhtml_string_init function
+ * @param[in] mycore_string_t*. See description for mycore_string_init function
*
* @return char* if exists, otherwise a NULL value
*/
char*
-myhtml_string_data(myhtml_string_t *str);
+mycore_string_data(mycore_string_t *str);
/**
- * Get data length from a myhtml_string_t object
+ * Get data length from a mycore_string_t object
*
- * @param[in] myhtml_string_t*. See description for myhtml_string_init function
+ * @param[in] mycore_string_t*. See description for mycore_string_init function
*
* @return data length
*/
size_t
-myhtml_string_length(myhtml_string_t *str);
+mycore_string_length(mycore_string_t *str);
/**
- * Get data size from a myhtml_string_t object
+ * Get data size from a mycore_string_t object
*
- * @param[in] myhtml_string_t*. See description for myhtml_string_init function
+ * @param[in] mycore_string_t*. See description for mycore_string_init function
*
* @return data size
*/
size_t
-myhtml_string_size(myhtml_string_t *str);
+mycore_string_size(mycore_string_t *str);
/**
- * Set data (char *) for a myhtml_string_t object.
+ * Set data (char *) for a mycore_string_t object.
*
* Attention!!! Attention!!! Attention!!!
*
* You can assign only that it has been allocated from functions:
- * myhtml_string_data_alloc
- * myhtml_string_data_realloc
+ * mycore_string_data_alloc
+ * mycore_string_data_realloc
* or obtained manually created from mchar_async_t object
*
* Attention!!! Do not try set chat* from allocated by malloc or realloc!!!
*
- * @param[in] myhtml_string_t*. See description for myhtml_string_init function
+ * @param[in] mycore_string_t*. See description for mycore_string_init function
* @param[in] you data to want assign
*
* @return assigned data if successful, otherwise a NULL value
*/
char*
-myhtml_string_data_set(myhtml_string_t *str, char *data);
+mycore_string_data_set(mycore_string_t *str, char *data);
/**
- * Set data size for a myhtml_string_t object.
+ * Set data size for a mycore_string_t object.
*
- * @param[in] myhtml_string_t*. See description for myhtml_string_init function
+ * @param[in] mycore_string_t*. See description for mycore_string_init function
* @param[in] you size to want assign
*
* @return assigned size
*/
size_t
-myhtml_string_size_set(myhtml_string_t *str, size_t size);
+mycore_string_size_set(mycore_string_t *str, size_t size);
/**
- * Set data length for a myhtml_string_t object.
+ * Set data length for a mycore_string_t object.
*
- * @param[in] myhtml_string_t*. See description for myhtml_string_init function
+ * @param[in] mycore_string_t*. See description for mycore_string_init function
* @param[in] you length to want assign
*
* @return assigned length
*/
size_t
-myhtml_string_length_set(myhtml_string_t *str, size_t length);
+mycore_string_length_set(mycore_string_t *str, size_t length);
/**
* Allocate data (char*) from a mchar_async_t object
*
- * @param[in] mchar_async_t*. See description for myhtml_string_init function
- * @param[in] node id. See description for myhtml_string_init function
+ * @param[in] mchar_async_t*. See description for mycore_string_init function
+ * @param[in] node id. See description for mycore_string_init function
* @param[in] you size to want assign
*
* @return data if successful, otherwise a NULL value
*/
char*
-myhtml_string_data_alloc(mchar_async_t *mchar, size_t node_id, size_t size);
+mycore_string_data_alloc(mchar_async_t *mchar, size_t node_id, size_t size);
/**
* Allocate data (char*) from a mchar_async_t object
*
- * @param[in] mchar_async_t*. See description for myhtml_string_init function
- * @param[in] node id. See description for myhtml_string_init function
+ * @param[in] mchar_async_t*. See description for mycore_string_init function
+ * @param[in] node id. See description for mycore_string_init function
* @param[in] old data
* @param[in] how much data is copied from the old data to new data
* @param[in] new size
@@ -2244,28 +2130,28 @@ myhtml_string_data_alloc(mchar_async_t *mchar, size_t node_id, size_t size);
* @return data if successful, otherwise a NULL value
*/
char*
-myhtml_string_data_realloc(mchar_async_t *mchar, size_t node_id,
+mycore_string_data_realloc(mchar_async_t *mchar, size_t node_id,
char *data, size_t len_to_copy, size_t size);
/**
* Release allocated data
*
- * @param[in] mchar_async_t*. See description for myhtml_string_init function
- * @param[in] node id. See description for myhtml_string_init function
+ * @param[in] mchar_async_t*. See description for mycore_string_init function
+ * @param[in] node id. See description for mycore_string_init function
* @param[in] data to release
*
* @return data if successful, otherwise a NULL value
*/
void
-myhtml_string_data_free(mchar_async_t *mchar, size_t node_id, char *data);
+mycore_string_data_free(mchar_async_t *mchar, size_t node_id, char *data);
/***********************************************************************************
*
* MyHTML_STRING_RAW
*
- * All work with myhtml_string_raw_t object occurs through
- * myhtml_malloc (standart malloc), myhtml_realloc (standart realloc),
- * myhtml_free (standart free).
+ * All work with mycore_string_raw_t object occurs through
+ * mycore_malloc (standart malloc), mycore_realloc (standart realloc),
+ * mycore_free (standart free).
*
* You are free to change them on without fear that something will happen
* You can call free for str_raw.data, or change str_raw.length = 0
@@ -2273,32 +2159,32 @@ myhtml_string_data_free(mchar_async_t *mchar, size_t node_id, char *data);
***********************************************************************************/
/**
- * Clean myhtml_string_raw_t object. In reality, data length set to 0
+ * Clean mycore_string_raw_t object. In reality, data length set to 0
*
- * @param[in] myhtml_string_raw_t*
+ * @param[in] mycore_string_raw_t*
*/
void
-myhtml_string_raw_clean(myhtml_string_raw_t* str_raw);
+mycore_string_raw_clean(mycore_string_raw_t* str_raw);
/**
- * Full clean myhtml_string_raw_t object.
- * Equivalently: memset(str_raw, 0, sizeof(myhtml_string_raw_t))
+ * Full clean mycore_string_raw_t object.
+ * Equivalently: memset(str_raw, 0, sizeof(mycore_string_raw_t))
*
- * @param[in] myhtml_string_raw_t*
+ * @param[in] mycore_string_raw_t*
*/
void
-myhtml_string_raw_clean_all(myhtml_string_raw_t* str_raw);
+mycore_string_raw_clean_all(mycore_string_raw_t* str_raw);
/**
- * Free resources for myhtml_string_raw_t object
+ * Free resources for mycore_string_raw_t object
*
- * @param[in] myhtml_string_raw_t*
+ * @param[in] mycore_string_raw_t*
* @param[in] call free function for current object or not
*
- * @return NULL if destroy_obj set true, otherwise a current myhtml_string_raw_t object
+ * @return NULL if destroy_obj set true, otherwise a current mycore_string_raw_t object
*/
-myhtml_string_raw_t*
-myhtml_string_raw_destroy(myhtml_string_raw_t* str_raw, bool destroy_obj);
+mycore_string_raw_t*
+mycore_string_raw_destroy(mycore_string_raw_t* str_raw, bool destroy_obj);
/***********************************************************************************
@@ -2316,99 +2202,99 @@ myhtml_string_raw_destroy(myhtml_string_raw_t* str_raw, bool destroy_obj);
/**
* Get Incoming Buffer by position
*
- * @param[in] current myhtml_incoming_buffer_t*
+ * @param[in] current mycore_incoming_buffer_t*
* @param[in] begin position
*
- * @return myhtml_incoming_buffer_t if successful, otherwise a NULL value
+ * @return mycore_incoming_buffer_t if successful, otherwise a NULL value
*/
-myhtml_incoming_buffer_t*
-myhtml_incoming_buffer_find_by_position(myhtml_incoming_buffer_t *inc_buf, size_t begin);
+mycore_incoming_buffer_t*
+mycore_incoming_buffer_find_by_position(mycore_incoming_buffer_t *inc_buf, size_t begin);
/**
* Get data of Incoming Buffer
*
- * @param[in] myhtml_incoming_buffer_t*
+ * @param[in] mycore_incoming_buffer_t*
*
* @return const char* if successful, otherwise a NULL value
*/
const char*
-myhtml_incoming_buffer_data(myhtml_incoming_buffer_t *inc_buf);
+mycore_incoming_buffer_data(mycore_incoming_buffer_t *inc_buf);
/**
* Get data length of Incoming Buffer
*
- * @param[in] myhtml_incoming_buffer_t*
+ * @param[in] mycore_incoming_buffer_t*
*
* @return size_t
*/
size_t
-myhtml_incoming_buffer_length(myhtml_incoming_buffer_t *inc_buf);
+mycore_incoming_buffer_length(mycore_incoming_buffer_t *inc_buf);
/**
* Get data size of Incoming Buffer
*
- * @param[in] myhtml_incoming_buffer_t*
+ * @param[in] mycore_incoming_buffer_t*
*
* @return size_t
*/
size_t
-myhtml_incoming_buffer_size(myhtml_incoming_buffer_t *inc_buf);
+mycore_incoming_buffer_size(mycore_incoming_buffer_t *inc_buf);
/**
* Get data offset of Incoming Buffer. Global position of begin Incoming Buffer.
* See description for MyHTML_INCOMING title
*
- * @param[in] myhtml_incoming_buffer_t*
+ * @param[in] mycore_incoming_buffer_t*
*
* @return size_t
*/
size_t
-myhtml_incoming_buffer_offset(myhtml_incoming_buffer_t *inc_buf);
+mycore_incoming_buffer_offset(mycore_incoming_buffer_t *inc_buf);
/**
* Get Relative Position for Incoming Buffer.
- * Incoming Buffer should be prepared by myhtml_incoming_buffer_find_by_position
+ * Incoming Buffer should be prepared by mycore_incoming_buffer_find_by_position
*
- * @param[in] myhtml_incoming_buffer_t*
+ * @param[in] mycore_incoming_buffer_t*
* @param[in] global begin
*
* @return size_t
*/
size_t
-myhtml_incoming_buffer_relative_begin(myhtml_incoming_buffer_t *inc_buf, size_t begin);
+mycore_incoming_buffer_relative_begin(mycore_incoming_buffer_t *inc_buf, size_t begin);
/**
* This function returns number of available data by Incoming Buffer
- * Incoming buffer may be incomplete. See myhtml_incoming_buffer_next
+ * Incoming buffer may be incomplete. See mycore_incoming_buffer_next
*
- * @param[in] myhtml_incoming_buffer_t*
+ * @param[in] mycore_incoming_buffer_t*
* @param[in] global begin
*
* @return size_t
*/
size_t
-myhtml_incoming_buffer_available_length(myhtml_incoming_buffer_t *inc_buf,
+mycore_incoming_buffer_available_length(mycore_incoming_buffer_t *inc_buf,
size_t relative_begin, size_t length);
/**
* Get next buffer
*
- * @param[in] myhtml_incoming_buffer_t*
+ * @param[in] mycore_incoming_buffer_t*
*
- * @return myhtml_incoming_buffer_t*
+ * @return mycore_incoming_buffer_t*
*/
-myhtml_incoming_buffer_t*
-myhtml_incoming_buffer_next(myhtml_incoming_buffer_t *inc_buf);
+mycore_incoming_buffer_t*
+mycore_incoming_buffer_next(mycore_incoming_buffer_t *inc_buf);
/**
* Get prev buffer
*
- * @param[in] myhtml_incoming_buffer_t*
+ * @param[in] mycore_incoming_buffer_t*
*
- * @return myhtml_incoming_buffer_t*
+ * @return mycore_incoming_buffer_t*
*/
-myhtml_incoming_buffer_t*
-myhtml_incoming_buffer_prev(myhtml_incoming_buffer_t *inc_buf);
+mycore_incoming_buffer_t*
+mycore_incoming_buffer_prev(mycore_incoming_buffer_t *inc_buf);
/***********************************************************************************
*
@@ -2564,7 +2450,7 @@ myhtml_callback_tree_node_remove_set(myhtml_tree_t* tree, myhtml_callback_tree_n
* @return 0 if match, otherwise index of break position
*/
size_t
-myhtml_strcasecmp(const char* str1, const char* str2);
+mycore_strcasecmp(const char* str1, const char* str2);
/**
* Compare two strings ignoring case of the first n characters
@@ -2575,7 +2461,7 @@ myhtml_strcasecmp(const char* str1, const char* str2);
* @return 0 if match, otherwise index of break position
*/
size_t
-myhtml_strncasecmp(const char* str1, const char* str2, size_t size);
+mycore_strncasecmp(const char* str1, const char* str2, size_t size);
/***********************************************************************************
*
@@ -2587,39 +2473,39 @@ myhtml_strncasecmp(const char* str1, const char* str2, size_t size);
* Tree fragment serialization
* The same as myhtml_serialization_tree_buffer function
*/
-bool
-myhtml_serialization(myhtml_tree_node_t* scope_node, myhtml_string_raw_t* str);
+mystatus_t
+myhtml_serialization(myhtml_tree_node_t* scope_node, mycore_string_raw_t* str);
/**
* Only one tree node serialization
* The same as myhtml_serialization_node_buffer function
*/
-bool
-myhtml_serialization_node(myhtml_tree_node_t* node, myhtml_string_raw_t* str);
+mystatus_t
+myhtml_serialization_node(myhtml_tree_node_t* node, mycore_string_raw_t* str);
/**
* Serialize tree to an output string
*
* @param[in] myhtml_tree_t*
* @param[in] scope node
- * @param[in] myhtml_string_raw_t*
+ * @param[in] mycore_string_raw_t*
*
* @return true if successful, otherwise false
*/
-bool
-myhtml_serialization_tree_buffer(myhtml_tree_node_t* scope_node, myhtml_string_raw_t* str);
+mystatus_t
+myhtml_serialization_tree_buffer(myhtml_tree_node_t* scope_node, mycore_string_raw_t* str);
/**
* Serialize node to an output string
*
* @param[in] myhtml_tree_t*
* @param[in] node
- * @param[in] myhtml_string_raw_t*
+ * @param[in] mycore_string_raw_t*
*
* @return true if successful, otherwise false
*/
-bool
-myhtml_serialization_node_buffer(myhtml_tree_node_t* node, myhtml_string_raw_t* str);
+mystatus_t
+myhtml_serialization_node_buffer(myhtml_tree_node_t* node, mycore_string_raw_t* str);
/**
* The serialize function for an entire tree
@@ -2631,9 +2517,9 @@ myhtml_serialization_node_buffer(myhtml_tree_node_t* node, myhtml_string_raw_t*
*
* @return true if successful, otherwise false
*/
-bool
+mystatus_t
myhtml_serialization_tree_callback(myhtml_tree_node_t* scope_node,
- myhtml_callback_serialize_f callback, void* ptr);
+ mycore_callback_serialize_f callback, void* ptr);
/**
* The serialize function for a single node
@@ -2645,9 +2531,9 @@ myhtml_serialization_tree_callback(myhtml_tree_node_t* scope_node,
*
* @return true if successful, otherwise false
*/
-bool
+mystatus_t
myhtml_serialization_node_callback(myhtml_tree_node_t* node,
- myhtml_callback_serialize_f callback, void* ptr);
+ mycore_callback_serialize_f callback, void* ptr);
/***********************************************************************************
*
diff --git a/source/myhtml/api_encoding.h b/source/myhtml/api_encoding.h
deleted file mode 100644
index d32aa4a..0000000
--- a/source/myhtml/api_encoding.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#ifndef MyHTML_API_ENCODING_H
-#define MyHTML_API_ENCODING_H
-#pragma once
-
-#include "myhtml/api.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-enum myhtml_encoding_status {
- MyHTML_ENCODING_STATUS_OK = 0x00,
- MyHTML_ENCODING_STATUS_ERROR = 0x01,
- MyHTML_ENCODING_STATUS_CONTINUE = 0x02,
- MyHTML_ENCODING_STATUS_DONE = 0x04
-}
-typedef myhtml_encoding_status_t;
-
-struct myhtml_encoding_result {
- unsigned long first;
- unsigned long second;
- unsigned long third;
- unsigned long result;
- unsigned long result_aux;
- unsigned long flag;
-}
-typedef myhtml_encoding_result_t;
-
-typedef myhtml_encoding_status_t
-(*myhtml_encoding_custom_f)(unsigned const char byte, myhtml_encoding_result_t *res);
-
-/***********************************************************************************
- *
- * MyHTML_ENCODING
- *
- ***********************************************************************************/
-
-/**
- * Clean myhtml_encoding_result_t. Use this function before and after text decode
- *
- * @param[in] myhtml_encoding_result_t*
- */
-void
-myhtml_encoding_result_clean(myhtml_encoding_result_t *res);
-
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* api_encoding_h */
diff --git a/source/myhtml/callback.c b/source/myhtml/callback.c
index b26377e..a5016b3 100644
--- a/source/myhtml/callback.c
+++ b/source/myhtml/callback.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
diff --git a/source/myhtml/callback.h b/source/myhtml/callback.h
index fd6420a..ad2dc59 100644
--- a/source/myhtml/callback.h
+++ b/source/myhtml/callback.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
diff --git a/source/myhtml/charef.c b/source/myhtml/charef.c
index 5947c11..1930f0c 100644
--- a/source/myhtml/charef.c
+++ b/source/myhtml/charef.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
diff --git a/source/myhtml/charef.h b/source/myhtml/charef.h
index 53e3436..09688df 100644
--- a/source/myhtml/charef.h
+++ b/source/myhtml/charef.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
diff --git a/source/myhtml/charef_resource.h b/source/myhtml/charef_resource.h
index 79c2086..59d93db 100644
--- a/source/myhtml/charef_resource.h
+++ b/source/myhtml/charef_resource.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
diff --git a/source/myhtml/data_process.c b/source/myhtml/data_process.c
index a5081db..4b680c5 100644
--- a/source/myhtml/data_process.c
+++ b/source/myhtml/data_process.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -19,13 +19,13 @@
*/
#include "myhtml/data_process.h"
-#include "myhtml/utils/resources.h"
+#include "mycore/utils/resources.h"
#define MyHTML_DATA_PROCESS_APPEND_WITH_PREPROCESSING() \
tmp_offset += myhtml_string_before_append_any_preprocessing(str, &data[tmp_offset], (offset - tmp_offset), \
proc_entry->tmp_str_pos_proc); \
if(offset != tmp_offset) { \
- if(proc_entry->encoding == MyHTML_ENCODING_UTF_8) \
+ if(proc_entry->encoding == MyENCODING_UTF_8) \
proc_entry->tmp_str_pos_proc = myhtml_string_append_with_preprocessing(str, &data[tmp_offset], (offset - tmp_offset), \
proc_entry->emit_null_char); \
else { \
@@ -42,9 +42,9 @@ void myhtml_data_process_entry_clean(myhtml_data_process_entry_t* proc_entry)
proc_entry->state = myhtml_data_process_state_data;
}
-void myhtml_data_process_string_append_char(myhtml_string_t* str, const char sm)
+void myhtml_data_process_string_append_char(mycore_string_t* str, const char sm)
{
- MyHTML_STRING_REALLOC_IF_NEED(str, 2, 0);
+ MyCORE_STRING_REALLOC_IF_NEED(str, 2, 0);
str->data[str->length] = sm;
str->length++;
@@ -52,7 +52,7 @@ void myhtml_data_process_string_append_char(myhtml_string_t* str, const char sm)
str->data[str->length] = '\0';
}
-size_t myhtml_data_process_state_data(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str, const char* data, size_t offset, size_t size)
+size_t myhtml_data_process_state_data(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str, const char* data, size_t offset, size_t size)
{
size_t tmp_offset = offset;
@@ -63,7 +63,7 @@ size_t myhtml_data_process_state_data(myhtml_data_process_entry_t* proc_entry, m
tmp_offset += myhtml_string_before_append_any_preprocessing(str, &data[tmp_offset], (offset - tmp_offset),
proc_entry->tmp_str_pos_proc);
if(offset != tmp_offset) {
- if(proc_entry->encoding == MyHTML_ENCODING_UTF_8)
+ if(proc_entry->encoding == MyENCODING_UTF_8)
proc_entry->tmp_str_pos_proc = myhtml_string_append_with_preprocessing(str, &data[tmp_offset],
(offset - tmp_offset),
proc_entry->emit_null_char);
@@ -72,7 +72,7 @@ size_t myhtml_data_process_state_data(myhtml_data_process_entry_t* proc_entry, m
myhtml_string_append_chunk_with_convert_encoding_with_preprocessing(str, &proc_entry->res,
&data[tmp_offset], (offset - tmp_offset),
proc_entry->encoding, proc_entry->emit_null_char);
- myhtml_encoding_result_clean(&proc_entry->res);
+ myencoding_result_clean(&proc_entry->res);
}
}
@@ -93,7 +93,7 @@ size_t myhtml_data_process_state_data(myhtml_data_process_entry_t* proc_entry, m
return offset;
}
-size_t myhtml_data_process_state_ampersand(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str, const char* data, size_t offset, size_t size)
+size_t myhtml_data_process_state_ampersand(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str, const char* data, size_t offset, size_t size)
{
if(data[offset] == '#')
{
@@ -133,7 +133,7 @@ size_t myhtml_data_process_state_ampersand(myhtml_data_process_entry_t* proc_ent
return offset;
}
-size_t myhtml_data_process_state_ampersand_data(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str, const char* data, size_t offset, size_t size)
+size_t myhtml_data_process_state_ampersand_data(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str, const char* data, size_t offset, size_t size)
{
size_t tmp_offset = offset;
@@ -147,7 +147,7 @@ size_t myhtml_data_process_state_ampersand_data(myhtml_data_process_entry_t* pro
else {
/* if current charef is atrribute */
if(proc_entry->is_attributes &&
- (data[offset] == '=' || myhtml_string_alphanumeric_character[ (unsigned char)data[offset] ] != 0xff))
+ (data[offset] == '=' || mycore_string_alphanumeric_character[ (unsigned char)data[offset] ] != 0xff))
{
MyHTML_DATA_PROCESS_APPEND_WITH_PREPROCESSING()
@@ -157,9 +157,9 @@ size_t myhtml_data_process_state_ampersand_data(myhtml_data_process_entry_t* pro
if(current_entry->codepoints_len) {
for (size_t i = 0; i < current_entry->codepoints_len; i++) {
- MyHTML_STRING_REALLOC_IF_NEED(str, 5, 0);
+ MyCORE_STRING_REALLOC_IF_NEED(str, 5, 0);
- proc_entry->tmp_str_pos += myhtml_encoding_codepoint_to_ascii_utf_8(current_entry->codepoints[i], &str->data[proc_entry->tmp_str_pos]);
+ proc_entry->tmp_str_pos += myencoding_codepoint_to_ascii_utf_8(current_entry->codepoints[i], &str->data[proc_entry->tmp_str_pos]);
}
str->length = proc_entry->tmp_str_pos;
@@ -178,7 +178,7 @@ size_t myhtml_data_process_state_ampersand_data(myhtml_data_process_entry_t* pro
return offset;
}
-size_t myhtml_data_process_state_ampersand_hash(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str, const char* data, size_t offset, size_t size)
+size_t myhtml_data_process_state_ampersand_hash(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str, const char* data, size_t offset, size_t size)
{
if(data[offset] == 'x' || data[offset] == 'X') {
myhtml_data_process_string_append_char(str, data[offset]);
@@ -192,14 +192,14 @@ size_t myhtml_data_process_state_ampersand_hash(myhtml_data_process_entry_t* pro
return offset;
}
-size_t myhtml_data_process_state_ampersand_hash_data(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str, const char* data, size_t offset, size_t size)
+size_t myhtml_data_process_state_ampersand_hash_data(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str, const char* data, size_t offset, size_t size)
{
const unsigned char *u_data = (const unsigned char*)data;
size_t tmp_offset = offset;
while(offset < size)
{
- if(myhtml_string_chars_num_map[ u_data[offset] ] == 0xff)
+ if(mycore_string_chars_num_map[ u_data[offset] ] == 0xff)
{
proc_entry->state = myhtml_data_process_state_data;
@@ -217,7 +217,7 @@ size_t myhtml_data_process_state_ampersand_hash_data(myhtml_data_process_entry_t
}
if(proc_entry->tmp_num <= 0x10FFFF) {
- proc_entry->tmp_num = myhtml_string_chars_num_map[ u_data[offset] ] + proc_entry->tmp_num * 10;
+ proc_entry->tmp_num = mycore_string_chars_num_map[ u_data[offset] ] + proc_entry->tmp_num * 10;
}
offset++;
@@ -228,14 +228,14 @@ size_t myhtml_data_process_state_ampersand_hash_data(myhtml_data_process_entry_t
return offset;
}
-size_t myhtml_data_process_state_ampersand_hash_x_data(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str, const char* data, size_t offset, size_t size)
+size_t myhtml_data_process_state_ampersand_hash_x_data(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str, const char* data, size_t offset, size_t size)
{
unsigned const char *u_data = (unsigned const char*)data;
size_t tmp_offset = offset;
while(offset < size)
{
- if(myhtml_string_chars_hex_map[ u_data[offset] ] == 0xff)
+ if(mycore_string_chars_hex_map[ u_data[offset] ] == 0xff)
{
proc_entry->state = myhtml_data_process_state_data;
@@ -254,7 +254,7 @@ size_t myhtml_data_process_state_ampersand_hash_x_data(myhtml_data_process_entry
if(proc_entry->tmp_num <= 0x10FFFF) {
proc_entry->tmp_num <<= 4;
- proc_entry->tmp_num |= myhtml_string_chars_hex_map[ u_data[offset] ];
+ proc_entry->tmp_num |= mycore_string_chars_hex_map[ u_data[offset] ];
}
offset++;
@@ -265,10 +265,10 @@ size_t myhtml_data_process_state_ampersand_hash_x_data(myhtml_data_process_entry
return offset;
}
-void myhtml_data_process_state_end(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str)
+void myhtml_data_process_state_end(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str)
{
/* 4 is max utf8 byte + \0 */
- MyHTML_STRING_REALLOC_IF_NEED(str, 5, 0);
+ MyCORE_STRING_REALLOC_IF_NEED(str, 5, 0);
if(proc_entry->tmp_num <= 0x9F)
proc_entry->tmp_num = replacement_character[proc_entry->tmp_num];
@@ -278,12 +278,12 @@ void myhtml_data_process_state_end(myhtml_data_process_entry_t* proc_entry, myht
proc_entry->tmp_num = replacement_character[0];
str->length = proc_entry->tmp_str_pos +
- myhtml_encoding_codepoint_to_ascii_utf_8(proc_entry->tmp_num, &str->data[proc_entry->tmp_str_pos]);
+ myencoding_codepoint_to_ascii_utf_8(proc_entry->tmp_num, &str->data[proc_entry->tmp_str_pos]);
str->data[str->length] = '\0';
}
-void myhtml_data_process(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str, const char* data, size_t size)
+void myhtml_data_process(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str, const char* data, size_t size)
{
size_t offset = 0;
@@ -292,16 +292,16 @@ void myhtml_data_process(myhtml_data_process_entry_t* proc_entry, myhtml_string_
}
}
-void myhtml_data_process_end(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str)
+void myhtml_data_process_end(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str)
{
if(proc_entry->state == myhtml_data_process_state_ampersand_data && proc_entry->charef_res.last_entry)
{
const charef_entry_t *entry = proc_entry->charef_res.last_entry;
for (size_t i = 0; i < entry->codepoints_len; i++) {
- MyHTML_STRING_REALLOC_IF_NEED(str, 5, 0);
+ MyCORE_STRING_REALLOC_IF_NEED(str, 5, 0);
- proc_entry->tmp_str_pos += myhtml_encoding_codepoint_to_ascii_utf_8(entry->codepoints[i], &str->data[proc_entry->tmp_str_pos]);
+ proc_entry->tmp_str_pos += myencoding_codepoint_to_ascii_utf_8(entry->codepoints[i], &str->data[proc_entry->tmp_str_pos]);
}
str->length = proc_entry->tmp_str_pos;
diff --git a/source/myhtml/data_process.h b/source/myhtml/data_process.h
index 558a5aa..a461d10 100644
--- a/source/myhtml/data_process.h
+++ b/source/myhtml/data_process.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -35,8 +35,8 @@ struct myhtml_data_process_entry {
myhtml_data_process_state_f state;
/* for encodings */
- myhtml_encoding_t encoding;
- myhtml_encoding_result_t res;
+ myencoding_t encoding;
+ myencoding_result_t res;
/* temp */
size_t tmp_str_pos_proc;
@@ -53,16 +53,16 @@ struct myhtml_data_process_entry {
void myhtml_data_process_entry_clean(myhtml_data_process_entry_t* proc_entry);
-void myhtml_data_process(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str, const char* data, size_t size);
-void myhtml_data_process_end(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str);
+void myhtml_data_process(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str, const char* data, size_t size);
+void myhtml_data_process_end(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str);
-size_t myhtml_data_process_state_data(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str, const char* data, size_t offset, size_t size);
-size_t myhtml_data_process_state_ampersand(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str, const char* data, size_t offset, size_t size);
-size_t myhtml_data_process_state_ampersand_data(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str, const char* data, size_t offset, size_t size);
-size_t myhtml_data_process_state_ampersand_hash(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str, const char* data, size_t offset, size_t size);
-size_t myhtml_data_process_state_ampersand_hash_data(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str, const char *data, size_t offset, size_t size);
-size_t myhtml_data_process_state_ampersand_hash_x_data(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str, const char* data, size_t offset, size_t size);
-void myhtml_data_process_state_end(myhtml_data_process_entry_t* proc_entry, myhtml_string_t* str);
+size_t myhtml_data_process_state_data(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str, const char* data, size_t offset, size_t size);
+size_t myhtml_data_process_state_ampersand(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str, const char* data, size_t offset, size_t size);
+size_t myhtml_data_process_state_ampersand_data(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str, const char* data, size_t offset, size_t size);
+size_t myhtml_data_process_state_ampersand_hash(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str, const char* data, size_t offset, size_t size);
+size_t myhtml_data_process_state_ampersand_hash_data(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str, const char *data, size_t offset, size_t size);
+size_t myhtml_data_process_state_ampersand_hash_x_data(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str, const char* data, size_t offset, size_t size);
+void myhtml_data_process_state_end(myhtml_data_process_entry_t* proc_entry, mycore_string_t* str);
#ifdef __cplusplus
} /* extern "C" */
diff --git a/source/myhtml/def.h b/source/myhtml/def.h
index 389b198..8ec75e6 100644
--- a/source/myhtml/def.h
+++ b/source/myhtml/def.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
diff --git a/source/myhtml/encoding.c b/source/myhtml/encoding.c
deleted file mode 100644
index d7a7807..0000000
--- a/source/myhtml/encoding.c
+++ /dev/null
@@ -1,1222 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#include "myhtml/encoding.h"
-#include "myhtml/encoding_resource.h"
-#include "myhtml/utils/resources.h"
-
-
-
-myhtml_encoding_custom_f myhtml_encoding_get_function_by_id(myhtml_encoding_t idx)
-{
- return myhtml_encoding_function_index[idx];
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_utf_8(unsigned const char data, myhtml_encoding_result_t *res)
-{
- // res->first -- lower boundary
- // res->second -- upper boundary
- // res->result -- code point
- // res->third -- bytes seen
- // res->flag -- bytes needed
-
- if(res->flag == 0)
- {
- if(data <= 0x7F) {
- res->result = data;
- return MyHTML_ENCODING_STATUS_OK;
- }
- else if(data >= 0xC2 && data <= 0xDF) {
- res->flag = 1;
- res->result = data - 0xC0;
- }
- else if(data >= 0xE0 && data <= 0xEF) {
- if(data == 0xE0) {
- res->first = 0xA0;
- }
- else if(data == 0xED){
- res->second = 0x9F;
- }
-
- res->flag = 2;
- res->result = data - 0xE0;
- }
- else if(data >= 0xF0 && data <= 0xF4) {
- if(data == 0xF0) {
- res->first = 0x90;
- }
- else if(data == 0xF4){
- res->second = 0x8F;
- }
-
- res->flag = 2;
- res->result = data - 0xF0;
- }
- else
- return MyHTML_ENCODING_STATUS_ERROR;
-
- res->result = res->result << (6 * res->flag);
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
-
- if(data < res->first && data > res->second)
- {
- res->result = 0x00;
- res->flag = 0x00;
- res->third = 0x00;
- res->first = 0x80;
- res->second = 0xBF;
-
- return MyHTML_ENCODING_STATUS_DONE|MyHTML_ENCODING_STATUS_ERROR;
- }
-
- res->first = 0x80;
- res->second = 0xBF;
-
- res->third++;
- res->result += (unsigned long)(data - 0x80) << (6 * (res->flag - res->third));
-
- if(res->third != res->flag)
- return MyHTML_ENCODING_STATUS_CONTINUE;
-
- res->flag = 0x00;
- res->third = 0x00;
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_ibm866(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_ibm866[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_2(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_iso_8859_2[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_3(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_iso_8859_3[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_4(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_iso_8859_4[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_5(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_iso_8859_5[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_6(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_iso_8859_6[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_7(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_iso_8859_7[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_8(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_iso_8859_8[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_8_i(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_iso_8859_8[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_10(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_iso_8859_10[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_13(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_iso_8859_13[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_14(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_iso_8859_14[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_15(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_iso_8859_15[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_16(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_iso_8859_16[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_koi8_r(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_koi8_r[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_koi8_u(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_koi8_u[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_macintosh(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_macintosh[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_windows_874(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_windows_874[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1250(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_windows_1250[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1251(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_windows_1251[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1252(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_windows_1252[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1253(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_windows_1253[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1254(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_windows_1254[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1255(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_windows_1255[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1256(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_windows_1256[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1257(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_windows_1257[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1258(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_windows_1258[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_x_mac_cyrillic(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- (res->result = data);
- else
- (res->result = myhtml_encoding_map_x_mac_cyrillic[(data - 0x80)]);
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_gbk(unsigned const char data, myhtml_encoding_result_t *res)
-{
- return myhtml_encoding_decode_gb18030(data, res);
-}
-
-unsigned long myhtml_encoding_index_gb18030_ranges_code_point(unsigned long pointer)
-{
- // step 1
- if((pointer > 39419 && pointer < 189000) || pointer > 1237575)
- return 0;
-
- // step 2
- if(pointer == 7457)
- return 0xe7c7;
-
- // step 3
- unsigned long offset = sizeof(myhtml_encoding_map_gb18030_ranges) / (sizeof(unsigned long) * 2);
-
- unsigned long code_point_offset = 0;
- while (offset) {
- offset--;
-
- if(myhtml_encoding_map_gb18030_ranges[offset][0] == pointer ||
- myhtml_encoding_map_gb18030_ranges[offset][0] < pointer)
- {
- code_point_offset = myhtml_encoding_map_gb18030_ranges[offset][1];
- break;
- }
- }
-
- // step 4
- return (code_point_offset + pointer - offset);
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_gb18030(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(res->third) {
- if(data >= 0x30 && data <= 0x39) {
- res->result = myhtml_encoding_index_gb18030_ranges_code_point((((res->first - 0x81) * 10 + res->second - 0x30) *
- 126 + res->third - 0x81) * 10 + data - 0x30);
- }
-
- res->first = 0;
- res->second = 0;
- res->third = 0;
-
- if(res->result)
- return MyHTML_ENCODING_STATUS_OK;
-
- return MyHTML_ENCODING_STATUS_ERROR;
- }
- else if(res->second) {
- if(data >= 0x81 && data <= 0xFE) {
- res->third = data;
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
-
- res->first = 0;
- res->second = 0;
-
- return MyHTML_ENCODING_STATUS_ERROR;
- }
- else if(res->first) {
- if(data >= 0x30 && data <= 0x39) {
- res->second = data;
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
-
- unsigned long lead = res->first, pointer = 0x00;
- res->first = 0x00;
-
- unsigned char offset;
-
- if(data < 0x7F)
- offset = 0x40;
- else
- offset = 0x41;
-
- if((data >= 0x40 && data <= 0x7E) ||
- (data >= 0x80 && data <= 0xFE))
- {
- pointer = (lead - 0x81) * 190 + (data - offset);
- }
- else {
- return MyHTML_ENCODING_STATUS_ERROR;
- }
-
- res->result = myhtml_encoding_map_gb18030[pointer];
- return MyHTML_ENCODING_STATUS_OK;
- }
-
- if(data <= 0x7F) {
- res->result = data;
- return MyHTML_ENCODING_STATUS_OK;
- }
-
- if(data == 0x80) {
- res->result = 0x20ac;
- return MyHTML_ENCODING_STATUS_OK;
- }
-
- if(data >= 0x81 && data <= 0xFE) {
- res->first = data;
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
-
- return MyHTML_ENCODING_STATUS_ERROR;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_big5(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(res->first)
- {
- unsigned long lead = res->first;
- unsigned long pointer = 0x00;
- unsigned long offset;
-
- res->first = 0x00;
-
- if(data < 0x7F)
- offset = 0x40;
- else
- offset = 0x62;
-
- if((data >= 0x40 && data <= 0x7E) ||
- (data >= 0xA1 && data <= 0xFE))
- {
- pointer = (lead - 0x81) * 157 + (data - offset);
- }
-
- switch (pointer) {
- case 1133:
- // U+00CA U+0304
- res->result = 0x00ca;
- res->result_aux = 0x0304;
- return MyHTML_ENCODING_STATUS_OK;
- case 1135:
- // U+00CA U+030C
- res->result = 0x00ca;
- res->result_aux = 0x030c;
- return MyHTML_ENCODING_STATUS_OK;
- case 1164:
- // U+00EA U+0304
- res->result = 0x00ea;
- res->result_aux = 0x0304;
- return MyHTML_ENCODING_STATUS_OK;
- case 1166:
- // U+00EA U+030C
- res->result = 0x00ea;
- res->result_aux = 0x030c;
- return MyHTML_ENCODING_STATUS_OK;
- default:
- break;
- }
-
- if(pointer == 0)
- return MyHTML_ENCODING_STATUS_ERROR;
-
- res->result = myhtml_encoding_map_big5[pointer];
- res->result_aux = 0;
-
- return MyHTML_ENCODING_STATUS_OK;
- }
-
- if(data <= 0x7F) {
- res->result = data;
- return MyHTML_ENCODING_STATUS_OK;
- }
-
- if(data >= 0x81 && data <= 0xFE) {
- res->first = data;
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
-
- return MyHTML_ENCODING_STATUS_ERROR;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_euc_jp(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(res->first == 0x8E && (data >= 0xA1 && data <= 0xDF)) {
- res->first = 0x00;
- res->result = 0xFF61 + data - 0xA1;
-
- return MyHTML_ENCODING_STATUS_OK;
- }
- else if(res->first == 0x8F && (data >= 0xA1 && data <= 0xFE)) {
- res->flag = 1;
- res->first = data;
-
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
- else if(res->first)
- {
- unsigned long lead = res->first;
- res->first = 0x00;
-
- if((lead >= 0xA1 && lead <= 0xFE) &&
- (data >= 0xA1 && data <= 0xFE))
- {
- unsigned long idx = (lead - 0xA1) * 94 + data - 0xA1;
- if(res->flag) {
- res->result = myhtml_encoding_map_jis0212[idx];
- }
- else {
- res->result = myhtml_encoding_map_jis0208[idx];
- }
-
- res->flag = 0;
-
- if(res->result == 0)
- return MyHTML_ENCODING_STATUS_ERROR;
-
- return MyHTML_ENCODING_STATUS_OK;
- }
- }
-
- if(data <= 0x7F) {
- res->result = data;
- return MyHTML_ENCODING_STATUS_OK;
- }
-
- if((data >= 0x8E && data <= 0x8F) ||
- (data >= 0xA1 && data <= 0xFE))
- {
- res->first = data;
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
-
- return MyHTML_ENCODING_STATUS_ERROR;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_iso_2022_jp(unsigned const char data, myhtml_encoding_result_t *res)
-{
- // res->first -- lead
- // res->second -- state
- // res->third -- output state
- // res->flag -- output flag
-
- switch (res->second) {
- case 0: // ASCII
- {
- if(data == 0x1B) {
- res->second = 6;
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
- else if((data <= 0x7F) &&
- data != 0x0E && data != 0x0F && data != 0x1B)
- {
- res->flag = 0;
- res->result = data;
- return MyHTML_ENCODING_STATUS_OK;
- }
-
- res->flag = 0;
- return MyHTML_ENCODING_STATUS_ERROR;
- }
-
- case 1: // Roman
- {
- if(data == 0x1B) {
- res->second = 6;
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
- else if(data == 0x5C) {
- res->flag = 0;
- res->result = 0x00A5;
- return MyHTML_ENCODING_STATUS_OK;
- }
- else if(data == 0x7E) {
- res->flag = 0;
- res->result = 0x203E;
- return MyHTML_ENCODING_STATUS_OK;
- }
- else if((data <= 0x7F) &&
- data != 0x0E && data != 0x0F &&
- data != 0x1B && data != 0x5C &&
- data != 0x7E)
- {
- res->flag = 0;
- res->result = data;
- return MyHTML_ENCODING_STATUS_OK;
- }
-
- res->flag = 0;
- return MyHTML_ENCODING_STATUS_ERROR;
- }
-
- case 3: // Katakana
- {
- if(data == 0x1B) {
- res->second = 6;
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
- else if(data >= 0x21 && data <= 0x5F) {
- res->flag = 0;
- res->result = 0xFF61 + data - 0x21;
-
- return MyHTML_ENCODING_STATUS_OK;
- }
-
- res->flag = 0;
- return MyHTML_ENCODING_STATUS_ERROR;
- }
-
- case 4: // Lead byte
- {
- if(data == 0x1B) {
- res->second = 6;
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
- else if(data >= 0x21 && data <= 0x7E) {
- res->flag = 0;
- res->first = data;
- res->second = 5;
-
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
-
- res->flag = 0;
- return MyHTML_ENCODING_STATUS_ERROR;
- }
-
- case 5: // Trail byte
- {
- if(data == 0x1B) {
- res->second = 6;
- return MyHTML_ENCODING_STATUS_CONTINUE|MyHTML_ENCODING_STATUS_ERROR;
- }
- else if(data >= 0x21 && data <= 0x7E) {
- res->second = 4;
-
- unsigned long pointer = (res->first - 0x21) * 94 + data - 0x21;
- res->result = myhtml_encoding_map_jis0208[pointer];
-
- if(res->result == 0)
- return MyHTML_ENCODING_STATUS_ERROR;
-
- return MyHTML_ENCODING_STATUS_OK;
- }
-
- res->second = 4;
- return MyHTML_ENCODING_STATUS_ERROR;
- }
-
- case 6: // Escape start
- {
- if(data == 0x24 || data == 0x28) {
- res->first = data;
- res->second = 7;
-
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
-
- res->flag = 0;
- res->second = res->third;
-
- return MyHTML_ENCODING_STATUS_ERROR;
- }
-
- case 7: // Escape
- {
- unsigned long lead = res->first;
- res->first = 0x00;
-
- res->second = 0x00;
-
- if(lead == 0x28 && data == 0x42) {
- res->second = 0;
- }
- else if(lead == 0x28 && data == 0x4A) {
- res->second = 1;
- }
- else if(lead == 0x28 && data == 0x49) {
- res->second = 2;
- }
- else if(lead == 0x24 && (data == 0x40 || data == 0x42)) {
- res->second = 4;
- }
-
- if(res->second)
- {
- res->third = res->second;
-
- unsigned long output_flag = res->flag;
- res->flag = 1;
-
- if(output_flag)
- return MyHTML_ENCODING_STATUS_ERROR;
-
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
-
- res->flag = 0;
- res->second = res->third;
-
- return MyHTML_ENCODING_STATUS_ERROR;
- }
-
- default:
- break;
- }
-
- return 0;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_shift_jis(unsigned const char data, myhtml_encoding_result_t *res)
-{
- // res->first -- lead
-
- if(res->first)
- {
- unsigned long offset;
- unsigned long lead_offset;
-
- if(data < 0x7F)
- offset = 0x40;
- else
- offset = 0x41;
-
- if(res->first < 0xA0)
- lead_offset = 0x81;
- else
- lead_offset = 0xC1;
-
- unsigned long pointer = 0x00;
- if((data >= 0x40 && data <= 0x7E) ||
- (data >= 0x80 && data <= 0xFC))
- {
- pointer = (res->first - lead_offset) * 188 + data - offset;
- }
-
- if(pointer)
- res->result = myhtml_encoding_map_jis0208[pointer];
- else
- res->result = 0x00;
-
- if(res->result == 0x00 && (pointer >= 8836 && pointer <= 10528)) {
- res->result = 0xE000 + pointer - 8836;
- }
-
- if(res->result)
- return MyHTML_ENCODING_STATUS_OK;
-
- return MyHTML_ENCODING_STATUS_ERROR;
- }
-
- if((data <= 0x7F) || data == 0x80) {
- res->result = data;
- return MyHTML_ENCODING_STATUS_OK;
- }
-
- if(data >= 0xA1 && data <= 0xDF) {
- res->result = 0xFF61 + data - 0xA1;
- return MyHTML_ENCODING_STATUS_OK;
- }
-
- if((data >= 0x81 && data <= 0x9F) ||
- (data >= 0xE0 && data <= 0xFC)) {
- res->first = data;
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
-
- return MyHTML_ENCODING_STATUS_ERROR;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_euc_kr(unsigned const char data, myhtml_encoding_result_t *res)
-{
- // res->first -- lead
-
- if(res->first)
- {
- unsigned long lead = res->first, pointer = 0x00;
- res->first = 0x00;
-
- if(data >= 0x41 && data <= 0xFE) {
- pointer = (lead - 0x81) * 190 + (data - 0x41);
- }
-
- if(pointer)
- res->result = myhtml_encoding_map_euc_kr[pointer];
-
- if(res->result)
- return MyHTML_ENCODING_STATUS_OK;
-
- return MyHTML_ENCODING_STATUS_ERROR;
- }
-
- if(data <= 0x7F) {
- res->result = data;
- return MyHTML_ENCODING_STATUS_OK;
- }
-
- if(data >= 0x81 && data <= 0xFE) {
- res->first = data;
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
-
- return MyHTML_ENCODING_STATUS_ERROR;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_shared_utf_16(unsigned const char data, myhtml_encoding_result_t *res)
-{
- // res->first -- lead
- // res->second -- lead surrogate
- // res->flag -- flag
-
- if(res->first == 0x00) {
- res->first = data;
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
-
- unsigned long code_unit;
- if(res->flag)
- (code_unit = (res->first << 8) + data);
- else
- (code_unit = (unsigned long)(data << 8) + res->first);
-
- res->first = 0x00;
-
- if(res->second) {
- unsigned long lead_surrogate = res->second;
- res->second = 0x00;
-
- if(code_unit >= 0xDC00 && code_unit <= 0xDFFF) {
- res->result = 0x10000 + ((lead_surrogate - 0xD800) << 10) + (code_unit - 0xDC00);
- return MyHTML_ENCODING_STATUS_OK;
- }
-
- unsigned char byte1 = (unsigned char)(code_unit >> 8);
- unsigned char byte2 = (unsigned char)(code_unit & 0x00FF);
-
- if(res->flag) {
- res->result = byte1;
- res->result_aux = byte2;
- }
- else {
- res->result = byte2;
- res->result_aux = byte1;
- }
-
- return MyHTML_ENCODING_STATUS_DONE|MyHTML_ENCODING_STATUS_ERROR;
- }
-
- if(code_unit >= 0xD800 && code_unit <= 0xDBFF) {
- res->second = code_unit;
- return MyHTML_ENCODING_STATUS_CONTINUE;
- }
-
- if(code_unit >= 0xDC00 && code_unit <= 0xDFFF) {
- return MyHTML_ENCODING_STATUS_ERROR;
- }
-
- res->result = code_unit;
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_utf_16be(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(res->flag == 0)
- res->flag = 1;
-
- return myhtml_encoding_decode_shared_utf_16(data, res);
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_utf_16le(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(res->flag)
- res->flag = 0;
-
- return myhtml_encoding_decode_shared_utf_16(data, res);
-}
-
-enum myhtml_encoding_status myhtml_encoding_decode_x_user_defined(unsigned const char data, myhtml_encoding_result_t *res)
-{
- if(data <= 0x7F)
- res->result = data;
- else
- res->result = 0xF780 + data - 0x80;
-
- return MyHTML_ENCODING_STATUS_OK;
-}
-
-void myhtml_encoding_result_clean(myhtml_encoding_result_t *res)
-{
- memset(res, 0, sizeof(myhtml_encoding_result_t));
-}
-
-size_t myhtml_encoding_codepoint_ascii_length(size_t codepoint)
-{
- if (codepoint <= 0x0000007F) {
- return 1;
- }
- else if (codepoint <= 0x000007FF) {
- return 2;
- }
- else if (codepoint <= 0x0000FFFF) {
- return 3;
- }
- else if (codepoint <= 0x001FFFFF) {
- return 4;
- }
- /* not uses in unicode */
- else if (codepoint <= 0x03FFFFFF) {
- return 5;
- }
- else if (codepoint <= 0x7FFFFFFF) {
- return 6;
- }
-
- return 0;
-}
-
-size_t myhtml_encoding_codepoint_to_ascii_utf_8(size_t codepoint, char *data)
-{
- /* 0x80 -- 10xxxxxx */
- /* 0xC0 -- 110xxxxx */
- /* 0xE0 -- 1110xxxx */
- /* 0xF0 -- 11110xxx */
- /* 0xF8 -- 111110xx */
- /* 0xFC -- 1111110x */
-
- if (codepoint <= 0x0000007F) {
- /* 0xxxxxxx */
- data[0] = (char)codepoint;
- return 1;
- }
- else if (codepoint <= 0x000007FF) {
- /* 110xxxxx 10xxxxxx */
- data[0] = (char)(0xC0 | (codepoint >> 6 ));
- data[1] = (char)(0x80 | (codepoint & 0x3F));
-
- return 2;
- }
- else if (codepoint <= 0x0000FFFF) {
- /* 1110xxxx 10xxxxxx 10xxxxxx */
- data[0] = (char)(0xE0 | ((codepoint >> 12)));
- data[1] = (char)(0x80 | ((codepoint >> 6 ) & 0x3F));
- data[2] = (char)(0x80 | ( codepoint & 0x3F));
-
- return 3;
- }
- else if (codepoint <= 0x001FFFFF) {
- /* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */
- data[0] = (char)(0xF0 | ( codepoint >> 18));
- data[1] = (char)(0x80 | ((codepoint >> 12) & 0x3F));
- data[2] = (char)(0x80 | ((codepoint >> 6 ) & 0x3F));
- data[3] = (char)(0x80 | ( codepoint & 0x3F));
-
- return 4;
- }
- /* not uses in unicode */
- // else if (codepoint <= 0x03FFFFFF) {
- // /* 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
- // data[0] = 0xF8 | ( codepoint >> 24);
- // data[1] = 0x80 | ((codepoint >> 18) & 0x3F);
- // data[2] = 0x80 | ((codepoint >> 12) & 0x3F);
- // data[3] = 0x80 | ((codepoint >> 6 ) & 0x3F);
- // data[4] = 0x80 | ( codepoint & 0x3F);
- //
- // return 5;
- // }
- // else if (codepoint <= 0x7FFFFFFF) {
- // /* 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
- // data[0] = 0xFC | ( codepoint >> 30);
- // data[1] = 0x80 | ((codepoint >> 24) & 0x3F);
- // data[2] = 0x80 | ((codepoint >> 18) & 0x3F);
- // data[3] = 0x80 | ((codepoint >> 12) & 0x3F);
- // data[4] = 0x80 | ((codepoint >> 6 ) & 0x3F);
- // data[5] = 0x80 | ( codepoint & 0x3F);
- //
- // return 6;
- // }
-
- return 0;
-}
-
-size_t myhtml_encoding_codepoint_to_lowercase_ascii_utf_8(size_t codepoint, char *data)
-{
- /* 0x80 -- 10xxxxxx */
- /* 0xC0 -- 110xxxxx */
- /* 0xE0 -- 1110xxxx */
- /* 0xF0 -- 11110xxx */
- /* 0xF8 -- 111110xx */
- /* 0xFC -- 1111110x */
-
- if (codepoint <= 0x0000007F) {
- /* 0xxxxxxx */
- data[0] = (char)myhtml_string_chars_lowercase_map[ codepoint ];
- return 1;
- }
- else if (codepoint <= 0x000007FF) {
- /* 110xxxxx 10xxxxxx */
- data[0] = (char)(0xC0 | (codepoint >> 6 ));
- data[1] = (char)(0x80 | (codepoint & 0x3F));
-
- return 2;
- }
- else if (codepoint <= 0x0000FFFF) {
- /* 1110xxxx 10xxxxxx 10xxxxxx */
- data[0] = (char)(0xE0 | ((codepoint >> 12)));
- data[1] = (char)(0x80 | ((codepoint >> 6 ) & 0x3F));
- data[2] = (char)(0x80 | ( codepoint & 0x3F));
-
- return 3;
- }
- else if (codepoint <= 0x001FFFFF) {
- /* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */
- data[0] = (char)(0xF0 | ( codepoint >> 18));
- data[1] = (char)(0x80 | ((codepoint >> 12) & 0x3F));
- data[2] = (char)(0x80 | ((codepoint >> 6 ) & 0x3F));
- data[3] = (char)(0x80 | ( codepoint & 0x3F));
-
- return 4;
- }
- /* not uses in unicode */
- // else if (codepoint <= 0x03FFFFFF) {
- // /* 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
- // data[0] = 0xF8 | ( codepoint >> 24);
- // data[1] = 0x80 | ((codepoint >> 18) & 0x3F);
- // data[2] = 0x80 | ((codepoint >> 12) & 0x3F);
- // data[3] = 0x80 | ((codepoint >> 6 ) & 0x3F);
- // data[4] = 0x80 | ( codepoint & 0x3F);
- //
- // return 5;
- // }
- // else if (codepoint <= 0x7FFFFFFF) {
- // /* 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
- // data[0] = 0xFC | ( codepoint >> 30);
- // data[1] = 0x80 | ((codepoint >> 24) & 0x3F);
- // data[2] = 0x80 | ((codepoint >> 18) & 0x3F);
- // data[3] = 0x80 | ((codepoint >> 12) & 0x3F);
- // data[4] = 0x80 | ((codepoint >> 6 ) & 0x3F);
- // data[5] = 0x80 | ( codepoint & 0x3F);
- //
- // return 6;
- // }
-
- return 0;
-}
-
-size_t myhtml_encoding_ascii_utf_8_to_codepoint(const unsigned char* data, size_t* codepoint)
-{
- if (*data < 0x80){
- /* 0xxxxxxx */
- *codepoint = (size_t)*data;
- return 1;
- }
- else if ((*data & 0xe0) == 0xc0) {
- /* 110xxxxx 10xxxxxx */
- *codepoint = (data[0] ^ (0xC0 & data[0])) << 6;
- *codepoint |= (data[1] ^ (0x80 & data[1]));
-
- return 2;
- }
- else if ((*data & 0xf0) == 0xe0) {
- /* 1110xxxx 10xxxxxx 10xxxxxx */
- *codepoint = (data[0] ^ (0xE0 & data[0])) << 12;
- *codepoint |= (data[1] ^ (0x80 & data[1])) << 6;
- *codepoint |= (data[2] ^ (0x80 & data[2]));
-
- return 3;
- }
- else if ((*data & 0xf8) == 0xf0) {
- /* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */
- *codepoint = (data[0] ^ (0xF0 & data[0])) << 18;
- *codepoint |= (data[1] ^ (0x80 & data[1])) << 12;
- *codepoint |= (data[2] ^ (0x80 & data[2])) << 6;
- *codepoint |= (data[3] ^ (0x80 & data[3]));
-
- return 4;
- }
-
- return 0;
-}
-
-size_t myhtml_encoding_codepoint_to_ascii_utf_16(size_t codepoint, char *data)
-{
- if((codepoint >> 16)) {
- codepoint -= 0x10000;
-
- size_t high = 0xD800 | (codepoint >> 10);
- size_t low = 0xDC00 | (codepoint & 0x3FF);
-
- data[0] = (char)(high >> 8);
- data[1] = (char)high;
- data[2] = (char)(low >> 8);
- data[3] = (char)low;
-
- return 4;
- }
-
- data[0] = (char)(codepoint >> 8);
- data[1] = (char)codepoint;
-
- return 2;
-}
-
-size_t myhtml_encoding_convert_to_ascii_utf_8(myhtml_string_raw_t* raw_str, const char* buff, size_t length, myhtml_encoding_t encoding)
-{
- if(raw_str->data == NULL) {
- raw_str->size = length + 1;
- raw_str->length = 0;
- raw_str->data = myhtml_malloc(sizeof(char) * raw_str->size);
-
- if(raw_str->data == NULL)
- return 0;
- }
-
- myhtml_encoding_result_t res = {0};
-
- unsigned const char* u_buff = (unsigned const char*)buff;
- const myhtml_encoding_custom_f func = myhtml_encoding_get_function_by_id(encoding);
-
- size_t i;
- for (i = 0; i < length; i++)
- {
- if(func(u_buff[i], &res) == MyHTML_ENCODING_STATUS_OK) {
- if((raw_str->length + 6) >= raw_str->size) {
- size_t new_size = raw_str->length + 6 + (length / 2);
- char *new_data = myhtml_realloc(raw_str->data, sizeof(char) * new_size);
-
- if(new_data == NULL) {
- return 0;
- }
-
- raw_str->data = new_data;
- raw_str->size = new_size;
- }
-
- raw_str->length += myhtml_encoding_codepoint_to_ascii_utf_8(res.result, &raw_str->data[raw_str->length]);
- }
- }
-
- return i;
-}
-
-
diff --git a/source/myhtml/encoding.h b/source/myhtml/encoding.h
deleted file mode 100644
index e575690..0000000
--- a/source/myhtml/encoding.h
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#ifndef MyHTML_ENCODING_H
-#define MyHTML_ENCODING_H
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "myhtml/myosi.h"
-#include "myhtml/utils.h"
-#include "myhtml/mystring.h"
-
-enum myhtml_encoding_status {
- MyHTML_ENCODING_STATUS_OK = 0x00,
- MyHTML_ENCODING_STATUS_ERROR = 0x01,
- MyHTML_ENCODING_STATUS_CONTINUE = 0x02,
- MyHTML_ENCODING_STATUS_DONE = 0x04
-}
-typedef myhtml_encoding_status_t;
-
-struct myhtml_encoding_result {
- unsigned long first;
- unsigned long second;
- unsigned long third;
- unsigned long result;
- unsigned long result_aux;
- unsigned long flag;
-};
-
-struct myhtml_encoding_trigram {
- const unsigned char trigram[3];
- size_t value;
-};
-
-struct myhtml_encoding_trigram_result {
- size_t count;
- size_t value;
-};
-
-struct myhtml_encoding_unicode_result {
- size_t count_ascii;
- size_t count_good;
- size_t count_bad;
-};
-
-struct myhtml_encoding_detect_name_entry {
- const char* name;
- size_t name_length;
- const char* label;
- size_t label_length;
-
- myhtml_encoding_t encoding;
-
- size_t next;
- size_t curr;
-};
-
-struct myhtml_encoding_detect_attr {
- size_t key_begin;
- size_t key_length;
- size_t value_begin;
- size_t value_length;
-
- myhtml_encoding_detect_attr_t *next;
-};
-
-struct myhtml_encoding_entry_name_index {
- const char *name;
- size_t length;
-};
-
-typedef myhtml_encoding_status_t (*myhtml_encoding_custom_f)(unsigned const char data, myhtml_encoding_result_t *res);
-
-myhtml_encoding_custom_f myhtml_encoding_get_function_by_id(myhtml_encoding_t idx);
-
-enum myhtml_encoding_status myhtml_encoding_decode_utf_8(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_ibm866(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_2(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_3(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_4(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_5(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_6(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_7(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_8(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_8_i(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_10(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_13(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_14(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_15(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_iso_8859_16(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_koi8_r(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_koi8_u(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_macintosh(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_windows_874(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1250(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1251(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1252(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1253(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1254(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1255(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1256(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1257(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_windows_1258(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_x_mac_cyrillic(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_gbk(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_gb18030(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_big5(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_euc_jp(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_iso_2022_jp(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_shift_jis(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_euc_kr(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_shared_utf_16(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_utf_16be(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_utf_16le(unsigned const char data, myhtml_encoding_result_t *res);
-enum myhtml_encoding_status myhtml_encoding_decode_x_user_defined(unsigned const char data, myhtml_encoding_result_t *res);
-
-size_t myhtml_encoding_codepoint_ascii_length(size_t codepoint);
-size_t myhtml_encoding_codepoint_to_ascii_utf_8(size_t codepoint, char *data);
-size_t myhtml_encoding_codepoint_to_lowercase_ascii_utf_8(size_t codepoint, char *data);
-size_t myhtml_encoding_codepoint_to_ascii_utf_16(size_t codepoint, char *data);
-size_t myhtml_encoding_ascii_utf_8_to_codepoint(const unsigned char* data, size_t* codepoint);
-
-void myhtml_encoding_result_clean(myhtml_encoding_result_t *res);
-
-bool myhtml_encoding_detect(const char *text, size_t length, myhtml_encoding_t *encoding);
-bool myhtml_encoding_detect_russian(const char *text, size_t length, myhtml_encoding_t *encoding);
-bool myhtml_encoding_detect_unicode(const char *text, size_t length, myhtml_encoding_t *encoding);
-bool myhtml_encoding_detect_bom(const char *text, size_t length, myhtml_encoding_t *encoding);
-bool myhtml_encoding_detect_and_cut_bom(const char *text, size_t length, myhtml_encoding_t *encoding, const char **new_text, size_t *new_size);
-
-size_t myhtml_encoding_convert_to_ascii_utf_8(myhtml_string_raw_t* raw_str, const char* buff, size_t length, myhtml_encoding_t encoding);
-
-const myhtml_encoding_detect_name_entry_t * myhtml_encoding_name_entry_by_name(const char* name, size_t length);
-bool myhtml_encoding_by_name(const char *name, size_t length, myhtml_encoding_t *encoding);
-const char * myhtml_encoding_name_by_id(myhtml_encoding_t encoding, size_t *length);
-
-myhtml_encoding_t myhtml_encoding_prescan_stream_to_determine_encoding(const char *data, size_t data_size);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* encoding_h */
diff --git a/source/myhtml/encoding_detect.c b/source/myhtml/encoding_detect.c
deleted file mode 100644
index 4dc0842..0000000
--- a/source/myhtml/encoding_detect.c
+++ /dev/null
@@ -1,948 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#include "myhtml/encoding.h"
-#include "myhtml/encoding_detect_resource.h"
-#include "myhtml/utils/resources.h"
-
-myhtml_encoding_trigram_result_t myhtml_encoding_detect_by_trigram(unsigned const char *u_text, size_t length,
- const myhtml_encoding_trigram_t *list, size_t list_length,
- size_t max_sum_for_break)
-{
- myhtml_encoding_trigram_result_t res = {0, 0};
-
- for (size_t i = 0; i < (length - 3); i++) {
- if(u_text[i] > 127)
- {
- for (size_t j = 0; j < list_length; j++)
- {
- if(memcmp(list[j].trigram, &u_text[i], 3) == 0) {
- res.value += list[j].value;
- res.count++;
-
- if(res.value >= max_sum_for_break)
- i = length;
-
- break;
- }
- }
- }
- }
-
- return res;
-}
-
-bool myhtml_encoding_detect_russian_has_end(myhtml_encoding_trigram_result_t *res, size_t min_count, size_t min_value)
-{
- if(res->value >= min_value || res->count >= min_count)
- return true;
-
- return false;
-}
-
-bool myhtml_encoding_detect_unicode_has_end(myhtml_encoding_unicode_result_t *res, size_t max_bad_percent)
-{
- if(res->count_good == 0) {
- if(res->count_bad)
- return false;
-
- return true;
- }
- else if(res->count_bad == 0)
- return true;
-
- size_t percent_bad = (res->count_bad * 100) / res->count_good;
- if(percent_bad < max_bad_percent)
- return true;
-
- return false;
-}
-
-myhtml_encoding_unicode_result_t myhtml_encoding_detect_utf_8(unsigned const char *u_text, size_t length)
-{
- size_t i = 0;
- myhtml_encoding_unicode_result_t res = {0, 0, 0};
-
- while(i < length)
- {
- if((u_text[i] & 0x80) == 0x00) {
- i++;
- res.count_ascii++;
- }
- else if((u_text[i] & 0xE0) == 0xC0) {
- i += 2;
-
- if(i >= length)
- break;
-
- if(((u_text[i - 1] & 0x80) && (u_text[i - 1] & 0x40) == 0))
- res.count_good++;
- else
- res.count_bad++;
- }
- else if((u_text[i] & 0xF0) == 0xE0) {
- i += 3;
-
- if(i >= length)
- break;
-
- if(((u_text[i - 1] & 0x80) && (u_text[i - 1] & 0x40) == 0) &&
- ((u_text[i - 2] & 0x80) && (u_text[i - 2] & 0x40) == 0)) {
- res.count_good++;
- }
- else
- res.count_bad++;
- }
- else if((u_text[i] & 0xF8) == 0xF0) {
- i += 4;
-
- if(i >= length)
- break;
-
- if(((u_text[i - 1] & 0x80) && (u_text[i - 1] & 0x40) == 0) &&
- ((u_text[i - 2] & 0x80) && (u_text[i - 2] & 0x40) == 0) &&
- ((u_text[i - 3] & 0x80) && (u_text[i - 3] & 0x40) == 0)) {
- res.count_good++;
- }
- else
- res.count_bad++;
- }
- else {
- i++;
- res.count_bad++;
- }
- }
-
- return res;
-}
-
-myhtml_encoding_unicode_result_t myhtml_encoding_detect_utf_16(unsigned const char *u_text, size_t length)
-{
- size_t i = 0;
- myhtml_encoding_unicode_result_t res = {0, 0, 0};
-
- while(i < length)
- {
- if(u_text[i] == 0x00) {
- if((i % 2) == 0) {
- i++;
-
- if(u_text[i] > 0x1F && u_text[i] < 0x7F)
- res.count_bad++;
- }
- else {
- if(u_text[(i - 1)] > 0x1F && u_text[(i - 1)] < 0x7F)
- res.count_good++;
-
- i++;
- }
- }
- else
- i++;
- }
-
- return res;
-}
-
-bool myhtml_encoding_detect_bom(const char *text, size_t length, myhtml_encoding_t *encoding)
-{
- unsigned const char *u_text = (unsigned const char*)text;
-
- if(length > 2) {
- if(u_text[0] == 0xEF &&
- u_text[1] == 0xBB &&
- u_text[2] == 0xBF)
- {
- *encoding = MyHTML_ENCODING_UTF_8;
- return true;
- }
- }
-
- if(length > 1) {
- if(u_text[0] == 0xFE && u_text[1] == 0xFF) {
- *encoding = MyHTML_ENCODING_UTF_16BE;
- return true;
- }
-
- if(u_text[0] == 0xFF && u_text[1] == 0xFE) {
- *encoding = MyHTML_ENCODING_UTF_16LE;
- return true;
- }
- }
-
-// //for UTF-32
-// if(length > 3) {
-// if(u_text[0] == 0x00 &&
-// u_text[1] == 0x00 &&
-// u_text[2] == 0xFE &&
-// u_text[3] == 0xFF)
-// {
-// *encoding = MyHTML_ENCODING_UTF_32BE;
-// return true;
-// }
-//
-// if(u_text[0] == 0xFF &&
-// u_text[1] == 0xFE &&
-// u_text[2] == 0x00 &&
-// u_text[3] == 0x00)
-// {
-// *encoding = MyHTML_ENCODING_UTF_32LE;
-// return true;
-// }
-// }
-
- return false;
-}
-
-bool myhtml_encoding_detect_and_cut_bom(const char *text, size_t length, myhtml_encoding_t *encoding, const char **new_text, size_t *new_size)
-{
- if(myhtml_encoding_detect_bom(text, length, encoding))
- {
- if(*encoding == MyHTML_ENCODING_UTF_8) {
- *new_text = &text[3];
- *new_size = length - 3;
- }
- else {
- *new_text = &text[2];
- *new_size = length - 2;
- }
-
- return true;
- }
-
- return false;
-}
-
-bool myhtml_encoding_detect_unicode(const char *text, size_t length, myhtml_encoding_t *encoding)
-{
- unsigned const char *u_text = (unsigned const char*)text;
- *encoding = MyHTML_ENCODING_DEFAULT;
-
- myhtml_encoding_unicode_result_t res = myhtml_encoding_detect_utf_16(u_text, length);
-
- if(res.count_bad == 0 && res.count_good >= 3) {
- *encoding = MyHTML_ENCODING_UTF_16LE;
- return true;
- }
- else if(res.count_bad >= 3 && res.count_good == 0) {
- *encoding = MyHTML_ENCODING_UTF_16BE;
- return true;
- }
-
- res = myhtml_encoding_detect_utf_8(u_text, length);
- if(myhtml_encoding_detect_unicode_has_end(&res, 10)) {
- *encoding = MyHTML_ENCODING_UTF_8;
- return true;
- }
-
- return false;
-}
-
-bool myhtml_encoding_detect_russian(const char *text, size_t length, myhtml_encoding_t *encoding)
-{
- unsigned const char *u_text = (unsigned const char*)text;
-
- size_t min_count = 50;
- size_t min_value = 100000;
- size_t max_value = 0;
-
- *encoding = MyHTML_ENCODING_DEFAULT;
-
- myhtml_encoding_trigram_result_t
- res = myhtml_encoding_detect_by_trigram(u_text, length, myhtml_encoding_detect_trigrams_index_windows_1251, 1000, min_value);
- if(myhtml_encoding_detect_russian_has_end(&res, min_count, min_value)) {
- *encoding = MyHTML_ENCODING_WINDOWS_1251;
- return true;
- }
-
- max_value = res.value;
- if(max_value) {
- *encoding = MyHTML_ENCODING_WINDOWS_1251;
- }
-
- res = myhtml_encoding_detect_by_trigram(u_text, length, myhtml_encoding_detect_trigrams_index_koi8_r, 1000, min_value);
- if(myhtml_encoding_detect_russian_has_end(&res, min_count, min_value)) {
- *encoding = MyHTML_ENCODING_KOI8_R;
- return true;
- }
-
- if(max_value < res.value) {
- *encoding = MyHTML_ENCODING_KOI8_R;
- max_value = res.value;
- }
-
- res = myhtml_encoding_detect_by_trigram(u_text, length, myhtml_encoding_detect_trigrams_index_iso_8859_5, 1000, min_value);
- if(myhtml_encoding_detect_russian_has_end(&res, min_count, min_value)) {
- *encoding = MyHTML_ENCODING_ISO_8859_5;
- return true;
- }
-
- if(max_value < res.value) {
- *encoding = MyHTML_ENCODING_ISO_8859_5;
- max_value = res.value;
- }
-
- res = myhtml_encoding_detect_by_trigram(u_text, length, myhtml_encoding_detect_trigrams_index_x_mac_cyrillic, 1000, min_value);
- if(myhtml_encoding_detect_russian_has_end(&res, min_count, min_value)) {
- *encoding = MyHTML_ENCODING_X_MAC_CYRILLIC;
- return true;
- }
-
- if(max_value < res.value) {
- *encoding = MyHTML_ENCODING_X_MAC_CYRILLIC;
- max_value = res.value;
- }
-
- res = myhtml_encoding_detect_by_trigram(u_text, length, myhtml_encoding_detect_trigrams_index_ibm866, 1000, min_value);
- if(myhtml_encoding_detect_russian_has_end(&res, min_count, min_value)) {
- *encoding = MyHTML_ENCODING_IBM866;
- return true;
- }
-
- if(max_value < res.value) {
- *encoding = MyHTML_ENCODING_IBM866;
- }
-
- return false;
-}
-
-bool myhtml_encoding_detect(const char *text, size_t length, myhtml_encoding_t *encoding)
-{
- *encoding = MyHTML_ENCODING_DEFAULT;
-
- if(myhtml_encoding_detect_unicode(text, length, encoding))
- return true;
-
- if(myhtml_encoding_detect_russian(text, length, encoding))
- return true;
-
- return false;
-}
-
-const myhtml_encoding_detect_name_entry_t * myhtml_encoding_name_entry_by_name(const char* name, size_t length)
-{
- size_t idx = ((myhtml_string_chars_lowercase_map[ (const unsigned char)name[0] ] *
- myhtml_string_chars_lowercase_map[ (const unsigned char)name[(length - 1)] ] *
- length)
- % MyHTML_ENCODING_DETECT_NAME_STATIC_SIZE) + 1;
-
- while (myhtml_encoding_detect_name_entry_static_list_index[idx].label)
- {
- if(myhtml_encoding_detect_name_entry_static_list_index[idx].label_length == length) {
- if(myhtml_strncasecmp(myhtml_encoding_detect_name_entry_static_list_index[idx].label, name, length) == 0)
- return &myhtml_encoding_detect_name_entry_static_list_index[idx];
-
- if(myhtml_encoding_detect_name_entry_static_list_index[idx].next)
- idx = myhtml_encoding_detect_name_entry_static_list_index[idx].next;
- else
- return NULL;
- }
- else if(myhtml_encoding_detect_name_entry_static_list_index[idx].label_length > length) {
- return NULL;
- }
- else {
- idx = myhtml_encoding_detect_name_entry_static_list_index[idx].next;
- }
- }
-
- return NULL;
-}
-
-bool myhtml_encoding_by_name(const char *name, size_t length, myhtml_encoding_t *encoding)
-{
- const myhtml_encoding_detect_name_entry_t *entry = myhtml_encoding_name_entry_by_name(name, length);
-
- if(entry) {
- if(encoding)
- *encoding = entry->encoding;
-
- return true;
- }
-
- return false;
-}
-
-const char * myhtml_encoding_name_by_id(myhtml_encoding_t encoding, size_t *length)
-{
- if(encoding >= MyHTML_ENCODING_LAST_ENTRY) {
- if(length) {
- *length = 0;
- }
-
- return NULL;
- }
-
- const myhtml_encoding_entry_name_index_t *entry = &myhtml_encoding_entry_name_index_static_list_index[encoding];
-
- if(length) {
- *length = entry->length;
- }
-
- return entry->name;
-}
-
-/*
- When an algorithm requires a user agent to prescan a byte stream to determine its encoding,
- given some defined end condition, then it must run the following steps.
- These steps either abort unsuccessfully or return a character encoding.
- If at any point during these steps (including during instances of the get an attribute algorithm invoked by this one)
- the user agent either runs out of bytes (meaning the position pointer created in the first step below goes beyond the end of the byte stream obtained so far)
- or reaches its end condition, then abort the prescan a byte stream to determine its encoding algorithm unsuccessfully.
-*/
-
-bool myhtml_encoding_algorithm_extracting_character_encoding_from_meta_element(const char *data, size_t data_size, myhtml_encoding_t *encoding)
-{
- *encoding = MyHTML_ENCODING_NOT_DETERMINED;
-
- /* 1 */
- size_t length = 0;
- size_t charset_length = strlen("charset");
-
- bool is_get_pos = false;
- const unsigned char *udata = (const unsigned char *)data;
-
- /* 2 */
- while((length + charset_length) < data_size) {
- if(myhtml_ustrcasecmp_without_checks_by_secondary((const unsigned char*)"charset", &udata[length]))
- {
- length += charset_length;
-
- /* 2 */
- while(length < data_size) {
- if(udata[length] != 0x09 && udata[length] != 0x0A && udata[length] != 0x0C &&
- udata[length] != 0x0D && udata[length] != 0x20)
- {
- break;
- }
-
- length++;
- }
-
- /* 4 */
- if(udata[length] == 0x3D) { /* EQUALS SIGN (=) */
- is_get_pos = true;
-
- length++;
- break;
- }
- }
-
- length++;
- }
-
- if(is_get_pos == false || length >= data_size)
- return false;
-
- /* 5 */
- while(length < data_size) {
- if(udata[length] != 0x09 && udata[length] != 0x0A && udata[length] != 0x0C &&
- udata[length] != 0x0D && udata[length] != 0x20)
- {
- break;
- }
-
- length++;
- }
-
- if(length >= data_size)
- return false;
-
- /* 6 */
- /* " */
- if(udata[length] == 0x22)
- {
- length++;
- size_t begin = length;
-
- while(length < data_size) {
- if(udata[length] == 0x22)
- return myhtml_encoding_by_name(&data[begin], (length - begin), encoding);
-
- length++;
- }
-
- return false;
- }
-
- /* ' */
- if(udata[length] == 0x27)
- {
- length++;
- size_t begin = length;
-
- while(length < data_size) {
- if(udata[length] == 0x27)
- return myhtml_encoding_by_name(&data[begin], (length - begin), encoding);
-
- length++;
- }
-
- return false;
- }
-
- /* other */
- while(length < data_size) {
- if(udata[length] != 0x09 && udata[length] != 0x0A && udata[length] != 0x0C &&
- udata[length] != 0x0D && udata[length] != 0x20)
- {
- size_t begin = length;
-
- while(length < data_size) {
- /* SEMICOLON character (;) */
- if(udata[length] == 0x3B) {
- return myhtml_encoding_by_name(&data[begin], (length - begin), encoding);
- }
-
- length++;
- }
-
- return myhtml_encoding_by_name(&data[begin], (length - begin), encoding);
- }
-
- length++;
- }
-
- return false;
-}
-
-bool myhtml_encoding_prescan_stream_to_determine_encoding_get_attr_spaces(const unsigned char *udata, size_t *data_length, size_t data_size, myhtml_encoding_detect_attr_t *attr)
-{
- size_t length = *data_length;
-
- /* set position */
- attr->key_length = length - attr->key_begin;
-
- /* 6 */
- while(length < data_size) {
- if(udata[length] != 0x09 && udata[length] != 0x0A && udata[length] != 0x0C &&
- udata[length] != 0x0D && udata[length] != 0x20 && udata[length] != 0x2F)
- {
- break;
- }
-
- length++;
- }
-
- if(length >= data_size) {
- *data_length = length;
- return false;
- }
-
- /* 7 */
- if(udata[length] != 0x3D) {
- *data_length = length;
- return false;
- }
-
- /* 8 */
- *data_length = (length + 1);
- return true;
-}
-
-size_t myhtml_encoding_prescan_stream_to_determine_encoding_get_attr_value(const unsigned char *udata, size_t length, size_t data_size, myhtml_encoding_detect_attr_t *attr, bool *it_last)
-{
- /* 9 */
- while(length < data_size) {
- if(udata[length] != 0x09 && udata[length] != 0x0A && udata[length] != 0x0C &&
- udata[length] != 0x0D && udata[length] != 0x20)
- {
- break;
- }
-
- length++;
- }
-
- if(length >= data_size) {
- *it_last = true;
- return length;
- }
-
- /* 10 */
- switch (udata[length]) {
- case 0x22: /* (ASCII ") */
- length++;
- attr->value_begin = length;
-
- while(length < data_size) {
- if(udata[length] == 0x22)
- {
- attr->value_length = length - attr->value_begin;
- return (length + 1);
- }
-
- length++;
- }
-
- break;
-
- case 0x27: /* (ASCII ') */
- length++;
- attr->value_begin = length;
-
- while(length < data_size) {
- if(udata[length] == 0x27)
- {
- attr->value_length = length - attr->value_begin;
- return (length + 1);
- }
-
- length++;
- }
-
- break;
-
- case 0x3E: /* (ASCII >) */
- *it_last = true;
- return (length + 1);
-
- default:
- attr->value_begin = length;
-
- while(length < data_size) {
- if(udata[length] == 0x09 || udata[length] == 0x0A || udata[length] == 0x0C ||
- udata[length] == 0x0D || udata[length] == 0x20 || udata[length] == 0x3E)
- {
- attr->value_length = length - attr->value_begin;
- return (length + 1);
- }
-
- length++;
- }
-
- break;
- }
-
- attr->value_length = length - attr->value_begin;
- return length;
-}
-
-size_t myhtml_encoding_prescan_stream_to_determine_encoding_get_attr(const unsigned char *udata, size_t length, size_t data_size, myhtml_encoding_detect_attr_t *attr, bool *it_last)
-{
- memset(attr, 0, sizeof(myhtml_encoding_detect_attr_t));
-
- /*
- If the byte at position is one of 0x09 (ASCII TAB), 0x0A (ASCII LF), 0x0C (ASCII FF), 0x0D (ASCII CR),
- 0x20 (ASCII space), or 0x2F (ASCII /) then advance position to the next byte and redo this step.
- */
- /* 1 */
- while(length < data_size) {
- if(udata[length] != 0x09 && udata[length] != 0x0A && udata[length] != 0x0C &&
- udata[length] != 0x0D && udata[length] != 0x20 && udata[length] != 0x2F)
- {
- break;
- }
-
- length++;
- }
-
- if(length >= data_size) {
- *it_last = true;
- return length;
- }
-
- /* 2 */
- if(udata[length] == 0x3E) { /* (ASCII >) */
- *it_last = true;
- return (length + 1);
- }
-
- attr->key_begin = length;
-
- /* 3, 4 */
- while(length < data_size) {
- switch (udata[length]) {
- case 0x3D: /* (ASCII =) */
- if(attr->key_begin != (length - 1)) {
- attr->key_length = length - attr->key_begin;
-
- length++;
- return myhtml_encoding_prescan_stream_to_determine_encoding_get_attr_value(udata, length, data_size, attr, it_last);
- }
-
- /* fall through */
-
- case 0x09: /* (ASCII TAB) */
- case 0x0A: /* (ASCII LF) */
- case 0x0C: /* (ASCII FF) */
- case 0x0D: /* (ASCII CR) */
- case 0x20: /* (ASCII space) */
- length++;
-
- if(myhtml_encoding_prescan_stream_to_determine_encoding_get_attr_spaces(udata, &length, data_size, attr) == false) {
- *it_last = true;
- return length;
- }
-
- return myhtml_encoding_prescan_stream_to_determine_encoding_get_attr_value(udata, length, data_size, attr, it_last);
-
- case 0x2F: /* (ASCII /) */
- case 0x3E: /* (ASCII >) */
- *it_last = true;
- attr->key_length = length - attr->key_begin;
-
- return (length + 1);
-
- default:
- break;
- }
-
- length++;
- }
-
- if(myhtml_encoding_prescan_stream_to_determine_encoding_get_attr_spaces(udata, &length, data_size, attr) == false) {
- *it_last = true;
- return length;
- }
-
- return myhtml_encoding_prescan_stream_to_determine_encoding_get_attr_value(udata, length, data_size, attr, it_last);
-}
-
-bool myhtml_encoding_prescan_stream_to_determine_encoding_check_meta(const unsigned char *udata, size_t *length, size_t data_size, myhtml_encoding_t *encoding)
-{
- myhtml_encoding_detect_attr_t attr;
-
- bool got_pragma = false;
- bool it_last = false;
-
- unsigned int need_pragma = 0; /* 0 = NULL, 1 = false, 2 = true */
-
- /*
- http-equiv = 1
- content = 2
- charset = 4
- */
- /* If the attribute's name is already in attribute list, then return to the step labeled attributes. */
- size_t is_exists = 0;
-
- while(*length < data_size) {
- *length = myhtml_encoding_prescan_stream_to_determine_encoding_get_attr(udata, *length, data_size, &attr, &it_last);
-
- /* 9 */
- if(attr.key_length == strlen("http-equiv") &&
- myhtml_ustrcasecmp_without_checks_by_secondary((const unsigned char*)"http-equiv", &udata[ attr.key_begin ]))
- {
- if((is_exists & 1) == 0) {
- is_exists |= 1;
-
- if(attr.value_length == strlen("content-type") &&
- myhtml_ustrcasecmp_without_checks_by_secondary((const unsigned char*)"content-type", &udata[ attr.value_begin ]))
- {
- got_pragma = true;
- }
- }
- }
- else if(attr.key_length == strlen("content") &&
- myhtml_ustrcasecmp_without_checks_by_secondary((const unsigned char*)"content", &udata[ attr.key_begin ]))
- {
- if((is_exists & 2) == 0) {
- is_exists |= 2;
-
- if(myhtml_encoding_algorithm_extracting_character_encoding_from_meta_element((const char*)(&udata[ attr.value_begin ]), attr.value_length, encoding)) {
- need_pragma = 2;
- }
- }
- }
- else if(attr.key_length == strlen("charset") &&
- myhtml_ustrcasecmp_without_checks_by_secondary((const unsigned char*)"charset", &udata[ attr.key_begin ]))
- {
- if((is_exists & 4) == 0) {
- is_exists |= 4;
-
- myhtml_encoding_by_name((const char*)(&udata[ attr.value_begin ]), attr.value_length, encoding);
- need_pragma = 1;
- }
- }
-
- if(it_last)
- break;
- }
-
- /* 11, 12, 13 */
- if(need_pragma == 0 || (need_pragma == 2 && got_pragma == false)) {
- *encoding = MyHTML_ENCODING_NOT_DETERMINED;
- return false;
- }
-
- /* 14 */
- if(*encoding == MyHTML_ENCODING_UTF_16BE || *encoding == MyHTML_ENCODING_UTF_16LE) {
- *encoding = MyHTML_ENCODING_UTF_8;
- }
-
- /* 15 */
- if(*encoding == MyHTML_ENCODING_X_USER_DEFINED) {
- *encoding = MyHTML_ENCODING_WINDOWS_1252;
- }
-
- /* 16 */
- return true;
-}
-
-size_t myhtml_encoding_prescan_stream_to_determine_encoding_skip_name(const unsigned char *udata, size_t length, size_t data_size)
-{
- while(length < data_size) {
- if(udata[length] != 0x09 && udata[length] != 0x0A && udata[length] != 0x0C &&
- udata[length] != 0x0D && udata[length] != 0x20)
- {
- break;
- }
-
- length++;
- }
-
- if(length >= data_size)
- return length;
-
- if(udata[length] == 0x3E) {
- return (length + 1);
- }
-
- myhtml_encoding_detect_attr_t attr;
- bool it_last = false;
-
- while(length < data_size) {
- length = myhtml_encoding_prescan_stream_to_determine_encoding_get_attr(udata, length, data_size, &attr, &it_last);
-
- if(it_last) {
- return length;
- }
- }
-
- return length;
-}
-
-size_t myhtml_encoding_prescan_stream_to_determine_encoding_skip_other(const unsigned char *udata, size_t length, size_t data_size)
-{
- if(udata[length] == 0x2F) { /* / */
- length++;
-
- if(length >= data_size)
- return length;
-
- if(myhtml_tokenizer_chars_map[ udata[length] ] == MyHTML_TOKENIZER_CHAR_A_Z_a_z) {
- return myhtml_encoding_prescan_stream_to_determine_encoding_skip_name(udata, length, data_size);
- }
-
- while(length < data_size) {
- if(udata[length] != 0x3E) {
- return (length + 1);
- }
-
- length++;
- }
-
- return length;
- }
- else if(udata[length] == 0x21) { /* ! */
- length++;
-
- if((length + 2) < data_size && udata[length] == 0x2D && udata[(length+1)] == 0x2D) {
- while(length < data_size) {
- if(udata[length] != 0x3E) {
- if(udata[(length - 1)] == 0x2D && udata[(length - 2)] == 0x2D)
- return (length + 1);
-
- length++;
- }
- }
-
- return length;
- }
-
- while(length < data_size) {
- if(udata[length] != 0x3E) {
- return (length + 1);
- }
-
- length++;
- }
-
- return length;
- }
- else if(udata[length] == 0x3F) { /* ? */
- length++;
-
- while(length < data_size) {
- if(udata[length] != 0x3E) {
- return (length + 1);
- }
-
- length++;
- }
-
- return length;
- }
-
-
- return myhtml_encoding_prescan_stream_to_determine_encoding_skip_name(udata, length, data_size);
-}
-
-myhtml_encoding_t myhtml_encoding_prescan_stream_to_determine_encoding(const char *data, size_t data_size)
-{
- const unsigned char* udata = (const unsigned char*)data;
- myhtml_encoding_t encoding = MyHTML_ENCODING_NOT_DETERMINED;
-
- size_t i = 0;
- while(i < data_size) {
- /* 0x3C = '<' */
- if(data[i] == 0x3C)
- {
- if((i + 5) >= data_size)
- return encoding;
-
- i++;
-
- switch (data[i]) {
- /*
- A sequence of bytes starting with:
- 0x3C, 0x4D or 0x6D, 0x45 or 0x65, 0x54 or 0x74, 0x41 or 0x61,
- and one of 0x09, 0x0A, 0x0C, 0x0D, 0x20, 0x2F
- (case-insensitive ASCII '<meta' followed by a space or slash)
- */
- case 0x4D:
- case 0x6D:
- if(myhtml_ustrcasecmp_without_checks_by_secondary((const unsigned char*)"meta", &udata[i])) {
- i += 4;
-
- if(udata[i] == 0x09 || udata[i] == 0x0A || udata[i] == 0x0C ||
- udata[i] == 0x0D || udata[i] == 0x20 || udata[i] == 0x2F)
- {
- i++;
-
- if(myhtml_encoding_prescan_stream_to_determine_encoding_check_meta(udata, &i, data_size, &encoding))
- return encoding;
- }
- }
-
- break;
-
- default:
- i = myhtml_encoding_prescan_stream_to_determine_encoding_skip_other(udata, i, data_size);
- break;
- }
- }
- else {
- i++;
- }
- }
-
- return encoding;
-}
-
-
diff --git a/source/myhtml/encoding_detect_resource.h b/source/myhtml/encoding_detect_resource.h
deleted file mode 100644
index 361f6ae..0000000
--- a/source/myhtml/encoding_detect_resource.h
+++ /dev/null
@@ -1,5626 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#ifndef MyHTML_ENCODING_DETECT_RESOURCE_H
-#define MyHTML_ENCODING_DETECT_RESOURCE_H
-#pragma once
-
-#ifdef __cplusplus
-//extern "C" {
-#endif
-
-#define MyHTML_ENCODING_DETECT_NAME_STATIC_SIZE 419
-
-#include "myhtml/encoding.h"
-
-static const myhtml_encoding_detect_name_entry_t myhtml_encoding_detect_name_entry_static_list_index[] =
-{
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1257", 12, "x-cp1257", 8, MyHTML_ENCODING_WINDOWS_1257, 0, 7},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-874", 11, "tis-620", 7, MyHTML_ENCODING_WINDOWS_874, 0, 10},
- {"iso-8859-3", 10, "iso8859-3", 9, MyHTML_ENCODING_ISO_8859_3, 420, 11},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"shift_jis", 9, "ms932", 5, MyHTML_ENCODING_SHIFT_JIS, 0, 16},
- {"gbk", 3, "gb_2312", 7, MyHTML_ENCODING_GBK, 421, 17},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-7", 10, "iso8859-7", 9, MyHTML_ENCODING_ISO_8859_7, 422, 20},
- {"windows-1250", 12, "cp1250", 6, MyHTML_ENCODING_WINDOWS_1250, 423, 21},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"shift_jis", 9, "shift-jis", 9, MyHTML_ENCODING_SHIFT_JIS, 424, 30},
- {"ibm866", 6, "csibm866", 8, MyHTML_ENCODING_IBM866, 425, 31},
- {"euc-kr", 6, "windows-949", 11, MyHTML_ENCODING_EUC_KR, 0, 32},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-2022-jp", 11, "csiso2022jp", 11, MyHTML_ENCODING_ISO_2022_JP, 0, 40},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-15", 11, "iso-8859-15", 11, MyHTML_ENCODING_ISO_8859_15, 426, 42},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"euc-kr", 6, "ksc_5601", 8, MyHTML_ENCODING_EUC_KR, 0, 45},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"gbk", 3, "csiso58gb231280", 15, MyHTML_ENCODING_GBK, 0, 51},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-5", 10, "cyrillic", 8, MyHTML_ENCODING_ISO_8859_5, 0, 56},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1255", 12, "cp1255", 6, MyHTML_ENCODING_WINDOWS_1255, 427, 58},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1254", 12, "x-cp1254", 8, MyHTML_ENCODING_WINDOWS_1254, 0, 60},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-15", 11, "csisolatin9", 11, MyHTML_ENCODING_ISO_8859_15, 0, 62},
- {"koi8-u", 6, "koi8-ru", 7, MyHTML_ENCODING_KOI8_U, 0, 63},
- {"iso-8859-4", 10, "csisolatin4", 11, MyHTML_ENCODING_ISO_8859_4, 0, 64},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"shift_jis", 9, "windows-31j", 11, MyHTML_ENCODING_SHIFT_JIS, 0, 66},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"utf-8", 5, "utf-8", 5, MyHTML_ENCODING_UTF_8, 0, 79},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"ibm866", 6, "ibm866", 6, MyHTML_ENCODING_IBM866, 0, 82},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"koi8-r", 6, "koi8", 4, MyHTML_ENCODING_KOI8_R, 0, 86},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"gbk", 3, "x-gbk", 5, MyHTML_ENCODING_GBK, 428, 94},
- {"iso-8859-7", 10, "csisolatingreek", 15, MyHTML_ENCODING_ISO_8859_7, 0, 95},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1252", 12, "iso88591", 8, MyHTML_ENCODING_WINDOWS_1252, 0, 99},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-2", 10, "iso88592", 8, MyHTML_ENCODING_ISO_8859_2, 0, 101},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-3", 10, "iso88593", 8, MyHTML_ENCODING_ISO_8859_3, 0, 103},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-4", 10, "iso88594", 8, MyHTML_ENCODING_ISO_8859_4, 0, 105},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"shift_jis", 9, "sjis", 4, MyHTML_ENCODING_SHIFT_JIS, 430, 107},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-6", 10, "iso88596", 8, MyHTML_ENCODING_ISO_8859_6, 431, 109},
- {"windows-1252", 12, "l1", 2, MyHTML_ENCODING_WINDOWS_1252, 432, 110},
- {"macintosh", 9, "mac", 3, MyHTML_ENCODING_MACINTOSH, 433, 111},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-8", 10, "iso88598", 8, MyHTML_ENCODING_ISO_8859_8, 435, 113},
- {"koi8-u", 6, "koi8-u", 6, MyHTML_ENCODING_KOI8_U, 0, 114},
- {"windows-1254", 12, "iso88599", 8, MyHTML_ENCODING_WINDOWS_1254, 0, 115},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-6", 10, "ecma-114", 8, MyHTML_ENCODING_ISO_8859_6, 0, 117},
- {"iso-8859-4", 10, "iso8859-4", 9, MyHTML_ENCODING_ISO_8859_4, 436, 118},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-4", 10, "iso-ir-110", 10, MyHTML_ENCODING_ISO_8859_4, 437, 121},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-3", 10, "l3", 2, MyHTML_ENCODING_ISO_8859_3, 0, 123},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-2", 10, "iso-8859-2", 10, MyHTML_ENCODING_ISO_8859_2, 439, 126},
- {"windows-1253", 12, "cp1253", 6, MyHTML_ENCODING_WINDOWS_1253, 440, 127},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1258", 12, "x-cp1258", 8, MyHTML_ENCODING_WINDOWS_1258, 0, 129},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-4", 10, "iso-8859-4", 10, MyHTML_ENCODING_ISO_8859_4, 443, 131},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-10", 11, "iso-8859-10", 11, MyHTML_ENCODING_ISO_8859_10, 0, 133},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1254", 12, "l5", 2, MyHTML_ENCODING_WINDOWS_1254, 446, 136},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-2", 10, "latin2", 6, MyHTML_ENCODING_ISO_8859_2, 0, 138},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-8", 10, "iso-8859-8", 10, MyHTML_ENCODING_ISO_8859_8, 449, 141},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1252", 12, "cp819", 5, MyHTML_ENCODING_WINDOWS_1252, 0, 143},
- {"iso-8859-14", 11, "iso-8859-14", 11, MyHTML_ENCODING_ISO_8859_14, 0, 144},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-10", 11, "csisolatin6", 11, MyHTML_ENCODING_ISO_8859_10, 0, 147},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1252", 12, "csisolatin1", 11, MyHTML_ENCODING_WINDOWS_1252, 0, 149},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-15", 11, "l9", 2, MyHTML_ENCODING_ISO_8859_15, 0, 162},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1258", 12, "cp1258", 6, MyHTML_ENCODING_WINDOWS_1258, 0, 164},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1252", 12, "windows-1252", 12, MyHTML_ENCODING_WINDOWS_1252, 0, 171},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-7", 10, "sun_eu_greek", 12, MyHTML_ENCODING_ISO_8859_7, 0, 173},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"euc-jp", 6, "cseucpkdfmtjapanese", 19, MyHTML_ENCODING_EUC_JP, 0, 175},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-4", 10, "latin4", 6, MyHTML_ENCODING_ISO_8859_4, 0, 177},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1255", 12, "x-cp1255", 8, MyHTML_ENCODING_WINDOWS_1255, 452, 182},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"koi8-r", 6, "koi", 3, MyHTML_ENCODING_KOI8_R, 0, 186},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1257", 12, "windows-1257", 12, MyHTML_ENCODING_WINDOWS_1257, 0, 188},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-874", 11, "windows-874", 11, MyHTML_ENCODING_WINDOWS_874, 0, 191},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1251", 12, "cp1251", 6, MyHTML_ENCODING_WINDOWS_1251, 0, 196},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"utf-16le", 8, "utf-16", 6, MyHTML_ENCODING_UTF_16LE, 0, 199},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-8", 10, "visual", 6, MyHTML_ENCODING_ISO_8859_8, 0, 207},
- {"macintosh", 9, "macintosh", 9, MyHTML_ENCODING_MACINTOSH, 0, 208},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1252", 12, "ansi_x3.4-1968", 14, MyHTML_ENCODING_WINDOWS_1252, 0, 210},
- {"iso-8859-3", 10, "iso_8859-3:1988", 15, MyHTML_ENCODING_ISO_8859_3, 453, 211},
- {"iso-8859-6", 10, "csiso88596e", 11, MyHTML_ENCODING_ISO_8859_6, 456, 212},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"gbk", 3, "csgb2312", 8, MyHTML_ENCODING_GBK, 0, 215},
- {"iso-8859-6", 10, "arabic", 6, MyHTML_ENCODING_ISO_8859_6, 457, 216},
- {"iso-8859-7", 10, "greek", 5, MyHTML_ENCODING_ISO_8859_7, 0, 217},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"shift_jis", 9, "ms_kanji", 8, MyHTML_ENCODING_SHIFT_JIS, 0, 219},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-5", 10, "iso8859-5", 9, MyHTML_ENCODING_ISO_8859_5, 460, 225},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1252", 12, "ascii", 5, MyHTML_ENCODING_WINDOWS_1252, 461, 227},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"euc-kr", 6, "korean", 6, MyHTML_ENCODING_EUC_KR, 0, 229},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"utf-8", 5, "utf8", 4, MyHTML_ENCODING_UTF_8, 462, 231},
- {"iso-8859-3", 10, "csisolatin3", 11, MyHTML_ENCODING_ISO_8859_3, 0, 232},
- {"windows-1256", 12, "cp1256", 6, MyHTML_ENCODING_WINDOWS_1256, 464, 233},
- {"windows-1254", 12, "iso8859-9", 9, MyHTML_ENCODING_WINDOWS_1254, 0, 234},
- {"windows-1252", 12, "us-ascii", 8, MyHTML_ENCODING_WINDOWS_1252, 465, 235},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"big5", 4, "big5", 4, MyHTML_ENCODING_BIG5, 466, 246},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1250", 12, "windows-1250", 12, MyHTML_ENCODING_WINDOWS_1250, 0, 248},
- {"euc-kr", 6, "ksc5601", 7, MyHTML_ENCODING_EUC_KR, 0, 249},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-7", 10, "greek8", 6, MyHTML_ENCODING_ISO_8859_7, 467, 251},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"euc-jp", 6, "x-euc-jp", 8, MyHTML_ENCODING_EUC_JP, 0, 257},
- {"shift_jis", 9, "x-sjis", 6, MyHTML_ENCODING_SHIFT_JIS, 0, 258},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"utf-16be", 8, "utf-16be", 8, MyHTML_ENCODING_UTF_16BE, 468, 262},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1255", 12, "windows-1255", 12, MyHTML_ENCODING_WINDOWS_1255, 0, 265},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"euc-kr", 6, "ks_c_5601-1987", 14, MyHTML_ENCODING_EUC_KR, 0, 267},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"ibm866", 6, "866", 3, MyHTML_ENCODING_IBM866, 0, 274},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"big5", 4, "cn-big5", 7, MyHTML_ENCODING_BIG5, 0, 277},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"koi8-r", 6, "koi8-r", 6, MyHTML_ENCODING_KOI8_R, 469, 283},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1252", 12, "ibm819", 6, MyHTML_ENCODING_WINDOWS_1252, 0, 296},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-6", 10, "asmo-708", 8, MyHTML_ENCODING_ISO_8859_6, 0, 300},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1254", 12, "cp1254", 6, MyHTML_ENCODING_WINDOWS_1254, 470, 302},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1256", 12, "x-cp1256", 8, MyHTML_ENCODING_WINDOWS_1256, 471, 304},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-2022-jp", 11, "iso-2022-jp", 11, MyHTML_ENCODING_ISO_2022_JP, 0, 309},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-2", 10, "iso_8859-2:1987", 15, MyHTML_ENCODING_ISO_8859_2, 473, 312},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"gbk", 3, "gb2312", 6, MyHTML_ENCODING_GBK, 0, 314},
- {"windows-1254", 12, "csisolatin5", 11, MyHTML_ENCODING_WINDOWS_1254, 0, 315},
- {"iso-8859-6", 10, "iso-8859-6-i", 12, MyHTML_ENCODING_ISO_8859_6, 476, 316},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-2", 10, "iso8859-2", 9, MyHTML_ENCODING_ISO_8859_2, 0, 323},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-2", 10, "l2", 2, MyHTML_ENCODING_ISO_8859_2, 0, 326},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1252", 12, "latin1", 6, MyHTML_ENCODING_WINDOWS_1252, 0, 328},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"euc-kr", 6, "ks_c_5601-1989", 14, MyHTML_ENCODING_EUC_KR, 0, 330},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-6", 10, "iso8859-6", 9, MyHTML_ENCODING_ISO_8859_6, 0, 332},
- {"iso-8859-2", 10, "iso-ir-101", 10, MyHTML_ENCODING_ISO_8859_2, 477, 333},
- {"ibm866", 6, "cp866", 5, MyHTML_ENCODING_IBM866, 0, 334},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-3", 10, "iso-8859-3", 10, MyHTML_ENCODING_ISO_8859_3, 480, 338},
- {"iso-8859-4", 10, "l4", 2, MyHTML_ENCODING_ISO_8859_4, 0, 339},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1253", 12, "windows-1253", 12, MyHTML_ENCODING_WINDOWS_1253, 0, 342},
- {"iso-8859-5", 10, "iso-8859-5", 10, MyHTML_ENCODING_ISO_8859_5, 482, 343},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-6", 10, "iso-ir-127", 10, MyHTML_ENCODING_ISO_8859_6, 484, 348},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"utf-8", 5, "unicode-1-1-utf-8", 17, MyHTML_ENCODING_UTF_8, 0, 350},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-10", 11, "l6", 2, MyHTML_ENCODING_ISO_8859_10, 0, 352},
- {"iso-8859-3", 10, "iso-ir-109", 10, MyHTML_ENCODING_ISO_8859_3, 487, 353},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1253", 12, "x-cp1253", 8, MyHTML_ENCODING_WINDOWS_1253, 0, 357},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-16", 11, "iso-8859-16", 11, MyHTML_ENCODING_ISO_8859_16, 490, 359},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-8-i", 12, "logical", 7, MyHTML_ENCODING_ISO_8859_8_I, 0, 363},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-8", 10, "csisolatinhebrew", 16, MyHTML_ENCODING_ISO_8859_8, 0, 366},
- {"iso-8859-3", 10, "latin3", 6, MyHTML_ENCODING_ISO_8859_3, 491, 367},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"euc-kr", 6, "euc-kr", 6, MyHTML_ENCODING_EUC_KR, 0, 369},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1252", 12, "cp1252", 6, MyHTML_ENCODING_WINDOWS_1252, 0, 371},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-6", 10, "csiso88596i", 11, MyHTML_ENCODING_ISO_8859_6, 492, 378},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"gbk", 3, "gbk", 3, MyHTML_ENCODING_GBK, 0, 382},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"euc-kr", 6, "csksc56011987", 13, MyHTML_ENCODING_EUC_KR, 0, 394},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"x-mac-cyrillic", 14, "x-mac-cyrillic", 14, MyHTML_ENCODING_X_MAC_CYRILLIC, 0, 397},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-2", 10, "csisolatin2", 11, MyHTML_ENCODING_ISO_8859_2, 0, 400},
- {"x-user-defined", 14, "x-user-defined", 14, MyHTML_ENCODING_X_USER_DEFINED, 0, 401},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1254", 12, "latin5", 6, MyHTML_ENCODING_WINDOWS_1254, 0, 406},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"windows-1257", 12, "cp1257", 6, MyHTML_ENCODING_WINDOWS_1257, 0, 408},
- {"big5", 4, "big5-hkscs", 10, MyHTML_ENCODING_BIG5, 0, 409},
- {"windows-1250", 12, "x-cp1250", 8, MyHTML_ENCODING_WINDOWS_1250, 0, 410},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"euc-jp", 6, "euc-jp", 6, MyHTML_ENCODING_EUC_JP, 0, 414},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"iso-8859-7", 10, "ecma-118", 8, MyHTML_ENCODING_ISO_8859_7, 493, 416},
- {NULL, 0, NULL, 0, 0, 0, 0},
- {"gbk", 3, "gb_2312-80", 10, MyHTML_ENCODING_GBK, 0, 418},
- {"windows-1251", 12, "windows-1251", 12, MyHTML_ENCODING_WINDOWS_1251, 0, 419},
- {"iso-8859-13", 11, "iso885913", 9, MyHTML_ENCODING_ISO_8859_13, 0, 420},
- {"windows-1256", 12, "windows-1256", 12, MyHTML_ENCODING_WINDOWS_1256, 0, 421},
- {"iso-8859-5", 10, "csisolatincyrillic", 18, MyHTML_ENCODING_ISO_8859_5, 0, 422},
- {"gbk", 3, "chinese", 7, MyHTML_ENCODING_GBK, 0, 423},
- {"shift_jis", 9, "shift_jis", 9, MyHTML_ENCODING_SHIFT_JIS, 0, 424},
- {"windows-874", 11, "iso-8859-11", 11, MyHTML_ENCODING_WINDOWS_874, 0, 425},
- {"iso-8859-15", 11, "iso_8859-15", 11, MyHTML_ENCODING_ISO_8859_15, 0, 426},
- {"big5", 4, "csbig5", 6, MyHTML_ENCODING_BIG5, 0, 427},
- {"iso-8859-8", 10, "hebrew", 6, MyHTML_ENCODING_ISO_8859_8, 429, 428},
- {"windows-1254", 12, "windows-1254", 12, MyHTML_ENCODING_WINDOWS_1254, 0, 429},
- {"iso-8859-5", 10, "iso88595", 8, MyHTML_ENCODING_ISO_8859_5, 0, 430},
- {"iso-8859-10", 11, "iso885910", 9, MyHTML_ENCODING_ISO_8859_10, 0, 431},
- {"windows-1254", 12, "iso_8859-9:1989", 15, MyHTML_ENCODING_WINDOWS_1254, 0, 432},
- {"iso-8859-7", 10, "iso88597", 8, MyHTML_ENCODING_ISO_8859_7, 434, 433},
- {"iso-8859-6", 10, "csisolatinarabic", 16, MyHTML_ENCODING_ISO_8859_6, 0, 434},
- {"windows-1251", 12, "x-cp1251", 8, MyHTML_ENCODING_WINDOWS_1251, 0, 435},
- {"iso-8859-14", 11, "iso885914", 9, MyHTML_ENCODING_ISO_8859_14, 0, 436},
- {"iso-8859-10", 11, "iso8859-10", 10, MyHTML_ENCODING_ISO_8859_10, 438, 437},
- {"windows-1252", 12, "iso-ir-100", 10, MyHTML_ENCODING_WINDOWS_1252, 0, 438},
- {"iso-8859-2", 10, "iso_8859-2", 10, MyHTML_ENCODING_ISO_8859_2, 0, 439},
- {"iso-8859-8", 10, "iso8859-8", 9, MyHTML_ENCODING_ISO_8859_8, 441, 440},
- {"gbk", 3, "iso-ir-58", 9, MyHTML_ENCODING_GBK, 442, 441},
- {"macintosh", 9, "csmacintosh", 11, MyHTML_ENCODING_MACINTOSH, 0, 442},
- {"iso-8859-4", 10, "iso_8859-4", 10, MyHTML_ENCODING_ISO_8859_4, 444, 443},
- {"iso-8859-5", 10, "iso-ir-144", 10, MyHTML_ENCODING_ISO_8859_5, 445, 444},
- {"iso-8859-14", 11, "iso8859-14", 10, MyHTML_ENCODING_ISO_8859_14, 0, 445},
- {"iso-8859-6", 10, "iso-8859-6", 10, MyHTML_ENCODING_ISO_8859_6, 447, 446},
- {"iso-8859-6", 10, "iso_8859-6", 10, MyHTML_ENCODING_ISO_8859_6, 448, 447},
- {"iso-8859-7", 10, "iso-ir-126", 10, MyHTML_ENCODING_ISO_8859_7, 0, 448},
- {"iso-8859-8", 10, "iso-ir-138", 10, MyHTML_ENCODING_ISO_8859_8, 450, 449},
- {"iso-8859-8", 10, "iso_8859-8", 10, MyHTML_ENCODING_ISO_8859_8, 451, 450},
- {"windows-1254", 12, "iso-ir-148", 10, MyHTML_ENCODING_WINDOWS_1254, 0, 451},
- {"big5", 4, "x-x-big5", 8, MyHTML_ENCODING_BIG5, 0, 452},
- {"iso-8859-4", 10, "iso_8859-4:1988", 15, MyHTML_ENCODING_ISO_8859_4, 454, 453},
- {"iso-8859-5", 10, "iso_8859-5:1988", 15, MyHTML_ENCODING_ISO_8859_5, 455, 454},
- {"iso-8859-8", 10, "iso_8859-8:1988", 15, MyHTML_ENCODING_ISO_8859_8, 0, 455},
- {"iso-8859-8", 10, "csiso88598e", 11, MyHTML_ENCODING_ISO_8859_8, 0, 456},
- {"iso-8859-10", 11, "latin6", 6, MyHTML_ENCODING_ISO_8859_10, 458, 457},
- {"windows-874", 11, "iso885911", 9, MyHTML_ENCODING_WINDOWS_874, 459, 458},
- {"windows-1252", 12, "iso8859-1", 9, MyHTML_ENCODING_WINDOWS_1252, 0, 459},
- {"iso-8859-15", 11, "iso885915", 9, MyHTML_ENCODING_ISO_8859_15, 0, 460},
- {"macintosh", 9, "x-mac-roman", 11, MyHTML_ENCODING_MACINTOSH, 0, 461},
- {"koi8-r", 6, "cskoi8r", 7, MyHTML_ENCODING_KOI8_R, 463, 462},
- {"euc-kr", 6, "cseuckr", 7, MyHTML_ENCODING_EUC_KR, 0, 463},
- {"x-mac-cyrillic", 14, "x-mac-ukrainian", 15, MyHTML_ENCODING_X_MAC_CYRILLIC, 0, 464},
- {"windows-1252", 12, "x-cp1252", 8, MyHTML_ENCODING_WINDOWS_1252, 0, 465},
- {"iso-8859-13", 11, "iso-8859-13", 11, MyHTML_ENCODING_ISO_8859_13, 0, 466},
- {"gb18030", 7, "gb18030", 7, MyHTML_ENCODING_GB18030, 0, 467},
- {"utf-16le", 8, "utf-16le", 8, MyHTML_ENCODING_UTF_16LE, 0, 468},
- {"koi8-r", 6, "koi8_r", 6, MyHTML_ENCODING_KOI8_R, 0, 469},
- {"shift_jis", 9, "csshiftjis", 10, MyHTML_ENCODING_SHIFT_JIS, 0, 470},
- {"iso-8859-6", 10, "iso-8859-6-e", 12, MyHTML_ENCODING_ISO_8859_6, 472, 471},
- {"iso-8859-8", 10, "iso-8859-8-e", 12, MyHTML_ENCODING_ISO_8859_8, 0, 472},
- {"iso-8859-6", 10, "iso_8859-6:1987", 15, MyHTML_ENCODING_ISO_8859_6, 474, 473},
- {"iso-8859-7", 10, "iso_8859-7:1987", 15, MyHTML_ENCODING_ISO_8859_7, 475, 474},
- {"windows-1252", 12, "iso_8859-1:1987", 15, MyHTML_ENCODING_WINDOWS_1252, 0, 475},
- {"iso-8859-8-i", 12, "iso-8859-8-i", 12, MyHTML_ENCODING_ISO_8859_8_I, 0, 476},
- {"windows-874", 11, "iso8859-11", 10, MyHTML_ENCODING_WINDOWS_874, 478, 477},
- {"windows-1252", 12, "iso-8859-1", 10, MyHTML_ENCODING_WINDOWS_1252, 479, 478},
- {"windows-1252", 12, "iso_8859-1", 10, MyHTML_ENCODING_WINDOWS_1252, 0, 479},
- {"iso-8859-3", 10, "iso_8859-3", 10, MyHTML_ENCODING_ISO_8859_3, 481, 480},
- {"iso-8859-13", 11, "iso8859-13", 10, MyHTML_ENCODING_ISO_8859_13, 0, 481},
- {"iso-8859-5", 10, "iso_8859-5", 10, MyHTML_ENCODING_ISO_8859_5, 483, 482},
- {"iso-8859-15", 11, "iso8859-15", 10, MyHTML_ENCODING_ISO_8859_15, 0, 483},
- {"iso-8859-7", 10, "iso-8859-7", 10, MyHTML_ENCODING_ISO_8859_7, 485, 484},
- {"iso-8859-7", 10, "iso_8859-7", 10, MyHTML_ENCODING_ISO_8859_7, 486, 485},
- {"iso-8859-10", 11, "iso-ir-157", 10, MyHTML_ENCODING_ISO_8859_10, 0, 486},
- {"windows-1254", 12, "iso-8859-9", 10, MyHTML_ENCODING_WINDOWS_1254, 488, 487},
- {"windows-1254", 12, "iso_8859-9", 10, MyHTML_ENCODING_WINDOWS_1254, 489, 488},
- {"euc-kr", 6, "iso-ir-149", 10, MyHTML_ENCODING_EUC_KR, 0, 489},
- {"windows-1258", 12, "windows-1258", 12, MyHTML_ENCODING_WINDOWS_1258, 0, 490},
- {"windows-874", 11, "dos-874", 7, MyHTML_ENCODING_WINDOWS_874, 0, 491},
- {"iso-8859-8-i", 12, "csiso88598i", 11, MyHTML_ENCODING_ISO_8859_8_I, 0, 492},
- {"iso-8859-7", 10, "elot_928", 8, MyHTML_ENCODING_ISO_8859_7, 0, 493},
-};
-
-static const myhtml_encoding_entry_name_index_t myhtml_encoding_entry_name_index_static_list_index[(MyHTML_ENCODING_LAST_ENTRY + 1)] =
-{
- {"UTF-8", 5},
- {"AUTO", 4},
- {"NOT-DETERMINED", 14},
- {"UTF-16LE", 8},
- {"UTF-16BE", 8},
- {"X-USER-DEFINED", 14},
- {"BIG5", 4},
- {"EUC-JP", 6},
- {"EUC-KR", 6},
- {"GB18030", 7},
- {"GBK", 3},
- {"IBM866", 6},
- {"ISO-2022-JP", 11},
- {"ISO-8859-10", 11},
- {"ISO-8859-13", 11},
- {"ISO-8859-14", 11},
- {"ISO-8859-15", 11},
- {"ISO-8859-16", 11},
- {"ISO-8859-2", 10},
- {"ISO-8859-3", 10},
- {"ISO-8859-4", 10},
- {"ISO-8859-5", 10},
- {"ISO-8859-6", 10},
- {"ISO-8859-7", 10},
- {"ISO-8859-8", 10},
- {"ISO-8859-8-I", 12},
- {"KOI8-R", 6},
- {"KOI8-U", 6},
- {"MACINTOSH", 9},
- {"SHIFT_JIS", 9},
- {"WINDOWS-1250", 12},
- {"WINDOWS-1251", 12},
- {"WINDOWS-1252", 12},
- {"WINDOWS-1253", 12},
- {"WINDOWS-1254", 12},
- {"WINDOWS-1255", 12},
- {"WINDOWS-1256", 12},
- {"WINDOWS-1257", 12},
- {"WINDOWS-1258", 12},
- {"WINDOWS-874", 11},
- {"X-MAC-CYRILLIC", 14},
- {"", 0},
-};
-
-static const myhtml_encoding_trigram_t myhtml_encoding_detect_trigrams_index_ibm866[] = {
- {{0xA5, 0xAD, 0xA8}, 991}, /* ени */
- {{0xAE, 0xA3, 0xAE}, 806}, /* ого */
- {{0xE1, 0xE2, 0xA2}, 659}, /* ств */
- {{0xAD, 0xA8, 0xEF}, 629}, /* ния */
- {{0xAE, 0xA2, 0xA0}, 566}, /* ова */
- {{0xE2, 0xA5, 0xAB}, 555}, /* тел */
- {{0xE0, 0xA5, 0xA4}, 507}, /* ред */
- {{0xA5, 0xAD, 0xAD}, 499}, /* енн */
- {{0xAE, 0xA2, 0xAE}, 443}, /* ово */
- {{0xA0, 0xAD, 0xA8}, 443}, /* ани */
- {{0xE2, 0xE0, 0xA0}, 429}, /* тра */
- {{0xAE, 0xE1, 0xE2}, 428}, /* ост */
- {{0xAD, 0xA8, 0xA5}, 419}, /* ние */
- {{0xAD, 0xAD, 0xAE}, 412}, /* нно */
- {{0xA0, 0xE5, 0xAE}, 396}, /* ахо */
- {{0xE1, 0xE2, 0xE0}, 392}, /* стр */
- {{0xE0, 0xA0, 0xE5}, 386}, /* рах */
- {{0xE5, 0xAE, 0xA2}, 379}, /* хов */
- {{0xA5, 0xAB, 0xEC}, 365}, /* ель */
- {{0xA3, 0xAE, 0xA2}, 360}, /* гов */
- {{0xA2, 0xAE, 0xE0}, 356}, /* вор */
- {{0xA5, 0xE1, 0xE2}, 349}, /* ест */
- {{0xA0, 0xE2, 0xEC}, 345}, /* ать */
- {{0xE0, 0xA0, 0xA2}, 337}, /* рав */
- {{0xAF, 0xE0, 0xA8}, 330}, /* при */
- {{0xAF, 0xE0, 0xA5}, 323}, /* пре */
- {{0xA4, 0xAE, 0xA3}, 318}, /* дог */
- {{0xAD, 0xA5, 0xAD}, 310}, /* нен */
- {{0xAF, 0xE0, 0xA0}, 309}, /* пра */
- {{0xA2, 0xA0, 0xAD}, 304}, /* ван */
- {{0xA8, 0xE2, 0xA5}, 295}, /* ите */
- {{0xE2, 0xA2, 0xA5}, 281}, /* тве */
- {{0xAB, 0xA5, 0xAD}, 266}, /* лен */
- {{0xE1, 0xE2, 0xAE}, 261}, /* сто */
- {{0xE2, 0xA0, 0xE2}, 260}, /* тат */
- {{0xAD, 0xAD, 0xEB}, 260}, /* нны */
- {{0xAB, 0xEC, 0xAD}, 256}, /* льн */
- {{0xA2, 0xAE, 0xA7}, 255}, /* воз */
- {{0xA8, 0xAB, 0xA8}, 254}, /* или */
- {{0xA0, 0xE2, 0xA5}, 252}, /* ате */
- {{0xA5, 0xA3, 0xAE}, 241}, /* его */
- {{0xA5, 0xE2, 0xE1}, 238}, /* етс */
- {{0xAD, 0xAE, 0xE1}, 236}, /* нос */
- {{0xE9, 0xA5, 0xE1}, 235}, /* щес */
- {{0xAF, 0xAE, 0xAB}, 232}, /* пол */
- {{0xE0, 0xA0, 0xAD}, 231}, /* ран */
- {{0xAD, 0xAE, 0xA3}, 230}, /* ног */
- {{0xE1, 0xE2, 0xA0}, 229}, /* ста */
- {{0xE7, 0xA5, 0xAD}, 226}, /* чен */
- {{0xE2, 0xE0, 0xA5}, 224}, /* тре */
- {{0xA7, 0xAC, 0xA5}, 214}, /* зме */
- {{0xE3, 0xE9, 0xA5}, 212}, /* уще */
- {{0xE1, 0xE2, 0xA8}, 210}, /* сти */
- {{0xAA, 0xAE, 0xAC}, 207}, /* ком */
- {{0xAE, 0xE0, 0xAE}, 206}, /* оро */
- {{0xA2, 0xAB, 0xA5}, 195}, /* вле */
- {{0xA7, 0xA0, 0xAD}, 194}, /* зан */
- {{0xA0, 0xE1, 0xE2}, 193}, /* аст */
- {{0xE2, 0xE1, 0xEF}, 191}, /* тся */
- {{0xE5, 0xE0, 0xA0}, 187}, /* хра */
- {{0xA0, 0xAD, 0xAD}, 182}, /* анн */
- {{0xA5, 0xE0, 0xA5}, 182}, /* ере */
- {{0xA2, 0xE0, 0xA5}, 178}, /* вре */
- {{0xAE, 0xA2, 0xA5}, 173}, /* ове */
- {{0xEC, 0xAD, 0xAE}, 173}, /* ьно */
- {{0xA2, 0xA5, 0xE0}, 172}, /* вер */
- {{0xAC, 0xA5, 0xAD}, 170}, /* мен */
- {{0xAB, 0xA8, 0xE6}, 168}, /* лиц */
- {{0xE2, 0xAE, 0xE0}, 167}, /* тор */
- {{0xE0, 0xA5, 0xAD}, 167}, /* рен */
- {{0xE9, 0xA5, 0xAD}, 165}, /* щен */
- {{0xAE, 0xA7, 0xAC}, 164}, /* озм */
- {{0xA5, 0xA4, 0xA0}, 163}, /* еда */
- {{0xE2, 0xA2, 0xA8}, 159}, /* тви */
- {{0xEF, 0xA7, 0xA0}, 159}, /* яза */
- {{0xA1, 0xEF, 0xA7}, 158}, /* бяз */
- {{0xAD, 0xA8, 0xA8}, 153}, /* нии */
- {{0xAD, 0xEB, 0xE5}, 153}, /* ных */
- {{0xE2, 0xEC, 0xEF}, 153}, /* тья */
- {{0xAC, 0xA5, 0xE0}, 153}, /* мер */
- {{0xE1, 0xAB, 0xA8}, 150}, /* сли */
- {{0xE2, 0xAE, 0xA2}, 148}, /* тов */
- {{0xE2, 0xA2, 0xA0}, 147}, /* тва */
- {{0xAE, 0xE0, 0xA0}, 146}, /* ора */
- {{0xAD, 0xAE, 0xAC}, 144}, /* ном */
- {{0xA4, 0xA5, 0xAD}, 144}, /* ден */
- {{0xA0, 0xAD, 0xA5}, 142}, /* ане */
- {{0xAA, 0xAE, 0xAD}, 141}, /* кон */
- {{0xAB, 0xE3, 0xE7}, 141}, /* луч */
- {{0xAC, 0xE3, 0xE9}, 140}, /* мущ */
- {{0xAE, 0xA1, 0xEF}, 140}, /* обя */
- {{0xA2, 0xA0, 0xE2}, 138}, /* ват */
- {{0xA2, 0xA0, 0xE0}, 137}, /* вар */
- {{0xA5, 0xE9, 0xA5}, 137}, /* еще */
- {{0xAE, 0xE2, 0xE0}, 137}, /* отр */
- {{0xA4, 0xA5, 0xAB}, 137}, /* дел */
- {{0xAD, 0xEB, 0xAC}, 136}, /* ным */
- {{0xA8, 0xAC, 0xE3}, 136}, /* иму */
- {{0x91, 0xE2, 0xA0}, 134}, /* Ста */
- {{0xE3, 0xE7, 0xA0}, 133}, /* уча */
- {{0xE2, 0xE1, 0xE2}, 131}, /* тст */
- {{0xA5, 0xAB, 0xEF}, 130}, /* еля */
- {{0xE1, 0xAB, 0xE3}, 130}, /* слу */
- {{0xA7, 0xA0, 0xAA}, 130}, /* зак */
- {{0xE2, 0xAE, 0xEF}, 129}, /* тоя */
- {{0xAE, 0xAC, 0xA8}, 128}, /* оми */
- {{0xAC, 0xA5, 0xE9}, 128}, /* мещ */
- {{0xA5, 0xA4, 0xE3}, 127}, /* еду */
- {{0xA2, 0xA5, 0xAD}, 127}, /* вен */
- {{0xAD, 0xAE, 0xA2}, 127}, /* нов */
- {{0xAD, 0xAE, 0xA5}, 126}, /* ное */
- {{0xAE, 0xE2, 0xA2}, 125}, /* отв */
- {{0xAA, 0xA0, 0xA7}, 125}, /* каз */
- {{0xA0, 0xA5, 0xE2}, 125}, /* ает */
- {{0xE1, 0xAA, 0xAE}, 125}, /* ско */
- {{0xA5, 0xAD, 0xE2}, 124}, /* ент */
- {{0xAC, 0xAE, 0xE2}, 123}, /* мот */
- {{0xA0, 0xA2, 0xAB}, 122}, /* авл */
- {{0xE1, 0xAC, 0xAE}, 122}, /* смо */
- {{0xA8, 0xE7, 0xA8}, 121}, /* ичи */
- {{0xA1, 0xEB, 0xE2}, 120}, /* быт */
- {{0xE3, 0xE1, 0xAC}, 118}, /* усм */
- {{0xE1, 0xE1, 0xA8}, 117}, /* сси */
- {{0xA4, 0xE3, 0xE1}, 117}, /* дус */
- {{0xE5, 0xAE, 0xA4}, 117}, /* ход */
- {{0xE0, 0xA8, 0xE7}, 117}, /* рич */
- {{0xE7, 0xA5, 0xE1}, 115}, /* чес */
- {{0xA3, 0xE0, 0xA0}, 114}, /* гра */
- {{0xAF, 0xE0, 0xAE}, 114}, /* про */
- {{0xA4, 0xAE, 0xA2}, 113}, /* дов */
- {{0xA2, 0xA5, 0xE2}, 112}, /* вет */
- {{0xA5, 0xA4, 0xA5}, 112}, /* еде */
- {{0xE8, 0xA5, 0xAD}, 111}, /* шен */
- {{0xE7, 0xA8, 0xAD}, 110}, /* чин */
- {{0xAD, 0xA0, 0xE1}, 109}, /* нас */
- {{0xA8, 0xE2, 0xEC}, 105}, /* ить */
- {{0xE2, 0xA2, 0xAE}, 105}, /* тво */
- {{0xAA, 0xAB, 0xEE}, 104}, /* клю */
- {{0xE0, 0xA8, 0xE2}, 104}, /* рит */
- {{0xE1, 0xE2, 0xEC}, 104}, /* сть */
- {{0xAB, 0xEE, 0xE7}, 104}, /* люч */
- {{0xE2, 0xAE, 0xAC}, 104}, /* том */
- {{0xE1, 0xAB, 0xA5}, 103}, /* сле */
- {{0xE1, 0xAF, 0xAE}, 102}, /* спо */
- {{0xAE, 0xAB, 0xAD}, 102}, /* олн */
- {{0xA5, 0xE1, 0xAB}, 102}, /* есл */
- {{0xA5, 0xE0, 0xA8}, 101}, /* ери */
- {{0xAD, 0xAE, 0xA9}, 101}, /* ной */
- {{0xE0, 0xAE, 0xAC}, 101}, /* ром */
- {{0xAE, 0xE2, 0xAE}, 99}, /* ото */
- {{0xAD, 0xEB, 0xA5}, 99}, /* ные */
- {{0xA7, 0xAD, 0xA0}, 99}, /* зна */
- {{0xA2, 0xAB, 0xEF}, 99}, /* вля */
- {{0xE2, 0xA5, 0xE0}, 98}, /* тер */
- {{0xE3, 0xAF, 0xE0}, 97}, /* упр */
- {{0xA0, 0xAA, 0xAE}, 96}, /* ако */
- {{0xAA, 0xAE, 0xA3}, 96}, /* ког */
- {{0xAD, 0xEB, 0xA9}, 96}, /* ный */
- {{0xAE, 0xE0, 0xE3}, 96}, /* ору */
- {{0xA5, 0xAB, 0xA5}, 95}, /* еле */
- {{0xA5, 0xE1, 0xAA}, 95}, /* еск */
- {{0xA0, 0xA7, 0xA0}, 95}, /* аза */
- {{0xA9, 0xE1, 0xE2}, 93}, /* йст */
- {{0xAF, 0xAE, 0xE0}, 93}, /* пор */
- {{0xAE, 0xA6, 0xA5}, 92}, /* оже */
- {{0xA8, 0xAD, 0xA5}, 91}, /* ине */
- {{0xE9, 0xA5, 0xA9}, 90}, /* щей */
- {{0xA6, 0xA4, 0xA5}, 90}, /* жде */
- {{0xAF, 0xA5, 0xE0}, 89}, /* пер */
- {{0xAD, 0xA8, 0xE2}, 89}, /* нит */
- {{0xAE, 0xAB, 0xEC}, 89}, /* оль */
- {{0xA0, 0xA6, 0xA4}, 88}, /* ажд */
- {{0xA6, 0xA5, 0xAD}, 87}, /* жен */
- {{0xAB, 0xA0, 0xA4}, 87}, /* лад */
- {{0xA0, 0xAC, 0xA8}, 87}, /* ами */
- {{0xAA, 0xAE, 0xE2}, 86}, /* кот */
- {{0xE7, 0xA0, 0xA5}, 85}, /* чае */
- {{0xA2, 0xA5, 0xE9}, 85}, /* вещ */
- {{0xA2, 0xA8, 0xEF}, 85}, /* вия */
- {{0xEF, 0xE9, 0xA5}, 85}, /* яще */
- {{0xA8, 0xA5, 0xAC}, 85}, /* ием */
- {{0xAA, 0xAB, 0xA0}, 85}, /* кла */
- {{0xA5, 0xA9, 0xE1}, 84}, /* ейс */
- {{0xEB, 0xE2, 0xEC}, 84}, /* ыть */
- {{0xA0, 0xA2, 0xAE}, 84}, /* аво */
- {{0xE0, 0xA0, 0xA6}, 83}, /* раж */
- {{0xAB, 0xEC, 0xE1}, 83}, /* льс */
- {{0xAE, 0xEF, 0xE9}, 82}, /* оящ */
- {{0xA5, 0xAD, 0xAE}, 81}, /* ено */
- {{0xA4, 0xE1, 0xE2}, 81}, /* дст */
- {{0xA4, 0xA5, 0xA9}, 80}, /* дей */
- {{0xE0, 0xA5, 0xA1}, 80}, /* реб */
- {{0xEC, 0xE1, 0xE2}, 79}, /* ьст */
- {{0xA5, 0xA4, 0xE1}, 79}, /* едс */
- {{0xA0, 0xE0, 0xA8}, 79}, /* ари */
- {{0xA4, 0xA0, 0xAD}, 79}, /* дан */
- {{0xAC, 0xAE, 0xA6}, 78}, /* мож */
- {{0xA8, 0xAC, 0xA5}, 78}, /* име */
- {{0xA8, 0xAD, 0xAE}, 78}, /* ино */
- {{0xE0, 0xA8, 0xAD}, 77}, /* рин */
- {{0xA4, 0xAE, 0xE1}, 77}, /* дос */
- {{0xAF, 0xAE, 0xE1}, 77}, /* пос */
- {{0xE2, 0xA0, 0xAA}, 77}, /* так */
- {{0xE9, 0xA5, 0xA3}, 77}, /* щег */
- {{0xA4, 0xA0, 0xE2}, 77}, /* дат */
- {{0xAF, 0xAB, 0xA0}, 76}, /* пла */
- {{0xE3, 0xE1, 0xAB}, 76}, /* усл */
- {{0xA8, 0xE6, 0xA0}, 76}, /* ица */
- {{0xE0, 0xAE, 0xA2}, 75}, /* ров */
- {{0xED, 0xE2, 0xAE}, 75}, /* это */
- {{0xE3, 0xE7, 0xA5}, 74}, /* уче */
- {{0xA4, 0xAE, 0xAB}, 73}, /* дол */
- {{0xEC, 0xAD, 0xEB}, 73}, /* ьны */
- {{0xE0, 0xA0, 0xA7}, 73}, /* раз */
- {{0xAC, 0xA8, 0xE1}, 73}, /* мис */
- {{0xA0, 0xAD, 0xAE}, 72}, /* ано */
- {{0xE1, 0xE0, 0xAE}, 72}, /* сро */
- {{0xA0, 0xA2, 0xA8}, 72}, /* ави */
- {{0xE2, 0xEC, 0xA8}, 71}, /* тьи */
- {{0xEE, 0xE7, 0xA5}, 70}, /* юче */
- {{0xE1, 0xAA, 0xAB}, 70}, /* скл */
- {{0xA8, 0xE1, 0xE1}, 70}, /* исс */
- {{0xA6, 0xA5, 0xE2}, 69}, /* жет */
- {{0xA5, 0xA4, 0xAE}, 69}, /* едо */
- {{0xAB, 0xA5, 0xA4}, 69}, /* лед */
- {{0xAB, 0xAE, 0xA2}, 69}, /* лов */
- {{0xEE, 0xE9, 0xA8}, 68}, /* ющи */
- {{0xA8, 0xA1, 0xAE}, 68}, /* ибо */
- {{0xAB, 0xA0, 0xE2}, 67}, /* лат */
- {{0xE0, 0xAE, 0xAA}, 67}, /* рок */
- {{0xA0, 0xAA, 0xAB}, 67}, /* акл */
- {{0xE0, 0xA8, 0xE9}, 67}, /* рищ */
- {{0xA1, 0xAE, 0xA2}, 67}, /* бов */
- {{0xA8, 0xE1, 0xAA}, 67}, /* иск */
- {{0xA5, 0xA1, 0xAE}, 67}, /* ебо */
- {{0xAB, 0xEC, 0xA7}, 67}, /* льз */
- {{0xE3, 0xAA, 0xA0}, 67}, /* ука */
- {{0xAB, 0xA8, 0xA1}, 66}, /* либ */
- {{0xAE, 0xAC, 0xE3}, 66}, /* ому */
- {{0xAE, 0xA2, 0xAB}, 66}, /* овл */
- {{0xE2, 0xAD, 0xAE}, 65}, /* тно */
- {{0xA2, 0xAE, 0xA9}, 64}, /* вой */
- {{0xE2, 0xAE, 0xA3}, 64}, /* тог */
- {{0xE1, 0xAB, 0xAE}, 64}, /* сло */
- {{0xAE, 0xA7, 0xAD}, 64}, /* озн */
- {{0xE1, 0xAE, 0xAE}, 64}, /* соо */
- {{0xA7, 0xA0, 0xE2}, 63}, /* зат */
- {{0xA8, 0xE1, 0xAF}, 63}, /* исп */
- {{0xA0, 0xE7, 0xA5}, 63}, /* аче */
- {{0xAD, 0xA8, 0xEE}, 63}, /* нию */
- {{0xAE, 0xAD, 0xA5}, 63}, /* оне */
- {{0xAE, 0xAB, 0xA6}, 62}, /* олж */
- {{0xAE, 0xA2, 0xE9}, 61}, /* овщ */
- {{0xE0, 0xA0, 0xE1}, 61}, /* рас */
- {{0xA2, 0xA8, 0xA4}, 61}, /* вид */
- {{0xA2, 0xE9, 0xA8}, 61}, /* вщи */
- {{0xE1, 0xAD, 0xAE}, 61}, /* сно */
- {{0xA8, 0xE6, 0xAE}, 61}, /* ицо */
- {{0xA8, 0xE7, 0xA5}, 61}, /* иче */
- {{0xA0, 0xA2, 0xA5}, 61}, /* аве */
- {{0xA3, 0xAB, 0xA0}, 61}, /* гла */
- {{0xE7, 0xA5, 0xE2}, 61}, /* чет */
- {{0xE9, 0xA8, 0xAA}, 61}, /* щик */
- {{0xE0, 0xE3, 0xA3}, 60}, /* руг */
- {{0xE2, 0xA0, 0xAD}, 60}, /* тан */
- {{0xA8, 0xAC, 0xAE}, 60}, /* имо */
- {{0xA0, 0xAB, 0xEC}, 60}, /* аль */
- {{0xAE, 0xA2, 0xA8}, 60}, /* ови */
- {{0xA6, 0xA4, 0xA0}, 60}, /* жда */
- {{0xAF, 0xAE, 0xA2}, 60}, /* пов */
- {{0xA5, 0xAC, 0xE3}, 60}, /* ему */
- {{0xEF, 0xE2, 0xA5}, 60}, /* яте */
- {{0xE1, 0xA8, 0xA8}, 59}, /* сии */
- {{0xA1, 0xAE, 0xE2}, 59}, /* бот */
- {{0xA2, 0xEB, 0xAF}, 59}, /* вып */
- {{0xA0, 0xA1, 0xAE}, 59}, /* або */
- {{0xAB, 0xEF, 0xEE}, 59}, /* ляю */
- {{0xE1, 0xE3, 0xE9}, 58}, /* сущ */
- {{0xAE, 0xA4, 0xA5}, 58}, /* оде */
- {{0xA8, 0xAD, 0xA8}, 58}, /* ини */
- {{0xE0, 0xA0, 0xE2}, 58}, /* рат */
- {{0xEF, 0xA2, 0xAB}, 58}, /* явл */
- {{0xAD, 0xA0, 0xA3}, 57}, /* наг */
- {{0xA4, 0xE0, 0xE3}, 57}, /* дру */
- {{0xE0, 0xA0, 0xA1}, 57}, /* раб */
- {{0xA0, 0xA3, 0xE0}, 57}, /* агр */
- {{0xA8, 0xAE, 0xAD}, 57}, /* ион */
- {{0xAC, 0xA5, 0xE1}, 57}, /* мес */
- {{0xA0, 0xE6, 0xA8}, 56}, /* аци */
- {{0xAE, 0xE1, 0xE3}, 56}, /* осу */
- {{0xAA, 0xAE, 0xA9}, 55}, /* кой */
- {{0xE1, 0xA2, 0xAE}, 55}, /* сво */
- {{0xA7, 0xAE, 0xA2}, 55}, /* зов */
- {{0xAE, 0xAF, 0xE0}, 54}, /* опр */
- {{0xE1, 0xAE, 0xA1}, 54}, /* соб */
- {{0xA2, 0xAF, 0xE0}, 54}, /* впр */
- {{0xAB, 0xAD, 0xA5}, 54}, /* лне */
- {{0xAE, 0xAC, 0xAC}, 54}, /* омм */
- {{0xA5, 0xE0, 0xA0}, 54}, /* ера */
- {{0xE7, 0xA8, 0xE2}, 54}, /* чит */
- {{0xA5, 0xE0, 0xE7}, 54}, /* ерч */
- {{0xE0, 0xE7, 0xA5}, 54}, /* рче */
- {{0xA0, 0xE2, 0xA8}, 54}, /* ати */
- {{0xAD, 0xA8, 0xAA}, 54}, /* ник */
- {{0xAC, 0xAC, 0xA5}, 54}, /* мме */
- {{0xE3, 0xE1, 0xE2}, 53}, /* уст */
- {{0xE2, 0xA5, 0xAD}, 53}, /* тен */
- {{0xA2, 0xA5, 0xA4}, 53}, /* вед */
- {{0xE1, 0xAE, 0xA2}, 52}, /* сов */
- {{0xA0, 0xA6, 0xA5}, 52}, /* аже */
- {{0xAE, 0xAA, 0xA0}, 52}, /* ока */
- {{0xEB, 0xAC, 0xA8}, 52}, /* ыми */
- {{0xEE, 0xE2, 0xE1}, 52}, /* ютс */
- {{0xAE, 0xAE, 0xE2}, 52}, /* оот */
- {{0xAC, 0xA8, 0xE2}, 52}, /* мит */
- {{0xEF, 0xEE, 0xE9}, 51}, /* яющ */
- {{0xA2, 0xE8, 0xA5}, 51}, /* вше */
- {{0xE1, 0xA8, 0xAE}, 51}, /* сио */
- {{0xAE, 0xAD, 0xAE}, 51}, /* оно */
- {{0xA0, 0xA2, 0xA0}, 51}, /* ава */
- {{0xA0, 0xE9, 0xA5}, 51}, /* аще */
- {{0xAB, 0xEF, 0xA5}, 50}, /* ляе */
- {{0xA5, 0xAD, 0xA5}, 50}, /* ене */
- {{0xAE, 0xA4, 0xA8}, 50}, /* оди */
- {{0xAF, 0xE3, 0xAD}, 49}, /* пун */
- {{0xAB, 0xA8, 0xE7}, 49}, /* лич */
- {{0xA2, 0xAE, 0xAC}, 49}, /* вом */
- {{0xAD, 0xAA, 0xE2}, 49}, /* нкт */
- {{0xAD, 0xA5, 0xE1}, 49}, /* нес */
- {{0xA2, 0xA8, 0xAB}, 49}, /* вил */
- {{0xA5, 0xA6, 0xA4}, 49}, /* ежд */
- {{0xE0, 0xA5, 0xE1}, 49}, /* рес */
- {{0xEE, 0xE9, 0xA5}, 49}, /* юще */
- {{0xEC, 0xA7, 0xAE}, 49}, /* ьзо */
- {{0xAF, 0xAE, 0xE2}, 49}, /* пот */
- {{0xE3, 0xAD, 0xAA}, 49}, /* унк */
- {{0xE1, 0xE2, 0xA5}, 49}, /* сте */
- {{0xAA, 0xAE, 0xA2}, 49}, /* ков */
- {{0xAE, 0xE1, 0xAB}, 48}, /* осл */
- {{0xEF, 0xA5, 0xE2}, 48}, /* яет */
- {{0x85, 0xE1, 0xAB}, 48}, /* Есл */
- {{0x8F, 0xE0, 0xA8}, 48}, /* При */
- {{0xE2, 0xA0, 0xA2}, 48}, /* тав */
- {{0xAD, 0xA5, 0xE0}, 48}, /* нер */
- {{0xE7, 0xAD, 0xAE}, 47}, /* чно */
- {{0xAF, 0xAE, 0xA4}, 47}, /* под */
- {{0xAD, 0xE2, 0xA0}, 47}, /* нта */
- {{0xA8, 0xE9, 0xA5}, 47}, /* ище */
- {{0xAE, 0xA1, 0xE9}, 47}, /* общ */
- {{0xA0, 0xA7, 0xAC}, 47}, /* азм */
- {{0xA6, 0xAD, 0xAE}, 47}, /* жно */
- {{0xA2, 0xA8, 0xA8}, 46}, /* вии */
- {{0xE0, 0xA0, 0xE9}, 46}, /* ращ */
- {{0xAE, 0xE0, 0xA5}, 46}, /* оре */
- {{0xA2, 0xE8, 0xA8}, 46}, /* вши */
- {{0xA5, 0xAA, 0xE1}, 46}, /* екс */
- {{0xA2, 0xAE, 0xA3}, 46}, /* вог */
- {{0xE7, 0xE2, 0xAE}, 46}, /* что */
- {{0xA8, 0xE7, 0xAD}, 45}, /* ичн */
- {{0xAB, 0xA5, 0xAC}, 45}, /* лем */
- {{0xAC, 0xAE, 0xA3}, 45}, /* мог */
- {{0xE2, 0xA2, 0xAB}, 45}, /* твл */
- {{0xA4, 0xAB, 0xA5}, 45}, /* дле */
- {{0xA4, 0xAB, 0xEF}, 45}, /* для */
- {{0xE0, 0xA5, 0xE2}, 45}, /* рет */
- {{0xA0, 0xE0, 0xA0}, 45}, /* ара */
- {{0xAD, 0xEF, 0xE2}, 44}, /* нят */
- {{0xA5, 0xE7, 0xA5}, 44}, /* ече */
- {{0xAE, 0xE2, 0xA5}, 44}, /* оте */
- {{0xAE, 0xE0, 0xEB}, 44}, /* оры */
- {{0xAE, 0xE1, 0xAD}, 43}, /* осн */
- {{0xAE, 0xA1, 0xAE}, 43}, /* обо */
- {{0xAE, 0xA3, 0xAB}, 43}, /* огл */
- {{0xA8, 0xAD, 0xEB}, 43}, /* ины */
- {{0xA5, 0xE1, 0xE1}, 43}, /* есс */
- {{0xAE, 0xA1, 0xE0}, 43}, /* обр */
- {{0xAA, 0xE0, 0xA0}, 43}, /* кра */
- {{0xA8, 0xEF, 0xAC}, 43}, /* иям */
- {{0xA0, 0xAB, 0xAE}, 43}, /* ало */
- {{0xE0, 0xE3, 0xE7}, 43}, /* руч */
- {{0xAE, 0xE0, 0xA3}, 43}, /* орг */
- {{0xE7, 0xA0, 0xEF}, 42}, /* чая */
- {{0xAD, 0xA8, 0xAC}, 42}, /* ним */
- {{0xA8, 0xA7, 0xAD}, 42}, /* изн */
- {{0xAF, 0xAE, 0xAA}, 42}, /* пок */
- {{0xE1, 0xE2, 0xE3}, 42}, /* сту */
- {{0xA5, 0xAB, 0xEE}, 42}, /* елю */
- {{0xE2, 0xA8, 0xE2}, 42}, /* тит */
- {{0xE6, 0xA5, 0xAD}, 42}, /* цен */
- {{0xE7, 0xA0, 0xE1}, 42}, /* час */
- {{0xA3, 0xA0, 0xAD}, 42}, /* ган */
- {{0xE0, 0xA3, 0xA0}, 42}, /* рга */
- {{0xE1, 0xE2, 0xAD}, 42}, /* стн */
- {{0xE0, 0xA5, 0xA6}, 42}, /* реж */
- {{0xE3, 0xAC, 0xAC}, 42}, /* умм */
- {{0xE2, 0xA2, 0xE3}, 41}, /* тву */
- {{0xE2, 0xE3, 0xAF}, 41}, /* туп */
- {{0xE1, 0xAA, 0xA8}, 40}, /* ски */
- {{0xA4, 0xA5, 0xAA}, 40}, /* дек */
- {{0xAB, 0xA5, 0xA6}, 40}, /* леж */
- {{0xA5, 0xE1, 0xA5}, 40}, /* есе */
- {{0xA2, 0xA8, 0xA5}, 40}, /* вие */
- {{0xE2, 0xAA, 0xA0}, 40}, /* тка */
- {{0xA5, 0xAA, 0xE0}, 40}, /* екр */
- {{0xAE, 0xA4, 0xAE}, 40}, /* одо */
- {{0xAA, 0xE1, 0xA0}, 40}, /* кса */
- {{0xE0, 0xA5, 0xAA}, 40}, /* рек */
- {{0xAD, 0xE2, 0xA5}, 40}, /* нте */
- {{0xE3, 0xA3, 0xA8}, 40}, /* уги */
- {{0xA1, 0xEB, 0xAB}, 40}, /* был */
- {{0xA8, 0xAD, 0xEF}, 40}, /* иня */
- {{0xA5, 0xE9, 0xA8}, 39}, /* ещи */
- {{0xA3, 0xA5, 0xAD}, 39}, /* ген */
- {{0x8A, 0xAE, 0xA4}, 39}, /* Код */
- {{0xA4, 0xA8, 0xE2}, 39}, /* дит */
- {{0xE1, 0xE5, 0xAE}, 39}, /* схо */
- {{0xA8, 0xAD, 0xE2}, 39}, /* инт */
- {{0xE1, 0xE3, 0xAC}, 39}, /* сум */
- {{0xE0, 0xAE, 0xAD}, 39}, /* рон */
- {{0xAE, 0xE2, 0xAA}, 39}, /* отк */
- {{0xA4, 0xAE, 0xAA}, 39}, /* док */
- {{0xA8, 0xAB, 0xA0}, 38}, /* ила */
- {{0xE6, 0xA5, 0xE1}, 38}, /* цес */
- {{0xA8, 0xAA, 0xA0}, 38}, /* ика */
- {{0xA7, 0xAD, 0xA8}, 38}, /* зни */
- {{0xAE, 0xA2, 0xEB}, 38}, /* овы */
- {{0xAB, 0xA6, 0xAD}, 38}, /* лжн */
- {{0xE3, 0xAF, 0xAB}, 38}, /* упл */
- {{0xA3, 0xA4, 0xA0}, 37}, /* гда */
- {{0xAB, 0xA0, 0xA6}, 37}, /* лаж */
- {{0xA6, 0xA5, 0xA4}, 37}, /* жед */
- {{0xA1, 0xA5, 0xA7}, 37}, /* без */
- {{0xA4, 0xA5, 0xE2}, 37}, /* дет */
- {{0xAE, 0xE0, 0xEF}, 37}, /* оря */
- {{0xE0, 0xAE, 0xE1}, 37}, /* рос */
- {{0xAE, 0xA1, 0xAB}, 37}, /* обл */
- {{0xE6, 0xA8, 0xA8}, 37}, /* ции */
- {{0xA4, 0xAE, 0xAC}, 37}, /* дом */
- {{0xAD, 0xE6, 0xA5}, 37}, /* нце */
- {{0xE8, 0xA5, 0xA3}, 37}, /* шег */
- {{0xAB, 0xAE, 0xA6}, 37}, /* лож */
- {{0xAE, 0xAD, 0xA0}, 37}, /* она */
- {{0xAE, 0xAA, 0xAB}, 37}, /* окл */
- {{0xAE, 0xA3, 0xA4}, 37}, /* огд */
- {{0xE0, 0xAE, 0xA4}, 37}, /* род */
- {{0xA5, 0xAD, 0xA0}, 37}, /* ена */
- {{0xAE, 0xAD, 0xE6}, 37}, /* онц */
- {{0xAE, 0xE2, 0xAD}, 37}, /* отн */
- {{0xE1, 0xAE, 0xA3}, 37}, /* сог */
- {{0xA5, 0xA2, 0xE8}, 37}, /* евш */
- {{0xA2, 0xA8, 0xE2}, 36}, /* вит */
- {{0xA5, 0xE0, 0xAF}, 36}, /* ерп */
- {{0xAE, 0xA4, 0xA0}, 36}, /* ода */
- {{0xA5, 0xE2, 0xA5}, 36}, /* ете */
- {{0xAD, 0xA5, 0xAE}, 36}, /* нео */
- {{0xE0, 0xAF, 0xA5}, 36}, /* рпе */
- {{0xA5, 0xE0, 0xE8}, 36}, /* ерш */
- {{0xA8, 0xAC, 0xA8}, 36}, /* ими */
- {{0xA8, 0xA2, 0xE8}, 36}, /* ивш */
- {{0xEB, 0xAF, 0xAB}, 36}, /* ыпл */
- {{0xAF, 0xA5, 0xA2}, 36}, /* пев */
- {{0xA0, 0xA4, 0xA0}, 36}, /* ада */
- {{0xAC, 0xAE, 0xE1}, 35}, /* мос */
- {{0xAE, 0xA1, 0xE1}, 35}, /* обс */
- {{0xAD, 0xA5, 0xA4}, 34}, /* нед */
- {{0xA8, 0xAA, 0xAE}, 34}, /* ико */
- {{0xE9, 0xA8, 0xAC}, 34}, /* щим */
- {{0xA4, 0xA5, 0xE0}, 34}, /* дер */
- {{0xE1, 0xAA, 0xA0}, 34}, /* ска */
- {{0xAE, 0xE0, 0xAC}, 34}, /* орм */
- {{0xE3, 0xAC, 0xA5}, 34}, /* уме */
- {{0xAE, 0xAE, 0xA1}, 34}, /* ооб */
- {{0xE0, 0xA8, 0xE1}, 34}, /* рис */
- {{0xAE, 0xA1, 0xEA}, 33}, /* объ */
- {{0xAE, 0xAB, 0xE3}, 33}, /* олу */
- {{0xEA, 0xEF, 0xA2}, 33}, /* ъяв */
- {{0xE0, 0xA5, 0xAC}, 33}, /* рем */
- {{0xE9, 0xA8, 0xE5}, 33}, /* щих */
- {{0xE3, 0xEE, 0xE9}, 33}, /* ующ */
- {{0xAA, 0xA6, 0xA5}, 33}, /* кже */
- {{0xA8, 0xA4, 0xA5}, 33}, /* иде */
- {{0xA1, 0xE1, 0xE2}, 33}, /* бст */
- {{0xA0, 0xAA, 0xA6}, 33}, /* акж */
- {{0xA2, 0xE3, 0xEE}, 33}, /* вую */
- {{0xA0, 0xE1, 0xE5}, 33}, /* асх */
- {{0xA0, 0xAD, 0xA0}, 32}, /* ана */
- {{0xAD, 0xA0, 0xA4}, 32}, /* над */
- {{0xAE, 0xA1, 0xA5}, 32}, /* обе */
- {{0xEB, 0xE2, 0xAA}, 32}, /* ытк */
- {{0xED, 0xE2, 0xA8}, 32}, /* эти */
- {{0xAE, 0xA6, 0xAD}, 32}, /* ожн */
- {{0xA0, 0xE2, 0xEB}, 31}, /* аты */
- {{0xE1, 0xA4, 0xA5}, 31}, /* сде */
- {{0xA0, 0xEE, 0xE2}, 31}, /* ают */
- {{0xEF, 0xE2, 0xEC}, 31}, /* ять */
- {{0xAE, 0xEF, 0xE2}, 31}, /* оят */
- {{0xA5, 0xE2, 0xEC}, 31}, /* еть */
- {{0xA0, 0xA3, 0xA5}, 31}, /* аге */
- {{0xE7, 0xE0, 0xA5}, 31}, /* чре */
- {{0xA5, 0xAD, 0xEB}, 31}, /* ены */
- {{0xE3, 0xA1, 0xEB}, 31}, /* убы */
- {{0xA8, 0xE1, 0xE2}, 30}, /* ист */
- {{0xEF, 0xEE, 0xE2}, 30}, /* яют */
- {{0xE0, 0xEF, 0xA4}, 30}, /* ряд */
- {{0xA3, 0xAE, 0xE1}, 30}, /* гос */
- {{0xA8, 0xAC, 0xA0}, 30}, /* има */
- {{0xA7, 0xA0, 0xE1}, 30}, /* зас */
- {{0xA0, 0xEE, 0xE9}, 30}, /* ающ */
- {{0xAE, 0xA7, 0xA2}, 30}, /* озв */
- {{0xA5, 0xA4, 0xA8}, 30}, /* еди */
- {{0xAE, 0xAC, 0xA5}, 30}, /* оме */
- {{0xAD, 0xA8, 0xA9}, 30}, /* ний */
- {{0xE1, 0xE3, 0xA4}, 30}, /* суд */
- {{0xA7, 0xA4, 0xAE}, 29}, /* здо */
- {{0xE1, 0xA2, 0xA8}, 29}, /* сви */
- {{0xAE, 0xAB, 0xA8}, 29}, /* оли */
- {{0xAE, 0xA2, 0xEC}, 29}, /* овь */
- {{0xA2, 0xA8, 0xA9}, 29}, /* вий */
- {{0xA4, 0xAE, 0xE0}, 29}, /* дор */
- {{0xA4, 0xA5, 0xEF}, 29}, /* дея */
- {{0xA5, 0xEF, 0xE2}, 29}, /* еят */
- {{0xE6, 0xAE, 0xAC}, 29}, /* цом */
- {{0xA8, 0xA7, 0xA0}, 28}, /* иза */
- {{0xE1, 0xE7, 0xA5}, 28}, /* сче */
- {{0xAA, 0xE2, 0xA0}, 28}, /* кта */
- {{0xAE, 0xA4, 0xAD}, 28}, /* одн */
- {{0xA1, 0xAB, 0xA0}, 28}, /* бла */
- {{0xAE, 0xA4, 0xAB}, 28}, /* одл */
- {{0xA8, 0xE2, 0xA0}, 28}, /* ита */
- {{0x84, 0xAE, 0xA3}, 28}, /* Дог */
- {{0xAE, 0xE1, 0xAE}, 28}, /* осо */
- {{0xAD, 0xAE, 0xE8}, 28}, /* нош */
- {{0xAA, 0xE3, 0xE0}, 28}, /* кур */
- {{0xA8, 0xAD, 0xA0}, 28}, /* ина */
- {{0xAE, 0xE8, 0xA5}, 28}, /* оше */
- {{0xAD, 0xA0, 0xAB}, 28}, /* нал */
- {{0xAD, 0xA8, 0xA7}, 27}, /* низ */
- {{0xA7, 0xA2, 0xE0}, 27}, /* звр */
- {{0xA2, 0xE0, 0xA0}, 27}, /* вра */
- {{0xAB, 0xA5, 0xE2}, 27}, /* лет */
- {{0xA5, 0xE9, 0xEC}, 27}, /* ещь */
- {{0xE0, 0xA8, 0xA4}, 27}, /* рид */
- {{0xA4, 0xAD, 0xAE}, 27}, /* дно */
- {{0xE0, 0xA8, 0xAE}, 27}, /* рио */
- {{0xAE, 0xA8, 0xAC}, 27}, /* оим */
- {{0xA5, 0xE0, 0xA6}, 27}, /* ерж */
- {{0xE3, 0xA2, 0xA5}, 26}, /* уве */
- {{0xAE, 0xAD, 0xAA}, 26}, /* онк */
- {{0xA5, 0xAB, 0xAA}, 26}, /* елк */
- {{0xAB, 0xA0, 0xA2}, 26}, /* лав */
- {{0xA0, 0xE2, 0xAE}, 26}, /* ато */
- {{0xEF, 0xAC, 0xA8}, 26}, /* ями */
- {{0xAC, 0xAC, 0xEB}, 26}, /* ммы */
- {{0xA5, 0xE1, 0xAF}, 26}, /* есп */
- {{0xAD, 0xAA, 0xE3}, 26}, /* нку */
- {{0xA8, 0xE6, 0xE3}, 25}, /* ицу */
- {{0xA4, 0xE1, 0xAA}, 25}, /* дск */
- {{0xAD, 0xA8, 0xAD}, 25}, /* нин */
- {{0xAF, 0xAB, 0xA5}, 25}, /* пле */
- {{0xE4, 0xAE, 0xE0}, 25}, /* фор */
- {{0xAB, 0xA0, 0xE1}, 25}, /* лас */
- {{0xA4, 0xA8, 0xAC}, 25}, /* дим */
- {{0xA5, 0xE1, 0xEF}, 25}, /* еся */
- {{0xAD, 0xA8, 0xE7}, 25}, /* нич */
- {{0xAE, 0xA2, 0xE0}, 25}, /* овр */
- {{0xA2, 0xE1, 0xAB}, 25}, /* всл */
- {{0xE0, 0xE8, 0xA5}, 25}, /* рше */
- {{0xA5, 0xE9, 0xA0}, 25}, /* еща */
- {{0xA6, 0xAD, 0xEB}, 25}, /* жны */
- {{0xE0, 0xA8, 0xAC}, 25}, /* рим */
- {{0xA7, 0xA0, 0xE6}, 25}, /* зац */
- {{0xA1, 0xE9, 0xA5}, 25}, /* бще */
- {{0xA0, 0xAA, 0xE2}, 25}, /* акт */
- {{0xA0, 0xA4, 0xE1}, 25}, /* адс */
- {{0xE3, 0xE7, 0xE0}, 25}, /* учр */
- {{0xE9, 0xA8, 0xA5}, 25}, /* щие */
- {{0xA6, 0xA8, 0xE2}, 24}, /* жит */
- {{0xA1, 0xE0, 0xA5}, 24}, /* бре */
- {{0xE3, 0xA3, 0xAE}, 24}, /* уго */
- {{0xA8, 0xEF, 0xE5}, 24}, /* иях */
- {{0xE2, 0xEC, 0xEE}, 24}, /* тью */
- {{0xEC, 0xE1, 0xEF}, 24}, /* ься */
- {{0xA2, 0xAE, 0xA2}, 24}, /* вов */
- {{0xAE, 0xE7, 0xAD}, 24}, /* очн */
- {{0xA2, 0xAE, 0xAE}, 24}, /* воо */
- {{0xAE, 0xA4, 0xEB}, 24}, /* оды */
- {{0xAB, 0xAE, 0xA3}, 24}, /* лог */
- {{0xA2, 0xA0, 0xA5}, 24}, /* вае */
- {{0xA0, 0xEF, 0xE5}, 24}, /* аях */
- {{0xE2, 0xEC, 0xE1}, 24}, /* тьс */
- {{0xA4, 0xA8, 0xE7}, 24}, /* дич */
- {{0xAA, 0xA8, 0xE5}, 24}, /* ких */
- {{0xE6, 0xA0, 0xAC}, 24}, /* цам */
- {{0xA8, 0xA7, 0xA2}, 24}, /* изв */
- {{0xE2, 0xA8, 0xA2}, 24}, /* тив */
- {{0xA5, 0xAE, 0xA1}, 24}, /* еоб */
- {{0xE1, 0xAE, 0xE1}, 24}, /* сос */
- {{0xE8, 0xA8, 0xAC}, 24}, /* шим */
- {{0xEB, 0xAF, 0xAE}, 24}, /* ыпо */
- {{0xA5, 0xA6, 0xA0}, 24}, /* ежа */
- {{0xE2, 0xAE, 0xA8}, 24}, /* тои */
- {{0xAA, 0xE2, 0xAE}, 24}, /* кто */
- {{0xA5, 0xE7, 0xA0}, 24}, /* еча */
- {{0xA8, 0xA4, 0xA8}, 24}, /* иди */
- {{0xA1, 0xE9, 0xA8}, 23}, /* бщи */
- {{0xE2, 0xEC, 0xA5}, 23}, /* тье */
- {{0xA1, 0xEA, 0xEF}, 23}, /* бъя */
- {{0xAD, 0xA0, 0xE7}, 23}, /* нач */
- {{0xE2, 0xA5, 0xE7}, 23}, /* теч */
- {{0xE3, 0xE0, 0xE1}, 23}, /* урс */
- {{0xA2, 0xA5, 0xE7}, 23}, /* веч */
- {{0xA5, 0xAC, 0xA5}, 23}, /* еме */
- {{0xAE, 0xA1, 0xE5}, 23}, /* обх */
- {{0xA1, 0xE5, 0xAE}, 23}, /* бхо */
- {{0xA4, 0xA0, 0xA5}, 23}, /* дае */
- {{0xE0, 0xA5, 0xA7}, 23}, /* рез */
- {{0xAA, 0xA0, 0xA6}, 22}, /* каж */
- {{0xAE, 0xAA, 0xE3}, 22}, /* оку */
- {{0xA0, 0xAC, 0xA5}, 22}, /* аме */
- {{0xAD, 0xA5, 0xA7}, 22}, /* нез */
- {{0xEB, 0xA2, 0xA0}, 22}, /* ыва */
- {{0xE1, 0xA2, 0xEF}, 22}, /* свя */
- {{0xE0, 0xA0, 0xA4}, 22}, /* рад */
- {{0xA5, 0xA7, 0xA0}, 22}, /* еза */
- {{0xA8, 0xA2, 0xA0}, 22}, /* ива */
- {{0xAA, 0xA0, 0xAC}, 22}, /* кам */
- {{0xAD, 0xA5, 0xAC}, 22}, /* нем */
- {{0xE2, 0xAA, 0xAE}, 22}, /* тко */
- {{0xA7, 0xA2, 0xA5}, 22}, /* зве */
- {{0xA2, 0xEF, 0xA7}, 22}, /* вяз */
- {{0xEF, 0xE2, 0xA8}, 22}, /* яти */
- {{0xAE, 0xE5, 0xE0}, 22}, /* охр */
- {{0xE0, 0xAE, 0xE2}, 22}, /* рот */
- {{0xAE, 0xAB, 0xA5}, 22}, /* оле */
- {{0xA1, 0xE0, 0xA0}, 22}, /* бра */
- {{0xA0, 0xA5, 0xAC}, 22}, /* аем */
- {{0xAB, 0xA0, 0xE8}, 21}, /* лаш */
- {{0xA8, 0xA7, 0xAC}, 21}, /* изм */
- {{0xA3, 0xE3, 0xE2}, 21}, /* гут */
- {{0xAE, 0xA6, 0xA4}, 21}, /* ожд */
- {{0xAA, 0xA0, 0xAA}, 21}, /* как */
- {{0xAA, 0xA0, 0xE7}, 21}, /* кач */
- {{0xAD, 0xA0, 0xAC}, 21}, /* нам */
- {{0xA4, 0xAE, 0xE5}, 21}, /* дох */
- {{0xAE, 0xE5, 0xAE}, 21}, /* охо */
- {{0xEE, 0xE0, 0xA8}, 21}, /* юри */
- {{0xA2, 0xA0, 0xAC}, 21}, /* вам */
- {{0xA7, 0xAC, 0xAE}, 21}, /* змо */
- {{0xA4, 0xAA, 0xA5}, 21}, /* дке */
- {{0xA1, 0xA0, 0xAD}, 21}, /* бан */
- {{0xA5, 0xAB, 0xA8}, 21}, /* ели */
- {{0xE0, 0xA8, 0xA7}, 21}, /* риз */
- {{0xAB, 0xAD, 0xAE}, 21}, /* лно */
- {{0xA2, 0xEB, 0xE8}, 21}, /* выш */
- {{0xA4, 0xE6, 0xA0}, 21}, /* дца */
- {{0xEF, 0xA4, 0xAA}, 21}, /* ядк */
- {{0xAE, 0xE2, 0xE1}, 21}, /* отс */
- {{0xE2, 0xA5, 0xA9}, 21}, /* тей */
- {{0xA0, 0xAD, 0xAA}, 21}, /* анк */
- {{0xAD, 0xA5, 0xA3}, 21}, /* нег */
- {{0xE6, 0xA0, 0xE2}, 21}, /* цат */
- {{0xA5, 0xAC, 0xEB}, 21}, /* емы */
- {{0xA2, 0xAE, 0xA5}, 21}, /* вое */
- {{0xA4, 0xA0, 0xE7}, 21}, /* дач */
- {{0xAE, 0xA3, 0xE3}, 21}, /* огу */
- {{0xAB, 0xA6, 0xA5}, 21}, /* лже */
- {{0xE2, 0xAD, 0xA8}, 21}, /* тни */
- {{0xA7, 0xA0, 0xA2}, 21}, /* зав */
- {{0xA2, 0xA5, 0xE1}, 21}, /* вес */
- {{0xE1, 0xA0, 0xAC}, 20}, /* сам */
- {{0xA0, 0xE0, 0xAD}, 20}, /* арн */
- {{0xE7, 0xAD, 0xEB}, 20}, /* чны */
- {{0xE1, 0xE0, 0xA5}, 20}, /* сре */
- {{0xE2, 0xA8, 0xEF}, 20}, /* тия */
- {{0xA8, 0xE1, 0xAB}, 20}, /* исл */
- {{0x91, 0xE2, 0xE0}, 20}, /* Стр */
- {{0xAD, 0xE2, 0xAE}, 20}, /* нто */
- {{0xE3, 0xE2, 0xE0}, 20}, /* утр */
- {{0xA0, 0xE8, 0xA5}, 20}, /* аше */
- {{0xA5, 0xAB, 0xA0}, 20}, /* ела */
- {{0xE3, 0xA4, 0xAE}, 20}, /* удо */
- {{0xA6, 0xA8, 0xA7}, 19}, /* жиз */
- {{0xAF, 0xA8, 0xE1}, 19}, /* пис */
- {{0xA0, 0xA8, 0xAC}, 19}, /* аим */
- {{0xE7, 0xA8, 0xE1}, 19}, /* чис */
- {{0xA5, 0xA6, 0xA8}, 19}, /* ежи */
- {{0xA2, 0xE1, 0xA5}, 19}, /* все */
- {{0xAB, 0xEC, 0xAA}, 19}, /* льк */
- {{0xA0, 0xE2, 0xE3}, 19}, /* ату */
- {{0xE3, 0xA4, 0xA0}, 19}, /* уда */
- {{0xE8, 0xA8, 0xA9}, 19}, /* ший */
- {{0xA7, 0xA0, 0xE0}, 19}, /* зар */
- {{0xA5, 0xA4, 0xAD}, 19}, /* едн */
- {{0xA0, 0xA2, 0xE8}, 19}, /* авш */
- {{0xE0, 0xAE, 0xA8}, 19}, /* рои */
- {{0xA8, 0xA4, 0xA0}, 19}, /* ида */
- {{0xA0, 0xE0, 0xAE}, 19}, /* аро */
- {{0xE2, 0xAE, 0xA9}, 19}, /* той */
- {{0xA6, 0xA0, 0xE9}, 19}, /* жащ */
- {{0xA5, 0xE1, 0xAE}, 19}, /* есо */
- {{0xAF, 0xA0, 0xAB}, 19}, /* пал */
- {{0xE9, 0xA0, 0xA5}, 19}, /* щае */
- {{0xE0, 0xEB, 0xA5}, 19}, /* рые */
- {{0xA5, 0xAD, 0xEF}, 19}, /* еня */
- {{0xE9, 0xA8, 0xA9}, 19}, /* щий */
- {{0xAB, 0xE3, 0xA3}, 19}, /* луг */
- {{0xEE, 0xE7, 0xA8}, 18}, /* ючи */
- {{0xE3, 0xAB, 0xEC}, 18}, /* уль */
- {{0xAC, 0xEB, 0xE5}, 18}, /* мых */
- {{0xE0, 0xAE, 0xA3}, 18}, /* рог */
- {{0xE1, 0xAE, 0xE5}, 18}, /* сох */
- {{0xAA, 0xAE, 0xA5}, 18}, /* кое */
- {{0xAD, 0xE2, 0xE1}, 18}, /* нтс */
- {{0xA0, 0xA7, 0xAD}, 18}, /* азн */
- {{0xE2, 0xAD, 0xEB}, 18}, /* тны */
- {{0xAE, 0xA4, 0xEF}, 18}, /* одя */
- {{0xAE, 0xA1, 0xAD}, 18}, /* обн */
- {{0xA2, 0xEB, 0xA4}, 18}, /* выд */
- {{0xAE, 0xE1, 0xEF}, 18}, /* ося */
- {{0xEC, 0xE2, 0xA0}, 18}, /* ьта */
- {{0xAD, 0xEF, 0xEE}, 18}, /* няю */
- {{0xAD, 0xA0, 0xE0}, 18}, /* нар */
- {{0xA5, 0xA7, 0xE3}, 18}, /* езу */
- {{0xA0, 0xE1, 0xAD}, 18}, /* асн */
- {{0xA7, 0xE3, 0xAB}, 18}, /* зул */
- {{0xE6, 0xA8, 0xAF}, 18}, /* цип */
- {{0xAA, 0xE2, 0xA5}, 18}, /* кте */
- {{0xA4, 0xAE, 0xAF}, 18}, /* доп */
- {{0xAD, 0xE6, 0xA8}, 18}, /* нци */
- {{0xE1, 0xAF, 0xA5}, 18}, /* спе */
- {{0xA8, 0xAC, 0xEB}, 18}, /* имы */
- {{0xAC, 0xAE, 0xAC}, 18}, /* мом */
- {{0xAF, 0xA5, 0xE7}, 18}, /* печ */
- {{0x8E, 0xA1, 0xEF}, 18}, /* Обя */
- {{0x8F, 0xE0, 0xA0}, 18}, /* Пра */
- {{0xAE, 0xAB, 0xAE}, 18}, /* оло */
- {{0xE2, 0xE1, 0xAA}, 18}, /* тск */
- {{0xAB, 0xAD, 0xA8}, 18}, /* лни */
- {{0xA5, 0xE0, 0xE2}, 18}, /* ерт */
- {{0xA8, 0xE1, 0xEC}, 18}, /* ись */
- {{0xAB, 0xEC, 0xE2}, 18}, /* льт */
- {{0xE1, 0xE3, 0xE2}, 18}, /* сут */
- {{0xA2, 0xAE, 0xA1}, 17}, /* воб */
- {{0xE0, 0xAD, 0xEB}, 17}, /* рны */
- {{0xA1, 0xAD, 0xEB}, 17}, /* бны */
- {{0xEB, 0xA4, 0xA0}, 17}, /* ыда */
- {{0xEC, 0xA7, 0xE3}, 17}, /* ьзу */
- {{0xA5, 0xA4, 0xAF}, 17}, /* едп */
- {{0xA0, 0xA4, 0xA5}, 17}, /* аде */
- {{0xA8, 0xAF, 0xA0}, 17}, /* ипа */
- {{0xE1, 0xA5, 0xA9}, 17}, /* сей */
- {{0xA5, 0xA5, 0xE1}, 17}, /* еес */
- {{0xAE, 0xA8, 0xA7}, 17}, /* оиз */
- {{0xAE, 0xE1, 0xA2}, 17}, /* осв */
- {{0xA4, 0xA8, 0xA2}, 17}, /* див */
- {{0xAD, 0xA0, 0xAD}, 17}, /* нан */
- {{0xA5, 0xE2, 0xA0}, 17}, /* ета */
- {{0xA4, 0xAD, 0xA5}, 17}, /* дне */
- {{0xA8, 0xAE, 0xA1}, 17}, /* иоб */
- {{0xE3, 0xA5, 0xE2}, 17}, /* ует */
- {{0xAD, 0xA0, 0xE5}, 17}, /* нах */
- {{0xE1, 0xAC, 0xA5}, 17}, /* сме */
- {{0xA0, 0xAB, 0xA8}, 17}, /* али */
- {{0xA1, 0xEA, 0xA5}, 17}, /* бъе */
- {{0xAF, 0xA0, 0xE1}, 17}, /* пас */
- {{0xA7, 0xA0, 0xAB}, 17}, /* зал */
- {{0xE0, 0xA6, 0xA0}, 16}, /* ржа */
- {{0xEF, 0xA2, 0xA8}, 16}, /* яви */
- {{0xA6, 0xA0, 0xE2}, 16}, /* жат */
- {{0xA1, 0xAE, 0xA6}, 16}, /* бож */
- {{0xE1, 0xA8, 0xAB}, 16}, /* сил */
- {{0xAD, 0xE3, 0xEE}, 16}, /* ную */
- {{0xAF, 0xA5, 0xAD}, 16}, /* пен */
- {{0xAC, 0xA0, 0xE2}, 16}, /* мат */
- {{0xAE, 0xAD, 0xAD}, 16}, /* онн */
- {{0xA2, 0xA8, 0xAD}, 16}, /* вин */
- {{0xE2, 0xAA, 0xA8}, 16}, /* тки */
- {{0xE2, 0xAE, 0xE7}, 16}, /* точ */
- {{0xE1, 0xE7, 0xA8}, 16}, /* счи */
- {{0xAD, 0xA8, 0xE6}, 16}, /* ниц */
- {{0xE9, 0xA5, 0xA5}, 16}, /* щее */
- {{0xA1, 0xA5, 0xE1}, 16}, /* бес */
- {{0xA0, 0xA4, 0xE6}, 16}, /* адц */
- {{0x8A, 0xAE, 0xAC}, 16}, /* Ком */
- {{0xEC, 0xA8, 0xAC}, 16}, /* ьим */
- {{0xE3, 0xE2, 0xE1}, 16}, /* утс */
- {{0xA0, 0xE7, 0xA8}, 16}, /* ачи */
- {{0xAF, 0xAE, 0xAD}, 16}, /* пон */
- {{0xAA, 0xA0, 0xA5}, 16}, /* кае */
- {{0xA8, 0xA3, 0xE0}, 16}, /* игр */
- {{0xA0, 0xAA, 0xA8}, 16}, /* аки */
- {{0xA0, 0xE9, 0xA8}, 16}, /* ащи */
- {{0xAB, 0xEC, 0xE6}, 16}, /* льц */
- {{0xA2, 0xAD, 0xAE}, 16}, /* вно */
- {{0xEB, 0xE8, 0xA5}, 15}, /* ыше */
- {{0x8B, 0xA8, 0xE6}, 15}, /* Лиц */
- {{0xEC, 0xA5, 0xA9}, 15}, /* ьей */
- {{0xE8, 0xA5, 0xAC}, 15}, /* шем */
- {{0xE3, 0xA1, 0xAB}, 15}, /* убл */
- {{0xE0, 0xA0, 0xE6}, 15}, /* рац */
- {{0xAA, 0xE3, 0xAC}, 15}, /* кум */
- {{0xE0, 0xA5, 0xA3}, 15}, /* рег */
- {{0xAE, 0xAF, 0xA0}, 15}, /* опа */
- {{0x82, 0xAE, 0xA7}, 15}, /* Воз */
- {{0xE2, 0xA0, 0xA5}, 15}, /* тае */
- {{0xAE, 0xA1, 0xEB}, 15}, /* обы */
- {{0xA1, 0xAB, 0xA8}, 15}, /* бли */
- {{0xE0, 0xAC, 0xA5}, 15}, /* рме */
- {{0xA2, 0xAE, 0xE1}, 15}, /* вос */
- {{0xA0, 0xE1, 0xA8}, 15}, /* аси */
- {{0xE2, 0xA0, 0xAC}, 15}, /* там */
- {{0xEC, 0xAC, 0xA5}, 15}, /* ьме */
- {{0xAE, 0xA3, 0xA0}, 15}, /* ога */
- {{0xA8, 0xAB, 0xAE}, 15}, /* ило */
- {{0xE1, 0xEC, 0xAC}, 15}, /* сьм */
- {{0xE0, 0xE2, 0xA8}, 15}, /* рти */
- {{0xE2, 0xE1, 0xE3}, 15}, /* тсу */
- {{0xE1, 0xA5, 0xAD}, 15}, /* сен */
- {{0xE2, 0xA0, 0xAB}, 15}, /* тал */
- {{0xA4, 0xA0, 0xE0}, 15}, /* дар */
- {{0xA0, 0xAC, 0xAE}, 15}, /* амо */
- {{0xA5, 0xA4, 0xAB}, 15}, /* едл */
- {{0xE1, 0xE3, 0xA1}, 15}, /* суб */
- {{0xA5, 0xA9, 0xE4}, 15}, /* ейф */
- {{0x95, 0xE0, 0xA0}, 15}, /* Хра */
- {{0xAB, 0xA0, 0xAC}, 14}, /* лам */
- {{0xA0, 0xE0, 0xE3}, 14}, /* ару */
- {{0xA3, 0xA8, 0xE5}, 14}, /* гих */
- {{0xE6, 0xA8, 0xEF}, 14}, /* ция */
- {{0xA4, 0xA0, 0xA2}, 14}, /* дав */
- {{0xAB, 0xA8, 0xE8}, 14}, /* лиш */
- {{0xEE, 0xE7, 0xA0}, 14}, /* юча */
- {{0xA0, 0xAD, 0xE1}, 14}, /* анс */
- {{0xAE, 0xA3, 0xE0}, 14}, /* огр */
- {{0xA8, 0xE9, 0xA0}, 14}, /* ища */
- {{0xA5, 0xAD, 0xEC}, 14}, /* ень */
- {{0xAE, 0xE2, 0xA8}, 14}, /* оти */
- {{0xA0, 0xA4, 0xEB}, 13}, /* ады */
- {{0xA0, 0xE9, 0xA0}, 13}, /* аща */
- {{0xA2, 0xAE, 0xA8}, 13}, /* вои */
- {{0xA2, 0xEB, 0xAC}, 13}, /* вым */
- {{0xA2, 0xEC, 0xEF}, 13}, /* вья */
- {{0xAA, 0xA8, 0xA5}, 13}, /* кие */
- {{0xAB, 0xA8, 0xE1}, 13}, /* лис */
- {{0xAC, 0xA5, 0xA4}, 13}, /* мед */
- {{0xE2, 0xA8, 0xE5}, 13}, /* тих */
- {{0xA5, 0xE2, 0xAE}, 13}, /* ето */
- {{0xA7, 0xAB, 0xAE}, 13}, /* зло */
- {{0xAE, 0xAF, 0xA5}, 13}, /* опе */
- {{0xE1, 0xA8, 0xAC}, 13}, /* сим */
- {{0xEF, 0xA7, 0xA8}, 13}, /* язи */
- {{0xA8, 0xAD, 0xA4}, 13}, /* инд */
- {{0xE7, 0xE3, 0xA6}, 13}, /* чуж */
- {{0xAB, 0xAA, 0xA8}, 13}, /* лки */
- {{0xA4, 0xAF, 0xE0}, 13}, /* дпр */
- {{0xAD, 0xA4, 0xA8}, 13}, /* нди */
- {{0xAE, 0xE2, 0xA0}, 13}, /* ота */
- {{0xAE, 0xE2, 0xEB}, 13}, /* оты */
- {{0xAB, 0xA0, 0xE7}, 13}, /* лач */
- {{0xAA, 0xA8, 0xAC}, 13}, /* ким */
- {{0xA8, 0xE1, 0xA8}, 13}, /* иси */
- {{0xA2, 0xA0, 0xAB}, 13}, /* вал */
- {{0xA5, 0xAC, 0xAE}, 13}, /* емо */
- {{0xAF, 0xE3, 0xA1}, 13}, /* пуб */
- {{0xEF, 0xA5, 0xAC}, 13}, /* яем */
- {{0xA1, 0xAE, 0xAB}, 13}, /* бол */
- {{0xAD, 0xE2, 0xE3}, 13}, /* нту */
- {{0xAD, 0xA5, 0xA9}, 13}, /* ней */
- {{0xAD, 0xA0, 0xEF}, 13}, /* ная */
- {{0xA5, 0xE1, 0xA0}, 13}, /* еса */
- {{0xE0, 0xAD, 0xAE}, 13}, /* рно */
- {{0xE9, 0xA5, 0xAC}, 13}, /* щем */
- {{0xA0, 0xAD, 0xEB}, 13}, /* аны */
- {{0x84, 0xAE, 0xA2}, 13}, /* Дов */
- {{0xE7, 0xA8, 0xA2}, 13}, /* чив */
- {{0xA2, 0xA8, 0xE1}, 13}, /* вис */
- {{0xAE, 0xAF, 0xAE}, 13}, /* опо */
- {{0xA2, 0xEC, 0xEE}, 13}, /* вью */
- {{0xA0, 0xAB, 0xA0}, 13}, /* ала */
- {{0xAB, 0xA5, 0xA9}, 12}, /* лей */
- {{0xA0, 0xE7, 0xA0}, 12}, /* ача */
- {{0xA5, 0xA7, 0xA2}, 12}, /* езв */
- {{0xA2, 0xA0, 0xEF}, 12}, /* вая */
- {{0xA5, 0xAE, 0xE1}, 12}, /* еос */
- {{0xEF, 0xE9, 0xA8}, 12}, /* ящи */
- {{0xA8, 0xA2, 0xA8}, 12}, /* иви */
- {{0xAD, 0xA5, 0xA5}, 12}, /* нее */
- {{0xE2, 0xE0, 0xE3}, 12}, /* тру */
- {{0xE8, 0xA5, 0xA5}, 12}, /* шее */
- {{0xE1, 0xA0, 0xE5}, 12}, /* сах */
- {{0xA8, 0xAD, 0xE6}, 12}, /* инц */
- {{0xAE, 0xAC, 0xAF}, 12}, /* омп */
- {{0xE3, 0xA6, 0xAE}, 12}, /* ужо */
- {{0xE3, 0xA0, 0xAB}, 12}, /* уал */
- {{0xAD, 0xA0, 0xE2}, 12}, /* нат */
- {{0xA8, 0xA4, 0xE3}, 12}, /* иду */
- {{0xA2, 0xAB, 0xA0}, 12}, /* вла */
- {{0xA7, 0xA2, 0xA0}, 12}, /* зва */
- {{0xAB, 0xA5, 0xA5}, 12}, /* лее */
- {{0xE0, 0xA5, 0xE5}, 12}, /* рех */
- {{0xA6, 0xA4, 0xE3}, 12}, /* жду */
- {{0xAC, 0xA0, 0xAB}, 12}, /* мал */
- {{0xA5, 0xAD, 0xE1}, 12}, /* енс */
- {{0xA8, 0xA9, 0xE1}, 12}, /* ийс */
- {{0xAA, 0xAE, 0xAB}, 12}, /* кол */
- {{0xAD, 0xA0, 0xA7}, 12}, /* наз */
- {{0xA4, 0xE3, 0xA0}, 12}, /* дуа */
- {{0xAE, 0xAD, 0xA8}, 12}, /* они */
- {{0xE1, 0xA5, 0xAC}, 12}, /* сем */
- {{0xA3, 0xAE, 0xA4}, 12}, /* год */
- {{0xAC, 0xA5, 0xA6}, 12}, /* меж */
- {{0xAE, 0xA7, 0xAB}, 12}, /* озл */
- {{0xA2, 0xAC, 0xA5}, 12}, /* вме */
- {{0xE3, 0xA4, 0xA5}, 12}, /* уде */
- {{0xEC, 0xAA, 0xAE}, 12}, /* ько */
- {{0xA5, 0xA2, 0xEB}, 12}, /* евы */
- {{0xA7, 0xA0, 0xAC}, 12}, /* зам */
- {{0xE1, 0xAE, 0xA4}, 12}, /* сод */
- {{0xE0, 0xAE, 0xA5}, 11}, /* рое */
- {{0xAE, 0xE2, 0xA4}, 11}, /* отд */
- {{0xE1, 0xA8, 0xEF}, 11}, /* сия */
- {{0xA8, 0xAA, 0xE3}, 11}, /* ику */
- {{0xEB, 0xAB, 0xA8}, 11}, /* ыли */
- {{0xA3, 0xA8, 0xAC}, 11}, /* гим */
- {{0xAD, 0xEC, 0xE8}, 11}, /* ньш */
- {{0xE2, 0xA8, 0xE7}, 11}, /* тич */
- {{0xE0, 0xA0, 0xAB}, 11}, /* рал */
- {{0xE3, 0xE7, 0xA8}, 11}, /* учи */
- {{0xAC, 0xA5, 0xEE}, 11}, /* мею */
- {{0xE2, 0xA5, 0xAA}, 11}, /* тек */
- {{0xAE, 0xA1, 0xE3}, 11}, /* обу */
- {{0xAD, 0xAD, 0xE3}, 11}, /* нну */
- {{0xAD, 0xA5, 0xAF}, 11}, /* неп */
- {{0xA2, 0xA5, 0xAB}, 11}, /* вел */
- {{0xE2, 0xAC, 0xA5}, 11}, /* тме */
- {{0xA1, 0xAE, 0xA3}, 11}, /* бог */
- {{0xAE, 0xE0, 0xA8}, 11}, /* ори */
- {{0xA0, 0xA2, 0xAD}, 11}, /* авн */
- {{0xA4, 0xA5, 0xA5}, 11}, /* дее */
- {{0xA6, 0xAE, 0xAC}, 11}, /* жом */
- {{0x82, 0xE0, 0xA5}, 11}, /* Вре */
- {{0xAC, 0xEB, 0xA5}, 11}, /* мые */
- {{0xEC, 0xE6, 0xA0}, 11}, /* ьца */
- {{0xAE, 0xE6, 0xA5}, 11}, /* оце */
- {{0xA8, 0xE2, 0xEB}, 10}, /* иты */
- {{0xA7, 0xE0, 0xA0}, 10}, /* зра */
- {{0xAE, 0xAD, 0xEB}, 10}, /* оны */
- {{0xE0, 0xA5, 0xE8}, 10}, /* реш */
- {{0xE3, 0xE8, 0xA5}, 10}, /* уше */
- {{0xE0, 0xA5, 0xA2}, 10}, /* рев */
- {{0xAE, 0xAF, 0xE3}, 10}, /* опу */
- {{0xEF, 0xE2, 0xEB}, 10}, /* яты */
- {{0xE2, 0xA0, 0xE7}, 10}, /* тач */
- {{0xA5, 0xE0, 0xAE}, 10}, /* еро */
- {{0xA2, 0xAA, 0xAB}, 10}, /* вкл */
- {{0xA7, 0xEB, 0xA2}, 10}, /* зыв */
- {{0xA0, 0xAF, 0xE0}, 10}, /* апр */
- {{0xE0, 0xE3, 0xE8}, 10}, /* руш */
- {{0x8E, 0xE2, 0xA2}, 10}, /* Отв */
- {{0xE0, 0xE1, 0xA0}, 10}, /* рса */
- {{0xA5, 0xAA, 0xE2}, 10}, /* ект */
- {{0xAB, 0xA5, 0xAA}, 10}, /* лек */
- {{0xA5, 0xA5, 0xE2}, 10}, /* еет */
- {{0xAE, 0xAF, 0xAB}, 10}, /* опл */
- {{0xE2, 0xE7, 0xA5}, 10}, /* тче */
- {{0xA3, 0xAE, 0xAC}, 10}, /* гом */
- {{0xE2, 0xAE, 0xA6}, 10}, /* тож */
- {{0xAB, 0xA5, 0xE7}, 10}, /* леч */
- {{0xA5, 0xE2, 0xEB}, 10}, /* еты */
- {{0xAE, 0xA6, 0xA8}, 10}, /* ожи */
- {{0xAC, 0xAD, 0xAE}, 10}, /* мно */
- {{0xAC, 0xAE, 0xA9}, 10}, /* мой */
- {{0xE6, 0xA5, 0xAB}, 10}, /* цел */
- {{0xE3, 0xAF, 0xA8}, 10}, /* упи */
- {{0xA0, 0xA5, 0xA2}, 10}, /* аев */
- {{0xAF, 0xAE, 0xAC}, 10}, /* пом */
- {{0xA4, 0xEF, 0xE9}, 10}, /* дящ */
- {{0xE2, 0xE0, 0xA8}, 10}, /* три */
- {{0xE8, 0xA8, 0xA5}, 10}, /* шие */
- {{0xA5, 0xAA, 0xA0}, 10}, /* ека */
- {{0xA5, 0xE8, 0xA5}, 10}, /* еше */
- {{0xA7, 0xA0, 0xA8}, 10}, /* заи */
- {{0xA8, 0xE2, 0xAE}, 10}, /* ито */
- {{0xA7, 0xAD, 0xEB}, 10}, /* зны */
- {{0xAE, 0xEF, 0xAD}, 10}, /* оян */
- {{0xA8, 0xA6, 0xA5}, 10}, /* иже */
- {{0xA2, 0xAD, 0xA5}, 10}, /* вне */
- {{0xE0, 0xE1, 0xE2}, 10}, /* рст */
- {{0xA5, 0xAC, 0xEF}, 10}, /* емя */
- {{0xAD, 0xA0, 0xA8}, 10}, /* наи */
- {{0xE2, 0xAE, 0xAB}, 10}, /* тол */
- {{0xAB, 0xA8, 0xE2}, 10}, /* лит */
- {{0xAE, 0xE1, 0xE0}, 10}, /* оср */
- {{0xE2, 0xA4, 0xA5}, 10}, /* тде */
- {{0xA5, 0xAC, 0xA8}, 10}, /* еми */
- {{0xAC, 0xA5, 0xA5}, 10}, /* мее */
- {{0xE0, 0xEB, 0xE5}, 10}, /* рых */
- {{0xAD, 0xA8, 0xA2}, 10}, /* нив */
- {{0xA5, 0xE0, 0xE3}, 10}, /* еру */
- {{0xE7, 0xA5, 0xAC}, 10}, /* чем */
- {{0xA4, 0xAE, 0xA1}, 10}, /* доб */
- {{0xA5, 0xAB, 0xAE}, 10}, /* ело */
- {{0xA8, 0xAB, 0xE3}, 10}, /* илу */
- {{0xA0, 0xA4, 0xAB}, 10}, /* адл */
- {{0xA8, 0xE7, 0xE2}, 10}, /* ичт */
- {{0xAC, 0xAB, 0xA5}, 10}, /* мле */
-};
-
-static const myhtml_encoding_trigram_t myhtml_encoding_detect_trigrams_index_iso_8859_5[] = {
- {{0xD5, 0xDD, 0xD8}, 991}, /* ени */
- {{0xDE, 0xD3, 0xDE}, 806}, /* ого */
- {{0xE1, 0xE2, 0xD2}, 659}, /* ств */
- {{0xDD, 0xD8, 0xEF}, 629}, /* ния */
- {{0xDE, 0xD2, 0xD0}, 566}, /* ова */
- {{0xE2, 0xD5, 0xDB}, 555}, /* тел */
- {{0xE0, 0xD5, 0xD4}, 507}, /* ред */
- {{0xD5, 0xDD, 0xDD}, 499}, /* енн */
- {{0xDE, 0xD2, 0xDE}, 443}, /* ово */
- {{0xD0, 0xDD, 0xD8}, 443}, /* ани */
- {{0xE2, 0xE0, 0xD0}, 429}, /* тра */
- {{0xDE, 0xE1, 0xE2}, 428}, /* ост */
- {{0xDD, 0xD8, 0xD5}, 419}, /* ние */
- {{0xDD, 0xDD, 0xDE}, 412}, /* нно */
- {{0xD0, 0xE5, 0xDE}, 396}, /* ахо */
- {{0xE1, 0xE2, 0xE0}, 392}, /* стр */
- {{0xE0, 0xD0, 0xE5}, 386}, /* рах */
- {{0xE5, 0xDE, 0xD2}, 379}, /* хов */
- {{0xD5, 0xDB, 0xEC}, 365}, /* ель */
- {{0xD3, 0xDE, 0xD2}, 360}, /* гов */
- {{0xD2, 0xDE, 0xE0}, 356}, /* вор */
- {{0xD5, 0xE1, 0xE2}, 349}, /* ест */
- {{0xD0, 0xE2, 0xEC}, 345}, /* ать */
- {{0xE0, 0xD0, 0xD2}, 337}, /* рав */
- {{0xDF, 0xE0, 0xD8}, 330}, /* при */
- {{0xDF, 0xE0, 0xD5}, 323}, /* пре */
- {{0xD4, 0xDE, 0xD3}, 318}, /* дог */
- {{0xDD, 0xD5, 0xDD}, 310}, /* нен */
- {{0xDF, 0xE0, 0xD0}, 309}, /* пра */
- {{0xD2, 0xD0, 0xDD}, 304}, /* ван */
- {{0xD8, 0xE2, 0xD5}, 295}, /* ите */
- {{0xE2, 0xD2, 0xD5}, 281}, /* тве */
- {{0xDB, 0xD5, 0xDD}, 266}, /* лен */
- {{0xE1, 0xE2, 0xDE}, 261}, /* сто */
- {{0xE2, 0xD0, 0xE2}, 260}, /* тат */
- {{0xDD, 0xDD, 0xEB}, 260}, /* нны */
- {{0xDB, 0xEC, 0xDD}, 256}, /* льн */
- {{0xD2, 0xDE, 0xD7}, 255}, /* воз */
- {{0xD8, 0xDB, 0xD8}, 254}, /* или */
- {{0xD0, 0xE2, 0xD5}, 252}, /* ате */
- {{0xD5, 0xD3, 0xDE}, 241}, /* его */
- {{0xD5, 0xE2, 0xE1}, 238}, /* етс */
- {{0xDD, 0xDE, 0xE1}, 236}, /* нос */
- {{0xE9, 0xD5, 0xE1}, 235}, /* щес */
- {{0xDF, 0xDE, 0xDB}, 232}, /* пол */
- {{0xE0, 0xD0, 0xDD}, 231}, /* ран */
- {{0xDD, 0xDE, 0xD3}, 230}, /* ног */
- {{0xE1, 0xE2, 0xD0}, 229}, /* ста */
- {{0xE7, 0xD5, 0xDD}, 226}, /* чен */
- {{0xE2, 0xE0, 0xD5}, 224}, /* тре */
- {{0xD7, 0xDC, 0xD5}, 214}, /* зме */
- {{0xE3, 0xE9, 0xD5}, 212}, /* уще */
- {{0xE1, 0xE2, 0xD8}, 210}, /* сти */
- {{0xDA, 0xDE, 0xDC}, 207}, /* ком */
- {{0xDE, 0xE0, 0xDE}, 206}, /* оро */
- {{0xD2, 0xDB, 0xD5}, 195}, /* вле */
- {{0xD7, 0xD0, 0xDD}, 194}, /* зан */
- {{0xD0, 0xE1, 0xE2}, 193}, /* аст */
- {{0xE2, 0xE1, 0xEF}, 191}, /* тся */
- {{0xE5, 0xE0, 0xD0}, 187}, /* хра */
- {{0xD0, 0xDD, 0xDD}, 182}, /* анн */
- {{0xD5, 0xE0, 0xD5}, 182}, /* ере */
- {{0xD2, 0xE0, 0xD5}, 178}, /* вре */
- {{0xDE, 0xD2, 0xD5}, 173}, /* ове */
- {{0xEC, 0xDD, 0xDE}, 173}, /* ьно */
- {{0xD2, 0xD5, 0xE0}, 172}, /* вер */
- {{0xDC, 0xD5, 0xDD}, 170}, /* мен */
- {{0xDB, 0xD8, 0xE6}, 168}, /* лиц */
- {{0xE2, 0xDE, 0xE0}, 167}, /* тор */
- {{0xE0, 0xD5, 0xDD}, 167}, /* рен */
- {{0xE9, 0xD5, 0xDD}, 165}, /* щен */
- {{0xDE, 0xD7, 0xDC}, 164}, /* озм */
- {{0xD5, 0xD4, 0xD0}, 163}, /* еда */
- {{0xE2, 0xD2, 0xD8}, 159}, /* тви */
- {{0xEF, 0xD7, 0xD0}, 159}, /* яза */
- {{0xD1, 0xEF, 0xD7}, 158}, /* бяз */
- {{0xDD, 0xD8, 0xD8}, 153}, /* нии */
- {{0xDD, 0xEB, 0xE5}, 153}, /* ных */
- {{0xE2, 0xEC, 0xEF}, 153}, /* тья */
- {{0xDC, 0xD5, 0xE0}, 153}, /* мер */
- {{0xE1, 0xDB, 0xD8}, 150}, /* сли */
- {{0xE2, 0xDE, 0xD2}, 148}, /* тов */
- {{0xE2, 0xD2, 0xD0}, 147}, /* тва */
- {{0xDE, 0xE0, 0xD0}, 146}, /* ора */
- {{0xDD, 0xDE, 0xDC}, 144}, /* ном */
- {{0xD4, 0xD5, 0xDD}, 144}, /* ден */
- {{0xD0, 0xDD, 0xD5}, 142}, /* ане */
- {{0xDA, 0xDE, 0xDD}, 141}, /* кон */
- {{0xDB, 0xE3, 0xE7}, 141}, /* луч */
- {{0xDC, 0xE3, 0xE9}, 140}, /* мущ */
- {{0xDE, 0xD1, 0xEF}, 140}, /* обя */
- {{0xD2, 0xD0, 0xE2}, 138}, /* ват */
- {{0xD2, 0xD0, 0xE0}, 137}, /* вар */
- {{0xD5, 0xE9, 0xD5}, 137}, /* еще */
- {{0xDE, 0xE2, 0xE0}, 137}, /* отр */
- {{0xD4, 0xD5, 0xDB}, 137}, /* дел */
- {{0xDD, 0xEB, 0xDC}, 136}, /* ным */
- {{0xD8, 0xDC, 0xE3}, 136}, /* иму */
- {{0xC1, 0xE2, 0xD0}, 134}, /* Ста */
- {{0xE3, 0xE7, 0xD0}, 133}, /* уча */
- {{0xE2, 0xE1, 0xE2}, 131}, /* тст */
- {{0xD5, 0xDB, 0xEF}, 130}, /* еля */
- {{0xE1, 0xDB, 0xE3}, 130}, /* слу */
- {{0xD7, 0xD0, 0xDA}, 130}, /* зак */
- {{0xE2, 0xDE, 0xEF}, 129}, /* тоя */
- {{0xDE, 0xDC, 0xD8}, 128}, /* оми */
- {{0xDC, 0xD5, 0xE9}, 128}, /* мещ */
- {{0xD5, 0xD4, 0xE3}, 127}, /* еду */
- {{0xD2, 0xD5, 0xDD}, 127}, /* вен */
- {{0xDD, 0xDE, 0xD2}, 127}, /* нов */
- {{0xDD, 0xDE, 0xD5}, 126}, /* ное */
- {{0xDE, 0xE2, 0xD2}, 125}, /* отв */
- {{0xDA, 0xD0, 0xD7}, 125}, /* каз */
- {{0xD0, 0xD5, 0xE2}, 125}, /* ает */
- {{0xE1, 0xDA, 0xDE}, 125}, /* ско */
- {{0xD5, 0xDD, 0xE2}, 124}, /* ент */
- {{0xDC, 0xDE, 0xE2}, 123}, /* мот */
- {{0xD0, 0xD2, 0xDB}, 122}, /* авл */
- {{0xE1, 0xDC, 0xDE}, 122}, /* смо */
- {{0xD8, 0xE7, 0xD8}, 121}, /* ичи */
- {{0xD1, 0xEB, 0xE2}, 120}, /* быт */
- {{0xE3, 0xE1, 0xDC}, 118}, /* усм */
- {{0xE1, 0xE1, 0xD8}, 117}, /* сси */
- {{0xD4, 0xE3, 0xE1}, 117}, /* дус */
- {{0xE5, 0xDE, 0xD4}, 117}, /* ход */
- {{0xE0, 0xD8, 0xE7}, 117}, /* рич */
- {{0xE7, 0xD5, 0xE1}, 115}, /* чес */
- {{0xD3, 0xE0, 0xD0}, 114}, /* гра */
- {{0xDF, 0xE0, 0xDE}, 114}, /* про */
- {{0xD4, 0xDE, 0xD2}, 113}, /* дов */
- {{0xD2, 0xD5, 0xE2}, 112}, /* вет */
- {{0xD5, 0xD4, 0xD5}, 112}, /* еде */
- {{0xE8, 0xD5, 0xDD}, 111}, /* шен */
- {{0xE7, 0xD8, 0xDD}, 110}, /* чин */
- {{0xDD, 0xD0, 0xE1}, 109}, /* нас */
- {{0xD8, 0xE2, 0xEC}, 105}, /* ить */
- {{0xE2, 0xD2, 0xDE}, 105}, /* тво */
- {{0xDA, 0xDB, 0xEE}, 104}, /* клю */
- {{0xE0, 0xD8, 0xE2}, 104}, /* рит */
- {{0xE1, 0xE2, 0xEC}, 104}, /* сть */
- {{0xDB, 0xEE, 0xE7}, 104}, /* люч */
- {{0xE2, 0xDE, 0xDC}, 104}, /* том */
- {{0xE1, 0xDB, 0xD5}, 103}, /* сле */
- {{0xE1, 0xDF, 0xDE}, 102}, /* спо */
- {{0xDE, 0xDB, 0xDD}, 102}, /* олн */
- {{0xD5, 0xE1, 0xDB}, 102}, /* есл */
- {{0xD5, 0xE0, 0xD8}, 101}, /* ери */
- {{0xDD, 0xDE, 0xD9}, 101}, /* ной */
- {{0xE0, 0xDE, 0xDC}, 101}, /* ром */
- {{0xDE, 0xE2, 0xDE}, 99}, /* ото */
- {{0xDD, 0xEB, 0xD5}, 99}, /* ные */
- {{0xD7, 0xDD, 0xD0}, 99}, /* зна */
- {{0xD2, 0xDB, 0xEF}, 99}, /* вля */
- {{0xE2, 0xD5, 0xE0}, 98}, /* тер */
- {{0xE3, 0xDF, 0xE0}, 97}, /* упр */
- {{0xD0, 0xDA, 0xDE}, 96}, /* ако */
- {{0xDA, 0xDE, 0xD3}, 96}, /* ког */
- {{0xDD, 0xEB, 0xD9}, 96}, /* ный */
- {{0xDE, 0xE0, 0xE3}, 96}, /* ору */
- {{0xD5, 0xDB, 0xD5}, 95}, /* еле */
- {{0xD5, 0xE1, 0xDA}, 95}, /* еск */
- {{0xD0, 0xD7, 0xD0}, 95}, /* аза */
- {{0xD9, 0xE1, 0xE2}, 93}, /* йст */
- {{0xDF, 0xDE, 0xE0}, 93}, /* пор */
- {{0xDE, 0xD6, 0xD5}, 92}, /* оже */
- {{0xD8, 0xDD, 0xD5}, 91}, /* ине */
- {{0xE9, 0xD5, 0xD9}, 90}, /* щей */
- {{0xD6, 0xD4, 0xD5}, 90}, /* жде */
- {{0xDF, 0xD5, 0xE0}, 89}, /* пер */
- {{0xDD, 0xD8, 0xE2}, 89}, /* нит */
- {{0xDE, 0xDB, 0xEC}, 89}, /* оль */
- {{0xD0, 0xD6, 0xD4}, 88}, /* ажд */
- {{0xD6, 0xD5, 0xDD}, 87}, /* жен */
- {{0xDB, 0xD0, 0xD4}, 87}, /* лад */
- {{0xD0, 0xDC, 0xD8}, 87}, /* ами */
- {{0xDA, 0xDE, 0xE2}, 86}, /* кот */
- {{0xE7, 0xD0, 0xD5}, 85}, /* чае */
- {{0xD2, 0xD5, 0xE9}, 85}, /* вещ */
- {{0xD2, 0xD8, 0xEF}, 85}, /* вия */
- {{0xEF, 0xE9, 0xD5}, 85}, /* яще */
- {{0xD8, 0xD5, 0xDC}, 85}, /* ием */
- {{0xDA, 0xDB, 0xD0}, 85}, /* кла */
- {{0xD5, 0xD9, 0xE1}, 84}, /* ейс */
- {{0xEB, 0xE2, 0xEC}, 84}, /* ыть */
- {{0xD0, 0xD2, 0xDE}, 84}, /* аво */
- {{0xE0, 0xD0, 0xD6}, 83}, /* раж */
- {{0xDB, 0xEC, 0xE1}, 83}, /* льс */
- {{0xDE, 0xEF, 0xE9}, 82}, /* оящ */
- {{0xD5, 0xDD, 0xDE}, 81}, /* ено */
- {{0xD4, 0xE1, 0xE2}, 81}, /* дст */
- {{0xD4, 0xD5, 0xD9}, 80}, /* дей */
- {{0xE0, 0xD5, 0xD1}, 80}, /* реб */
- {{0xEC, 0xE1, 0xE2}, 79}, /* ьст */
- {{0xD5, 0xD4, 0xE1}, 79}, /* едс */
- {{0xD0, 0xE0, 0xD8}, 79}, /* ари */
- {{0xD4, 0xD0, 0xDD}, 79}, /* дан */
- {{0xDC, 0xDE, 0xD6}, 78}, /* мож */
- {{0xD8, 0xDC, 0xD5}, 78}, /* име */
- {{0xD8, 0xDD, 0xDE}, 78}, /* ино */
- {{0xE0, 0xD8, 0xDD}, 77}, /* рин */
- {{0xD4, 0xDE, 0xE1}, 77}, /* дос */
- {{0xDF, 0xDE, 0xE1}, 77}, /* пос */
- {{0xE2, 0xD0, 0xDA}, 77}, /* так */
- {{0xE9, 0xD5, 0xD3}, 77}, /* щег */
- {{0xD4, 0xD0, 0xE2}, 77}, /* дат */
- {{0xDF, 0xDB, 0xD0}, 76}, /* пла */
- {{0xE3, 0xE1, 0xDB}, 76}, /* усл */
- {{0xD8, 0xE6, 0xD0}, 76}, /* ица */
- {{0xE0, 0xDE, 0xD2}, 75}, /* ров */
- {{0xED, 0xE2, 0xDE}, 75}, /* это */
- {{0xE3, 0xE7, 0xD5}, 74}, /* уче */
- {{0xD4, 0xDE, 0xDB}, 73}, /* дол */
- {{0xEC, 0xDD, 0xEB}, 73}, /* ьны */
- {{0xE0, 0xD0, 0xD7}, 73}, /* раз */
- {{0xDC, 0xD8, 0xE1}, 73}, /* мис */
- {{0xD0, 0xDD, 0xDE}, 72}, /* ано */
- {{0xE1, 0xE0, 0xDE}, 72}, /* сро */
- {{0xD0, 0xD2, 0xD8}, 72}, /* ави */
- {{0xE2, 0xEC, 0xD8}, 71}, /* тьи */
- {{0xEE, 0xE7, 0xD5}, 70}, /* юче */
- {{0xE1, 0xDA, 0xDB}, 70}, /* скл */
- {{0xD8, 0xE1, 0xE1}, 70}, /* исс */
- {{0xD6, 0xD5, 0xE2}, 69}, /* жет */
- {{0xD5, 0xD4, 0xDE}, 69}, /* едо */
- {{0xDB, 0xD5, 0xD4}, 69}, /* лед */
- {{0xDB, 0xDE, 0xD2}, 69}, /* лов */
- {{0xEE, 0xE9, 0xD8}, 68}, /* ющи */
- {{0xD8, 0xD1, 0xDE}, 68}, /* ибо */
- {{0xDB, 0xD0, 0xE2}, 67}, /* лат */
- {{0xE0, 0xDE, 0xDA}, 67}, /* рок */
- {{0xD0, 0xDA, 0xDB}, 67}, /* акл */
- {{0xE0, 0xD8, 0xE9}, 67}, /* рищ */
- {{0xD1, 0xDE, 0xD2}, 67}, /* бов */
- {{0xD8, 0xE1, 0xDA}, 67}, /* иск */
- {{0xD5, 0xD1, 0xDE}, 67}, /* ебо */
- {{0xDB, 0xEC, 0xD7}, 67}, /* льз */
- {{0xE3, 0xDA, 0xD0}, 67}, /* ука */
- {{0xDB, 0xD8, 0xD1}, 66}, /* либ */
- {{0xDE, 0xDC, 0xE3}, 66}, /* ому */
- {{0xDE, 0xD2, 0xDB}, 66}, /* овл */
- {{0xE2, 0xDD, 0xDE}, 65}, /* тно */
- {{0xD2, 0xDE, 0xD9}, 64}, /* вой */
- {{0xE2, 0xDE, 0xD3}, 64}, /* тог */
- {{0xE1, 0xDB, 0xDE}, 64}, /* сло */
- {{0xDE, 0xD7, 0xDD}, 64}, /* озн */
- {{0xE1, 0xDE, 0xDE}, 64}, /* соо */
- {{0xD7, 0xD0, 0xE2}, 63}, /* зат */
- {{0xD8, 0xE1, 0xDF}, 63}, /* исп */
- {{0xD0, 0xE7, 0xD5}, 63}, /* аче */
- {{0xDD, 0xD8, 0xEE}, 63}, /* нию */
- {{0xDE, 0xDD, 0xD5}, 63}, /* оне */
- {{0xDE, 0xDB, 0xD6}, 62}, /* олж */
- {{0xDE, 0xD2, 0xE9}, 61}, /* овщ */
- {{0xE0, 0xD0, 0xE1}, 61}, /* рас */
- {{0xD2, 0xD8, 0xD4}, 61}, /* вид */
- {{0xD2, 0xE9, 0xD8}, 61}, /* вщи */
- {{0xE1, 0xDD, 0xDE}, 61}, /* сно */
- {{0xD8, 0xE6, 0xDE}, 61}, /* ицо */
- {{0xD8, 0xE7, 0xD5}, 61}, /* иче */
- {{0xD0, 0xD2, 0xD5}, 61}, /* аве */
- {{0xD3, 0xDB, 0xD0}, 61}, /* гла */
- {{0xE7, 0xD5, 0xE2}, 61}, /* чет */
- {{0xE9, 0xD8, 0xDA}, 61}, /* щик */
- {{0xE0, 0xE3, 0xD3}, 60}, /* руг */
- {{0xE2, 0xD0, 0xDD}, 60}, /* тан */
- {{0xD8, 0xDC, 0xDE}, 60}, /* имо */
- {{0xD0, 0xDB, 0xEC}, 60}, /* аль */
- {{0xDE, 0xD2, 0xD8}, 60}, /* ови */
- {{0xD6, 0xD4, 0xD0}, 60}, /* жда */
- {{0xDF, 0xDE, 0xD2}, 60}, /* пов */
- {{0xD5, 0xDC, 0xE3}, 60}, /* ему */
- {{0xEF, 0xE2, 0xD5}, 60}, /* яте */
- {{0xE1, 0xD8, 0xD8}, 59}, /* сии */
- {{0xD1, 0xDE, 0xE2}, 59}, /* бот */
- {{0xD2, 0xEB, 0xDF}, 59}, /* вып */
- {{0xD0, 0xD1, 0xDE}, 59}, /* або */
- {{0xDB, 0xEF, 0xEE}, 59}, /* ляю */
- {{0xE1, 0xE3, 0xE9}, 58}, /* сущ */
- {{0xDE, 0xD4, 0xD5}, 58}, /* оде */
- {{0xD8, 0xDD, 0xD8}, 58}, /* ини */
- {{0xE0, 0xD0, 0xE2}, 58}, /* рат */
- {{0xEF, 0xD2, 0xDB}, 58}, /* явл */
- {{0xDD, 0xD0, 0xD3}, 57}, /* наг */
- {{0xD4, 0xE0, 0xE3}, 57}, /* дру */
- {{0xE0, 0xD0, 0xD1}, 57}, /* раб */
- {{0xD0, 0xD3, 0xE0}, 57}, /* агр */
- {{0xD8, 0xDE, 0xDD}, 57}, /* ион */
- {{0xDC, 0xD5, 0xE1}, 57}, /* мес */
- {{0xD0, 0xE6, 0xD8}, 56}, /* аци */
- {{0xDE, 0xE1, 0xE3}, 56}, /* осу */
- {{0xDA, 0xDE, 0xD9}, 55}, /* кой */
- {{0xE1, 0xD2, 0xDE}, 55}, /* сво */
- {{0xD7, 0xDE, 0xD2}, 55}, /* зов */
- {{0xDE, 0xDF, 0xE0}, 54}, /* опр */
- {{0xE1, 0xDE, 0xD1}, 54}, /* соб */
- {{0xD2, 0xDF, 0xE0}, 54}, /* впр */
- {{0xDB, 0xDD, 0xD5}, 54}, /* лне */
- {{0xDE, 0xDC, 0xDC}, 54}, /* омм */
- {{0xD5, 0xE0, 0xD0}, 54}, /* ера */
- {{0xE7, 0xD8, 0xE2}, 54}, /* чит */
- {{0xD5, 0xE0, 0xE7}, 54}, /* ерч */
- {{0xE0, 0xE7, 0xD5}, 54}, /* рче */
- {{0xD0, 0xE2, 0xD8}, 54}, /* ати */
- {{0xDD, 0xD8, 0xDA}, 54}, /* ник */
- {{0xDC, 0xDC, 0xD5}, 54}, /* мме */
- {{0xE3, 0xE1, 0xE2}, 53}, /* уст */
- {{0xE2, 0xD5, 0xDD}, 53}, /* тен */
- {{0xD2, 0xD5, 0xD4}, 53}, /* вед */
- {{0xE1, 0xDE, 0xD2}, 52}, /* сов */
- {{0xD0, 0xD6, 0xD5}, 52}, /* аже */
- {{0xDE, 0xDA, 0xD0}, 52}, /* ока */
- {{0xEB, 0xDC, 0xD8}, 52}, /* ыми */
- {{0xEE, 0xE2, 0xE1}, 52}, /* ютс */
- {{0xDE, 0xDE, 0xE2}, 52}, /* оот */
- {{0xDC, 0xD8, 0xE2}, 52}, /* мит */
- {{0xEF, 0xEE, 0xE9}, 51}, /* яющ */
- {{0xD2, 0xE8, 0xD5}, 51}, /* вше */
- {{0xE1, 0xD8, 0xDE}, 51}, /* сио */
- {{0xDE, 0xDD, 0xDE}, 51}, /* оно */
- {{0xD0, 0xD2, 0xD0}, 51}, /* ава */
- {{0xD0, 0xE9, 0xD5}, 51}, /* аще */
- {{0xDB, 0xEF, 0xD5}, 50}, /* ляе */
- {{0xD5, 0xDD, 0xD5}, 50}, /* ене */
- {{0xDE, 0xD4, 0xD8}, 50}, /* оди */
- {{0xDF, 0xE3, 0xDD}, 49}, /* пун */
- {{0xDB, 0xD8, 0xE7}, 49}, /* лич */
- {{0xD2, 0xDE, 0xDC}, 49}, /* вом */
- {{0xDD, 0xDA, 0xE2}, 49}, /* нкт */
- {{0xDD, 0xD5, 0xE1}, 49}, /* нес */
- {{0xD2, 0xD8, 0xDB}, 49}, /* вил */
- {{0xD5, 0xD6, 0xD4}, 49}, /* ежд */
- {{0xE0, 0xD5, 0xE1}, 49}, /* рес */
- {{0xEE, 0xE9, 0xD5}, 49}, /* юще */
- {{0xEC, 0xD7, 0xDE}, 49}, /* ьзо */
- {{0xDF, 0xDE, 0xE2}, 49}, /* пот */
- {{0xE3, 0xDD, 0xDA}, 49}, /* унк */
- {{0xE1, 0xE2, 0xD5}, 49}, /* сте */
- {{0xDA, 0xDE, 0xD2}, 49}, /* ков */
- {{0xDE, 0xE1, 0xDB}, 48}, /* осл */
- {{0xEF, 0xD5, 0xE2}, 48}, /* яет */
- {{0xB5, 0xE1, 0xDB}, 48}, /* Есл */
- {{0xBF, 0xE0, 0xD8}, 48}, /* При */
- {{0xE2, 0xD0, 0xD2}, 48}, /* тав */
- {{0xDD, 0xD5, 0xE0}, 48}, /* нер */
- {{0xE7, 0xDD, 0xDE}, 47}, /* чно */
- {{0xDF, 0xDE, 0xD4}, 47}, /* под */
- {{0xDD, 0xE2, 0xD0}, 47}, /* нта */
- {{0xD8, 0xE9, 0xD5}, 47}, /* ище */
- {{0xDE, 0xD1, 0xE9}, 47}, /* общ */
- {{0xD0, 0xD7, 0xDC}, 47}, /* азм */
- {{0xD6, 0xDD, 0xDE}, 47}, /* жно */
- {{0xD2, 0xD8, 0xD8}, 46}, /* вии */
- {{0xE0, 0xD0, 0xE9}, 46}, /* ращ */
- {{0xDE, 0xE0, 0xD5}, 46}, /* оре */
- {{0xD2, 0xE8, 0xD8}, 46}, /* вши */
- {{0xD5, 0xDA, 0xE1}, 46}, /* екс */
- {{0xD2, 0xDE, 0xD3}, 46}, /* вог */
- {{0xE7, 0xE2, 0xDE}, 46}, /* что */
- {{0xD8, 0xE7, 0xDD}, 45}, /* ичн */
- {{0xDB, 0xD5, 0xDC}, 45}, /* лем */
- {{0xDC, 0xDE, 0xD3}, 45}, /* мог */
- {{0xE2, 0xD2, 0xDB}, 45}, /* твл */
- {{0xD4, 0xDB, 0xD5}, 45}, /* дле */
- {{0xD4, 0xDB, 0xEF}, 45}, /* для */
- {{0xE0, 0xD5, 0xE2}, 45}, /* рет */
- {{0xD0, 0xE0, 0xD0}, 45}, /* ара */
- {{0xDD, 0xEF, 0xE2}, 44}, /* нят */
- {{0xD5, 0xE7, 0xD5}, 44}, /* ече */
- {{0xDE, 0xE2, 0xD5}, 44}, /* оте */
- {{0xDE, 0xE0, 0xEB}, 44}, /* оры */
- {{0xDE, 0xE1, 0xDD}, 43}, /* осн */
- {{0xDE, 0xD1, 0xDE}, 43}, /* обо */
- {{0xDE, 0xD3, 0xDB}, 43}, /* огл */
- {{0xD8, 0xDD, 0xEB}, 43}, /* ины */
- {{0xD5, 0xE1, 0xE1}, 43}, /* есс */
- {{0xDE, 0xD1, 0xE0}, 43}, /* обр */
- {{0xDA, 0xE0, 0xD0}, 43}, /* кра */
- {{0xD8, 0xEF, 0xDC}, 43}, /* иям */
- {{0xD0, 0xDB, 0xDE}, 43}, /* ало */
- {{0xE0, 0xE3, 0xE7}, 43}, /* руч */
- {{0xDE, 0xE0, 0xD3}, 43}, /* орг */
- {{0xE7, 0xD0, 0xEF}, 42}, /* чая */
- {{0xDD, 0xD8, 0xDC}, 42}, /* ним */
- {{0xD8, 0xD7, 0xDD}, 42}, /* изн */
- {{0xDF, 0xDE, 0xDA}, 42}, /* пок */
- {{0xE1, 0xE2, 0xE3}, 42}, /* сту */
- {{0xD5, 0xDB, 0xEE}, 42}, /* елю */
- {{0xE2, 0xD8, 0xE2}, 42}, /* тит */
- {{0xE6, 0xD5, 0xDD}, 42}, /* цен */
- {{0xE7, 0xD0, 0xE1}, 42}, /* час */
- {{0xD3, 0xD0, 0xDD}, 42}, /* ган */
- {{0xE0, 0xD3, 0xD0}, 42}, /* рга */
- {{0xE1, 0xE2, 0xDD}, 42}, /* стн */
- {{0xE0, 0xD5, 0xD6}, 42}, /* реж */
- {{0xE3, 0xDC, 0xDC}, 42}, /* умм */
- {{0xE2, 0xD2, 0xE3}, 41}, /* тву */
- {{0xE2, 0xE3, 0xDF}, 41}, /* туп */
- {{0xE1, 0xDA, 0xD8}, 40}, /* ски */
- {{0xD4, 0xD5, 0xDA}, 40}, /* дек */
- {{0xDB, 0xD5, 0xD6}, 40}, /* леж */
- {{0xD5, 0xE1, 0xD5}, 40}, /* есе */
- {{0xD2, 0xD8, 0xD5}, 40}, /* вие */
- {{0xE2, 0xDA, 0xD0}, 40}, /* тка */
- {{0xD5, 0xDA, 0xE0}, 40}, /* екр */
- {{0xDE, 0xD4, 0xDE}, 40}, /* одо */
- {{0xDA, 0xE1, 0xD0}, 40}, /* кса */
- {{0xE0, 0xD5, 0xDA}, 40}, /* рек */
- {{0xDD, 0xE2, 0xD5}, 40}, /* нте */
- {{0xE3, 0xD3, 0xD8}, 40}, /* уги */
- {{0xD1, 0xEB, 0xDB}, 40}, /* был */
- {{0xD8, 0xDD, 0xEF}, 40}, /* иня */
- {{0xD5, 0xE9, 0xD8}, 39}, /* ещи */
- {{0xD3, 0xD5, 0xDD}, 39}, /* ген */
- {{0xBA, 0xDE, 0xD4}, 39}, /* Код */
- {{0xD4, 0xD8, 0xE2}, 39}, /* дит */
- {{0xE1, 0xE5, 0xDE}, 39}, /* схо */
- {{0xD8, 0xDD, 0xE2}, 39}, /* инт */
- {{0xE1, 0xE3, 0xDC}, 39}, /* сум */
- {{0xE0, 0xDE, 0xDD}, 39}, /* рон */
- {{0xDE, 0xE2, 0xDA}, 39}, /* отк */
- {{0xD4, 0xDE, 0xDA}, 39}, /* док */
- {{0xD8, 0xDB, 0xD0}, 38}, /* ила */
- {{0xE6, 0xD5, 0xE1}, 38}, /* цес */
- {{0xD8, 0xDA, 0xD0}, 38}, /* ика */
- {{0xD7, 0xDD, 0xD8}, 38}, /* зни */
- {{0xDE, 0xD2, 0xEB}, 38}, /* овы */
- {{0xDB, 0xD6, 0xDD}, 38}, /* лжн */
- {{0xE3, 0xDF, 0xDB}, 38}, /* упл */
- {{0xD3, 0xD4, 0xD0}, 37}, /* гда */
- {{0xDB, 0xD0, 0xD6}, 37}, /* лаж */
- {{0xD6, 0xD5, 0xD4}, 37}, /* жед */
- {{0xD1, 0xD5, 0xD7}, 37}, /* без */
- {{0xD4, 0xD5, 0xE2}, 37}, /* дет */
- {{0xDE, 0xE0, 0xEF}, 37}, /* оря */
- {{0xE0, 0xDE, 0xE1}, 37}, /* рос */
- {{0xDE, 0xD1, 0xDB}, 37}, /* обл */
- {{0xE6, 0xD8, 0xD8}, 37}, /* ции */
- {{0xD4, 0xDE, 0xDC}, 37}, /* дом */
- {{0xDD, 0xE6, 0xD5}, 37}, /* нце */
- {{0xE8, 0xD5, 0xD3}, 37}, /* шег */
- {{0xDB, 0xDE, 0xD6}, 37}, /* лож */
- {{0xDE, 0xDD, 0xD0}, 37}, /* она */
- {{0xDE, 0xDA, 0xDB}, 37}, /* окл */
- {{0xDE, 0xD3, 0xD4}, 37}, /* огд */
- {{0xE0, 0xDE, 0xD4}, 37}, /* род */
- {{0xD5, 0xDD, 0xD0}, 37}, /* ена */
- {{0xDE, 0xDD, 0xE6}, 37}, /* онц */
- {{0xDE, 0xE2, 0xDD}, 37}, /* отн */
- {{0xE1, 0xDE, 0xD3}, 37}, /* сог */
- {{0xD5, 0xD2, 0xE8}, 37}, /* евш */
- {{0xD2, 0xD8, 0xE2}, 36}, /* вит */
- {{0xD5, 0xE0, 0xDF}, 36}, /* ерп */
- {{0xDE, 0xD4, 0xD0}, 36}, /* ода */
- {{0xD5, 0xE2, 0xD5}, 36}, /* ете */
- {{0xDD, 0xD5, 0xDE}, 36}, /* нео */
- {{0xE0, 0xDF, 0xD5}, 36}, /* рпе */
- {{0xD5, 0xE0, 0xE8}, 36}, /* ерш */
- {{0xD8, 0xDC, 0xD8}, 36}, /* ими */
- {{0xD8, 0xD2, 0xE8}, 36}, /* ивш */
- {{0xEB, 0xDF, 0xDB}, 36}, /* ыпл */
- {{0xDF, 0xD5, 0xD2}, 36}, /* пев */
- {{0xD0, 0xD4, 0xD0}, 36}, /* ада */
- {{0xDC, 0xDE, 0xE1}, 35}, /* мос */
- {{0xDE, 0xD1, 0xE1}, 35}, /* обс */
- {{0xDD, 0xD5, 0xD4}, 34}, /* нед */
- {{0xD8, 0xDA, 0xDE}, 34}, /* ико */
- {{0xE9, 0xD8, 0xDC}, 34}, /* щим */
- {{0xD4, 0xD5, 0xE0}, 34}, /* дер */
- {{0xE1, 0xDA, 0xD0}, 34}, /* ска */
- {{0xDE, 0xE0, 0xDC}, 34}, /* орм */
- {{0xE3, 0xDC, 0xD5}, 34}, /* уме */
- {{0xDE, 0xDE, 0xD1}, 34}, /* ооб */
- {{0xE0, 0xD8, 0xE1}, 34}, /* рис */
- {{0xDE, 0xD1, 0xEA}, 33}, /* объ */
- {{0xDE, 0xDB, 0xE3}, 33}, /* олу */
- {{0xEA, 0xEF, 0xD2}, 33}, /* ъяв */
- {{0xE0, 0xD5, 0xDC}, 33}, /* рем */
- {{0xE9, 0xD8, 0xE5}, 33}, /* щих */
- {{0xE3, 0xEE, 0xE9}, 33}, /* ующ */
- {{0xDA, 0xD6, 0xD5}, 33}, /* кже */
- {{0xD8, 0xD4, 0xD5}, 33}, /* иде */
- {{0xD1, 0xE1, 0xE2}, 33}, /* бст */
- {{0xD0, 0xDA, 0xD6}, 33}, /* акж */
- {{0xD2, 0xE3, 0xEE}, 33}, /* вую */
- {{0xD0, 0xE1, 0xE5}, 33}, /* асх */
- {{0xD0, 0xDD, 0xD0}, 32}, /* ана */
- {{0xDD, 0xD0, 0xD4}, 32}, /* над */
- {{0xDE, 0xD1, 0xD5}, 32}, /* обе */
- {{0xEB, 0xE2, 0xDA}, 32}, /* ытк */
- {{0xED, 0xE2, 0xD8}, 32}, /* эти */
- {{0xDE, 0xD6, 0xDD}, 32}, /* ожн */
- {{0xD0, 0xE2, 0xEB}, 31}, /* аты */
- {{0xE1, 0xD4, 0xD5}, 31}, /* сде */
- {{0xD0, 0xEE, 0xE2}, 31}, /* ают */
- {{0xEF, 0xE2, 0xEC}, 31}, /* ять */
- {{0xDE, 0xEF, 0xE2}, 31}, /* оят */
- {{0xD5, 0xE2, 0xEC}, 31}, /* еть */
- {{0xD0, 0xD3, 0xD5}, 31}, /* аге */
- {{0xE7, 0xE0, 0xD5}, 31}, /* чре */
- {{0xD5, 0xDD, 0xEB}, 31}, /* ены */
- {{0xE3, 0xD1, 0xEB}, 31}, /* убы */
- {{0xD8, 0xE1, 0xE2}, 30}, /* ист */
- {{0xEF, 0xEE, 0xE2}, 30}, /* яют */
- {{0xE0, 0xEF, 0xD4}, 30}, /* ряд */
- {{0xD3, 0xDE, 0xE1}, 30}, /* гос */
- {{0xD8, 0xDC, 0xD0}, 30}, /* има */
- {{0xD7, 0xD0, 0xE1}, 30}, /* зас */
- {{0xD0, 0xEE, 0xE9}, 30}, /* ающ */
- {{0xDE, 0xD7, 0xD2}, 30}, /* озв */
- {{0xD5, 0xD4, 0xD8}, 30}, /* еди */
- {{0xDE, 0xDC, 0xD5}, 30}, /* оме */
- {{0xDD, 0xD8, 0xD9}, 30}, /* ний */
- {{0xE1, 0xE3, 0xD4}, 30}, /* суд */
- {{0xD7, 0xD4, 0xDE}, 29}, /* здо */
- {{0xE1, 0xD2, 0xD8}, 29}, /* сви */
- {{0xDE, 0xDB, 0xD8}, 29}, /* оли */
- {{0xDE, 0xD2, 0xEC}, 29}, /* овь */
- {{0xD2, 0xD8, 0xD9}, 29}, /* вий */
- {{0xD4, 0xDE, 0xE0}, 29}, /* дор */
- {{0xD4, 0xD5, 0xEF}, 29}, /* дея */
- {{0xD5, 0xEF, 0xE2}, 29}, /* еят */
- {{0xE6, 0xDE, 0xDC}, 29}, /* цом */
- {{0xD8, 0xD7, 0xD0}, 28}, /* иза */
- {{0xE1, 0xE7, 0xD5}, 28}, /* сче */
- {{0xDA, 0xE2, 0xD0}, 28}, /* кта */
- {{0xDE, 0xD4, 0xDD}, 28}, /* одн */
- {{0xD1, 0xDB, 0xD0}, 28}, /* бла */
- {{0xDE, 0xD4, 0xDB}, 28}, /* одл */
- {{0xD8, 0xE2, 0xD0}, 28}, /* ита */
- {{0xB4, 0xDE, 0xD3}, 28}, /* Дог */
- {{0xDE, 0xE1, 0xDE}, 28}, /* осо */
- {{0xDD, 0xDE, 0xE8}, 28}, /* нош */
- {{0xDA, 0xE3, 0xE0}, 28}, /* кур */
- {{0xD8, 0xDD, 0xD0}, 28}, /* ина */
- {{0xDE, 0xE8, 0xD5}, 28}, /* оше */
- {{0xDD, 0xD0, 0xDB}, 28}, /* нал */
- {{0xDD, 0xD8, 0xD7}, 27}, /* низ */
- {{0xD7, 0xD2, 0xE0}, 27}, /* звр */
- {{0xD2, 0xE0, 0xD0}, 27}, /* вра */
- {{0xDB, 0xD5, 0xE2}, 27}, /* лет */
- {{0xD5, 0xE9, 0xEC}, 27}, /* ещь */
- {{0xE0, 0xD8, 0xD4}, 27}, /* рид */
- {{0xD4, 0xDD, 0xDE}, 27}, /* дно */
- {{0xE0, 0xD8, 0xDE}, 27}, /* рио */
- {{0xDE, 0xD8, 0xDC}, 27}, /* оим */
- {{0xD5, 0xE0, 0xD6}, 27}, /* ерж */
- {{0xE3, 0xD2, 0xD5}, 26}, /* уве */
- {{0xDE, 0xDD, 0xDA}, 26}, /* онк */
- {{0xD5, 0xDB, 0xDA}, 26}, /* елк */
- {{0xDB, 0xD0, 0xD2}, 26}, /* лав */
- {{0xD0, 0xE2, 0xDE}, 26}, /* ато */
- {{0xEF, 0xDC, 0xD8}, 26}, /* ями */
- {{0xDC, 0xDC, 0xEB}, 26}, /* ммы */
- {{0xD5, 0xE1, 0xDF}, 26}, /* есп */
- {{0xDD, 0xDA, 0xE3}, 26}, /* нку */
- {{0xD8, 0xE6, 0xE3}, 25}, /* ицу */
- {{0xD4, 0xE1, 0xDA}, 25}, /* дск */
- {{0xDD, 0xD8, 0xDD}, 25}, /* нин */
- {{0xDF, 0xDB, 0xD5}, 25}, /* пле */
- {{0xE4, 0xDE, 0xE0}, 25}, /* фор */
- {{0xDB, 0xD0, 0xE1}, 25}, /* лас */
- {{0xD4, 0xD8, 0xDC}, 25}, /* дим */
- {{0xD5, 0xE1, 0xEF}, 25}, /* еся */
- {{0xDD, 0xD8, 0xE7}, 25}, /* нич */
- {{0xDE, 0xD2, 0xE0}, 25}, /* овр */
- {{0xD2, 0xE1, 0xDB}, 25}, /* всл */
- {{0xE0, 0xE8, 0xD5}, 25}, /* рше */
- {{0xD5, 0xE9, 0xD0}, 25}, /* еща */
- {{0xD6, 0xDD, 0xEB}, 25}, /* жны */
- {{0xE0, 0xD8, 0xDC}, 25}, /* рим */
- {{0xD7, 0xD0, 0xE6}, 25}, /* зац */
- {{0xD1, 0xE9, 0xD5}, 25}, /* бще */
- {{0xD0, 0xDA, 0xE2}, 25}, /* акт */
- {{0xD0, 0xD4, 0xE1}, 25}, /* адс */
- {{0xE3, 0xE7, 0xE0}, 25}, /* учр */
- {{0xE9, 0xD8, 0xD5}, 25}, /* щие */
- {{0xD6, 0xD8, 0xE2}, 24}, /* жит */
- {{0xD1, 0xE0, 0xD5}, 24}, /* бре */
- {{0xE3, 0xD3, 0xDE}, 24}, /* уго */
- {{0xD8, 0xEF, 0xE5}, 24}, /* иях */
- {{0xE2, 0xEC, 0xEE}, 24}, /* тью */
- {{0xEC, 0xE1, 0xEF}, 24}, /* ься */
- {{0xD2, 0xDE, 0xD2}, 24}, /* вов */
- {{0xDE, 0xE7, 0xDD}, 24}, /* очн */
- {{0xD2, 0xDE, 0xDE}, 24}, /* воо */
- {{0xDE, 0xD4, 0xEB}, 24}, /* оды */
- {{0xDB, 0xDE, 0xD3}, 24}, /* лог */
- {{0xD2, 0xD0, 0xD5}, 24}, /* вае */
- {{0xD0, 0xEF, 0xE5}, 24}, /* аях */
- {{0xE2, 0xEC, 0xE1}, 24}, /* тьс */
- {{0xD4, 0xD8, 0xE7}, 24}, /* дич */
- {{0xDA, 0xD8, 0xE5}, 24}, /* ких */
- {{0xE6, 0xD0, 0xDC}, 24}, /* цам */
- {{0xD8, 0xD7, 0xD2}, 24}, /* изв */
- {{0xE2, 0xD8, 0xD2}, 24}, /* тив */
- {{0xD5, 0xDE, 0xD1}, 24}, /* еоб */
- {{0xE1, 0xDE, 0xE1}, 24}, /* сос */
- {{0xE8, 0xD8, 0xDC}, 24}, /* шим */
- {{0xEB, 0xDF, 0xDE}, 24}, /* ыпо */
- {{0xD5, 0xD6, 0xD0}, 24}, /* ежа */
- {{0xE2, 0xDE, 0xD8}, 24}, /* тои */
- {{0xDA, 0xE2, 0xDE}, 24}, /* кто */
- {{0xD5, 0xE7, 0xD0}, 24}, /* еча */
- {{0xD8, 0xD4, 0xD8}, 24}, /* иди */
- {{0xD1, 0xE9, 0xD8}, 23}, /* бщи */
- {{0xE2, 0xEC, 0xD5}, 23}, /* тье */
- {{0xD1, 0xEA, 0xEF}, 23}, /* бъя */
- {{0xDD, 0xD0, 0xE7}, 23}, /* нач */
- {{0xE2, 0xD5, 0xE7}, 23}, /* теч */
- {{0xE3, 0xE0, 0xE1}, 23}, /* урс */
- {{0xD2, 0xD5, 0xE7}, 23}, /* веч */
- {{0xD5, 0xDC, 0xD5}, 23}, /* еме */
- {{0xDE, 0xD1, 0xE5}, 23}, /* обх */
- {{0xD1, 0xE5, 0xDE}, 23}, /* бхо */
- {{0xD4, 0xD0, 0xD5}, 23}, /* дае */
- {{0xE0, 0xD5, 0xD7}, 23}, /* рез */
- {{0xDA, 0xD0, 0xD6}, 22}, /* каж */
- {{0xDE, 0xDA, 0xE3}, 22}, /* оку */
- {{0xD0, 0xDC, 0xD5}, 22}, /* аме */
- {{0xDD, 0xD5, 0xD7}, 22}, /* нез */
- {{0xEB, 0xD2, 0xD0}, 22}, /* ыва */
- {{0xE1, 0xD2, 0xEF}, 22}, /* свя */
- {{0xE0, 0xD0, 0xD4}, 22}, /* рад */
- {{0xD5, 0xD7, 0xD0}, 22}, /* еза */
- {{0xD8, 0xD2, 0xD0}, 22}, /* ива */
- {{0xDA, 0xD0, 0xDC}, 22}, /* кам */
- {{0xDD, 0xD5, 0xDC}, 22}, /* нем */
- {{0xE2, 0xDA, 0xDE}, 22}, /* тко */
- {{0xD7, 0xD2, 0xD5}, 22}, /* зве */
- {{0xD2, 0xEF, 0xD7}, 22}, /* вяз */
- {{0xEF, 0xE2, 0xD8}, 22}, /* яти */
- {{0xDE, 0xE5, 0xE0}, 22}, /* охр */
- {{0xE0, 0xDE, 0xE2}, 22}, /* рот */
- {{0xDE, 0xDB, 0xD5}, 22}, /* оле */
- {{0xD1, 0xE0, 0xD0}, 22}, /* бра */
- {{0xD0, 0xD5, 0xDC}, 22}, /* аем */
- {{0xDB, 0xD0, 0xE8}, 21}, /* лаш */
- {{0xD8, 0xD7, 0xDC}, 21}, /* изм */
- {{0xD3, 0xE3, 0xE2}, 21}, /* гут */
- {{0xDE, 0xD6, 0xD4}, 21}, /* ожд */
- {{0xDA, 0xD0, 0xDA}, 21}, /* как */
- {{0xDA, 0xD0, 0xE7}, 21}, /* кач */
- {{0xDD, 0xD0, 0xDC}, 21}, /* нам */
- {{0xD4, 0xDE, 0xE5}, 21}, /* дох */
- {{0xDE, 0xE5, 0xDE}, 21}, /* охо */
- {{0xEE, 0xE0, 0xD8}, 21}, /* юри */
- {{0xD2, 0xD0, 0xDC}, 21}, /* вам */
- {{0xD7, 0xDC, 0xDE}, 21}, /* змо */
- {{0xD4, 0xDA, 0xD5}, 21}, /* дке */
- {{0xD1, 0xD0, 0xDD}, 21}, /* бан */
- {{0xD5, 0xDB, 0xD8}, 21}, /* ели */
- {{0xE0, 0xD8, 0xD7}, 21}, /* риз */
- {{0xDB, 0xDD, 0xDE}, 21}, /* лно */
- {{0xD2, 0xEB, 0xE8}, 21}, /* выш */
- {{0xD4, 0xE6, 0xD0}, 21}, /* дца */
- {{0xEF, 0xD4, 0xDA}, 21}, /* ядк */
- {{0xDE, 0xE2, 0xE1}, 21}, /* отс */
- {{0xE2, 0xD5, 0xD9}, 21}, /* тей */
- {{0xD0, 0xDD, 0xDA}, 21}, /* анк */
- {{0xDD, 0xD5, 0xD3}, 21}, /* нег */
- {{0xE6, 0xD0, 0xE2}, 21}, /* цат */
- {{0xD5, 0xDC, 0xEB}, 21}, /* емы */
- {{0xD2, 0xDE, 0xD5}, 21}, /* вое */
- {{0xD4, 0xD0, 0xE7}, 21}, /* дач */
- {{0xDE, 0xD3, 0xE3}, 21}, /* огу */
- {{0xDB, 0xD6, 0xD5}, 21}, /* лже */
- {{0xE2, 0xDD, 0xD8}, 21}, /* тни */
- {{0xD7, 0xD0, 0xD2}, 21}, /* зав */
- {{0xD2, 0xD5, 0xE1}, 21}, /* вес */
- {{0xE1, 0xD0, 0xDC}, 20}, /* сам */
- {{0xD0, 0xE0, 0xDD}, 20}, /* арн */
- {{0xE7, 0xDD, 0xEB}, 20}, /* чны */
- {{0xE1, 0xE0, 0xD5}, 20}, /* сре */
- {{0xE2, 0xD8, 0xEF}, 20}, /* тия */
- {{0xD8, 0xE1, 0xDB}, 20}, /* исл */
- {{0xC1, 0xE2, 0xE0}, 20}, /* Стр */
- {{0xDD, 0xE2, 0xDE}, 20}, /* нто */
- {{0xE3, 0xE2, 0xE0}, 20}, /* утр */
- {{0xD0, 0xE8, 0xD5}, 20}, /* аше */
- {{0xD5, 0xDB, 0xD0}, 20}, /* ела */
- {{0xE3, 0xD4, 0xDE}, 20}, /* удо */
- {{0xD6, 0xD8, 0xD7}, 19}, /* жиз */
- {{0xDF, 0xD8, 0xE1}, 19}, /* пис */
- {{0xD0, 0xD8, 0xDC}, 19}, /* аим */
- {{0xE7, 0xD8, 0xE1}, 19}, /* чис */
- {{0xD5, 0xD6, 0xD8}, 19}, /* ежи */
- {{0xD2, 0xE1, 0xD5}, 19}, /* все */
- {{0xDB, 0xEC, 0xDA}, 19}, /* льк */
- {{0xD0, 0xE2, 0xE3}, 19}, /* ату */
- {{0xE3, 0xD4, 0xD0}, 19}, /* уда */
- {{0xE8, 0xD8, 0xD9}, 19}, /* ший */
- {{0xD7, 0xD0, 0xE0}, 19}, /* зар */
- {{0xD5, 0xD4, 0xDD}, 19}, /* едн */
- {{0xD0, 0xD2, 0xE8}, 19}, /* авш */
- {{0xE0, 0xDE, 0xD8}, 19}, /* рои */
- {{0xD8, 0xD4, 0xD0}, 19}, /* ида */
- {{0xD0, 0xE0, 0xDE}, 19}, /* аро */
- {{0xE2, 0xDE, 0xD9}, 19}, /* той */
- {{0xD6, 0xD0, 0xE9}, 19}, /* жащ */
- {{0xD5, 0xE1, 0xDE}, 19}, /* есо */
- {{0xDF, 0xD0, 0xDB}, 19}, /* пал */
- {{0xE9, 0xD0, 0xD5}, 19}, /* щае */
- {{0xE0, 0xEB, 0xD5}, 19}, /* рые */
- {{0xD5, 0xDD, 0xEF}, 19}, /* еня */
- {{0xE9, 0xD8, 0xD9}, 19}, /* щий */
- {{0xDB, 0xE3, 0xD3}, 19}, /* луг */
- {{0xEE, 0xE7, 0xD8}, 18}, /* ючи */
- {{0xE3, 0xDB, 0xEC}, 18}, /* уль */
- {{0xDC, 0xEB, 0xE5}, 18}, /* мых */
- {{0xE0, 0xDE, 0xD3}, 18}, /* рог */
- {{0xE1, 0xDE, 0xE5}, 18}, /* сох */
- {{0xDA, 0xDE, 0xD5}, 18}, /* кое */
- {{0xDD, 0xE2, 0xE1}, 18}, /* нтс */
- {{0xD0, 0xD7, 0xDD}, 18}, /* азн */
- {{0xE2, 0xDD, 0xEB}, 18}, /* тны */
- {{0xDE, 0xD4, 0xEF}, 18}, /* одя */
- {{0xDE, 0xD1, 0xDD}, 18}, /* обн */
- {{0xD2, 0xEB, 0xD4}, 18}, /* выд */
- {{0xDE, 0xE1, 0xEF}, 18}, /* ося */
- {{0xEC, 0xE2, 0xD0}, 18}, /* ьта */
- {{0xDD, 0xEF, 0xEE}, 18}, /* няю */
- {{0xDD, 0xD0, 0xE0}, 18}, /* нар */
- {{0xD5, 0xD7, 0xE3}, 18}, /* езу */
- {{0xD0, 0xE1, 0xDD}, 18}, /* асн */
- {{0xD7, 0xE3, 0xDB}, 18}, /* зул */
- {{0xE6, 0xD8, 0xDF}, 18}, /* цип */
- {{0xDA, 0xE2, 0xD5}, 18}, /* кте */
- {{0xD4, 0xDE, 0xDF}, 18}, /* доп */
- {{0xDD, 0xE6, 0xD8}, 18}, /* нци */
- {{0xE1, 0xDF, 0xD5}, 18}, /* спе */
- {{0xD8, 0xDC, 0xEB}, 18}, /* имы */
- {{0xDC, 0xDE, 0xDC}, 18}, /* мом */
- {{0xDF, 0xD5, 0xE7}, 18}, /* печ */
- {{0xBE, 0xD1, 0xEF}, 18}, /* Обя */
- {{0xBF, 0xE0, 0xD0}, 18}, /* Пра */
- {{0xDE, 0xDB, 0xDE}, 18}, /* оло */
- {{0xE2, 0xE1, 0xDA}, 18}, /* тск */
- {{0xDB, 0xDD, 0xD8}, 18}, /* лни */
- {{0xD5, 0xE0, 0xE2}, 18}, /* ерт */
- {{0xD8, 0xE1, 0xEC}, 18}, /* ись */
- {{0xDB, 0xEC, 0xE2}, 18}, /* льт */
- {{0xE1, 0xE3, 0xE2}, 18}, /* сут */
- {{0xD2, 0xDE, 0xD1}, 17}, /* воб */
- {{0xE0, 0xDD, 0xEB}, 17}, /* рны */
- {{0xD1, 0xDD, 0xEB}, 17}, /* бны */
- {{0xEB, 0xD4, 0xD0}, 17}, /* ыда */
- {{0xEC, 0xD7, 0xE3}, 17}, /* ьзу */
- {{0xD5, 0xD4, 0xDF}, 17}, /* едп */
- {{0xD0, 0xD4, 0xD5}, 17}, /* аде */
- {{0xD8, 0xDF, 0xD0}, 17}, /* ипа */
- {{0xE1, 0xD5, 0xD9}, 17}, /* сей */
- {{0xD5, 0xD5, 0xE1}, 17}, /* еес */
- {{0xDE, 0xD8, 0xD7}, 17}, /* оиз */
- {{0xDE, 0xE1, 0xD2}, 17}, /* осв */
- {{0xD4, 0xD8, 0xD2}, 17}, /* див */
- {{0xDD, 0xD0, 0xDD}, 17}, /* нан */
- {{0xD5, 0xE2, 0xD0}, 17}, /* ета */
- {{0xD4, 0xDD, 0xD5}, 17}, /* дне */
- {{0xD8, 0xDE, 0xD1}, 17}, /* иоб */
- {{0xE3, 0xD5, 0xE2}, 17}, /* ует */
- {{0xDD, 0xD0, 0xE5}, 17}, /* нах */
- {{0xE1, 0xDC, 0xD5}, 17}, /* сме */
- {{0xD0, 0xDB, 0xD8}, 17}, /* али */
- {{0xD1, 0xEA, 0xD5}, 17}, /* бъе */
- {{0xDF, 0xD0, 0xE1}, 17}, /* пас */
- {{0xD7, 0xD0, 0xDB}, 17}, /* зал */
- {{0xE0, 0xD6, 0xD0}, 16}, /* ржа */
- {{0xEF, 0xD2, 0xD8}, 16}, /* яви */
- {{0xD6, 0xD0, 0xE2}, 16}, /* жат */
- {{0xD1, 0xDE, 0xD6}, 16}, /* бож */
- {{0xE1, 0xD8, 0xDB}, 16}, /* сил */
- {{0xDD, 0xE3, 0xEE}, 16}, /* ную */
- {{0xDF, 0xD5, 0xDD}, 16}, /* пен */
- {{0xDC, 0xD0, 0xE2}, 16}, /* мат */
- {{0xDE, 0xDD, 0xDD}, 16}, /* онн */
- {{0xD2, 0xD8, 0xDD}, 16}, /* вин */
- {{0xE2, 0xDA, 0xD8}, 16}, /* тки */
- {{0xE2, 0xDE, 0xE7}, 16}, /* точ */
- {{0xE1, 0xE7, 0xD8}, 16}, /* счи */
- {{0xDD, 0xD8, 0xE6}, 16}, /* ниц */
- {{0xE9, 0xD5, 0xD5}, 16}, /* щее */
- {{0xD1, 0xD5, 0xE1}, 16}, /* бес */
- {{0xD0, 0xD4, 0xE6}, 16}, /* адц */
- {{0xBA, 0xDE, 0xDC}, 16}, /* Ком */
- {{0xEC, 0xD8, 0xDC}, 16}, /* ьим */
- {{0xE3, 0xE2, 0xE1}, 16}, /* утс */
- {{0xD0, 0xE7, 0xD8}, 16}, /* ачи */
- {{0xDF, 0xDE, 0xDD}, 16}, /* пон */
- {{0xDA, 0xD0, 0xD5}, 16}, /* кае */
- {{0xD8, 0xD3, 0xE0}, 16}, /* игр */
- {{0xD0, 0xDA, 0xD8}, 16}, /* аки */
- {{0xD0, 0xE9, 0xD8}, 16}, /* ащи */
- {{0xDB, 0xEC, 0xE6}, 16}, /* льц */
- {{0xD2, 0xDD, 0xDE}, 16}, /* вно */
- {{0xEB, 0xE8, 0xD5}, 15}, /* ыше */
- {{0xBB, 0xD8, 0xE6}, 15}, /* Лиц */
- {{0xEC, 0xD5, 0xD9}, 15}, /* ьей */
- {{0xE8, 0xD5, 0xDC}, 15}, /* шем */
- {{0xE3, 0xD1, 0xDB}, 15}, /* убл */
- {{0xE0, 0xD0, 0xE6}, 15}, /* рац */
- {{0xDA, 0xE3, 0xDC}, 15}, /* кум */
- {{0xE0, 0xD5, 0xD3}, 15}, /* рег */
- {{0xDE, 0xDF, 0xD0}, 15}, /* опа */
- {{0xB2, 0xDE, 0xD7}, 15}, /* Воз */
- {{0xE2, 0xD0, 0xD5}, 15}, /* тае */
- {{0xDE, 0xD1, 0xEB}, 15}, /* обы */
- {{0xD1, 0xDB, 0xD8}, 15}, /* бли */
- {{0xE0, 0xDC, 0xD5}, 15}, /* рме */
- {{0xD2, 0xDE, 0xE1}, 15}, /* вос */
- {{0xD0, 0xE1, 0xD8}, 15}, /* аси */
- {{0xE2, 0xD0, 0xDC}, 15}, /* там */
- {{0xEC, 0xDC, 0xD5}, 15}, /* ьме */
- {{0xDE, 0xD3, 0xD0}, 15}, /* ога */
- {{0xD8, 0xDB, 0xDE}, 15}, /* ило */
- {{0xE1, 0xEC, 0xDC}, 15}, /* сьм */
- {{0xE0, 0xE2, 0xD8}, 15}, /* рти */
- {{0xE2, 0xE1, 0xE3}, 15}, /* тсу */
- {{0xE1, 0xD5, 0xDD}, 15}, /* сен */
- {{0xE2, 0xD0, 0xDB}, 15}, /* тал */
- {{0xD4, 0xD0, 0xE0}, 15}, /* дар */
- {{0xD0, 0xDC, 0xDE}, 15}, /* амо */
- {{0xD5, 0xD4, 0xDB}, 15}, /* едл */
- {{0xE1, 0xE3, 0xD1}, 15}, /* суб */
- {{0xD5, 0xD9, 0xE4}, 15}, /* ейф */
- {{0xC5, 0xE0, 0xD0}, 15}, /* Хра */
- {{0xDB, 0xD0, 0xDC}, 14}, /* лам */
- {{0xD0, 0xE0, 0xE3}, 14}, /* ару */
- {{0xD3, 0xD8, 0xE5}, 14}, /* гих */
- {{0xE6, 0xD8, 0xEF}, 14}, /* ция */
- {{0xD4, 0xD0, 0xD2}, 14}, /* дав */
- {{0xDB, 0xD8, 0xE8}, 14}, /* лиш */
- {{0xEE, 0xE7, 0xD0}, 14}, /* юча */
- {{0xD0, 0xDD, 0xE1}, 14}, /* анс */
- {{0xDE, 0xD3, 0xE0}, 14}, /* огр */
- {{0xD8, 0xE9, 0xD0}, 14}, /* ища */
- {{0xD5, 0xDD, 0xEC}, 14}, /* ень */
- {{0xDE, 0xE2, 0xD8}, 14}, /* оти */
- {{0xD0, 0xD4, 0xEB}, 13}, /* ады */
- {{0xD0, 0xE9, 0xD0}, 13}, /* аща */
- {{0xD2, 0xDE, 0xD8}, 13}, /* вои */
- {{0xD2, 0xEB, 0xDC}, 13}, /* вым */
- {{0xD2, 0xEC, 0xEF}, 13}, /* вья */
- {{0xDA, 0xD8, 0xD5}, 13}, /* кие */
- {{0xDB, 0xD8, 0xE1}, 13}, /* лис */
- {{0xDC, 0xD5, 0xD4}, 13}, /* мед */
- {{0xE2, 0xD8, 0xE5}, 13}, /* тих */
- {{0xD5, 0xE2, 0xDE}, 13}, /* ето */
- {{0xD7, 0xDB, 0xDE}, 13}, /* зло */
- {{0xDE, 0xDF, 0xD5}, 13}, /* опе */
- {{0xE1, 0xD8, 0xDC}, 13}, /* сим */
- {{0xEF, 0xD7, 0xD8}, 13}, /* язи */
- {{0xD8, 0xDD, 0xD4}, 13}, /* инд */
- {{0xE7, 0xE3, 0xD6}, 13}, /* чуж */
- {{0xDB, 0xDA, 0xD8}, 13}, /* лки */
- {{0xD4, 0xDF, 0xE0}, 13}, /* дпр */
- {{0xDD, 0xD4, 0xD8}, 13}, /* нди */
- {{0xDE, 0xE2, 0xD0}, 13}, /* ота */
- {{0xDE, 0xE2, 0xEB}, 13}, /* оты */
- {{0xDB, 0xD0, 0xE7}, 13}, /* лач */
- {{0xDA, 0xD8, 0xDC}, 13}, /* ким */
- {{0xD8, 0xE1, 0xD8}, 13}, /* иси */
- {{0xD2, 0xD0, 0xDB}, 13}, /* вал */
- {{0xD5, 0xDC, 0xDE}, 13}, /* емо */
- {{0xDF, 0xE3, 0xD1}, 13}, /* пуб */
- {{0xEF, 0xD5, 0xDC}, 13}, /* яем */
- {{0xD1, 0xDE, 0xDB}, 13}, /* бол */
- {{0xDD, 0xE2, 0xE3}, 13}, /* нту */
- {{0xDD, 0xD5, 0xD9}, 13}, /* ней */
- {{0xDD, 0xD0, 0xEF}, 13}, /* ная */
- {{0xD5, 0xE1, 0xD0}, 13}, /* еса */
- {{0xE0, 0xDD, 0xDE}, 13}, /* рно */
- {{0xE9, 0xD5, 0xDC}, 13}, /* щем */
- {{0xD0, 0xDD, 0xEB}, 13}, /* аны */
- {{0xB4, 0xDE, 0xD2}, 13}, /* Дов */
- {{0xE7, 0xD8, 0xD2}, 13}, /* чив */
- {{0xD2, 0xD8, 0xE1}, 13}, /* вис */
- {{0xDE, 0xDF, 0xDE}, 13}, /* опо */
- {{0xD2, 0xEC, 0xEE}, 13}, /* вью */
- {{0xD0, 0xDB, 0xD0}, 13}, /* ала */
- {{0xDB, 0xD5, 0xD9}, 12}, /* лей */
- {{0xD0, 0xE7, 0xD0}, 12}, /* ача */
- {{0xD5, 0xD7, 0xD2}, 12}, /* езв */
- {{0xD2, 0xD0, 0xEF}, 12}, /* вая */
- {{0xD5, 0xDE, 0xE1}, 12}, /* еос */
- {{0xEF, 0xE9, 0xD8}, 12}, /* ящи */
- {{0xD8, 0xD2, 0xD8}, 12}, /* иви */
- {{0xDD, 0xD5, 0xD5}, 12}, /* нее */
- {{0xE2, 0xE0, 0xE3}, 12}, /* тру */
- {{0xE8, 0xD5, 0xD5}, 12}, /* шее */
- {{0xE1, 0xD0, 0xE5}, 12}, /* сах */
- {{0xD8, 0xDD, 0xE6}, 12}, /* инц */
- {{0xDE, 0xDC, 0xDF}, 12}, /* омп */
- {{0xE3, 0xD6, 0xDE}, 12}, /* ужо */
- {{0xE3, 0xD0, 0xDB}, 12}, /* уал */
- {{0xDD, 0xD0, 0xE2}, 12}, /* нат */
- {{0xD8, 0xD4, 0xE3}, 12}, /* иду */
- {{0xD2, 0xDB, 0xD0}, 12}, /* вла */
- {{0xD7, 0xD2, 0xD0}, 12}, /* зва */
- {{0xDB, 0xD5, 0xD5}, 12}, /* лее */
- {{0xE0, 0xD5, 0xE5}, 12}, /* рех */
- {{0xD6, 0xD4, 0xE3}, 12}, /* жду */
- {{0xDC, 0xD0, 0xDB}, 12}, /* мал */
- {{0xD5, 0xDD, 0xE1}, 12}, /* енс */
- {{0xD8, 0xD9, 0xE1}, 12}, /* ийс */
- {{0xDA, 0xDE, 0xDB}, 12}, /* кол */
- {{0xDD, 0xD0, 0xD7}, 12}, /* наз */
- {{0xD4, 0xE3, 0xD0}, 12}, /* дуа */
- {{0xDE, 0xDD, 0xD8}, 12}, /* они */
- {{0xE1, 0xD5, 0xDC}, 12}, /* сем */
- {{0xD3, 0xDE, 0xD4}, 12}, /* год */
- {{0xDC, 0xD5, 0xD6}, 12}, /* меж */
- {{0xDE, 0xD7, 0xDB}, 12}, /* озл */
- {{0xD2, 0xDC, 0xD5}, 12}, /* вме */
- {{0xE3, 0xD4, 0xD5}, 12}, /* уде */
- {{0xEC, 0xDA, 0xDE}, 12}, /* ько */
- {{0xD5, 0xD2, 0xEB}, 12}, /* евы */
- {{0xD7, 0xD0, 0xDC}, 12}, /* зам */
- {{0xE1, 0xDE, 0xD4}, 12}, /* сод */
- {{0xE0, 0xDE, 0xD5}, 11}, /* рое */
- {{0xDE, 0xE2, 0xD4}, 11}, /* отд */
- {{0xE1, 0xD8, 0xEF}, 11}, /* сия */
- {{0xD8, 0xDA, 0xE3}, 11}, /* ику */
- {{0xEB, 0xDB, 0xD8}, 11}, /* ыли */
- {{0xD3, 0xD8, 0xDC}, 11}, /* гим */
- {{0xDD, 0xEC, 0xE8}, 11}, /* ньш */
- {{0xE2, 0xD8, 0xE7}, 11}, /* тич */
- {{0xE0, 0xD0, 0xDB}, 11}, /* рал */
- {{0xE3, 0xE7, 0xD8}, 11}, /* учи */
- {{0xDC, 0xD5, 0xEE}, 11}, /* мею */
- {{0xE2, 0xD5, 0xDA}, 11}, /* тек */
- {{0xDE, 0xD1, 0xE3}, 11}, /* обу */
- {{0xDD, 0xDD, 0xE3}, 11}, /* нну */
- {{0xDD, 0xD5, 0xDF}, 11}, /* неп */
- {{0xD2, 0xD5, 0xDB}, 11}, /* вел */
- {{0xE2, 0xDC, 0xD5}, 11}, /* тме */
- {{0xD1, 0xDE, 0xD3}, 11}, /* бог */
- {{0xDE, 0xE0, 0xD8}, 11}, /* ори */
- {{0xD0, 0xD2, 0xDD}, 11}, /* авн */
- {{0xD4, 0xD5, 0xD5}, 11}, /* дее */
- {{0xD6, 0xDE, 0xDC}, 11}, /* жом */
- {{0xB2, 0xE0, 0xD5}, 11}, /* Вре */
- {{0xDC, 0xEB, 0xD5}, 11}, /* мые */
- {{0xEC, 0xE6, 0xD0}, 11}, /* ьца */
- {{0xDE, 0xE6, 0xD5}, 11}, /* оце */
- {{0xD8, 0xE2, 0xEB}, 10}, /* иты */
- {{0xD7, 0xE0, 0xD0}, 10}, /* зра */
- {{0xDE, 0xDD, 0xEB}, 10}, /* оны */
- {{0xE0, 0xD5, 0xE8}, 10}, /* реш */
- {{0xE3, 0xE8, 0xD5}, 10}, /* уше */
- {{0xE0, 0xD5, 0xD2}, 10}, /* рев */
- {{0xDE, 0xDF, 0xE3}, 10}, /* опу */
- {{0xEF, 0xE2, 0xEB}, 10}, /* яты */
- {{0xE2, 0xD0, 0xE7}, 10}, /* тач */
- {{0xD5, 0xE0, 0xDE}, 10}, /* еро */
- {{0xD2, 0xDA, 0xDB}, 10}, /* вкл */
- {{0xD7, 0xEB, 0xD2}, 10}, /* зыв */
- {{0xD0, 0xDF, 0xE0}, 10}, /* апр */
- {{0xE0, 0xE3, 0xE8}, 10}, /* руш */
- {{0xBE, 0xE2, 0xD2}, 10}, /* Отв */
- {{0xE0, 0xE1, 0xD0}, 10}, /* рса */
- {{0xD5, 0xDA, 0xE2}, 10}, /* ект */
- {{0xDB, 0xD5, 0xDA}, 10}, /* лек */
- {{0xD5, 0xD5, 0xE2}, 10}, /* еет */
- {{0xDE, 0xDF, 0xDB}, 10}, /* опл */
- {{0xE2, 0xE7, 0xD5}, 10}, /* тче */
- {{0xD3, 0xDE, 0xDC}, 10}, /* гом */
- {{0xE2, 0xDE, 0xD6}, 10}, /* тож */
- {{0xDB, 0xD5, 0xE7}, 10}, /* леч */
- {{0xD5, 0xE2, 0xEB}, 10}, /* еты */
- {{0xDE, 0xD6, 0xD8}, 10}, /* ожи */
- {{0xDC, 0xDD, 0xDE}, 10}, /* мно */
- {{0xDC, 0xDE, 0xD9}, 10}, /* мой */
- {{0xE6, 0xD5, 0xDB}, 10}, /* цел */
- {{0xE3, 0xDF, 0xD8}, 10}, /* упи */
- {{0xD0, 0xD5, 0xD2}, 10}, /* аев */
- {{0xDF, 0xDE, 0xDC}, 10}, /* пом */
- {{0xD4, 0xEF, 0xE9}, 10}, /* дящ */
- {{0xE2, 0xE0, 0xD8}, 10}, /* три */
- {{0xE8, 0xD8, 0xD5}, 10}, /* шие */
- {{0xD5, 0xDA, 0xD0}, 10}, /* ека */
- {{0xD5, 0xE8, 0xD5}, 10}, /* еше */
- {{0xD7, 0xD0, 0xD8}, 10}, /* заи */
- {{0xD8, 0xE2, 0xDE}, 10}, /* ито */
- {{0xD7, 0xDD, 0xEB}, 10}, /* зны */
- {{0xDE, 0xEF, 0xDD}, 10}, /* оян */
- {{0xD8, 0xD6, 0xD5}, 10}, /* иже */
- {{0xD2, 0xDD, 0xD5}, 10}, /* вне */
- {{0xE0, 0xE1, 0xE2}, 10}, /* рст */
- {{0xD5, 0xDC, 0xEF}, 10}, /* емя */
- {{0xDD, 0xD0, 0xD8}, 10}, /* наи */
- {{0xE2, 0xDE, 0xDB}, 10}, /* тол */
- {{0xDB, 0xD8, 0xE2}, 10}, /* лит */
- {{0xDE, 0xE1, 0xE0}, 10}, /* оср */
- {{0xE2, 0xD4, 0xD5}, 10}, /* тде */
- {{0xD5, 0xDC, 0xD8}, 10}, /* еми */
- {{0xDC, 0xD5, 0xD5}, 10}, /* мее */
- {{0xE0, 0xEB, 0xE5}, 10}, /* рых */
- {{0xDD, 0xD8, 0xD2}, 10}, /* нив */
- {{0xD5, 0xE0, 0xE3}, 10}, /* еру */
- {{0xE7, 0xD5, 0xDC}, 10}, /* чем */
- {{0xD4, 0xDE, 0xD1}, 10}, /* доб */
- {{0xD5, 0xDB, 0xDE}, 10}, /* ело */
- {{0xD8, 0xDB, 0xE3}, 10}, /* илу */
- {{0xD0, 0xD4, 0xDB}, 10}, /* адл */
- {{0xD8, 0xE7, 0xE2}, 10}, /* ичт */
- {{0xDC, 0xDB, 0xD5}, 10}, /* мле */
-};
-
-static const myhtml_encoding_trigram_t myhtml_encoding_detect_trigrams_index_koi8_r[] = {
- {{0xC5, 0xCE, 0xC9}, 991}, /* ени */
- {{0xCF, 0xC7, 0xCF}, 806}, /* ого */
- {{0xD3, 0xD4, 0xD7}, 659}, /* ств */
- {{0xCE, 0xC9, 0xD1}, 629}, /* ния */
- {{0xCF, 0xD7, 0xC1}, 566}, /* ова */
- {{0xD4, 0xC5, 0xCC}, 555}, /* тел */
- {{0xD2, 0xC5, 0xC4}, 507}, /* ред */
- {{0xC5, 0xCE, 0xCE}, 499}, /* енн */
- {{0xCF, 0xD7, 0xCF}, 443}, /* ово */
- {{0xC1, 0xCE, 0xC9}, 443}, /* ани */
- {{0xD4, 0xD2, 0xC1}, 429}, /* тра */
- {{0xCF, 0xD3, 0xD4}, 428}, /* ост */
- {{0xCE, 0xC9, 0xC5}, 419}, /* ние */
- {{0xCE, 0xCE, 0xCF}, 412}, /* нно */
- {{0xC1, 0xC8, 0xCF}, 396}, /* ахо */
- {{0xD3, 0xD4, 0xD2}, 392}, /* стр */
- {{0xD2, 0xC1, 0xC8}, 386}, /* рах */
- {{0xC8, 0xCF, 0xD7}, 379}, /* хов */
- {{0xC5, 0xCC, 0xD8}, 365}, /* ель */
- {{0xC7, 0xCF, 0xD7}, 360}, /* гов */
- {{0xD7, 0xCF, 0xD2}, 356}, /* вор */
- {{0xC5, 0xD3, 0xD4}, 349}, /* ест */
- {{0xC1, 0xD4, 0xD8}, 345}, /* ать */
- {{0xD2, 0xC1, 0xD7}, 337}, /* рав */
- {{0xD0, 0xD2, 0xC9}, 330}, /* при */
- {{0xD0, 0xD2, 0xC5}, 323}, /* пре */
- {{0xC4, 0xCF, 0xC7}, 318}, /* дог */
- {{0xCE, 0xC5, 0xCE}, 310}, /* нен */
- {{0xD0, 0xD2, 0xC1}, 309}, /* пра */
- {{0xD7, 0xC1, 0xCE}, 304}, /* ван */
- {{0xC9, 0xD4, 0xC5}, 295}, /* ите */
- {{0xD4, 0xD7, 0xC5}, 281}, /* тве */
- {{0xCC, 0xC5, 0xCE}, 266}, /* лен */
- {{0xD3, 0xD4, 0xCF}, 261}, /* сто */
- {{0xD4, 0xC1, 0xD4}, 260}, /* тат */
- {{0xCE, 0xCE, 0xD9}, 260}, /* нны */
- {{0xCC, 0xD8, 0xCE}, 256}, /* льн */
- {{0xD7, 0xCF, 0xDA}, 255}, /* воз */
- {{0xC9, 0xCC, 0xC9}, 254}, /* или */
- {{0xC1, 0xD4, 0xC5}, 252}, /* ате */
- {{0xC5, 0xC7, 0xCF}, 241}, /* его */
- {{0xC5, 0xD4, 0xD3}, 238}, /* етс */
- {{0xCE, 0xCF, 0xD3}, 236}, /* нос */
- {{0xDD, 0xC5, 0xD3}, 235}, /* щес */
- {{0xD0, 0xCF, 0xCC}, 232}, /* пол */
- {{0xD2, 0xC1, 0xCE}, 231}, /* ран */
- {{0xCE, 0xCF, 0xC7}, 230}, /* ног */
- {{0xD3, 0xD4, 0xC1}, 229}, /* ста */
- {{0xDE, 0xC5, 0xCE}, 226}, /* чен */
- {{0xD4, 0xD2, 0xC5}, 224}, /* тре */
- {{0xDA, 0xCD, 0xC5}, 214}, /* зме */
- {{0xD5, 0xDD, 0xC5}, 212}, /* уще */
- {{0xD3, 0xD4, 0xC9}, 210}, /* сти */
- {{0xCB, 0xCF, 0xCD}, 207}, /* ком */
- {{0xCF, 0xD2, 0xCF}, 206}, /* оро */
- {{0xD7, 0xCC, 0xC5}, 195}, /* вле */
- {{0xDA, 0xC1, 0xCE}, 194}, /* зан */
- {{0xC1, 0xD3, 0xD4}, 193}, /* аст */
- {{0xD4, 0xD3, 0xD1}, 191}, /* тся */
- {{0xC8, 0xD2, 0xC1}, 187}, /* хра */
- {{0xC1, 0xCE, 0xCE}, 182}, /* анн */
- {{0xC5, 0xD2, 0xC5}, 182}, /* ере */
- {{0xD7, 0xD2, 0xC5}, 178}, /* вре */
- {{0xCF, 0xD7, 0xC5}, 173}, /* ове */
- {{0xD8, 0xCE, 0xCF}, 173}, /* ьно */
- {{0xD7, 0xC5, 0xD2}, 172}, /* вер */
- {{0xCD, 0xC5, 0xCE}, 170}, /* мен */
- {{0xCC, 0xC9, 0xC3}, 168}, /* лиц */
- {{0xD4, 0xCF, 0xD2}, 167}, /* тор */
- {{0xD2, 0xC5, 0xCE}, 167}, /* рен */
- {{0xDD, 0xC5, 0xCE}, 165}, /* щен */
- {{0xCF, 0xDA, 0xCD}, 164}, /* озм */
- {{0xC5, 0xC4, 0xC1}, 163}, /* еда */
- {{0xD4, 0xD7, 0xC9}, 159}, /* тви */
- {{0xD1, 0xDA, 0xC1}, 159}, /* яза */
- {{0xC2, 0xD1, 0xDA}, 158}, /* бяз */
- {{0xCE, 0xC9, 0xC9}, 153}, /* нии */
- {{0xCE, 0xD9, 0xC8}, 153}, /* ных */
- {{0xD4, 0xD8, 0xD1}, 153}, /* тья */
- {{0xCD, 0xC5, 0xD2}, 153}, /* мер */
- {{0xD3, 0xCC, 0xC9}, 150}, /* сли */
- {{0xD4, 0xCF, 0xD7}, 148}, /* тов */
- {{0xD4, 0xD7, 0xC1}, 147}, /* тва */
- {{0xCF, 0xD2, 0xC1}, 146}, /* ора */
- {{0xCE, 0xCF, 0xCD}, 144}, /* ном */
- {{0xC4, 0xC5, 0xCE}, 144}, /* ден */
- {{0xC1, 0xCE, 0xC5}, 142}, /* ане */
- {{0xCB, 0xCF, 0xCE}, 141}, /* кон */
- {{0xCC, 0xD5, 0xDE}, 141}, /* луч */
- {{0xCD, 0xD5, 0xDD}, 140}, /* мущ */
- {{0xCF, 0xC2, 0xD1}, 140}, /* обя */
- {{0xD7, 0xC1, 0xD4}, 138}, /* ват */
- {{0xD7, 0xC1, 0xD2}, 137}, /* вар */
- {{0xC5, 0xDD, 0xC5}, 137}, /* еще */
- {{0xCF, 0xD4, 0xD2}, 137}, /* отр */
- {{0xC4, 0xC5, 0xCC}, 137}, /* дел */
- {{0xCE, 0xD9, 0xCD}, 136}, /* ным */
- {{0xC9, 0xCD, 0xD5}, 136}, /* иму */
- {{0xF3, 0xD4, 0xC1}, 134}, /* Ста */
- {{0xD5, 0xDE, 0xC1}, 133}, /* уча */
- {{0xD4, 0xD3, 0xD4}, 131}, /* тст */
- {{0xC5, 0xCC, 0xD1}, 130}, /* еля */
- {{0xD3, 0xCC, 0xD5}, 130}, /* слу */
- {{0xDA, 0xC1, 0xCB}, 130}, /* зак */
- {{0xD4, 0xCF, 0xD1}, 129}, /* тоя */
- {{0xCF, 0xCD, 0xC9}, 128}, /* оми */
- {{0xCD, 0xC5, 0xDD}, 128}, /* мещ */
- {{0xC5, 0xC4, 0xD5}, 127}, /* еду */
- {{0xD7, 0xC5, 0xCE}, 127}, /* вен */
- {{0xCE, 0xCF, 0xD7}, 127}, /* нов */
- {{0xCE, 0xCF, 0xC5}, 126}, /* ное */
- {{0xCF, 0xD4, 0xD7}, 125}, /* отв */
- {{0xCB, 0xC1, 0xDA}, 125}, /* каз */
- {{0xC1, 0xC5, 0xD4}, 125}, /* ает */
- {{0xD3, 0xCB, 0xCF}, 125}, /* ско */
- {{0xC5, 0xCE, 0xD4}, 124}, /* ент */
- {{0xCD, 0xCF, 0xD4}, 123}, /* мот */
- {{0xC1, 0xD7, 0xCC}, 122}, /* авл */
- {{0xD3, 0xCD, 0xCF}, 122}, /* смо */
- {{0xC9, 0xDE, 0xC9}, 121}, /* ичи */
- {{0xC2, 0xD9, 0xD4}, 120}, /* быт */
- {{0xD5, 0xD3, 0xCD}, 118}, /* усм */
- {{0xD3, 0xD3, 0xC9}, 117}, /* сси */
- {{0xC4, 0xD5, 0xD3}, 117}, /* дус */
- {{0xC8, 0xCF, 0xC4}, 117}, /* ход */
- {{0xD2, 0xC9, 0xDE}, 117}, /* рич */
- {{0xDE, 0xC5, 0xD3}, 115}, /* чес */
- {{0xC7, 0xD2, 0xC1}, 114}, /* гра */
- {{0xD0, 0xD2, 0xCF}, 114}, /* про */
- {{0xC4, 0xCF, 0xD7}, 113}, /* дов */
- {{0xD7, 0xC5, 0xD4}, 112}, /* вет */
- {{0xC5, 0xC4, 0xC5}, 112}, /* еде */
- {{0xDB, 0xC5, 0xCE}, 111}, /* шен */
- {{0xDE, 0xC9, 0xCE}, 110}, /* чин */
- {{0xCE, 0xC1, 0xD3}, 109}, /* нас */
- {{0xC9, 0xD4, 0xD8}, 105}, /* ить */
- {{0xD4, 0xD7, 0xCF}, 105}, /* тво */
- {{0xCB, 0xCC, 0xC0}, 104}, /* клю */
- {{0xD2, 0xC9, 0xD4}, 104}, /* рит */
- {{0xD3, 0xD4, 0xD8}, 104}, /* сть */
- {{0xCC, 0xC0, 0xDE}, 104}, /* люч */
- {{0xD4, 0xCF, 0xCD}, 104}, /* том */
- {{0xD3, 0xCC, 0xC5}, 103}, /* сле */
- {{0xD3, 0xD0, 0xCF}, 102}, /* спо */
- {{0xCF, 0xCC, 0xCE}, 102}, /* олн */
- {{0xC5, 0xD3, 0xCC}, 102}, /* есл */
- {{0xC5, 0xD2, 0xC9}, 101}, /* ери */
- {{0xCE, 0xCF, 0xCA}, 101}, /* ной */
- {{0xD2, 0xCF, 0xCD}, 101}, /* ром */
- {{0xCF, 0xD4, 0xCF}, 99}, /* ото */
- {{0xCE, 0xD9, 0xC5}, 99}, /* ные */
- {{0xDA, 0xCE, 0xC1}, 99}, /* зна */
- {{0xD7, 0xCC, 0xD1}, 99}, /* вля */
- {{0xD4, 0xC5, 0xD2}, 98}, /* тер */
- {{0xD5, 0xD0, 0xD2}, 97}, /* упр */
- {{0xC1, 0xCB, 0xCF}, 96}, /* ако */
- {{0xCB, 0xCF, 0xC7}, 96}, /* ког */
- {{0xCE, 0xD9, 0xCA}, 96}, /* ный */
- {{0xCF, 0xD2, 0xD5}, 96}, /* ору */
- {{0xC5, 0xCC, 0xC5}, 95}, /* еле */
- {{0xC5, 0xD3, 0xCB}, 95}, /* еск */
- {{0xC1, 0xDA, 0xC1}, 95}, /* аза */
- {{0xCA, 0xD3, 0xD4}, 93}, /* йст */
- {{0xD0, 0xCF, 0xD2}, 93}, /* пор */
- {{0xCF, 0xD6, 0xC5}, 92}, /* оже */
- {{0xC9, 0xCE, 0xC5}, 91}, /* ине */
- {{0xDD, 0xC5, 0xCA}, 90}, /* щей */
- {{0xD6, 0xC4, 0xC5}, 90}, /* жде */
- {{0xD0, 0xC5, 0xD2}, 89}, /* пер */
- {{0xCE, 0xC9, 0xD4}, 89}, /* нит */
- {{0xCF, 0xCC, 0xD8}, 89}, /* оль */
- {{0xC1, 0xD6, 0xC4}, 88}, /* ажд */
- {{0xD6, 0xC5, 0xCE}, 87}, /* жен */
- {{0xCC, 0xC1, 0xC4}, 87}, /* лад */
- {{0xC1, 0xCD, 0xC9}, 87}, /* ами */
- {{0xCB, 0xCF, 0xD4}, 86}, /* кот */
- {{0xDE, 0xC1, 0xC5}, 85}, /* чае */
- {{0xD7, 0xC5, 0xDD}, 85}, /* вещ */
- {{0xD7, 0xC9, 0xD1}, 85}, /* вия */
- {{0xD1, 0xDD, 0xC5}, 85}, /* яще */
- {{0xC9, 0xC5, 0xCD}, 85}, /* ием */
- {{0xCB, 0xCC, 0xC1}, 85}, /* кла */
- {{0xC5, 0xCA, 0xD3}, 84}, /* ейс */
- {{0xD9, 0xD4, 0xD8}, 84}, /* ыть */
- {{0xC1, 0xD7, 0xCF}, 84}, /* аво */
- {{0xD2, 0xC1, 0xD6}, 83}, /* раж */
- {{0xCC, 0xD8, 0xD3}, 83}, /* льс */
- {{0xCF, 0xD1, 0xDD}, 82}, /* оящ */
- {{0xC5, 0xCE, 0xCF}, 81}, /* ено */
- {{0xC4, 0xD3, 0xD4}, 81}, /* дст */
- {{0xC4, 0xC5, 0xCA}, 80}, /* дей */
- {{0xD2, 0xC5, 0xC2}, 80}, /* реб */
- {{0xD8, 0xD3, 0xD4}, 79}, /* ьст */
- {{0xC5, 0xC4, 0xD3}, 79}, /* едс */
- {{0xC1, 0xD2, 0xC9}, 79}, /* ари */
- {{0xC4, 0xC1, 0xCE}, 79}, /* дан */
- {{0xCD, 0xCF, 0xD6}, 78}, /* мож */
- {{0xC9, 0xCD, 0xC5}, 78}, /* име */
- {{0xC9, 0xCE, 0xCF}, 78}, /* ино */
- {{0xD2, 0xC9, 0xCE}, 77}, /* рин */
- {{0xC4, 0xCF, 0xD3}, 77}, /* дос */
- {{0xD0, 0xCF, 0xD3}, 77}, /* пос */
- {{0xD4, 0xC1, 0xCB}, 77}, /* так */
- {{0xDD, 0xC5, 0xC7}, 77}, /* щег */
- {{0xC4, 0xC1, 0xD4}, 77}, /* дат */
- {{0xD0, 0xCC, 0xC1}, 76}, /* пла */
- {{0xD5, 0xD3, 0xCC}, 76}, /* усл */
- {{0xC9, 0xC3, 0xC1}, 76}, /* ица */
- {{0xD2, 0xCF, 0xD7}, 75}, /* ров */
- {{0xDC, 0xD4, 0xCF}, 75}, /* это */
- {{0xD5, 0xDE, 0xC5}, 74}, /* уче */
- {{0xC4, 0xCF, 0xCC}, 73}, /* дол */
- {{0xD8, 0xCE, 0xD9}, 73}, /* ьны */
- {{0xD2, 0xC1, 0xDA}, 73}, /* раз */
- {{0xCD, 0xC9, 0xD3}, 73}, /* мис */
- {{0xC1, 0xCE, 0xCF}, 72}, /* ано */
- {{0xD3, 0xD2, 0xCF}, 72}, /* сро */
- {{0xC1, 0xD7, 0xC9}, 72}, /* ави */
- {{0xD4, 0xD8, 0xC9}, 71}, /* тьи */
- {{0xC0, 0xDE, 0xC5}, 70}, /* юче */
- {{0xD3, 0xCB, 0xCC}, 70}, /* скл */
- {{0xC9, 0xD3, 0xD3}, 70}, /* исс */
- {{0xD6, 0xC5, 0xD4}, 69}, /* жет */
- {{0xC5, 0xC4, 0xCF}, 69}, /* едо */
- {{0xCC, 0xC5, 0xC4}, 69}, /* лед */
- {{0xCC, 0xCF, 0xD7}, 69}, /* лов */
- {{0xC0, 0xDD, 0xC9}, 68}, /* ющи */
- {{0xC9, 0xC2, 0xCF}, 68}, /* ибо */
- {{0xCC, 0xC1, 0xD4}, 67}, /* лат */
- {{0xD2, 0xCF, 0xCB}, 67}, /* рок */
- {{0xC1, 0xCB, 0xCC}, 67}, /* акл */
- {{0xD2, 0xC9, 0xDD}, 67}, /* рищ */
- {{0xC2, 0xCF, 0xD7}, 67}, /* бов */
- {{0xC9, 0xD3, 0xCB}, 67}, /* иск */
- {{0xC5, 0xC2, 0xCF}, 67}, /* ебо */
- {{0xCC, 0xD8, 0xDA}, 67}, /* льз */
- {{0xD5, 0xCB, 0xC1}, 67}, /* ука */
- {{0xCC, 0xC9, 0xC2}, 66}, /* либ */
- {{0xCF, 0xCD, 0xD5}, 66}, /* ому */
- {{0xCF, 0xD7, 0xCC}, 66}, /* овл */
- {{0xD4, 0xCE, 0xCF}, 65}, /* тно */
- {{0xD7, 0xCF, 0xCA}, 64}, /* вой */
- {{0xD4, 0xCF, 0xC7}, 64}, /* тог */
- {{0xD3, 0xCC, 0xCF}, 64}, /* сло */
- {{0xCF, 0xDA, 0xCE}, 64}, /* озн */
- {{0xD3, 0xCF, 0xCF}, 64}, /* соо */
- {{0xDA, 0xC1, 0xD4}, 63}, /* зат */
- {{0xC9, 0xD3, 0xD0}, 63}, /* исп */
- {{0xC1, 0xDE, 0xC5}, 63}, /* аче */
- {{0xCE, 0xC9, 0xC0}, 63}, /* нию */
- {{0xCF, 0xCE, 0xC5}, 63}, /* оне */
- {{0xCF, 0xCC, 0xD6}, 62}, /* олж */
- {{0xCF, 0xD7, 0xDD}, 61}, /* овщ */
- {{0xD2, 0xC1, 0xD3}, 61}, /* рас */
- {{0xD7, 0xC9, 0xC4}, 61}, /* вид */
- {{0xD7, 0xDD, 0xC9}, 61}, /* вщи */
- {{0xD3, 0xCE, 0xCF}, 61}, /* сно */
- {{0xC9, 0xC3, 0xCF}, 61}, /* ицо */
- {{0xC9, 0xDE, 0xC5}, 61}, /* иче */
- {{0xC1, 0xD7, 0xC5}, 61}, /* аве */
- {{0xC7, 0xCC, 0xC1}, 61}, /* гла */
- {{0xDE, 0xC5, 0xD4}, 61}, /* чет */
- {{0xDD, 0xC9, 0xCB}, 61}, /* щик */
- {{0xD2, 0xD5, 0xC7}, 60}, /* руг */
- {{0xD4, 0xC1, 0xCE}, 60}, /* тан */
- {{0xC9, 0xCD, 0xCF}, 60}, /* имо */
- {{0xC1, 0xCC, 0xD8}, 60}, /* аль */
- {{0xCF, 0xD7, 0xC9}, 60}, /* ови */
- {{0xD6, 0xC4, 0xC1}, 60}, /* жда */
- {{0xD0, 0xCF, 0xD7}, 60}, /* пов */
- {{0xC5, 0xCD, 0xD5}, 60}, /* ему */
- {{0xD1, 0xD4, 0xC5}, 60}, /* яте */
- {{0xD3, 0xC9, 0xC9}, 59}, /* сии */
- {{0xC2, 0xCF, 0xD4}, 59}, /* бот */
- {{0xD7, 0xD9, 0xD0}, 59}, /* вып */
- {{0xC1, 0xC2, 0xCF}, 59}, /* або */
- {{0xCC, 0xD1, 0xC0}, 59}, /* ляю */
- {{0xD3, 0xD5, 0xDD}, 58}, /* сущ */
- {{0xCF, 0xC4, 0xC5}, 58}, /* оде */
- {{0xC9, 0xCE, 0xC9}, 58}, /* ини */
- {{0xD2, 0xC1, 0xD4}, 58}, /* рат */
- {{0xD1, 0xD7, 0xCC}, 58}, /* явл */
- {{0xCE, 0xC1, 0xC7}, 57}, /* наг */
- {{0xC4, 0xD2, 0xD5}, 57}, /* дру */
- {{0xD2, 0xC1, 0xC2}, 57}, /* раб */
- {{0xC1, 0xC7, 0xD2}, 57}, /* агр */
- {{0xC9, 0xCF, 0xCE}, 57}, /* ион */
- {{0xCD, 0xC5, 0xD3}, 57}, /* мес */
- {{0xC1, 0xC3, 0xC9}, 56}, /* аци */
- {{0xCF, 0xD3, 0xD5}, 56}, /* осу */
- {{0xCB, 0xCF, 0xCA}, 55}, /* кой */
- {{0xD3, 0xD7, 0xCF}, 55}, /* сво */
- {{0xDA, 0xCF, 0xD7}, 55}, /* зов */
- {{0xCF, 0xD0, 0xD2}, 54}, /* опр */
- {{0xD3, 0xCF, 0xC2}, 54}, /* соб */
- {{0xD7, 0xD0, 0xD2}, 54}, /* впр */
- {{0xCC, 0xCE, 0xC5}, 54}, /* лне */
- {{0xCF, 0xCD, 0xCD}, 54}, /* омм */
- {{0xC5, 0xD2, 0xC1}, 54}, /* ера */
- {{0xDE, 0xC9, 0xD4}, 54}, /* чит */
- {{0xC5, 0xD2, 0xDE}, 54}, /* ерч */
- {{0xD2, 0xDE, 0xC5}, 54}, /* рче */
- {{0xC1, 0xD4, 0xC9}, 54}, /* ати */
- {{0xCE, 0xC9, 0xCB}, 54}, /* ник */
- {{0xCD, 0xCD, 0xC5}, 54}, /* мме */
- {{0xD5, 0xD3, 0xD4}, 53}, /* уст */
- {{0xD4, 0xC5, 0xCE}, 53}, /* тен */
- {{0xD7, 0xC5, 0xC4}, 53}, /* вед */
- {{0xD3, 0xCF, 0xD7}, 52}, /* сов */
- {{0xC1, 0xD6, 0xC5}, 52}, /* аже */
- {{0xCF, 0xCB, 0xC1}, 52}, /* ока */
- {{0xD9, 0xCD, 0xC9}, 52}, /* ыми */
- {{0xC0, 0xD4, 0xD3}, 52}, /* ютс */
- {{0xCF, 0xCF, 0xD4}, 52}, /* оот */
- {{0xCD, 0xC9, 0xD4}, 52}, /* мит */
- {{0xD1, 0xC0, 0xDD}, 51}, /* яющ */
- {{0xD7, 0xDB, 0xC5}, 51}, /* вше */
- {{0xD3, 0xC9, 0xCF}, 51}, /* сио */
- {{0xCF, 0xCE, 0xCF}, 51}, /* оно */
- {{0xC1, 0xD7, 0xC1}, 51}, /* ава */
- {{0xC1, 0xDD, 0xC5}, 51}, /* аще */
- {{0xCC, 0xD1, 0xC5}, 50}, /* ляе */
- {{0xC5, 0xCE, 0xC5}, 50}, /* ене */
- {{0xCF, 0xC4, 0xC9}, 50}, /* оди */
- {{0xD0, 0xD5, 0xCE}, 49}, /* пун */
- {{0xCC, 0xC9, 0xDE}, 49}, /* лич */
- {{0xD7, 0xCF, 0xCD}, 49}, /* вом */
- {{0xCE, 0xCB, 0xD4}, 49}, /* нкт */
- {{0xCE, 0xC5, 0xD3}, 49}, /* нес */
- {{0xD7, 0xC9, 0xCC}, 49}, /* вил */
- {{0xC5, 0xD6, 0xC4}, 49}, /* ежд */
- {{0xD2, 0xC5, 0xD3}, 49}, /* рес */
- {{0xC0, 0xDD, 0xC5}, 49}, /* юще */
- {{0xD8, 0xDA, 0xCF}, 49}, /* ьзо */
- {{0xD0, 0xCF, 0xD4}, 49}, /* пот */
- {{0xD5, 0xCE, 0xCB}, 49}, /* унк */
- {{0xD3, 0xD4, 0xC5}, 49}, /* сте */
- {{0xCB, 0xCF, 0xD7}, 49}, /* ков */
- {{0xCF, 0xD3, 0xCC}, 48}, /* осл */
- {{0xD1, 0xC5, 0xD4}, 48}, /* яет */
- {{0xE5, 0xD3, 0xCC}, 48}, /* Есл */
- {{0xF0, 0xD2, 0xC9}, 48}, /* При */
- {{0xD4, 0xC1, 0xD7}, 48}, /* тав */
- {{0xCE, 0xC5, 0xD2}, 48}, /* нер */
- {{0xDE, 0xCE, 0xCF}, 47}, /* чно */
- {{0xD0, 0xCF, 0xC4}, 47}, /* под */
- {{0xCE, 0xD4, 0xC1}, 47}, /* нта */
- {{0xC9, 0xDD, 0xC5}, 47}, /* ище */
- {{0xCF, 0xC2, 0xDD}, 47}, /* общ */
- {{0xC1, 0xDA, 0xCD}, 47}, /* азм */
- {{0xD6, 0xCE, 0xCF}, 47}, /* жно */
- {{0xD7, 0xC9, 0xC9}, 46}, /* вии */
- {{0xD2, 0xC1, 0xDD}, 46}, /* ращ */
- {{0xCF, 0xD2, 0xC5}, 46}, /* оре */
- {{0xD7, 0xDB, 0xC9}, 46}, /* вши */
- {{0xC5, 0xCB, 0xD3}, 46}, /* екс */
- {{0xD7, 0xCF, 0xC7}, 46}, /* вог */
- {{0xDE, 0xD4, 0xCF}, 46}, /* что */
- {{0xC9, 0xDE, 0xCE}, 45}, /* ичн */
- {{0xCC, 0xC5, 0xCD}, 45}, /* лем */
- {{0xCD, 0xCF, 0xC7}, 45}, /* мог */
- {{0xD4, 0xD7, 0xCC}, 45}, /* твл */
- {{0xC4, 0xCC, 0xC5}, 45}, /* дле */
- {{0xC4, 0xCC, 0xD1}, 45}, /* для */
- {{0xD2, 0xC5, 0xD4}, 45}, /* рет */
- {{0xC1, 0xD2, 0xC1}, 45}, /* ара */
- {{0xCE, 0xD1, 0xD4}, 44}, /* нят */
- {{0xC5, 0xDE, 0xC5}, 44}, /* ече */
- {{0xCF, 0xD4, 0xC5}, 44}, /* оте */
- {{0xCF, 0xD2, 0xD9}, 44}, /* оры */
- {{0xCF, 0xD3, 0xCE}, 43}, /* осн */
- {{0xCF, 0xC2, 0xCF}, 43}, /* обо */
- {{0xCF, 0xC7, 0xCC}, 43}, /* огл */
- {{0xC9, 0xCE, 0xD9}, 43}, /* ины */
- {{0xC5, 0xD3, 0xD3}, 43}, /* есс */
- {{0xCF, 0xC2, 0xD2}, 43}, /* обр */
- {{0xCB, 0xD2, 0xC1}, 43}, /* кра */
- {{0xC9, 0xD1, 0xCD}, 43}, /* иям */
- {{0xC1, 0xCC, 0xCF}, 43}, /* ало */
- {{0xD2, 0xD5, 0xDE}, 43}, /* руч */
- {{0xCF, 0xD2, 0xC7}, 43}, /* орг */
- {{0xDE, 0xC1, 0xD1}, 42}, /* чая */
- {{0xCE, 0xC9, 0xCD}, 42}, /* ним */
- {{0xC9, 0xDA, 0xCE}, 42}, /* изн */
- {{0xD0, 0xCF, 0xCB}, 42}, /* пок */
- {{0xD3, 0xD4, 0xD5}, 42}, /* сту */
- {{0xC5, 0xCC, 0xC0}, 42}, /* елю */
- {{0xD4, 0xC9, 0xD4}, 42}, /* тит */
- {{0xC3, 0xC5, 0xCE}, 42}, /* цен */
- {{0xDE, 0xC1, 0xD3}, 42}, /* час */
- {{0xC7, 0xC1, 0xCE}, 42}, /* ган */
- {{0xD2, 0xC7, 0xC1}, 42}, /* рга */
- {{0xD3, 0xD4, 0xCE}, 42}, /* стн */
- {{0xD2, 0xC5, 0xD6}, 42}, /* реж */
- {{0xD5, 0xCD, 0xCD}, 42}, /* умм */
- {{0xD4, 0xD7, 0xD5}, 41}, /* тву */
- {{0xD4, 0xD5, 0xD0}, 41}, /* туп */
- {{0xD3, 0xCB, 0xC9}, 40}, /* ски */
- {{0xC4, 0xC5, 0xCB}, 40}, /* дек */
- {{0xCC, 0xC5, 0xD6}, 40}, /* леж */
- {{0xC5, 0xD3, 0xC5}, 40}, /* есе */
- {{0xD7, 0xC9, 0xC5}, 40}, /* вие */
- {{0xD4, 0xCB, 0xC1}, 40}, /* тка */
- {{0xC5, 0xCB, 0xD2}, 40}, /* екр */
- {{0xCF, 0xC4, 0xCF}, 40}, /* одо */
- {{0xCB, 0xD3, 0xC1}, 40}, /* кса */
- {{0xD2, 0xC5, 0xCB}, 40}, /* рек */
- {{0xCE, 0xD4, 0xC5}, 40}, /* нте */
- {{0xD5, 0xC7, 0xC9}, 40}, /* уги */
- {{0xC2, 0xD9, 0xCC}, 40}, /* был */
- {{0xC9, 0xCE, 0xD1}, 40}, /* иня */
- {{0xC5, 0xDD, 0xC9}, 39}, /* ещи */
- {{0xC7, 0xC5, 0xCE}, 39}, /* ген */
- {{0xEB, 0xCF, 0xC4}, 39}, /* Код */
- {{0xC4, 0xC9, 0xD4}, 39}, /* дит */
- {{0xD3, 0xC8, 0xCF}, 39}, /* схо */
- {{0xC9, 0xCE, 0xD4}, 39}, /* инт */
- {{0xD3, 0xD5, 0xCD}, 39}, /* сум */
- {{0xD2, 0xCF, 0xCE}, 39}, /* рон */
- {{0xCF, 0xD4, 0xCB}, 39}, /* отк */
- {{0xC4, 0xCF, 0xCB}, 39}, /* док */
- {{0xC9, 0xCC, 0xC1}, 38}, /* ила */
- {{0xC3, 0xC5, 0xD3}, 38}, /* цес */
- {{0xC9, 0xCB, 0xC1}, 38}, /* ика */
- {{0xDA, 0xCE, 0xC9}, 38}, /* зни */
- {{0xCF, 0xD7, 0xD9}, 38}, /* овы */
- {{0xCC, 0xD6, 0xCE}, 38}, /* лжн */
- {{0xD5, 0xD0, 0xCC}, 38}, /* упл */
- {{0xC7, 0xC4, 0xC1}, 37}, /* гда */
- {{0xCC, 0xC1, 0xD6}, 37}, /* лаж */
- {{0xD6, 0xC5, 0xC4}, 37}, /* жед */
- {{0xC2, 0xC5, 0xDA}, 37}, /* без */
- {{0xC4, 0xC5, 0xD4}, 37}, /* дет */
- {{0xCF, 0xD2, 0xD1}, 37}, /* оря */
- {{0xD2, 0xCF, 0xD3}, 37}, /* рос */
- {{0xCF, 0xC2, 0xCC}, 37}, /* обл */
- {{0xC3, 0xC9, 0xC9}, 37}, /* ции */
- {{0xC4, 0xCF, 0xCD}, 37}, /* дом */
- {{0xCE, 0xC3, 0xC5}, 37}, /* нце */
- {{0xDB, 0xC5, 0xC7}, 37}, /* шег */
- {{0xCC, 0xCF, 0xD6}, 37}, /* лож */
- {{0xCF, 0xCE, 0xC1}, 37}, /* она */
- {{0xCF, 0xCB, 0xCC}, 37}, /* окл */
- {{0xCF, 0xC7, 0xC4}, 37}, /* огд */
- {{0xD2, 0xCF, 0xC4}, 37}, /* род */
- {{0xC5, 0xCE, 0xC1}, 37}, /* ена */
- {{0xCF, 0xCE, 0xC3}, 37}, /* онц */
- {{0xCF, 0xD4, 0xCE}, 37}, /* отн */
- {{0xD3, 0xCF, 0xC7}, 37}, /* сог */
- {{0xC5, 0xD7, 0xDB}, 37}, /* евш */
- {{0xD7, 0xC9, 0xD4}, 36}, /* вит */
- {{0xC5, 0xD2, 0xD0}, 36}, /* ерп */
- {{0xCF, 0xC4, 0xC1}, 36}, /* ода */
- {{0xC5, 0xD4, 0xC5}, 36}, /* ете */
- {{0xCE, 0xC5, 0xCF}, 36}, /* нео */
- {{0xD2, 0xD0, 0xC5}, 36}, /* рпе */
- {{0xC5, 0xD2, 0xDB}, 36}, /* ерш */
- {{0xC9, 0xCD, 0xC9}, 36}, /* ими */
- {{0xC9, 0xD7, 0xDB}, 36}, /* ивш */
- {{0xD9, 0xD0, 0xCC}, 36}, /* ыпл */
- {{0xD0, 0xC5, 0xD7}, 36}, /* пев */
- {{0xC1, 0xC4, 0xC1}, 36}, /* ада */
- {{0xCD, 0xCF, 0xD3}, 35}, /* мос */
- {{0xCF, 0xC2, 0xD3}, 35}, /* обс */
- {{0xCE, 0xC5, 0xC4}, 34}, /* нед */
- {{0xC9, 0xCB, 0xCF}, 34}, /* ико */
- {{0xDD, 0xC9, 0xCD}, 34}, /* щим */
- {{0xC4, 0xC5, 0xD2}, 34}, /* дер */
- {{0xD3, 0xCB, 0xC1}, 34}, /* ска */
- {{0xCF, 0xD2, 0xCD}, 34}, /* орм */
- {{0xD5, 0xCD, 0xC5}, 34}, /* уме */
- {{0xCF, 0xCF, 0xC2}, 34}, /* ооб */
- {{0xD2, 0xC9, 0xD3}, 34}, /* рис */
- {{0xCF, 0xC2, 0xDF}, 33}, /* объ */
- {{0xCF, 0xCC, 0xD5}, 33}, /* олу */
- {{0xDF, 0xD1, 0xD7}, 33}, /* ъяв */
- {{0xD2, 0xC5, 0xCD}, 33}, /* рем */
- {{0xDD, 0xC9, 0xC8}, 33}, /* щих */
- {{0xD5, 0xC0, 0xDD}, 33}, /* ующ */
- {{0xCB, 0xD6, 0xC5}, 33}, /* кже */
- {{0xC9, 0xC4, 0xC5}, 33}, /* иде */
- {{0xC2, 0xD3, 0xD4}, 33}, /* бст */
- {{0xC1, 0xCB, 0xD6}, 33}, /* акж */
- {{0xD7, 0xD5, 0xC0}, 33}, /* вую */
- {{0xC1, 0xD3, 0xC8}, 33}, /* асх */
- {{0xC1, 0xCE, 0xC1}, 32}, /* ана */
- {{0xCE, 0xC1, 0xC4}, 32}, /* над */
- {{0xCF, 0xC2, 0xC5}, 32}, /* обе */
- {{0xD9, 0xD4, 0xCB}, 32}, /* ытк */
- {{0xDC, 0xD4, 0xC9}, 32}, /* эти */
- {{0xCF, 0xD6, 0xCE}, 32}, /* ожн */
- {{0xC1, 0xD4, 0xD9}, 31}, /* аты */
- {{0xD3, 0xC4, 0xC5}, 31}, /* сде */
- {{0xC1, 0xC0, 0xD4}, 31}, /* ают */
- {{0xD1, 0xD4, 0xD8}, 31}, /* ять */
- {{0xCF, 0xD1, 0xD4}, 31}, /* оят */
- {{0xC5, 0xD4, 0xD8}, 31}, /* еть */
- {{0xC1, 0xC7, 0xC5}, 31}, /* аге */
- {{0xDE, 0xD2, 0xC5}, 31}, /* чре */
- {{0xC5, 0xCE, 0xD9}, 31}, /* ены */
- {{0xD5, 0xC2, 0xD9}, 31}, /* убы */
- {{0xC9, 0xD3, 0xD4}, 30}, /* ист */
- {{0xD1, 0xC0, 0xD4}, 30}, /* яют */
- {{0xD2, 0xD1, 0xC4}, 30}, /* ряд */
- {{0xC7, 0xCF, 0xD3}, 30}, /* гос */
- {{0xC9, 0xCD, 0xC1}, 30}, /* има */
- {{0xDA, 0xC1, 0xD3}, 30}, /* зас */
- {{0xC1, 0xC0, 0xDD}, 30}, /* ающ */
- {{0xCF, 0xDA, 0xD7}, 30}, /* озв */
- {{0xC5, 0xC4, 0xC9}, 30}, /* еди */
- {{0xCF, 0xCD, 0xC5}, 30}, /* оме */
- {{0xCE, 0xC9, 0xCA}, 30}, /* ний */
- {{0xD3, 0xD5, 0xC4}, 30}, /* суд */
- {{0xDA, 0xC4, 0xCF}, 29}, /* здо */
- {{0xD3, 0xD7, 0xC9}, 29}, /* сви */
- {{0xCF, 0xCC, 0xC9}, 29}, /* оли */
- {{0xCF, 0xD7, 0xD8}, 29}, /* овь */
- {{0xD7, 0xC9, 0xCA}, 29}, /* вий */
- {{0xC4, 0xCF, 0xD2}, 29}, /* дор */
- {{0xC4, 0xC5, 0xD1}, 29}, /* дея */
- {{0xC5, 0xD1, 0xD4}, 29}, /* еят */
- {{0xC3, 0xCF, 0xCD}, 29}, /* цом */
- {{0xC9, 0xDA, 0xC1}, 28}, /* иза */
- {{0xD3, 0xDE, 0xC5}, 28}, /* сче */
- {{0xCB, 0xD4, 0xC1}, 28}, /* кта */
- {{0xCF, 0xC4, 0xCE}, 28}, /* одн */
- {{0xC2, 0xCC, 0xC1}, 28}, /* бла */
- {{0xCF, 0xC4, 0xCC}, 28}, /* одл */
- {{0xC9, 0xD4, 0xC1}, 28}, /* ита */
- {{0xE4, 0xCF, 0xC7}, 28}, /* Дог */
- {{0xCF, 0xD3, 0xCF}, 28}, /* осо */
- {{0xCE, 0xCF, 0xDB}, 28}, /* нош */
- {{0xCB, 0xD5, 0xD2}, 28}, /* кур */
- {{0xC9, 0xCE, 0xC1}, 28}, /* ина */
- {{0xCF, 0xDB, 0xC5}, 28}, /* оше */
- {{0xCE, 0xC1, 0xCC}, 28}, /* нал */
- {{0xCE, 0xC9, 0xDA}, 27}, /* низ */
- {{0xDA, 0xD7, 0xD2}, 27}, /* звр */
- {{0xD7, 0xD2, 0xC1}, 27}, /* вра */
- {{0xCC, 0xC5, 0xD4}, 27}, /* лет */
- {{0xC5, 0xDD, 0xD8}, 27}, /* ещь */
- {{0xD2, 0xC9, 0xC4}, 27}, /* рид */
- {{0xC4, 0xCE, 0xCF}, 27}, /* дно */
- {{0xD2, 0xC9, 0xCF}, 27}, /* рио */
- {{0xCF, 0xC9, 0xCD}, 27}, /* оим */
- {{0xC5, 0xD2, 0xD6}, 27}, /* ерж */
- {{0xD5, 0xD7, 0xC5}, 26}, /* уве */
- {{0xCF, 0xCE, 0xCB}, 26}, /* онк */
- {{0xC5, 0xCC, 0xCB}, 26}, /* елк */
- {{0xCC, 0xC1, 0xD7}, 26}, /* лав */
- {{0xC1, 0xD4, 0xCF}, 26}, /* ато */
- {{0xD1, 0xCD, 0xC9}, 26}, /* ями */
- {{0xCD, 0xCD, 0xD9}, 26}, /* ммы */
- {{0xC5, 0xD3, 0xD0}, 26}, /* есп */
- {{0xCE, 0xCB, 0xD5}, 26}, /* нку */
- {{0xC9, 0xC3, 0xD5}, 25}, /* ицу */
- {{0xC4, 0xD3, 0xCB}, 25}, /* дск */
- {{0xCE, 0xC9, 0xCE}, 25}, /* нин */
- {{0xD0, 0xCC, 0xC5}, 25}, /* пле */
- {{0xC6, 0xCF, 0xD2}, 25}, /* фор */
- {{0xCC, 0xC1, 0xD3}, 25}, /* лас */
- {{0xC4, 0xC9, 0xCD}, 25}, /* дим */
- {{0xC5, 0xD3, 0xD1}, 25}, /* еся */
- {{0xCE, 0xC9, 0xDE}, 25}, /* нич */
- {{0xCF, 0xD7, 0xD2}, 25}, /* овр */
- {{0xD7, 0xD3, 0xCC}, 25}, /* всл */
- {{0xD2, 0xDB, 0xC5}, 25}, /* рше */
- {{0xC5, 0xDD, 0xC1}, 25}, /* еща */
- {{0xD6, 0xCE, 0xD9}, 25}, /* жны */
- {{0xD2, 0xC9, 0xCD}, 25}, /* рим */
- {{0xDA, 0xC1, 0xC3}, 25}, /* зац */
- {{0xC2, 0xDD, 0xC5}, 25}, /* бще */
- {{0xC1, 0xCB, 0xD4}, 25}, /* акт */
- {{0xC1, 0xC4, 0xD3}, 25}, /* адс */
- {{0xD5, 0xDE, 0xD2}, 25}, /* учр */
- {{0xDD, 0xC9, 0xC5}, 25}, /* щие */
- {{0xD6, 0xC9, 0xD4}, 24}, /* жит */
- {{0xC2, 0xD2, 0xC5}, 24}, /* бре */
- {{0xD5, 0xC7, 0xCF}, 24}, /* уго */
- {{0xC9, 0xD1, 0xC8}, 24}, /* иях */
- {{0xD4, 0xD8, 0xC0}, 24}, /* тью */
- {{0xD8, 0xD3, 0xD1}, 24}, /* ься */
- {{0xD7, 0xCF, 0xD7}, 24}, /* вов */
- {{0xCF, 0xDE, 0xCE}, 24}, /* очн */
- {{0xD7, 0xCF, 0xCF}, 24}, /* воо */
- {{0xCF, 0xC4, 0xD9}, 24}, /* оды */
- {{0xCC, 0xCF, 0xC7}, 24}, /* лог */
- {{0xD7, 0xC1, 0xC5}, 24}, /* вае */
- {{0xC1, 0xD1, 0xC8}, 24}, /* аях */
- {{0xD4, 0xD8, 0xD3}, 24}, /* тьс */
- {{0xC4, 0xC9, 0xDE}, 24}, /* дич */
- {{0xCB, 0xC9, 0xC8}, 24}, /* ких */
- {{0xC3, 0xC1, 0xCD}, 24}, /* цам */
- {{0xC9, 0xDA, 0xD7}, 24}, /* изв */
- {{0xD4, 0xC9, 0xD7}, 24}, /* тив */
- {{0xC5, 0xCF, 0xC2}, 24}, /* еоб */
- {{0xD3, 0xCF, 0xD3}, 24}, /* сос */
- {{0xDB, 0xC9, 0xCD}, 24}, /* шим */
- {{0xD9, 0xD0, 0xCF}, 24}, /* ыпо */
- {{0xC5, 0xD6, 0xC1}, 24}, /* ежа */
- {{0xD4, 0xCF, 0xC9}, 24}, /* тои */
- {{0xCB, 0xD4, 0xCF}, 24}, /* кто */
- {{0xC5, 0xDE, 0xC1}, 24}, /* еча */
- {{0xC9, 0xC4, 0xC9}, 24}, /* иди */
- {{0xC2, 0xDD, 0xC9}, 23}, /* бщи */
- {{0xD4, 0xD8, 0xC5}, 23}, /* тье */
- {{0xC2, 0xDF, 0xD1}, 23}, /* бъя */
- {{0xCE, 0xC1, 0xDE}, 23}, /* нач */
- {{0xD4, 0xC5, 0xDE}, 23}, /* теч */
- {{0xD5, 0xD2, 0xD3}, 23}, /* урс */
- {{0xD7, 0xC5, 0xDE}, 23}, /* веч */
- {{0xC5, 0xCD, 0xC5}, 23}, /* еме */
- {{0xCF, 0xC2, 0xC8}, 23}, /* обх */
- {{0xC2, 0xC8, 0xCF}, 23}, /* бхо */
- {{0xC4, 0xC1, 0xC5}, 23}, /* дае */
- {{0xD2, 0xC5, 0xDA}, 23}, /* рез */
- {{0xCB, 0xC1, 0xD6}, 22}, /* каж */
- {{0xCF, 0xCB, 0xD5}, 22}, /* оку */
- {{0xC1, 0xCD, 0xC5}, 22}, /* аме */
- {{0xCE, 0xC5, 0xDA}, 22}, /* нез */
- {{0xD9, 0xD7, 0xC1}, 22}, /* ыва */
- {{0xD3, 0xD7, 0xD1}, 22}, /* свя */
- {{0xD2, 0xC1, 0xC4}, 22}, /* рад */
- {{0xC5, 0xDA, 0xC1}, 22}, /* еза */
- {{0xC9, 0xD7, 0xC1}, 22}, /* ива */
- {{0xCB, 0xC1, 0xCD}, 22}, /* кам */
- {{0xCE, 0xC5, 0xCD}, 22}, /* нем */
- {{0xD4, 0xCB, 0xCF}, 22}, /* тко */
- {{0xDA, 0xD7, 0xC5}, 22}, /* зве */
- {{0xD7, 0xD1, 0xDA}, 22}, /* вяз */
- {{0xD1, 0xD4, 0xC9}, 22}, /* яти */
- {{0xCF, 0xC8, 0xD2}, 22}, /* охр */
- {{0xD2, 0xCF, 0xD4}, 22}, /* рот */
- {{0xCF, 0xCC, 0xC5}, 22}, /* оле */
- {{0xC2, 0xD2, 0xC1}, 22}, /* бра */
- {{0xC1, 0xC5, 0xCD}, 22}, /* аем */
- {{0xCC, 0xC1, 0xDB}, 21}, /* лаш */
- {{0xC9, 0xDA, 0xCD}, 21}, /* изм */
- {{0xC7, 0xD5, 0xD4}, 21}, /* гут */
- {{0xCF, 0xD6, 0xC4}, 21}, /* ожд */
- {{0xCB, 0xC1, 0xCB}, 21}, /* как */
- {{0xCB, 0xC1, 0xDE}, 21}, /* кач */
- {{0xCE, 0xC1, 0xCD}, 21}, /* нам */
- {{0xC4, 0xCF, 0xC8}, 21}, /* дох */
- {{0xCF, 0xC8, 0xCF}, 21}, /* охо */
- {{0xC0, 0xD2, 0xC9}, 21}, /* юри */
- {{0xD7, 0xC1, 0xCD}, 21}, /* вам */
- {{0xDA, 0xCD, 0xCF}, 21}, /* змо */
- {{0xC4, 0xCB, 0xC5}, 21}, /* дке */
- {{0xC2, 0xC1, 0xCE}, 21}, /* бан */
- {{0xC5, 0xCC, 0xC9}, 21}, /* ели */
- {{0xD2, 0xC9, 0xDA}, 21}, /* риз */
- {{0xCC, 0xCE, 0xCF}, 21}, /* лно */
- {{0xD7, 0xD9, 0xDB}, 21}, /* выш */
- {{0xC4, 0xC3, 0xC1}, 21}, /* дца */
- {{0xD1, 0xC4, 0xCB}, 21}, /* ядк */
- {{0xCF, 0xD4, 0xD3}, 21}, /* отс */
- {{0xD4, 0xC5, 0xCA}, 21}, /* тей */
- {{0xC1, 0xCE, 0xCB}, 21}, /* анк */
- {{0xCE, 0xC5, 0xC7}, 21}, /* нег */
- {{0xC3, 0xC1, 0xD4}, 21}, /* цат */
- {{0xC5, 0xCD, 0xD9}, 21}, /* емы */
- {{0xD7, 0xCF, 0xC5}, 21}, /* вое */
- {{0xC4, 0xC1, 0xDE}, 21}, /* дач */
- {{0xCF, 0xC7, 0xD5}, 21}, /* огу */
- {{0xCC, 0xD6, 0xC5}, 21}, /* лже */
- {{0xD4, 0xCE, 0xC9}, 21}, /* тни */
- {{0xDA, 0xC1, 0xD7}, 21}, /* зав */
- {{0xD7, 0xC5, 0xD3}, 21}, /* вес */
- {{0xD3, 0xC1, 0xCD}, 20}, /* сам */
- {{0xC1, 0xD2, 0xCE}, 20}, /* арн */
- {{0xDE, 0xCE, 0xD9}, 20}, /* чны */
- {{0xD3, 0xD2, 0xC5}, 20}, /* сре */
- {{0xD4, 0xC9, 0xD1}, 20}, /* тия */
- {{0xC9, 0xD3, 0xCC}, 20}, /* исл */
- {{0xF3, 0xD4, 0xD2}, 20}, /* Стр */
- {{0xCE, 0xD4, 0xCF}, 20}, /* нто */
- {{0xD5, 0xD4, 0xD2}, 20}, /* утр */
- {{0xC1, 0xDB, 0xC5}, 20}, /* аше */
- {{0xC5, 0xCC, 0xC1}, 20}, /* ела */
- {{0xD5, 0xC4, 0xCF}, 20}, /* удо */
- {{0xD6, 0xC9, 0xDA}, 19}, /* жиз */
- {{0xD0, 0xC9, 0xD3}, 19}, /* пис */
- {{0xC1, 0xC9, 0xCD}, 19}, /* аим */
- {{0xDE, 0xC9, 0xD3}, 19}, /* чис */
- {{0xC5, 0xD6, 0xC9}, 19}, /* ежи */
- {{0xD7, 0xD3, 0xC5}, 19}, /* все */
- {{0xCC, 0xD8, 0xCB}, 19}, /* льк */
- {{0xC1, 0xD4, 0xD5}, 19}, /* ату */
- {{0xD5, 0xC4, 0xC1}, 19}, /* уда */
- {{0xDB, 0xC9, 0xCA}, 19}, /* ший */
- {{0xDA, 0xC1, 0xD2}, 19}, /* зар */
- {{0xC5, 0xC4, 0xCE}, 19}, /* едн */
- {{0xC1, 0xD7, 0xDB}, 19}, /* авш */
- {{0xD2, 0xCF, 0xC9}, 19}, /* рои */
- {{0xC9, 0xC4, 0xC1}, 19}, /* ида */
- {{0xC1, 0xD2, 0xCF}, 19}, /* аро */
- {{0xD4, 0xCF, 0xCA}, 19}, /* той */
- {{0xD6, 0xC1, 0xDD}, 19}, /* жащ */
- {{0xC5, 0xD3, 0xCF}, 19}, /* есо */
- {{0xD0, 0xC1, 0xCC}, 19}, /* пал */
- {{0xDD, 0xC1, 0xC5}, 19}, /* щае */
- {{0xD2, 0xD9, 0xC5}, 19}, /* рые */
- {{0xC5, 0xCE, 0xD1}, 19}, /* еня */
- {{0xDD, 0xC9, 0xCA}, 19}, /* щий */
- {{0xCC, 0xD5, 0xC7}, 19}, /* луг */
- {{0xC0, 0xDE, 0xC9}, 18}, /* ючи */
- {{0xD5, 0xCC, 0xD8}, 18}, /* уль */
- {{0xCD, 0xD9, 0xC8}, 18}, /* мых */
- {{0xD2, 0xCF, 0xC7}, 18}, /* рог */
- {{0xD3, 0xCF, 0xC8}, 18}, /* сох */
- {{0xCB, 0xCF, 0xC5}, 18}, /* кое */
- {{0xCE, 0xD4, 0xD3}, 18}, /* нтс */
- {{0xC1, 0xDA, 0xCE}, 18}, /* азн */
- {{0xD4, 0xCE, 0xD9}, 18}, /* тны */
- {{0xCF, 0xC4, 0xD1}, 18}, /* одя */
- {{0xCF, 0xC2, 0xCE}, 18}, /* обн */
- {{0xD7, 0xD9, 0xC4}, 18}, /* выд */
- {{0xCF, 0xD3, 0xD1}, 18}, /* ося */
- {{0xD8, 0xD4, 0xC1}, 18}, /* ьта */
- {{0xCE, 0xD1, 0xC0}, 18}, /* няю */
- {{0xCE, 0xC1, 0xD2}, 18}, /* нар */
- {{0xC5, 0xDA, 0xD5}, 18}, /* езу */
- {{0xC1, 0xD3, 0xCE}, 18}, /* асн */
- {{0xDA, 0xD5, 0xCC}, 18}, /* зул */
- {{0xC3, 0xC9, 0xD0}, 18}, /* цип */
- {{0xCB, 0xD4, 0xC5}, 18}, /* кте */
- {{0xC4, 0xCF, 0xD0}, 18}, /* доп */
- {{0xCE, 0xC3, 0xC9}, 18}, /* нци */
- {{0xD3, 0xD0, 0xC5}, 18}, /* спе */
- {{0xC9, 0xCD, 0xD9}, 18}, /* имы */
- {{0xCD, 0xCF, 0xCD}, 18}, /* мом */
- {{0xD0, 0xC5, 0xDE}, 18}, /* печ */
- {{0xEF, 0xC2, 0xD1}, 18}, /* Обя */
- {{0xF0, 0xD2, 0xC1}, 18}, /* Пра */
- {{0xCF, 0xCC, 0xCF}, 18}, /* оло */
- {{0xD4, 0xD3, 0xCB}, 18}, /* тск */
- {{0xCC, 0xCE, 0xC9}, 18}, /* лни */
- {{0xC5, 0xD2, 0xD4}, 18}, /* ерт */
- {{0xC9, 0xD3, 0xD8}, 18}, /* ись */
- {{0xCC, 0xD8, 0xD4}, 18}, /* льт */
- {{0xD3, 0xD5, 0xD4}, 18}, /* сут */
- {{0xD7, 0xCF, 0xC2}, 17}, /* воб */
- {{0xD2, 0xCE, 0xD9}, 17}, /* рны */
- {{0xC2, 0xCE, 0xD9}, 17}, /* бны */
- {{0xD9, 0xC4, 0xC1}, 17}, /* ыда */
- {{0xD8, 0xDA, 0xD5}, 17}, /* ьзу */
- {{0xC5, 0xC4, 0xD0}, 17}, /* едп */
- {{0xC1, 0xC4, 0xC5}, 17}, /* аде */
- {{0xC9, 0xD0, 0xC1}, 17}, /* ипа */
- {{0xD3, 0xC5, 0xCA}, 17}, /* сей */
- {{0xC5, 0xC5, 0xD3}, 17}, /* еес */
- {{0xCF, 0xC9, 0xDA}, 17}, /* оиз */
- {{0xCF, 0xD3, 0xD7}, 17}, /* осв */
- {{0xC4, 0xC9, 0xD7}, 17}, /* див */
- {{0xCE, 0xC1, 0xCE}, 17}, /* нан */
- {{0xC5, 0xD4, 0xC1}, 17}, /* ета */
- {{0xC4, 0xCE, 0xC5}, 17}, /* дне */
- {{0xC9, 0xCF, 0xC2}, 17}, /* иоб */
- {{0xD5, 0xC5, 0xD4}, 17}, /* ует */
- {{0xCE, 0xC1, 0xC8}, 17}, /* нах */
- {{0xD3, 0xCD, 0xC5}, 17}, /* сме */
- {{0xC1, 0xCC, 0xC9}, 17}, /* али */
- {{0xC2, 0xDF, 0xC5}, 17}, /* бъе */
- {{0xD0, 0xC1, 0xD3}, 17}, /* пас */
- {{0xDA, 0xC1, 0xCC}, 17}, /* зал */
- {{0xD2, 0xD6, 0xC1}, 16}, /* ржа */
- {{0xD1, 0xD7, 0xC9}, 16}, /* яви */
- {{0xD6, 0xC1, 0xD4}, 16}, /* жат */
- {{0xC2, 0xCF, 0xD6}, 16}, /* бож */
- {{0xD3, 0xC9, 0xCC}, 16}, /* сил */
- {{0xCE, 0xD5, 0xC0}, 16}, /* ную */
- {{0xD0, 0xC5, 0xCE}, 16}, /* пен */
- {{0xCD, 0xC1, 0xD4}, 16}, /* мат */
- {{0xCF, 0xCE, 0xCE}, 16}, /* онн */
- {{0xD7, 0xC9, 0xCE}, 16}, /* вин */
- {{0xD4, 0xCB, 0xC9}, 16}, /* тки */
- {{0xD4, 0xCF, 0xDE}, 16}, /* точ */
- {{0xD3, 0xDE, 0xC9}, 16}, /* счи */
- {{0xCE, 0xC9, 0xC3}, 16}, /* ниц */
- {{0xDD, 0xC5, 0xC5}, 16}, /* щее */
- {{0xC2, 0xC5, 0xD3}, 16}, /* бес */
- {{0xC1, 0xC4, 0xC3}, 16}, /* адц */
- {{0xEB, 0xCF, 0xCD}, 16}, /* Ком */
- {{0xD8, 0xC9, 0xCD}, 16}, /* ьим */
- {{0xD5, 0xD4, 0xD3}, 16}, /* утс */
- {{0xC1, 0xDE, 0xC9}, 16}, /* ачи */
- {{0xD0, 0xCF, 0xCE}, 16}, /* пон */
- {{0xCB, 0xC1, 0xC5}, 16}, /* кае */
- {{0xC9, 0xC7, 0xD2}, 16}, /* игр */
- {{0xC1, 0xCB, 0xC9}, 16}, /* аки */
- {{0xC1, 0xDD, 0xC9}, 16}, /* ащи */
- {{0xCC, 0xD8, 0xC3}, 16}, /* льц */
- {{0xD7, 0xCE, 0xCF}, 16}, /* вно */
- {{0xD9, 0xDB, 0xC5}, 15}, /* ыше */
- {{0xEC, 0xC9, 0xC3}, 15}, /* Лиц */
- {{0xD8, 0xC5, 0xCA}, 15}, /* ьей */
- {{0xDB, 0xC5, 0xCD}, 15}, /* шем */
- {{0xD5, 0xC2, 0xCC}, 15}, /* убл */
- {{0xD2, 0xC1, 0xC3}, 15}, /* рац */
- {{0xCB, 0xD5, 0xCD}, 15}, /* кум */
- {{0xD2, 0xC5, 0xC7}, 15}, /* рег */
- {{0xCF, 0xD0, 0xC1}, 15}, /* опа */
- {{0xF7, 0xCF, 0xDA}, 15}, /* Воз */
- {{0xD4, 0xC1, 0xC5}, 15}, /* тае */
- {{0xCF, 0xC2, 0xD9}, 15}, /* обы */
- {{0xC2, 0xCC, 0xC9}, 15}, /* бли */
- {{0xD2, 0xCD, 0xC5}, 15}, /* рме */
- {{0xD7, 0xCF, 0xD3}, 15}, /* вос */
- {{0xC1, 0xD3, 0xC9}, 15}, /* аси */
- {{0xD4, 0xC1, 0xCD}, 15}, /* там */
- {{0xD8, 0xCD, 0xC5}, 15}, /* ьме */
- {{0xCF, 0xC7, 0xC1}, 15}, /* ога */
- {{0xC9, 0xCC, 0xCF}, 15}, /* ило */
- {{0xD3, 0xD8, 0xCD}, 15}, /* сьм */
- {{0xD2, 0xD4, 0xC9}, 15}, /* рти */
- {{0xD4, 0xD3, 0xD5}, 15}, /* тсу */
- {{0xD3, 0xC5, 0xCE}, 15}, /* сен */
- {{0xD4, 0xC1, 0xCC}, 15}, /* тал */
- {{0xC4, 0xC1, 0xD2}, 15}, /* дар */
- {{0xC1, 0xCD, 0xCF}, 15}, /* амо */
- {{0xC5, 0xC4, 0xCC}, 15}, /* едл */
- {{0xD3, 0xD5, 0xC2}, 15}, /* суб */
- {{0xC5, 0xCA, 0xC6}, 15}, /* ейф */
- {{0xE8, 0xD2, 0xC1}, 15}, /* Хра */
- {{0xCC, 0xC1, 0xCD}, 14}, /* лам */
- {{0xC1, 0xD2, 0xD5}, 14}, /* ару */
- {{0xC7, 0xC9, 0xC8}, 14}, /* гих */
- {{0xC3, 0xC9, 0xD1}, 14}, /* ция */
- {{0xC4, 0xC1, 0xD7}, 14}, /* дав */
- {{0xCC, 0xC9, 0xDB}, 14}, /* лиш */
- {{0xC0, 0xDE, 0xC1}, 14}, /* юча */
- {{0xC1, 0xCE, 0xD3}, 14}, /* анс */
- {{0xCF, 0xC7, 0xD2}, 14}, /* огр */
- {{0xC9, 0xDD, 0xC1}, 14}, /* ища */
- {{0xC5, 0xCE, 0xD8}, 14}, /* ень */
- {{0xCF, 0xD4, 0xC9}, 14}, /* оти */
- {{0xC1, 0xC4, 0xD9}, 13}, /* ады */
- {{0xC1, 0xDD, 0xC1}, 13}, /* аща */
- {{0xD7, 0xCF, 0xC9}, 13}, /* вои */
- {{0xD7, 0xD9, 0xCD}, 13}, /* вым */
- {{0xD7, 0xD8, 0xD1}, 13}, /* вья */
- {{0xCB, 0xC9, 0xC5}, 13}, /* кие */
- {{0xCC, 0xC9, 0xD3}, 13}, /* лис */
- {{0xCD, 0xC5, 0xC4}, 13}, /* мед */
- {{0xD4, 0xC9, 0xC8}, 13}, /* тих */
- {{0xC5, 0xD4, 0xCF}, 13}, /* ето */
- {{0xDA, 0xCC, 0xCF}, 13}, /* зло */
- {{0xCF, 0xD0, 0xC5}, 13}, /* опе */
- {{0xD3, 0xC9, 0xCD}, 13}, /* сим */
- {{0xD1, 0xDA, 0xC9}, 13}, /* язи */
- {{0xC9, 0xCE, 0xC4}, 13}, /* инд */
- {{0xDE, 0xD5, 0xD6}, 13}, /* чуж */
- {{0xCC, 0xCB, 0xC9}, 13}, /* лки */
- {{0xC4, 0xD0, 0xD2}, 13}, /* дпр */
- {{0xCE, 0xC4, 0xC9}, 13}, /* нди */
- {{0xCF, 0xD4, 0xC1}, 13}, /* ота */
- {{0xCF, 0xD4, 0xD9}, 13}, /* оты */
- {{0xCC, 0xC1, 0xDE}, 13}, /* лач */
- {{0xCB, 0xC9, 0xCD}, 13}, /* ким */
- {{0xC9, 0xD3, 0xC9}, 13}, /* иси */
- {{0xD7, 0xC1, 0xCC}, 13}, /* вал */
- {{0xC5, 0xCD, 0xCF}, 13}, /* емо */
- {{0xD0, 0xD5, 0xC2}, 13}, /* пуб */
- {{0xD1, 0xC5, 0xCD}, 13}, /* яем */
- {{0xC2, 0xCF, 0xCC}, 13}, /* бол */
- {{0xCE, 0xD4, 0xD5}, 13}, /* нту */
- {{0xCE, 0xC5, 0xCA}, 13}, /* ней */
- {{0xCE, 0xC1, 0xD1}, 13}, /* ная */
- {{0xC5, 0xD3, 0xC1}, 13}, /* еса */
- {{0xD2, 0xCE, 0xCF}, 13}, /* рно */
- {{0xDD, 0xC5, 0xCD}, 13}, /* щем */
- {{0xC1, 0xCE, 0xD9}, 13}, /* аны */
- {{0xE4, 0xCF, 0xD7}, 13}, /* Дов */
- {{0xDE, 0xC9, 0xD7}, 13}, /* чив */
- {{0xD7, 0xC9, 0xD3}, 13}, /* вис */
- {{0xCF, 0xD0, 0xCF}, 13}, /* опо */
- {{0xD7, 0xD8, 0xC0}, 13}, /* вью */
- {{0xC1, 0xCC, 0xC1}, 13}, /* ала */
- {{0xCC, 0xC5, 0xCA}, 12}, /* лей */
- {{0xC1, 0xDE, 0xC1}, 12}, /* ача */
- {{0xC5, 0xDA, 0xD7}, 12}, /* езв */
- {{0xD7, 0xC1, 0xD1}, 12}, /* вая */
- {{0xC5, 0xCF, 0xD3}, 12}, /* еос */
- {{0xD1, 0xDD, 0xC9}, 12}, /* ящи */
- {{0xC9, 0xD7, 0xC9}, 12}, /* иви */
- {{0xCE, 0xC5, 0xC5}, 12}, /* нее */
- {{0xD4, 0xD2, 0xD5}, 12}, /* тру */
- {{0xDB, 0xC5, 0xC5}, 12}, /* шее */
- {{0xD3, 0xC1, 0xC8}, 12}, /* сах */
- {{0xC9, 0xCE, 0xC3}, 12}, /* инц */
- {{0xCF, 0xCD, 0xD0}, 12}, /* омп */
- {{0xD5, 0xD6, 0xCF}, 12}, /* ужо */
- {{0xD5, 0xC1, 0xCC}, 12}, /* уал */
- {{0xCE, 0xC1, 0xD4}, 12}, /* нат */
- {{0xC9, 0xC4, 0xD5}, 12}, /* иду */
- {{0xD7, 0xCC, 0xC1}, 12}, /* вла */
- {{0xDA, 0xD7, 0xC1}, 12}, /* зва */
- {{0xCC, 0xC5, 0xC5}, 12}, /* лее */
- {{0xD2, 0xC5, 0xC8}, 12}, /* рех */
- {{0xD6, 0xC4, 0xD5}, 12}, /* жду */
- {{0xCD, 0xC1, 0xCC}, 12}, /* мал */
- {{0xC5, 0xCE, 0xD3}, 12}, /* енс */
- {{0xC9, 0xCA, 0xD3}, 12}, /* ийс */
- {{0xCB, 0xCF, 0xCC}, 12}, /* кол */
- {{0xCE, 0xC1, 0xDA}, 12}, /* наз */
- {{0xC4, 0xD5, 0xC1}, 12}, /* дуа */
- {{0xCF, 0xCE, 0xC9}, 12}, /* они */
- {{0xD3, 0xC5, 0xCD}, 12}, /* сем */
- {{0xC7, 0xCF, 0xC4}, 12}, /* год */
- {{0xCD, 0xC5, 0xD6}, 12}, /* меж */
- {{0xCF, 0xDA, 0xCC}, 12}, /* озл */
- {{0xD7, 0xCD, 0xC5}, 12}, /* вме */
- {{0xD5, 0xC4, 0xC5}, 12}, /* уде */
- {{0xD8, 0xCB, 0xCF}, 12}, /* ько */
- {{0xC5, 0xD7, 0xD9}, 12}, /* евы */
- {{0xDA, 0xC1, 0xCD}, 12}, /* зам */
- {{0xD3, 0xCF, 0xC4}, 12}, /* сод */
- {{0xD2, 0xCF, 0xC5}, 11}, /* рое */
- {{0xCF, 0xD4, 0xC4}, 11}, /* отд */
- {{0xD3, 0xC9, 0xD1}, 11}, /* сия */
- {{0xC9, 0xCB, 0xD5}, 11}, /* ику */
- {{0xD9, 0xCC, 0xC9}, 11}, /* ыли */
- {{0xC7, 0xC9, 0xCD}, 11}, /* гим */
- {{0xCE, 0xD8, 0xDB}, 11}, /* ньш */
- {{0xD4, 0xC9, 0xDE}, 11}, /* тич */
- {{0xD2, 0xC1, 0xCC}, 11}, /* рал */
- {{0xD5, 0xDE, 0xC9}, 11}, /* учи */
- {{0xCD, 0xC5, 0xC0}, 11}, /* мею */
- {{0xD4, 0xC5, 0xCB}, 11}, /* тек */
- {{0xCF, 0xC2, 0xD5}, 11}, /* обу */
- {{0xCE, 0xCE, 0xD5}, 11}, /* нну */
- {{0xCE, 0xC5, 0xD0}, 11}, /* неп */
- {{0xD7, 0xC5, 0xCC}, 11}, /* вел */
- {{0xD4, 0xCD, 0xC5}, 11}, /* тме */
- {{0xC2, 0xCF, 0xC7}, 11}, /* бог */
- {{0xCF, 0xD2, 0xC9}, 11}, /* ори */
- {{0xC1, 0xD7, 0xCE}, 11}, /* авн */
- {{0xC4, 0xC5, 0xC5}, 11}, /* дее */
- {{0xD6, 0xCF, 0xCD}, 11}, /* жом */
- {{0xF7, 0xD2, 0xC5}, 11}, /* Вре */
- {{0xCD, 0xD9, 0xC5}, 11}, /* мые */
- {{0xD8, 0xC3, 0xC1}, 11}, /* ьца */
- {{0xCF, 0xC3, 0xC5}, 11}, /* оце */
- {{0xC9, 0xD4, 0xD9}, 10}, /* иты */
- {{0xDA, 0xD2, 0xC1}, 10}, /* зра */
- {{0xCF, 0xCE, 0xD9}, 10}, /* оны */
- {{0xD2, 0xC5, 0xDB}, 10}, /* реш */
- {{0xD5, 0xDB, 0xC5}, 10}, /* уше */
- {{0xD2, 0xC5, 0xD7}, 10}, /* рев */
- {{0xCF, 0xD0, 0xD5}, 10}, /* опу */
- {{0xD1, 0xD4, 0xD9}, 10}, /* яты */
- {{0xD4, 0xC1, 0xDE}, 10}, /* тач */
- {{0xC5, 0xD2, 0xCF}, 10}, /* еро */
- {{0xD7, 0xCB, 0xCC}, 10}, /* вкл */
- {{0xDA, 0xD9, 0xD7}, 10}, /* зыв */
- {{0xC1, 0xD0, 0xD2}, 10}, /* апр */
- {{0xD2, 0xD5, 0xDB}, 10}, /* руш */
- {{0xEF, 0xD4, 0xD7}, 10}, /* Отв */
- {{0xD2, 0xD3, 0xC1}, 10}, /* рса */
- {{0xC5, 0xCB, 0xD4}, 10}, /* ект */
- {{0xCC, 0xC5, 0xCB}, 10}, /* лек */
- {{0xC5, 0xC5, 0xD4}, 10}, /* еет */
- {{0xCF, 0xD0, 0xCC}, 10}, /* опл */
- {{0xD4, 0xDE, 0xC5}, 10}, /* тче */
- {{0xC7, 0xCF, 0xCD}, 10}, /* гом */
- {{0xD4, 0xCF, 0xD6}, 10}, /* тож */
- {{0xCC, 0xC5, 0xDE}, 10}, /* леч */
- {{0xC5, 0xD4, 0xD9}, 10}, /* еты */
- {{0xCF, 0xD6, 0xC9}, 10}, /* ожи */
- {{0xCD, 0xCE, 0xCF}, 10}, /* мно */
- {{0xCD, 0xCF, 0xCA}, 10}, /* мой */
- {{0xC3, 0xC5, 0xCC}, 10}, /* цел */
- {{0xD5, 0xD0, 0xC9}, 10}, /* упи */
- {{0xC1, 0xC5, 0xD7}, 10}, /* аев */
- {{0xD0, 0xCF, 0xCD}, 10}, /* пом */
- {{0xC4, 0xD1, 0xDD}, 10}, /* дящ */
- {{0xD4, 0xD2, 0xC9}, 10}, /* три */
- {{0xDB, 0xC9, 0xC5}, 10}, /* шие */
- {{0xC5, 0xCB, 0xC1}, 10}, /* ека */
- {{0xC5, 0xDB, 0xC5}, 10}, /* еше */
- {{0xDA, 0xC1, 0xC9}, 10}, /* заи */
- {{0xC9, 0xD4, 0xCF}, 10}, /* ито */
- {{0xDA, 0xCE, 0xD9}, 10}, /* зны */
- {{0xCF, 0xD1, 0xCE}, 10}, /* оян */
- {{0xC9, 0xD6, 0xC5}, 10}, /* иже */
- {{0xD7, 0xCE, 0xC5}, 10}, /* вне */
- {{0xD2, 0xD3, 0xD4}, 10}, /* рст */
- {{0xC5, 0xCD, 0xD1}, 10}, /* емя */
- {{0xCE, 0xC1, 0xC9}, 10}, /* наи */
- {{0xD4, 0xCF, 0xCC}, 10}, /* тол */
- {{0xCC, 0xC9, 0xD4}, 10}, /* лит */
- {{0xCF, 0xD3, 0xD2}, 10}, /* оср */
- {{0xD4, 0xC4, 0xC5}, 10}, /* тде */
- {{0xC5, 0xCD, 0xC9}, 10}, /* еми */
- {{0xCD, 0xC5, 0xC5}, 10}, /* мее */
- {{0xD2, 0xD9, 0xC8}, 10}, /* рых */
- {{0xCE, 0xC9, 0xD7}, 10}, /* нив */
- {{0xC5, 0xD2, 0xD5}, 10}, /* еру */
- {{0xDE, 0xC5, 0xCD}, 10}, /* чем */
- {{0xC4, 0xCF, 0xC2}, 10}, /* доб */
- {{0xC5, 0xCC, 0xCF}, 10}, /* ело */
- {{0xC9, 0xCC, 0xD5}, 10}, /* илу */
- {{0xC1, 0xC4, 0xCC}, 10}, /* адл */
- {{0xC9, 0xDE, 0xD4}, 10}, /* ичт */
- {{0xCD, 0xCC, 0xC5}, 10}, /* мле */
-};
-
-static const myhtml_encoding_trigram_t myhtml_encoding_detect_trigrams_index_windows_1251[] = {
- {{0xE5, 0xED, 0xE8}, 991}, /* ени */
- {{0xEE, 0xE3, 0xEE}, 806}, /* ого */
- {{0xF1, 0xF2, 0xE2}, 659}, /* ств */
- {{0xED, 0xE8, 0xFF}, 629}, /* ния */
- {{0xEE, 0xE2, 0xE0}, 566}, /* ова */
- {{0xF2, 0xE5, 0xEB}, 555}, /* тел */
- {{0xF0, 0xE5, 0xE4}, 507}, /* ред */
- {{0xE5, 0xED, 0xED}, 499}, /* енн */
- {{0xEE, 0xE2, 0xEE}, 443}, /* ово */
- {{0xE0, 0xED, 0xE8}, 443}, /* ани */
- {{0xF2, 0xF0, 0xE0}, 429}, /* тра */
- {{0xEE, 0xF1, 0xF2}, 428}, /* ост */
- {{0xED, 0xE8, 0xE5}, 419}, /* ние */
- {{0xED, 0xED, 0xEE}, 412}, /* нно */
- {{0xE0, 0xF5, 0xEE}, 396}, /* ахо */
- {{0xF1, 0xF2, 0xF0}, 392}, /* стр */
- {{0xF0, 0xE0, 0xF5}, 386}, /* рах */
- {{0xF5, 0xEE, 0xE2}, 379}, /* хов */
- {{0xE5, 0xEB, 0xFC}, 365}, /* ель */
- {{0xE3, 0xEE, 0xE2}, 360}, /* гов */
- {{0xE2, 0xEE, 0xF0}, 356}, /* вор */
- {{0xE5, 0xF1, 0xF2}, 349}, /* ест */
- {{0xE0, 0xF2, 0xFC}, 345}, /* ать */
- {{0xF0, 0xE0, 0xE2}, 337}, /* рав */
- {{0xEF, 0xF0, 0xE8}, 330}, /* при */
- {{0xEF, 0xF0, 0xE5}, 323}, /* пре */
- {{0xE4, 0xEE, 0xE3}, 318}, /* дог */
- {{0xED, 0xE5, 0xED}, 310}, /* нен */
- {{0xEF, 0xF0, 0xE0}, 309}, /* пра */
- {{0xE2, 0xE0, 0xED}, 304}, /* ван */
- {{0xE8, 0xF2, 0xE5}, 295}, /* ите */
- {{0xF2, 0xE2, 0xE5}, 281}, /* тве */
- {{0xEB, 0xE5, 0xED}, 266}, /* лен */
- {{0xF1, 0xF2, 0xEE}, 261}, /* сто */
- {{0xF2, 0xE0, 0xF2}, 260}, /* тат */
- {{0xED, 0xED, 0xFB}, 260}, /* нны */
- {{0xEB, 0xFC, 0xED}, 256}, /* льн */
- {{0xE2, 0xEE, 0xE7}, 255}, /* воз */
- {{0xE8, 0xEB, 0xE8}, 254}, /* или */
- {{0xE0, 0xF2, 0xE5}, 252}, /* ате */
- {{0xE5, 0xE3, 0xEE}, 241}, /* его */
- {{0xE5, 0xF2, 0xF1}, 238}, /* етс */
- {{0xED, 0xEE, 0xF1}, 236}, /* нос */
- {{0xF9, 0xE5, 0xF1}, 235}, /* щес */
- {{0xEF, 0xEE, 0xEB}, 232}, /* пол */
- {{0xF0, 0xE0, 0xED}, 231}, /* ран */
- {{0xED, 0xEE, 0xE3}, 230}, /* ног */
- {{0xF1, 0xF2, 0xE0}, 229}, /* ста */
- {{0xF7, 0xE5, 0xED}, 226}, /* чен */
- {{0xF2, 0xF0, 0xE5}, 224}, /* тре */
- {{0xE7, 0xEC, 0xE5}, 214}, /* зме */
- {{0xF3, 0xF9, 0xE5}, 212}, /* уще */
- {{0xF1, 0xF2, 0xE8}, 210}, /* сти */
- {{0xEA, 0xEE, 0xEC}, 207}, /* ком */
- {{0xEE, 0xF0, 0xEE}, 206}, /* оро */
- {{0xE2, 0xEB, 0xE5}, 195}, /* вле */
- {{0xE7, 0xE0, 0xED}, 194}, /* зан */
- {{0xE0, 0xF1, 0xF2}, 193}, /* аст */
- {{0xF2, 0xF1, 0xFF}, 191}, /* тся */
- {{0xF5, 0xF0, 0xE0}, 187}, /* хра */
- {{0xE0, 0xED, 0xED}, 182}, /* анн */
- {{0xE5, 0xF0, 0xE5}, 182}, /* ере */
- {{0xE2, 0xF0, 0xE5}, 178}, /* вре */
- {{0xEE, 0xE2, 0xE5}, 173}, /* ове */
- {{0xFC, 0xED, 0xEE}, 173}, /* ьно */
- {{0xE2, 0xE5, 0xF0}, 172}, /* вер */
- {{0xEC, 0xE5, 0xED}, 170}, /* мен */
- {{0xEB, 0xE8, 0xF6}, 168}, /* лиц */
- {{0xF2, 0xEE, 0xF0}, 167}, /* тор */
- {{0xF0, 0xE5, 0xED}, 167}, /* рен */
- {{0xF9, 0xE5, 0xED}, 165}, /* щен */
- {{0xEE, 0xE7, 0xEC}, 164}, /* озм */
- {{0xE5, 0xE4, 0xE0}, 163}, /* еда */
- {{0xF2, 0xE2, 0xE8}, 159}, /* тви */
- {{0xFF, 0xE7, 0xE0}, 159}, /* яза */
- {{0xE1, 0xFF, 0xE7}, 158}, /* бяз */
- {{0xED, 0xE8, 0xE8}, 153}, /* нии */
- {{0xED, 0xFB, 0xF5}, 153}, /* ных */
- {{0xF2, 0xFC, 0xFF}, 153}, /* тья */
- {{0xEC, 0xE5, 0xF0}, 153}, /* мер */
- {{0xF1, 0xEB, 0xE8}, 150}, /* сли */
- {{0xF2, 0xEE, 0xE2}, 148}, /* тов */
- {{0xF2, 0xE2, 0xE0}, 147}, /* тва */
- {{0xEE, 0xF0, 0xE0}, 146}, /* ора */
- {{0xED, 0xEE, 0xEC}, 144}, /* ном */
- {{0xE4, 0xE5, 0xED}, 144}, /* ден */
- {{0xE0, 0xED, 0xE5}, 142}, /* ане */
- {{0xEA, 0xEE, 0xED}, 141}, /* кон */
- {{0xEB, 0xF3, 0xF7}, 141}, /* луч */
- {{0xEC, 0xF3, 0xF9}, 140}, /* мущ */
- {{0xEE, 0xE1, 0xFF}, 140}, /* обя */
- {{0xE2, 0xE0, 0xF2}, 138}, /* ват */
- {{0xE2, 0xE0, 0xF0}, 137}, /* вар */
- {{0xE5, 0xF9, 0xE5}, 137}, /* еще */
- {{0xEE, 0xF2, 0xF0}, 137}, /* отр */
- {{0xE4, 0xE5, 0xEB}, 137}, /* дел */
- {{0xED, 0xFB, 0xEC}, 136}, /* ным */
- {{0xE8, 0xEC, 0xF3}, 136}, /* иму */
- {{0xD1, 0xF2, 0xE0}, 134}, /* Ста */
- {{0xF3, 0xF7, 0xE0}, 133}, /* уча */
- {{0xF2, 0xF1, 0xF2}, 131}, /* тст */
- {{0xE5, 0xEB, 0xFF}, 130}, /* еля */
- {{0xF1, 0xEB, 0xF3}, 130}, /* слу */
- {{0xE7, 0xE0, 0xEA}, 130}, /* зак */
- {{0xF2, 0xEE, 0xFF}, 129}, /* тоя */
- {{0xEE, 0xEC, 0xE8}, 128}, /* оми */
- {{0xEC, 0xE5, 0xF9}, 128}, /* мещ */
- {{0xE5, 0xE4, 0xF3}, 127}, /* еду */
- {{0xE2, 0xE5, 0xED}, 127}, /* вен */
- {{0xED, 0xEE, 0xE2}, 127}, /* нов */
- {{0xED, 0xEE, 0xE5}, 126}, /* ное */
- {{0xEE, 0xF2, 0xE2}, 125}, /* отв */
- {{0xEA, 0xE0, 0xE7}, 125}, /* каз */
- {{0xE0, 0xE5, 0xF2}, 125}, /* ает */
- {{0xF1, 0xEA, 0xEE}, 125}, /* ско */
- {{0xE5, 0xED, 0xF2}, 124}, /* ент */
- {{0xEC, 0xEE, 0xF2}, 123}, /* мот */
- {{0xE0, 0xE2, 0xEB}, 122}, /* авл */
- {{0xF1, 0xEC, 0xEE}, 122}, /* смо */
- {{0xE8, 0xF7, 0xE8}, 121}, /* ичи */
- {{0xE1, 0xFB, 0xF2}, 120}, /* быт */
- {{0xF3, 0xF1, 0xEC}, 118}, /* усм */
- {{0xF1, 0xF1, 0xE8}, 117}, /* сси */
- {{0xE4, 0xF3, 0xF1}, 117}, /* дус */
- {{0xF5, 0xEE, 0xE4}, 117}, /* ход */
- {{0xF0, 0xE8, 0xF7}, 117}, /* рич */
- {{0xF7, 0xE5, 0xF1}, 115}, /* чес */
- {{0xE3, 0xF0, 0xE0}, 114}, /* гра */
- {{0xEF, 0xF0, 0xEE}, 114}, /* про */
- {{0xE4, 0xEE, 0xE2}, 113}, /* дов */
- {{0xE2, 0xE5, 0xF2}, 112}, /* вет */
- {{0xE5, 0xE4, 0xE5}, 112}, /* еде */
- {{0xF8, 0xE5, 0xED}, 111}, /* шен */
- {{0xF7, 0xE8, 0xED}, 110}, /* чин */
- {{0xED, 0xE0, 0xF1}, 109}, /* нас */
- {{0xE8, 0xF2, 0xFC}, 105}, /* ить */
- {{0xF2, 0xE2, 0xEE}, 105}, /* тво */
- {{0xEA, 0xEB, 0xFE}, 104}, /* клю */
- {{0xF0, 0xE8, 0xF2}, 104}, /* рит */
- {{0xF1, 0xF2, 0xFC}, 104}, /* сть */
- {{0xEB, 0xFE, 0xF7}, 104}, /* люч */
- {{0xF2, 0xEE, 0xEC}, 104}, /* том */
- {{0xF1, 0xEB, 0xE5}, 103}, /* сле */
- {{0xF1, 0xEF, 0xEE}, 102}, /* спо */
- {{0xEE, 0xEB, 0xED}, 102}, /* олн */
- {{0xE5, 0xF1, 0xEB}, 102}, /* есл */
- {{0xE5, 0xF0, 0xE8}, 101}, /* ери */
- {{0xED, 0xEE, 0xE9}, 101}, /* ной */
- {{0xF0, 0xEE, 0xEC}, 101}, /* ром */
- {{0xEE, 0xF2, 0xEE}, 99}, /* ото */
- {{0xED, 0xFB, 0xE5}, 99}, /* ные */
- {{0xE7, 0xED, 0xE0}, 99}, /* зна */
- {{0xE2, 0xEB, 0xFF}, 99}, /* вля */
- {{0xF2, 0xE5, 0xF0}, 98}, /* тер */
- {{0xF3, 0xEF, 0xF0}, 97}, /* упр */
- {{0xE0, 0xEA, 0xEE}, 96}, /* ако */
- {{0xEA, 0xEE, 0xE3}, 96}, /* ког */
- {{0xED, 0xFB, 0xE9}, 96}, /* ный */
- {{0xEE, 0xF0, 0xF3}, 96}, /* ору */
- {{0xE5, 0xEB, 0xE5}, 95}, /* еле */
- {{0xE5, 0xF1, 0xEA}, 95}, /* еск */
- {{0xE0, 0xE7, 0xE0}, 95}, /* аза */
- {{0xE9, 0xF1, 0xF2}, 93}, /* йст */
- {{0xEF, 0xEE, 0xF0}, 93}, /* пор */
- {{0xEE, 0xE6, 0xE5}, 92}, /* оже */
- {{0xE8, 0xED, 0xE5}, 91}, /* ине */
- {{0xF9, 0xE5, 0xE9}, 90}, /* щей */
- {{0xE6, 0xE4, 0xE5}, 90}, /* жде */
- {{0xEF, 0xE5, 0xF0}, 89}, /* пер */
- {{0xED, 0xE8, 0xF2}, 89}, /* нит */
- {{0xEE, 0xEB, 0xFC}, 89}, /* оль */
- {{0xE0, 0xE6, 0xE4}, 88}, /* ажд */
- {{0xE6, 0xE5, 0xED}, 87}, /* жен */
- {{0xEB, 0xE0, 0xE4}, 87}, /* лад */
- {{0xE0, 0xEC, 0xE8}, 87}, /* ами */
- {{0xEA, 0xEE, 0xF2}, 86}, /* кот */
- {{0xF7, 0xE0, 0xE5}, 85}, /* чае */
- {{0xE2, 0xE5, 0xF9}, 85}, /* вещ */
- {{0xE2, 0xE8, 0xFF}, 85}, /* вия */
- {{0xFF, 0xF9, 0xE5}, 85}, /* яще */
- {{0xE8, 0xE5, 0xEC}, 85}, /* ием */
- {{0xEA, 0xEB, 0xE0}, 85}, /* кла */
- {{0xE5, 0xE9, 0xF1}, 84}, /* ейс */
- {{0xFB, 0xF2, 0xFC}, 84}, /* ыть */
- {{0xE0, 0xE2, 0xEE}, 84}, /* аво */
- {{0xF0, 0xE0, 0xE6}, 83}, /* раж */
- {{0xEB, 0xFC, 0xF1}, 83}, /* льс */
- {{0xEE, 0xFF, 0xF9}, 82}, /* оящ */
- {{0xE5, 0xED, 0xEE}, 81}, /* ено */
- {{0xE4, 0xF1, 0xF2}, 81}, /* дст */
- {{0xE4, 0xE5, 0xE9}, 80}, /* дей */
- {{0xF0, 0xE5, 0xE1}, 80}, /* реб */
- {{0xFC, 0xF1, 0xF2}, 79}, /* ьст */
- {{0xE5, 0xE4, 0xF1}, 79}, /* едс */
- {{0xE0, 0xF0, 0xE8}, 79}, /* ари */
- {{0xE4, 0xE0, 0xED}, 79}, /* дан */
- {{0xEC, 0xEE, 0xE6}, 78}, /* мож */
- {{0xE8, 0xEC, 0xE5}, 78}, /* име */
- {{0xE8, 0xED, 0xEE}, 78}, /* ино */
- {{0xF0, 0xE8, 0xED}, 77}, /* рин */
- {{0xE4, 0xEE, 0xF1}, 77}, /* дос */
- {{0xEF, 0xEE, 0xF1}, 77}, /* пос */
- {{0xF2, 0xE0, 0xEA}, 77}, /* так */
- {{0xF9, 0xE5, 0xE3}, 77}, /* щег */
- {{0xE4, 0xE0, 0xF2}, 77}, /* дат */
- {{0xEF, 0xEB, 0xE0}, 76}, /* пла */
- {{0xF3, 0xF1, 0xEB}, 76}, /* усл */
- {{0xE8, 0xF6, 0xE0}, 76}, /* ица */
- {{0xF0, 0xEE, 0xE2}, 75}, /* ров */
- {{0xFD, 0xF2, 0xEE}, 75}, /* это */
- {{0xF3, 0xF7, 0xE5}, 74}, /* уче */
- {{0xE4, 0xEE, 0xEB}, 73}, /* дол */
- {{0xFC, 0xED, 0xFB}, 73}, /* ьны */
- {{0xF0, 0xE0, 0xE7}, 73}, /* раз */
- {{0xEC, 0xE8, 0xF1}, 73}, /* мис */
- {{0xE0, 0xED, 0xEE}, 72}, /* ано */
- {{0xF1, 0xF0, 0xEE}, 72}, /* сро */
- {{0xE0, 0xE2, 0xE8}, 72}, /* ави */
- {{0xF2, 0xFC, 0xE8}, 71}, /* тьи */
- {{0xFE, 0xF7, 0xE5}, 70}, /* юче */
- {{0xF1, 0xEA, 0xEB}, 70}, /* скл */
- {{0xE8, 0xF1, 0xF1}, 70}, /* исс */
- {{0xE6, 0xE5, 0xF2}, 69}, /* жет */
- {{0xE5, 0xE4, 0xEE}, 69}, /* едо */
- {{0xEB, 0xE5, 0xE4}, 69}, /* лед */
- {{0xEB, 0xEE, 0xE2}, 69}, /* лов */
- {{0xFE, 0xF9, 0xE8}, 68}, /* ющи */
- {{0xE8, 0xE1, 0xEE}, 68}, /* ибо */
- {{0xEB, 0xE0, 0xF2}, 67}, /* лат */
- {{0xF0, 0xEE, 0xEA}, 67}, /* рок */
- {{0xE0, 0xEA, 0xEB}, 67}, /* акл */
- {{0xF0, 0xE8, 0xF9}, 67}, /* рищ */
- {{0xE1, 0xEE, 0xE2}, 67}, /* бов */
- {{0xE8, 0xF1, 0xEA}, 67}, /* иск */
- {{0xE5, 0xE1, 0xEE}, 67}, /* ебо */
- {{0xEB, 0xFC, 0xE7}, 67}, /* льз */
- {{0xF3, 0xEA, 0xE0}, 67}, /* ука */
- {{0xEB, 0xE8, 0xE1}, 66}, /* либ */
- {{0xEE, 0xEC, 0xF3}, 66}, /* ому */
- {{0xEE, 0xE2, 0xEB}, 66}, /* овл */
- {{0xF2, 0xED, 0xEE}, 65}, /* тно */
- {{0xE2, 0xEE, 0xE9}, 64}, /* вой */
- {{0xF2, 0xEE, 0xE3}, 64}, /* тог */
- {{0xF1, 0xEB, 0xEE}, 64}, /* сло */
- {{0xEE, 0xE7, 0xED}, 64}, /* озн */
- {{0xF1, 0xEE, 0xEE}, 64}, /* соо */
- {{0xE7, 0xE0, 0xF2}, 63}, /* зат */
- {{0xE8, 0xF1, 0xEF}, 63}, /* исп */
- {{0xE0, 0xF7, 0xE5}, 63}, /* аче */
- {{0xED, 0xE8, 0xFE}, 63}, /* нию */
- {{0xEE, 0xED, 0xE5}, 63}, /* оне */
- {{0xEE, 0xEB, 0xE6}, 62}, /* олж */
- {{0xEE, 0xE2, 0xF9}, 61}, /* овщ */
- {{0xF0, 0xE0, 0xF1}, 61}, /* рас */
- {{0xE2, 0xE8, 0xE4}, 61}, /* вид */
- {{0xE2, 0xF9, 0xE8}, 61}, /* вщи */
- {{0xF1, 0xED, 0xEE}, 61}, /* сно */
- {{0xE8, 0xF6, 0xEE}, 61}, /* ицо */
- {{0xE8, 0xF7, 0xE5}, 61}, /* иче */
- {{0xE0, 0xE2, 0xE5}, 61}, /* аве */
- {{0xE3, 0xEB, 0xE0}, 61}, /* гла */
- {{0xF7, 0xE5, 0xF2}, 61}, /* чет */
- {{0xF9, 0xE8, 0xEA}, 61}, /* щик */
- {{0xF0, 0xF3, 0xE3}, 60}, /* руг */
- {{0xF2, 0xE0, 0xED}, 60}, /* тан */
- {{0xE8, 0xEC, 0xEE}, 60}, /* имо */
- {{0xE0, 0xEB, 0xFC}, 60}, /* аль */
- {{0xEE, 0xE2, 0xE8}, 60}, /* ови */
- {{0xE6, 0xE4, 0xE0}, 60}, /* жда */
- {{0xEF, 0xEE, 0xE2}, 60}, /* пов */
- {{0xE5, 0xEC, 0xF3}, 60}, /* ему */
- {{0xFF, 0xF2, 0xE5}, 60}, /* яте */
- {{0xF1, 0xE8, 0xE8}, 59}, /* сии */
- {{0xE1, 0xEE, 0xF2}, 59}, /* бот */
- {{0xE2, 0xFB, 0xEF}, 59}, /* вып */
- {{0xE0, 0xE1, 0xEE}, 59}, /* або */
- {{0xEB, 0xFF, 0xFE}, 59}, /* ляю */
- {{0xF1, 0xF3, 0xF9}, 58}, /* сущ */
- {{0xEE, 0xE4, 0xE5}, 58}, /* оде */
- {{0xE8, 0xED, 0xE8}, 58}, /* ини */
- {{0xF0, 0xE0, 0xF2}, 58}, /* рат */
- {{0xFF, 0xE2, 0xEB}, 58}, /* явл */
- {{0xED, 0xE0, 0xE3}, 57}, /* наг */
- {{0xE4, 0xF0, 0xF3}, 57}, /* дру */
- {{0xF0, 0xE0, 0xE1}, 57}, /* раб */
- {{0xE0, 0xE3, 0xF0}, 57}, /* агр */
- {{0xE8, 0xEE, 0xED}, 57}, /* ион */
- {{0xEC, 0xE5, 0xF1}, 57}, /* мес */
- {{0xE0, 0xF6, 0xE8}, 56}, /* аци */
- {{0xEE, 0xF1, 0xF3}, 56}, /* осу */
- {{0xEA, 0xEE, 0xE9}, 55}, /* кой */
- {{0xF1, 0xE2, 0xEE}, 55}, /* сво */
- {{0xE7, 0xEE, 0xE2}, 55}, /* зов */
- {{0xEE, 0xEF, 0xF0}, 54}, /* опр */
- {{0xF1, 0xEE, 0xE1}, 54}, /* соб */
- {{0xE2, 0xEF, 0xF0}, 54}, /* впр */
- {{0xEB, 0xED, 0xE5}, 54}, /* лне */
- {{0xEE, 0xEC, 0xEC}, 54}, /* омм */
- {{0xE5, 0xF0, 0xE0}, 54}, /* ера */
- {{0xF7, 0xE8, 0xF2}, 54}, /* чит */
- {{0xE5, 0xF0, 0xF7}, 54}, /* ерч */
- {{0xF0, 0xF7, 0xE5}, 54}, /* рче */
- {{0xE0, 0xF2, 0xE8}, 54}, /* ати */
- {{0xED, 0xE8, 0xEA}, 54}, /* ник */
- {{0xEC, 0xEC, 0xE5}, 54}, /* мме */
- {{0xF3, 0xF1, 0xF2}, 53}, /* уст */
- {{0xF2, 0xE5, 0xED}, 53}, /* тен */
- {{0xE2, 0xE5, 0xE4}, 53}, /* вед */
- {{0xF1, 0xEE, 0xE2}, 52}, /* сов */
- {{0xE0, 0xE6, 0xE5}, 52}, /* аже */
- {{0xEE, 0xEA, 0xE0}, 52}, /* ока */
- {{0xFB, 0xEC, 0xE8}, 52}, /* ыми */
- {{0xFE, 0xF2, 0xF1}, 52}, /* ютс */
- {{0xEE, 0xEE, 0xF2}, 52}, /* оот */
- {{0xEC, 0xE8, 0xF2}, 52}, /* мит */
- {{0xFF, 0xFE, 0xF9}, 51}, /* яющ */
- {{0xE2, 0xF8, 0xE5}, 51}, /* вше */
- {{0xF1, 0xE8, 0xEE}, 51}, /* сио */
- {{0xEE, 0xED, 0xEE}, 51}, /* оно */
- {{0xE0, 0xE2, 0xE0}, 51}, /* ава */
- {{0xE0, 0xF9, 0xE5}, 51}, /* аще */
- {{0xEB, 0xFF, 0xE5}, 50}, /* ляе */
- {{0xE5, 0xED, 0xE5}, 50}, /* ене */
- {{0xEE, 0xE4, 0xE8}, 50}, /* оди */
- {{0xEF, 0xF3, 0xED}, 49}, /* пун */
- {{0xEB, 0xE8, 0xF7}, 49}, /* лич */
- {{0xE2, 0xEE, 0xEC}, 49}, /* вом */
- {{0xED, 0xEA, 0xF2}, 49}, /* нкт */
- {{0xED, 0xE5, 0xF1}, 49}, /* нес */
- {{0xE2, 0xE8, 0xEB}, 49}, /* вил */
- {{0xE5, 0xE6, 0xE4}, 49}, /* ежд */
- {{0xF0, 0xE5, 0xF1}, 49}, /* рес */
- {{0xFE, 0xF9, 0xE5}, 49}, /* юще */
- {{0xFC, 0xE7, 0xEE}, 49}, /* ьзо */
- {{0xEF, 0xEE, 0xF2}, 49}, /* пот */
- {{0xF3, 0xED, 0xEA}, 49}, /* унк */
- {{0xF1, 0xF2, 0xE5}, 49}, /* сте */
- {{0xEA, 0xEE, 0xE2}, 49}, /* ков */
- {{0xEE, 0xF1, 0xEB}, 48}, /* осл */
- {{0xFF, 0xE5, 0xF2}, 48}, /* яет */
- {{0xC5, 0xF1, 0xEB}, 48}, /* Есл */
- {{0xCF, 0xF0, 0xE8}, 48}, /* При */
- {{0xF2, 0xE0, 0xE2}, 48}, /* тав */
- {{0xED, 0xE5, 0xF0}, 48}, /* нер */
- {{0xF7, 0xED, 0xEE}, 47}, /* чно */
- {{0xEF, 0xEE, 0xE4}, 47}, /* под */
- {{0xED, 0xF2, 0xE0}, 47}, /* нта */
- {{0xE8, 0xF9, 0xE5}, 47}, /* ище */
- {{0xEE, 0xE1, 0xF9}, 47}, /* общ */
- {{0xE0, 0xE7, 0xEC}, 47}, /* азм */
- {{0xE6, 0xED, 0xEE}, 47}, /* жно */
- {{0xE2, 0xE8, 0xE8}, 46}, /* вии */
- {{0xF0, 0xE0, 0xF9}, 46}, /* ращ */
- {{0xEE, 0xF0, 0xE5}, 46}, /* оре */
- {{0xE2, 0xF8, 0xE8}, 46}, /* вши */
- {{0xE5, 0xEA, 0xF1}, 46}, /* екс */
- {{0xE2, 0xEE, 0xE3}, 46}, /* вог */
- {{0xF7, 0xF2, 0xEE}, 46}, /* что */
- {{0xE8, 0xF7, 0xED}, 45}, /* ичн */
- {{0xEB, 0xE5, 0xEC}, 45}, /* лем */
- {{0xEC, 0xEE, 0xE3}, 45}, /* мог */
- {{0xF2, 0xE2, 0xEB}, 45}, /* твл */
- {{0xE4, 0xEB, 0xE5}, 45}, /* дле */
- {{0xE4, 0xEB, 0xFF}, 45}, /* для */
- {{0xF0, 0xE5, 0xF2}, 45}, /* рет */
- {{0xE0, 0xF0, 0xE0}, 45}, /* ара */
- {{0xED, 0xFF, 0xF2}, 44}, /* нят */
- {{0xE5, 0xF7, 0xE5}, 44}, /* ече */
- {{0xEE, 0xF2, 0xE5}, 44}, /* оте */
- {{0xEE, 0xF0, 0xFB}, 44}, /* оры */
- {{0xEE, 0xF1, 0xED}, 43}, /* осн */
- {{0xEE, 0xE1, 0xEE}, 43}, /* обо */
- {{0xEE, 0xE3, 0xEB}, 43}, /* огл */
- {{0xE8, 0xED, 0xFB}, 43}, /* ины */
- {{0xE5, 0xF1, 0xF1}, 43}, /* есс */
- {{0xEE, 0xE1, 0xF0}, 43}, /* обр */
- {{0xEA, 0xF0, 0xE0}, 43}, /* кра */
- {{0xE8, 0xFF, 0xEC}, 43}, /* иям */
- {{0xE0, 0xEB, 0xEE}, 43}, /* ало */
- {{0xF0, 0xF3, 0xF7}, 43}, /* руч */
- {{0xEE, 0xF0, 0xE3}, 43}, /* орг */
- {{0xF7, 0xE0, 0xFF}, 42}, /* чая */
- {{0xED, 0xE8, 0xEC}, 42}, /* ним */
- {{0xE8, 0xE7, 0xED}, 42}, /* изн */
- {{0xEF, 0xEE, 0xEA}, 42}, /* пок */
- {{0xF1, 0xF2, 0xF3}, 42}, /* сту */
- {{0xE5, 0xEB, 0xFE}, 42}, /* елю */
- {{0xF2, 0xE8, 0xF2}, 42}, /* тит */
- {{0xF6, 0xE5, 0xED}, 42}, /* цен */
- {{0xF7, 0xE0, 0xF1}, 42}, /* час */
- {{0xE3, 0xE0, 0xED}, 42}, /* ган */
- {{0xF0, 0xE3, 0xE0}, 42}, /* рга */
- {{0xF1, 0xF2, 0xED}, 42}, /* стн */
- {{0xF0, 0xE5, 0xE6}, 42}, /* реж */
- {{0xF3, 0xEC, 0xEC}, 42}, /* умм */
- {{0xF2, 0xE2, 0xF3}, 41}, /* тву */
- {{0xF2, 0xF3, 0xEF}, 41}, /* туп */
- {{0xF1, 0xEA, 0xE8}, 40}, /* ски */
- {{0xE4, 0xE5, 0xEA}, 40}, /* дек */
- {{0xEB, 0xE5, 0xE6}, 40}, /* леж */
- {{0xE5, 0xF1, 0xE5}, 40}, /* есе */
- {{0xE2, 0xE8, 0xE5}, 40}, /* вие */
- {{0xF2, 0xEA, 0xE0}, 40}, /* тка */
- {{0xE5, 0xEA, 0xF0}, 40}, /* екр */
- {{0xEE, 0xE4, 0xEE}, 40}, /* одо */
- {{0xEA, 0xF1, 0xE0}, 40}, /* кса */
- {{0xF0, 0xE5, 0xEA}, 40}, /* рек */
- {{0xED, 0xF2, 0xE5}, 40}, /* нте */
- {{0xF3, 0xE3, 0xE8}, 40}, /* уги */
- {{0xE1, 0xFB, 0xEB}, 40}, /* был */
- {{0xE8, 0xED, 0xFF}, 40}, /* иня */
- {{0xE5, 0xF9, 0xE8}, 39}, /* ещи */
- {{0xE3, 0xE5, 0xED}, 39}, /* ген */
- {{0xCA, 0xEE, 0xE4}, 39}, /* Код */
- {{0xE4, 0xE8, 0xF2}, 39}, /* дит */
- {{0xF1, 0xF5, 0xEE}, 39}, /* схо */
- {{0xE8, 0xED, 0xF2}, 39}, /* инт */
- {{0xF1, 0xF3, 0xEC}, 39}, /* сум */
- {{0xF0, 0xEE, 0xED}, 39}, /* рон */
- {{0xEE, 0xF2, 0xEA}, 39}, /* отк */
- {{0xE4, 0xEE, 0xEA}, 39}, /* док */
- {{0xE8, 0xEB, 0xE0}, 38}, /* ила */
- {{0xF6, 0xE5, 0xF1}, 38}, /* цес */
- {{0xE8, 0xEA, 0xE0}, 38}, /* ика */
- {{0xE7, 0xED, 0xE8}, 38}, /* зни */
- {{0xEE, 0xE2, 0xFB}, 38}, /* овы */
- {{0xEB, 0xE6, 0xED}, 38}, /* лжн */
- {{0xF3, 0xEF, 0xEB}, 38}, /* упл */
- {{0xE3, 0xE4, 0xE0}, 37}, /* гда */
- {{0xEB, 0xE0, 0xE6}, 37}, /* лаж */
- {{0xE6, 0xE5, 0xE4}, 37}, /* жед */
- {{0xE1, 0xE5, 0xE7}, 37}, /* без */
- {{0xE4, 0xE5, 0xF2}, 37}, /* дет */
- {{0xEE, 0xF0, 0xFF}, 37}, /* оря */
- {{0xF0, 0xEE, 0xF1}, 37}, /* рос */
- {{0xEE, 0xE1, 0xEB}, 37}, /* обл */
- {{0xF6, 0xE8, 0xE8}, 37}, /* ции */
- {{0xE4, 0xEE, 0xEC}, 37}, /* дом */
- {{0xED, 0xF6, 0xE5}, 37}, /* нце */
- {{0xF8, 0xE5, 0xE3}, 37}, /* шег */
- {{0xEB, 0xEE, 0xE6}, 37}, /* лож */
- {{0xEE, 0xED, 0xE0}, 37}, /* она */
- {{0xEE, 0xEA, 0xEB}, 37}, /* окл */
- {{0xEE, 0xE3, 0xE4}, 37}, /* огд */
- {{0xF0, 0xEE, 0xE4}, 37}, /* род */
- {{0xE5, 0xED, 0xE0}, 37}, /* ена */
- {{0xEE, 0xED, 0xF6}, 37}, /* онц */
- {{0xEE, 0xF2, 0xED}, 37}, /* отн */
- {{0xF1, 0xEE, 0xE3}, 37}, /* сог */
- {{0xE5, 0xE2, 0xF8}, 37}, /* евш */
- {{0xE2, 0xE8, 0xF2}, 36}, /* вит */
- {{0xE5, 0xF0, 0xEF}, 36}, /* ерп */
- {{0xEE, 0xE4, 0xE0}, 36}, /* ода */
- {{0xE5, 0xF2, 0xE5}, 36}, /* ете */
- {{0xED, 0xE5, 0xEE}, 36}, /* нео */
- {{0xF0, 0xEF, 0xE5}, 36}, /* рпе */
- {{0xE5, 0xF0, 0xF8}, 36}, /* ерш */
- {{0xE8, 0xEC, 0xE8}, 36}, /* ими */
- {{0xE8, 0xE2, 0xF8}, 36}, /* ивш */
- {{0xFB, 0xEF, 0xEB}, 36}, /* ыпл */
- {{0xEF, 0xE5, 0xE2}, 36}, /* пев */
- {{0xE0, 0xE4, 0xE0}, 36}, /* ада */
- {{0xEC, 0xEE, 0xF1}, 35}, /* мос */
- {{0xEE, 0xE1, 0xF1}, 35}, /* обс */
- {{0xED, 0xE5, 0xE4}, 34}, /* нед */
- {{0xE8, 0xEA, 0xEE}, 34}, /* ико */
- {{0xF9, 0xE8, 0xEC}, 34}, /* щим */
- {{0xE4, 0xE5, 0xF0}, 34}, /* дер */
- {{0xF1, 0xEA, 0xE0}, 34}, /* ска */
- {{0xEE, 0xF0, 0xEC}, 34}, /* орм */
- {{0xF3, 0xEC, 0xE5}, 34}, /* уме */
- {{0xEE, 0xEE, 0xE1}, 34}, /* ооб */
- {{0xF0, 0xE8, 0xF1}, 34}, /* рис */
- {{0xEE, 0xE1, 0xFA}, 33}, /* объ */
- {{0xEE, 0xEB, 0xF3}, 33}, /* олу */
- {{0xFA, 0xFF, 0xE2}, 33}, /* ъяв */
- {{0xF0, 0xE5, 0xEC}, 33}, /* рем */
- {{0xF9, 0xE8, 0xF5}, 33}, /* щих */
- {{0xF3, 0xFE, 0xF9}, 33}, /* ующ */
- {{0xEA, 0xE6, 0xE5}, 33}, /* кже */
- {{0xE8, 0xE4, 0xE5}, 33}, /* иде */
- {{0xE1, 0xF1, 0xF2}, 33}, /* бст */
- {{0xE0, 0xEA, 0xE6}, 33}, /* акж */
- {{0xE2, 0xF3, 0xFE}, 33}, /* вую */
- {{0xE0, 0xF1, 0xF5}, 33}, /* асх */
- {{0xE0, 0xED, 0xE0}, 32}, /* ана */
- {{0xED, 0xE0, 0xE4}, 32}, /* над */
- {{0xEE, 0xE1, 0xE5}, 32}, /* обе */
- {{0xFB, 0xF2, 0xEA}, 32}, /* ытк */
- {{0xFD, 0xF2, 0xE8}, 32}, /* эти */
- {{0xEE, 0xE6, 0xED}, 32}, /* ожн */
- {{0xE0, 0xF2, 0xFB}, 31}, /* аты */
- {{0xF1, 0xE4, 0xE5}, 31}, /* сде */
- {{0xE0, 0xFE, 0xF2}, 31}, /* ают */
- {{0xFF, 0xF2, 0xFC}, 31}, /* ять */
- {{0xEE, 0xFF, 0xF2}, 31}, /* оят */
- {{0xE5, 0xF2, 0xFC}, 31}, /* еть */
- {{0xE0, 0xE3, 0xE5}, 31}, /* аге */
- {{0xF7, 0xF0, 0xE5}, 31}, /* чре */
- {{0xE5, 0xED, 0xFB}, 31}, /* ены */
- {{0xF3, 0xE1, 0xFB}, 31}, /* убы */
- {{0xE8, 0xF1, 0xF2}, 30}, /* ист */
- {{0xFF, 0xFE, 0xF2}, 30}, /* яют */
- {{0xF0, 0xFF, 0xE4}, 30}, /* ряд */
- {{0xE3, 0xEE, 0xF1}, 30}, /* гос */
- {{0xE8, 0xEC, 0xE0}, 30}, /* има */
- {{0xE7, 0xE0, 0xF1}, 30}, /* зас */
- {{0xE0, 0xFE, 0xF9}, 30}, /* ающ */
- {{0xEE, 0xE7, 0xE2}, 30}, /* озв */
- {{0xE5, 0xE4, 0xE8}, 30}, /* еди */
- {{0xEE, 0xEC, 0xE5}, 30}, /* оме */
- {{0xED, 0xE8, 0xE9}, 30}, /* ний */
- {{0xF1, 0xF3, 0xE4}, 30}, /* суд */
- {{0xE7, 0xE4, 0xEE}, 29}, /* здо */
- {{0xF1, 0xE2, 0xE8}, 29}, /* сви */
- {{0xEE, 0xEB, 0xE8}, 29}, /* оли */
- {{0xEE, 0xE2, 0xFC}, 29}, /* овь */
- {{0xE2, 0xE8, 0xE9}, 29}, /* вий */
- {{0xE4, 0xEE, 0xF0}, 29}, /* дор */
- {{0xE4, 0xE5, 0xFF}, 29}, /* дея */
- {{0xE5, 0xFF, 0xF2}, 29}, /* еят */
- {{0xF6, 0xEE, 0xEC}, 29}, /* цом */
- {{0xE8, 0xE7, 0xE0}, 28}, /* иза */
- {{0xF1, 0xF7, 0xE5}, 28}, /* сче */
- {{0xEA, 0xF2, 0xE0}, 28}, /* кта */
- {{0xEE, 0xE4, 0xED}, 28}, /* одн */
- {{0xE1, 0xEB, 0xE0}, 28}, /* бла */
- {{0xEE, 0xE4, 0xEB}, 28}, /* одл */
- {{0xE8, 0xF2, 0xE0}, 28}, /* ита */
- {{0xC4, 0xEE, 0xE3}, 28}, /* Дог */
- {{0xEE, 0xF1, 0xEE}, 28}, /* осо */
- {{0xED, 0xEE, 0xF8}, 28}, /* нош */
- {{0xEA, 0xF3, 0xF0}, 28}, /* кур */
- {{0xE8, 0xED, 0xE0}, 28}, /* ина */
- {{0xEE, 0xF8, 0xE5}, 28}, /* оше */
- {{0xED, 0xE0, 0xEB}, 28}, /* нал */
- {{0xED, 0xE8, 0xE7}, 27}, /* низ */
- {{0xE7, 0xE2, 0xF0}, 27}, /* звр */
- {{0xE2, 0xF0, 0xE0}, 27}, /* вра */
- {{0xEB, 0xE5, 0xF2}, 27}, /* лет */
- {{0xE5, 0xF9, 0xFC}, 27}, /* ещь */
- {{0xF0, 0xE8, 0xE4}, 27}, /* рид */
- {{0xE4, 0xED, 0xEE}, 27}, /* дно */
- {{0xF0, 0xE8, 0xEE}, 27}, /* рио */
- {{0xEE, 0xE8, 0xEC}, 27}, /* оим */
- {{0xE5, 0xF0, 0xE6}, 27}, /* ерж */
- {{0xF3, 0xE2, 0xE5}, 26}, /* уве */
- {{0xEE, 0xED, 0xEA}, 26}, /* онк */
- {{0xE5, 0xEB, 0xEA}, 26}, /* елк */
- {{0xEB, 0xE0, 0xE2}, 26}, /* лав */
- {{0xE0, 0xF2, 0xEE}, 26}, /* ато */
- {{0xFF, 0xEC, 0xE8}, 26}, /* ями */
- {{0xEC, 0xEC, 0xFB}, 26}, /* ммы */
- {{0xE5, 0xF1, 0xEF}, 26}, /* есп */
- {{0xED, 0xEA, 0xF3}, 26}, /* нку */
- {{0xE8, 0xF6, 0xF3}, 25}, /* ицу */
- {{0xE4, 0xF1, 0xEA}, 25}, /* дск */
- {{0xED, 0xE8, 0xED}, 25}, /* нин */
- {{0xEF, 0xEB, 0xE5}, 25}, /* пле */
- {{0xF4, 0xEE, 0xF0}, 25}, /* фор */
- {{0xEB, 0xE0, 0xF1}, 25}, /* лас */
- {{0xE4, 0xE8, 0xEC}, 25}, /* дим */
- {{0xE5, 0xF1, 0xFF}, 25}, /* еся */
- {{0xED, 0xE8, 0xF7}, 25}, /* нич */
- {{0xEE, 0xE2, 0xF0}, 25}, /* овр */
- {{0xE2, 0xF1, 0xEB}, 25}, /* всл */
- {{0xF0, 0xF8, 0xE5}, 25}, /* рше */
- {{0xE5, 0xF9, 0xE0}, 25}, /* еща */
- {{0xE6, 0xED, 0xFB}, 25}, /* жны */
- {{0xF0, 0xE8, 0xEC}, 25}, /* рим */
- {{0xE7, 0xE0, 0xF6}, 25}, /* зац */
- {{0xE1, 0xF9, 0xE5}, 25}, /* бще */
- {{0xE0, 0xEA, 0xF2}, 25}, /* акт */
- {{0xE0, 0xE4, 0xF1}, 25}, /* адс */
- {{0xF3, 0xF7, 0xF0}, 25}, /* учр */
- {{0xF9, 0xE8, 0xE5}, 25}, /* щие */
- {{0xE6, 0xE8, 0xF2}, 24}, /* жит */
- {{0xE1, 0xF0, 0xE5}, 24}, /* бре */
- {{0xF3, 0xE3, 0xEE}, 24}, /* уго */
- {{0xE8, 0xFF, 0xF5}, 24}, /* иях */
- {{0xF2, 0xFC, 0xFE}, 24}, /* тью */
- {{0xFC, 0xF1, 0xFF}, 24}, /* ься */
- {{0xE2, 0xEE, 0xE2}, 24}, /* вов */
- {{0xEE, 0xF7, 0xED}, 24}, /* очн */
- {{0xE2, 0xEE, 0xEE}, 24}, /* воо */
- {{0xEE, 0xE4, 0xFB}, 24}, /* оды */
- {{0xEB, 0xEE, 0xE3}, 24}, /* лог */
- {{0xE2, 0xE0, 0xE5}, 24}, /* вае */
- {{0xE0, 0xFF, 0xF5}, 24}, /* аях */
- {{0xF2, 0xFC, 0xF1}, 24}, /* тьс */
- {{0xE4, 0xE8, 0xF7}, 24}, /* дич */
- {{0xEA, 0xE8, 0xF5}, 24}, /* ких */
- {{0xF6, 0xE0, 0xEC}, 24}, /* цам */
- {{0xE8, 0xE7, 0xE2}, 24}, /* изв */
- {{0xF2, 0xE8, 0xE2}, 24}, /* тив */
- {{0xE5, 0xEE, 0xE1}, 24}, /* еоб */
- {{0xF1, 0xEE, 0xF1}, 24}, /* сос */
- {{0xF8, 0xE8, 0xEC}, 24}, /* шим */
- {{0xFB, 0xEF, 0xEE}, 24}, /* ыпо */
- {{0xE5, 0xE6, 0xE0}, 24}, /* ежа */
- {{0xF2, 0xEE, 0xE8}, 24}, /* тои */
- {{0xEA, 0xF2, 0xEE}, 24}, /* кто */
- {{0xE5, 0xF7, 0xE0}, 24}, /* еча */
- {{0xE8, 0xE4, 0xE8}, 24}, /* иди */
- {{0xE1, 0xF9, 0xE8}, 23}, /* бщи */
- {{0xF2, 0xFC, 0xE5}, 23}, /* тье */
- {{0xE1, 0xFA, 0xFF}, 23}, /* бъя */
- {{0xED, 0xE0, 0xF7}, 23}, /* нач */
- {{0xF2, 0xE5, 0xF7}, 23}, /* теч */
- {{0xF3, 0xF0, 0xF1}, 23}, /* урс */
- {{0xE2, 0xE5, 0xF7}, 23}, /* веч */
- {{0xE5, 0xEC, 0xE5}, 23}, /* еме */
- {{0xEE, 0xE1, 0xF5}, 23}, /* обх */
- {{0xE1, 0xF5, 0xEE}, 23}, /* бхо */
- {{0xE4, 0xE0, 0xE5}, 23}, /* дае */
- {{0xF0, 0xE5, 0xE7}, 23}, /* рез */
- {{0xEA, 0xE0, 0xE6}, 22}, /* каж */
- {{0xEE, 0xEA, 0xF3}, 22}, /* оку */
- {{0xE0, 0xEC, 0xE5}, 22}, /* аме */
- {{0xED, 0xE5, 0xE7}, 22}, /* нез */
- {{0xFB, 0xE2, 0xE0}, 22}, /* ыва */
- {{0xF1, 0xE2, 0xFF}, 22}, /* свя */
- {{0xF0, 0xE0, 0xE4}, 22}, /* рад */
- {{0xE5, 0xE7, 0xE0}, 22}, /* еза */
- {{0xE8, 0xE2, 0xE0}, 22}, /* ива */
- {{0xEA, 0xE0, 0xEC}, 22}, /* кам */
- {{0xED, 0xE5, 0xEC}, 22}, /* нем */
- {{0xF2, 0xEA, 0xEE}, 22}, /* тко */
- {{0xE7, 0xE2, 0xE5}, 22}, /* зве */
- {{0xE2, 0xFF, 0xE7}, 22}, /* вяз */
- {{0xFF, 0xF2, 0xE8}, 22}, /* яти */
- {{0xEE, 0xF5, 0xF0}, 22}, /* охр */
- {{0xF0, 0xEE, 0xF2}, 22}, /* рот */
- {{0xEE, 0xEB, 0xE5}, 22}, /* оле */
- {{0xE1, 0xF0, 0xE0}, 22}, /* бра */
- {{0xE0, 0xE5, 0xEC}, 22}, /* аем */
- {{0xEB, 0xE0, 0xF8}, 21}, /* лаш */
- {{0xE8, 0xE7, 0xEC}, 21}, /* изм */
- {{0xE3, 0xF3, 0xF2}, 21}, /* гут */
- {{0xEE, 0xE6, 0xE4}, 21}, /* ожд */
- {{0xEA, 0xE0, 0xEA}, 21}, /* как */
- {{0xEA, 0xE0, 0xF7}, 21}, /* кач */
- {{0xED, 0xE0, 0xEC}, 21}, /* нам */
- {{0xE4, 0xEE, 0xF5}, 21}, /* дох */
- {{0xEE, 0xF5, 0xEE}, 21}, /* охо */
- {{0xFE, 0xF0, 0xE8}, 21}, /* юри */
- {{0xE2, 0xE0, 0xEC}, 21}, /* вам */
- {{0xE7, 0xEC, 0xEE}, 21}, /* змо */
- {{0xE4, 0xEA, 0xE5}, 21}, /* дке */
- {{0xE1, 0xE0, 0xED}, 21}, /* бан */
- {{0xE5, 0xEB, 0xE8}, 21}, /* ели */
- {{0xF0, 0xE8, 0xE7}, 21}, /* риз */
- {{0xEB, 0xED, 0xEE}, 21}, /* лно */
- {{0xE2, 0xFB, 0xF8}, 21}, /* выш */
- {{0xE4, 0xF6, 0xE0}, 21}, /* дца */
- {{0xFF, 0xE4, 0xEA}, 21}, /* ядк */
- {{0xEE, 0xF2, 0xF1}, 21}, /* отс */
- {{0xF2, 0xE5, 0xE9}, 21}, /* тей */
- {{0xE0, 0xED, 0xEA}, 21}, /* анк */
- {{0xED, 0xE5, 0xE3}, 21}, /* нег */
- {{0xF6, 0xE0, 0xF2}, 21}, /* цат */
- {{0xE5, 0xEC, 0xFB}, 21}, /* емы */
- {{0xE2, 0xEE, 0xE5}, 21}, /* вое */
- {{0xE4, 0xE0, 0xF7}, 21}, /* дач */
- {{0xEE, 0xE3, 0xF3}, 21}, /* огу */
- {{0xEB, 0xE6, 0xE5}, 21}, /* лже */
- {{0xF2, 0xED, 0xE8}, 21}, /* тни */
- {{0xE7, 0xE0, 0xE2}, 21}, /* зав */
- {{0xE2, 0xE5, 0xF1}, 21}, /* вес */
- {{0xF1, 0xE0, 0xEC}, 20}, /* сам */
- {{0xE0, 0xF0, 0xED}, 20}, /* арн */
- {{0xF7, 0xED, 0xFB}, 20}, /* чны */
- {{0xF1, 0xF0, 0xE5}, 20}, /* сре */
- {{0xF2, 0xE8, 0xFF}, 20}, /* тия */
- {{0xE8, 0xF1, 0xEB}, 20}, /* исл */
- {{0xD1, 0xF2, 0xF0}, 20}, /* Стр */
- {{0xED, 0xF2, 0xEE}, 20}, /* нто */
- {{0xF3, 0xF2, 0xF0}, 20}, /* утр */
- {{0xE0, 0xF8, 0xE5}, 20}, /* аше */
- {{0xE5, 0xEB, 0xE0}, 20}, /* ела */
- {{0xF3, 0xE4, 0xEE}, 20}, /* удо */
- {{0xE6, 0xE8, 0xE7}, 19}, /* жиз */
- {{0xEF, 0xE8, 0xF1}, 19}, /* пис */
- {{0xE0, 0xE8, 0xEC}, 19}, /* аим */
- {{0xF7, 0xE8, 0xF1}, 19}, /* чис */
- {{0xE5, 0xE6, 0xE8}, 19}, /* ежи */
- {{0xE2, 0xF1, 0xE5}, 19}, /* все */
- {{0xEB, 0xFC, 0xEA}, 19}, /* льк */
- {{0xE0, 0xF2, 0xF3}, 19}, /* ату */
- {{0xF3, 0xE4, 0xE0}, 19}, /* уда */
- {{0xF8, 0xE8, 0xE9}, 19}, /* ший */
- {{0xE7, 0xE0, 0xF0}, 19}, /* зар */
- {{0xE5, 0xE4, 0xED}, 19}, /* едн */
- {{0xE0, 0xE2, 0xF8}, 19}, /* авш */
- {{0xF0, 0xEE, 0xE8}, 19}, /* рои */
- {{0xE8, 0xE4, 0xE0}, 19}, /* ида */
- {{0xE0, 0xF0, 0xEE}, 19}, /* аро */
- {{0xF2, 0xEE, 0xE9}, 19}, /* той */
- {{0xE6, 0xE0, 0xF9}, 19}, /* жащ */
- {{0xE5, 0xF1, 0xEE}, 19}, /* есо */
- {{0xEF, 0xE0, 0xEB}, 19}, /* пал */
- {{0xF9, 0xE0, 0xE5}, 19}, /* щае */
- {{0xF0, 0xFB, 0xE5}, 19}, /* рые */
- {{0xE5, 0xED, 0xFF}, 19}, /* еня */
- {{0xF9, 0xE8, 0xE9}, 19}, /* щий */
- {{0xEB, 0xF3, 0xE3}, 19}, /* луг */
- {{0xFE, 0xF7, 0xE8}, 18}, /* ючи */
- {{0xF3, 0xEB, 0xFC}, 18}, /* уль */
- {{0xEC, 0xFB, 0xF5}, 18}, /* мых */
- {{0xF0, 0xEE, 0xE3}, 18}, /* рог */
- {{0xF1, 0xEE, 0xF5}, 18}, /* сох */
- {{0xEA, 0xEE, 0xE5}, 18}, /* кое */
- {{0xED, 0xF2, 0xF1}, 18}, /* нтс */
- {{0xE0, 0xE7, 0xED}, 18}, /* азн */
- {{0xF2, 0xED, 0xFB}, 18}, /* тны */
- {{0xEE, 0xE4, 0xFF}, 18}, /* одя */
- {{0xEE, 0xE1, 0xED}, 18}, /* обн */
- {{0xE2, 0xFB, 0xE4}, 18}, /* выд */
- {{0xEE, 0xF1, 0xFF}, 18}, /* ося */
- {{0xFC, 0xF2, 0xE0}, 18}, /* ьта */
- {{0xED, 0xFF, 0xFE}, 18}, /* няю */
- {{0xED, 0xE0, 0xF0}, 18}, /* нар */
- {{0xE5, 0xE7, 0xF3}, 18}, /* езу */
- {{0xE0, 0xF1, 0xED}, 18}, /* асн */
- {{0xE7, 0xF3, 0xEB}, 18}, /* зул */
- {{0xF6, 0xE8, 0xEF}, 18}, /* цип */
- {{0xEA, 0xF2, 0xE5}, 18}, /* кте */
- {{0xE4, 0xEE, 0xEF}, 18}, /* доп */
- {{0xED, 0xF6, 0xE8}, 18}, /* нци */
- {{0xF1, 0xEF, 0xE5}, 18}, /* спе */
- {{0xE8, 0xEC, 0xFB}, 18}, /* имы */
- {{0xEC, 0xEE, 0xEC}, 18}, /* мом */
- {{0xEF, 0xE5, 0xF7}, 18}, /* печ */
- {{0xCE, 0xE1, 0xFF}, 18}, /* Обя */
- {{0xCF, 0xF0, 0xE0}, 18}, /* Пра */
- {{0xEE, 0xEB, 0xEE}, 18}, /* оло */
- {{0xF2, 0xF1, 0xEA}, 18}, /* тск */
- {{0xEB, 0xED, 0xE8}, 18}, /* лни */
- {{0xE5, 0xF0, 0xF2}, 18}, /* ерт */
- {{0xE8, 0xF1, 0xFC}, 18}, /* ись */
- {{0xEB, 0xFC, 0xF2}, 18}, /* льт */
- {{0xF1, 0xF3, 0xF2}, 18}, /* сут */
- {{0xE2, 0xEE, 0xE1}, 17}, /* воб */
- {{0xF0, 0xED, 0xFB}, 17}, /* рны */
- {{0xE1, 0xED, 0xFB}, 17}, /* бны */
- {{0xFB, 0xE4, 0xE0}, 17}, /* ыда */
- {{0xFC, 0xE7, 0xF3}, 17}, /* ьзу */
- {{0xE5, 0xE4, 0xEF}, 17}, /* едп */
- {{0xE0, 0xE4, 0xE5}, 17}, /* аде */
- {{0xE8, 0xEF, 0xE0}, 17}, /* ипа */
- {{0xF1, 0xE5, 0xE9}, 17}, /* сей */
- {{0xE5, 0xE5, 0xF1}, 17}, /* еес */
- {{0xEE, 0xE8, 0xE7}, 17}, /* оиз */
- {{0xEE, 0xF1, 0xE2}, 17}, /* осв */
- {{0xE4, 0xE8, 0xE2}, 17}, /* див */
- {{0xED, 0xE0, 0xED}, 17}, /* нан */
- {{0xE5, 0xF2, 0xE0}, 17}, /* ета */
- {{0xE4, 0xED, 0xE5}, 17}, /* дне */
- {{0xE8, 0xEE, 0xE1}, 17}, /* иоб */
- {{0xF3, 0xE5, 0xF2}, 17}, /* ует */
- {{0xED, 0xE0, 0xF5}, 17}, /* нах */
- {{0xF1, 0xEC, 0xE5}, 17}, /* сме */
- {{0xE0, 0xEB, 0xE8}, 17}, /* али */
- {{0xE1, 0xFA, 0xE5}, 17}, /* бъе */
- {{0xEF, 0xE0, 0xF1}, 17}, /* пас */
- {{0xE7, 0xE0, 0xEB}, 17}, /* зал */
- {{0xF0, 0xE6, 0xE0}, 16}, /* ржа */
- {{0xFF, 0xE2, 0xE8}, 16}, /* яви */
- {{0xE6, 0xE0, 0xF2}, 16}, /* жат */
- {{0xE1, 0xEE, 0xE6}, 16}, /* бож */
- {{0xF1, 0xE8, 0xEB}, 16}, /* сил */
- {{0xED, 0xF3, 0xFE}, 16}, /* ную */
- {{0xEF, 0xE5, 0xED}, 16}, /* пен */
- {{0xEC, 0xE0, 0xF2}, 16}, /* мат */
- {{0xEE, 0xED, 0xED}, 16}, /* онн */
- {{0xE2, 0xE8, 0xED}, 16}, /* вин */
- {{0xF2, 0xEA, 0xE8}, 16}, /* тки */
- {{0xF2, 0xEE, 0xF7}, 16}, /* точ */
- {{0xF1, 0xF7, 0xE8}, 16}, /* счи */
- {{0xED, 0xE8, 0xF6}, 16}, /* ниц */
- {{0xF9, 0xE5, 0xE5}, 16}, /* щее */
- {{0xE1, 0xE5, 0xF1}, 16}, /* бес */
- {{0xE0, 0xE4, 0xF6}, 16}, /* адц */
- {{0xCA, 0xEE, 0xEC}, 16}, /* Ком */
- {{0xFC, 0xE8, 0xEC}, 16}, /* ьим */
- {{0xF3, 0xF2, 0xF1}, 16}, /* утс */
- {{0xE0, 0xF7, 0xE8}, 16}, /* ачи */
- {{0xEF, 0xEE, 0xED}, 16}, /* пон */
- {{0xEA, 0xE0, 0xE5}, 16}, /* кае */
- {{0xE8, 0xE3, 0xF0}, 16}, /* игр */
- {{0xE0, 0xEA, 0xE8}, 16}, /* аки */
- {{0xE0, 0xF9, 0xE8}, 16}, /* ащи */
- {{0xEB, 0xFC, 0xF6}, 16}, /* льц */
- {{0xE2, 0xED, 0xEE}, 16}, /* вно */
- {{0xFB, 0xF8, 0xE5}, 15}, /* ыше */
- {{0xCB, 0xE8, 0xF6}, 15}, /* Лиц */
- {{0xFC, 0xE5, 0xE9}, 15}, /* ьей */
- {{0xF8, 0xE5, 0xEC}, 15}, /* шем */
- {{0xF3, 0xE1, 0xEB}, 15}, /* убл */
- {{0xF0, 0xE0, 0xF6}, 15}, /* рац */
- {{0xEA, 0xF3, 0xEC}, 15}, /* кум */
- {{0xF0, 0xE5, 0xE3}, 15}, /* рег */
- {{0xEE, 0xEF, 0xE0}, 15}, /* опа */
- {{0xC2, 0xEE, 0xE7}, 15}, /* Воз */
- {{0xF2, 0xE0, 0xE5}, 15}, /* тае */
- {{0xEE, 0xE1, 0xFB}, 15}, /* обы */
- {{0xE1, 0xEB, 0xE8}, 15}, /* бли */
- {{0xF0, 0xEC, 0xE5}, 15}, /* рме */
- {{0xE2, 0xEE, 0xF1}, 15}, /* вос */
- {{0xE0, 0xF1, 0xE8}, 15}, /* аси */
- {{0xF2, 0xE0, 0xEC}, 15}, /* там */
- {{0xFC, 0xEC, 0xE5}, 15}, /* ьме */
- {{0xEE, 0xE3, 0xE0}, 15}, /* ога */
- {{0xE8, 0xEB, 0xEE}, 15}, /* ило */
- {{0xF1, 0xFC, 0xEC}, 15}, /* сьм */
- {{0xF0, 0xF2, 0xE8}, 15}, /* рти */
- {{0xF2, 0xF1, 0xF3}, 15}, /* тсу */
- {{0xF1, 0xE5, 0xED}, 15}, /* сен */
- {{0xF2, 0xE0, 0xEB}, 15}, /* тал */
- {{0xE4, 0xE0, 0xF0}, 15}, /* дар */
- {{0xE0, 0xEC, 0xEE}, 15}, /* амо */
- {{0xE5, 0xE4, 0xEB}, 15}, /* едл */
- {{0xF1, 0xF3, 0xE1}, 15}, /* суб */
- {{0xE5, 0xE9, 0xF4}, 15}, /* ейф */
- {{0xD5, 0xF0, 0xE0}, 15}, /* Хра */
- {{0xEB, 0xE0, 0xEC}, 14}, /* лам */
- {{0xE0, 0xF0, 0xF3}, 14}, /* ару */
- {{0xE3, 0xE8, 0xF5}, 14}, /* гих */
- {{0xF6, 0xE8, 0xFF}, 14}, /* ция */
- {{0xE4, 0xE0, 0xE2}, 14}, /* дав */
- {{0xEB, 0xE8, 0xF8}, 14}, /* лиш */
- {{0xFE, 0xF7, 0xE0}, 14}, /* юча */
- {{0xE0, 0xED, 0xF1}, 14}, /* анс */
- {{0xEE, 0xE3, 0xF0}, 14}, /* огр */
- {{0xE8, 0xF9, 0xE0}, 14}, /* ища */
- {{0xE5, 0xED, 0xFC}, 14}, /* ень */
- {{0xEE, 0xF2, 0xE8}, 14}, /* оти */
- {{0xE0, 0xE4, 0xFB}, 13}, /* ады */
- {{0xE0, 0xF9, 0xE0}, 13}, /* аща */
- {{0xE2, 0xEE, 0xE8}, 13}, /* вои */
- {{0xE2, 0xFB, 0xEC}, 13}, /* вым */
- {{0xE2, 0xFC, 0xFF}, 13}, /* вья */
- {{0xEA, 0xE8, 0xE5}, 13}, /* кие */
- {{0xEB, 0xE8, 0xF1}, 13}, /* лис */
- {{0xEC, 0xE5, 0xE4}, 13}, /* мед */
- {{0xF2, 0xE8, 0xF5}, 13}, /* тих */
- {{0xE5, 0xF2, 0xEE}, 13}, /* ето */
- {{0xE7, 0xEB, 0xEE}, 13}, /* зло */
- {{0xEE, 0xEF, 0xE5}, 13}, /* опе */
- {{0xF1, 0xE8, 0xEC}, 13}, /* сим */
- {{0xFF, 0xE7, 0xE8}, 13}, /* язи */
- {{0xE8, 0xED, 0xE4}, 13}, /* инд */
- {{0xF7, 0xF3, 0xE6}, 13}, /* чуж */
- {{0xEB, 0xEA, 0xE8}, 13}, /* лки */
- {{0xE4, 0xEF, 0xF0}, 13}, /* дпр */
- {{0xED, 0xE4, 0xE8}, 13}, /* нди */
- {{0xEE, 0xF2, 0xE0}, 13}, /* ота */
- {{0xEE, 0xF2, 0xFB}, 13}, /* оты */
- {{0xEB, 0xE0, 0xF7}, 13}, /* лач */
- {{0xEA, 0xE8, 0xEC}, 13}, /* ким */
- {{0xE8, 0xF1, 0xE8}, 13}, /* иси */
- {{0xE2, 0xE0, 0xEB}, 13}, /* вал */
- {{0xE5, 0xEC, 0xEE}, 13}, /* емо */
- {{0xEF, 0xF3, 0xE1}, 13}, /* пуб */
- {{0xFF, 0xE5, 0xEC}, 13}, /* яем */
- {{0xE1, 0xEE, 0xEB}, 13}, /* бол */
- {{0xED, 0xF2, 0xF3}, 13}, /* нту */
- {{0xED, 0xE5, 0xE9}, 13}, /* ней */
- {{0xED, 0xE0, 0xFF}, 13}, /* ная */
- {{0xE5, 0xF1, 0xE0}, 13}, /* еса */
- {{0xF0, 0xED, 0xEE}, 13}, /* рно */
- {{0xF9, 0xE5, 0xEC}, 13}, /* щем */
- {{0xE0, 0xED, 0xFB}, 13}, /* аны */
- {{0xC4, 0xEE, 0xE2}, 13}, /* Дов */
- {{0xF7, 0xE8, 0xE2}, 13}, /* чив */
- {{0xE2, 0xE8, 0xF1}, 13}, /* вис */
- {{0xEE, 0xEF, 0xEE}, 13}, /* опо */
- {{0xE2, 0xFC, 0xFE}, 13}, /* вью */
- {{0xE0, 0xEB, 0xE0}, 13}, /* ала */
- {{0xEB, 0xE5, 0xE9}, 12}, /* лей */
- {{0xE0, 0xF7, 0xE0}, 12}, /* ача */
- {{0xE5, 0xE7, 0xE2}, 12}, /* езв */
- {{0xE2, 0xE0, 0xFF}, 12}, /* вая */
- {{0xE5, 0xEE, 0xF1}, 12}, /* еос */
- {{0xFF, 0xF9, 0xE8}, 12}, /* ящи */
- {{0xE8, 0xE2, 0xE8}, 12}, /* иви */
- {{0xED, 0xE5, 0xE5}, 12}, /* нее */
- {{0xF2, 0xF0, 0xF3}, 12}, /* тру */
- {{0xF8, 0xE5, 0xE5}, 12}, /* шее */
- {{0xF1, 0xE0, 0xF5}, 12}, /* сах */
- {{0xE8, 0xED, 0xF6}, 12}, /* инц */
- {{0xEE, 0xEC, 0xEF}, 12}, /* омп */
- {{0xF3, 0xE6, 0xEE}, 12}, /* ужо */
- {{0xF3, 0xE0, 0xEB}, 12}, /* уал */
- {{0xED, 0xE0, 0xF2}, 12}, /* нат */
- {{0xE8, 0xE4, 0xF3}, 12}, /* иду */
- {{0xE2, 0xEB, 0xE0}, 12}, /* вла */
- {{0xE7, 0xE2, 0xE0}, 12}, /* зва */
- {{0xEB, 0xE5, 0xE5}, 12}, /* лее */
- {{0xF0, 0xE5, 0xF5}, 12}, /* рех */
- {{0xE6, 0xE4, 0xF3}, 12}, /* жду */
- {{0xEC, 0xE0, 0xEB}, 12}, /* мал */
- {{0xE5, 0xED, 0xF1}, 12}, /* енс */
- {{0xE8, 0xE9, 0xF1}, 12}, /* ийс */
- {{0xEA, 0xEE, 0xEB}, 12}, /* кол */
- {{0xED, 0xE0, 0xE7}, 12}, /* наз */
- {{0xE4, 0xF3, 0xE0}, 12}, /* дуа */
- {{0xEE, 0xED, 0xE8}, 12}, /* они */
- {{0xF1, 0xE5, 0xEC}, 12}, /* сем */
- {{0xE3, 0xEE, 0xE4}, 12}, /* год */
- {{0xEC, 0xE5, 0xE6}, 12}, /* меж */
- {{0xEE, 0xE7, 0xEB}, 12}, /* озл */
- {{0xE2, 0xEC, 0xE5}, 12}, /* вме */
- {{0xF3, 0xE4, 0xE5}, 12}, /* уде */
- {{0xFC, 0xEA, 0xEE}, 12}, /* ько */
- {{0xE5, 0xE2, 0xFB}, 12}, /* евы */
- {{0xE7, 0xE0, 0xEC}, 12}, /* зам */
- {{0xF1, 0xEE, 0xE4}, 12}, /* сод */
- {{0xF0, 0xEE, 0xE5}, 11}, /* рое */
- {{0xEE, 0xF2, 0xE4}, 11}, /* отд */
- {{0xF1, 0xE8, 0xFF}, 11}, /* сия */
- {{0xE8, 0xEA, 0xF3}, 11}, /* ику */
- {{0xFB, 0xEB, 0xE8}, 11}, /* ыли */
- {{0xE3, 0xE8, 0xEC}, 11}, /* гим */
- {{0xED, 0xFC, 0xF8}, 11}, /* ньш */
- {{0xF2, 0xE8, 0xF7}, 11}, /* тич */
- {{0xF0, 0xE0, 0xEB}, 11}, /* рал */
- {{0xF3, 0xF7, 0xE8}, 11}, /* учи */
- {{0xEC, 0xE5, 0xFE}, 11}, /* мею */
- {{0xF2, 0xE5, 0xEA}, 11}, /* тек */
- {{0xEE, 0xE1, 0xF3}, 11}, /* обу */
- {{0xED, 0xED, 0xF3}, 11}, /* нну */
- {{0xED, 0xE5, 0xEF}, 11}, /* неп */
- {{0xE2, 0xE5, 0xEB}, 11}, /* вел */
- {{0xF2, 0xEC, 0xE5}, 11}, /* тме */
- {{0xE1, 0xEE, 0xE3}, 11}, /* бог */
- {{0xEE, 0xF0, 0xE8}, 11}, /* ори */
- {{0xE0, 0xE2, 0xED}, 11}, /* авн */
- {{0xE4, 0xE5, 0xE5}, 11}, /* дее */
- {{0xE6, 0xEE, 0xEC}, 11}, /* жом */
- {{0xC2, 0xF0, 0xE5}, 11}, /* Вре */
- {{0xEC, 0xFB, 0xE5}, 11}, /* мые */
- {{0xFC, 0xF6, 0xE0}, 11}, /* ьца */
- {{0xEE, 0xF6, 0xE5}, 11}, /* оце */
- {{0xE8, 0xF2, 0xFB}, 10}, /* иты */
- {{0xE7, 0xF0, 0xE0}, 10}, /* зра */
- {{0xEE, 0xED, 0xFB}, 10}, /* оны */
- {{0xF0, 0xE5, 0xF8}, 10}, /* реш */
- {{0xF3, 0xF8, 0xE5}, 10}, /* уше */
- {{0xF0, 0xE5, 0xE2}, 10}, /* рев */
- {{0xEE, 0xEF, 0xF3}, 10}, /* опу */
- {{0xFF, 0xF2, 0xFB}, 10}, /* яты */
- {{0xF2, 0xE0, 0xF7}, 10}, /* тач */
- {{0xE5, 0xF0, 0xEE}, 10}, /* еро */
- {{0xE2, 0xEA, 0xEB}, 10}, /* вкл */
- {{0xE7, 0xFB, 0xE2}, 10}, /* зыв */
- {{0xE0, 0xEF, 0xF0}, 10}, /* апр */
- {{0xF0, 0xF3, 0xF8}, 10}, /* руш */
- {{0xCE, 0xF2, 0xE2}, 10}, /* Отв */
- {{0xF0, 0xF1, 0xE0}, 10}, /* рса */
- {{0xE5, 0xEA, 0xF2}, 10}, /* ект */
- {{0xEB, 0xE5, 0xEA}, 10}, /* лек */
- {{0xE5, 0xE5, 0xF2}, 10}, /* еет */
- {{0xEE, 0xEF, 0xEB}, 10}, /* опл */
- {{0xF2, 0xF7, 0xE5}, 10}, /* тче */
- {{0xE3, 0xEE, 0xEC}, 10}, /* гом */
- {{0xF2, 0xEE, 0xE6}, 10}, /* тож */
- {{0xEB, 0xE5, 0xF7}, 10}, /* леч */
- {{0xE5, 0xF2, 0xFB}, 10}, /* еты */
- {{0xEE, 0xE6, 0xE8}, 10}, /* ожи */
- {{0xEC, 0xED, 0xEE}, 10}, /* мно */
- {{0xEC, 0xEE, 0xE9}, 10}, /* мой */
- {{0xF6, 0xE5, 0xEB}, 10}, /* цел */
- {{0xF3, 0xEF, 0xE8}, 10}, /* упи */
- {{0xE0, 0xE5, 0xE2}, 10}, /* аев */
- {{0xEF, 0xEE, 0xEC}, 10}, /* пом */
- {{0xE4, 0xFF, 0xF9}, 10}, /* дящ */
- {{0xF2, 0xF0, 0xE8}, 10}, /* три */
- {{0xF8, 0xE8, 0xE5}, 10}, /* шие */
- {{0xE5, 0xEA, 0xE0}, 10}, /* ека */
- {{0xE5, 0xF8, 0xE5}, 10}, /* еше */
- {{0xE7, 0xE0, 0xE8}, 10}, /* заи */
- {{0xE8, 0xF2, 0xEE}, 10}, /* ито */
- {{0xE7, 0xED, 0xFB}, 10}, /* зны */
- {{0xEE, 0xFF, 0xED}, 10}, /* оян */
- {{0xE8, 0xE6, 0xE5}, 10}, /* иже */
- {{0xE2, 0xED, 0xE5}, 10}, /* вне */
- {{0xF0, 0xF1, 0xF2}, 10}, /* рст */
- {{0xE5, 0xEC, 0xFF}, 10}, /* емя */
- {{0xED, 0xE0, 0xE8}, 10}, /* наи */
- {{0xF2, 0xEE, 0xEB}, 10}, /* тол */
- {{0xEB, 0xE8, 0xF2}, 10}, /* лит */
- {{0xEE, 0xF1, 0xF0}, 10}, /* оср */
- {{0xF2, 0xE4, 0xE5}, 10}, /* тде */
- {{0xE5, 0xEC, 0xE8}, 10}, /* еми */
- {{0xEC, 0xE5, 0xE5}, 10}, /* мее */
- {{0xF0, 0xFB, 0xF5}, 10}, /* рых */
- {{0xED, 0xE8, 0xE2}, 10}, /* нив */
- {{0xE5, 0xF0, 0xF3}, 10}, /* еру */
- {{0xF7, 0xE5, 0xEC}, 10}, /* чем */
- {{0xE4, 0xEE, 0xE1}, 10}, /* доб */
- {{0xE5, 0xEB, 0xEE}, 10}, /* ело */
- {{0xE8, 0xEB, 0xF3}, 10}, /* илу */
- {{0xE0, 0xE4, 0xEB}, 10}, /* адл */
- {{0xE8, 0xF7, 0xF2}, 10}, /* ичт */
- {{0xEC, 0xEB, 0xE5}, 10}, /* мле */
-};
-
-static const myhtml_encoding_trigram_t myhtml_encoding_detect_trigrams_index_x_mac_cyrillic[] = {
- {{0xE5, 0xED, 0xE8}, 991}, /* ени */
- {{0xEE, 0xE3, 0xEE}, 806}, /* ого */
- {{0xF1, 0xF2, 0xE2}, 659}, /* ств */
- {{0xED, 0xE8, 0xDF}, 629}, /* ния */
- {{0xEE, 0xE2, 0xE0}, 566}, /* ова */
- {{0xF2, 0xE5, 0xEB}, 555}, /* тел */
- {{0xF0, 0xE5, 0xE4}, 507}, /* ред */
- {{0xE5, 0xED, 0xED}, 499}, /* енн */
- {{0xEE, 0xE2, 0xEE}, 443}, /* ово */
- {{0xE0, 0xED, 0xE8}, 443}, /* ани */
- {{0xF2, 0xF0, 0xE0}, 429}, /* тра */
- {{0xEE, 0xF1, 0xF2}, 428}, /* ост */
- {{0xED, 0xE8, 0xE5}, 419}, /* ние */
- {{0xED, 0xED, 0xEE}, 412}, /* нно */
- {{0xE0, 0xF5, 0xEE}, 396}, /* ахо */
- {{0xF1, 0xF2, 0xF0}, 392}, /* стр */
- {{0xF0, 0xE0, 0xF5}, 386}, /* рах */
- {{0xF5, 0xEE, 0xE2}, 379}, /* хов */
- {{0xE5, 0xEB, 0xFC}, 365}, /* ель */
- {{0xE3, 0xEE, 0xE2}, 360}, /* гов */
- {{0xE2, 0xEE, 0xF0}, 356}, /* вор */
- {{0xE5, 0xF1, 0xF2}, 349}, /* ест */
- {{0xE0, 0xF2, 0xFC}, 345}, /* ать */
- {{0xF0, 0xE0, 0xE2}, 337}, /* рав */
- {{0xEF, 0xF0, 0xE8}, 330}, /* при */
- {{0xEF, 0xF0, 0xE5}, 323}, /* пре */
- {{0xE4, 0xEE, 0xE3}, 318}, /* дог */
- {{0xED, 0xE5, 0xED}, 310}, /* нен */
- {{0xEF, 0xF0, 0xE0}, 309}, /* пра */
- {{0xE2, 0xE0, 0xED}, 304}, /* ван */
- {{0xE8, 0xF2, 0xE5}, 295}, /* ите */
- {{0xF2, 0xE2, 0xE5}, 281}, /* тве */
- {{0xEB, 0xE5, 0xED}, 266}, /* лен */
- {{0xF1, 0xF2, 0xEE}, 261}, /* сто */
- {{0xF2, 0xE0, 0xF2}, 260}, /* тат */
- {{0xED, 0xED, 0xFB}, 260}, /* нны */
- {{0xEB, 0xFC, 0xED}, 256}, /* льн */
- {{0xE2, 0xEE, 0xE7}, 255}, /* воз */
- {{0xE8, 0xEB, 0xE8}, 254}, /* или */
- {{0xE0, 0xF2, 0xE5}, 252}, /* ате */
- {{0xE5, 0xE3, 0xEE}, 241}, /* его */
- {{0xE5, 0xF2, 0xF1}, 238}, /* етс */
- {{0xED, 0xEE, 0xF1}, 236}, /* нос */
- {{0xF9, 0xE5, 0xF1}, 235}, /* щес */
- {{0xEF, 0xEE, 0xEB}, 232}, /* пол */
- {{0xF0, 0xE0, 0xED}, 231}, /* ран */
- {{0xED, 0xEE, 0xE3}, 230}, /* ног */
- {{0xF1, 0xF2, 0xE0}, 229}, /* ста */
- {{0xF7, 0xE5, 0xED}, 226}, /* чен */
- {{0xF2, 0xF0, 0xE5}, 224}, /* тре */
- {{0xE7, 0xEC, 0xE5}, 214}, /* зме */
- {{0xF3, 0xF9, 0xE5}, 212}, /* уще */
- {{0xF1, 0xF2, 0xE8}, 210}, /* сти */
- {{0xEA, 0xEE, 0xEC}, 207}, /* ком */
- {{0xEE, 0xF0, 0xEE}, 206}, /* оро */
- {{0xE2, 0xEB, 0xE5}, 195}, /* вле */
- {{0xE7, 0xE0, 0xED}, 194}, /* зан */
- {{0xE0, 0xF1, 0xF2}, 193}, /* аст */
- {{0xF2, 0xF1, 0xDF}, 191}, /* тся */
- {{0xF5, 0xF0, 0xE0}, 187}, /* хра */
- {{0xE0, 0xED, 0xED}, 182}, /* анн */
- {{0xE5, 0xF0, 0xE5}, 182}, /* ере */
- {{0xE2, 0xF0, 0xE5}, 178}, /* вре */
- {{0xEE, 0xE2, 0xE5}, 173}, /* ове */
- {{0xFC, 0xED, 0xEE}, 173}, /* ьно */
- {{0xE2, 0xE5, 0xF0}, 172}, /* вер */
- {{0xEC, 0xE5, 0xED}, 170}, /* мен */
- {{0xEB, 0xE8, 0xF6}, 168}, /* лиц */
- {{0xF2, 0xEE, 0xF0}, 167}, /* тор */
- {{0xF0, 0xE5, 0xED}, 167}, /* рен */
- {{0xF9, 0xE5, 0xED}, 165}, /* щен */
- {{0xEE, 0xE7, 0xEC}, 164}, /* озм */
- {{0xE5, 0xE4, 0xE0}, 163}, /* еда */
- {{0xF2, 0xE2, 0xE8}, 159}, /* тви */
- {{0xDF, 0xE7, 0xE0}, 159}, /* яза */
- {{0xE1, 0xDF, 0xE7}, 158}, /* бяз */
- {{0xED, 0xE8, 0xE8}, 153}, /* нии */
- {{0xED, 0xFB, 0xF5}, 153}, /* ных */
- {{0xF2, 0xFC, 0xDF}, 153}, /* тья */
- {{0xEC, 0xE5, 0xF0}, 153}, /* мер */
- {{0xF1, 0xEB, 0xE8}, 150}, /* сли */
- {{0xF2, 0xEE, 0xE2}, 148}, /* тов */
- {{0xF2, 0xE2, 0xE0}, 147}, /* тва */
- {{0xEE, 0xF0, 0xE0}, 146}, /* ора */
- {{0xED, 0xEE, 0xEC}, 144}, /* ном */
- {{0xE4, 0xE5, 0xED}, 144}, /* ден */
- {{0xE0, 0xED, 0xE5}, 142}, /* ане */
- {{0xEA, 0xEE, 0xED}, 141}, /* кон */
- {{0xEB, 0xF3, 0xF7}, 141}, /* луч */
- {{0xEC, 0xF3, 0xF9}, 140}, /* мущ */
- {{0xEE, 0xE1, 0xDF}, 140}, /* обя */
- {{0xE2, 0xE0, 0xF2}, 138}, /* ват */
- {{0xE2, 0xE0, 0xF0}, 137}, /* вар */
- {{0xE5, 0xF9, 0xE5}, 137}, /* еще */
- {{0xEE, 0xF2, 0xF0}, 137}, /* отр */
- {{0xE4, 0xE5, 0xEB}, 137}, /* дел */
- {{0xED, 0xFB, 0xEC}, 136}, /* ным */
- {{0xE8, 0xEC, 0xF3}, 136}, /* иму */
- {{0x91, 0xF2, 0xE0}, 134}, /* Ста */
- {{0xF3, 0xF7, 0xE0}, 133}, /* уча */
- {{0xF2, 0xF1, 0xF2}, 131}, /* тст */
- {{0xE5, 0xEB, 0xDF}, 130}, /* еля */
- {{0xF1, 0xEB, 0xF3}, 130}, /* слу */
- {{0xE7, 0xE0, 0xEA}, 130}, /* зак */
- {{0xF2, 0xEE, 0xDF}, 129}, /* тоя */
- {{0xEE, 0xEC, 0xE8}, 128}, /* оми */
- {{0xEC, 0xE5, 0xF9}, 128}, /* мещ */
- {{0xE5, 0xE4, 0xF3}, 127}, /* еду */
- {{0xE2, 0xE5, 0xED}, 127}, /* вен */
- {{0xED, 0xEE, 0xE2}, 127}, /* нов */
- {{0xED, 0xEE, 0xE5}, 126}, /* ное */
- {{0xEE, 0xF2, 0xE2}, 125}, /* отв */
- {{0xEA, 0xE0, 0xE7}, 125}, /* каз */
- {{0xE0, 0xE5, 0xF2}, 125}, /* ает */
- {{0xF1, 0xEA, 0xEE}, 125}, /* ско */
- {{0xE5, 0xED, 0xF2}, 124}, /* ент */
- {{0xEC, 0xEE, 0xF2}, 123}, /* мот */
- {{0xE0, 0xE2, 0xEB}, 122}, /* авл */
- {{0xF1, 0xEC, 0xEE}, 122}, /* смо */
- {{0xE8, 0xF7, 0xE8}, 121}, /* ичи */
- {{0xE1, 0xFB, 0xF2}, 120}, /* быт */
- {{0xF3, 0xF1, 0xEC}, 118}, /* усм */
- {{0xF1, 0xF1, 0xE8}, 117}, /* сси */
- {{0xE4, 0xF3, 0xF1}, 117}, /* дус */
- {{0xF5, 0xEE, 0xE4}, 117}, /* ход */
- {{0xF0, 0xE8, 0xF7}, 117}, /* рич */
- {{0xF7, 0xE5, 0xF1}, 115}, /* чес */
- {{0xE3, 0xF0, 0xE0}, 114}, /* гра */
- {{0xEF, 0xF0, 0xEE}, 114}, /* про */
- {{0xE4, 0xEE, 0xE2}, 113}, /* дов */
- {{0xE2, 0xE5, 0xF2}, 112}, /* вет */
- {{0xE5, 0xE4, 0xE5}, 112}, /* еде */
- {{0xF8, 0xE5, 0xED}, 111}, /* шен */
- {{0xF7, 0xE8, 0xED}, 110}, /* чин */
- {{0xED, 0xE0, 0xF1}, 109}, /* нас */
- {{0xE8, 0xF2, 0xFC}, 105}, /* ить */
- {{0xF2, 0xE2, 0xEE}, 105}, /* тво */
- {{0xEA, 0xEB, 0xFE}, 104}, /* клю */
- {{0xF0, 0xE8, 0xF2}, 104}, /* рит */
- {{0xF1, 0xF2, 0xFC}, 104}, /* сть */
- {{0xEB, 0xFE, 0xF7}, 104}, /* люч */
- {{0xF2, 0xEE, 0xEC}, 104}, /* том */
- {{0xF1, 0xEB, 0xE5}, 103}, /* сле */
- {{0xF1, 0xEF, 0xEE}, 102}, /* спо */
- {{0xEE, 0xEB, 0xED}, 102}, /* олн */
- {{0xE5, 0xF1, 0xEB}, 102}, /* есл */
- {{0xE5, 0xF0, 0xE8}, 101}, /* ери */
- {{0xED, 0xEE, 0xE9}, 101}, /* ной */
- {{0xF0, 0xEE, 0xEC}, 101}, /* ром */
- {{0xEE, 0xF2, 0xEE}, 99}, /* ото */
- {{0xED, 0xFB, 0xE5}, 99}, /* ные */
- {{0xE7, 0xED, 0xE0}, 99}, /* зна */
- {{0xE2, 0xEB, 0xDF}, 99}, /* вля */
- {{0xF2, 0xE5, 0xF0}, 98}, /* тер */
- {{0xF3, 0xEF, 0xF0}, 97}, /* упр */
- {{0xE0, 0xEA, 0xEE}, 96}, /* ако */
- {{0xEA, 0xEE, 0xE3}, 96}, /* ког */
- {{0xED, 0xFB, 0xE9}, 96}, /* ный */
- {{0xEE, 0xF0, 0xF3}, 96}, /* ору */
- {{0xE5, 0xEB, 0xE5}, 95}, /* еле */
- {{0xE5, 0xF1, 0xEA}, 95}, /* еск */
- {{0xE0, 0xE7, 0xE0}, 95}, /* аза */
- {{0xE9, 0xF1, 0xF2}, 93}, /* йст */
- {{0xEF, 0xEE, 0xF0}, 93}, /* пор */
- {{0xEE, 0xE6, 0xE5}, 92}, /* оже */
- {{0xE8, 0xED, 0xE5}, 91}, /* ине */
- {{0xF9, 0xE5, 0xE9}, 90}, /* щей */
- {{0xE6, 0xE4, 0xE5}, 90}, /* жде */
- {{0xEF, 0xE5, 0xF0}, 89}, /* пер */
- {{0xED, 0xE8, 0xF2}, 89}, /* нит */
- {{0xEE, 0xEB, 0xFC}, 89}, /* оль */
- {{0xE0, 0xE6, 0xE4}, 88}, /* ажд */
- {{0xE6, 0xE5, 0xED}, 87}, /* жен */
- {{0xEB, 0xE0, 0xE4}, 87}, /* лад */
- {{0xE0, 0xEC, 0xE8}, 87}, /* ами */
- {{0xEA, 0xEE, 0xF2}, 86}, /* кот */
- {{0xF7, 0xE0, 0xE5}, 85}, /* чае */
- {{0xE2, 0xE5, 0xF9}, 85}, /* вещ */
- {{0xE2, 0xE8, 0xDF}, 85}, /* вия */
- {{0xDF, 0xF9, 0xE5}, 85}, /* яще */
- {{0xE8, 0xE5, 0xEC}, 85}, /* ием */
- {{0xEA, 0xEB, 0xE0}, 85}, /* кла */
- {{0xE5, 0xE9, 0xF1}, 84}, /* ейс */
- {{0xFB, 0xF2, 0xFC}, 84}, /* ыть */
- {{0xE0, 0xE2, 0xEE}, 84}, /* аво */
- {{0xF0, 0xE0, 0xE6}, 83}, /* раж */
- {{0xEB, 0xFC, 0xF1}, 83}, /* льс */
- {{0xEE, 0xDF, 0xF9}, 82}, /* оящ */
- {{0xE5, 0xED, 0xEE}, 81}, /* ено */
- {{0xE4, 0xF1, 0xF2}, 81}, /* дст */
- {{0xE4, 0xE5, 0xE9}, 80}, /* дей */
- {{0xF0, 0xE5, 0xE1}, 80}, /* реб */
- {{0xFC, 0xF1, 0xF2}, 79}, /* ьст */
- {{0xE5, 0xE4, 0xF1}, 79}, /* едс */
- {{0xE0, 0xF0, 0xE8}, 79}, /* ари */
- {{0xE4, 0xE0, 0xED}, 79}, /* дан */
- {{0xEC, 0xEE, 0xE6}, 78}, /* мож */
- {{0xE8, 0xEC, 0xE5}, 78}, /* име */
- {{0xE8, 0xED, 0xEE}, 78}, /* ино */
- {{0xF0, 0xE8, 0xED}, 77}, /* рин */
- {{0xE4, 0xEE, 0xF1}, 77}, /* дос */
- {{0xEF, 0xEE, 0xF1}, 77}, /* пос */
- {{0xF2, 0xE0, 0xEA}, 77}, /* так */
- {{0xF9, 0xE5, 0xE3}, 77}, /* щег */
- {{0xE4, 0xE0, 0xF2}, 77}, /* дат */
- {{0xEF, 0xEB, 0xE0}, 76}, /* пла */
- {{0xF3, 0xF1, 0xEB}, 76}, /* усл */
- {{0xE8, 0xF6, 0xE0}, 76}, /* ица */
- {{0xF0, 0xEE, 0xE2}, 75}, /* ров */
- {{0xFD, 0xF2, 0xEE}, 75}, /* это */
- {{0xF3, 0xF7, 0xE5}, 74}, /* уче */
- {{0xE4, 0xEE, 0xEB}, 73}, /* дол */
- {{0xFC, 0xED, 0xFB}, 73}, /* ьны */
- {{0xF0, 0xE0, 0xE7}, 73}, /* раз */
- {{0xEC, 0xE8, 0xF1}, 73}, /* мис */
- {{0xE0, 0xED, 0xEE}, 72}, /* ано */
- {{0xF1, 0xF0, 0xEE}, 72}, /* сро */
- {{0xE0, 0xE2, 0xE8}, 72}, /* ави */
- {{0xF2, 0xFC, 0xE8}, 71}, /* тьи */
- {{0xFE, 0xF7, 0xE5}, 70}, /* юче */
- {{0xF1, 0xEA, 0xEB}, 70}, /* скл */
- {{0xE8, 0xF1, 0xF1}, 70}, /* исс */
- {{0xE6, 0xE5, 0xF2}, 69}, /* жет */
- {{0xE5, 0xE4, 0xEE}, 69}, /* едо */
- {{0xEB, 0xE5, 0xE4}, 69}, /* лед */
- {{0xEB, 0xEE, 0xE2}, 69}, /* лов */
- {{0xFE, 0xF9, 0xE8}, 68}, /* ющи */
- {{0xE8, 0xE1, 0xEE}, 68}, /* ибо */
- {{0xEB, 0xE0, 0xF2}, 67}, /* лат */
- {{0xF0, 0xEE, 0xEA}, 67}, /* рок */
- {{0xE0, 0xEA, 0xEB}, 67}, /* акл */
- {{0xF0, 0xE8, 0xF9}, 67}, /* рищ */
- {{0xE1, 0xEE, 0xE2}, 67}, /* бов */
- {{0xE8, 0xF1, 0xEA}, 67}, /* иск */
- {{0xE5, 0xE1, 0xEE}, 67}, /* ебо */
- {{0xEB, 0xFC, 0xE7}, 67}, /* льз */
- {{0xF3, 0xEA, 0xE0}, 67}, /* ука */
- {{0xEB, 0xE8, 0xE1}, 66}, /* либ */
- {{0xEE, 0xEC, 0xF3}, 66}, /* ому */
- {{0xEE, 0xE2, 0xEB}, 66}, /* овл */
- {{0xF2, 0xED, 0xEE}, 65}, /* тно */
- {{0xE2, 0xEE, 0xE9}, 64}, /* вой */
- {{0xF2, 0xEE, 0xE3}, 64}, /* тог */
- {{0xF1, 0xEB, 0xEE}, 64}, /* сло */
- {{0xEE, 0xE7, 0xED}, 64}, /* озн */
- {{0xF1, 0xEE, 0xEE}, 64}, /* соо */
- {{0xE7, 0xE0, 0xF2}, 63}, /* зат */
- {{0xE8, 0xF1, 0xEF}, 63}, /* исп */
- {{0xE0, 0xF7, 0xE5}, 63}, /* аче */
- {{0xED, 0xE8, 0xFE}, 63}, /* нию */
- {{0xEE, 0xED, 0xE5}, 63}, /* оне */
- {{0xEE, 0xEB, 0xE6}, 62}, /* олж */
- {{0xEE, 0xE2, 0xF9}, 61}, /* овщ */
- {{0xF0, 0xE0, 0xF1}, 61}, /* рас */
- {{0xE2, 0xE8, 0xE4}, 61}, /* вид */
- {{0xE2, 0xF9, 0xE8}, 61}, /* вщи */
- {{0xF1, 0xED, 0xEE}, 61}, /* сно */
- {{0xE8, 0xF6, 0xEE}, 61}, /* ицо */
- {{0xE8, 0xF7, 0xE5}, 61}, /* иче */
- {{0xE0, 0xE2, 0xE5}, 61}, /* аве */
- {{0xE3, 0xEB, 0xE0}, 61}, /* гла */
- {{0xF7, 0xE5, 0xF2}, 61}, /* чет */
- {{0xF9, 0xE8, 0xEA}, 61}, /* щик */
- {{0xF0, 0xF3, 0xE3}, 60}, /* руг */
- {{0xF2, 0xE0, 0xED}, 60}, /* тан */
- {{0xE8, 0xEC, 0xEE}, 60}, /* имо */
- {{0xE0, 0xEB, 0xFC}, 60}, /* аль */
- {{0xEE, 0xE2, 0xE8}, 60}, /* ови */
- {{0xE6, 0xE4, 0xE0}, 60}, /* жда */
- {{0xEF, 0xEE, 0xE2}, 60}, /* пов */
- {{0xE5, 0xEC, 0xF3}, 60}, /* ему */
- {{0xDF, 0xF2, 0xE5}, 60}, /* яте */
- {{0xF1, 0xE8, 0xE8}, 59}, /* сии */
- {{0xE1, 0xEE, 0xF2}, 59}, /* бот */
- {{0xE2, 0xFB, 0xEF}, 59}, /* вып */
- {{0xE0, 0xE1, 0xEE}, 59}, /* або */
- {{0xEB, 0xDF, 0xFE}, 59}, /* ляю */
- {{0xF1, 0xF3, 0xF9}, 58}, /* сущ */
- {{0xEE, 0xE4, 0xE5}, 58}, /* оде */
- {{0xE8, 0xED, 0xE8}, 58}, /* ини */
- {{0xF0, 0xE0, 0xF2}, 58}, /* рат */
- {{0xDF, 0xE2, 0xEB}, 58}, /* явл */
- {{0xED, 0xE0, 0xE3}, 57}, /* наг */
- {{0xE4, 0xF0, 0xF3}, 57}, /* дру */
- {{0xF0, 0xE0, 0xE1}, 57}, /* раб */
- {{0xE0, 0xE3, 0xF0}, 57}, /* агр */
- {{0xE8, 0xEE, 0xED}, 57}, /* ион */
- {{0xEC, 0xE5, 0xF1}, 57}, /* мес */
- {{0xE0, 0xF6, 0xE8}, 56}, /* аци */
- {{0xEE, 0xF1, 0xF3}, 56}, /* осу */
- {{0xEA, 0xEE, 0xE9}, 55}, /* кой */
- {{0xF1, 0xE2, 0xEE}, 55}, /* сво */
- {{0xE7, 0xEE, 0xE2}, 55}, /* зов */
- {{0xEE, 0xEF, 0xF0}, 54}, /* опр */
- {{0xF1, 0xEE, 0xE1}, 54}, /* соб */
- {{0xE2, 0xEF, 0xF0}, 54}, /* впр */
- {{0xEB, 0xED, 0xE5}, 54}, /* лне */
- {{0xEE, 0xEC, 0xEC}, 54}, /* омм */
- {{0xE5, 0xF0, 0xE0}, 54}, /* ера */
- {{0xF7, 0xE8, 0xF2}, 54}, /* чит */
- {{0xE5, 0xF0, 0xF7}, 54}, /* ерч */
- {{0xF0, 0xF7, 0xE5}, 54}, /* рче */
- {{0xE0, 0xF2, 0xE8}, 54}, /* ати */
- {{0xED, 0xE8, 0xEA}, 54}, /* ник */
- {{0xEC, 0xEC, 0xE5}, 54}, /* мме */
- {{0xF3, 0xF1, 0xF2}, 53}, /* уст */
- {{0xF2, 0xE5, 0xED}, 53}, /* тен */
- {{0xE2, 0xE5, 0xE4}, 53}, /* вед */
- {{0xF1, 0xEE, 0xE2}, 52}, /* сов */
- {{0xE0, 0xE6, 0xE5}, 52}, /* аже */
- {{0xEE, 0xEA, 0xE0}, 52}, /* ока */
- {{0xFB, 0xEC, 0xE8}, 52}, /* ыми */
- {{0xFE, 0xF2, 0xF1}, 52}, /* ютс */
- {{0xEE, 0xEE, 0xF2}, 52}, /* оот */
- {{0xEC, 0xE8, 0xF2}, 52}, /* мит */
- {{0xDF, 0xFE, 0xF9}, 51}, /* яющ */
- {{0xE2, 0xF8, 0xE5}, 51}, /* вше */
- {{0xF1, 0xE8, 0xEE}, 51}, /* сио */
- {{0xEE, 0xED, 0xEE}, 51}, /* оно */
- {{0xE0, 0xE2, 0xE0}, 51}, /* ава */
- {{0xE0, 0xF9, 0xE5}, 51}, /* аще */
- {{0xEB, 0xDF, 0xE5}, 50}, /* ляе */
- {{0xE5, 0xED, 0xE5}, 50}, /* ене */
- {{0xEE, 0xE4, 0xE8}, 50}, /* оди */
- {{0xEF, 0xF3, 0xED}, 49}, /* пун */
- {{0xEB, 0xE8, 0xF7}, 49}, /* лич */
- {{0xE2, 0xEE, 0xEC}, 49}, /* вом */
- {{0xED, 0xEA, 0xF2}, 49}, /* нкт */
- {{0xED, 0xE5, 0xF1}, 49}, /* нес */
- {{0xE2, 0xE8, 0xEB}, 49}, /* вил */
- {{0xE5, 0xE6, 0xE4}, 49}, /* ежд */
- {{0xF0, 0xE5, 0xF1}, 49}, /* рес */
- {{0xFE, 0xF9, 0xE5}, 49}, /* юще */
- {{0xFC, 0xE7, 0xEE}, 49}, /* ьзо */
- {{0xEF, 0xEE, 0xF2}, 49}, /* пот */
- {{0xF3, 0xED, 0xEA}, 49}, /* унк */
- {{0xF1, 0xF2, 0xE5}, 49}, /* сте */
- {{0xEA, 0xEE, 0xE2}, 49}, /* ков */
- {{0xEE, 0xF1, 0xEB}, 48}, /* осл */
- {{0xDF, 0xE5, 0xF2}, 48}, /* яет */
- {{0x85, 0xF1, 0xEB}, 48}, /* Есл */
- {{0x8F, 0xF0, 0xE8}, 48}, /* При */
- {{0xF2, 0xE0, 0xE2}, 48}, /* тав */
- {{0xED, 0xE5, 0xF0}, 48}, /* нер */
- {{0xF7, 0xED, 0xEE}, 47}, /* чно */
- {{0xEF, 0xEE, 0xE4}, 47}, /* под */
- {{0xED, 0xF2, 0xE0}, 47}, /* нта */
- {{0xE8, 0xF9, 0xE5}, 47}, /* ище */
- {{0xEE, 0xE1, 0xF9}, 47}, /* общ */
- {{0xE0, 0xE7, 0xEC}, 47}, /* азм */
- {{0xE6, 0xED, 0xEE}, 47}, /* жно */
- {{0xE2, 0xE8, 0xE8}, 46}, /* вии */
- {{0xF0, 0xE0, 0xF9}, 46}, /* ращ */
- {{0xEE, 0xF0, 0xE5}, 46}, /* оре */
- {{0xE2, 0xF8, 0xE8}, 46}, /* вши */
- {{0xE5, 0xEA, 0xF1}, 46}, /* екс */
- {{0xE2, 0xEE, 0xE3}, 46}, /* вог */
- {{0xF7, 0xF2, 0xEE}, 46}, /* что */
- {{0xE8, 0xF7, 0xED}, 45}, /* ичн */
- {{0xEB, 0xE5, 0xEC}, 45}, /* лем */
- {{0xEC, 0xEE, 0xE3}, 45}, /* мог */
- {{0xF2, 0xE2, 0xEB}, 45}, /* твл */
- {{0xE4, 0xEB, 0xE5}, 45}, /* дле */
- {{0xE4, 0xEB, 0xDF}, 45}, /* для */
- {{0xF0, 0xE5, 0xF2}, 45}, /* рет */
- {{0xE0, 0xF0, 0xE0}, 45}, /* ара */
- {{0xED, 0xDF, 0xF2}, 44}, /* нят */
- {{0xE5, 0xF7, 0xE5}, 44}, /* ече */
- {{0xEE, 0xF2, 0xE5}, 44}, /* оте */
- {{0xEE, 0xF0, 0xFB}, 44}, /* оры */
- {{0xEE, 0xF1, 0xED}, 43}, /* осн */
- {{0xEE, 0xE1, 0xEE}, 43}, /* обо */
- {{0xEE, 0xE3, 0xEB}, 43}, /* огл */
- {{0xE8, 0xED, 0xFB}, 43}, /* ины */
- {{0xE5, 0xF1, 0xF1}, 43}, /* есс */
- {{0xEE, 0xE1, 0xF0}, 43}, /* обр */
- {{0xEA, 0xF0, 0xE0}, 43}, /* кра */
- {{0xE8, 0xDF, 0xEC}, 43}, /* иям */
- {{0xE0, 0xEB, 0xEE}, 43}, /* ало */
- {{0xF0, 0xF3, 0xF7}, 43}, /* руч */
- {{0xEE, 0xF0, 0xE3}, 43}, /* орг */
- {{0xF7, 0xE0, 0xDF}, 42}, /* чая */
- {{0xED, 0xE8, 0xEC}, 42}, /* ним */
- {{0xE8, 0xE7, 0xED}, 42}, /* изн */
- {{0xEF, 0xEE, 0xEA}, 42}, /* пок */
- {{0xF1, 0xF2, 0xF3}, 42}, /* сту */
- {{0xE5, 0xEB, 0xFE}, 42}, /* елю */
- {{0xF2, 0xE8, 0xF2}, 42}, /* тит */
- {{0xF6, 0xE5, 0xED}, 42}, /* цен */
- {{0xF7, 0xE0, 0xF1}, 42}, /* час */
- {{0xE3, 0xE0, 0xED}, 42}, /* ган */
- {{0xF0, 0xE3, 0xE0}, 42}, /* рга */
- {{0xF1, 0xF2, 0xED}, 42}, /* стн */
- {{0xF0, 0xE5, 0xE6}, 42}, /* реж */
- {{0xF3, 0xEC, 0xEC}, 42}, /* умм */
- {{0xF2, 0xE2, 0xF3}, 41}, /* тву */
- {{0xF2, 0xF3, 0xEF}, 41}, /* туп */
- {{0xF1, 0xEA, 0xE8}, 40}, /* ски */
- {{0xE4, 0xE5, 0xEA}, 40}, /* дек */
- {{0xEB, 0xE5, 0xE6}, 40}, /* леж */
- {{0xE5, 0xF1, 0xE5}, 40}, /* есе */
- {{0xE2, 0xE8, 0xE5}, 40}, /* вие */
- {{0xF2, 0xEA, 0xE0}, 40}, /* тка */
- {{0xE5, 0xEA, 0xF0}, 40}, /* екр */
- {{0xEE, 0xE4, 0xEE}, 40}, /* одо */
- {{0xEA, 0xF1, 0xE0}, 40}, /* кса */
- {{0xF0, 0xE5, 0xEA}, 40}, /* рек */
- {{0xED, 0xF2, 0xE5}, 40}, /* нте */
- {{0xF3, 0xE3, 0xE8}, 40}, /* уги */
- {{0xE1, 0xFB, 0xEB}, 40}, /* был */
- {{0xE8, 0xED, 0xDF}, 40}, /* иня */
- {{0xE5, 0xF9, 0xE8}, 39}, /* ещи */
- {{0xE3, 0xE5, 0xED}, 39}, /* ген */
- {{0x8A, 0xEE, 0xE4}, 39}, /* Код */
- {{0xE4, 0xE8, 0xF2}, 39}, /* дит */
- {{0xF1, 0xF5, 0xEE}, 39}, /* схо */
- {{0xE8, 0xED, 0xF2}, 39}, /* инт */
- {{0xF1, 0xF3, 0xEC}, 39}, /* сум */
- {{0xF0, 0xEE, 0xED}, 39}, /* рон */
- {{0xEE, 0xF2, 0xEA}, 39}, /* отк */
- {{0xE4, 0xEE, 0xEA}, 39}, /* док */
- {{0xE8, 0xEB, 0xE0}, 38}, /* ила */
- {{0xF6, 0xE5, 0xF1}, 38}, /* цес */
- {{0xE8, 0xEA, 0xE0}, 38}, /* ика */
- {{0xE7, 0xED, 0xE8}, 38}, /* зни */
- {{0xEE, 0xE2, 0xFB}, 38}, /* овы */
- {{0xEB, 0xE6, 0xED}, 38}, /* лжн */
- {{0xF3, 0xEF, 0xEB}, 38}, /* упл */
- {{0xE3, 0xE4, 0xE0}, 37}, /* гда */
- {{0xEB, 0xE0, 0xE6}, 37}, /* лаж */
- {{0xE6, 0xE5, 0xE4}, 37}, /* жед */
- {{0xE1, 0xE5, 0xE7}, 37}, /* без */
- {{0xE4, 0xE5, 0xF2}, 37}, /* дет */
- {{0xEE, 0xF0, 0xDF}, 37}, /* оря */
- {{0xF0, 0xEE, 0xF1}, 37}, /* рос */
- {{0xEE, 0xE1, 0xEB}, 37}, /* обл */
- {{0xF6, 0xE8, 0xE8}, 37}, /* ции */
- {{0xE4, 0xEE, 0xEC}, 37}, /* дом */
- {{0xED, 0xF6, 0xE5}, 37}, /* нце */
- {{0xF8, 0xE5, 0xE3}, 37}, /* шег */
- {{0xEB, 0xEE, 0xE6}, 37}, /* лож */
- {{0xEE, 0xED, 0xE0}, 37}, /* она */
- {{0xEE, 0xEA, 0xEB}, 37}, /* окл */
- {{0xEE, 0xE3, 0xE4}, 37}, /* огд */
- {{0xF0, 0xEE, 0xE4}, 37}, /* род */
- {{0xE5, 0xED, 0xE0}, 37}, /* ена */
- {{0xEE, 0xED, 0xF6}, 37}, /* онц */
- {{0xEE, 0xF2, 0xED}, 37}, /* отн */
- {{0xF1, 0xEE, 0xE3}, 37}, /* сог */
- {{0xE5, 0xE2, 0xF8}, 37}, /* евш */
- {{0xE2, 0xE8, 0xF2}, 36}, /* вит */
- {{0xE5, 0xF0, 0xEF}, 36}, /* ерп */
- {{0xEE, 0xE4, 0xE0}, 36}, /* ода */
- {{0xE5, 0xF2, 0xE5}, 36}, /* ете */
- {{0xED, 0xE5, 0xEE}, 36}, /* нео */
- {{0xF0, 0xEF, 0xE5}, 36}, /* рпе */
- {{0xE5, 0xF0, 0xF8}, 36}, /* ерш */
- {{0xE8, 0xEC, 0xE8}, 36}, /* ими */
- {{0xE8, 0xE2, 0xF8}, 36}, /* ивш */
- {{0xFB, 0xEF, 0xEB}, 36}, /* ыпл */
- {{0xEF, 0xE5, 0xE2}, 36}, /* пев */
- {{0xE0, 0xE4, 0xE0}, 36}, /* ада */
- {{0xEC, 0xEE, 0xF1}, 35}, /* мос */
- {{0xEE, 0xE1, 0xF1}, 35}, /* обс */
- {{0xED, 0xE5, 0xE4}, 34}, /* нед */
- {{0xE8, 0xEA, 0xEE}, 34}, /* ико */
- {{0xF9, 0xE8, 0xEC}, 34}, /* щим */
- {{0xE4, 0xE5, 0xF0}, 34}, /* дер */
- {{0xF1, 0xEA, 0xE0}, 34}, /* ска */
- {{0xEE, 0xF0, 0xEC}, 34}, /* орм */
- {{0xF3, 0xEC, 0xE5}, 34}, /* уме */
- {{0xEE, 0xEE, 0xE1}, 34}, /* ооб */
- {{0xF0, 0xE8, 0xF1}, 34}, /* рис */
- {{0xEE, 0xE1, 0xFA}, 33}, /* объ */
- {{0xEE, 0xEB, 0xF3}, 33}, /* олу */
- {{0xFA, 0xDF, 0xE2}, 33}, /* ъяв */
- {{0xF0, 0xE5, 0xEC}, 33}, /* рем */
- {{0xF9, 0xE8, 0xF5}, 33}, /* щих */
- {{0xF3, 0xFE, 0xF9}, 33}, /* ующ */
- {{0xEA, 0xE6, 0xE5}, 33}, /* кже */
- {{0xE8, 0xE4, 0xE5}, 33}, /* иде */
- {{0xE1, 0xF1, 0xF2}, 33}, /* бст */
- {{0xE0, 0xEA, 0xE6}, 33}, /* акж */
- {{0xE2, 0xF3, 0xFE}, 33}, /* вую */
- {{0xE0, 0xF1, 0xF5}, 33}, /* асх */
- {{0xE0, 0xED, 0xE0}, 32}, /* ана */
- {{0xED, 0xE0, 0xE4}, 32}, /* над */
- {{0xEE, 0xE1, 0xE5}, 32}, /* обе */
- {{0xFB, 0xF2, 0xEA}, 32}, /* ытк */
- {{0xFD, 0xF2, 0xE8}, 32}, /* эти */
- {{0xEE, 0xE6, 0xED}, 32}, /* ожн */
- {{0xE0, 0xF2, 0xFB}, 31}, /* аты */
- {{0xF1, 0xE4, 0xE5}, 31}, /* сде */
- {{0xE0, 0xFE, 0xF2}, 31}, /* ают */
- {{0xDF, 0xF2, 0xFC}, 31}, /* ять */
- {{0xEE, 0xDF, 0xF2}, 31}, /* оят */
- {{0xE5, 0xF2, 0xFC}, 31}, /* еть */
- {{0xE0, 0xE3, 0xE5}, 31}, /* аге */
- {{0xF7, 0xF0, 0xE5}, 31}, /* чре */
- {{0xE5, 0xED, 0xFB}, 31}, /* ены */
- {{0xF3, 0xE1, 0xFB}, 31}, /* убы */
- {{0xE8, 0xF1, 0xF2}, 30}, /* ист */
- {{0xDF, 0xFE, 0xF2}, 30}, /* яют */
- {{0xF0, 0xDF, 0xE4}, 30}, /* ряд */
- {{0xE3, 0xEE, 0xF1}, 30}, /* гос */
- {{0xE8, 0xEC, 0xE0}, 30}, /* има */
- {{0xE7, 0xE0, 0xF1}, 30}, /* зас */
- {{0xE0, 0xFE, 0xF9}, 30}, /* ающ */
- {{0xEE, 0xE7, 0xE2}, 30}, /* озв */
- {{0xE5, 0xE4, 0xE8}, 30}, /* еди */
- {{0xEE, 0xEC, 0xE5}, 30}, /* оме */
- {{0xED, 0xE8, 0xE9}, 30}, /* ний */
- {{0xF1, 0xF3, 0xE4}, 30}, /* суд */
- {{0xE7, 0xE4, 0xEE}, 29}, /* здо */
- {{0xF1, 0xE2, 0xE8}, 29}, /* сви */
- {{0xEE, 0xEB, 0xE8}, 29}, /* оли */
- {{0xEE, 0xE2, 0xFC}, 29}, /* овь */
- {{0xE2, 0xE8, 0xE9}, 29}, /* вий */
- {{0xE4, 0xEE, 0xF0}, 29}, /* дор */
- {{0xE4, 0xE5, 0xDF}, 29}, /* дея */
- {{0xE5, 0xDF, 0xF2}, 29}, /* еят */
- {{0xF6, 0xEE, 0xEC}, 29}, /* цом */
- {{0xE8, 0xE7, 0xE0}, 28}, /* иза */
- {{0xF1, 0xF7, 0xE5}, 28}, /* сче */
- {{0xEA, 0xF2, 0xE0}, 28}, /* кта */
- {{0xEE, 0xE4, 0xED}, 28}, /* одн */
- {{0xE1, 0xEB, 0xE0}, 28}, /* бла */
- {{0xEE, 0xE4, 0xEB}, 28}, /* одл */
- {{0xE8, 0xF2, 0xE0}, 28}, /* ита */
- {{0x84, 0xEE, 0xE3}, 28}, /* Дог */
- {{0xEE, 0xF1, 0xEE}, 28}, /* осо */
- {{0xED, 0xEE, 0xF8}, 28}, /* нош */
- {{0xEA, 0xF3, 0xF0}, 28}, /* кур */
- {{0xE8, 0xED, 0xE0}, 28}, /* ина */
- {{0xEE, 0xF8, 0xE5}, 28}, /* оше */
- {{0xED, 0xE0, 0xEB}, 28}, /* нал */
- {{0xED, 0xE8, 0xE7}, 27}, /* низ */
- {{0xE7, 0xE2, 0xF0}, 27}, /* звр */
- {{0xE2, 0xF0, 0xE0}, 27}, /* вра */
- {{0xEB, 0xE5, 0xF2}, 27}, /* лет */
- {{0xE5, 0xF9, 0xFC}, 27}, /* ещь */
- {{0xF0, 0xE8, 0xE4}, 27}, /* рид */
- {{0xE4, 0xED, 0xEE}, 27}, /* дно */
- {{0xF0, 0xE8, 0xEE}, 27}, /* рио */
- {{0xEE, 0xE8, 0xEC}, 27}, /* оим */
- {{0xE5, 0xF0, 0xE6}, 27}, /* ерж */
- {{0xF3, 0xE2, 0xE5}, 26}, /* уве */
- {{0xEE, 0xED, 0xEA}, 26}, /* онк */
- {{0xE5, 0xEB, 0xEA}, 26}, /* елк */
- {{0xEB, 0xE0, 0xE2}, 26}, /* лав */
- {{0xE0, 0xF2, 0xEE}, 26}, /* ато */
- {{0xDF, 0xEC, 0xE8}, 26}, /* ями */
- {{0xEC, 0xEC, 0xFB}, 26}, /* ммы */
- {{0xE5, 0xF1, 0xEF}, 26}, /* есп */
- {{0xED, 0xEA, 0xF3}, 26}, /* нку */
- {{0xE8, 0xF6, 0xF3}, 25}, /* ицу */
- {{0xE4, 0xF1, 0xEA}, 25}, /* дск */
- {{0xED, 0xE8, 0xED}, 25}, /* нин */
- {{0xEF, 0xEB, 0xE5}, 25}, /* пле */
- {{0xF4, 0xEE, 0xF0}, 25}, /* фор */
- {{0xEB, 0xE0, 0xF1}, 25}, /* лас */
- {{0xE4, 0xE8, 0xEC}, 25}, /* дим */
- {{0xE5, 0xF1, 0xDF}, 25}, /* еся */
- {{0xED, 0xE8, 0xF7}, 25}, /* нич */
- {{0xEE, 0xE2, 0xF0}, 25}, /* овр */
- {{0xE2, 0xF1, 0xEB}, 25}, /* всл */
- {{0xF0, 0xF8, 0xE5}, 25}, /* рше */
- {{0xE5, 0xF9, 0xE0}, 25}, /* еща */
- {{0xE6, 0xED, 0xFB}, 25}, /* жны */
- {{0xF0, 0xE8, 0xEC}, 25}, /* рим */
- {{0xE7, 0xE0, 0xF6}, 25}, /* зац */
- {{0xE1, 0xF9, 0xE5}, 25}, /* бще */
- {{0xE0, 0xEA, 0xF2}, 25}, /* акт */
- {{0xE0, 0xE4, 0xF1}, 25}, /* адс */
- {{0xF3, 0xF7, 0xF0}, 25}, /* учр */
- {{0xF9, 0xE8, 0xE5}, 25}, /* щие */
- {{0xE6, 0xE8, 0xF2}, 24}, /* жит */
- {{0xE1, 0xF0, 0xE5}, 24}, /* бре */
- {{0xF3, 0xE3, 0xEE}, 24}, /* уго */
- {{0xE8, 0xDF, 0xF5}, 24}, /* иях */
- {{0xF2, 0xFC, 0xFE}, 24}, /* тью */
- {{0xFC, 0xF1, 0xDF}, 24}, /* ься */
- {{0xE2, 0xEE, 0xE2}, 24}, /* вов */
- {{0xEE, 0xF7, 0xED}, 24}, /* очн */
- {{0xE2, 0xEE, 0xEE}, 24}, /* воо */
- {{0xEE, 0xE4, 0xFB}, 24}, /* оды */
- {{0xEB, 0xEE, 0xE3}, 24}, /* лог */
- {{0xE2, 0xE0, 0xE5}, 24}, /* вае */
- {{0xE0, 0xDF, 0xF5}, 24}, /* аях */
- {{0xF2, 0xFC, 0xF1}, 24}, /* тьс */
- {{0xE4, 0xE8, 0xF7}, 24}, /* дич */
- {{0xEA, 0xE8, 0xF5}, 24}, /* ких */
- {{0xF6, 0xE0, 0xEC}, 24}, /* цам */
- {{0xE8, 0xE7, 0xE2}, 24}, /* изв */
- {{0xF2, 0xE8, 0xE2}, 24}, /* тив */
- {{0xE5, 0xEE, 0xE1}, 24}, /* еоб */
- {{0xF1, 0xEE, 0xF1}, 24}, /* сос */
- {{0xF8, 0xE8, 0xEC}, 24}, /* шим */
- {{0xFB, 0xEF, 0xEE}, 24}, /* ыпо */
- {{0xE5, 0xE6, 0xE0}, 24}, /* ежа */
- {{0xF2, 0xEE, 0xE8}, 24}, /* тои */
- {{0xEA, 0xF2, 0xEE}, 24}, /* кто */
- {{0xE5, 0xF7, 0xE0}, 24}, /* еча */
- {{0xE8, 0xE4, 0xE8}, 24}, /* иди */
- {{0xE1, 0xF9, 0xE8}, 23}, /* бщи */
- {{0xF2, 0xFC, 0xE5}, 23}, /* тье */
- {{0xE1, 0xFA, 0xDF}, 23}, /* бъя */
- {{0xED, 0xE0, 0xF7}, 23}, /* нач */
- {{0xF2, 0xE5, 0xF7}, 23}, /* теч */
- {{0xF3, 0xF0, 0xF1}, 23}, /* урс */
- {{0xE2, 0xE5, 0xF7}, 23}, /* веч */
- {{0xE5, 0xEC, 0xE5}, 23}, /* еме */
- {{0xEE, 0xE1, 0xF5}, 23}, /* обх */
- {{0xE1, 0xF5, 0xEE}, 23}, /* бхо */
- {{0xE4, 0xE0, 0xE5}, 23}, /* дае */
- {{0xF0, 0xE5, 0xE7}, 23}, /* рез */
- {{0xEA, 0xE0, 0xE6}, 22}, /* каж */
- {{0xEE, 0xEA, 0xF3}, 22}, /* оку */
- {{0xE0, 0xEC, 0xE5}, 22}, /* аме */
- {{0xED, 0xE5, 0xE7}, 22}, /* нез */
- {{0xFB, 0xE2, 0xE0}, 22}, /* ыва */
- {{0xF1, 0xE2, 0xDF}, 22}, /* свя */
- {{0xF0, 0xE0, 0xE4}, 22}, /* рад */
- {{0xE5, 0xE7, 0xE0}, 22}, /* еза */
- {{0xE8, 0xE2, 0xE0}, 22}, /* ива */
- {{0xEA, 0xE0, 0xEC}, 22}, /* кам */
- {{0xED, 0xE5, 0xEC}, 22}, /* нем */
- {{0xF2, 0xEA, 0xEE}, 22}, /* тко */
- {{0xE7, 0xE2, 0xE5}, 22}, /* зве */
- {{0xE2, 0xDF, 0xE7}, 22}, /* вяз */
- {{0xDF, 0xF2, 0xE8}, 22}, /* яти */
- {{0xEE, 0xF5, 0xF0}, 22}, /* охр */
- {{0xF0, 0xEE, 0xF2}, 22}, /* рот */
- {{0xEE, 0xEB, 0xE5}, 22}, /* оле */
- {{0xE1, 0xF0, 0xE0}, 22}, /* бра */
- {{0xE0, 0xE5, 0xEC}, 22}, /* аем */
- {{0xEB, 0xE0, 0xF8}, 21}, /* лаш */
- {{0xE8, 0xE7, 0xEC}, 21}, /* изм */
- {{0xE3, 0xF3, 0xF2}, 21}, /* гут */
- {{0xEE, 0xE6, 0xE4}, 21}, /* ожд */
- {{0xEA, 0xE0, 0xEA}, 21}, /* как */
- {{0xEA, 0xE0, 0xF7}, 21}, /* кач */
- {{0xED, 0xE0, 0xEC}, 21}, /* нам */
- {{0xE4, 0xEE, 0xF5}, 21}, /* дох */
- {{0xEE, 0xF5, 0xEE}, 21}, /* охо */
- {{0xFE, 0xF0, 0xE8}, 21}, /* юри */
- {{0xE2, 0xE0, 0xEC}, 21}, /* вам */
- {{0xE7, 0xEC, 0xEE}, 21}, /* змо */
- {{0xE4, 0xEA, 0xE5}, 21}, /* дке */
- {{0xE1, 0xE0, 0xED}, 21}, /* бан */
- {{0xE5, 0xEB, 0xE8}, 21}, /* ели */
- {{0xF0, 0xE8, 0xE7}, 21}, /* риз */
- {{0xEB, 0xED, 0xEE}, 21}, /* лно */
- {{0xE2, 0xFB, 0xF8}, 21}, /* выш */
- {{0xE4, 0xF6, 0xE0}, 21}, /* дца */
- {{0xDF, 0xE4, 0xEA}, 21}, /* ядк */
- {{0xEE, 0xF2, 0xF1}, 21}, /* отс */
- {{0xF2, 0xE5, 0xE9}, 21}, /* тей */
- {{0xE0, 0xED, 0xEA}, 21}, /* анк */
- {{0xED, 0xE5, 0xE3}, 21}, /* нег */
- {{0xF6, 0xE0, 0xF2}, 21}, /* цат */
- {{0xE5, 0xEC, 0xFB}, 21}, /* емы */
- {{0xE2, 0xEE, 0xE5}, 21}, /* вое */
- {{0xE4, 0xE0, 0xF7}, 21}, /* дач */
- {{0xEE, 0xE3, 0xF3}, 21}, /* огу */
- {{0xEB, 0xE6, 0xE5}, 21}, /* лже */
- {{0xF2, 0xED, 0xE8}, 21}, /* тни */
- {{0xE7, 0xE0, 0xE2}, 21}, /* зав */
- {{0xE2, 0xE5, 0xF1}, 21}, /* вес */
- {{0xF1, 0xE0, 0xEC}, 20}, /* сам */
- {{0xE0, 0xF0, 0xED}, 20}, /* арн */
- {{0xF7, 0xED, 0xFB}, 20}, /* чны */
- {{0xF1, 0xF0, 0xE5}, 20}, /* сре */
- {{0xF2, 0xE8, 0xDF}, 20}, /* тия */
- {{0xE8, 0xF1, 0xEB}, 20}, /* исл */
- {{0x91, 0xF2, 0xF0}, 20}, /* Стр */
- {{0xED, 0xF2, 0xEE}, 20}, /* нто */
- {{0xF3, 0xF2, 0xF0}, 20}, /* утр */
- {{0xE0, 0xF8, 0xE5}, 20}, /* аше */
- {{0xE5, 0xEB, 0xE0}, 20}, /* ела */
- {{0xF3, 0xE4, 0xEE}, 20}, /* удо */
- {{0xE6, 0xE8, 0xE7}, 19}, /* жиз */
- {{0xEF, 0xE8, 0xF1}, 19}, /* пис */
- {{0xE0, 0xE8, 0xEC}, 19}, /* аим */
- {{0xF7, 0xE8, 0xF1}, 19}, /* чис */
- {{0xE5, 0xE6, 0xE8}, 19}, /* ежи */
- {{0xE2, 0xF1, 0xE5}, 19}, /* все */
- {{0xEB, 0xFC, 0xEA}, 19}, /* льк */
- {{0xE0, 0xF2, 0xF3}, 19}, /* ату */
- {{0xF3, 0xE4, 0xE0}, 19}, /* уда */
- {{0xF8, 0xE8, 0xE9}, 19}, /* ший */
- {{0xE7, 0xE0, 0xF0}, 19}, /* зар */
- {{0xE5, 0xE4, 0xED}, 19}, /* едн */
- {{0xE0, 0xE2, 0xF8}, 19}, /* авш */
- {{0xF0, 0xEE, 0xE8}, 19}, /* рои */
- {{0xE8, 0xE4, 0xE0}, 19}, /* ида */
- {{0xE0, 0xF0, 0xEE}, 19}, /* аро */
- {{0xF2, 0xEE, 0xE9}, 19}, /* той */
- {{0xE6, 0xE0, 0xF9}, 19}, /* жащ */
- {{0xE5, 0xF1, 0xEE}, 19}, /* есо */
- {{0xEF, 0xE0, 0xEB}, 19}, /* пал */
- {{0xF9, 0xE0, 0xE5}, 19}, /* щае */
- {{0xF0, 0xFB, 0xE5}, 19}, /* рые */
- {{0xE5, 0xED, 0xDF}, 19}, /* еня */
- {{0xF9, 0xE8, 0xE9}, 19}, /* щий */
- {{0xEB, 0xF3, 0xE3}, 19}, /* луг */
- {{0xFE, 0xF7, 0xE8}, 18}, /* ючи */
- {{0xF3, 0xEB, 0xFC}, 18}, /* уль */
- {{0xEC, 0xFB, 0xF5}, 18}, /* мых */
- {{0xF0, 0xEE, 0xE3}, 18}, /* рог */
- {{0xF1, 0xEE, 0xF5}, 18}, /* сох */
- {{0xEA, 0xEE, 0xE5}, 18}, /* кое */
- {{0xED, 0xF2, 0xF1}, 18}, /* нтс */
- {{0xE0, 0xE7, 0xED}, 18}, /* азн */
- {{0xF2, 0xED, 0xFB}, 18}, /* тны */
- {{0xEE, 0xE4, 0xDF}, 18}, /* одя */
- {{0xEE, 0xE1, 0xED}, 18}, /* обн */
- {{0xE2, 0xFB, 0xE4}, 18}, /* выд */
- {{0xEE, 0xF1, 0xDF}, 18}, /* ося */
- {{0xFC, 0xF2, 0xE0}, 18}, /* ьта */
- {{0xED, 0xDF, 0xFE}, 18}, /* няю */
- {{0xED, 0xE0, 0xF0}, 18}, /* нар */
- {{0xE5, 0xE7, 0xF3}, 18}, /* езу */
- {{0xE0, 0xF1, 0xED}, 18}, /* асн */
- {{0xE7, 0xF3, 0xEB}, 18}, /* зул */
- {{0xF6, 0xE8, 0xEF}, 18}, /* цип */
- {{0xEA, 0xF2, 0xE5}, 18}, /* кте */
- {{0xE4, 0xEE, 0xEF}, 18}, /* доп */
- {{0xED, 0xF6, 0xE8}, 18}, /* нци */
- {{0xF1, 0xEF, 0xE5}, 18}, /* спе */
- {{0xE8, 0xEC, 0xFB}, 18}, /* имы */
- {{0xEC, 0xEE, 0xEC}, 18}, /* мом */
- {{0xEF, 0xE5, 0xF7}, 18}, /* печ */
- {{0x8E, 0xE1, 0xDF}, 18}, /* Обя */
- {{0x8F, 0xF0, 0xE0}, 18}, /* Пра */
- {{0xEE, 0xEB, 0xEE}, 18}, /* оло */
- {{0xF2, 0xF1, 0xEA}, 18}, /* тск */
- {{0xEB, 0xED, 0xE8}, 18}, /* лни */
- {{0xE5, 0xF0, 0xF2}, 18}, /* ерт */
- {{0xE8, 0xF1, 0xFC}, 18}, /* ись */
- {{0xEB, 0xFC, 0xF2}, 18}, /* льт */
- {{0xF1, 0xF3, 0xF2}, 18}, /* сут */
- {{0xE2, 0xEE, 0xE1}, 17}, /* воб */
- {{0xF0, 0xED, 0xFB}, 17}, /* рны */
- {{0xE1, 0xED, 0xFB}, 17}, /* бны */
- {{0xFB, 0xE4, 0xE0}, 17}, /* ыда */
- {{0xFC, 0xE7, 0xF3}, 17}, /* ьзу */
- {{0xE5, 0xE4, 0xEF}, 17}, /* едп */
- {{0xE0, 0xE4, 0xE5}, 17}, /* аде */
- {{0xE8, 0xEF, 0xE0}, 17}, /* ипа */
- {{0xF1, 0xE5, 0xE9}, 17}, /* сей */
- {{0xE5, 0xE5, 0xF1}, 17}, /* еес */
- {{0xEE, 0xE8, 0xE7}, 17}, /* оиз */
- {{0xEE, 0xF1, 0xE2}, 17}, /* осв */
- {{0xE4, 0xE8, 0xE2}, 17}, /* див */
- {{0xED, 0xE0, 0xED}, 17}, /* нан */
- {{0xE5, 0xF2, 0xE0}, 17}, /* ета */
- {{0xE4, 0xED, 0xE5}, 17}, /* дне */
- {{0xE8, 0xEE, 0xE1}, 17}, /* иоб */
- {{0xF3, 0xE5, 0xF2}, 17}, /* ует */
- {{0xED, 0xE0, 0xF5}, 17}, /* нах */
- {{0xF1, 0xEC, 0xE5}, 17}, /* сме */
- {{0xE0, 0xEB, 0xE8}, 17}, /* али */
- {{0xE1, 0xFA, 0xE5}, 17}, /* бъе */
- {{0xEF, 0xE0, 0xF1}, 17}, /* пас */
- {{0xE7, 0xE0, 0xEB}, 17}, /* зал */
- {{0xF0, 0xE6, 0xE0}, 16}, /* ржа */
- {{0xDF, 0xE2, 0xE8}, 16}, /* яви */
- {{0xE6, 0xE0, 0xF2}, 16}, /* жат */
- {{0xE1, 0xEE, 0xE6}, 16}, /* бож */
- {{0xF1, 0xE8, 0xEB}, 16}, /* сил */
- {{0xED, 0xF3, 0xFE}, 16}, /* ную */
- {{0xEF, 0xE5, 0xED}, 16}, /* пен */
- {{0xEC, 0xE0, 0xF2}, 16}, /* мат */
- {{0xEE, 0xED, 0xED}, 16}, /* онн */
- {{0xE2, 0xE8, 0xED}, 16}, /* вин */
- {{0xF2, 0xEA, 0xE8}, 16}, /* тки */
- {{0xF2, 0xEE, 0xF7}, 16}, /* точ */
- {{0xF1, 0xF7, 0xE8}, 16}, /* счи */
- {{0xED, 0xE8, 0xF6}, 16}, /* ниц */
- {{0xF9, 0xE5, 0xE5}, 16}, /* щее */
- {{0xE1, 0xE5, 0xF1}, 16}, /* бес */
- {{0xE0, 0xE4, 0xF6}, 16}, /* адц */
- {{0x8A, 0xEE, 0xEC}, 16}, /* Ком */
- {{0xFC, 0xE8, 0xEC}, 16}, /* ьим */
- {{0xF3, 0xF2, 0xF1}, 16}, /* утс */
- {{0xE0, 0xF7, 0xE8}, 16}, /* ачи */
- {{0xEF, 0xEE, 0xED}, 16}, /* пон */
- {{0xEA, 0xE0, 0xE5}, 16}, /* кае */
- {{0xE8, 0xE3, 0xF0}, 16}, /* игр */
- {{0xE0, 0xEA, 0xE8}, 16}, /* аки */
- {{0xE0, 0xF9, 0xE8}, 16}, /* ащи */
- {{0xEB, 0xFC, 0xF6}, 16}, /* льц */
- {{0xE2, 0xED, 0xEE}, 16}, /* вно */
- {{0xFB, 0xF8, 0xE5}, 15}, /* ыше */
- {{0x8B, 0xE8, 0xF6}, 15}, /* Лиц */
- {{0xFC, 0xE5, 0xE9}, 15}, /* ьей */
- {{0xF8, 0xE5, 0xEC}, 15}, /* шем */
- {{0xF3, 0xE1, 0xEB}, 15}, /* убл */
- {{0xF0, 0xE0, 0xF6}, 15}, /* рац */
- {{0xEA, 0xF3, 0xEC}, 15}, /* кум */
- {{0xF0, 0xE5, 0xE3}, 15}, /* рег */
- {{0xEE, 0xEF, 0xE0}, 15}, /* опа */
- {{0x82, 0xEE, 0xE7}, 15}, /* Воз */
- {{0xF2, 0xE0, 0xE5}, 15}, /* тае */
- {{0xEE, 0xE1, 0xFB}, 15}, /* обы */
- {{0xE1, 0xEB, 0xE8}, 15}, /* бли */
- {{0xF0, 0xEC, 0xE5}, 15}, /* рме */
- {{0xE2, 0xEE, 0xF1}, 15}, /* вос */
- {{0xE0, 0xF1, 0xE8}, 15}, /* аси */
- {{0xF2, 0xE0, 0xEC}, 15}, /* там */
- {{0xFC, 0xEC, 0xE5}, 15}, /* ьме */
- {{0xEE, 0xE3, 0xE0}, 15}, /* ога */
- {{0xE8, 0xEB, 0xEE}, 15}, /* ило */
- {{0xF1, 0xFC, 0xEC}, 15}, /* сьм */
- {{0xF0, 0xF2, 0xE8}, 15}, /* рти */
- {{0xF2, 0xF1, 0xF3}, 15}, /* тсу */
- {{0xF1, 0xE5, 0xED}, 15}, /* сен */
- {{0xF2, 0xE0, 0xEB}, 15}, /* тал */
- {{0xE4, 0xE0, 0xF0}, 15}, /* дар */
- {{0xE0, 0xEC, 0xEE}, 15}, /* амо */
- {{0xE5, 0xE4, 0xEB}, 15}, /* едл */
- {{0xF1, 0xF3, 0xE1}, 15}, /* суб */
- {{0xE5, 0xE9, 0xF4}, 15}, /* ейф */
- {{0x95, 0xF0, 0xE0}, 15}, /* Хра */
- {{0xEB, 0xE0, 0xEC}, 14}, /* лам */
- {{0xE0, 0xF0, 0xF3}, 14}, /* ару */
- {{0xE3, 0xE8, 0xF5}, 14}, /* гих */
- {{0xF6, 0xE8, 0xDF}, 14}, /* ция */
- {{0xE4, 0xE0, 0xE2}, 14}, /* дав */
- {{0xEB, 0xE8, 0xF8}, 14}, /* лиш */
- {{0xFE, 0xF7, 0xE0}, 14}, /* юча */
- {{0xE0, 0xED, 0xF1}, 14}, /* анс */
- {{0xEE, 0xE3, 0xF0}, 14}, /* огр */
- {{0xE8, 0xF9, 0xE0}, 14}, /* ища */
- {{0xE5, 0xED, 0xFC}, 14}, /* ень */
- {{0xEE, 0xF2, 0xE8}, 14}, /* оти */
- {{0xE0, 0xE4, 0xFB}, 13}, /* ады */
- {{0xE0, 0xF9, 0xE0}, 13}, /* аща */
- {{0xE2, 0xEE, 0xE8}, 13}, /* вои */
- {{0xE2, 0xFB, 0xEC}, 13}, /* вым */
- {{0xE2, 0xFC, 0xDF}, 13}, /* вья */
- {{0xEA, 0xE8, 0xE5}, 13}, /* кие */
- {{0xEB, 0xE8, 0xF1}, 13}, /* лис */
- {{0xEC, 0xE5, 0xE4}, 13}, /* мед */
- {{0xF2, 0xE8, 0xF5}, 13}, /* тих */
- {{0xE5, 0xF2, 0xEE}, 13}, /* ето */
- {{0xE7, 0xEB, 0xEE}, 13}, /* зло */
- {{0xEE, 0xEF, 0xE5}, 13}, /* опе */
- {{0xF1, 0xE8, 0xEC}, 13}, /* сим */
- {{0xDF, 0xE7, 0xE8}, 13}, /* язи */
- {{0xE8, 0xED, 0xE4}, 13}, /* инд */
- {{0xF7, 0xF3, 0xE6}, 13}, /* чуж */
- {{0xEB, 0xEA, 0xE8}, 13}, /* лки */
- {{0xE4, 0xEF, 0xF0}, 13}, /* дпр */
- {{0xED, 0xE4, 0xE8}, 13}, /* нди */
- {{0xEE, 0xF2, 0xE0}, 13}, /* ота */
- {{0xEE, 0xF2, 0xFB}, 13}, /* оты */
- {{0xEB, 0xE0, 0xF7}, 13}, /* лач */
- {{0xEA, 0xE8, 0xEC}, 13}, /* ким */
- {{0xE8, 0xF1, 0xE8}, 13}, /* иси */
- {{0xE2, 0xE0, 0xEB}, 13}, /* вал */
- {{0xE5, 0xEC, 0xEE}, 13}, /* емо */
- {{0xEF, 0xF3, 0xE1}, 13}, /* пуб */
- {{0xDF, 0xE5, 0xEC}, 13}, /* яем */
- {{0xE1, 0xEE, 0xEB}, 13}, /* бол */
- {{0xED, 0xF2, 0xF3}, 13}, /* нту */
- {{0xED, 0xE5, 0xE9}, 13}, /* ней */
- {{0xED, 0xE0, 0xDF}, 13}, /* ная */
- {{0xE5, 0xF1, 0xE0}, 13}, /* еса */
- {{0xF0, 0xED, 0xEE}, 13}, /* рно */
- {{0xF9, 0xE5, 0xEC}, 13}, /* щем */
- {{0xE0, 0xED, 0xFB}, 13}, /* аны */
- {{0x84, 0xEE, 0xE2}, 13}, /* Дов */
- {{0xF7, 0xE8, 0xE2}, 13}, /* чив */
- {{0xE2, 0xE8, 0xF1}, 13}, /* вис */
- {{0xEE, 0xEF, 0xEE}, 13}, /* опо */
- {{0xE2, 0xFC, 0xFE}, 13}, /* вью */
- {{0xE0, 0xEB, 0xE0}, 13}, /* ала */
- {{0xEB, 0xE5, 0xE9}, 12}, /* лей */
- {{0xE0, 0xF7, 0xE0}, 12}, /* ача */
- {{0xE5, 0xE7, 0xE2}, 12}, /* езв */
- {{0xE2, 0xE0, 0xDF}, 12}, /* вая */
- {{0xE5, 0xEE, 0xF1}, 12}, /* еос */
- {{0xDF, 0xF9, 0xE8}, 12}, /* ящи */
- {{0xE8, 0xE2, 0xE8}, 12}, /* иви */
- {{0xED, 0xE5, 0xE5}, 12}, /* нее */
- {{0xF2, 0xF0, 0xF3}, 12}, /* тру */
- {{0xF8, 0xE5, 0xE5}, 12}, /* шее */
- {{0xF1, 0xE0, 0xF5}, 12}, /* сах */
- {{0xE8, 0xED, 0xF6}, 12}, /* инц */
- {{0xEE, 0xEC, 0xEF}, 12}, /* омп */
- {{0xF3, 0xE6, 0xEE}, 12}, /* ужо */
- {{0xF3, 0xE0, 0xEB}, 12}, /* уал */
- {{0xED, 0xE0, 0xF2}, 12}, /* нат */
- {{0xE8, 0xE4, 0xF3}, 12}, /* иду */
- {{0xE2, 0xEB, 0xE0}, 12}, /* вла */
- {{0xE7, 0xE2, 0xE0}, 12}, /* зва */
- {{0xEB, 0xE5, 0xE5}, 12}, /* лее */
- {{0xF0, 0xE5, 0xF5}, 12}, /* рех */
- {{0xE6, 0xE4, 0xF3}, 12}, /* жду */
- {{0xEC, 0xE0, 0xEB}, 12}, /* мал */
- {{0xE5, 0xED, 0xF1}, 12}, /* енс */
- {{0xE8, 0xE9, 0xF1}, 12}, /* ийс */
- {{0xEA, 0xEE, 0xEB}, 12}, /* кол */
- {{0xED, 0xE0, 0xE7}, 12}, /* наз */
- {{0xE4, 0xF3, 0xE0}, 12}, /* дуа */
- {{0xEE, 0xED, 0xE8}, 12}, /* они */
- {{0xF1, 0xE5, 0xEC}, 12}, /* сем */
- {{0xE3, 0xEE, 0xE4}, 12}, /* год */
- {{0xEC, 0xE5, 0xE6}, 12}, /* меж */
- {{0xEE, 0xE7, 0xEB}, 12}, /* озл */
- {{0xE2, 0xEC, 0xE5}, 12}, /* вме */
- {{0xF3, 0xE4, 0xE5}, 12}, /* уде */
- {{0xFC, 0xEA, 0xEE}, 12}, /* ько */
- {{0xE5, 0xE2, 0xFB}, 12}, /* евы */
- {{0xE7, 0xE0, 0xEC}, 12}, /* зам */
- {{0xF1, 0xEE, 0xE4}, 12}, /* сод */
- {{0xF0, 0xEE, 0xE5}, 11}, /* рое */
- {{0xEE, 0xF2, 0xE4}, 11}, /* отд */
- {{0xF1, 0xE8, 0xDF}, 11}, /* сия */
- {{0xE8, 0xEA, 0xF3}, 11}, /* ику */
- {{0xFB, 0xEB, 0xE8}, 11}, /* ыли */
- {{0xE3, 0xE8, 0xEC}, 11}, /* гим */
- {{0xED, 0xFC, 0xF8}, 11}, /* ньш */
- {{0xF2, 0xE8, 0xF7}, 11}, /* тич */
- {{0xF0, 0xE0, 0xEB}, 11}, /* рал */
- {{0xF3, 0xF7, 0xE8}, 11}, /* учи */
- {{0xEC, 0xE5, 0xFE}, 11}, /* мею */
- {{0xF2, 0xE5, 0xEA}, 11}, /* тек */
- {{0xEE, 0xE1, 0xF3}, 11}, /* обу */
- {{0xED, 0xED, 0xF3}, 11}, /* нну */
- {{0xED, 0xE5, 0xEF}, 11}, /* неп */
- {{0xE2, 0xE5, 0xEB}, 11}, /* вел */
- {{0xF2, 0xEC, 0xE5}, 11}, /* тме */
- {{0xE1, 0xEE, 0xE3}, 11}, /* бог */
- {{0xEE, 0xF0, 0xE8}, 11}, /* ори */
- {{0xE0, 0xE2, 0xED}, 11}, /* авн */
- {{0xE4, 0xE5, 0xE5}, 11}, /* дее */
- {{0xE6, 0xEE, 0xEC}, 11}, /* жом */
- {{0x82, 0xF0, 0xE5}, 11}, /* Вре */
- {{0xEC, 0xFB, 0xE5}, 11}, /* мые */
- {{0xFC, 0xF6, 0xE0}, 11}, /* ьца */
- {{0xEE, 0xF6, 0xE5}, 11}, /* оце */
- {{0xE8, 0xF2, 0xFB}, 10}, /* иты */
- {{0xE7, 0xF0, 0xE0}, 10}, /* зра */
- {{0xEE, 0xED, 0xFB}, 10}, /* оны */
- {{0xF0, 0xE5, 0xF8}, 10}, /* реш */
- {{0xF3, 0xF8, 0xE5}, 10}, /* уше */
- {{0xF0, 0xE5, 0xE2}, 10}, /* рев */
- {{0xEE, 0xEF, 0xF3}, 10}, /* опу */
- {{0xDF, 0xF2, 0xFB}, 10}, /* яты */
- {{0xF2, 0xE0, 0xF7}, 10}, /* тач */
- {{0xE5, 0xF0, 0xEE}, 10}, /* еро */
- {{0xE2, 0xEA, 0xEB}, 10}, /* вкл */
- {{0xE7, 0xFB, 0xE2}, 10}, /* зыв */
- {{0xE0, 0xEF, 0xF0}, 10}, /* апр */
- {{0xF0, 0xF3, 0xF8}, 10}, /* руш */
- {{0x8E, 0xF2, 0xE2}, 10}, /* Отв */
- {{0xF0, 0xF1, 0xE0}, 10}, /* рса */
- {{0xE5, 0xEA, 0xF2}, 10}, /* ект */
- {{0xEB, 0xE5, 0xEA}, 10}, /* лек */
- {{0xE5, 0xE5, 0xF2}, 10}, /* еет */
- {{0xEE, 0xEF, 0xEB}, 10}, /* опл */
- {{0xF2, 0xF7, 0xE5}, 10}, /* тче */
- {{0xE3, 0xEE, 0xEC}, 10}, /* гом */
- {{0xF2, 0xEE, 0xE6}, 10}, /* тож */
- {{0xEB, 0xE5, 0xF7}, 10}, /* леч */
- {{0xE5, 0xF2, 0xFB}, 10}, /* еты */
- {{0xEE, 0xE6, 0xE8}, 10}, /* ожи */
- {{0xEC, 0xED, 0xEE}, 10}, /* мно */
- {{0xEC, 0xEE, 0xE9}, 10}, /* мой */
- {{0xF6, 0xE5, 0xEB}, 10}, /* цел */
- {{0xF3, 0xEF, 0xE8}, 10}, /* упи */
- {{0xE0, 0xE5, 0xE2}, 10}, /* аев */
- {{0xEF, 0xEE, 0xEC}, 10}, /* пом */
- {{0xE4, 0xDF, 0xF9}, 10}, /* дящ */
- {{0xF2, 0xF0, 0xE8}, 10}, /* три */
- {{0xF8, 0xE8, 0xE5}, 10}, /* шие */
- {{0xE5, 0xEA, 0xE0}, 10}, /* ека */
- {{0xE5, 0xF8, 0xE5}, 10}, /* еше */
- {{0xE7, 0xE0, 0xE8}, 10}, /* заи */
- {{0xE8, 0xF2, 0xEE}, 10}, /* ито */
- {{0xE7, 0xED, 0xFB}, 10}, /* зны */
- {{0xEE, 0xDF, 0xED}, 10}, /* оян */
- {{0xE8, 0xE6, 0xE5}, 10}, /* иже */
- {{0xE2, 0xED, 0xE5}, 10}, /* вне */
- {{0xF0, 0xF1, 0xF2}, 10}, /* рст */
- {{0xE5, 0xEC, 0xDF}, 10}, /* емя */
- {{0xED, 0xE0, 0xE8}, 10}, /* наи */
- {{0xF2, 0xEE, 0xEB}, 10}, /* тол */
- {{0xEB, 0xE8, 0xF2}, 10}, /* лит */
- {{0xEE, 0xF1, 0xF0}, 10}, /* оср */
- {{0xF2, 0xE4, 0xE5}, 10}, /* тде */
- {{0xE5, 0xEC, 0xE8}, 10}, /* еми */
- {{0xEC, 0xE5, 0xE5}, 10}, /* мее */
- {{0xF0, 0xFB, 0xF5}, 10}, /* рых */
- {{0xED, 0xE8, 0xE2}, 10}, /* нив */
- {{0xE5, 0xF0, 0xF3}, 10}, /* еру */
- {{0xF7, 0xE5, 0xEC}, 10}, /* чем */
- {{0xE4, 0xEE, 0xE1}, 10}, /* доб */
- {{0xE5, 0xEB, 0xEE}, 10}, /* ело */
- {{0xE8, 0xEB, 0xF3}, 10}, /* илу */
- {{0xE0, 0xE4, 0xEB}, 10}, /* адл */
- {{0xE8, 0xF7, 0xF2}, 10}, /* ичт */
- {{0xEC, 0xEB, 0xE5}, 10}, /* мле */
-};
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* MyHTML_ENCODING_DETECT_RESOURCE_H */
diff --git a/source/myhtml/encoding_resource.h b/source/myhtml/encoding_resource.h
deleted file mode 100644
index af6a763..0000000
--- a/source/myhtml/encoding_resource.h
+++ /dev/null
@@ -1,9330 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#include "myhtml/encoding.h"
-
-#ifndef MyHTML_ENCODING_RESOURCE_H
-#define MyHTML_ENCODING_RESOURCE_H
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-static const unsigned long myhtml_encoding_map_big5[] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 17392, 19506, 17923, 17830, 17784, 160359, 19831, 17843,
- 162993, 19682, 163013, 15253, 18230, 18244, 19527, 19520, 148159, 144919,
- 160594, 159371, 159954, 19543, 172881, 18255, 17882, 19589, 162924, 19719,
- 19108, 18081, 158499, 29221, 154196, 137827, 146950, 147297, 26189, 22267,
- 0x0000, 32149, 22813, 166841, 15860, 38708, 162799, 23515, 138590, 23204,
- 13861, 171696, 23249, 23479, 23804, 26478, 34195, 170309, 29793, 29853,
- 14453, 138579, 145054, 155681, 16108, 153822, 15093, 31484, 40855, 147809,
- 166157, 143850, 133770, 143966, 17162, 33924, 40854, 37935, 18736, 34323,
- 22678, 38730, 37400, 31184, 31282, 26208, 27177, 34973, 29772, 31685,
- 26498, 31276, 21071, 36934, 13542, 29636, 155065, 29894, 40903, 22451,
- 18735, 21580, 16689, 145038, 22552, 31346, 162661, 35727, 18094, 159368,
- 16769, 155033, 31662, 140476, 40904, 140481, 140489, 140492, 40905, 34052,
- 144827, 16564, 40906, 17633, 175615, 25281, 28782, 40907, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 12736,
- 12737, 12738, 12739, 12740, 131340, 12741, 131281, 131277, 12742, 12743,
- 131275, 139240, 12744, 131274, 12745, 12746, 12747, 12748, 131342, 12749,
- 12750, 256, 193, 461, 192, 274, 201, 282, 200, 332,
- 211, 465, 210, 0x0000, 7870, 0x0000, 7872, 202, 257, 225,
- 462, 224, 593, 275, 233, 283, 232, 299, 237, 464,
- 236, 333, 243, 466, 242, 363, 250, 468, 249, 470,
- 472, 474, 476, 252, 0x0000, 7871, 0x0000, 7873, 234, 609,
- 9178, 9179, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 172969, 135493, 0x0000, 25866,
- 0x0000, 0x0000, 20029, 28381, 40270, 37343, 0x0000, 0x0000, 161589, 25745,
- 20250, 20264, 20392, 20822, 20852, 20892, 20964, 21153, 21160, 21307,
- 21326, 21457, 21464, 22242, 22768, 22788, 22791, 22834, 22836, 23398,
- 23454, 23455, 23706, 24198, 24635, 25993, 26622, 26628, 26725, 27982,
- 28860, 30005, 32420, 32428, 32442, 32455, 32463, 32479, 32518, 32567,
- 33402, 33487, 33647, 35270, 35774, 35810, 36710, 36711, 36718, 29713,
- 31996, 32205, 26950, 31433, 21031, 0x0000, 0x0000, 0x0000, 0x0000, 37260,
- 30904, 37214, 32956, 0x0000, 36107, 33014, 133607, 0x0000, 0x0000, 32927,
- 40647, 19661, 40393, 40460, 19518, 171510, 159758, 40458, 172339, 13761,
- 0x0000, 28314, 33342, 29977, 0x0000, 18705, 39532, 39567, 40857, 31111,
- 164972, 138698, 132560, 142054, 20004, 20097, 20096, 20103, 20159, 20203,
- 20279, 13388, 20413, 15944, 20483, 20616, 13437, 13459, 13477, 20870,
- 22789, 20955, 20988, 20997, 20105, 21113, 21136, 21287, 13767, 21417,
- 13649, 21424, 13651, 21442, 21539, 13677, 13682, 13953, 21651, 21667,
- 21684, 21689, 21712, 21743, 21784, 21795, 21800, 13720, 21823, 13733,
- 13759, 21975, 13765, 163204, 21797, 0x0000, 134210, 134421, 151851, 21904,
- 142534, 14828, 131905, 36422, 150968, 169189, 16467, 164030, 30586, 142392,
- 14900, 18389, 164189, 158194, 151018, 25821, 134524, 135092, 134357, 135412,
- 25741, 36478, 134806, 134155, 135012, 142505, 164438, 148691, 0x0000, 134470,
- 170573, 164073, 18420, 151207, 142530, 39602, 14951, 169460, 16365, 13574,
- 152263, 169940, 161992, 142660, 40302, 38933, 0x0000, 17369, 155813, 25780,
- 21731, 142668, 142282, 135287, 14843, 135279, 157402, 157462, 162208, 25834,
- 151634, 134211, 36456, 139681, 166732, 132913, 0x0000, 18443, 131497, 16378,
- 22643, 142733, 0x0000, 148936, 132348, 155799, 134988, 134550, 21881, 16571,
- 17338, 0x0000, 19124, 141926, 135325, 33194, 39157, 134556, 25465, 14846,
- 141173, 36288, 22177, 25724, 15939, 0x0000, 173569, 134665, 142031, 142537,
- 0x0000, 135368, 145858, 14738, 14854, 164507, 13688, 155209, 139463, 22098,
- 134961, 142514, 169760, 13500, 27709, 151099, 0x0000, 0x0000, 161140, 142987,
- 139784, 173659, 167117, 134778, 134196, 157724, 32659, 135375, 141315, 141625,
- 13819, 152035, 134796, 135053, 134826, 16275, 134960, 134471, 135503, 134732,
- 0x0000, 134827, 134057, 134472, 135360, 135485, 16377, 140950, 25650, 135085,
- 144372, 161337, 142286, 134526, 134527, 142417, 142421, 14872, 134808, 135367,
- 134958, 173618, 158544, 167122, 167321, 167114, 38314, 21708, 33476, 21945,
- 0x0000, 171715, 39974, 39606, 161630, 142830, 28992, 33133, 33004, 23580,
- 157042, 33076, 14231, 21343, 164029, 37302, 134906, 134671, 134775, 134907,
- 13789, 151019, 13833, 134358, 22191, 141237, 135369, 134672, 134776, 135288,
- 135496, 164359, 136277, 134777, 151120, 142756, 23124, 135197, 135198, 135413,
- 135414, 22428, 134673, 161428, 164557, 135093, 134779, 151934, 14083, 135094,
- 135552, 152280, 172733, 149978, 137274, 147831, 164476, 22681, 21096, 13850,
- 153405, 31666, 23400, 18432, 19244, 40743, 18919, 39967, 39821, 154484,
- 143677, 22011, 13810, 22153, 20008, 22786, 138177, 194680, 38737, 131206,
- 20059, 20155, 13630, 23587, 24401, 24516, 14586, 25164, 25909, 27514,
- 27701, 27706, 28780, 29227, 20012, 29357, 149737, 32594, 31035, 31993,
- 32595, 156266, 13505, 0x0000, 156491, 32770, 32896, 157202, 158033, 21341,
- 34916, 35265, 161970, 35744, 36125, 38021, 38264, 38271, 38376, 167439,
- 38886, 39029, 39118, 39134, 39267, 170000, 40060, 40479, 40644, 27503,
- 63751, 20023, 131207, 38429, 25143, 38050, 0x0000, 20539, 28158, 171123,
- 40870, 15817, 34959, 147790, 28791, 23797, 19232, 152013, 13657, 154928,
- 24866, 166450, 36775, 37366, 29073, 26393, 29626, 144001, 172295, 15499,
- 137600, 19216, 30948, 29698, 20910, 165647, 16393, 27235, 172730, 16931,
- 34319, 133743, 31274, 170311, 166634, 38741, 28749, 21284, 139390, 37876,
- 30425, 166371, 40871, 30685, 20131, 20464, 20668, 20015, 20247, 40872,
- 21556, 32139, 22674, 22736, 138678, 24210, 24217, 24514, 141074, 25995,
- 144377, 26905, 27203, 146531, 27903, 0x0000, 29184, 148741, 29580, 16091,
- 150035, 23317, 29881, 35715, 154788, 153237, 31379, 31724, 31939, 32364,
- 33528, 34199, 40873, 34960, 40874, 36537, 40875, 36815, 34143, 39392,
- 37409, 40876, 167353, 136255, 16497, 17058, 23066, 0x0000, 0x0000, 0x0000,
- 39016, 26475, 17014, 22333, 0x0000, 34262, 149883, 33471, 160013, 19585,
- 159092, 23931, 158485, 159678, 40877, 40878, 23446, 40879, 26343, 32347,
- 28247, 31178, 15752, 17603, 143958, 141206, 17306, 17718, 0x0000, 23765,
- 146202, 35577, 23672, 15634, 144721, 23928, 40882, 29015, 17752, 147692,
- 138787, 19575, 14712, 13386, 131492, 158785, 35532, 20404, 131641, 22975,
- 33132, 38998, 170234, 24379, 134047, 0x0000, 139713, 166253, 16642, 18107,
- 168057, 16135, 40883, 172469, 16632, 14294, 18167, 158790, 16764, 165554,
- 160767, 17773, 14548, 152730, 17761, 17691, 19849, 19579, 19830, 17898,
- 16328, 150287, 13921, 17630, 17597, 16877, 23870, 23880, 23894, 15868,
- 14351, 23972, 23993, 14368, 14392, 24130, 24253, 24357, 24451, 14600,
- 14612, 14655, 14669, 24791, 24893, 23781, 14729, 25015, 25017, 25039,
- 14776, 25132, 25232, 25317, 25368, 14840, 22193, 14851, 25570, 25595,
- 25607, 25690, 14923, 25792, 23829, 22049, 40863, 14999, 25990, 15037,
- 26111, 26195, 15090, 26258, 15138, 26390, 15170, 26532, 26624, 15192,
- 26698, 26756, 15218, 15217, 15227, 26889, 26947, 29276, 26980, 27039,
- 27013, 15292, 27094, 15325, 27237, 27252, 27249, 27266, 15340, 27289,
- 15346, 27307, 27317, 27348, 27382, 27521, 27585, 27626, 27765, 27818,
- 15563, 27906, 27910, 27942, 28033, 15599, 28068, 28081, 28181, 28184,
- 28201, 28294, 166336, 28347, 28386, 28378, 40831, 28392, 28393, 28452,
- 28468, 15686, 147265, 28545, 28606, 15722, 15733, 29111, 23705, 15754,
- 28716, 15761, 28752, 28756, 28783, 28799, 28809, 131877, 17345, 13809,
- 134872, 147159, 22462, 159443, 28990, 153568, 13902, 27042, 166889, 23412,
- 31305, 153825, 169177, 31333, 31357, 154028, 31419, 31408, 31426, 31427,
- 29137, 156813, 16842, 31450, 31453, 31466, 16879, 21682, 154625, 31499,
- 31573, 31529, 152334, 154878, 31650, 31599, 33692, 154548, 158847, 31696,
- 33825, 31634, 31672, 154912, 15789, 154725, 33938, 31738, 31750, 31797,
- 154817, 31812, 31875, 149634, 31910, 26237, 148856, 31945, 31943, 31974,
- 31860, 31987, 31989, 31950, 32359, 17693, 159300, 32093, 159446, 29837,
- 32137, 32171, 28981, 32179, 32210, 147543, 155689, 32228, 15635, 32245,
- 137209, 32229, 164717, 32285, 155937, 155994, 32366, 32402, 17195, 37996,
- 32295, 32576, 32577, 32583, 31030, 156368, 39393, 32663, 156497, 32675,
- 136801, 131176, 17756, 145254, 17667, 164666, 32762, 156809, 32773, 32776,
- 32797, 32808, 32815, 172167, 158915, 32827, 32828, 32865, 141076, 18825,
- 157222, 146915, 157416, 26405, 32935, 166472, 33031, 33050, 22704, 141046,
- 27775, 156824, 151480, 25831, 136330, 33304, 137310, 27219, 150117, 150165,
- 17530, 33321, 133901, 158290, 146814, 20473, 136445, 34018, 33634, 158474,
- 149927, 144688, 137075, 146936, 33450, 26907, 194964, 16859, 34123, 33488,
- 33562, 134678, 137140, 14017, 143741, 144730, 33403, 33506, 33560, 147083,
- 159139, 158469, 158615, 144846, 15807, 33565, 21996, 33669, 17675, 159141,
- 33708, 33729, 33747, 13438, 159444, 27223, 34138, 13462, 159298, 143087,
- 33880, 154596, 33905, 15827, 17636, 27303, 33866, 146613, 31064, 33960,
- 158614, 159351, 159299, 34014, 33807, 33681, 17568, 33939, 34020, 154769,
- 16960, 154816, 17731, 34100, 23282, 159385, 17703, 34163, 17686, 26559,
- 34326, 165413, 165435, 34241, 159880, 34306, 136578, 159949, 194994, 17770,
- 34344, 13896, 137378, 21495, 160666, 34430, 34673, 172280, 34798, 142375,
- 34737, 34778, 34831, 22113, 34412, 26710, 17935, 34885, 34886, 161248,
- 146873, 161252, 34910, 34972, 18011, 34996, 34997, 25537, 35013, 30583,
- 161551, 35207, 35210, 35238, 35241, 35239, 35260, 166437, 35303, 162084,
- 162493, 35484, 30611, 37374, 35472, 162393, 31465, 162618, 147343, 18195,
- 162616, 29052, 35596, 35615, 152624, 152933, 35647, 35660, 35661, 35497,
- 150138, 35728, 35739, 35503, 136927, 17941, 34895, 35995, 163156, 163215,
- 195028, 14117, 163155, 36054, 163224, 163261, 36114, 36099, 137488, 36059,
- 28764, 36113, 150729, 16080, 36215, 36265, 163842, 135188, 149898, 15228,
- 164284, 160012, 31463, 36525, 36534, 36547, 37588, 36633, 36653, 164709,
- 164882, 36773, 37635, 172703, 133712, 36787, 18730, 166366, 165181, 146875,
- 24312, 143970, 36857, 172052, 165564, 165121, 140069, 14720, 159447, 36919,
- 165180, 162494, 36961, 165228, 165387, 37032, 165651, 37060, 165606, 37038,
- 37117, 37223, 15088, 37289, 37316, 31916, 166195, 138889, 37390, 27807,
- 37441, 37474, 153017, 37561, 166598, 146587, 166668, 153051, 134449, 37676,
- 37739, 166625, 166891, 28815, 23235, 166626, 166629, 18789, 37444, 166892,
- 166969, 166911, 37747, 37979, 36540, 38277, 38310, 37926, 38304, 28662,
- 17081, 140922, 165592, 135804, 146990, 18911, 27676, 38523, 38550, 16748,
- 38563, 159445, 25050, 38582, 30965, 166624, 38589, 21452, 18849, 158904,
- 131700, 156688, 168111, 168165, 150225, 137493, 144138, 38705, 34370, 38710,
- 18959, 17725, 17797, 150249, 28789, 23361, 38683, 38748, 168405, 38743,
- 23370, 168427, 38751, 37925, 20688, 143543, 143548, 38793, 38815, 38833,
- 38846, 38848, 38866, 38880, 152684, 38894, 29724, 169011, 38911, 38901,
- 168989, 162170, 19153, 38964, 38963, 38987, 39014, 15118, 160117, 15697,
- 132656, 147804, 153350, 39114, 39095, 39112, 39111, 19199, 159015, 136915,
- 21936, 39137, 39142, 39148, 37752, 39225, 150057, 19314, 170071, 170245,
- 39413, 39436, 39483, 39440, 39512, 153381, 14020, 168113, 170965, 39648,
- 39650, 170757, 39668, 19470, 39700, 39725, 165376, 20532, 39732, 158120,
- 14531, 143485, 39760, 39744, 171326, 23109, 137315, 39822, 148043, 39938,
- 39935, 39948, 171624, 40404, 171959, 172434, 172459, 172257, 172323, 172511,
- 40318, 40323, 172340, 40462, 26760, 40388, 139611, 172435, 172576, 137531,
- 172595, 40249, 172217, 172724, 40592, 40597, 40606, 40610, 19764, 40618,
- 40623, 148324, 40641, 15200, 14821, 15645, 20274, 14270, 166955, 40706,
- 40712, 19350, 37924, 159138, 40727, 40726, 40761, 22175, 22154, 40773,
- 39352, 168075, 38898, 33919, 40802, 40809, 31452, 40846, 29206, 19390,
- 149877, 149947, 29047, 150008, 148296, 150097, 29598, 166874, 137466, 31135,
- 166270, 167478, 37737, 37875, 166468, 37612, 37761, 37835, 166252, 148665,
- 29207, 16107, 30578, 31299, 28880, 148595, 148472, 29054, 137199, 28835,
- 137406, 144793, 16071, 137349, 152623, 137208, 14114, 136955, 137273, 14049,
- 137076, 137425, 155467, 14115, 136896, 22363, 150053, 136190, 135848, 136134,
- 136374, 34051, 145062, 34051, 33877, 149908, 160101, 146993, 152924, 147195,
- 159826, 17652, 145134, 170397, 159526, 26617, 14131, 15381, 15847, 22636,
- 137506, 26640, 16471, 145215, 147681, 147595, 147727, 158753, 21707, 22174,
- 157361, 22162, 135135, 134056, 134669, 37830, 166675, 37788, 20216, 20779,
- 14361, 148534, 20156, 132197, 131967, 20299, 20362, 153169, 23144, 131499,
- 132043, 14745, 131850, 132116, 13365, 20265, 131776, 167603, 131701, 35546,
- 131596, 20120, 20685, 20749, 20386, 20227, 150030, 147082, 20290, 20526,
- 20588, 20609, 20428, 20453, 20568, 20732, 20825, 20827, 20829, 20830,
- 28278, 144789, 147001, 147135, 28018, 137348, 147081, 20904, 20931, 132576,
- 17629, 132259, 132242, 132241, 36218, 166556, 132878, 21081, 21156, 133235,
- 21217, 37742, 18042, 29068, 148364, 134176, 149932, 135396, 27089, 134685,
- 29817, 16094, 29849, 29716, 29782, 29592, 19342, 150204, 147597, 21456,
- 13700, 29199, 147657, 21940, 131909, 21709, 134086, 22301, 37469, 38644,
- 37734, 22493, 22413, 22399, 13886, 22731, 23193, 166470, 136954, 137071,
- 136976, 23084, 22968, 37519, 23166, 23247, 23058, 153926, 137715, 137313,
- 148117, 14069, 27909, 29763, 23073, 155267, 23169, 166871, 132115, 37856,
- 29836, 135939, 28933, 18802, 37896, 166395, 37821, 14240, 23582, 23710,
- 24158, 24136, 137622, 137596, 146158, 24269, 23375, 137475, 137476, 14081,
- 137376, 14045, 136958, 14035, 33066, 166471, 138682, 144498, 166312, 24332,
- 24334, 137511, 137131, 23147, 137019, 23364, 34324, 161277, 34912, 24702,
- 141408, 140843, 24539, 16056, 140719, 140734, 168072, 159603, 25024, 131134,
- 131142, 140827, 24985, 24984, 24693, 142491, 142599, 149204, 168269, 25713,
- 149093, 142186, 14889, 142114, 144464, 170218, 142968, 25399, 173147, 25782,
- 25393, 25553, 149987, 142695, 25252, 142497, 25659, 25963, 26994, 15348,
- 143502, 144045, 149897, 144043, 21773, 144096, 137433, 169023, 26318, 144009,
- 143795, 15072, 16784, 152964, 166690, 152975, 136956, 152923, 152613, 30958,
- 143619, 137258, 143924, 13412, 143887, 143746, 148169, 26254, 159012, 26219,
- 19347, 26160, 161904, 138731, 26211, 144082, 144097, 26142, 153714, 14545,
- 145466, 145340, 15257, 145314, 144382, 29904, 15254, 26511, 149034, 26806,
- 26654, 15300, 27326, 14435, 145365, 148615, 27187, 27218, 27337, 27397,
- 137490, 25873, 26776, 27212, 15319, 27258, 27479, 147392, 146586, 37792,
- 37618, 166890, 166603, 37513, 163870, 166364, 37991, 28069, 28427, 149996,
- 28007, 147327, 15759, 28164, 147516, 23101, 28170, 22599, 27940, 30786,
- 28987, 148250, 148086, 28913, 29264, 29319, 29332, 149391, 149285, 20857,
- 150180, 132587, 29818, 147192, 144991, 150090, 149783, 155617, 16134, 16049,
- 150239, 166947, 147253, 24743, 16115, 29900, 29756, 37767, 29751, 17567,
- 159210, 17745, 30083, 16227, 150745, 150790, 16216, 30037, 30323, 173510,
- 15129, 29800, 166604, 149931, 149902, 15099, 15821, 150094, 16127, 149957,
- 149747, 37370, 22322, 37698, 166627, 137316, 20703, 152097, 152039, 30584,
- 143922, 30478, 30479, 30587, 149143, 145281, 14942, 149744, 29752, 29851,
- 16063, 150202, 150215, 16584, 150166, 156078, 37639, 152961, 30750, 30861,
- 30856, 30930, 29648, 31065, 161601, 153315, 16654, 31131, 33942, 31141,
- 27181, 147194, 31290, 31220, 16750, 136934, 16690, 37429, 31217, 134476,
- 149900, 131737, 146874, 137070, 13719, 21867, 13680, 13994, 131540, 134157,
- 31458, 23129, 141045, 154287, 154268, 23053, 131675, 30960, 23082, 154566,
- 31486, 16889, 31837, 31853, 16913, 154547, 155324, 155302, 31949, 150009,
- 137136, 31886, 31868, 31918, 27314, 32220, 32263, 32211, 32590, 156257,
- 155996, 162632, 32151, 155266, 17002, 158581, 133398, 26582, 131150, 144847,
- 22468, 156690, 156664, 149858, 32733, 31527, 133164, 154345, 154947, 31500,
- 155150, 39398, 34373, 39523, 27164, 144447, 14818, 150007, 157101, 39455,
- 157088, 33920, 160039, 158929, 17642, 33079, 17410, 32966, 33033, 33090,
- 157620, 39107, 158274, 33378, 33381, 158289, 33875, 159143, 34320, 160283,
- 23174, 16767, 137280, 23339, 137377, 23268, 137432, 34464, 195004, 146831,
- 34861, 160802, 23042, 34926, 20293, 34951, 35007, 35046, 35173, 35149,
- 153219, 35156, 161669, 161668, 166901, 166873, 166812, 166393, 16045, 33955,
- 18165, 18127, 14322, 35389, 35356, 169032, 24397, 37419, 148100, 26068,
- 28969, 28868, 137285, 40301, 35999, 36073, 163292, 22938, 30659, 23024,
- 17262, 14036, 36394, 36519, 150537, 36656, 36682, 17140, 27736, 28603,
- 140065, 18587, 28537, 28299, 137178, 39913, 14005, 149807, 37051, 37015,
- 21873, 18694, 37307, 37892, 166475, 16482, 166652, 37927, 166941, 166971,
- 34021, 35371, 38297, 38311, 38295, 38294, 167220, 29765, 16066, 149759,
- 150082, 148458, 16103, 143909, 38543, 167655, 167526, 167525, 16076, 149997,
- 150136, 147438, 29714, 29803, 16124, 38721, 168112, 26695, 18973, 168083,
- 153567, 38749, 37736, 166281, 166950, 166703, 156606, 37562, 23313, 35689,
- 18748, 29689, 147995, 38811, 38769, 39224, 134950, 24001, 166853, 150194,
- 38943, 169178, 37622, 169431, 37349, 17600, 166736, 150119, 166756, 39132,
- 166469, 16128, 37418, 18725, 33812, 39227, 39245, 162566, 15869, 39323,
- 19311, 39338, 39516, 166757, 153800, 27279, 39457, 23294, 39471, 170225,
- 19344, 170312, 39356, 19389, 19351, 37757, 22642, 135938, 22562, 149944,
- 136424, 30788, 141087, 146872, 26821, 15741, 37976, 14631, 24912, 141185,
- 141675, 24839, 40015, 40019, 40059, 39989, 39952, 39807, 39887, 171565,
- 39839, 172533, 172286, 40225, 19630, 147716, 40472, 19632, 40204, 172468,
- 172269, 172275, 170287, 40357, 33981, 159250, 159711, 158594, 34300, 17715,
- 159140, 159364, 159216, 33824, 34286, 159232, 145367, 155748, 31202, 144796,
- 144960, 18733, 149982, 15714, 37851, 37566, 37704, 131775, 30905, 37495,
- 37965, 20452, 13376, 36964, 152925, 30781, 30804, 30902, 30795, 137047,
- 143817, 149825, 13978, 20338, 28634, 28633, 28702, 28702, 21524, 147893,
- 22459, 22771, 22410, 40214, 22487, 28980, 13487, 147884, 29163, 158784,
- 151447, 23336, 137141, 166473, 24844, 23246, 23051, 17084, 148616, 14124,
- 19323, 166396, 37819, 37816, 137430, 134941, 33906, 158912, 136211, 148218,
- 142374, 148417, 22932, 146871, 157505, 32168, 155995, 155812, 149945, 149899,
- 166394, 37605, 29666, 16105, 29876, 166755, 137375, 16097, 150195, 27352,
- 29683, 29691, 16086, 150078, 150164, 137177, 150118, 132007, 136228, 149989,
- 29768, 149782, 28837, 149878, 37508, 29670, 37727, 132350, 37681, 166606,
- 166422, 37766, 166887, 153045, 18741, 166530, 29035, 149827, 134399, 22180,
- 132634, 134123, 134328, 21762, 31172, 137210, 32254, 136898, 150096, 137298,
- 17710, 37889, 14090, 166592, 149933, 22960, 137407, 137347, 160900, 23201,
- 14050, 146779, 14000, 37471, 23161, 166529, 137314, 37748, 15565, 133812,
- 19094, 14730, 20724, 15721, 15692, 136092, 29045, 17147, 164376, 28175,
- 168164, 17643, 27991, 163407, 28775, 27823, 15574, 147437, 146989, 28162,
- 28428, 15727, 132085, 30033, 14012, 13512, 18048, 16090, 18545, 22980,
- 37486, 18750, 36673, 166940, 158656, 22546, 22472, 14038, 136274, 28926,
- 148322, 150129, 143331, 135856, 140221, 26809, 26983, 136088, 144613, 162804,
- 145119, 166531, 145366, 144378, 150687, 27162, 145069, 158903, 33854, 17631,
- 17614, 159014, 159057, 158850, 159710, 28439, 160009, 33597, 137018, 33773,
- 158848, 159827, 137179, 22921, 23170, 137139, 23137, 23153, 137477, 147964,
- 14125, 23023, 137020, 14023, 29070, 37776, 26266, 148133, 23150, 23083,
- 148115, 27179, 147193, 161590, 148571, 148170, 28957, 148057, 166369, 20400,
- 159016, 23746, 148686, 163405, 148413, 27148, 148054, 135940, 28838, 28979,
- 148457, 15781, 27871, 194597, 150095, 32357, 23019, 23855, 15859, 24412,
- 150109, 137183, 32164, 33830, 21637, 146170, 144128, 131604, 22398, 133333,
- 132633, 16357, 139166, 172726, 28675, 168283, 23920, 29583, 31955, 166489,
- 168992, 20424, 32743, 29389, 29456, 162548, 29496, 29497, 153334, 29505,
- 29512, 16041, 162584, 36972, 29173, 149746, 29665, 33270, 16074, 30476,
- 16081, 27810, 22269, 29721, 29726, 29727, 16098, 16112, 16116, 16122,
- 29907, 16142, 16211, 30018, 30061, 30066, 30093, 16252, 30152, 30172,
- 16320, 30285, 16343, 30324, 16348, 30330, 151388, 29064, 22051, 35200,
- 22633, 16413, 30531, 16441, 26465, 16453, 13787, 30616, 16490, 16495,
- 23646, 30654, 30667, 22770, 30744, 28857, 30748, 16552, 30777, 30791,
- 30801, 30822, 33864, 152885, 31027, 26627, 31026, 16643, 16649, 31121,
- 31129, 36795, 31238, 36796, 16743, 31377, 16818, 31420, 33401, 16836,
- 31439, 31451, 16847, 20001, 31586, 31596, 31611, 31762, 31771, 16992,
- 17018, 31867, 31900, 17036, 31928, 17044, 31981, 36755, 28864, 134351,
- 32207, 32212, 32208, 32253, 32686, 32692, 29343, 17303, 32800, 32805,
- 31545, 32814, 32817, 32852, 15820, 22452, 28832, 32951, 33001, 17389,
- 33036, 29482, 33038, 33042, 30048, 33044, 17409, 15161, 33110, 33113,
- 33114, 17427, 22586, 33148, 33156, 17445, 33171, 17453, 33189, 22511,
- 33217, 33252, 33364, 17551, 33446, 33398, 33482, 33496, 33535, 17584,
- 33623, 38505, 27018, 33797, 28917, 33892, 24803, 33928, 17668, 33982,
- 34017, 34040, 34064, 34104, 34130, 17723, 34159, 34160, 34272, 17783,
- 34418, 34450, 34482, 34543, 38469, 34699, 17926, 17943, 34990, 35071,
- 35108, 35143, 35217, 162151, 35369, 35384, 35476, 35508, 35921, 36052,
- 36082, 36124, 18328, 22623, 36291, 18413, 20206, 36410, 21976, 22356,
- 36465, 22005, 36528, 18487, 36558, 36578, 36580, 36589, 36594, 36791,
- 36801, 36810, 36812, 36915, 39364, 18605, 39136, 37395, 18718, 37416,
- 37464, 37483, 37553, 37550, 37567, 37603, 37611, 37619, 37620, 37629,
- 37699, 37764, 37805, 18757, 18769, 40639, 37911, 21249, 37917, 37933,
- 37950, 18794, 37972, 38009, 38189, 38306, 18855, 38388, 38451, 18917,
- 26528, 18980, 38720, 18997, 38834, 38850, 22100, 19172, 24808, 39097,
- 19225, 39153, 22596, 39182, 39193, 20916, 39196, 39223, 39234, 39261,
- 39266, 19312, 39365, 19357, 39484, 39695, 31363, 39785, 39809, 39901,
- 39921, 39924, 19565, 39968, 14191, 138178, 40265, 39994, 40702, 22096,
- 40339, 40381, 40384, 40444, 38134, 36790, 40571, 40620, 40625, 40637,
- 40646, 38108, 40674, 40689, 40696, 31432, 40772, 131220, 131767, 132000,
- 26906, 38083, 22956, 132311, 22592, 38081, 14265, 132565, 132629, 132726,
- 136890, 22359, 29043, 133826, 133837, 134079, 21610, 194619, 134091, 21662,
- 134139, 134203, 134227, 134245, 134268, 24807, 134285, 22138, 134325, 134365,
- 134381, 134511, 134578, 134600, 26965, 39983, 34725, 134660, 134670, 134871,
- 135056, 134957, 134771, 23584, 135100, 24075, 135260, 135247, 135286, 26398,
- 135291, 135304, 135318, 13895, 135359, 135379, 135471, 135483, 21348, 33965,
- 135907, 136053, 135990, 35713, 136567, 136729, 137155, 137159, 20088, 28859,
- 137261, 137578, 137773, 137797, 138282, 138352, 138412, 138952, 25283, 138965,
- 139029, 29080, 26709, 139333, 27113, 14024, 139900, 140247, 140282, 141098,
- 141425, 141647, 33533, 141671, 141715, 142037, 35237, 142056, 36768, 142094,
- 38840, 142143, 38983, 39613, 142412, 0x0000, 142472, 142519, 154600, 142600,
- 142610, 142775, 142741, 142914, 143220, 143308, 143411, 143462, 144159, 144350,
- 24497, 26184, 26303, 162425, 144743, 144883, 29185, 149946, 30679, 144922,
- 145174, 32391, 131910, 22709, 26382, 26904, 146087, 161367, 155618, 146961,
- 147129, 161278, 139418, 18640, 19128, 147737, 166554, 148206, 148237, 147515,
- 148276, 148374, 150085, 132554, 20946, 132625, 22943, 138920, 15294, 146687,
- 148484, 148694, 22408, 149108, 14747, 149295, 165352, 170441, 14178, 139715,
- 35678, 166734, 39382, 149522, 149755, 150037, 29193, 150208, 134264, 22885,
- 151205, 151430, 132985, 36570, 151596, 21135, 22335, 29041, 152217, 152601,
- 147274, 150183, 21948, 152646, 152686, 158546, 37332, 13427, 152895, 161330,
- 152926, 18200, 152930, 152934, 153543, 149823, 153693, 20582, 13563, 144332,
- 24798, 153859, 18300, 166216, 154286, 154505, 154630, 138640, 22433, 29009,
- 28598, 155906, 162834, 36950, 156082, 151450, 35682, 156674, 156746, 23899,
- 158711, 36662, 156804, 137500, 35562, 150006, 156808, 147439, 156946, 19392,
- 157119, 157365, 141083, 37989, 153569, 24981, 23079, 194765, 20411, 22201,
- 148769, 157436, 20074, 149812, 38486, 28047, 158909, 13848, 35191, 157593,
- 157806, 156689, 157790, 29151, 157895, 31554, 168128, 133649, 157990, 37124,
- 158009, 31301, 40432, 158202, 39462, 158253, 13919, 156777, 131105, 31107,
- 158260, 158555, 23852, 144665, 33743, 158621, 18128, 158884, 30011, 34917,
- 159150, 22710, 14108, 140685, 159819, 160205, 15444, 160384, 160389, 37505,
- 139642, 160395, 37680, 160486, 149968, 27705, 38047, 160848, 134904, 34855,
- 35061, 141606, 164979, 137137, 28344, 150058, 137248, 14756, 14009, 23568,
- 31203, 17727, 26294, 171181, 170148, 35139, 161740, 161880, 22230, 16607,
- 136714, 14753, 145199, 164072, 136133, 29101, 33638, 162269, 168360, 23143,
- 19639, 159919, 166315, 162301, 162314, 162571, 163174, 147834, 31555, 31102,
- 163849, 28597, 172767, 27139, 164632, 21410, 159239, 37823, 26678, 38749,
- 164207, 163875, 158133, 136173, 143919, 163912, 23941, 166960, 163971, 22293,
- 38947, 166217, 23979, 149896, 26046, 27093, 21458, 150181, 147329, 15377,
- 26422, 163984, 164084, 164142, 139169, 164175, 164233, 164271, 164378, 164614,
- 164655, 164746, 13770, 164968, 165546, 18682, 25574, 166230, 30728, 37461,
- 166328, 17394, 166375, 17375, 166376, 166726, 166868, 23032, 166921, 36619,
- 167877, 168172, 31569, 168208, 168252, 15863, 168286, 150218, 36816, 29327,
- 22155, 169191, 169449, 169392, 169400, 169778, 170193, 170313, 170346, 170435,
- 170536, 170766, 171354, 171419, 32415, 171768, 171811, 19620, 38215, 172691,
- 29090, 172799, 19857, 36882, 173515, 19868, 134300, 36798, 21953, 36794,
- 140464, 36793, 150163, 17673, 32383, 28502, 27313, 20202, 13540, 166700,
- 161949, 14138, 36480, 137205, 163876, 166764, 166809, 162366, 157359, 15851,
- 161365, 146615, 153141, 153942, 20122, 155265, 156248, 22207, 134765, 36366,
- 23405, 147080, 150686, 25566, 25296, 137206, 137339, 25904, 22061, 154698,
- 21530, 152337, 15814, 171416, 19581, 22050, 22046, 32585, 155352, 22901,
- 146752, 34672, 19996, 135146, 134473, 145082, 33047, 40286, 36120, 30267,
- 40005, 30286, 30649, 37701, 21554, 33096, 33527, 22053, 33074, 33816,
- 32957, 21994, 31074, 22083, 21526, 134813, 13774, 22021, 22001, 26353,
- 164578, 13869, 30004, 22000, 21946, 21655, 21874, 134209, 134294, 24272,
- 151880, 134774, 142434, 134818, 40619, 32090, 21982, 135285, 25245, 38765,
- 21652, 36045, 29174, 37238, 25596, 25529, 25598, 21865, 142147, 40050,
- 143027, 20890, 13535, 134567, 20903, 21581, 21790, 21779, 30310, 36397,
- 157834, 30129, 32950, 34820, 34694, 35015, 33206, 33820, 135361, 17644,
- 29444, 149254, 23440, 33547, 157843, 22139, 141044, 163119, 147875, 163187,
- 159440, 160438, 37232, 135641, 37384, 146684, 173737, 134828, 134905, 29286,
- 138402, 18254, 151490, 163833, 135147, 16634, 40029, 25887, 142752, 18675,
- 149472, 171388, 135148, 134666, 24674, 161187, 135149, 0x0000, 155720, 135559,
- 29091, 32398, 40272, 19994, 19972, 13687, 23309, 27826, 21351, 13996,
- 14812, 21373, 13989, 149016, 22682, 150382, 33325, 21579, 22442, 154261,
- 133497, 0x0000, 14930, 140389, 29556, 171692, 19721, 39917, 146686, 171824,
- 19547, 151465, 169374, 171998, 33884, 146870, 160434, 157619, 145184, 25390,
- 32037, 147191, 146988, 14890, 36872, 21196, 15988, 13946, 17897, 132238,
- 30272, 23280, 134838, 30842, 163630, 22695, 16575, 22140, 39819, 23924,
- 30292, 173108, 40581, 19681, 30201, 14331, 24857, 143578, 148466, 0x0000,
- 22109, 135849, 22439, 149859, 171526, 21044, 159918, 13741, 27722, 40316,
- 31830, 39737, 22494, 137068, 23635, 25811, 169168, 156469, 160100, 34477,
- 134440, 159010, 150242, 134513, 0x0000, 20990, 139023, 23950, 38659, 138705,
- 40577, 36940, 31519, 39682, 23761, 31651, 25192, 25397, 39679, 31695,
- 39722, 31870, 39726, 31810, 31878, 39957, 31740, 39689, 40727, 39963,
- 149822, 40794, 21875, 23491, 20477, 40600, 20466, 21088, 15878, 21201,
- 22375, 20566, 22967, 24082, 38856, 40363, 36700, 21609, 38836, 39232,
- 38842, 21292, 24880, 26924, 21466, 39946, 40194, 19515, 38465, 27008,
- 20646, 30022, 137069, 39386, 21107, 0x0000, 37209, 38529, 37212, 0x0000,
- 37201, 167575, 25471, 159011, 27338, 22033, 37262, 30074, 25221, 132092,
- 29519, 31856, 154657, 146685, 0x0000, 149785, 30422, 39837, 20010, 134356,
- 33726, 34882, 0x0000, 23626, 27072, 20717, 22394, 21023, 24053, 20174,
- 27697, 131570, 20281, 21660, 21722, 21146, 36226, 13822, 24332, 13811,
- 0x0000, 27474, 37244, 40869, 39831, 38958, 39092, 39610, 40616, 40580,
- 29050, 31508, 0x0000, 27642, 34840, 32632, 0x0000, 22048, 173642, 36471,
- 40787, 0x0000, 36308, 36431, 40476, 36353, 25218, 164733, 36392, 36469,
- 31443, 150135, 31294, 30936, 27882, 35431, 30215, 166490, 40742, 27854,
- 34774, 30147, 172722, 30803, 194624, 36108, 29410, 29553, 35629, 29442,
- 29937, 36075, 150203, 34351, 24506, 34976, 17591, 0x0000, 137275, 159237,
- 0x0000, 35454, 140571, 0x0000, 24829, 30311, 39639, 40260, 37742, 39823,
- 34805, 0x0000, 34831, 36087, 29484, 38689, 39856, 13782, 29362, 19463,
- 31825, 39242, 155993, 24921, 19460, 40598, 24957, 0x0000, 22367, 24943,
- 25254, 25145, 25294, 14940, 25058, 21418, 144373, 25444, 26626, 13778,
- 23895, 166850, 36826, 167481, 0x0000, 20697, 138566, 30982, 21298, 38456,
- 134971, 16485, 0x0000, 30718, 0x0000, 31938, 155418, 31962, 31277, 32870,
- 32867, 32077, 29957, 29938, 35220, 33306, 26380, 32866, 160902, 32859,
- 29936, 33027, 30500, 35209, 157644, 30035, 159441, 34729, 34766, 33224,
- 34700, 35401, 36013, 35651, 30507, 29944, 34010, 13877, 27058, 36262,
- 0x0000, 35241, 29800, 28089, 34753, 147473, 29927, 15835, 29046, 24740,
- 24988, 15569, 29026, 24695, 0x0000, 32625, 166701, 29264, 24809, 19326,
- 21024, 15384, 146631, 155351, 161366, 152881, 137540, 135934, 170243, 159196,
- 159917, 23745, 156077, 166415, 145015, 131310, 157766, 151310, 17762, 23327,
- 156492, 40784, 40614, 156267, 12288, 65292, 12289, 12290, 65294, 8231,
- 65307, 65306, 65311, 65281, 65072, 8230, 8229, 65104, 65105, 65106,
- 183, 65108, 65109, 65110, 65111, 65372, 8211, 65073, 8212, 65075,
- 9588, 65076, 65103, 65288, 65289, 65077, 65078, 65371, 65373, 65079,
- 65080, 12308, 12309, 65081, 65082, 12304, 12305, 65083, 65084, 12298,
- 12299, 65085, 65086, 12296, 12297, 65087, 65088, 12300, 12301, 65089,
- 65090, 12302, 12303, 65091, 65092, 65113, 65114, 65115, 65116, 65117,
- 65118, 8216, 8217, 8220, 8221, 12317, 12318, 8245, 8242, 65283,
- 65286, 65290, 8251, 167, 12291, 9675, 9679, 9651, 9650, 9678,
- 9734, 9733, 9671, 9670, 9633, 9632, 9661, 9660, 12963, 8453,
- 175, 65507, 65343, 717, 65097, 65098, 65101, 65102, 65099, 65100,
- 65119, 65120, 65121, 65291, 65293, 215, 247, 177, 8730, 65308,
- 65310, 65309, 8806, 8807, 8800, 8734, 8786, 8801, 65122, 65123,
- 65124, 65125, 65126, 65374, 8745, 8746, 8869, 8736, 8735, 8895,
- 13266, 13265, 8747, 8750, 8757, 8756, 9792, 9794, 8853, 8857,
- 8593, 8595, 8592, 8594, 8598, 8599, 8601, 8600, 8741, 8739,
- 65295, 65340, 8725, 65128, 65284, 65509, 12306, 65504, 65505, 65285,
- 65312, 8451, 8457, 65129, 65130, 65131, 13269, 13212, 13213, 13214,
- 13262, 13217, 13198, 13199, 13252, 176, 20825, 20827, 20830, 20829,
- 20833, 20835, 21991, 29929, 31950, 9601, 9602, 9603, 9604, 9605,
- 9606, 9607, 9608, 9615, 9614, 9613, 9612, 9611, 9610, 9609,
- 9532, 9524, 9516, 9508, 9500, 9620, 9472, 9474, 9621, 9484,
- 9488, 9492, 9496, 9581, 9582, 9584, 9583, 9552, 9566, 9578,
- 9569, 9698, 9699, 9701, 9700, 9585, 9586, 9587, 65296, 65297,
- 65298, 65299, 65300, 65301, 65302, 65303, 65304, 65305, 8544, 8545,
- 8546, 8547, 8548, 8549, 8550, 8551, 8552, 8553, 12321, 12322,
- 12323, 12324, 12325, 12326, 12327, 12328, 12329, 21313, 21316, 21317,
- 65313, 65314, 65315, 65316, 65317, 65318, 65319, 65320, 65321, 65322,
- 65323, 65324, 65325, 65326, 65327, 65328, 65329, 65330, 65331, 65332,
- 65333, 65334, 65335, 65336, 65337, 65338, 65345, 65346, 65347, 65348,
- 65349, 65350, 65351, 65352, 65353, 65354, 65355, 65356, 65357, 65358,
- 65359, 65360, 65361, 65362, 65363, 65364, 65365, 65366, 65367, 65368,
- 65369, 65370, 913, 914, 915, 916, 917, 918, 919, 920,
- 921, 922, 923, 924, 925, 926, 927, 928, 929, 931,
- 932, 933, 934, 935, 936, 937, 945, 946, 947, 948,
- 949, 950, 951, 952, 953, 954, 955, 956, 957, 958,
- 959, 960, 961, 963, 964, 965, 966, 967, 968, 969,
- 12549, 12550, 12551, 12552, 12553, 12554, 12555, 12556, 12557, 12558,
- 12559, 12560, 12561, 12562, 12563, 12564, 12565, 12566, 12567, 12568,
- 12569, 12570, 12571, 12572, 12573, 12574, 12575, 12576, 12577, 12578,
- 12579, 12580, 12581, 12582, 12583, 12584, 12585, 729, 713, 714,
- 711, 715, 9216, 9217, 9218, 9219, 9220, 9221, 9222, 9223,
- 9224, 9225, 9226, 9227, 9228, 9229, 9230, 9231, 9232, 9233,
- 9234, 9235, 9236, 9237, 9238, 9239, 9240, 9241, 9242, 9243,
- 9244, 9245, 9246, 9247, 9249, 8364, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 19968, 20057, 19969, 19971, 20035,
- 20061, 20102, 20108, 20154, 20799, 20837, 20843, 20960, 20992, 20993,
- 21147, 21269, 21313, 21340, 21448, 19977, 19979, 19976, 19978, 20011,
- 20024, 20961, 20037, 20040, 20063, 20062, 20110, 20129, 20800, 20995,
- 21242, 21315, 21449, 21475, 22303, 22763, 22805, 22823, 22899, 23376,
- 23377, 23379, 23544, 23567, 23586, 23608, 23665, 24029, 24037, 24049,
- 24050, 24051, 24062, 24178, 24318, 24331, 24339, 25165, 19985, 19984,
- 19981, 20013, 20016, 20025, 20043, 23609, 20104, 20113, 20117, 20114,
- 20116, 20130, 20161, 20160, 20163, 20166, 20167, 20173, 20170, 20171,
- 20164, 20803, 20801, 20839, 20845, 20846, 20844, 20887, 20982, 20998,
- 20999, 21000, 21243, 21246, 21247, 21270, 21305, 21320, 21319, 21317,
- 21342, 21380, 21451, 21450, 21453, 22764, 22825, 22827, 22826, 22829,
- 23380, 23569, 23588, 23610, 23663, 24052, 24187, 24319, 24340, 24341,
- 24515, 25096, 25142, 25163, 25166, 25903, 25991, 26007, 26020, 26041,
- 26085, 26352, 26376, 26408, 27424, 27490, 27513, 27595, 27604, 27611,
- 27663, 27700, 28779, 29226, 29238, 29243, 29255, 29273, 29275, 29356,
- 29579, 19993, 19990, 19989, 19988, 19992, 20027, 20045, 20047, 20046,
- 20197, 20184, 20180, 20181, 20182, 20183, 20195, 20196, 20185, 20190,
- 20805, 20804, 20873, 20874, 20908, 20985, 20986, 20984, 21002, 21152,
- 21151, 21253, 21254, 21271, 21277, 20191, 21322, 21321, 21345, 21344,
- 21359, 21358, 21435, 21487, 21476, 21491, 21484, 21486, 21481, 21480,
- 21500, 21496, 21493, 21483, 21478, 21482, 21490, 21489, 21488, 21477,
- 21485, 21499, 22235, 22234, 22806, 22830, 22833, 22900, 22902, 23381,
- 23427, 23612, 24040, 24039, 24038, 24066, 24067, 24179, 24188, 24321,
- 24344, 24343, 24517, 25098, 25171, 25172, 25170, 25169, 26021, 26086,
- 26414, 26412, 26410, 26411, 26413, 27491, 27597, 27665, 27664, 27704,
- 27713, 27712, 27710, 29359, 29572, 29577, 29916, 29926, 29976, 29983,
- 29992, 29993, 30000, 30001, 30002, 30003, 30091, 30333, 30382, 30399,
- 30446, 30683, 30690, 30707, 31034, 31166, 31348, 31435, 19998, 19999,
- 20050, 20051, 20073, 20121, 20132, 20134, 20133, 20223, 20233, 20249,
- 20234, 20245, 20237, 20240, 20241, 20239, 20210, 20214, 20219, 20208,
- 20211, 20221, 20225, 20235, 20809, 20807, 20806, 20808, 20840, 20849,
- 20877, 20912, 21015, 21009, 21010, 21006, 21014, 21155, 21256, 21281,
- 21280, 21360, 21361, 21513, 21519, 21516, 21514, 21520, 21505, 21515,
- 21508, 21521, 21517, 21512, 21507, 21518, 21510, 21522, 22240, 22238,
- 22237, 22323, 22320, 22312, 22317, 22316, 22319, 22313, 22809, 22810,
- 22839, 22840, 22916, 22904, 22915, 22909, 22905, 22914, 22913, 23383,
- 23384, 23431, 23432, 23429, 23433, 23546, 23574, 23673, 24030, 24070,
- 24182, 24180, 24335, 24347, 24537, 24534, 25102, 25100, 25101, 25104,
- 25187, 25179, 25176, 25910, 26089, 26088, 26092, 26093, 26354, 26355,
- 26377, 26429, 26420, 26417, 26421, 27425, 27492, 27515, 27670, 27741,
- 27735, 27737, 27743, 27744, 27728, 27733, 27745, 27739, 27725, 27726,
- 28784, 29279, 29277, 30334, 31481, 31859, 31992, 32566, 32650, 32701,
- 32769, 32771, 32780, 32786, 32819, 32895, 32905, 32907, 32908, 33251,
- 33258, 33267, 33276, 33292, 33307, 33311, 33390, 33394, 33406, 34411,
- 34880, 34892, 34915, 35199, 38433, 20018, 20136, 20301, 20303, 20295,
- 20311, 20318, 20276, 20315, 20309, 20272, 20304, 20305, 20285, 20282,
- 20280, 20291, 20308, 20284, 20294, 20323, 20316, 20320, 20271, 20302,
- 20278, 20313, 20317, 20296, 20314, 20812, 20811, 20813, 20853, 20918,
- 20919, 21029, 21028, 21033, 21034, 21032, 21163, 21161, 21162, 21164,
- 21283, 21363, 21365, 21533, 21549, 21534, 21566, 21542, 21582, 21543,
- 21574, 21571, 21555, 21576, 21570, 21531, 21545, 21578, 21561, 21563,
- 21560, 21550, 21557, 21558, 21536, 21564, 21568, 21553, 21547, 21535,
- 21548, 22250, 22256, 22244, 22251, 22346, 22353, 22336, 22349, 22343,
- 22350, 22334, 22352, 22351, 22331, 22767, 22846, 22941, 22930, 22952,
- 22942, 22947, 22937, 22934, 22925, 22948, 22931, 22922, 22949, 23389,
- 23388, 23386, 23387, 23436, 23435, 23439, 23596, 23616, 23617, 23615,
- 23614, 23696, 23697, 23700, 23692, 24043, 24076, 24207, 24199, 24202,
- 24311, 24324, 24351, 24420, 24418, 24439, 24441, 24536, 24524, 24535,
- 24525, 24561, 24555, 24568, 24554, 25106, 25105, 25220, 25239, 25238,
- 25216, 25206, 25225, 25197, 25226, 25212, 25214, 25209, 25203, 25234,
- 25199, 25240, 25198, 25237, 25235, 25233, 25222, 25913, 25915, 25912,
- 26097, 26356, 26463, 26446, 26447, 26448, 26449, 26460, 26454, 26462,
- 26441, 26438, 26464, 26451, 26455, 27493, 27599, 27714, 27742, 27801,
- 27777, 27784, 27785, 27781, 27803, 27754, 27770, 27792, 27760, 27788,
- 27752, 27798, 27794, 27773, 27779, 27762, 27774, 27764, 27782, 27766,
- 27789, 27796, 27800, 27778, 28790, 28796, 28797, 28792, 29282, 29281,
- 29280, 29380, 29378, 29590, 29996, 29995, 30007, 30008, 30338, 30447,
- 30691, 31169, 31168, 31167, 31350, 31995, 32597, 32918, 32915, 32925,
- 32920, 32923, 32922, 32946, 33391, 33426, 33419, 33421, 35211, 35282,
- 35328, 35895, 35910, 35925, 35997, 36196, 36208, 36275, 36523, 36554,
- 36763, 36784, 36802, 36806, 36805, 36804, 24033, 37009, 37026, 37034,
- 37030, 37027, 37193, 37318, 37324, 38450, 38446, 38449, 38442, 38444,
- 20006, 20054, 20083, 20107, 20123, 20126, 20139, 20140, 20335, 20381,
- 20365, 20339, 20351, 20332, 20379, 20363, 20358, 20355, 20336, 20341,
- 20360, 20329, 20347, 20374, 20350, 20367, 20369, 20346, 20820, 20818,
- 20821, 20841, 20855, 20854, 20856, 20925, 20989, 21051, 21048, 21047,
- 21050, 21040, 21038, 21046, 21057, 21182, 21179, 21330, 21332, 21331,
- 21329, 21350, 21367, 21368, 21369, 21462, 21460, 21463, 21619, 21621,
- 21654, 21624, 21653, 21632, 21627, 21623, 21636, 21650, 21638, 21628,
- 21648, 21617, 21622, 21644, 21658, 21602, 21608, 21643, 21629, 21646,
- 22266, 22403, 22391, 22378, 22377, 22369, 22374, 22372, 22396, 22812,
- 22857, 22855, 22856, 22852, 22868, 22974, 22971, 22996, 22969, 22958,
- 22993, 22982, 22992, 22989, 22987, 22995, 22986, 22959, 22963, 22994,
- 22981, 23391, 23396, 23395, 23447, 23450, 23448, 23452, 23449, 23451,
- 23578, 23624, 23621, 23622, 23735, 23713, 23736, 23721, 23723, 23729,
- 23731, 24088, 24090, 24086, 24085, 24091, 24081, 24184, 24218, 24215,
- 24220, 24213, 24214, 24310, 24358, 24359, 24361, 24448, 24449, 24447,
- 24444, 24541, 24544, 24573, 24565, 24575, 24591, 24596, 24623, 24629,
- 24598, 24618, 24597, 24609, 24615, 24617, 24619, 24603, 25110, 25109,
- 25151, 25150, 25152, 25215, 25289, 25292, 25284, 25279, 25282, 25273,
- 25298, 25307, 25259, 25299, 25300, 25291, 25288, 25256, 25277, 25276,
- 25296, 25305, 25287, 25293, 25269, 25306, 25265, 25304, 25302, 25303,
- 25286, 25260, 25294, 25918, 26023, 26044, 26106, 26132, 26131, 26124,
- 26118, 26114, 26126, 26112, 26127, 26133, 26122, 26119, 26381, 26379,
- 26477, 26507, 26517, 26481, 26524, 26483, 26487, 26503, 26525, 26519,
- 26479, 26480, 26495, 26505, 26494, 26512, 26485, 26522, 26515, 26492,
- 26474, 26482, 27427, 27494, 27495, 27519, 27667, 27675, 27875, 27880,
- 27891, 27825, 27852, 27877, 27827, 27837, 27838, 27836, 27874, 27819,
- 27861, 27859, 27832, 27844, 27833, 27841, 27822, 27863, 27845, 27889,
- 27839, 27835, 27873, 27867, 27850, 27820, 27887, 27868, 27862, 27872,
- 28821, 28814, 28818, 28810, 28825, 29228, 29229, 29240, 29256, 29287,
- 29289, 29376, 29390, 29401, 29399, 29392, 29609, 29608, 29599, 29611,
- 29605, 30013, 30109, 30105, 30106, 30340, 30402, 30450, 30452, 30693,
- 30717, 31038, 31040, 31041, 31177, 31176, 31354, 31353, 31482, 31998,
- 32596, 32652, 32651, 32773, 32954, 32933, 32930, 32945, 32929, 32939,
- 32937, 32948, 32938, 32943, 33253, 33278, 33293, 33459, 33437, 33433,
- 33453, 33469, 33439, 33465, 33457, 33452, 33445, 33455, 33464, 33443,
- 33456, 33470, 33463, 34382, 34417, 21021, 34920, 36555, 36814, 36820,
- 36817, 37045, 37048, 37041, 37046, 37319, 37329, 38263, 38272, 38428,
- 38464, 38463, 38459, 38468, 38466, 38585, 38632, 38738, 38750, 20127,
- 20141, 20142, 20449, 20405, 20399, 20415, 20448, 20433, 20431, 20445,
- 20419, 20406, 20440, 20447, 20426, 20439, 20398, 20432, 20420, 20418,
- 20442, 20430, 20446, 20407, 20823, 20882, 20881, 20896, 21070, 21059,
- 21066, 21069, 21068, 21067, 21063, 21191, 21193, 21187, 21185, 21261,
- 21335, 21371, 21402, 21467, 21676, 21696, 21672, 21710, 21705, 21688,
- 21670, 21683, 21703, 21698, 21693, 21674, 21697, 21700, 21704, 21679,
- 21675, 21681, 21691, 21673, 21671, 21695, 22271, 22402, 22411, 22432,
- 22435, 22434, 22478, 22446, 22419, 22869, 22865, 22863, 22862, 22864,
- 23004, 23000, 23039, 23011, 23016, 23043, 23013, 23018, 23002, 23014,
- 23041, 23035, 23401, 23459, 23462, 23460, 23458, 23461, 23553, 23630,
- 23631, 23629, 23627, 23769, 23762, 24055, 24093, 24101, 24095, 24189,
- 24224, 24230, 24314, 24328, 24365, 24421, 24456, 24453, 24458, 24459,
- 24455, 24460, 24457, 24594, 24605, 24608, 24613, 24590, 24616, 24653,
- 24688, 24680, 24674, 24646, 24643, 24684, 24683, 24682, 24676, 25153,
- 25308, 25366, 25353, 25340, 25325, 25345, 25326, 25341, 25351, 25329,
- 25335, 25327, 25324, 25342, 25332, 25361, 25346, 25919, 25925, 26027,
- 26045, 26082, 26149, 26157, 26144, 26151, 26159, 26143, 26152, 26161,
- 26148, 26359, 26623, 26579, 26609, 26580, 26576, 26604, 26550, 26543,
- 26613, 26601, 26607, 26564, 26577, 26548, 26586, 26597, 26552, 26575,
- 26590, 26611, 26544, 26585, 26594, 26589, 26578, 27498, 27523, 27526,
- 27573, 27602, 27607, 27679, 27849, 27915, 27954, 27946, 27969, 27941,
- 27916, 27953, 27934, 27927, 27963, 27965, 27966, 27958, 27931, 27893,
- 27961, 27943, 27960, 27945, 27950, 27957, 27918, 27947, 28843, 28858,
- 28851, 28844, 28847, 28845, 28856, 28846, 28836, 29232, 29298, 29295,
- 29300, 29417, 29408, 29409, 29623, 29642, 29627, 29618, 29645, 29632,
- 29619, 29978, 29997, 30031, 30028, 30030, 30027, 30123, 30116, 30117,
- 30114, 30115, 30328, 30342, 30343, 30344, 30408, 30406, 30403, 30405,
- 30465, 30457, 30456, 30473, 30475, 30462, 30460, 30471, 30684, 30722,
- 30740, 30732, 30733, 31046, 31049, 31048, 31047, 31161, 31162, 31185,
- 31186, 31179, 31359, 31361, 31487, 31485, 31869, 32002, 32005, 32000,
- 32009, 32007, 32004, 32006, 32568, 32654, 32703, 32772, 32784, 32781,
- 32785, 32822, 32982, 32997, 32986, 32963, 32964, 32972, 32993, 32987,
- 32974, 32990, 32996, 32989, 33268, 33314, 33511, 33539, 33541, 33507,
- 33499, 33510, 33540, 33509, 33538, 33545, 33490, 33495, 33521, 33537,
- 33500, 33492, 33489, 33502, 33491, 33503, 33519, 33542, 34384, 34425,
- 34427, 34426, 34893, 34923, 35201, 35284, 35336, 35330, 35331, 35998,
- 36000, 36212, 36211, 36276, 36557, 36556, 36848, 36838, 36834, 36842,
- 36837, 36845, 36843, 36836, 36840, 37066, 37070, 37057, 37059, 37195,
- 37194, 37325, 38274, 38480, 38475, 38476, 38477, 38754, 38761, 38859,
- 38893, 38899, 38913, 39080, 39131, 39135, 39318, 39321, 20056, 20147,
- 20492, 20493, 20515, 20463, 20518, 20517, 20472, 20521, 20502, 20486,
- 20540, 20511, 20506, 20498, 20497, 20474, 20480, 20500, 20520, 20465,
- 20513, 20491, 20505, 20504, 20467, 20462, 20525, 20522, 20478, 20523,
- 20489, 20860, 20900, 20901, 20898, 20941, 20940, 20934, 20939, 21078,
- 21084, 21076, 21083, 21085, 21290, 21375, 21407, 21405, 21471, 21736,
- 21776, 21761, 21815, 21756, 21733, 21746, 21766, 21754, 21780, 21737,
- 21741, 21729, 21769, 21742, 21738, 21734, 21799, 21767, 21757, 21775,
- 22275, 22276, 22466, 22484, 22475, 22467, 22537, 22799, 22871, 22872,
- 22874, 23057, 23064, 23068, 23071, 23067, 23059, 23020, 23072, 23075,
- 23081, 23077, 23052, 23049, 23403, 23640, 23472, 23475, 23478, 23476,
- 23470, 23477, 23481, 23480, 23556, 23633, 23637, 23632, 23789, 23805,
- 23803, 23786, 23784, 23792, 23798, 23809, 23796, 24046, 24109, 24107,
- 24235, 24237, 24231, 24369, 24466, 24465, 24464, 24665, 24675, 24677,
- 24656, 24661, 24685, 24681, 24687, 24708, 24735, 24730, 24717, 24724,
- 24716, 24709, 24726, 25159, 25331, 25352, 25343, 25422, 25406, 25391,
- 25429, 25410, 25414, 25423, 25417, 25402, 25424, 25405, 25386, 25387,
- 25384, 25421, 25420, 25928, 25929, 26009, 26049, 26053, 26178, 26185,
- 26191, 26179, 26194, 26188, 26181, 26177, 26360, 26388, 26389, 26391,
- 26657, 26680, 26696, 26694, 26707, 26681, 26690, 26708, 26665, 26803,
- 26647, 26700, 26705, 26685, 26612, 26704, 26688, 26684, 26691, 26666,
- 26693, 26643, 26648, 26689, 27530, 27529, 27575, 27683, 27687, 27688,
- 27686, 27684, 27888, 28010, 28053, 28040, 28039, 28006, 28024, 28023,
- 27993, 28051, 28012, 28041, 28014, 27994, 28020, 28009, 28044, 28042,
- 28025, 28037, 28005, 28052, 28874, 28888, 28900, 28889, 28872, 28879,
- 29241, 29305, 29436, 29433, 29437, 29432, 29431, 29574, 29677, 29705,
- 29678, 29664, 29674, 29662, 30036, 30045, 30044, 30042, 30041, 30142,
- 30149, 30151, 30130, 30131, 30141, 30140, 30137, 30146, 30136, 30347,
- 30384, 30410, 30413, 30414, 30505, 30495, 30496, 30504, 30697, 30768,
- 30759, 30776, 30749, 30772, 30775, 30757, 30765, 30752, 30751, 30770,
- 31061, 31056, 31072, 31071, 31062, 31070, 31069, 31063, 31066, 31204,
- 31203, 31207, 31199, 31206, 31209, 31192, 31364, 31368, 31449, 31494,
- 31505, 31881, 32033, 32023, 32011, 32010, 32032, 32034, 32020, 32016,
- 32021, 32026, 32028, 32013, 32025, 32027, 32570, 32607, 32660, 32709,
- 32705, 32774, 32792, 32789, 32793, 32791, 32829, 32831, 33009, 33026,
- 33008, 33029, 33005, 33012, 33030, 33016, 33011, 33032, 33021, 33034,
- 33020, 33007, 33261, 33260, 33280, 33296, 33322, 33323, 33320, 33324,
- 33467, 33579, 33618, 33620, 33610, 33592, 33616, 33609, 33589, 33588,
- 33615, 33586, 33593, 33590, 33559, 33600, 33585, 33576, 33603, 34388,
- 34442, 34474, 34451, 34468, 34473, 34444, 34467, 34460, 34928, 34935,
- 34945, 34946, 34941, 34937, 35352, 35344, 35342, 35340, 35349, 35338,
- 35351, 35347, 35350, 35343, 35345, 35912, 35962, 35961, 36001, 36002,
- 36215, 36524, 36562, 36564, 36559, 36785, 36865, 36870, 36855, 36864,
- 36858, 36852, 36867, 36861, 36869, 36856, 37013, 37089, 37085, 37090,
- 37202, 37197, 37196, 37336, 37341, 37335, 37340, 37337, 38275, 38498,
- 38499, 38497, 38491, 38493, 38500, 38488, 38494, 38587, 39138, 39340,
- 39592, 39640, 39717, 39730, 39740, 20094, 20602, 20605, 20572, 20551,
- 20547, 20556, 20570, 20553, 20581, 20598, 20558, 20565, 20597, 20596,
- 20599, 20559, 20495, 20591, 20589, 20828, 20885, 20976, 21098, 21103,
- 21202, 21209, 21208, 21205, 21264, 21263, 21273, 21311, 21312, 21310,
- 21443, 26364, 21830, 21866, 21862, 21828, 21854, 21857, 21827, 21834,
- 21809, 21846, 21839, 21845, 21807, 21860, 21816, 21806, 21852, 21804,
- 21859, 21811, 21825, 21847, 22280, 22283, 22281, 22495, 22533, 22538,
- 22534, 22496, 22500, 22522, 22530, 22581, 22519, 22521, 22816, 22882,
- 23094, 23105, 23113, 23142, 23146, 23104, 23100, 23138, 23130, 23110,
- 23114, 23408, 23495, 23493, 23492, 23490, 23487, 23494, 23561, 23560,
- 23559, 23648, 23644, 23645, 23815, 23814, 23822, 23835, 23830, 23842,
- 23825, 23849, 23828, 23833, 23844, 23847, 23831, 24034, 24120, 24118,
- 24115, 24119, 24247, 24248, 24246, 24245, 24254, 24373, 24375, 24407,
- 24428, 24425, 24427, 24471, 24473, 24478, 24472, 24481, 24480, 24476,
- 24703, 24739, 24713, 24736, 24744, 24779, 24756, 24806, 24765, 24773,
- 24763, 24757, 24796, 24764, 24792, 24789, 24774, 24799, 24760, 24794,
- 24775, 25114, 25115, 25160, 25504, 25511, 25458, 25494, 25506, 25509,
- 25463, 25447, 25496, 25514, 25457, 25513, 25481, 25475, 25499, 25451,
- 25512, 25476, 25480, 25497, 25505, 25516, 25490, 25487, 25472, 25467,
- 25449, 25448, 25466, 25949, 25942, 25937, 25945, 25943, 21855, 25935,
- 25944, 25941, 25940, 26012, 26011, 26028, 26063, 26059, 26060, 26062,
- 26205, 26202, 26212, 26216, 26214, 26206, 26361, 21207, 26395, 26753,
- 26799, 26786, 26771, 26805, 26751, 26742, 26801, 26791, 26775, 26800,
- 26755, 26820, 26797, 26758, 26757, 26772, 26781, 26792, 26783, 26785,
- 26754, 27442, 27578, 27627, 27628, 27691, 28046, 28092, 28147, 28121,
- 28082, 28129, 28108, 28132, 28155, 28154, 28165, 28103, 28107, 28079,
- 28113, 28078, 28126, 28153, 28088, 28151, 28149, 28101, 28114, 28186,
- 28085, 28122, 28139, 28120, 28138, 28145, 28142, 28136, 28102, 28100,
- 28074, 28140, 28095, 28134, 28921, 28937, 28938, 28925, 28911, 29245,
- 29309, 29313, 29468, 29467, 29462, 29459, 29465, 29575, 29701, 29706,
- 29699, 29702, 29694, 29709, 29920, 29942, 29943, 29980, 29986, 30053,
- 30054, 30050, 30064, 30095, 30164, 30165, 30133, 30154, 30157, 30350,
- 30420, 30418, 30427, 30519, 30526, 30524, 30518, 30520, 30522, 30827,
- 30787, 30798, 31077, 31080, 31085, 31227, 31378, 31381, 31520, 31528,
- 31515, 31532, 31526, 31513, 31518, 31534, 31890, 31895, 31893, 32070,
- 32067, 32113, 32046, 32057, 32060, 32064, 32048, 32051, 32068, 32047,
- 32066, 32050, 32049, 32573, 32670, 32666, 32716, 32718, 32722, 32796,
- 32842, 32838, 33071, 33046, 33059, 33067, 33065, 33072, 33060, 33282,
- 33333, 33335, 33334, 33337, 33678, 33694, 33688, 33656, 33698, 33686,
- 33725, 33707, 33682, 33674, 33683, 33673, 33696, 33655, 33659, 33660,
- 33670, 33703, 34389, 24426, 34503, 34496, 34486, 34500, 34485, 34502,
- 34507, 34481, 34479, 34505, 34899, 34974, 34952, 34987, 34962, 34966,
- 34957, 34955, 35219, 35215, 35370, 35357, 35363, 35365, 35377, 35373,
- 35359, 35355, 35362, 35913, 35930, 36009, 36012, 36011, 36008, 36010,
- 36007, 36199, 36198, 36286, 36282, 36571, 36575, 36889, 36877, 36890,
- 36887, 36899, 36895, 36893, 36880, 36885, 36894, 36896, 36879, 36898,
- 36886, 36891, 36884, 37096, 37101, 37117, 37207, 37326, 37365, 37350,
- 37347, 37351, 37357, 37353, 38281, 38506, 38517, 38515, 38520, 38512,
- 38516, 38518, 38519, 38508, 38592, 38634, 38633, 31456, 31455, 38914,
- 38915, 39770, 40165, 40565, 40575, 40613, 40635, 20642, 20621, 20613,
- 20633, 20625, 20608, 20630, 20632, 20634, 26368, 20977, 21106, 21108,
- 21109, 21097, 21214, 21213, 21211, 21338, 21413, 21883, 21888, 21927,
- 21884, 21898, 21917, 21912, 21890, 21916, 21930, 21908, 21895, 21899,
- 21891, 21939, 21934, 21919, 21822, 21938, 21914, 21947, 21932, 21937,
- 21886, 21897, 21931, 21913, 22285, 22575, 22570, 22580, 22564, 22576,
- 22577, 22561, 22557, 22560, 22777, 22778, 22880, 23159, 23194, 23167,
- 23186, 23195, 23207, 23411, 23409, 23506, 23500, 23507, 23504, 23562,
- 23563, 23601, 23884, 23888, 23860, 23879, 24061, 24133, 24125, 24128,
- 24131, 24190, 24266, 24257, 24258, 24260, 24380, 24429, 24489, 24490,
- 24488, 24785, 24801, 24754, 24758, 24800, 24860, 24867, 24826, 24853,
- 24816, 24827, 24820, 24936, 24817, 24846, 24822, 24841, 24832, 24850,
- 25119, 25161, 25507, 25484, 25551, 25536, 25577, 25545, 25542, 25549,
- 25554, 25571, 25552, 25569, 25558, 25581, 25582, 25462, 25588, 25578,
- 25563, 25682, 25562, 25593, 25950, 25958, 25954, 25955, 26001, 26000,
- 26031, 26222, 26224, 26228, 26230, 26223, 26257, 26234, 26238, 26231,
- 26366, 26367, 26399, 26397, 26874, 26837, 26848, 26840, 26839, 26885,
- 26847, 26869, 26862, 26855, 26873, 26834, 26866, 26851, 26827, 26829,
- 26893, 26898, 26894, 26825, 26842, 26990, 26875, 27454, 27450, 27453,
- 27544, 27542, 27580, 27631, 27694, 27695, 27692, 28207, 28216, 28244,
- 28193, 28210, 28263, 28234, 28192, 28197, 28195, 28187, 28251, 28248,
- 28196, 28246, 28270, 28205, 28198, 28271, 28212, 28237, 28218, 28204,
- 28227, 28189, 28222, 28363, 28297, 28185, 28238, 28259, 28228, 28274,
- 28265, 28255, 28953, 28954, 28966, 28976, 28961, 28982, 29038, 28956,
- 29260, 29316, 29312, 29494, 29477, 29492, 29481, 29754, 29738, 29747,
- 29730, 29733, 29749, 29750, 29748, 29743, 29723, 29734, 29736, 29989,
- 29990, 30059, 30058, 30178, 30171, 30179, 30169, 30168, 30174, 30176,
- 30331, 30332, 30358, 30355, 30388, 30428, 30543, 30701, 30813, 30828,
- 30831, 31245, 31240, 31243, 31237, 31232, 31384, 31383, 31382, 31461,
- 31459, 31561, 31574, 31558, 31568, 31570, 31572, 31565, 31563, 31567,
- 31569, 31903, 31909, 32094, 32080, 32104, 32085, 32043, 32110, 32114,
- 32097, 32102, 32098, 32112, 32115, 21892, 32724, 32725, 32779, 32850,
- 32901, 33109, 33108, 33099, 33105, 33102, 33081, 33094, 33086, 33100,
- 33107, 33140, 33298, 33308, 33769, 33795, 33784, 33805, 33760, 33733,
- 33803, 33729, 33775, 33777, 33780, 33879, 33802, 33776, 33804, 33740,
- 33789, 33778, 33738, 33848, 33806, 33796, 33756, 33799, 33748, 33759,
- 34395, 34527, 34521, 34541, 34516, 34523, 34532, 34512, 34526, 34903,
- 35009, 35010, 34993, 35203, 35222, 35387, 35424, 35413, 35422, 35388,
- 35393, 35412, 35419, 35408, 35398, 35380, 35386, 35382, 35414, 35937,
- 35970, 36015, 36028, 36019, 36029, 36033, 36027, 36032, 36020, 36023,
- 36022, 36031, 36024, 36234, 36229, 36225, 36302, 36317, 36299, 36314,
- 36305, 36300, 36315, 36294, 36603, 36600, 36604, 36764, 36910, 36917,
- 36913, 36920, 36914, 36918, 37122, 37109, 37129, 37118, 37219, 37221,
- 37327, 37396, 37397, 37411, 37385, 37406, 37389, 37392, 37383, 37393,
- 38292, 38287, 38283, 38289, 38291, 38290, 38286, 38538, 38542, 38539,
- 38525, 38533, 38534, 38541, 38514, 38532, 38593, 38597, 38596, 38598,
- 38599, 38639, 38642, 38860, 38917, 38918, 38920, 39143, 39146, 39151,
- 39145, 39154, 39149, 39342, 39341, 40643, 40653, 40657, 20098, 20653,
- 20661, 20658, 20659, 20677, 20670, 20652, 20663, 20667, 20655, 20679,
- 21119, 21111, 21117, 21215, 21222, 21220, 21218, 21219, 21295, 21983,
- 21992, 21971, 21990, 21966, 21980, 21959, 21969, 21987, 21988, 21999,
- 21978, 21985, 21957, 21958, 21989, 21961, 22290, 22291, 22622, 22609,
- 22616, 22615, 22618, 22612, 22635, 22604, 22637, 22602, 22626, 22610,
- 22603, 22887, 23233, 23241, 23244, 23230, 23229, 23228, 23219, 23234,
- 23218, 23913, 23919, 24140, 24185, 24265, 24264, 24338, 24409, 24492,
- 24494, 24858, 24847, 24904, 24863, 24819, 24859, 24825, 24833, 24840,
- 24910, 24908, 24900, 24909, 24894, 24884, 24871, 24845, 24838, 24887,
- 25121, 25122, 25619, 25662, 25630, 25642, 25645, 25661, 25644, 25615,
- 25628, 25620, 25613, 25654, 25622, 25623, 25606, 25964, 26015, 26032,
- 26263, 26249, 26247, 26248, 26262, 26244, 26264, 26253, 26371, 27028,
- 26989, 26970, 26999, 26976, 26964, 26997, 26928, 27010, 26954, 26984,
- 26987, 26974, 26963, 27001, 27014, 26973, 26979, 26971, 27463, 27506,
- 27584, 27583, 27603, 27645, 28322, 28335, 28371, 28342, 28354, 28304,
- 28317, 28359, 28357, 28325, 28312, 28348, 28346, 28331, 28369, 28310,
- 28316, 28356, 28372, 28330, 28327, 28340, 29006, 29017, 29033, 29028,
- 29001, 29031, 29020, 29036, 29030, 29004, 29029, 29022, 28998, 29032,
- 29014, 29242, 29266, 29495, 29509, 29503, 29502, 29807, 29786, 29781,
- 29791, 29790, 29761, 29759, 29785, 29787, 29788, 30070, 30072, 30208,
- 30192, 30209, 30194, 30193, 30202, 30207, 30196, 30195, 30430, 30431,
- 30555, 30571, 30566, 30558, 30563, 30585, 30570, 30572, 30556, 30565,
- 30568, 30562, 30702, 30862, 30896, 30871, 30872, 30860, 30857, 30844,
- 30865, 30867, 30847, 31098, 31103, 31105, 33836, 31165, 31260, 31258,
- 31264, 31252, 31263, 31262, 31391, 31392, 31607, 31680, 31584, 31598,
- 31591, 31921, 31923, 31925, 32147, 32121, 32145, 32129, 32143, 32091,
- 32622, 32617, 32618, 32626, 32681, 32680, 32676, 32854, 32856, 32902,
- 32900, 33137, 33136, 33144, 33125, 33134, 33139, 33131, 33145, 33146,
- 33126, 33285, 33351, 33922, 33911, 33853, 33841, 33909, 33894, 33899,
- 33865, 33900, 33883, 33852, 33845, 33889, 33891, 33897, 33901, 33862,
- 34398, 34396, 34399, 34553, 34579, 34568, 34567, 34560, 34558, 34555,
- 34562, 34563, 34566, 34570, 34905, 35039, 35028, 35033, 35036, 35032,
- 35037, 35041, 35018, 35029, 35026, 35228, 35299, 35435, 35442, 35443,
- 35430, 35433, 35440, 35463, 35452, 35427, 35488, 35441, 35461, 35437,
- 35426, 35438, 35436, 35449, 35451, 35390, 35432, 35938, 35978, 35977,
- 36042, 36039, 36040, 36036, 36018, 36035, 36034, 36037, 36321, 36319,
- 36328, 36335, 36339, 36346, 36330, 36324, 36326, 36530, 36611, 36617,
- 36606, 36618, 36767, 36786, 36939, 36938, 36947, 36930, 36948, 36924,
- 36949, 36944, 36935, 36943, 36942, 36941, 36945, 36926, 36929, 37138,
- 37143, 37228, 37226, 37225, 37321, 37431, 37463, 37432, 37437, 37440,
- 37438, 37467, 37451, 37476, 37457, 37428, 37449, 37453, 37445, 37433,
- 37439, 37466, 38296, 38552, 38548, 38549, 38605, 38603, 38601, 38602,
- 38647, 38651, 38649, 38646, 38742, 38772, 38774, 38928, 38929, 38931,
- 38922, 38930, 38924, 39164, 39156, 39165, 39166, 39347, 39345, 39348,
- 39649, 40169, 40578, 40718, 40723, 40736, 20711, 20718, 20709, 20694,
- 20717, 20698, 20693, 20687, 20689, 20721, 20686, 20713, 20834, 20979,
- 21123, 21122, 21297, 21421, 22014, 22016, 22043, 22039, 22013, 22036,
- 22022, 22025, 22029, 22030, 22007, 22038, 22047, 22024, 22032, 22006,
- 22296, 22294, 22645, 22654, 22659, 22675, 22666, 22649, 22661, 22653,
- 22781, 22821, 22818, 22820, 22890, 22889, 23265, 23270, 23273, 23255,
- 23254, 23256, 23267, 23413, 23518, 23527, 23521, 23525, 23526, 23528,
- 23522, 23524, 23519, 23565, 23650, 23940, 23943, 24155, 24163, 24149,
- 24151, 24148, 24275, 24278, 24330, 24390, 24432, 24505, 24903, 24895,
- 24907, 24951, 24930, 24931, 24927, 24922, 24920, 24949, 25130, 25735,
- 25688, 25684, 25764, 25720, 25695, 25722, 25681, 25703, 25652, 25709,
- 25723, 25970, 26017, 26071, 26070, 26274, 26280, 26269, 27036, 27048,
- 27029, 27073, 27054, 27091, 27083, 27035, 27063, 27067, 27051, 27060,
- 27088, 27085, 27053, 27084, 27046, 27075, 27043, 27465, 27468, 27699,
- 28467, 28436, 28414, 28435, 28404, 28457, 28478, 28448, 28460, 28431,
- 28418, 28450, 28415, 28399, 28422, 28465, 28472, 28466, 28451, 28437,
- 28459, 28463, 28552, 28458, 28396, 28417, 28402, 28364, 28407, 29076,
- 29081, 29053, 29066, 29060, 29074, 29246, 29330, 29334, 29508, 29520,
- 29796, 29795, 29802, 29808, 29805, 29956, 30097, 30247, 30221, 30219,
- 30217, 30227, 30433, 30435, 30596, 30589, 30591, 30561, 30913, 30879,
- 30887, 30899, 30889, 30883, 31118, 31119, 31117, 31278, 31281, 31402,
- 31401, 31469, 31471, 31649, 31637, 31627, 31605, 31639, 31645, 31636,
- 31631, 31672, 31623, 31620, 31929, 31933, 31934, 32187, 32176, 32156,
- 32189, 32190, 32160, 32202, 32180, 32178, 32177, 32186, 32162, 32191,
- 32181, 32184, 32173, 32210, 32199, 32172, 32624, 32736, 32737, 32735,
- 32862, 32858, 32903, 33104, 33152, 33167, 33160, 33162, 33151, 33154,
- 33255, 33274, 33287, 33300, 33310, 33355, 33993, 33983, 33990, 33988,
- 33945, 33950, 33970, 33948, 33995, 33976, 33984, 34003, 33936, 33980,
- 34001, 33994, 34623, 34588, 34619, 34594, 34597, 34612, 34584, 34645,
- 34615, 34601, 35059, 35074, 35060, 35065, 35064, 35069, 35048, 35098,
- 35055, 35494, 35468, 35486, 35491, 35469, 35489, 35475, 35492, 35498,
- 35493, 35496, 35480, 35473, 35482, 35495, 35946, 35981, 35980, 36051,
- 36049, 36050, 36203, 36249, 36245, 36348, 36628, 36626, 36629, 36627,
- 36771, 36960, 36952, 36956, 36963, 36953, 36958, 36962, 36957, 36955,
- 37145, 37144, 37150, 37237, 37240, 37239, 37236, 37496, 37504, 37509,
- 37528, 37526, 37499, 37523, 37532, 37544, 37500, 37521, 38305, 38312,
- 38313, 38307, 38309, 38308, 38553, 38556, 38555, 38604, 38610, 38656,
- 38780, 38789, 38902, 38935, 38936, 39087, 39089, 39171, 39173, 39180,
- 39177, 39361, 39599, 39600, 39654, 39745, 39746, 40180, 40182, 40179,
- 40636, 40763, 40778, 20740, 20736, 20731, 20725, 20729, 20738, 20744,
- 20745, 20741, 20956, 21127, 21128, 21129, 21133, 21130, 21232, 21426,
- 22062, 22075, 22073, 22066, 22079, 22068, 22057, 22099, 22094, 22103,
- 22132, 22070, 22063, 22064, 22656, 22687, 22686, 22707, 22684, 22702,
- 22697, 22694, 22893, 23305, 23291, 23307, 23285, 23308, 23304, 23534,
- 23532, 23529, 23531, 23652, 23653, 23965, 23956, 24162, 24159, 24161,
- 24290, 24282, 24287, 24285, 24291, 24288, 24392, 24433, 24503, 24501,
- 24950, 24935, 24942, 24925, 24917, 24962, 24956, 24944, 24939, 24958,
- 24999, 24976, 25003, 24974, 25004, 24986, 24996, 24980, 25006, 25134,
- 25705, 25711, 25721, 25758, 25778, 25736, 25744, 25776, 25765, 25747,
- 25749, 25769, 25746, 25774, 25773, 25771, 25754, 25772, 25753, 25762,
- 25779, 25973, 25975, 25976, 26286, 26283, 26292, 26289, 27171, 27167,
- 27112, 27137, 27166, 27161, 27133, 27169, 27155, 27146, 27123, 27138,
- 27141, 27117, 27153, 27472, 27470, 27556, 27589, 27590, 28479, 28540,
- 28548, 28497, 28518, 28500, 28550, 28525, 28507, 28536, 28526, 28558,
- 28538, 28528, 28516, 28567, 28504, 28373, 28527, 28512, 28511, 29087,
- 29100, 29105, 29096, 29270, 29339, 29518, 29527, 29801, 29835, 29827,
- 29822, 29824, 30079, 30240, 30249, 30239, 30244, 30246, 30241, 30242,
- 30362, 30394, 30436, 30606, 30599, 30604, 30609, 30603, 30923, 30917,
- 30906, 30922, 30910, 30933, 30908, 30928, 31295, 31292, 31296, 31293,
- 31287, 31291, 31407, 31406, 31661, 31665, 31684, 31668, 31686, 31687,
- 31681, 31648, 31692, 31946, 32224, 32244, 32239, 32251, 32216, 32236,
- 32221, 32232, 32227, 32218, 32222, 32233, 32158, 32217, 32242, 32249,
- 32629, 32631, 32687, 32745, 32806, 33179, 33180, 33181, 33184, 33178,
- 33176, 34071, 34109, 34074, 34030, 34092, 34093, 34067, 34065, 34083,
- 34081, 34068, 34028, 34085, 34047, 34054, 34690, 34676, 34678, 34656,
- 34662, 34680, 34664, 34649, 34647, 34636, 34643, 34907, 34909, 35088,
- 35079, 35090, 35091, 35093, 35082, 35516, 35538, 35527, 35524, 35477,
- 35531, 35576, 35506, 35529, 35522, 35519, 35504, 35542, 35533, 35510,
- 35513, 35547, 35916, 35918, 35948, 36064, 36062, 36070, 36068, 36076,
- 36077, 36066, 36067, 36060, 36074, 36065, 36205, 36255, 36259, 36395,
- 36368, 36381, 36386, 36367, 36393, 36383, 36385, 36382, 36538, 36637,
- 36635, 36639, 36649, 36646, 36650, 36636, 36638, 36645, 36969, 36974,
- 36968, 36973, 36983, 37168, 37165, 37159, 37169, 37255, 37257, 37259,
- 37251, 37573, 37563, 37559, 37610, 37548, 37604, 37569, 37555, 37564,
- 37586, 37575, 37616, 37554, 38317, 38321, 38660, 38662, 38663, 38665,
- 38752, 38797, 38795, 38799, 38945, 38955, 38940, 39091, 39178, 39187,
- 39186, 39192, 39389, 39376, 39391, 39387, 39377, 39381, 39378, 39385,
- 39607, 39662, 39663, 39719, 39749, 39748, 39799, 39791, 40198, 40201,
- 40195, 40617, 40638, 40654, 22696, 40786, 20754, 20760, 20756, 20752,
- 20757, 20864, 20906, 20957, 21137, 21139, 21235, 22105, 22123, 22137,
- 22121, 22116, 22136, 22122, 22120, 22117, 22129, 22127, 22124, 22114,
- 22134, 22721, 22718, 22727, 22725, 22894, 23325, 23348, 23416, 23536,
- 23566, 24394, 25010, 24977, 25001, 24970, 25037, 25014, 25022, 25034,
- 25032, 25136, 25797, 25793, 25803, 25787, 25788, 25818, 25796, 25799,
- 25794, 25805, 25791, 25810, 25812, 25790, 25972, 26310, 26313, 26297,
- 26308, 26311, 26296, 27197, 27192, 27194, 27225, 27243, 27224, 27193,
- 27204, 27234, 27233, 27211, 27207, 27189, 27231, 27208, 27481, 27511,
- 27653, 28610, 28593, 28577, 28611, 28580, 28609, 28583, 28595, 28608,
- 28601, 28598, 28582, 28576, 28596, 29118, 29129, 29136, 29138, 29128,
- 29141, 29113, 29134, 29145, 29148, 29123, 29124, 29544, 29852, 29859,
- 29848, 29855, 29854, 29922, 29964, 29965, 30260, 30264, 30266, 30439,
- 30437, 30624, 30622, 30623, 30629, 30952, 30938, 30956, 30951, 31142,
- 31309, 31310, 31302, 31308, 31307, 31418, 31705, 31761, 31689, 31716,
- 31707, 31713, 31721, 31718, 31957, 31958, 32266, 32273, 32264, 32283,
- 32291, 32286, 32285, 32265, 32272, 32633, 32690, 32752, 32753, 32750,
- 32808, 33203, 33193, 33192, 33275, 33288, 33368, 33369, 34122, 34137,
- 34120, 34152, 34153, 34115, 34121, 34157, 34154, 34142, 34691, 34719,
- 34718, 34722, 34701, 34913, 35114, 35122, 35109, 35115, 35105, 35242,
- 35238, 35558, 35578, 35563, 35569, 35584, 35548, 35559, 35566, 35582,
- 35585, 35586, 35575, 35565, 35571, 35574, 35580, 35947, 35949, 35987,
- 36084, 36420, 36401, 36404, 36418, 36409, 36405, 36667, 36655, 36664,
- 36659, 36776, 36774, 36981, 36980, 36984, 36978, 36988, 36986, 37172,
- 37266, 37664, 37686, 37624, 37683, 37679, 37666, 37628, 37675, 37636,
- 37658, 37648, 37670, 37665, 37653, 37678, 37657, 38331, 38567, 38568,
- 38570, 38613, 38670, 38673, 38678, 38669, 38675, 38671, 38747, 38748,
- 38758, 38808, 38960, 38968, 38971, 38967, 38957, 38969, 38948, 39184,
- 39208, 39198, 39195, 39201, 39194, 39405, 39394, 39409, 39608, 39612,
- 39675, 39661, 39720, 39825, 40213, 40227, 40230, 40232, 40210, 40219,
- 40664, 40660, 40845, 40860, 20778, 20767, 20769, 20786, 21237, 22158,
- 22144, 22160, 22149, 22151, 22159, 22741, 22739, 22737, 22734, 23344,
- 23338, 23332, 23418, 23607, 23656, 23996, 23994, 23997, 23992, 24171,
- 24396, 24509, 25033, 25026, 25031, 25062, 25035, 25138, 25140, 25806,
- 25802, 25816, 25824, 25840, 25830, 25836, 25841, 25826, 25837, 25986,
- 25987, 26329, 26326, 27264, 27284, 27268, 27298, 27292, 27355, 27299,
- 27262, 27287, 27280, 27296, 27484, 27566, 27610, 27656, 28632, 28657,
- 28639, 28640, 28635, 28644, 28651, 28655, 28544, 28652, 28641, 28649,
- 28629, 28654, 28656, 29159, 29151, 29166, 29158, 29157, 29165, 29164,
- 29172, 29152, 29237, 29254, 29552, 29554, 29865, 29872, 29862, 29864,
- 30278, 30274, 30284, 30442, 30643, 30634, 30640, 30636, 30631, 30637,
- 30703, 30967, 30970, 30964, 30959, 30977, 31143, 31146, 31319, 31423,
- 31751, 31757, 31742, 31735, 31756, 31712, 31968, 31964, 31966, 31970,
- 31967, 31961, 31965, 32302, 32318, 32326, 32311, 32306, 32323, 32299,
- 32317, 32305, 32325, 32321, 32308, 32313, 32328, 32309, 32319, 32303,
- 32580, 32755, 32764, 32881, 32882, 32880, 32879, 32883, 33222, 33219,
- 33210, 33218, 33216, 33215, 33213, 33225, 33214, 33256, 33289, 33393,
- 34218, 34180, 34174, 34204, 34193, 34196, 34223, 34203, 34183, 34216,
- 34186, 34407, 34752, 34769, 34739, 34770, 34758, 34731, 34747, 34746,
- 34760, 34763, 35131, 35126, 35140, 35128, 35133, 35244, 35598, 35607,
- 35609, 35611, 35594, 35616, 35613, 35588, 35600, 35905, 35903, 35955,
- 36090, 36093, 36092, 36088, 36091, 36264, 36425, 36427, 36424, 36426,
- 36676, 36670, 36674, 36677, 36671, 36991, 36989, 36996, 36993, 36994,
- 36992, 37177, 37283, 37278, 37276, 37709, 37762, 37672, 37749, 37706,
- 37733, 37707, 37656, 37758, 37740, 37723, 37744, 37722, 37716, 38346,
- 38347, 38348, 38344, 38342, 38577, 38584, 38614, 38684, 38686, 38816,
- 38867, 38982, 39094, 39221, 39425, 39423, 39854, 39851, 39850, 39853,
- 40251, 40255, 40587, 40655, 40670, 40668, 40669, 40667, 40766, 40779,
- 21474, 22165, 22190, 22745, 22744, 23352, 24413, 25059, 25139, 25844,
- 25842, 25854, 25862, 25850, 25851, 25847, 26039, 26332, 26406, 27315,
- 27308, 27331, 27323, 27320, 27330, 27310, 27311, 27487, 27512, 27567,
- 28681, 28683, 28670, 28678, 28666, 28689, 28687, 29179, 29180, 29182,
- 29176, 29559, 29557, 29863, 29887, 29973, 30294, 30296, 30290, 30653,
- 30655, 30651, 30652, 30990, 31150, 31329, 31330, 31328, 31428, 31429,
- 31787, 31783, 31786, 31774, 31779, 31777, 31975, 32340, 32341, 32350,
- 32346, 32353, 32338, 32345, 32584, 32761, 32763, 32887, 32886, 33229,
- 33231, 33290, 34255, 34217, 34253, 34256, 34249, 34224, 34234, 34233,
- 34214, 34799, 34796, 34802, 34784, 35206, 35250, 35316, 35624, 35641,
- 35628, 35627, 35920, 36101, 36441, 36451, 36454, 36452, 36447, 36437,
- 36544, 36681, 36685, 36999, 36995, 37000, 37291, 37292, 37328, 37780,
- 37770, 37782, 37794, 37811, 37806, 37804, 37808, 37784, 37786, 37783,
- 38356, 38358, 38352, 38357, 38626, 38620, 38617, 38619, 38622, 38692,
- 38819, 38822, 38829, 38905, 38989, 38991, 38988, 38990, 38995, 39098,
- 39230, 39231, 39229, 39214, 39333, 39438, 39617, 39683, 39686, 39759,
- 39758, 39757, 39882, 39881, 39933, 39880, 39872, 40273, 40285, 40288,
- 40672, 40725, 40748, 20787, 22181, 22750, 22751, 22754, 23541, 40848,
- 24300, 25074, 25079, 25078, 25077, 25856, 25871, 26336, 26333, 27365,
- 27357, 27354, 27347, 28699, 28703, 28712, 28698, 28701, 28693, 28696,
- 29190, 29197, 29272, 29346, 29560, 29562, 29885, 29898, 29923, 30087,
- 30086, 30303, 30305, 30663, 31001, 31153, 31339, 31337, 31806, 31807,
- 31800, 31805, 31799, 31808, 32363, 32365, 32377, 32361, 32362, 32645,
- 32371, 32694, 32697, 32696, 33240, 34281, 34269, 34282, 34261, 34276,
- 34277, 34295, 34811, 34821, 34829, 34809, 34814, 35168, 35167, 35158,
- 35166, 35649, 35676, 35672, 35657, 35674, 35662, 35663, 35654, 35673,
- 36104, 36106, 36476, 36466, 36487, 36470, 36460, 36474, 36468, 36692,
- 36686, 36781, 37002, 37003, 37297, 37294, 37857, 37841, 37855, 37827,
- 37832, 37852, 37853, 37846, 37858, 37837, 37848, 37860, 37847, 37864,
- 38364, 38580, 38627, 38698, 38695, 38753, 38876, 38907, 39006, 39000,
- 39003, 39100, 39237, 39241, 39446, 39449, 39693, 39912, 39911, 39894,
- 39899, 40329, 40289, 40306, 40298, 40300, 40594, 40599, 40595, 40628,
- 21240, 22184, 22199, 22198, 22196, 22204, 22756, 23360, 23363, 23421,
- 23542, 24009, 25080, 25082, 25880, 25876, 25881, 26342, 26407, 27372,
- 28734, 28720, 28722, 29200, 29563, 29903, 30306, 30309, 31014, 31018,
- 31020, 31019, 31431, 31478, 31820, 31811, 31821, 31983, 31984, 36782,
- 32381, 32380, 32386, 32588, 32768, 33242, 33382, 34299, 34297, 34321,
- 34298, 34310, 34315, 34311, 34314, 34836, 34837, 35172, 35258, 35320,
- 35696, 35692, 35686, 35695, 35679, 35691, 36111, 36109, 36489, 36481,
- 36485, 36482, 37300, 37323, 37912, 37891, 37885, 38369, 38704, 39108,
- 39250, 39249, 39336, 39467, 39472, 39479, 39477, 39955, 39949, 40569,
- 40629, 40680, 40751, 40799, 40803, 40801, 20791, 20792, 22209, 22208,
- 22210, 22804, 23660, 24013, 25084, 25086, 25885, 25884, 26005, 26345,
- 27387, 27396, 27386, 27570, 28748, 29211, 29351, 29910, 29908, 30313,
- 30675, 31824, 32399, 32396, 32700, 34327, 34349, 34330, 34851, 34850,
- 34849, 34847, 35178, 35180, 35261, 35700, 35703, 35709, 36115, 36490,
- 36493, 36491, 36703, 36783, 37306, 37934, 37939, 37941, 37946, 37944,
- 37938, 37931, 38370, 38712, 38713, 38706, 38911, 39015, 39013, 39255,
- 39493, 39491, 39488, 39486, 39631, 39764, 39761, 39981, 39973, 40367,
- 40372, 40386, 40376, 40605, 40687, 40729, 40796, 40806, 40807, 20796,
- 20795, 22216, 22218, 22217, 23423, 24020, 24018, 24398, 25087, 25892,
- 27402, 27489, 28753, 28760, 29568, 29924, 30090, 30318, 30316, 31155,
- 31840, 31839, 32894, 32893, 33247, 35186, 35183, 35324, 35712, 36118,
- 36119, 36497, 36499, 36705, 37192, 37956, 37969, 37970, 38717, 38718,
- 38851, 38849, 39019, 39253, 39509, 39501, 39634, 39706, 40009, 39985,
- 39998, 39995, 40403, 40407, 40756, 40812, 40810, 40852, 22220, 24022,
- 25088, 25891, 25899, 25898, 26348, 27408, 29914, 31434, 31844, 31843,
- 31845, 32403, 32406, 32404, 33250, 34360, 34367, 34865, 35722, 37008,
- 37007, 37987, 37984, 37988, 38760, 39023, 39260, 39514, 39515, 39511,
- 39635, 39636, 39633, 40020, 40023, 40022, 40421, 40607, 40692, 22225,
- 22761, 25900, 28766, 30321, 30322, 30679, 32592, 32648, 34870, 34873,
- 34914, 35731, 35730, 35734, 33399, 36123, 37312, 37994, 38722, 38728,
- 38724, 38854, 39024, 39519, 39714, 39768, 40031, 40441, 40442, 40572,
- 40573, 40711, 40823, 40818, 24307, 27414, 28771, 31852, 31854, 34875,
- 35264, 36513, 37313, 38002, 38000, 39025, 39262, 39638, 39715, 40652,
- 28772, 30682, 35738, 38007, 38857, 39522, 39525, 32412, 35740, 36522,
- 37317, 38013, 38014, 38012, 40055, 40056, 40695, 35924, 38015, 40474,
- 29224, 39530, 39729, 40475, 40478, 31858, 9312, 9313, 9314, 9315,
- 9316, 9317, 9318, 9319, 9320, 9321, 9332, 9333, 9334, 9335,
- 9336, 9337, 9338, 9339, 9340, 9341, 8560, 8561, 8562, 8563,
- 8564, 8565, 8566, 8567, 8568, 8569, 20022, 20031, 20101, 20128,
- 20866, 20886, 20907, 21241, 21304, 21353, 21430, 22794, 23424, 24027,
- 12083, 24191, 24308, 24400, 24417, 25908, 26080, 30098, 30326, 36789,
- 38582, 168, 710, 12541, 12542, 12445, 12446, 12291, 20189, 12293,
- 12294, 12295, 12540, 65339, 65341, 10045, 12353, 12354, 12355, 12356,
- 12357, 12358, 12359, 12360, 12361, 12362, 12363, 12364, 12365, 12366,
- 12367, 12368, 12369, 12370, 12371, 12372, 12373, 12374, 12375, 12376,
- 12377, 12378, 12379, 12380, 12381, 12382, 12383, 12384, 12385, 12386,
- 12387, 12388, 12389, 12390, 12391, 12392, 12393, 12394, 12395, 12396,
- 12397, 12398, 12399, 12400, 12401, 12402, 12403, 12404, 12405, 12406,
- 12407, 12408, 12409, 12410, 12411, 12412, 12413, 12414, 12415, 12416,
- 12417, 12418, 12419, 12420, 12421, 12422, 12423, 12424, 12425, 12426,
- 12427, 12428, 12429, 12430, 12431, 12432, 12433, 12434, 12435, 12449,
- 12450, 12451, 12452, 12453, 12454, 12455, 12456, 12457, 12458, 12459,
- 12460, 12461, 12462, 12463, 12464, 12465, 12466, 12467, 12468, 12469,
- 12470, 12471, 12472, 12473, 12474, 12475, 12476, 12477, 12478, 12479,
- 12480, 12481, 12482, 12483, 12484, 12485, 12486, 12487, 12488, 12489,
- 12490, 12491, 12492, 12493, 12494, 12495, 12496, 12497, 12498, 12499,
- 12500, 12501, 12502, 12503, 12504, 12505, 12506, 12507, 12508, 12509,
- 12510, 12511, 12512, 12513, 12514, 12515, 12516, 12517, 12518, 12519,
- 12520, 12521, 12522, 12523, 12524, 12525, 12526, 12527, 12528, 12529,
- 12530, 12531, 12532, 12533, 12534, 1040, 1041, 1042, 1043, 1044,
- 1045, 1025, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
- 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063,
- 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073,
- 1074, 1075, 1076, 1077, 1105, 1078, 1079, 1080, 1081, 1082,
- 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092,
- 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102,
- 1103, 8679, 8632, 8633, 12751, 131276, 20058, 131210, 20994, 17553,
- 40880, 20872, 40881, 161287, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 65506, 65508, 65287, 65282, 12849, 8470,
- 8481, 12443, 12444, 11904, 11908, 11910, 11911, 11912, 11914, 11916,
- 11917, 11925, 11932, 11933, 11941, 11943, 11946, 11948, 11950, 11958,
- 11964, 11966, 11974, 11978, 11980, 11981, 11983, 11990, 11991, 11998,
- 12003, 0x0000, 0x0000, 0x0000, 643, 592, 603, 596, 629, 339,
- 248, 331, 650, 618, 20034, 20060, 20981, 21274, 21378, 19975,
- 19980, 20039, 20109, 22231, 64012, 23662, 24435, 19983, 20871, 19982,
- 20014, 20115, 20162, 20169, 20168, 20888, 21244, 21356, 21433, 22304,
- 22787, 22828, 23568, 24063, 26081, 27571, 27596, 27668, 29247, 20017,
- 20028, 20200, 20188, 20201, 20193, 20189, 20186, 21004, 21276, 21324,
- 22306, 22307, 22807, 22831, 23425, 23428, 23570, 23611, 23668, 23667,
- 24068, 24192, 24194, 24521, 25097, 25168, 27669, 27702, 27715, 27711,
- 27707, 29358, 29360, 29578, 31160, 32906, 38430, 20238, 20248, 20268,
- 20213, 20244, 20209, 20224, 20215, 20232, 20253, 20226, 20229, 20258,
- 20243, 20228, 20212, 20242, 20913, 21011, 21001, 21008, 21158, 21282,
- 21279, 21325, 21386, 21511, 22241, 22239, 22318, 22314, 22324, 22844,
- 22912, 22908, 22917, 22907, 22910, 22903, 22911, 23382, 23573, 23589,
- 23676, 23674, 23675, 23678, 24031, 24181, 24196, 24322, 24346, 24436,
- 24533, 24532, 24527, 25180, 25182, 25188, 25185, 25190, 25186, 25177,
- 25184, 25178, 25189, 26095, 26094, 26430, 26425, 26424, 26427, 26426,
- 26431, 26428, 26419, 27672, 27718, 27730, 27740, 27727, 27722, 27732,
- 27723, 27724, 28785, 29278, 29364, 29365, 29582, 29994, 30335, 31349,
- 32593, 33400, 33404, 33408, 33405, 33407, 34381, 35198, 37017, 37015,
- 37016, 37019, 37012, 38434, 38436, 38432, 38435, 20310, 20283, 20322,
- 20297, 20307, 20324, 20286, 20327, 20306, 20319, 20289, 20312, 20269,
- 20275, 20287, 20321, 20879, 20921, 21020, 21022, 21025, 21165, 21166,
- 21257, 21347, 21362, 21390, 21391, 21552, 21559, 21546, 21588, 21573,
- 21529, 21532, 21541, 21528, 21565, 21583, 21569, 21544, 21540, 21575,
- 22254, 22247, 22245, 22337, 22341, 22348, 22345, 22347, 22354, 22790,
- 22848, 22950, 22936, 22944, 22935, 22926, 22946, 22928, 22927, 22951,
- 22945, 23438, 23442, 23592, 23594, 23693, 23695, 23688, 23691, 23689,
- 23698, 23690, 23686, 23699, 23701, 24032, 24074, 24078, 24203, 24201,
- 24204, 24200, 24205, 24325, 24349, 24440, 24438, 24530, 24529, 24528,
- 24557, 24552, 24558, 24563, 24545, 24548, 24547, 24570, 24559, 24567,
- 24571, 24576, 24564, 25146, 25219, 25228, 25230, 25231, 25236, 25223,
- 25201, 25211, 25210, 25200, 25217, 25224, 25207, 25213, 25202, 25204,
- 25911, 26096, 26100, 26099, 26098, 26101, 26437, 26439, 26457, 26453,
- 26444, 26440, 26461, 26445, 26458, 26443, 27600, 27673, 27674, 27768,
- 27751, 27755, 27780, 27787, 27791, 27761, 27759, 27753, 27802, 27757,
- 27783, 27797, 27804, 27750, 27763, 27749, 27771, 27790, 28788, 28794,
- 29283, 29375, 29373, 29379, 29382, 29377, 29370, 29381, 29589, 29591,
- 29587, 29588, 29586, 30010, 30009, 30100, 30101, 30337, 31037, 32820,
- 32917, 32921, 32912, 32914, 32924, 33424, 33423, 33413, 33422, 33425,
- 33427, 33418, 33411, 33412, 35960, 36809, 36799, 37023, 37025, 37029,
- 37022, 37031, 37024, 38448, 38440, 38447, 38445, 20019, 20376, 20348,
- 20357, 20349, 20352, 20359, 20342, 20340, 20361, 20356, 20343, 20300,
- 20375, 20330, 20378, 20345, 20353, 20344, 20368, 20380, 20372, 20382,
- 20370, 20354, 20373, 20331, 20334, 20894, 20924, 20926, 21045, 21042,
- 21043, 21062, 21041, 21180, 21258, 21259, 21308, 21394, 21396, 21639,
- 21631, 21633, 21649, 21634, 21640, 21611, 21626, 21630, 21605, 21612,
- 21620, 21606, 21645, 21615, 21601, 21600, 21656, 21603, 21607, 21604,
- 22263, 22265, 22383, 22386, 22381, 22379, 22385, 22384, 22390, 22400,
- 22389, 22395, 22387, 22388, 22370, 22376, 22397, 22796, 22853, 22965,
- 22970, 22991, 22990, 22962, 22988, 22977, 22966, 22972, 22979, 22998,
- 22961, 22973, 22976, 22984, 22964, 22983, 23394, 23397, 23443, 23445,
- 23620, 23623, 23726, 23716, 23712, 23733, 23727, 23720, 23724, 23711,
- 23715, 23725, 23714, 23722, 23719, 23709, 23717, 23734, 23728, 23718,
- 24087, 24084, 24089, 24360, 24354, 24355, 24356, 24404, 24450, 24446,
- 24445, 24542, 24549, 24621, 24614, 24601, 24626, 24587, 24628, 24586,
- 24599, 24627, 24602, 24606, 24620, 24610, 24589, 24592, 24622, 24595,
- 24593, 24588, 24585, 24604, 25108, 25149, 25261, 25268, 25297, 25278,
- 25258, 25270, 25290, 25262, 25267, 25263, 25275, 25257, 25264, 25272,
- 25917, 26024, 26043, 26121, 26108, 26116, 26130, 26120, 26107, 26115,
- 26123, 26125, 26117, 26109, 26129, 26128, 26358, 26378, 26501, 26476,
- 26510, 26514, 26486, 26491, 26520, 26502, 26500, 26484, 26509, 26508,
- 26490, 26527, 26513, 26521, 26499, 26493, 26497, 26488, 26489, 26516,
- 27429, 27520, 27518, 27614, 27677, 27795, 27884, 27883, 27886, 27865,
- 27830, 27860, 27821, 27879, 27831, 27856, 27842, 27834, 27843, 27846,
- 27885, 27890, 27858, 27869, 27828, 27786, 27805, 27776, 27870, 27840,
- 27952, 27853, 27847, 27824, 27897, 27855, 27881, 27857, 28820, 28824,
- 28805, 28819, 28806, 28804, 28817, 28822, 28802, 28826, 28803, 29290,
- 29398, 29387, 29400, 29385, 29404, 29394, 29396, 29402, 29388, 29393,
- 29604, 29601, 29613, 29606, 29602, 29600, 29612, 29597, 29917, 29928,
- 30015, 30016, 30014, 30092, 30104, 30383, 30451, 30449, 30448, 30453,
- 30712, 30716, 30713, 30715, 30714, 30711, 31042, 31039, 31173, 31352,
- 31355, 31483, 31861, 31997, 32821, 32911, 32942, 32931, 32952, 32949,
- 32941, 33312, 33440, 33472, 33451, 33434, 33432, 33435, 33461, 33447,
- 33454, 33468, 33438, 33466, 33460, 33448, 33441, 33449, 33474, 33444,
- 33475, 33462, 33442, 34416, 34415, 34413, 34414, 35926, 36818, 36811,
- 36819, 36813, 36822, 36821, 36823, 37042, 37044, 37039, 37043, 37040,
- 38457, 38461, 38460, 38458, 38467, 20429, 20421, 20435, 20402, 20425,
- 20427, 20417, 20436, 20444, 20441, 20411, 20403, 20443, 20423, 20438,
- 20410, 20416, 20409, 20460, 21060, 21065, 21184, 21186, 21309, 21372,
- 21399, 21398, 21401, 21400, 21690, 21665, 21677, 21669, 21711, 21699,
- 33549, 21687, 21678, 21718, 21686, 21701, 21702, 21664, 21616, 21692,
- 21666, 21694, 21618, 21726, 21680, 22453, 22430, 22431, 22436, 22412,
- 22423, 22429, 22427, 22420, 22424, 22415, 22425, 22437, 22426, 22421,
- 22772, 22797, 22867, 23009, 23006, 23022, 23040, 23025, 23005, 23034,
- 23037, 23036, 23030, 23012, 23026, 23031, 23003, 23017, 23027, 23029,
- 23008, 23038, 23028, 23021, 23464, 23628, 23760, 23768, 23756, 23767,
- 23755, 23771, 23774, 23770, 23753, 23751, 23754, 23766, 23763, 23764,
- 23759, 23752, 23750, 23758, 23775, 23800, 24057, 24097, 24098, 24099,
- 24096, 24100, 24240, 24228, 24226, 24219, 24227, 24229, 24327, 24366,
- 24406, 24454, 24631, 24633, 24660, 24690, 24670, 24645, 24659, 24647,
- 24649, 24667, 24652, 24640, 24642, 24671, 24612, 24644, 24664, 24678,
- 24686, 25154, 25155, 25295, 25357, 25355, 25333, 25358, 25347, 25323,
- 25337, 25359, 25356, 25336, 25334, 25344, 25363, 25364, 25338, 25365,
- 25339, 25328, 25921, 25923, 26026, 26047, 26166, 26145, 26162, 26165,
- 26140, 26150, 26146, 26163, 26155, 26170, 26141, 26164, 26169, 26158,
- 26383, 26384, 26561, 26610, 26568, 26554, 26588, 26555, 26616, 26584,
- 26560, 26551, 26565, 26603, 26596, 26591, 26549, 26573, 26547, 26615,
- 26614, 26606, 26595, 26562, 26553, 26574, 26599, 26608, 26546, 26620,
- 26566, 26605, 26572, 26542, 26598, 26587, 26618, 26569, 26570, 26563,
- 26602, 26571, 27432, 27522, 27524, 27574, 27606, 27608, 27616, 27680,
- 27681, 27944, 27956, 27949, 27935, 27964, 27967, 27922, 27914, 27866,
- 27955, 27908, 27929, 27962, 27930, 27921, 27904, 27933, 27970, 27905,
- 27928, 27959, 27907, 27919, 27968, 27911, 27936, 27948, 27912, 27938,
- 27913, 27920, 28855, 28831, 28862, 28849, 28848, 28833, 28852, 28853,
- 28841, 29249, 29257, 29258, 29292, 29296, 29299, 29294, 29386, 29412,
- 29416, 29419, 29407, 29418, 29414, 29411, 29573, 29644, 29634, 29640,
- 29637, 29625, 29622, 29621, 29620, 29675, 29631, 29639, 29630, 29635,
- 29638, 29624, 29643, 29932, 29934, 29998, 30023, 30024, 30119, 30122,
- 30329, 30404, 30472, 30467, 30468, 30469, 30474, 30455, 30459, 30458,
- 30695, 30696, 30726, 30737, 30738, 30725, 30736, 30735, 30734, 30729,
- 30723, 30739, 31050, 31052, 31051, 31045, 31044, 31189, 31181, 31183,
- 31190, 31182, 31360, 31358, 31441, 31488, 31489, 31866, 31864, 31865,
- 31871, 31872, 31873, 32003, 32008, 32001, 32600, 32657, 32653, 32702,
- 32775, 32782, 32783, 32788, 32823, 32984, 32967, 32992, 32977, 32968,
- 32962, 32976, 32965, 32995, 32985, 32988, 32970, 32981, 32969, 32975,
- 32983, 32998, 32973, 33279, 33313, 33428, 33497, 33534, 33529, 33543,
- 33512, 33536, 33493, 33594, 33515, 33494, 33524, 33516, 33505, 33522,
- 33525, 33548, 33531, 33526, 33520, 33514, 33508, 33504, 33530, 33523,
- 33517, 34423, 34420, 34428, 34419, 34881, 34894, 34919, 34922, 34921,
- 35283, 35332, 35335, 36210, 36835, 36833, 36846, 36832, 37105, 37053,
- 37055, 37077, 37061, 37054, 37063, 37067, 37064, 37332, 37331, 38484,
- 38479, 38481, 38483, 38474, 38478, 20510, 20485, 20487, 20499, 20514,
- 20528, 20507, 20469, 20468, 20531, 20535, 20524, 20470, 20471, 20503,
- 20508, 20512, 20519, 20533, 20527, 20529, 20494, 20826, 20884, 20883,
- 20938, 20932, 20933, 20936, 20942, 21089, 21082, 21074, 21086, 21087,
- 21077, 21090, 21197, 21262, 21406, 21798, 21730, 21783, 21778, 21735,
- 21747, 21732, 21786, 21759, 21764, 21768, 21739, 21777, 21765, 21745,
- 21770, 21755, 21751, 21752, 21728, 21774, 21763, 21771, 22273, 22274,
- 22476, 22578, 22485, 22482, 22458, 22470, 22461, 22460, 22456, 22454,
- 22463, 22471, 22480, 22457, 22465, 22798, 22858, 23065, 23062, 23085,
- 23086, 23061, 23055, 23063, 23050, 23070, 23091, 23404, 23463, 23469,
- 23468, 23555, 23638, 23636, 23788, 23807, 23790, 23793, 23799, 23808,
- 23801, 24105, 24104, 24232, 24238, 24234, 24236, 24371, 24368, 24423,
- 24669, 24666, 24679, 24641, 24738, 24712, 24704, 24722, 24705, 24733,
- 24707, 24725, 24731, 24727, 24711, 24732, 24718, 25113, 25158, 25330,
- 25360, 25430, 25388, 25412, 25413, 25398, 25411, 25572, 25401, 25419,
- 25418, 25404, 25385, 25409, 25396, 25432, 25428, 25433, 25389, 25415,
- 25395, 25434, 25425, 25400, 25431, 25408, 25416, 25930, 25926, 26054,
- 26051, 26052, 26050, 26186, 26207, 26183, 26193, 26386, 26387, 26655,
- 26650, 26697, 26674, 26675, 26683, 26699, 26703, 26646, 26673, 26652,
- 26677, 26667, 26669, 26671, 26702, 26692, 26676, 26653, 26642, 26644,
- 26662, 26664, 26670, 26701, 26682, 26661, 26656, 27436, 27439, 27437,
- 27441, 27444, 27501, 32898, 27528, 27622, 27620, 27624, 27619, 27618,
- 27623, 27685, 28026, 28003, 28004, 28022, 27917, 28001, 28050, 27992,
- 28002, 28013, 28015, 28049, 28045, 28143, 28031, 28038, 27998, 28007,
- 28000, 28055, 28016, 28028, 27999, 28034, 28056, 27951, 28008, 28043,
- 28030, 28032, 28036, 27926, 28035, 28027, 28029, 28021, 28048, 28892,
- 28883, 28881, 28893, 28875, 32569, 28898, 28887, 28882, 28894, 28896,
- 28884, 28877, 28869, 28870, 28871, 28890, 28878, 28897, 29250, 29304,
- 29303, 29302, 29440, 29434, 29428, 29438, 29430, 29427, 29435, 29441,
- 29651, 29657, 29669, 29654, 29628, 29671, 29667, 29673, 29660, 29650,
- 29659, 29652, 29661, 29658, 29655, 29656, 29672, 29918, 29919, 29940,
- 29941, 29985, 30043, 30047, 30128, 30145, 30139, 30148, 30144, 30143,
- 30134, 30138, 30346, 30409, 30493, 30491, 30480, 30483, 30482, 30499,
- 30481, 30485, 30489, 30490, 30498, 30503, 30755, 30764, 30754, 30773,
- 30767, 30760, 30766, 30763, 30753, 30761, 30771, 30762, 30769, 31060,
- 31067, 31055, 31068, 31059, 31058, 31057, 31211, 31212, 31200, 31214,
- 31213, 31210, 31196, 31198, 31197, 31366, 31369, 31365, 31371, 31372,
- 31370, 31367, 31448, 31504, 31492, 31507, 31493, 31503, 31496, 31498,
- 31502, 31497, 31506, 31876, 31889, 31882, 31884, 31880, 31885, 31877,
- 32030, 32029, 32017, 32014, 32024, 32022, 32019, 32031, 32018, 32015,
- 32012, 32604, 32609, 32606, 32608, 32605, 32603, 32662, 32658, 32707,
- 32706, 32704, 32790, 32830, 32825, 33018, 33010, 33017, 33013, 33025,
- 33019, 33024, 33281, 33327, 33317, 33587, 33581, 33604, 33561, 33617,
- 33573, 33622, 33599, 33601, 33574, 33564, 33570, 33602, 33614, 33563,
- 33578, 33544, 33596, 33613, 33558, 33572, 33568, 33591, 33583, 33577,
- 33607, 33605, 33612, 33619, 33566, 33580, 33611, 33575, 33608, 34387,
- 34386, 34466, 34472, 34454, 34445, 34449, 34462, 34439, 34455, 34438,
- 34443, 34458, 34437, 34469, 34457, 34465, 34471, 34453, 34456, 34446,
- 34461, 34448, 34452, 34883, 34884, 34925, 34933, 34934, 34930, 34944,
- 34929, 34943, 34927, 34947, 34942, 34932, 34940, 35346, 35911, 35927,
- 35963, 36004, 36003, 36214, 36216, 36277, 36279, 36278, 36561, 36563,
- 36862, 36853, 36866, 36863, 36859, 36868, 36860, 36854, 37078, 37088,
- 37081, 37082, 37091, 37087, 37093, 37080, 37083, 37079, 37084, 37092,
- 37200, 37198, 37199, 37333, 37346, 37338, 38492, 38495, 38588, 39139,
- 39647, 39727, 20095, 20592, 20586, 20577, 20574, 20576, 20563, 20555,
- 20573, 20594, 20552, 20557, 20545, 20571, 20554, 20578, 20501, 20549,
- 20575, 20585, 20587, 20579, 20580, 20550, 20544, 20590, 20595, 20567,
- 20561, 20944, 21099, 21101, 21100, 21102, 21206, 21203, 21293, 21404,
- 21877, 21878, 21820, 21837, 21840, 21812, 21802, 21841, 21858, 21814,
- 21813, 21808, 21842, 21829, 21772, 21810, 21861, 21838, 21817, 21832,
- 21805, 21819, 21824, 21835, 22282, 22279, 22523, 22548, 22498, 22518,
- 22492, 22516, 22528, 22509, 22525, 22536, 22520, 22539, 22515, 22479,
- 22535, 22510, 22499, 22514, 22501, 22508, 22497, 22542, 22524, 22544,
- 22503, 22529, 22540, 22513, 22505, 22512, 22541, 22532, 22876, 23136,
- 23128, 23125, 23143, 23134, 23096, 23093, 23149, 23120, 23135, 23141,
- 23148, 23123, 23140, 23127, 23107, 23133, 23122, 23108, 23131, 23112,
- 23182, 23102, 23117, 23097, 23116, 23152, 23145, 23111, 23121, 23126,
- 23106, 23132, 23410, 23406, 23489, 23488, 23641, 23838, 23819, 23837,
- 23834, 23840, 23820, 23848, 23821, 23846, 23845, 23823, 23856, 23826,
- 23843, 23839, 23854, 24126, 24116, 24241, 24244, 24249, 24242, 24243,
- 24374, 24376, 24475, 24470, 24479, 24714, 24720, 24710, 24766, 24752,
- 24762, 24787, 24788, 24783, 24804, 24793, 24797, 24776, 24753, 24795,
- 24759, 24778, 24767, 24771, 24781, 24768, 25394, 25445, 25482, 25474,
- 25469, 25533, 25502, 25517, 25501, 25495, 25515, 25486, 25455, 25479,
- 25488, 25454, 25519, 25461, 25500, 25453, 25518, 25468, 25508, 25403,
- 25503, 25464, 25477, 25473, 25489, 25485, 25456, 25939, 26061, 26213,
- 26209, 26203, 26201, 26204, 26210, 26392, 26745, 26759, 26768, 26780,
- 26733, 26734, 26798, 26795, 26966, 26735, 26787, 26796, 26793, 26741,
- 26740, 26802, 26767, 26743, 26770, 26748, 26731, 26738, 26794, 26752,
- 26737, 26750, 26779, 26774, 26763, 26784, 26761, 26788, 26744, 26747,
- 26769, 26764, 26762, 26749, 27446, 27443, 27447, 27448, 27537, 27535,
- 27533, 27534, 27532, 27690, 28096, 28075, 28084, 28083, 28276, 28076,
- 28137, 28130, 28087, 28150, 28116, 28160, 28104, 28128, 28127, 28118,
- 28094, 28133, 28124, 28125, 28123, 28148, 28106, 28093, 28141, 28144,
- 28090, 28117, 28098, 28111, 28105, 28112, 28146, 28115, 28157, 28119,
- 28109, 28131, 28091, 28922, 28941, 28919, 28951, 28916, 28940, 28912,
- 28932, 28915, 28944, 28924, 28927, 28934, 28947, 28928, 28920, 28918,
- 28939, 28930, 28942, 29310, 29307, 29308, 29311, 29469, 29463, 29447,
- 29457, 29464, 29450, 29448, 29439, 29455, 29470, 29576, 29686, 29688,
- 29685, 29700, 29697, 29693, 29703, 29696, 29690, 29692, 29695, 29708,
- 29707, 29684, 29704, 30052, 30051, 30158, 30162, 30159, 30155, 30156,
- 30161, 30160, 30351, 30345, 30419, 30521, 30511, 30509, 30513, 30514,
- 30516, 30515, 30525, 30501, 30523, 30517, 30792, 30802, 30793, 30797,
- 30794, 30796, 30758, 30789, 30800, 31076, 31079, 31081, 31082, 31075,
- 31083, 31073, 31163, 31226, 31224, 31222, 31223, 31375, 31380, 31376,
- 31541, 31559, 31540, 31525, 31536, 31522, 31524, 31539, 31512, 31530,
- 31517, 31537, 31531, 31533, 31535, 31538, 31544, 31514, 31523, 31892,
- 31896, 31894, 31907, 32053, 32061, 32056, 32054, 32058, 32069, 32044,
- 32041, 32065, 32071, 32062, 32063, 32074, 32059, 32040, 32611, 32661,
- 32668, 32669, 32667, 32714, 32715, 32717, 32720, 32721, 32711, 32719,
- 32713, 32799, 32798, 32795, 32839, 32835, 32840, 33048, 33061, 33049,
- 33051, 33069, 33055, 33068, 33054, 33057, 33045, 33063, 33053, 33058,
- 33297, 33336, 33331, 33338, 33332, 33330, 33396, 33680, 33699, 33704,
- 33677, 33658, 33651, 33700, 33652, 33679, 33665, 33685, 33689, 33653,
- 33684, 33705, 33661, 33667, 33676, 33693, 33691, 33706, 33675, 33662,
- 33701, 33711, 33672, 33687, 33712, 33663, 33702, 33671, 33710, 33654,
- 33690, 34393, 34390, 34495, 34487, 34498, 34497, 34501, 34490, 34480,
- 34504, 34489, 34483, 34488, 34508, 34484, 34491, 34492, 34499, 34493,
- 34494, 34898, 34953, 34965, 34984, 34978, 34986, 34970, 34961, 34977,
- 34975, 34968, 34983, 34969, 34971, 34967, 34980, 34988, 34956, 34963,
- 34958, 35202, 35286, 35289, 35285, 35376, 35367, 35372, 35358, 35897,
- 35899, 35932, 35933, 35965, 36005, 36221, 36219, 36217, 36284, 36290,
- 36281, 36287, 36289, 36568, 36574, 36573, 36572, 36567, 36576, 36577,
- 36900, 36875, 36881, 36892, 36876, 36897, 37103, 37098, 37104, 37108,
- 37106, 37107, 37076, 37099, 37100, 37097, 37206, 37208, 37210, 37203,
- 37205, 37356, 37364, 37361, 37363, 37368, 37348, 37369, 37354, 37355,
- 37367, 37352, 37358, 38266, 38278, 38280, 38524, 38509, 38507, 38513,
- 38511, 38591, 38762, 38916, 39141, 39319, 20635, 20629, 20628, 20638,
- 20619, 20643, 20611, 20620, 20622, 20637, 20584, 20636, 20626, 20610,
- 20615, 20831, 20948, 21266, 21265, 21412, 21415, 21905, 21928, 21925,
- 21933, 21879, 22085, 21922, 21907, 21896, 21903, 21941, 21889, 21923,
- 21906, 21924, 21885, 21900, 21926, 21887, 21909, 21921, 21902, 22284,
- 22569, 22583, 22553, 22558, 22567, 22563, 22568, 22517, 22600, 22565,
- 22556, 22555, 22579, 22591, 22582, 22574, 22585, 22584, 22573, 22572,
- 22587, 22881, 23215, 23188, 23199, 23162, 23202, 23198, 23160, 23206,
- 23164, 23205, 23212, 23189, 23214, 23095, 23172, 23178, 23191, 23171,
- 23179, 23209, 23163, 23165, 23180, 23196, 23183, 23187, 23197, 23530,
- 23501, 23499, 23508, 23505, 23498, 23502, 23564, 23600, 23863, 23875,
- 23915, 23873, 23883, 23871, 23861, 23889, 23886, 23893, 23859, 23866,
- 23890, 23869, 23857, 23897, 23874, 23865, 23881, 23864, 23868, 23858,
- 23862, 23872, 23877, 24132, 24129, 24408, 24486, 24485, 24491, 24777,
- 24761, 24780, 24802, 24782, 24772, 24852, 24818, 24842, 24854, 24837,
- 24821, 24851, 24824, 24828, 24830, 24769, 24835, 24856, 24861, 24848,
- 24831, 24836, 24843, 25162, 25492, 25521, 25520, 25550, 25573, 25576,
- 25583, 25539, 25757, 25587, 25546, 25568, 25590, 25557, 25586, 25589,
- 25697, 25567, 25534, 25565, 25564, 25540, 25560, 25555, 25538, 25543,
- 25548, 25547, 25544, 25584, 25559, 25561, 25906, 25959, 25962, 25956,
- 25948, 25960, 25957, 25996, 26013, 26014, 26030, 26064, 26066, 26236,
- 26220, 26235, 26240, 26225, 26233, 26218, 26226, 26369, 26892, 26835,
- 26884, 26844, 26922, 26860, 26858, 26865, 26895, 26838, 26871, 26859,
- 26852, 26870, 26899, 26896, 26867, 26849, 26887, 26828, 26888, 26992,
- 26804, 26897, 26863, 26822, 26900, 26872, 26832, 26877, 26876, 26856,
- 26891, 26890, 26903, 26830, 26824, 26845, 26846, 26854, 26868, 26833,
- 26886, 26836, 26857, 26901, 26917, 26823, 27449, 27451, 27455, 27452,
- 27540, 27543, 27545, 27541, 27581, 27632, 27634, 27635, 27696, 28156,
- 28230, 28231, 28191, 28233, 28296, 28220, 28221, 28229, 28258, 28203,
- 28223, 28225, 28253, 28275, 28188, 28211, 28235, 28224, 28241, 28219,
- 28163, 28206, 28254, 28264, 28252, 28257, 28209, 28200, 28256, 28273,
- 28267, 28217, 28194, 28208, 28243, 28261, 28199, 28280, 28260, 28279,
- 28245, 28281, 28242, 28262, 28213, 28214, 28250, 28960, 28958, 28975,
- 28923, 28974, 28977, 28963, 28965, 28962, 28978, 28959, 28968, 28986,
- 28955, 29259, 29274, 29320, 29321, 29318, 29317, 29323, 29458, 29451,
- 29488, 29474, 29489, 29491, 29479, 29490, 29485, 29478, 29475, 29493,
- 29452, 29742, 29740, 29744, 29739, 29718, 29722, 29729, 29741, 29745,
- 29732, 29731, 29725, 29737, 29728, 29746, 29947, 29999, 30063, 30060,
- 30183, 30170, 30177, 30182, 30173, 30175, 30180, 30167, 30357, 30354,
- 30426, 30534, 30535, 30532, 30541, 30533, 30538, 30542, 30539, 30540,
- 30686, 30700, 30816, 30820, 30821, 30812, 30829, 30833, 30826, 30830,
- 30832, 30825, 30824, 30814, 30818, 31092, 31091, 31090, 31088, 31234,
- 31242, 31235, 31244, 31236, 31385, 31462, 31460, 31562, 31547, 31556,
- 31560, 31564, 31566, 31552, 31576, 31557, 31906, 31902, 31912, 31905,
- 32088, 32111, 32099, 32083, 32086, 32103, 32106, 32079, 32109, 32092,
- 32107, 32082, 32084, 32105, 32081, 32095, 32078, 32574, 32575, 32613,
- 32614, 32674, 32672, 32673, 32727, 32849, 32847, 32848, 33022, 32980,
- 33091, 33098, 33106, 33103, 33095, 33085, 33101, 33082, 33254, 33262,
- 33271, 33272, 33273, 33284, 33340, 33341, 33343, 33397, 33595, 33743,
- 33785, 33827, 33728, 33768, 33810, 33767, 33764, 33788, 33782, 33808,
- 33734, 33736, 33771, 33763, 33727, 33793, 33757, 33765, 33752, 33791,
- 33761, 33739, 33742, 33750, 33781, 33737, 33801, 33807, 33758, 33809,
- 33798, 33730, 33779, 33749, 33786, 33735, 33745, 33770, 33811, 33731,
- 33772, 33774, 33732, 33787, 33751, 33762, 33819, 33755, 33790, 34520,
- 34530, 34534, 34515, 34531, 34522, 34538, 34525, 34539, 34524, 34540,
- 34537, 34519, 34536, 34513, 34888, 34902, 34901, 35002, 35031, 35001,
- 35000, 35008, 35006, 34998, 35004, 34999, 35005, 34994, 35073, 35017,
- 35221, 35224, 35223, 35293, 35290, 35291, 35406, 35405, 35385, 35417,
- 35392, 35415, 35416, 35396, 35397, 35410, 35400, 35409, 35402, 35404,
- 35407, 35935, 35969, 35968, 36026, 36030, 36016, 36025, 36021, 36228,
- 36224, 36233, 36312, 36307, 36301, 36295, 36310, 36316, 36303, 36309,
- 36313, 36296, 36311, 36293, 36591, 36599, 36602, 36601, 36582, 36590,
- 36581, 36597, 36583, 36584, 36598, 36587, 36593, 36588, 36596, 36585,
- 36909, 36916, 36911, 37126, 37164, 37124, 37119, 37116, 37128, 37113,
- 37115, 37121, 37120, 37127, 37125, 37123, 37217, 37220, 37215, 37218,
- 37216, 37377, 37386, 37413, 37379, 37402, 37414, 37391, 37388, 37376,
- 37394, 37375, 37373, 37382, 37380, 37415, 37378, 37404, 37412, 37401,
- 37399, 37381, 37398, 38267, 38285, 38284, 38288, 38535, 38526, 38536,
- 38537, 38531, 38528, 38594, 38600, 38595, 38641, 38640, 38764, 38768,
- 38766, 38919, 39081, 39147, 40166, 40697, 20099, 20100, 20150, 20669,
- 20671, 20678, 20654, 20676, 20682, 20660, 20680, 20674, 20656, 20673,
- 20666, 20657, 20683, 20681, 20662, 20664, 20951, 21114, 21112, 21115,
- 21116, 21955, 21979, 21964, 21968, 21963, 21962, 21981, 21952, 21972,
- 21956, 21993, 21951, 21970, 21901, 21967, 21973, 21986, 21974, 21960,
- 22002, 21965, 21977, 21954, 22292, 22611, 22632, 22628, 22607, 22605,
- 22601, 22639, 22613, 22606, 22621, 22617, 22629, 22619, 22589, 22627,
- 22641, 22780, 23239, 23236, 23243, 23226, 23224, 23217, 23221, 23216,
- 23231, 23240, 23227, 23238, 23223, 23232, 23242, 23220, 23222, 23245,
- 23225, 23184, 23510, 23512, 23513, 23583, 23603, 23921, 23907, 23882,
- 23909, 23922, 23916, 23902, 23912, 23911, 23906, 24048, 24143, 24142,
- 24138, 24141, 24139, 24261, 24268, 24262, 24267, 24263, 24384, 24495,
- 24493, 24823, 24905, 24906, 24875, 24901, 24886, 24882, 24878, 24902,
- 24879, 24911, 24873, 24896, 25120, 37224, 25123, 25125, 25124, 25541,
- 25585, 25579, 25616, 25618, 25609, 25632, 25636, 25651, 25667, 25631,
- 25621, 25624, 25657, 25655, 25634, 25635, 25612, 25638, 25648, 25640,
- 25665, 25653, 25647, 25610, 25626, 25664, 25637, 25639, 25611, 25575,
- 25627, 25646, 25633, 25614, 25967, 26002, 26067, 26246, 26252, 26261,
- 26256, 26251, 26250, 26265, 26260, 26232, 26400, 26982, 26975, 26936,
- 26958, 26978, 26993, 26943, 26949, 26986, 26937, 26946, 26967, 26969,
- 27002, 26952, 26953, 26933, 26988, 26931, 26941, 26981, 26864, 27000,
- 26932, 26985, 26944, 26991, 26948, 26998, 26968, 26945, 26996, 26956,
- 26939, 26955, 26935, 26972, 26959, 26961, 26930, 26962, 26927, 27003,
- 26940, 27462, 27461, 27459, 27458, 27464, 27457, 27547, 64013, 27643,
- 27644, 27641, 27639, 27640, 28315, 28374, 28360, 28303, 28352, 28319,
- 28307, 28308, 28320, 28337, 28345, 28358, 28370, 28349, 28353, 28318,
- 28361, 28343, 28336, 28365, 28326, 28367, 28338, 28350, 28355, 28380,
- 28376, 28313, 28306, 28302, 28301, 28324, 28321, 28351, 28339, 28368,
- 28362, 28311, 28334, 28323, 28999, 29012, 29010, 29027, 29024, 28993,
- 29021, 29026, 29042, 29048, 29034, 29025, 28994, 29016, 28995, 29003,
- 29040, 29023, 29008, 29011, 28996, 29005, 29018, 29263, 29325, 29324,
- 29329, 29328, 29326, 29500, 29506, 29499, 29498, 29504, 29514, 29513,
- 29764, 29770, 29771, 29778, 29777, 29783, 29760, 29775, 29776, 29774,
- 29762, 29766, 29773, 29780, 29921, 29951, 29950, 29949, 29981, 30073,
- 30071, 27011, 30191, 30223, 30211, 30199, 30206, 30204, 30201, 30200,
- 30224, 30203, 30198, 30189, 30197, 30205, 30361, 30389, 30429, 30549,
- 30559, 30560, 30546, 30550, 30554, 30569, 30567, 30548, 30553, 30573,
- 30688, 30855, 30874, 30868, 30863, 30852, 30869, 30853, 30854, 30881,
- 30851, 30841, 30873, 30848, 30870, 30843, 31100, 31106, 31101, 31097,
- 31249, 31256, 31257, 31250, 31255, 31253, 31266, 31251, 31259, 31248,
- 31395, 31394, 31390, 31467, 31590, 31588, 31597, 31604, 31593, 31602,
- 31589, 31603, 31601, 31600, 31585, 31608, 31606, 31587, 31922, 31924,
- 31919, 32136, 32134, 32128, 32141, 32127, 32133, 32122, 32142, 32123,
- 32131, 32124, 32140, 32148, 32132, 32125, 32146, 32621, 32619, 32615,
- 32616, 32620, 32678, 32677, 32679, 32731, 32732, 32801, 33124, 33120,
- 33143, 33116, 33129, 33115, 33122, 33138, 26401, 33118, 33142, 33127,
- 33135, 33092, 33121, 33309, 33353, 33348, 33344, 33346, 33349, 34033,
- 33855, 33878, 33910, 33913, 33935, 33933, 33893, 33873, 33856, 33926,
- 33895, 33840, 33869, 33917, 33882, 33881, 33908, 33907, 33885, 34055,
- 33886, 33847, 33850, 33844, 33914, 33859, 33912, 33842, 33861, 33833,
- 33753, 33867, 33839, 33858, 33837, 33887, 33904, 33849, 33870, 33868,
- 33874, 33903, 33989, 33934, 33851, 33863, 33846, 33843, 33896, 33918,
- 33860, 33835, 33888, 33876, 33902, 33872, 34571, 34564, 34551, 34572,
- 34554, 34518, 34549, 34637, 34552, 34574, 34569, 34561, 34550, 34573,
- 34565, 35030, 35019, 35021, 35022, 35038, 35035, 35034, 35020, 35024,
- 35205, 35227, 35295, 35301, 35300, 35297, 35296, 35298, 35292, 35302,
- 35446, 35462, 35455, 35425, 35391, 35447, 35458, 35460, 35445, 35459,
- 35457, 35444, 35450, 35900, 35915, 35914, 35941, 35940, 35942, 35974,
- 35972, 35973, 36044, 36200, 36201, 36241, 36236, 36238, 36239, 36237,
- 36243, 36244, 36240, 36242, 36336, 36320, 36332, 36337, 36334, 36304,
- 36329, 36323, 36322, 36327, 36338, 36331, 36340, 36614, 36607, 36609,
- 36608, 36613, 36615, 36616, 36610, 36619, 36946, 36927, 36932, 36937,
- 36925, 37136, 37133, 37135, 37137, 37142, 37140, 37131, 37134, 37230,
- 37231, 37448, 37458, 37424, 37434, 37478, 37427, 37477, 37470, 37507,
- 37422, 37450, 37446, 37485, 37484, 37455, 37472, 37479, 37487, 37430,
- 37473, 37488, 37425, 37460, 37475, 37456, 37490, 37454, 37459, 37452,
- 37462, 37426, 38303, 38300, 38302, 38299, 38546, 38547, 38545, 38551,
- 38606, 38650, 38653, 38648, 38645, 38771, 38775, 38776, 38770, 38927,
- 38925, 38926, 39084, 39158, 39161, 39343, 39346, 39344, 39349, 39597,
- 39595, 39771, 40170, 40173, 40167, 40576, 40701, 20710, 20692, 20695,
- 20712, 20723, 20699, 20714, 20701, 20708, 20691, 20716, 20720, 20719,
- 20707, 20704, 20952, 21120, 21121, 21225, 21227, 21296, 21420, 22055,
- 22037, 22028, 22034, 22012, 22031, 22044, 22017, 22035, 22018, 22010,
- 22045, 22020, 22015, 22009, 22665, 22652, 22672, 22680, 22662, 22657,
- 22655, 22644, 22667, 22650, 22663, 22673, 22670, 22646, 22658, 22664,
- 22651, 22676, 22671, 22782, 22891, 23260, 23278, 23269, 23253, 23274,
- 23258, 23277, 23275, 23283, 23266, 23264, 23259, 23276, 23262, 23261,
- 23257, 23272, 23263, 23415, 23520, 23523, 23651, 23938, 23936, 23933,
- 23942, 23930, 23937, 23927, 23946, 23945, 23944, 23934, 23932, 23949,
- 23929, 23935, 24152, 24153, 24147, 24280, 24273, 24279, 24270, 24284,
- 24277, 24281, 24274, 24276, 24388, 24387, 24431, 24502, 24876, 24872,
- 24897, 24926, 24945, 24947, 24914, 24915, 24946, 24940, 24960, 24948,
- 24916, 24954, 24923, 24933, 24891, 24938, 24929, 24918, 25129, 25127,
- 25131, 25643, 25677, 25691, 25693, 25716, 25718, 25714, 25715, 25725,
- 25717, 25702, 25766, 25678, 25730, 25694, 25692, 25675, 25683, 25696,
- 25680, 25727, 25663, 25708, 25707, 25689, 25701, 25719, 25971, 26016,
- 26273, 26272, 26271, 26373, 26372, 26402, 27057, 27062, 27081, 27040,
- 27086, 27030, 27056, 27052, 27068, 27025, 27033, 27022, 27047, 27021,
- 27049, 27070, 27055, 27071, 27076, 27069, 27044, 27092, 27065, 27082,
- 27034, 27087, 27059, 27027, 27050, 27041, 27038, 27097, 27031, 27024,
- 27074, 27061, 27045, 27078, 27466, 27469, 27467, 27550, 27551, 27552,
- 27587, 27588, 27646, 28366, 28405, 28401, 28419, 28453, 28408, 28471,
- 28411, 28462, 28425, 28494, 28441, 28442, 28455, 28440, 28475, 28434,
- 28397, 28426, 28470, 28531, 28409, 28398, 28461, 28480, 28464, 28476,
- 28469, 28395, 28423, 28430, 28483, 28421, 28413, 28406, 28473, 28444,
- 28412, 28474, 28447, 28429, 28446, 28424, 28449, 29063, 29072, 29065,
- 29056, 29061, 29058, 29071, 29051, 29062, 29057, 29079, 29252, 29267,
- 29335, 29333, 29331, 29507, 29517, 29521, 29516, 29794, 29811, 29809,
- 29813, 29810, 29799, 29806, 29952, 29954, 29955, 30077, 30096, 30230,
- 30216, 30220, 30229, 30225, 30218, 30228, 30392, 30593, 30588, 30597,
- 30594, 30574, 30592, 30575, 30590, 30595, 30898, 30890, 30900, 30893,
- 30888, 30846, 30891, 30878, 30885, 30880, 30892, 30882, 30884, 31128,
- 31114, 31115, 31126, 31125, 31124, 31123, 31127, 31112, 31122, 31120,
- 31275, 31306, 31280, 31279, 31272, 31270, 31400, 31403, 31404, 31470,
- 31624, 31644, 31626, 31633, 31632, 31638, 31629, 31628, 31643, 31630,
- 31621, 31640, 21124, 31641, 31652, 31618, 31931, 31935, 31932, 31930,
- 32167, 32183, 32194, 32163, 32170, 32193, 32192, 32197, 32157, 32206,
- 32196, 32198, 32203, 32204, 32175, 32185, 32150, 32188, 32159, 32166,
- 32174, 32169, 32161, 32201, 32627, 32738, 32739, 32741, 32734, 32804,
- 32861, 32860, 33161, 33158, 33155, 33159, 33165, 33164, 33163, 33301,
- 33943, 33956, 33953, 33951, 33978, 33998, 33986, 33964, 33966, 33963,
- 33977, 33972, 33985, 33997, 33962, 33946, 33969, 34000, 33949, 33959,
- 33979, 33954, 33940, 33991, 33996, 33947, 33961, 33967, 33960, 34006,
- 33944, 33974, 33999, 33952, 34007, 34004, 34002, 34011, 33968, 33937,
- 34401, 34611, 34595, 34600, 34667, 34624, 34606, 34590, 34593, 34585,
- 34587, 34627, 34604, 34625, 34622, 34630, 34592, 34610, 34602, 34605,
- 34620, 34578, 34618, 34609, 34613, 34626, 34598, 34599, 34616, 34596,
- 34586, 34608, 34577, 35063, 35047, 35057, 35058, 35066, 35070, 35054,
- 35068, 35062, 35067, 35056, 35052, 35051, 35229, 35233, 35231, 35230,
- 35305, 35307, 35304, 35499, 35481, 35467, 35474, 35471, 35478, 35901,
- 35944, 35945, 36053, 36047, 36055, 36246, 36361, 36354, 36351, 36365,
- 36349, 36362, 36355, 36359, 36358, 36357, 36350, 36352, 36356, 36624,
- 36625, 36622, 36621, 37155, 37148, 37152, 37154, 37151, 37149, 37146,
- 37156, 37153, 37147, 37242, 37234, 37241, 37235, 37541, 37540, 37494,
- 37531, 37498, 37536, 37524, 37546, 37517, 37542, 37530, 37547, 37497,
- 37527, 37503, 37539, 37614, 37518, 37506, 37525, 37538, 37501, 37512,
- 37537, 37514, 37510, 37516, 37529, 37543, 37502, 37511, 37545, 37533,
- 37515, 37421, 38558, 38561, 38655, 38744, 38781, 38778, 38782, 38787,
- 38784, 38786, 38779, 38788, 38785, 38783, 38862, 38861, 38934, 39085,
- 39086, 39170, 39168, 39175, 39325, 39324, 39363, 39353, 39355, 39354,
- 39362, 39357, 39367, 39601, 39651, 39655, 39742, 39743, 39776, 39777,
- 39775, 40177, 40178, 40181, 40615, 20735, 20739, 20784, 20728, 20742,
- 20743, 20726, 20734, 20747, 20748, 20733, 20746, 21131, 21132, 21233,
- 21231, 22088, 22082, 22092, 22069, 22081, 22090, 22089, 22086, 22104,
- 22106, 22080, 22067, 22077, 22060, 22078, 22072, 22058, 22074, 22298,
- 22699, 22685, 22705, 22688, 22691, 22703, 22700, 22693, 22689, 22783,
- 23295, 23284, 23293, 23287, 23286, 23299, 23288, 23298, 23289, 23297,
- 23303, 23301, 23311, 23655, 23961, 23959, 23967, 23954, 23970, 23955,
- 23957, 23968, 23964, 23969, 23962, 23966, 24169, 24157, 24160, 24156,
- 32243, 24283, 24286, 24289, 24393, 24498, 24971, 24963, 24953, 25009,
- 25008, 24994, 24969, 24987, 24979, 25007, 25005, 24991, 24978, 25002,
- 24993, 24973, 24934, 25011, 25133, 25710, 25712, 25750, 25760, 25733,
- 25751, 25756, 25743, 25739, 25738, 25740, 25763, 25759, 25704, 25777,
- 25752, 25974, 25978, 25977, 25979, 26034, 26035, 26293, 26288, 26281,
- 26290, 26295, 26282, 26287, 27136, 27142, 27159, 27109, 27128, 27157,
- 27121, 27108, 27168, 27135, 27116, 27106, 27163, 27165, 27134, 27175,
- 27122, 27118, 27156, 27127, 27111, 27200, 27144, 27110, 27131, 27149,
- 27132, 27115, 27145, 27140, 27160, 27173, 27151, 27126, 27174, 27143,
- 27124, 27158, 27473, 27557, 27555, 27554, 27558, 27649, 27648, 27647,
- 27650, 28481, 28454, 28542, 28551, 28614, 28562, 28557, 28553, 28556,
- 28514, 28495, 28549, 28506, 28566, 28534, 28524, 28546, 28501, 28530,
- 28498, 28496, 28503, 28564, 28563, 28509, 28416, 28513, 28523, 28541,
- 28519, 28560, 28499, 28555, 28521, 28543, 28565, 28515, 28535, 28522,
- 28539, 29106, 29103, 29083, 29104, 29088, 29082, 29097, 29109, 29085,
- 29093, 29086, 29092, 29089, 29098, 29084, 29095, 29107, 29336, 29338,
- 29528, 29522, 29534, 29535, 29536, 29533, 29531, 29537, 29530, 29529,
- 29538, 29831, 29833, 29834, 29830, 29825, 29821, 29829, 29832, 29820,
- 29817, 29960, 29959, 30078, 30245, 30238, 30233, 30237, 30236, 30243,
- 30234, 30248, 30235, 30364, 30365, 30366, 30363, 30605, 30607, 30601,
- 30600, 30925, 30907, 30927, 30924, 30929, 30926, 30932, 30920, 30915,
- 30916, 30921, 31130, 31137, 31136, 31132, 31138, 31131, 27510, 31289,
- 31410, 31412, 31411, 31671, 31691, 31678, 31660, 31694, 31663, 31673,
- 31690, 31669, 31941, 31944, 31948, 31947, 32247, 32219, 32234, 32231,
- 32215, 32225, 32259, 32250, 32230, 32246, 32241, 32240, 32238, 32223,
- 32630, 32684, 32688, 32685, 32749, 32747, 32746, 32748, 32742, 32744,
- 32868, 32871, 33187, 33183, 33182, 33173, 33186, 33177, 33175, 33302,
- 33359, 33363, 33362, 33360, 33358, 33361, 34084, 34107, 34063, 34048,
- 34089, 34062, 34057, 34061, 34079, 34058, 34087, 34076, 34043, 34091,
- 34042, 34056, 34060, 34036, 34090, 34034, 34069, 34039, 34027, 34035,
- 34044, 34066, 34026, 34025, 34070, 34046, 34088, 34077, 34094, 34050,
- 34045, 34078, 34038, 34097, 34086, 34023, 34024, 34032, 34031, 34041,
- 34072, 34080, 34096, 34059, 34073, 34095, 34402, 34646, 34659, 34660,
- 34679, 34785, 34675, 34648, 34644, 34651, 34642, 34657, 34650, 34641,
- 34654, 34669, 34666, 34640, 34638, 34655, 34653, 34671, 34668, 34682,
- 34670, 34652, 34661, 34639, 34683, 34677, 34658, 34663, 34665, 34906,
- 35077, 35084, 35092, 35083, 35095, 35096, 35097, 35078, 35094, 35089,
- 35086, 35081, 35234, 35236, 35235, 35309, 35312, 35308, 35535, 35526,
- 35512, 35539, 35537, 35540, 35541, 35515, 35543, 35518, 35520, 35525,
- 35544, 35523, 35514, 35517, 35545, 35902, 35917, 35983, 36069, 36063,
- 36057, 36072, 36058, 36061, 36071, 36256, 36252, 36257, 36251, 36384,
- 36387, 36389, 36388, 36398, 36373, 36379, 36374, 36369, 36377, 36390,
- 36391, 36372, 36370, 36376, 36371, 36380, 36375, 36378, 36652, 36644,
- 36632, 36634, 36640, 36643, 36630, 36631, 36979, 36976, 36975, 36967,
- 36971, 37167, 37163, 37161, 37162, 37170, 37158, 37166, 37253, 37254,
- 37258, 37249, 37250, 37252, 37248, 37584, 37571, 37572, 37568, 37593,
- 37558, 37583, 37617, 37599, 37592, 37609, 37591, 37597, 37580, 37615,
- 37570, 37608, 37578, 37576, 37582, 37606, 37581, 37589, 37577, 37600,
- 37598, 37607, 37585, 37587, 37557, 37601, 37574, 37556, 38268, 38316,
- 38315, 38318, 38320, 38564, 38562, 38611, 38661, 38664, 38658, 38746,
- 38794, 38798, 38792, 38864, 38863, 38942, 38941, 38950, 38953, 38952,
- 38944, 38939, 38951, 39090, 39176, 39162, 39185, 39188, 39190, 39191,
- 39189, 39388, 39373, 39375, 39379, 39380, 39374, 39369, 39382, 39384,
- 39371, 39383, 39372, 39603, 39660, 39659, 39667, 39666, 39665, 39750,
- 39747, 39783, 39796, 39793, 39782, 39798, 39797, 39792, 39784, 39780,
- 39788, 40188, 40186, 40189, 40191, 40183, 40199, 40192, 40185, 40187,
- 40200, 40197, 40196, 40579, 40659, 40719, 40720, 20764, 20755, 20759,
- 20762, 20753, 20958, 21300, 21473, 22128, 22112, 22126, 22131, 22118,
- 22115, 22125, 22130, 22110, 22135, 22300, 22299, 22728, 22717, 22729,
- 22719, 22714, 22722, 22716, 22726, 23319, 23321, 23323, 23329, 23316,
- 23315, 23312, 23318, 23336, 23322, 23328, 23326, 23535, 23980, 23985,
- 23977, 23975, 23989, 23984, 23982, 23978, 23976, 23986, 23981, 23983,
- 23988, 24167, 24168, 24166, 24175, 24297, 24295, 24294, 24296, 24293,
- 24395, 24508, 24989, 25000, 24982, 25029, 25012, 25030, 25025, 25036,
- 25018, 25023, 25016, 24972, 25815, 25814, 25808, 25807, 25801, 25789,
- 25737, 25795, 25819, 25843, 25817, 25907, 25983, 25980, 26018, 26312,
- 26302, 26304, 26314, 26315, 26319, 26301, 26299, 26298, 26316, 26403,
- 27188, 27238, 27209, 27239, 27186, 27240, 27198, 27229, 27245, 27254,
- 27227, 27217, 27176, 27226, 27195, 27199, 27201, 27242, 27236, 27216,
- 27215, 27220, 27247, 27241, 27232, 27196, 27230, 27222, 27221, 27213,
- 27214, 27206, 27477, 27476, 27478, 27559, 27562, 27563, 27592, 27591,
- 27652, 27651, 27654, 28589, 28619, 28579, 28615, 28604, 28622, 28616,
- 28510, 28612, 28605, 28574, 28618, 28584, 28676, 28581, 28590, 28602,
- 28588, 28586, 28623, 28607, 28600, 28578, 28617, 28587, 28621, 28591,
- 28594, 28592, 29125, 29122, 29119, 29112, 29142, 29120, 29121, 29131,
- 29140, 29130, 29127, 29135, 29117, 29144, 29116, 29126, 29146, 29147,
- 29341, 29342, 29545, 29542, 29543, 29548, 29541, 29547, 29546, 29823,
- 29850, 29856, 29844, 29842, 29845, 29857, 29963, 30080, 30255, 30253,
- 30257, 30269, 30259, 30268, 30261, 30258, 30256, 30395, 30438, 30618,
- 30621, 30625, 30620, 30619, 30626, 30627, 30613, 30617, 30615, 30941,
- 30953, 30949, 30954, 30942, 30947, 30939, 30945, 30946, 30957, 30943,
- 30944, 31140, 31300, 31304, 31303, 31414, 31416, 31413, 31409, 31415,
- 31710, 31715, 31719, 31709, 31701, 31717, 31706, 31720, 31737, 31700,
- 31722, 31714, 31708, 31723, 31704, 31711, 31954, 31956, 31959, 31952,
- 31953, 32274, 32289, 32279, 32268, 32287, 32288, 32275, 32270, 32284,
- 32277, 32282, 32290, 32267, 32271, 32278, 32269, 32276, 32293, 32292,
- 32579, 32635, 32636, 32634, 32689, 32751, 32810, 32809, 32876, 33201,
- 33190, 33198, 33209, 33205, 33195, 33200, 33196, 33204, 33202, 33207,
- 33191, 33266, 33365, 33366, 33367, 34134, 34117, 34155, 34125, 34131,
- 34145, 34136, 34112, 34118, 34148, 34113, 34146, 34116, 34129, 34119,
- 34147, 34110, 34139, 34161, 34126, 34158, 34165, 34133, 34151, 34144,
- 34188, 34150, 34141, 34132, 34149, 34156, 34403, 34405, 34404, 34715,
- 34703, 34711, 34707, 34706, 34696, 34689, 34710, 34712, 34681, 34695,
- 34723, 34693, 34704, 34705, 34717, 34692, 34708, 34716, 34714, 34697,
- 35102, 35110, 35120, 35117, 35118, 35111, 35121, 35106, 35113, 35107,
- 35119, 35116, 35103, 35313, 35552, 35554, 35570, 35572, 35573, 35549,
- 35604, 35556, 35551, 35568, 35528, 35550, 35553, 35560, 35583, 35567,
- 35579, 35985, 35986, 35984, 36085, 36078, 36081, 36080, 36083, 36204,
- 36206, 36261, 36263, 36403, 36414, 36408, 36416, 36421, 36406, 36412,
- 36413, 36417, 36400, 36415, 36541, 36662, 36654, 36661, 36658, 36665,
- 36663, 36660, 36982, 36985, 36987, 36998, 37114, 37171, 37173, 37174,
- 37267, 37264, 37265, 37261, 37263, 37671, 37662, 37640, 37663, 37638,
- 37647, 37754, 37688, 37692, 37659, 37667, 37650, 37633, 37702, 37677,
- 37646, 37645, 37579, 37661, 37626, 37669, 37651, 37625, 37623, 37684,
- 37634, 37668, 37631, 37673, 37689, 37685, 37674, 37652, 37644, 37643,
- 37630, 37641, 37632, 37627, 37654, 38332, 38349, 38334, 38329, 38330,
- 38326, 38335, 38325, 38333, 38569, 38612, 38667, 38674, 38672, 38809,
- 38807, 38804, 38896, 38904, 38965, 38959, 38962, 39204, 39199, 39207,
- 39209, 39326, 39406, 39404, 39397, 39396, 39408, 39395, 39402, 39401,
- 39399, 39609, 39615, 39604, 39611, 39670, 39674, 39673, 39671, 39731,
- 39808, 39813, 39815, 39804, 39806, 39803, 39810, 39827, 39826, 39824,
- 39802, 39829, 39805, 39816, 40229, 40215, 40224, 40222, 40212, 40233,
- 40221, 40216, 40226, 40208, 40217, 40223, 40584, 40582, 40583, 40622,
- 40621, 40661, 40662, 40698, 40722, 40765, 20774, 20773, 20770, 20772,
- 20768, 20777, 21236, 22163, 22156, 22157, 22150, 22148, 22147, 22142,
- 22146, 22143, 22145, 22742, 22740, 22735, 22738, 23341, 23333, 23346,
- 23331, 23340, 23335, 23334, 23343, 23342, 23419, 23537, 23538, 23991,
- 24172, 24170, 24510, 24507, 25027, 25013, 25020, 25063, 25056, 25061,
- 25060, 25064, 25054, 25839, 25833, 25827, 25835, 25828, 25832, 25985,
- 25984, 26038, 26074, 26322, 27277, 27286, 27265, 27301, 27273, 27295,
- 27291, 27297, 27294, 27271, 27283, 27278, 27285, 27267, 27304, 27300,
- 27281, 27263, 27302, 27290, 27269, 27276, 27282, 27483, 27565, 27657,
- 28620, 28585, 28660, 28628, 28643, 28636, 28653, 28647, 28646, 28638,
- 28658, 28637, 28642, 28648, 29153, 29169, 29160, 29170, 29156, 29168,
- 29154, 29555, 29550, 29551, 29847, 29874, 29867, 29840, 29866, 29869,
- 29873, 29861, 29871, 29968, 29969, 29970, 29967, 30084, 30275, 30280,
- 30281, 30279, 30372, 30441, 30645, 30635, 30642, 30647, 30646, 30644,
- 30641, 30632, 30704, 30963, 30973, 30978, 30971, 30972, 30962, 30981,
- 30969, 30974, 30980, 31147, 31144, 31324, 31323, 31318, 31320, 31316,
- 31322, 31422, 31424, 31425, 31749, 31759, 31730, 31744, 31743, 31739,
- 31758, 31732, 31755, 31731, 31746, 31753, 31747, 31745, 31736, 31741,
- 31750, 31728, 31729, 31760, 31754, 31976, 32301, 32316, 32322, 32307,
- 38984, 32312, 32298, 32329, 32320, 32327, 32297, 32332, 32304, 32315,
- 32310, 32324, 32314, 32581, 32639, 32638, 32637, 32756, 32754, 32812,
- 33211, 33220, 33228, 33226, 33221, 33223, 33212, 33257, 33371, 33370,
- 33372, 34179, 34176, 34191, 34215, 34197, 34208, 34187, 34211, 34171,
- 34212, 34202, 34206, 34167, 34172, 34185, 34209, 34170, 34168, 34135,
- 34190, 34198, 34182, 34189, 34201, 34205, 34177, 34210, 34178, 34184,
- 34181, 34169, 34166, 34200, 34192, 34207, 34408, 34750, 34730, 34733,
- 34757, 34736, 34732, 34745, 34741, 34748, 34734, 34761, 34755, 34754,
- 34764, 34743, 34735, 34756, 34762, 34740, 34742, 34751, 34744, 34749,
- 34782, 34738, 35125, 35123, 35132, 35134, 35137, 35154, 35127, 35138,
- 35245, 35247, 35246, 35314, 35315, 35614, 35608, 35606, 35601, 35589,
- 35595, 35618, 35599, 35602, 35605, 35591, 35597, 35592, 35590, 35612,
- 35603, 35610, 35919, 35952, 35954, 35953, 35951, 35989, 35988, 36089,
- 36207, 36430, 36429, 36435, 36432, 36428, 36423, 36675, 36672, 36997,
- 36990, 37176, 37274, 37282, 37275, 37273, 37279, 37281, 37277, 37280,
- 37793, 37763, 37807, 37732, 37718, 37703, 37756, 37720, 37724, 37750,
- 37705, 37712, 37713, 37728, 37741, 37775, 37708, 37738, 37753, 37719,
- 37717, 37714, 37711, 37745, 37751, 37755, 37729, 37726, 37731, 37735,
- 37760, 37710, 37721, 38343, 38336, 38345, 38339, 38341, 38327, 38574,
- 38576, 38572, 38688, 38687, 38680, 38685, 38681, 38810, 38817, 38812,
- 38814, 38813, 38869, 38868, 38897, 38977, 38980, 38986, 38985, 38981,
- 38979, 39205, 39211, 39212, 39210, 39219, 39218, 39215, 39213, 39217,
- 39216, 39320, 39331, 39329, 39426, 39418, 39412, 39415, 39417, 39416,
- 39414, 39419, 39421, 39422, 39420, 39427, 39614, 39678, 39677, 39681,
- 39676, 39752, 39834, 39848, 39838, 39835, 39846, 39841, 39845, 39844,
- 39814, 39842, 39840, 39855, 40243, 40257, 40295, 40246, 40238, 40239,
- 40241, 40248, 40240, 40261, 40258, 40259, 40254, 40247, 40256, 40253,
- 32757, 40237, 40586, 40585, 40589, 40624, 40648, 40666, 40699, 40703,
- 40740, 40739, 40738, 40788, 40864, 20785, 20781, 20782, 22168, 22172,
- 22167, 22170, 22173, 22169, 22896, 23356, 23657, 23658, 24000, 24173,
- 24174, 25048, 25055, 25069, 25070, 25073, 25066, 25072, 25067, 25046,
- 25065, 25855, 25860, 25853, 25848, 25857, 25859, 25852, 26004, 26075,
- 26330, 26331, 26328, 27333, 27321, 27325, 27361, 27334, 27322, 27318,
- 27319, 27335, 27316, 27309, 27486, 27593, 27659, 28679, 28684, 28685,
- 28673, 28677, 28692, 28686, 28671, 28672, 28667, 28710, 28668, 28663,
- 28682, 29185, 29183, 29177, 29187, 29181, 29558, 29880, 29888, 29877,
- 29889, 29886, 29878, 29883, 29890, 29972, 29971, 30300, 30308, 30297,
- 30288, 30291, 30295, 30298, 30374, 30397, 30444, 30658, 30650, 30975,
- 30988, 30995, 30996, 30985, 30992, 30994, 30993, 31149, 31148, 31327,
- 31772, 31785, 31769, 31776, 31775, 31789, 31773, 31782, 31784, 31778,
- 31781, 31792, 32348, 32336, 32342, 32355, 32344, 32354, 32351, 32337,
- 32352, 32343, 32339, 32693, 32691, 32759, 32760, 32885, 33233, 33234,
- 33232, 33375, 33374, 34228, 34246, 34240, 34243, 34242, 34227, 34229,
- 34237, 34247, 34244, 34239, 34251, 34254, 34248, 34245, 34225, 34230,
- 34258, 34340, 34232, 34231, 34238, 34409, 34791, 34790, 34786, 34779,
- 34795, 34794, 34789, 34783, 34803, 34788, 34772, 34780, 34771, 34797,
- 34776, 34787, 34724, 34775, 34777, 34817, 34804, 34792, 34781, 35155,
- 35147, 35151, 35148, 35142, 35152, 35153, 35145, 35626, 35623, 35619,
- 35635, 35632, 35637, 35655, 35631, 35644, 35646, 35633, 35621, 35639,
- 35622, 35638, 35630, 35620, 35643, 35645, 35642, 35906, 35957, 35993,
- 35992, 35991, 36094, 36100, 36098, 36096, 36444, 36450, 36448, 36439,
- 36438, 36446, 36453, 36455, 36443, 36442, 36449, 36445, 36457, 36436,
- 36678, 36679, 36680, 36683, 37160, 37178, 37179, 37182, 37288, 37285,
- 37287, 37295, 37290, 37813, 37772, 37778, 37815, 37787, 37789, 37769,
- 37799, 37774, 37802, 37790, 37798, 37781, 37768, 37785, 37791, 37773,
- 37809, 37777, 37810, 37796, 37800, 37812, 37795, 37797, 38354, 38355,
- 38353, 38579, 38615, 38618, 24002, 38623, 38616, 38621, 38691, 38690,
- 38693, 38828, 38830, 38824, 38827, 38820, 38826, 38818, 38821, 38871,
- 38873, 38870, 38872, 38906, 38992, 38993, 38994, 39096, 39233, 39228,
- 39226, 39439, 39435, 39433, 39437, 39428, 39441, 39434, 39429, 39431,
- 39430, 39616, 39644, 39688, 39684, 39685, 39721, 39733, 39754, 39756,
- 39755, 39879, 39878, 39875, 39871, 39873, 39861, 39864, 39891, 39862,
- 39876, 39865, 39869, 40284, 40275, 40271, 40266, 40283, 40267, 40281,
- 40278, 40268, 40279, 40274, 40276, 40287, 40280, 40282, 40590, 40588,
- 40671, 40705, 40704, 40726, 40741, 40747, 40746, 40745, 40744, 40780,
- 40789, 20788, 20789, 21142, 21239, 21428, 22187, 22189, 22182, 22183,
- 22186, 22188, 22746, 22749, 22747, 22802, 23357, 23358, 23359, 24003,
- 24176, 24511, 25083, 25863, 25872, 25869, 25865, 25868, 25870, 25988,
- 26078, 26077, 26334, 27367, 27360, 27340, 27345, 27353, 27339, 27359,
- 27356, 27344, 27371, 27343, 27341, 27358, 27488, 27568, 27660, 28697,
- 28711, 28704, 28694, 28715, 28705, 28706, 28707, 28713, 28695, 28708,
- 28700, 28714, 29196, 29194, 29191, 29186, 29189, 29349, 29350, 29348,
- 29347, 29345, 29899, 29893, 29879, 29891, 29974, 30304, 30665, 30666,
- 30660, 30705, 31005, 31003, 31009, 31004, 30999, 31006, 31152, 31335,
- 31336, 31795, 31804, 31801, 31788, 31803, 31980, 31978, 32374, 32373,
- 32376, 32368, 32375, 32367, 32378, 32370, 32372, 32360, 32587, 32586,
- 32643, 32646, 32695, 32765, 32766, 32888, 33239, 33237, 33380, 33377,
- 33379, 34283, 34289, 34285, 34265, 34273, 34280, 34266, 34263, 34284,
- 34290, 34296, 34264, 34271, 34275, 34268, 34257, 34288, 34278, 34287,
- 34270, 34274, 34816, 34810, 34819, 34806, 34807, 34825, 34828, 34827,
- 34822, 34812, 34824, 34815, 34826, 34818, 35170, 35162, 35163, 35159,
- 35169, 35164, 35160, 35165, 35161, 35208, 35255, 35254, 35318, 35664,
- 35656, 35658, 35648, 35667, 35670, 35668, 35659, 35669, 35665, 35650,
- 35666, 35671, 35907, 35959, 35958, 35994, 36102, 36103, 36105, 36268,
- 36266, 36269, 36267, 36461, 36472, 36467, 36458, 36463, 36475, 36546,
- 36690, 36689, 36687, 36688, 36691, 36788, 37184, 37183, 37296, 37293,
- 37854, 37831, 37839, 37826, 37850, 37840, 37881, 37868, 37836, 37849,
- 37801, 37862, 37834, 37844, 37870, 37859, 37845, 37828, 37838, 37824,
- 37842, 37863, 38269, 38362, 38363, 38625, 38697, 38699, 38700, 38696,
- 38694, 38835, 38839, 38838, 38877, 38878, 38879, 39004, 39001, 39005,
- 38999, 39103, 39101, 39099, 39102, 39240, 39239, 39235, 39334, 39335,
- 39450, 39445, 39461, 39453, 39460, 39451, 39458, 39456, 39463, 39459,
- 39454, 39452, 39444, 39618, 39691, 39690, 39694, 39692, 39735, 39914,
- 39915, 39904, 39902, 39908, 39910, 39906, 39920, 39892, 39895, 39916,
- 39900, 39897, 39909, 39893, 39905, 39898, 40311, 40321, 40330, 40324,
- 40328, 40305, 40320, 40312, 40326, 40331, 40332, 40317, 40299, 40308,
- 40309, 40304, 40297, 40325, 40307, 40315, 40322, 40303, 40313, 40319,
- 40327, 40296, 40596, 40593, 40640, 40700, 40749, 40768, 40769, 40781,
- 40790, 40791, 40792, 21303, 22194, 22197, 22195, 22755, 23365, 24006,
- 24007, 24302, 24303, 24512, 24513, 25081, 25879, 25878, 25877, 25875,
- 26079, 26344, 26339, 26340, 27379, 27376, 27370, 27368, 27385, 27377,
- 27374, 27375, 28732, 28725, 28719, 28727, 28724, 28721, 28738, 28728,
- 28735, 28730, 28729, 28736, 28731, 28723, 28737, 29203, 29204, 29352,
- 29565, 29564, 29882, 30379, 30378, 30398, 30445, 30668, 30670, 30671,
- 30669, 30706, 31013, 31011, 31015, 31016, 31012, 31017, 31154, 31342,
- 31340, 31341, 31479, 31817, 31816, 31818, 31815, 31813, 31982, 32379,
- 32382, 32385, 32384, 32698, 32767, 32889, 33243, 33241, 33291, 33384,
- 33385, 34338, 34303, 34305, 34302, 34331, 34304, 34294, 34308, 34313,
- 34309, 34316, 34301, 34841, 34832, 34833, 34839, 34835, 34838, 35171,
- 35174, 35257, 35319, 35680, 35690, 35677, 35688, 35683, 35685, 35687,
- 35693, 36270, 36486, 36488, 36484, 36697, 36694, 36695, 36693, 36696,
- 36698, 37005, 37187, 37185, 37303, 37301, 37298, 37299, 37899, 37907,
- 37883, 37920, 37903, 37908, 37886, 37909, 37904, 37928, 37913, 37901,
- 37877, 37888, 37879, 37895, 37902, 37910, 37906, 37882, 37897, 37880,
- 37898, 37887, 37884, 37900, 37878, 37905, 37894, 38366, 38368, 38367,
- 38702, 38703, 38841, 38843, 38909, 38910, 39008, 39010, 39011, 39007,
- 39105, 39106, 39248, 39246, 39257, 39244, 39243, 39251, 39474, 39476,
- 39473, 39468, 39466, 39478, 39465, 39470, 39480, 39469, 39623, 39626,
- 39622, 39696, 39698, 39697, 39947, 39944, 39927, 39941, 39954, 39928,
- 40000, 39943, 39950, 39942, 39959, 39956, 39945, 40351, 40345, 40356,
- 40349, 40338, 40344, 40336, 40347, 40352, 40340, 40348, 40362, 40343,
- 40353, 40346, 40354, 40360, 40350, 40355, 40383, 40361, 40342, 40358,
- 40359, 40601, 40603, 40602, 40677, 40676, 40679, 40678, 40752, 40750,
- 40795, 40800, 40798, 40797, 40793, 40849, 20794, 20793, 21144, 21143,
- 22211, 22205, 22206, 23368, 23367, 24011, 24015, 24305, 25085, 25883,
- 27394, 27388, 27395, 27384, 27392, 28739, 28740, 28746, 28744, 28745,
- 28741, 28742, 29213, 29210, 29209, 29566, 29975, 30314, 30672, 31021,
- 31025, 31023, 31828, 31827, 31986, 32394, 32391, 32392, 32395, 32390,
- 32397, 32589, 32699, 32816, 33245, 34328, 34346, 34342, 34335, 34339,
- 34332, 34329, 34343, 34350, 34337, 34336, 34345, 34334, 34341, 34857,
- 34845, 34843, 34848, 34852, 34844, 34859, 34890, 35181, 35177, 35182,
- 35179, 35322, 35705, 35704, 35653, 35706, 35707, 36112, 36116, 36271,
- 36494, 36492, 36702, 36699, 36701, 37190, 37188, 37189, 37305, 37951,
- 37947, 37942, 37929, 37949, 37948, 37936, 37945, 37930, 37943, 37932,
- 37952, 37937, 38373, 38372, 38371, 38709, 38714, 38847, 38881, 39012,
- 39113, 39110, 39104, 39256, 39254, 39481, 39485, 39494, 39492, 39490,
- 39489, 39482, 39487, 39629, 39701, 39703, 39704, 39702, 39738, 39762,
- 39979, 39965, 39964, 39980, 39971, 39976, 39977, 39972, 39969, 40375,
- 40374, 40380, 40385, 40391, 40394, 40399, 40382, 40389, 40387, 40379,
- 40373, 40398, 40377, 40378, 40364, 40392, 40369, 40365, 40396, 40371,
- 40397, 40370, 40570, 40604, 40683, 40686, 40685, 40731, 40728, 40730,
- 40753, 40782, 40805, 40804, 40850, 20153, 22214, 22213, 22219, 22897,
- 23371, 23372, 24021, 24017, 24306, 25889, 25888, 25894, 25890, 27403,
- 27400, 27401, 27661, 28757, 28758, 28759, 28754, 29214, 29215, 29353,
- 29567, 29912, 29909, 29913, 29911, 30317, 30381, 31029, 31156, 31344,
- 31345, 31831, 31836, 31833, 31835, 31834, 31988, 31985, 32401, 32591,
- 32647, 33246, 33387, 34356, 34357, 34355, 34348, 34354, 34358, 34860,
- 34856, 34854, 34858, 34853, 35185, 35263, 35262, 35323, 35710, 35716,
- 35714, 35718, 35717, 35711, 36117, 36501, 36500, 36506, 36498, 36496,
- 36502, 36503, 36704, 36706, 37191, 37964, 37968, 37962, 37963, 37967,
- 37959, 37957, 37960, 37961, 37958, 38719, 38883, 39018, 39017, 39115,
- 39252, 39259, 39502, 39507, 39508, 39500, 39503, 39496, 39498, 39497,
- 39506, 39504, 39632, 39705, 39723, 39739, 39766, 39765, 40006, 40008,
- 39999, 40004, 39993, 39987, 40001, 39996, 39991, 39988, 39986, 39997,
- 39990, 40411, 40402, 40414, 40410, 40395, 40400, 40412, 40401, 40415,
- 40425, 40409, 40408, 40406, 40437, 40405, 40413, 40630, 40688, 40757,
- 40755, 40754, 40770, 40811, 40853, 40866, 20797, 21145, 22760, 22759,
- 22898, 23373, 24024, 34863, 24399, 25089, 25091, 25092, 25897, 25893,
- 26006, 26347, 27409, 27410, 27407, 27594, 28763, 28762, 29218, 29570,
- 29569, 29571, 30320, 30676, 31847, 31846, 32405, 33388, 34362, 34368,
- 34361, 34364, 34353, 34363, 34366, 34864, 34866, 34862, 34867, 35190,
- 35188, 35187, 35326, 35724, 35726, 35723, 35720, 35909, 36121, 36504,
- 36708, 36707, 37308, 37986, 37973, 37981, 37975, 37982, 38852, 38853,
- 38912, 39510, 39513, 39710, 39711, 39712, 40018, 40024, 40016, 40010,
- 40013, 40011, 40021, 40025, 40012, 40014, 40443, 40439, 40431, 40419,
- 40427, 40440, 40420, 40438, 40417, 40430, 40422, 40434, 40432, 40418,
- 40428, 40436, 40435, 40424, 40429, 40642, 40656, 40690, 40691, 40710,
- 40732, 40760, 40759, 40758, 40771, 40783, 40817, 40816, 40814, 40815,
- 22227, 22221, 23374, 23661, 25901, 26349, 26350, 27411, 28767, 28769,
- 28765, 28768, 29219, 29915, 29925, 30677, 31032, 31159, 31158, 31850,
- 32407, 32649, 33389, 34371, 34872, 34871, 34869, 34891, 35732, 35733,
- 36510, 36511, 36512, 36509, 37310, 37309, 37314, 37995, 37992, 37993,
- 38629, 38726, 38723, 38727, 38855, 38885, 39518, 39637, 39769, 40035,
- 40039, 40038, 40034, 40030, 40032, 40450, 40446, 40455, 40451, 40454,
- 40453, 40448, 40449, 40457, 40447, 40445, 40452, 40608, 40734, 40774,
- 40820, 40821, 40822, 22228, 25902, 26040, 27416, 27417, 27415, 27418,
- 28770, 29222, 29354, 30680, 30681, 31033, 31849, 31851, 31990, 32410,
- 32408, 32411, 32409, 33248, 33249, 34374, 34375, 34376, 35193, 35194,
- 35196, 35195, 35327, 35736, 35737, 36517, 36516, 36515, 37998, 37997,
- 37999, 38001, 38003, 38729, 39026, 39263, 40040, 40046, 40045, 40459,
- 40461, 40464, 40463, 40466, 40465, 40609, 40693, 40713, 40775, 40824,
- 40827, 40826, 40825, 22302, 28774, 31855, 34876, 36274, 36518, 37315,
- 38004, 38008, 38006, 38005, 39520, 40052, 40051, 40049, 40053, 40468,
- 40467, 40694, 40714, 40868, 28776, 28773, 31991, 34410, 34878, 34877,
- 34879, 35742, 35996, 36521, 36553, 38731, 39027, 39028, 39116, 39265,
- 39339, 39524, 39526, 39527, 39716, 40469, 40471, 40776, 25095, 27422,
- 29223, 34380, 36520, 38018, 38016, 38017, 39529, 39528, 39726, 40473,
- 29225, 34379, 35743, 38019, 40057, 40631, 30325, 39531, 40058, 40477,
- 28777, 28778, 40612, 40830, 40777, 40856, 30849, 37561, 35023, 22715,
- 24658, 31911, 23290, 9556, 9574, 9559, 9568, 9580, 9571, 9562,
- 9577, 9565, 9554, 9572, 9557, 9566, 9578, 9569, 9560, 9575,
- 9563, 9555, 9573, 9558, 9567, 9579, 9570, 9561, 9576, 9564,
- 9553, 9552, 9581, 9582, 9584, 9583, 65517, 132423, 37595, 132575,
- 147397, 34124, 17077, 29679, 20917, 13897, 149826, 166372, 37700, 137691,
- 33518, 146632, 30780, 26436, 25311, 149811, 166314, 131744, 158643, 135941,
- 20395, 140525, 20488, 159017, 162436, 144896, 150193, 140563, 20521, 131966,
- 24484, 131968, 131911, 28379, 132127, 20605, 20737, 13434, 20750, 39020,
- 14147, 33814, 149924, 132231, 20832, 144308, 20842, 134143, 139516, 131813,
- 140592, 132494, 143923, 137603, 23426, 34685, 132531, 146585, 20914, 20920,
- 40244, 20937, 20943, 20945, 15580, 20947, 150182, 20915, 20962, 21314,
- 20973, 33741, 26942, 145197, 24443, 21003, 21030, 21052, 21173, 21079,
- 21140, 21177, 21189, 31765, 34114, 21216, 34317, 158483, 21253, 166622,
- 21833, 28377, 147328, 133460, 147436, 21299, 21316, 134114, 27851, 136998,
- 26651, 29653, 24650, 16042, 14540, 136936, 29149, 17570, 21357, 21364,
- 165547, 21374, 21375, 136598, 136723, 30694, 21395, 166555, 21408, 21419,
- 21422, 29607, 153458, 16217, 29596, 21441, 21445, 27721, 20041, 22526,
- 21465, 15019, 134031, 21472, 147435, 142755, 21494, 134263, 21523, 28793,
- 21803, 26199, 27995, 21613, 158547, 134516, 21853, 21647, 21668, 18342,
- 136973, 134877, 15796, 134477, 166332, 140952, 21831, 19693, 21551, 29719,
- 21894, 21929, 22021, 137431, 147514, 17746, 148533, 26291, 135348, 22071,
- 26317, 144010, 26276, 26285, 22093, 22095, 30961, 22257, 38791, 21502,
- 22272, 22255, 22253, 166758, 13859, 135759, 22342, 147877, 27758, 28811,
- 22338, 14001, 158846, 22502, 136214, 22531, 136276, 148323, 22566, 150517,
- 22620, 22698, 13665, 22752, 22748, 135740, 22779, 23551, 22339, 172368,
- 148088, 37843, 13729, 22815, 26790, 14019, 28249, 136766, 23076, 21843,
- 136850, 34053, 22985, 134478, 158849, 159018, 137180, 23001, 137211, 137138,
- 159142, 28017, 137256, 136917, 23033, 159301, 23211, 23139, 14054, 149929,
- 23159, 14088, 23190, 29797, 23251, 159649, 140628, 15749, 137489, 14130,
- 136888, 24195, 21200, 23414, 25992, 23420, 162318, 16388, 18525, 131588,
- 23509, 24928, 137780, 154060, 132517, 23539, 23453, 19728, 23557, 138052,
- 23571, 29646, 23572, 138405, 158504, 23625, 18653, 23685, 23785, 23791,
- 23947, 138745, 138807, 23824, 23832, 23878, 138916, 23738, 24023, 33532,
- 14381, 149761, 139337, 139635, 33415, 14390, 15298, 24110, 27274, 24181,
- 24186, 148668, 134355, 21414, 20151, 24272, 21416, 137073, 24073, 24308,
- 164994, 24313, 24315, 14496, 24316, 26686, 37915, 24333, 131521, 194708,
- 15070, 18606, 135994, 24378, 157832, 140240, 24408, 140401, 24419, 38845,
- 159342, 24434, 37696, 166454, 24487, 23990, 15711, 152144, 139114, 159992,
- 140904, 37334, 131742, 166441, 24625, 26245, 137335, 14691, 15815, 13881,
- 22416, 141236, 31089, 15936, 24734, 24740, 24755, 149890, 149903, 162387,
- 29860, 20705, 23200, 24932, 33828, 24898, 194726, 159442, 24961, 20980,
- 132694, 24967, 23466, 147383, 141407, 25043, 166813, 170333, 25040, 14642,
- 141696, 141505, 24611, 24924, 25886, 25483, 131352, 25285, 137072, 25301,
- 142861, 25452, 149983, 14871, 25656, 25592, 136078, 137212, 25744, 28554,
- 142902, 38932, 147596, 153373, 25825, 25829, 38011, 14950, 25658, 14935,
- 25933, 28438, 150056, 150051, 25989, 25965, 25951, 143486, 26037, 149824,
- 19255, 26065, 16600, 137257, 26080, 26083, 24543, 144384, 26136, 143863,
- 143864, 26180, 143780, 143781, 26187, 134773, 26215, 152038, 26227, 26228,
- 138813, 143921, 165364, 143816, 152339, 30661, 141559, 39332, 26370, 148380,
- 150049, 15147, 27130, 145346, 26462, 26471, 26466, 147917, 168173, 26583,
- 17641, 26658, 28240, 37436, 26625, 144358, 159136, 26717, 144495, 27105,
- 27147, 166623, 26995, 26819, 144845, 26881, 26880, 15666, 14849, 144956,
- 15232, 26540, 26977, 166474, 17148, 26934, 27032, 15265, 132041, 33635,
- 20624, 27129, 144985, 139562, 27205, 145155, 27293, 15347, 26545, 27336,
- 168348, 15373, 27421, 133411, 24798, 27445, 27508, 141261, 28341, 146139,
- 132021, 137560, 14144, 21537, 146266, 27617, 147196, 27612, 27703, 140427,
- 149745, 158545, 27738, 33318, 27769, 146876, 17605, 146877, 147876, 149772,
- 149760, 146633, 14053, 15595, 134450, 39811, 143865, 140433, 32655, 26679,
- 159013, 159137, 159211, 28054, 27996, 28284, 28420, 149887, 147589, 159346,
- 34099, 159604, 20935, 27804, 28189, 33838, 166689, 28207, 146991, 29779,
- 147330, 31180, 28239, 23185, 143435, 28664, 14093, 28573, 146992, 28410,
- 136343, 147517, 17749, 37872, 28484, 28508, 15694, 28532, 168304, 15675,
- 28575, 147780, 28627, 147601, 147797, 147513, 147440, 147380, 147775, 20959,
- 147798, 147799, 147776, 156125, 28747, 28798, 28839, 28801, 28876, 28885,
- 28886, 28895, 16644, 15848, 29108, 29078, 148087, 28971, 28997, 23176,
- 29002, 29038, 23708, 148325, 29007, 37730, 148161, 28972, 148570, 150055,
- 150050, 29114, 166888, 28861, 29198, 37954, 29205, 22801, 37955, 29220,
- 37697, 153093, 29230, 29248, 149876, 26813, 29269, 29271, 15957, 143428,
- 26637, 28477, 29314, 29482, 29483, 149539, 165931, 18669, 165892, 29480,
- 29486, 29647, 29610, 134202, 158254, 29641, 29769, 147938, 136935, 150052,
- 26147, 14021, 149943, 149901, 150011, 29687, 29717, 26883, 150054, 29753,
- 132547, 16087, 29788, 141485, 29792, 167602, 29767, 29668, 29814, 33721,
- 29804, 14128, 29812, 37873, 27180, 29826, 18771, 150156, 147807, 150137,
- 166799, 23366, 166915, 137374, 29896, 137608, 29966, 29929, 29982, 167641,
- 137803, 23511, 167596, 37765, 30029, 30026, 30055, 30062, 151426, 16132,
- 150803, 30094, 29789, 30110, 30132, 30210, 30252, 30289, 30287, 30319,
- 30326, 156661, 30352, 33263, 14328, 157969, 157966, 30369, 30373, 30391,
- 30412, 159647, 33890, 151709, 151933, 138780, 30494, 30502, 30528, 25775,
- 152096, 30552, 144044, 30639, 166244, 166248, 136897, 30708, 30729, 136054,
- 150034, 26826, 30895, 30919, 30931, 38565, 31022, 153056, 30935, 31028,
- 30897, 161292, 36792, 34948, 166699, 155779, 140828, 31110, 35072, 26882,
- 31104, 153687, 31133, 162617, 31036, 31145, 28202, 160038, 16040, 31174,
- 168205, 31188,
-};
-
-static const unsigned long myhtml_encoding_map_euc_kr[] = {
- 44034, 44035, 44037, 44038, 44043, 44044, 44045, 44046, 44047, 44056,
- 44062, 44063, 44065, 44066, 44067, 44069, 44070, 44071, 44072, 44073,
- 44074, 44075, 44078, 44082, 44083, 44084, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 44085, 44086, 44087, 44090, 44091, 44093, 44094, 44095,
- 44097, 44098, 44099, 44100, 44101, 44102, 44103, 44104, 44105, 44106,
- 44108, 44110, 44111, 44112, 44113, 44114, 44115, 44117, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 44118, 44119, 44121, 44122, 44123, 44125,
- 44126, 44127, 44128, 44129, 44130, 44131, 44132, 44133, 44134, 44135,
- 44136, 44137, 44138, 44139, 44140, 44141, 44142, 44143, 44146, 44147,
- 44149, 44150, 44153, 44155, 44156, 44157, 44158, 44159, 44162, 44167,
- 44168, 44173, 44174, 44175, 44177, 44178, 44179, 44181, 44182, 44183,
- 44184, 44185, 44186, 44187, 44190, 44194, 44195, 44196, 44197, 44198,
- 44199, 44203, 44205, 44206, 44209, 44210, 44211, 44212, 44213, 44214,
- 44215, 44218, 44222, 44223, 44224, 44226, 44227, 44229, 44230, 44231,
- 44233, 44234, 44235, 44237, 44238, 44239, 44240, 44241, 44242, 44243,
- 44244, 44246, 44248, 44249, 44250, 44251, 44252, 44253, 44254, 44255,
- 44258, 44259, 44261, 44262, 44265, 44267, 44269, 44270, 44274, 44276,
- 44279, 44280, 44281, 44282, 44283, 44286, 44287, 44289, 44290, 44291,
- 44293, 44295, 44296, 44297, 44298, 44299, 44302, 44304, 44306, 44307,
- 44308, 44309, 44310, 44311, 44313, 44314, 44315, 44317, 44318, 44319,
- 44321, 44322, 44323, 44324, 44325, 44326, 44327, 44328, 44330, 44331,
- 44334, 44335, 44336, 44337, 44338, 44339, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 44342, 44343, 44345, 44346, 44347, 44349, 44350, 44351,
- 44352, 44353, 44354, 44355, 44358, 44360, 44362, 44363, 44364, 44365,
- 44366, 44367, 44369, 44370, 44371, 44373, 44374, 44375, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 44377, 44378, 44379, 44380, 44381, 44382,
- 44383, 44384, 44386, 44388, 44389, 44390, 44391, 44392, 44393, 44394,
- 44395, 44398, 44399, 44401, 44402, 44407, 44408, 44409, 44410, 44414,
- 44416, 44419, 44420, 44421, 44422, 44423, 44426, 44427, 44429, 44430,
- 44431, 44433, 44434, 44435, 44436, 44437, 44438, 44439, 44440, 44441,
- 44442, 44443, 44446, 44447, 44448, 44449, 44450, 44451, 44453, 44454,
- 44455, 44456, 44457, 44458, 44459, 44460, 44461, 44462, 44463, 44464,
- 44465, 44466, 44467, 44468, 44469, 44470, 44472, 44473, 44474, 44475,
- 44476, 44477, 44478, 44479, 44482, 44483, 44485, 44486, 44487, 44489,
- 44490, 44491, 44492, 44493, 44494, 44495, 44498, 44500, 44501, 44502,
- 44503, 44504, 44505, 44506, 44507, 44509, 44510, 44511, 44513, 44514,
- 44515, 44517, 44518, 44519, 44520, 44521, 44522, 44523, 44524, 44525,
- 44526, 44527, 44528, 44529, 44530, 44531, 44532, 44533, 44534, 44535,
- 44538, 44539, 44541, 44542, 44546, 44547, 44548, 44549, 44550, 44551,
- 44554, 44556, 44558, 44559, 44560, 44561, 44562, 44563, 44565, 44566,
- 44567, 44568, 44569, 44570, 44571, 44572, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 44573, 44574, 44575, 44576, 44577, 44578, 44579, 44580,
- 44581, 44582, 44583, 44584, 44585, 44586, 44587, 44588, 44589, 44590,
- 44591, 44594, 44595, 44597, 44598, 44601, 44603, 44604, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 44605, 44606, 44607, 44610, 44612, 44615,
- 44616, 44617, 44619, 44623, 44625, 44626, 44627, 44629, 44631, 44632,
- 44633, 44634, 44635, 44638, 44642, 44643, 44644, 44646, 44647, 44650,
- 44651, 44653, 44654, 44655, 44657, 44658, 44659, 44660, 44661, 44662,
- 44663, 44666, 44670, 44671, 44672, 44673, 44674, 44675, 44678, 44679,
- 44680, 44681, 44682, 44683, 44685, 44686, 44687, 44688, 44689, 44690,
- 44691, 44692, 44693, 44694, 44695, 44696, 44697, 44698, 44699, 44700,
- 44701, 44702, 44703, 44704, 44705, 44706, 44707, 44708, 44709, 44710,
- 44711, 44712, 44713, 44714, 44715, 44716, 44717, 44718, 44719, 44720,
- 44721, 44722, 44723, 44724, 44725, 44726, 44727, 44728, 44729, 44730,
- 44731, 44735, 44737, 44738, 44739, 44741, 44742, 44743, 44744, 44745,
- 44746, 44747, 44750, 44754, 44755, 44756, 44757, 44758, 44759, 44762,
- 44763, 44765, 44766, 44767, 44768, 44769, 44770, 44771, 44772, 44773,
- 44774, 44775, 44777, 44778, 44780, 44782, 44783, 44784, 44785, 44786,
- 44787, 44789, 44790, 44791, 44793, 44794, 44795, 44797, 44798, 44799,
- 44800, 44801, 44802, 44803, 44804, 44805, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 44806, 44809, 44810, 44811, 44812, 44814, 44815, 44817,
- 44818, 44819, 44820, 44821, 44822, 44823, 44824, 44825, 44826, 44827,
- 44828, 44829, 44830, 44831, 44832, 44833, 44834, 44835, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 44836, 44837, 44838, 44839, 44840, 44841,
- 44842, 44843, 44846, 44847, 44849, 44851, 44853, 44854, 44855, 44856,
- 44857, 44858, 44859, 44862, 44864, 44868, 44869, 44870, 44871, 44874,
- 44875, 44876, 44877, 44878, 44879, 44881, 44882, 44883, 44884, 44885,
- 44886, 44887, 44888, 44889, 44890, 44891, 44894, 44895, 44896, 44897,
- 44898, 44899, 44902, 44903, 44904, 44905, 44906, 44907, 44908, 44909,
- 44910, 44911, 44912, 44913, 44914, 44915, 44916, 44917, 44918, 44919,
- 44920, 44922, 44923, 44924, 44925, 44926, 44927, 44929, 44930, 44931,
- 44933, 44934, 44935, 44937, 44938, 44939, 44940, 44941, 44942, 44943,
- 44946, 44947, 44948, 44950, 44951, 44952, 44953, 44954, 44955, 44957,
- 44958, 44959, 44960, 44961, 44962, 44963, 44964, 44965, 44966, 44967,
- 44968, 44969, 44970, 44971, 44972, 44973, 44974, 44975, 44976, 44977,
- 44978, 44979, 44980, 44981, 44982, 44983, 44986, 44987, 44989, 44990,
- 44991, 44993, 44994, 44995, 44996, 44997, 44998, 45002, 45004, 45007,
- 45008, 45009, 45010, 45011, 45013, 45014, 45015, 45016, 45017, 45018,
- 45019, 45021, 45022, 45023, 45024, 45025, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 45026, 45027, 45028, 45029, 45030, 45031, 45034, 45035,
- 45036, 45037, 45038, 45039, 45042, 45043, 45045, 45046, 45047, 45049,
- 45050, 45051, 45052, 45053, 45054, 45055, 45058, 45059, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 45061, 45062, 45063, 45064, 45065, 45066,
- 45067, 45069, 45070, 45071, 45073, 45074, 45075, 45077, 45078, 45079,
- 45080, 45081, 45082, 45083, 45086, 45087, 45088, 45089, 45090, 45091,
- 45092, 45093, 45094, 45095, 45097, 45098, 45099, 45100, 45101, 45102,
- 45103, 45104, 45105, 45106, 45107, 45108, 45109, 45110, 45111, 45112,
- 45113, 45114, 45115, 45116, 45117, 45118, 45119, 45120, 45121, 45122,
- 45123, 45126, 45127, 45129, 45131, 45133, 45135, 45136, 45137, 45138,
- 45142, 45144, 45146, 45147, 45148, 45150, 45151, 45152, 45153, 45154,
- 45155, 45156, 45157, 45158, 45159, 45160, 45161, 45162, 45163, 45164,
- 45165, 45166, 45167, 45168, 45169, 45170, 45171, 45172, 45173, 45174,
- 45175, 45176, 45177, 45178, 45179, 45182, 45183, 45185, 45186, 45187,
- 45189, 45190, 45191, 45192, 45193, 45194, 45195, 45198, 45200, 45202,
- 45203, 45204, 45205, 45206, 45207, 45211, 45213, 45214, 45219, 45220,
- 45221, 45222, 45223, 45226, 45232, 45234, 45238, 45239, 45241, 45242,
- 45243, 45245, 45246, 45247, 45248, 45249, 45250, 45251, 45254, 45258,
- 45259, 45260, 45261, 45262, 45263, 45266, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 45267, 45269, 45270, 45271, 45273, 45274, 45275, 45276,
- 45277, 45278, 45279, 45281, 45282, 45283, 45284, 45286, 45287, 45288,
- 45289, 45290, 45291, 45292, 45293, 45294, 45295, 45296, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 45297, 45298, 45299, 45300, 45301, 45302,
- 45303, 45304, 45305, 45306, 45307, 45308, 45309, 45310, 45311, 45312,
- 45313, 45314, 45315, 45316, 45317, 45318, 45319, 45322, 45325, 45326,
- 45327, 45329, 45332, 45333, 45334, 45335, 45338, 45342, 45343, 45344,
- 45345, 45346, 45350, 45351, 45353, 45354, 45355, 45357, 45358, 45359,
- 45360, 45361, 45362, 45363, 45366, 45370, 45371, 45372, 45373, 45374,
- 45375, 45378, 45379, 45381, 45382, 45383, 45385, 45386, 45387, 45388,
- 45389, 45390, 45391, 45394, 45395, 45398, 45399, 45401, 45402, 45403,
- 45405, 45406, 45407, 45409, 45410, 45411, 45412, 45413, 45414, 45415,
- 45416, 45417, 45418, 45419, 45420, 45421, 45422, 45423, 45424, 45425,
- 45426, 45427, 45428, 45429, 45430, 45431, 45434, 45435, 45437, 45438,
- 45439, 45441, 45443, 45444, 45445, 45446, 45447, 45450, 45452, 45454,
- 45455, 45456, 45457, 45461, 45462, 45463, 45465, 45466, 45467, 45469,
- 45470, 45471, 45472, 45473, 45474, 45475, 45476, 45477, 45478, 45479,
- 45481, 45482, 45483, 45484, 45485, 45486, 45487, 45488, 45489, 45490,
- 45491, 45492, 45493, 45494, 45495, 45496, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 45497, 45498, 45499, 45500, 45501, 45502, 45503, 45504,
- 45505, 45506, 45507, 45508, 45509, 45510, 45511, 45512, 45513, 45514,
- 45515, 45517, 45518, 45519, 45521, 45522, 45523, 45525, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 45526, 45527, 45528, 45529, 45530, 45531,
- 45534, 45536, 45537, 45538, 45539, 45540, 45541, 45542, 45543, 45546,
- 45547, 45549, 45550, 45551, 45553, 45554, 45555, 45556, 45557, 45558,
- 45559, 45560, 45562, 45564, 45566, 45567, 45568, 45569, 45570, 45571,
- 45574, 45575, 45577, 45578, 45581, 45582, 45583, 45584, 45585, 45586,
- 45587, 45590, 45592, 45594, 45595, 45596, 45597, 45598, 45599, 45601,
- 45602, 45603, 45604, 45605, 45606, 45607, 45608, 45609, 45610, 45611,
- 45612, 45613, 45614, 45615, 45616, 45617, 45618, 45619, 45621, 45622,
- 45623, 45624, 45625, 45626, 45627, 45629, 45630, 45631, 45632, 45633,
- 45634, 45635, 45636, 45637, 45638, 45639, 45640, 45641, 45642, 45643,
- 45644, 45645, 45646, 45647, 45648, 45649, 45650, 45651, 45652, 45653,
- 45654, 45655, 45657, 45658, 45659, 45661, 45662, 45663, 45665, 45666,
- 45667, 45668, 45669, 45670, 45671, 45674, 45675, 45676, 45677, 45678,
- 45679, 45680, 45681, 45682, 45683, 45686, 45687, 45688, 45689, 45690,
- 45691, 45693, 45694, 45695, 45696, 45697, 45698, 45699, 45702, 45703,
- 45704, 45706, 45707, 45708, 45709, 45710, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 45711, 45714, 45715, 45717, 45718, 45719, 45723, 45724,
- 45725, 45726, 45727, 45730, 45732, 45735, 45736, 45737, 45739, 45741,
- 45742, 45743, 45745, 45746, 45747, 45749, 45750, 45751, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 45752, 45753, 45754, 45755, 45756, 45757,
- 45758, 45759, 45760, 45761, 45762, 45763, 45764, 45765, 45766, 45767,
- 45770, 45771, 45773, 45774, 45775, 45777, 45779, 45780, 45781, 45782,
- 45783, 45786, 45788, 45790, 45791, 45792, 45793, 45795, 45799, 45801,
- 45802, 45808, 45809, 45810, 45814, 45820, 45821, 45822, 45826, 45827,
- 45829, 45830, 45831, 45833, 45834, 45835, 45836, 45837, 45838, 45839,
- 45842, 45846, 45847, 45848, 45849, 45850, 45851, 45853, 45854, 45855,
- 45856, 45857, 45858, 45859, 45860, 45861, 45862, 45863, 45864, 45865,
- 45866, 45867, 45868, 45869, 45870, 45871, 45872, 45873, 45874, 45875,
- 45876, 45877, 45878, 45879, 45880, 45881, 45882, 45883, 45884, 45885,
- 45886, 45887, 45888, 45889, 45890, 45891, 45892, 45893, 45894, 45895,
- 45896, 45897, 45898, 45899, 45900, 45901, 45902, 45903, 45904, 45905,
- 45906, 45907, 45911, 45913, 45914, 45917, 45920, 45921, 45922, 45923,
- 45926, 45928, 45930, 45932, 45933, 45935, 45938, 45939, 45941, 45942,
- 45943, 45945, 45946, 45947, 45948, 45949, 45950, 45951, 45954, 45958,
- 45959, 45960, 45961, 45962, 45963, 45965, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 45966, 45967, 45969, 45970, 45971, 45973, 45974, 45975,
- 45976, 45977, 45978, 45979, 45980, 45981, 45982, 45983, 45986, 45987,
- 45988, 45989, 45990, 45991, 45993, 45994, 45995, 45997, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 45998, 45999, 46000, 46001, 46002, 46003,
- 46004, 46005, 46006, 46007, 46008, 46009, 46010, 46011, 46012, 46013,
- 46014, 46015, 46016, 46017, 46018, 46019, 46022, 46023, 46025, 46026,
- 46029, 46031, 46033, 46034, 46035, 46038, 46040, 46042, 46044, 46046,
- 46047, 46049, 46050, 46051, 46053, 46054, 46055, 46057, 46058, 46059,
- 46060, 46061, 46062, 46063, 46064, 46065, 46066, 46067, 46068, 46069,
- 46070, 46071, 46072, 46073, 46074, 46075, 46077, 46078, 46079, 46080,
- 46081, 46082, 46083, 46084, 46085, 46086, 46087, 46088, 46089, 46090,
- 46091, 46092, 46093, 46094, 46095, 46097, 46098, 46099, 46100, 46101,
- 46102, 46103, 46105, 46106, 46107, 46109, 46110, 46111, 46113, 46114,
- 46115, 46116, 46117, 46118, 46119, 46122, 46124, 46125, 46126, 46127,
- 46128, 46129, 46130, 46131, 46133, 46134, 46135, 46136, 46137, 46138,
- 46139, 46140, 46141, 46142, 46143, 46144, 46145, 46146, 46147, 46148,
- 46149, 46150, 46151, 46152, 46153, 46154, 46155, 46156, 46157, 46158,
- 46159, 46162, 46163, 46165, 46166, 46167, 46169, 46170, 46171, 46172,
- 46173, 46174, 46175, 46178, 46180, 46182, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 46183, 46184, 46185, 46186, 46187, 46189, 46190, 46191,
- 46192, 46193, 46194, 46195, 46196, 46197, 46198, 46199, 46200, 46201,
- 46202, 46203, 46204, 46205, 46206, 46207, 46209, 46210, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 46211, 46212, 46213, 46214, 46215, 46217,
- 46218, 46219, 46220, 46221, 46222, 46223, 46224, 46225, 46226, 46227,
- 46228, 46229, 46230, 46231, 46232, 46233, 46234, 46235, 46236, 46238,
- 46239, 46240, 46241, 46242, 46243, 46245, 46246, 46247, 46249, 46250,
- 46251, 46253, 46254, 46255, 46256, 46257, 46258, 46259, 46260, 46262,
- 46264, 46266, 46267, 46268, 46269, 46270, 46271, 46273, 46274, 46275,
- 46277, 46278, 46279, 46281, 46282, 46283, 46284, 46285, 46286, 46287,
- 46289, 46290, 46291, 46292, 46294, 46295, 46296, 46297, 46298, 46299,
- 46302, 46303, 46305, 46306, 46309, 46311, 46312, 46313, 46314, 46315,
- 46318, 46320, 46322, 46323, 46324, 46325, 46326, 46327, 46329, 46330,
- 46331, 46332, 46333, 46334, 46335, 46336, 46337, 46338, 46339, 46340,
- 46341, 46342, 46343, 46344, 46345, 46346, 46347, 46348, 46349, 46350,
- 46351, 46352, 46353, 46354, 46355, 46358, 46359, 46361, 46362, 46365,
- 46366, 46367, 46368, 46369, 46370, 46371, 46374, 46379, 46380, 46381,
- 46382, 46383, 46386, 46387, 46389, 46390, 46391, 46393, 46394, 46395,
- 46396, 46397, 46398, 46399, 46402, 46406, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 46407, 46408, 46409, 46410, 46414, 46415, 46417, 46418,
- 46419, 46421, 46422, 46423, 46424, 46425, 46426, 46427, 46430, 46434,
- 46435, 46436, 46437, 46438, 46439, 46440, 46441, 46442, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 46443, 46444, 46445, 46446, 46447, 46448,
- 46449, 46450, 46451, 46452, 46453, 46454, 46455, 46456, 46457, 46458,
- 46459, 46460, 46461, 46462, 46463, 46464, 46465, 46466, 46467, 46468,
- 46469, 46470, 46471, 46472, 46473, 46474, 46475, 46476, 46477, 46478,
- 46479, 46480, 46481, 46482, 46483, 46484, 46485, 46486, 46487, 46488,
- 46489, 46490, 46491, 46492, 46493, 46494, 46495, 46498, 46499, 46501,
- 46502, 46503, 46505, 46508, 46509, 46510, 46511, 46514, 46518, 46519,
- 46520, 46521, 46522, 46526, 46527, 46529, 46530, 46531, 46533, 46534,
- 46535, 46536, 46537, 46538, 46539, 46542, 46546, 46547, 46548, 46549,
- 46550, 46551, 46553, 46554, 46555, 46556, 46557, 46558, 46559, 46560,
- 46561, 46562, 46563, 46564, 46565, 46566, 46567, 46568, 46569, 46570,
- 46571, 46573, 46574, 46575, 46576, 46577, 46578, 46579, 46580, 46581,
- 46582, 46583, 46584, 46585, 46586, 46587, 46588, 46589, 46590, 46591,
- 46592, 46593, 46594, 46595, 46596, 46597, 46598, 46599, 46600, 46601,
- 46602, 46603, 46604, 46605, 46606, 46607, 46610, 46611, 46613, 46614,
- 46615, 46617, 46618, 46619, 46620, 46621, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 46622, 46623, 46624, 46625, 46626, 46627, 46628, 46630,
- 46631, 46632, 46633, 46634, 46635, 46637, 46638, 46639, 46640, 46641,
- 46642, 46643, 46645, 46646, 46647, 46648, 46649, 46650, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 46651, 46652, 46653, 46654, 46655, 46656,
- 46657, 46658, 46659, 46660, 46661, 46662, 46663, 46665, 46666, 46667,
- 46668, 46669, 46670, 46671, 46672, 46673, 46674, 46675, 46676, 46677,
- 46678, 46679, 46680, 46681, 46682, 46683, 46684, 46685, 46686, 46687,
- 46688, 46689, 46690, 46691, 46693, 46694, 46695, 46697, 46698, 46699,
- 46700, 46701, 46702, 46703, 46704, 46705, 46706, 46707, 46708, 46709,
- 46710, 46711, 46712, 46713, 46714, 46715, 46716, 46717, 46718, 46719,
- 46720, 46721, 46722, 46723, 46724, 46725, 46726, 46727, 46728, 46729,
- 46730, 46731, 46732, 46733, 46734, 46735, 46736, 46737, 46738, 46739,
- 46740, 46741, 46742, 46743, 46744, 46745, 46746, 46747, 46750, 46751,
- 46753, 46754, 46755, 46757, 46758, 46759, 46760, 46761, 46762, 46765,
- 46766, 46767, 46768, 46770, 46771, 46772, 46773, 46774, 46775, 46776,
- 46777, 46778, 46779, 46780, 46781, 46782, 46783, 46784, 46785, 46786,
- 46787, 46788, 46789, 46790, 46791, 46792, 46793, 46794, 46795, 46796,
- 46797, 46798, 46799, 46800, 46801, 46802, 46803, 46805, 46806, 46807,
- 46808, 46809, 46810, 46811, 46812, 46813, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 46814, 46815, 46816, 46817, 46818, 46819, 46820, 46821,
- 46822, 46823, 46824, 46825, 46826, 46827, 46828, 46829, 46830, 46831,
- 46833, 46834, 46835, 46837, 46838, 46839, 46841, 46842, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 46843, 46844, 46845, 46846, 46847, 46850,
- 46851, 46852, 46854, 46855, 46856, 46857, 46858, 46859, 46860, 46861,
- 46862, 46863, 46864, 46865, 46866, 46867, 46868, 46869, 46870, 46871,
- 46872, 46873, 46874, 46875, 46876, 46877, 46878, 46879, 46880, 46881,
- 46882, 46883, 46884, 46885, 46886, 46887, 46890, 46891, 46893, 46894,
- 46897, 46898, 46899, 46900, 46901, 46902, 46903, 46906, 46908, 46909,
- 46910, 46911, 46912, 46913, 46914, 46915, 46917, 46918, 46919, 46921,
- 46922, 46923, 46925, 46926, 46927, 46928, 46929, 46930, 46931, 46934,
- 46935, 46936, 46937, 46938, 46939, 46940, 46941, 46942, 46943, 46945,
- 46946, 46947, 46949, 46950, 46951, 46953, 46954, 46955, 46956, 46957,
- 46958, 46959, 46962, 46964, 46966, 46967, 46968, 46969, 46970, 46971,
- 46974, 46975, 46977, 46978, 46979, 46981, 46982, 46983, 46984, 46985,
- 46986, 46987, 46990, 46995, 46996, 46997, 47002, 47003, 47005, 47006,
- 47007, 47009, 47010, 47011, 47012, 47013, 47014, 47015, 47018, 47022,
- 47023, 47024, 47025, 47026, 47027, 47030, 47031, 47033, 47034, 47035,
- 47036, 47037, 47038, 47039, 47040, 47041, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 47042, 47043, 47044, 47045, 47046, 47048, 47050, 47051,
- 47052, 47053, 47054, 47055, 47056, 47057, 47058, 47059, 47060, 47061,
- 47062, 47063, 47064, 47065, 47066, 47067, 47068, 47069, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 47070, 47071, 47072, 47073, 47074, 47075,
- 47076, 47077, 47078, 47079, 47080, 47081, 47082, 47083, 47086, 47087,
- 47089, 47090, 47091, 47093, 47094, 47095, 47096, 47097, 47098, 47099,
- 47102, 47106, 47107, 47108, 47109, 47110, 47114, 47115, 47117, 47118,
- 47119, 47121, 47122, 47123, 47124, 47125, 47126, 47127, 47130, 47132,
- 47134, 47135, 47136, 47137, 47138, 47139, 47142, 47143, 47145, 47146,
- 47147, 47149, 47150, 47151, 47152, 47153, 47154, 47155, 47158, 47162,
- 47163, 47164, 47165, 47166, 47167, 47169, 47170, 47171, 47173, 47174,
- 47175, 47176, 47177, 47178, 47179, 47180, 47181, 47182, 47183, 47184,
- 47186, 47188, 47189, 47190, 47191, 47192, 47193, 47194, 47195, 47198,
- 47199, 47201, 47202, 47203, 47205, 47206, 47207, 47208, 47209, 47210,
- 47211, 47214, 47216, 47218, 47219, 47220, 47221, 47222, 47223, 47225,
- 47226, 47227, 47229, 47230, 47231, 47232, 47233, 47234, 47235, 47236,
- 47237, 47238, 47239, 47240, 47241, 47242, 47243, 47244, 47246, 47247,
- 47248, 47249, 47250, 47251, 47252, 47253, 47254, 47255, 47256, 47257,
- 47258, 47259, 47260, 47261, 47262, 47263, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 47264, 47265, 47266, 47267, 47268, 47269, 47270, 47271,
- 47273, 47274, 47275, 47276, 47277, 47278, 47279, 47281, 47282, 47283,
- 47285, 47286, 47287, 47289, 47290, 47291, 47292, 47293, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 47294, 47295, 47298, 47300, 47302, 47303,
- 47304, 47305, 47306, 47307, 47309, 47310, 47311, 47313, 47314, 47315,
- 47317, 47318, 47319, 47320, 47321, 47322, 47323, 47324, 47326, 47328,
- 47330, 47331, 47332, 47333, 47334, 47335, 47338, 47339, 47341, 47342,
- 47343, 47345, 47346, 47347, 47348, 47349, 47350, 47351, 47354, 47356,
- 47358, 47359, 47360, 47361, 47362, 47363, 47365, 47366, 47367, 47368,
- 47369, 47370, 47371, 47372, 47373, 47374, 47375, 47376, 47377, 47378,
- 47379, 47380, 47381, 47382, 47383, 47385, 47386, 47387, 47388, 47389,
- 47390, 47391, 47393, 47394, 47395, 47396, 47397, 47398, 47399, 47400,
- 47401, 47402, 47403, 47404, 47405, 47406, 47407, 47408, 47409, 47410,
- 47411, 47412, 47413, 47414, 47415, 47416, 47417, 47418, 47419, 47422,
- 47423, 47425, 47426, 47427, 47429, 47430, 47431, 47432, 47433, 47434,
- 47435, 47437, 47438, 47440, 47442, 47443, 47444, 47445, 47446, 47447,
- 47450, 47451, 47453, 47454, 47455, 47457, 47458, 47459, 47460, 47461,
- 47462, 47463, 47466, 47468, 47470, 47471, 47472, 47473, 47474, 47475,
- 47478, 47479, 47481, 47482, 47483, 47485, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 47486, 47487, 47488, 47489, 47490, 47491, 47494, 47496,
- 47499, 47500, 47503, 47504, 47505, 47506, 47507, 47508, 47509, 47510,
- 47511, 47512, 47513, 47514, 47515, 47516, 47517, 47518, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 47519, 47520, 47521, 47522, 47523, 47524,
- 47525, 47526, 47527, 47528, 47529, 47530, 47531, 47534, 47535, 47537,
- 47538, 47539, 47541, 47542, 47543, 47544, 47545, 47546, 47547, 47550,
- 47552, 47554, 47555, 47556, 47557, 47558, 47559, 47562, 47563, 47565,
- 47571, 47572, 47573, 47574, 47575, 47578, 47580, 47583, 47584, 47586,
- 47590, 47591, 47593, 47594, 47595, 47597, 47598, 47599, 47600, 47601,
- 47602, 47603, 47606, 47611, 47612, 47613, 47614, 47615, 47618, 47619,
- 47620, 47621, 47622, 47623, 47625, 47626, 47627, 47628, 47629, 47630,
- 47631, 47632, 47633, 47634, 47635, 47636, 47638, 47639, 47640, 47641,
- 47642, 47643, 47644, 47645, 47646, 47647, 47648, 47649, 47650, 47651,
- 47652, 47653, 47654, 47655, 47656, 47657, 47658, 47659, 47660, 47661,
- 47662, 47663, 47664, 47665, 47666, 47667, 47668, 47669, 47670, 47671,
- 47674, 47675, 47677, 47678, 47679, 47681, 47683, 47684, 47685, 47686,
- 47687, 47690, 47692, 47695, 47696, 47697, 47698, 47702, 47703, 47705,
- 47706, 47707, 47709, 47710, 47711, 47712, 47713, 47714, 47715, 47718,
- 47722, 47723, 47724, 47725, 47726, 47727, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 47730, 47731, 47733, 47734, 47735, 47737, 47738, 47739,
- 47740, 47741, 47742, 47743, 47744, 47745, 47746, 47750, 47752, 47753,
- 47754, 47755, 47757, 47758, 47759, 47760, 47761, 47762, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 47763, 47764, 47765, 47766, 47767, 47768,
- 47769, 47770, 47771, 47772, 47773, 47774, 47775, 47776, 47777, 47778,
- 47779, 47780, 47781, 47782, 47783, 47786, 47789, 47790, 47791, 47793,
- 47795, 47796, 47797, 47798, 47799, 47802, 47804, 47806, 47807, 47808,
- 47809, 47810, 47811, 47813, 47814, 47815, 47817, 47818, 47819, 47820,
- 47821, 47822, 47823, 47824, 47825, 47826, 47827, 47828, 47829, 47830,
- 47831, 47834, 47835, 47836, 47837, 47838, 47839, 47840, 47841, 47842,
- 47843, 47844, 47845, 47846, 47847, 47848, 47849, 47850, 47851, 47852,
- 47853, 47854, 47855, 47856, 47857, 47858, 47859, 47860, 47861, 47862,
- 47863, 47864, 47865, 47866, 47867, 47869, 47870, 47871, 47873, 47874,
- 47875, 47877, 47878, 47879, 47880, 47881, 47882, 47883, 47884, 47886,
- 47888, 47890, 47891, 47892, 47893, 47894, 47895, 47897, 47898, 47899,
- 47901, 47902, 47903, 47905, 47906, 47907, 47908, 47909, 47910, 47911,
- 47912, 47914, 47916, 47917, 47918, 47919, 47920, 47921, 47922, 47923,
- 47927, 47929, 47930, 47935, 47936, 47937, 47938, 47939, 47942, 47944,
- 47946, 47947, 47948, 47950, 47953, 47954, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 47955, 47957, 47958, 47959, 47961, 47962, 47963, 47964,
- 47965, 47966, 47967, 47968, 47970, 47972, 47973, 47974, 47975, 47976,
- 47977, 47978, 47979, 47981, 47982, 47983, 47984, 47985, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 47986, 47987, 47988, 47989, 47990, 47991,
- 47992, 47993, 47994, 47995, 47996, 47997, 47998, 47999, 48000, 48001,
- 48002, 48003, 48004, 48005, 48006, 48007, 48009, 48010, 48011, 48013,
- 48014, 48015, 48017, 48018, 48019, 48020, 48021, 48022, 48023, 48024,
- 48025, 48026, 48027, 48028, 48029, 48030, 48031, 48032, 48033, 48034,
- 48035, 48037, 48038, 48039, 48041, 48042, 48043, 48045, 48046, 48047,
- 48048, 48049, 48050, 48051, 48053, 48054, 48056, 48057, 48058, 48059,
- 48060, 48061, 48062, 48063, 48065, 48066, 48067, 48069, 48070, 48071,
- 48073, 48074, 48075, 48076, 48077, 48078, 48079, 48081, 48082, 48084,
- 48085, 48086, 48087, 48088, 48089, 48090, 48091, 48092, 48093, 48094,
- 48095, 48096, 48097, 48098, 48099, 48100, 48101, 48102, 48103, 48104,
- 48105, 48106, 48107, 48108, 48109, 48110, 48111, 48112, 48113, 48114,
- 48115, 48116, 48117, 48118, 48119, 48122, 48123, 48125, 48126, 48129,
- 48131, 48132, 48133, 48134, 48135, 48138, 48142, 48144, 48146, 48147,
- 48153, 48154, 48160, 48161, 48162, 48163, 48166, 48168, 48170, 48171,
- 48172, 48174, 48175, 48178, 48179, 48181, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 48182, 48183, 48185, 48186, 48187, 48188, 48189, 48190,
- 48191, 48194, 48198, 48199, 48200, 48202, 48203, 48206, 48207, 48209,
- 48210, 48211, 48212, 48213, 48214, 48215, 48216, 48217, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 48218, 48219, 48220, 48222, 48223, 48224,
- 48225, 48226, 48227, 48228, 48229, 48230, 48231, 48232, 48233, 48234,
- 48235, 48236, 48237, 48238, 48239, 48240, 48241, 48242, 48243, 48244,
- 48245, 48246, 48247, 48248, 48249, 48250, 48251, 48252, 48253, 48254,
- 48255, 48256, 48257, 48258, 48259, 48262, 48263, 48265, 48266, 48269,
- 48271, 48272, 48273, 48274, 48275, 48278, 48280, 48283, 48284, 48285,
- 48286, 48287, 48290, 48291, 48293, 48294, 48297, 48298, 48299, 48300,
- 48301, 48302, 48303, 48306, 48310, 48311, 48312, 48313, 48314, 48315,
- 48318, 48319, 48321, 48322, 48323, 48325, 48326, 48327, 48328, 48329,
- 48330, 48331, 48332, 48334, 48338, 48339, 48340, 48342, 48343, 48345,
- 48346, 48347, 48349, 48350, 48351, 48352, 48353, 48354, 48355, 48356,
- 48357, 48358, 48359, 48360, 48361, 48362, 48363, 48364, 48365, 48366,
- 48367, 48368, 48369, 48370, 48371, 48375, 48377, 48378, 48379, 48381,
- 48382, 48383, 48384, 48385, 48386, 48387, 48390, 48392, 48394, 48395,
- 48396, 48397, 48398, 48399, 48401, 48402, 48403, 48405, 48406, 48407,
- 48408, 48409, 48410, 48411, 48412, 48413, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 48414, 48415, 48416, 48417, 48418, 48419, 48421, 48422,
- 48423, 48424, 48425, 48426, 48427, 48429, 48430, 48431, 48432, 48433,
- 48434, 48435, 48436, 48437, 48438, 48439, 48440, 48441, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 48442, 48443, 48444, 48445, 48446, 48447,
- 48449, 48450, 48451, 48452, 48453, 48454, 48455, 48458, 48459, 48461,
- 48462, 48463, 48465, 48466, 48467, 48468, 48469, 48470, 48471, 48474,
- 48475, 48476, 48477, 48478, 48479, 48480, 48481, 48482, 48483, 48485,
- 48486, 48487, 48489, 48490, 48491, 48492, 48493, 48494, 48495, 48496,
- 48497, 48498, 48499, 48500, 48501, 48502, 48503, 48504, 48505, 48506,
- 48507, 48508, 48509, 48510, 48511, 48514, 48515, 48517, 48518, 48523,
- 48524, 48525, 48526, 48527, 48530, 48532, 48534, 48535, 48536, 48539,
- 48541, 48542, 48543, 48544, 48545, 48546, 48547, 48549, 48550, 48551,
- 48552, 48553, 48554, 48555, 48556, 48557, 48558, 48559, 48561, 48562,
- 48563, 48564, 48565, 48566, 48567, 48569, 48570, 48571, 48572, 48573,
- 48574, 48575, 48576, 48577, 48578, 48579, 48580, 48581, 48582, 48583,
- 48584, 48585, 48586, 48587, 48588, 48589, 48590, 48591, 48592, 48593,
- 48594, 48595, 48598, 48599, 48601, 48602, 48603, 48605, 48606, 48607,
- 48608, 48609, 48610, 48611, 48612, 48613, 48614, 48615, 48616, 48618,
- 48619, 48620, 48621, 48622, 48623, 48625, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 48626, 48627, 48629, 48630, 48631, 48633, 48634, 48635,
- 48636, 48637, 48638, 48639, 48641, 48642, 48644, 48646, 48647, 48648,
- 48649, 48650, 48651, 48654, 48655, 48657, 48658, 48659, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 48661, 48662, 48663, 48664, 48665, 48666,
- 48667, 48670, 48672, 48673, 48674, 48675, 48676, 48677, 48678, 48679,
- 48680, 48681, 48682, 48683, 48684, 48685, 48686, 48687, 48688, 48689,
- 48690, 48691, 48692, 48693, 48694, 48695, 48696, 48697, 48698, 48699,
- 48700, 48701, 48702, 48703, 48704, 48705, 48706, 48707, 48710, 48711,
- 48713, 48714, 48715, 48717, 48719, 48720, 48721, 48722, 48723, 48726,
- 48728, 48732, 48733, 48734, 48735, 48738, 48739, 48741, 48742, 48743,
- 48745, 48747, 48748, 48749, 48750, 48751, 48754, 48758, 48759, 48760,
- 48761, 48762, 48766, 48767, 48769, 48770, 48771, 48773, 48774, 48775,
- 48776, 48777, 48778, 48779, 48782, 48786, 48787, 48788, 48789, 48790,
- 48791, 48794, 48795, 48796, 48797, 48798, 48799, 48800, 48801, 48802,
- 48803, 48804, 48805, 48806, 48807, 48809, 48810, 48811, 48812, 48813,
- 48814, 48815, 48816, 48817, 48818, 48819, 48820, 48821, 48822, 48823,
- 48824, 48825, 48826, 48827, 48828, 48829, 48830, 48831, 48832, 48833,
- 48834, 48835, 48836, 48837, 48838, 48839, 48840, 48841, 48842, 48843,
- 48844, 48845, 48846, 48847, 48850, 48851, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 48853, 48854, 48857, 48858, 48859, 48860, 48861, 48862,
- 48863, 48865, 48866, 48870, 48871, 48872, 48873, 48874, 48875, 48877,
- 48878, 48879, 48880, 48881, 48882, 48883, 48884, 48885, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 48886, 48887, 48888, 48889, 48890, 48891,
- 48892, 48893, 48894, 48895, 48896, 48898, 48899, 48900, 48901, 48902,
- 48903, 48906, 48907, 48908, 48909, 48910, 48911, 48912, 48913, 48914,
- 48915, 48916, 48917, 48918, 48919, 48922, 48926, 48927, 48928, 48929,
- 48930, 48931, 48932, 48933, 48934, 48935, 48936, 48937, 48938, 48939,
- 48940, 48941, 48942, 48943, 48944, 48945, 48946, 48947, 48948, 48949,
- 48950, 48951, 48952, 48953, 48954, 48955, 48956, 48957, 48958, 48959,
- 48962, 48963, 48965, 48966, 48967, 48969, 48970, 48971, 48972, 48973,
- 48974, 48975, 48978, 48979, 48980, 48982, 48983, 48984, 48985, 48986,
- 48987, 48988, 48989, 48990, 48991, 48992, 48993, 48994, 48995, 48996,
- 48997, 48998, 48999, 49000, 49001, 49002, 49003, 49004, 49005, 49006,
- 49007, 49008, 49009, 49010, 49011, 49012, 49013, 49014, 49015, 49016,
- 49017, 49018, 49019, 49020, 49021, 49022, 49023, 49024, 49025, 49026,
- 49027, 49028, 49029, 49030, 49031, 49032, 49033, 49034, 49035, 49036,
- 49037, 49038, 49039, 49040, 49041, 49042, 49043, 49045, 49046, 49047,
- 49048, 49049, 49050, 49051, 49052, 49053, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 49054, 49055, 49056, 49057, 49058, 49059, 49060, 49061,
- 49062, 49063, 49064, 49065, 49066, 49067, 49068, 49069, 49070, 49071,
- 49073, 49074, 49075, 49076, 49077, 49078, 49079, 49080, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 49081, 49082, 49083, 49084, 49085, 49086,
- 49087, 49088, 49089, 49090, 49091, 49092, 49094, 49095, 49096, 49097,
- 49098, 49099, 49102, 49103, 49105, 49106, 49107, 49109, 49110, 49111,
- 49112, 49113, 49114, 49115, 49117, 49118, 49120, 49122, 49123, 49124,
- 49125, 49126, 49127, 49128, 49129, 49130, 49131, 49132, 49133, 49134,
- 49135, 49136, 49137, 49138, 49139, 49140, 49141, 49142, 49143, 49144,
- 49145, 49146, 49147, 49148, 49149, 49150, 49151, 49152, 49153, 49154,
- 49155, 49156, 49157, 49158, 49159, 49160, 49161, 49162, 49163, 49164,
- 49165, 49166, 49167, 49168, 49169, 49170, 49171, 49172, 49173, 49174,
- 49175, 49176, 49177, 49178, 49179, 49180, 49181, 49182, 49183, 49184,
- 49185, 49186, 49187, 49188, 49189, 49190, 49191, 49192, 49193, 49194,
- 49195, 49196, 49197, 49198, 49199, 49200, 49201, 49202, 49203, 49204,
- 49205, 49206, 49207, 49208, 49209, 49210, 49211, 49213, 49214, 49215,
- 49216, 49217, 49218, 49219, 49220, 49221, 49222, 49223, 49224, 49225,
- 49226, 49227, 49228, 49229, 49230, 49231, 49232, 49234, 49235, 49236,
- 49237, 49238, 49239, 49241, 49242, 49243, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 49245, 49246, 49247, 49249, 49250, 49251, 49252, 49253,
- 49254, 49255, 49258, 49259, 49260, 49261, 49262, 49263, 49264, 49265,
- 49266, 49267, 49268, 49269, 49270, 49271, 49272, 49273, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 49274, 49275, 49276, 49277, 49278, 49279,
- 49280, 49281, 49282, 49283, 49284, 49285, 49286, 49287, 49288, 49289,
- 49290, 49291, 49292, 49293, 49294, 49295, 49298, 49299, 49301, 49302,
- 49303, 49305, 49306, 49307, 49308, 49309, 49310, 49311, 49314, 49316,
- 49318, 49319, 49320, 49321, 49322, 49323, 49326, 49329, 49330, 49335,
- 49336, 49337, 49338, 49339, 49342, 49346, 49347, 49348, 49350, 49351,
- 49354, 49355, 49357, 49358, 49359, 49361, 49362, 49363, 49364, 49365,
- 49366, 49367, 49370, 49374, 49375, 49376, 49377, 49378, 49379, 49382,
- 49383, 49385, 49386, 49387, 49389, 49390, 49391, 49392, 49393, 49394,
- 49395, 49398, 49400, 49402, 49403, 49404, 49405, 49406, 49407, 49409,
- 49410, 49411, 49413, 49414, 49415, 49417, 49418, 49419, 49420, 49421,
- 49422, 49423, 49425, 49426, 49427, 49428, 49430, 49431, 49432, 49433,
- 49434, 49435, 49441, 49442, 49445, 49448, 49449, 49450, 49451, 49454,
- 49458, 49459, 49460, 49461, 49463, 49466, 49467, 49469, 49470, 49471,
- 49473, 49474, 49475, 49476, 49477, 49478, 49479, 49482, 49486, 49487,
- 49488, 49489, 49490, 49491, 49494, 49495, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 49497, 49498, 49499, 49501, 49502, 49503, 49504, 49505,
- 49506, 49507, 49510, 49514, 49515, 49516, 49517, 49518, 49519, 49521,
- 49522, 49523, 49525, 49526, 49527, 49529, 49530, 49531, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 49532, 49533, 49534, 49535, 49536, 49537,
- 49538, 49539, 49540, 49542, 49543, 49544, 49545, 49546, 49547, 49551,
- 49553, 49554, 49555, 49557, 49559, 49560, 49561, 49562, 49563, 49566,
- 49568, 49570, 49571, 49572, 49574, 49575, 49578, 49579, 49581, 49582,
- 49583, 49585, 49586, 49587, 49588, 49589, 49590, 49591, 49592, 49593,
- 49594, 49595, 49596, 49598, 49599, 49600, 49601, 49602, 49603, 49605,
- 49606, 49607, 49609, 49610, 49611, 49613, 49614, 49615, 49616, 49617,
- 49618, 49619, 49621, 49622, 49625, 49626, 49627, 49628, 49629, 49630,
- 49631, 49633, 49634, 49635, 49637, 49638, 49639, 49641, 49642, 49643,
- 49644, 49645, 49646, 49647, 49650, 49652, 49653, 49654, 49655, 49656,
- 49657, 49658, 49659, 49662, 49663, 49665, 49666, 49667, 49669, 49670,
- 49671, 49672, 49673, 49674, 49675, 49678, 49680, 49682, 49683, 49684,
- 49685, 49686, 49687, 49690, 49691, 49693, 49694, 49697, 49698, 49699,
- 49700, 49701, 49702, 49703, 49706, 49708, 49710, 49712, 49715, 49717,
- 49718, 49719, 49720, 49721, 49722, 49723, 49724, 49725, 49726, 49727,
- 49728, 49729, 49730, 49731, 49732, 49733, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 49734, 49735, 49737, 49738, 49739, 49740, 49741, 49742,
- 49743, 49746, 49747, 49749, 49750, 49751, 49753, 49754, 49755, 49756,
- 49757, 49758, 49759, 49761, 49762, 49763, 49764, 49766, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 49767, 49768, 49769, 49770, 49771, 49774,
- 49775, 49777, 49778, 49779, 49781, 49782, 49783, 49784, 49785, 49786,
- 49787, 49790, 49792, 49794, 49795, 49796, 49797, 49798, 49799, 49802,
- 49803, 49804, 49805, 49806, 49807, 49809, 49810, 49811, 49812, 49813,
- 49814, 49815, 49817, 49818, 49820, 49822, 49823, 49824, 49825, 49826,
- 49827, 49830, 49831, 49833, 49834, 49835, 49838, 49839, 49840, 49841,
- 49842, 49843, 49846, 49848, 49850, 49851, 49852, 49853, 49854, 49855,
- 49856, 49857, 49858, 49859, 49860, 49861, 49862, 49863, 49864, 49865,
- 49866, 49867, 49868, 49869, 49870, 49871, 49872, 49873, 49874, 49875,
- 49876, 49877, 49878, 49879, 49880, 49881, 49882, 49883, 49886, 49887,
- 49889, 49890, 49893, 49894, 49895, 49896, 49897, 49898, 49902, 49904,
- 49906, 49907, 49908, 49909, 49911, 49914, 49917, 49918, 49919, 49921,
- 49922, 49923, 49924, 49925, 49926, 49927, 49930, 49931, 49934, 49935,
- 49936, 49937, 49938, 49942, 49943, 49945, 49946, 49947, 49949, 49950,
- 49951, 49952, 49953, 49954, 49955, 49958, 49959, 49962, 49963, 49964,
- 49965, 49966, 49967, 49968, 49969, 49970, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 49971, 49972, 49973, 49974, 49975, 49976, 49977, 49978,
- 49979, 49980, 49981, 49982, 49983, 49984, 49985, 49986, 49987, 49988,
- 49990, 49991, 49992, 49993, 49994, 49995, 49996, 49997, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 49998, 49999, 50000, 50001, 50002, 50003,
- 50004, 50005, 50006, 50007, 50008, 50009, 50010, 50011, 50012, 50013,
- 50014, 50015, 50016, 50017, 50018, 50019, 50020, 50021, 50022, 50023,
- 50026, 50027, 50029, 50030, 50031, 50033, 50035, 50036, 50037, 50038,
- 50039, 50042, 50043, 50046, 50047, 50048, 50049, 50050, 50051, 50053,
- 50054, 50055, 50057, 50058, 50059, 50061, 50062, 50063, 50064, 50065,
- 50066, 50067, 50068, 50069, 50070, 50071, 50072, 50073, 50074, 50075,
- 50076, 50077, 50078, 50079, 50080, 50081, 50082, 50083, 50084, 50085,
- 50086, 50087, 50088, 50089, 50090, 50091, 50092, 50093, 50094, 50095,
- 50096, 50097, 50098, 50099, 50100, 50101, 50102, 50103, 50104, 50105,
- 50106, 50107, 50108, 50109, 50110, 50111, 50113, 50114, 50115, 50116,
- 50117, 50118, 50119, 50120, 50121, 50122, 50123, 50124, 50125, 50126,
- 50127, 50128, 50129, 50130, 50131, 50132, 50133, 50134, 50135, 50138,
- 50139, 50141, 50142, 50145, 50147, 50148, 50149, 50150, 50151, 50154,
- 50155, 50156, 50158, 50159, 50160, 50161, 50162, 50163, 50166, 50167,
- 50169, 50170, 50171, 50172, 50173, 50174, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 50175, 50176, 50177, 50178, 50179, 50180, 50181, 50182,
- 50183, 50185, 50186, 50187, 50188, 50189, 50190, 50191, 50193, 50194,
- 50195, 50196, 50197, 50198, 50199, 50200, 50201, 50202, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 50203, 50204, 50205, 50206, 50207, 50208,
- 50209, 50210, 50211, 50213, 50214, 50215, 50216, 50217, 50218, 50219,
- 50221, 50222, 50223, 50225, 50226, 50227, 50229, 50230, 50231, 50232,
- 50233, 50234, 50235, 50238, 50239, 50240, 50241, 50242, 50243, 50244,
- 50245, 50246, 50247, 50249, 50250, 50251, 50252, 50253, 50254, 50255,
- 50256, 50257, 50258, 50259, 50260, 50261, 50262, 50263, 50264, 50265,
- 50266, 50267, 50268, 50269, 50270, 50271, 50272, 50273, 50274, 50275,
- 50278, 50279, 50281, 50282, 50283, 50285, 50286, 50287, 50288, 50289,
- 50290, 50291, 50294, 50295, 50296, 50298, 50299, 50300, 50301, 50302,
- 50303, 50305, 50306, 50307, 50308, 50309, 50310, 50311, 50312, 50313,
- 50314, 50315, 50316, 50317, 50318, 50319, 50320, 50321, 50322, 50323,
- 50325, 50326, 50327, 50328, 50329, 50330, 50331, 50333, 50334, 50335,
- 50336, 50337, 50338, 50339, 50340, 50341, 50342, 50343, 50344, 50345,
- 50346, 50347, 50348, 50349, 50350, 50351, 50352, 50353, 50354, 50355,
- 50356, 50357, 50358, 50359, 50361, 50362, 50363, 50365, 50366, 50367,
- 50368, 50369, 50370, 50371, 50372, 50373, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 50374, 50375, 50376, 50377, 50378, 50379, 50380, 50381,
- 50382, 50383, 50384, 50385, 50386, 50387, 50388, 50389, 50390, 50391,
- 50392, 50393, 50394, 50395, 50396, 50397, 50398, 50399, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 50400, 50401, 50402, 50403, 50404, 50405,
- 50406, 50407, 50408, 50410, 50411, 50412, 50413, 50414, 50415, 50418,
- 50419, 50421, 50422, 50423, 50425, 50427, 50428, 50429, 50430, 50434,
- 50435, 50436, 50437, 50438, 50439, 50440, 50441, 50442, 50443, 50445,
- 50446, 50447, 50449, 50450, 50451, 50453, 50454, 50455, 50456, 50457,
- 50458, 50459, 50461, 50462, 50463, 50464, 50465, 50466, 50467, 50468,
- 50469, 50470, 50471, 50474, 50475, 50477, 50478, 50479, 50481, 50482,
- 50483, 50484, 50485, 50486, 50487, 50490, 50492, 50494, 50495, 50496,
- 50497, 50498, 50499, 50502, 50503, 50507, 50511, 50512, 50513, 50514,
- 50518, 50522, 50523, 50524, 50527, 50530, 50531, 50533, 50534, 50535,
- 50537, 50538, 50539, 50540, 50541, 50542, 50543, 50546, 50550, 50551,
- 50552, 50553, 50554, 50555, 50558, 50559, 50561, 50562, 50563, 50565,
- 50566, 50568, 50569, 50570, 50571, 50574, 50576, 50578, 50579, 50580,
- 50582, 50585, 50586, 50587, 50589, 50590, 50591, 50593, 50594, 50595,
- 50596, 50597, 50598, 50599, 50600, 50602, 50603, 50604, 50605, 50606,
- 50607, 50608, 50609, 50610, 50611, 50614, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 50615, 50618, 50623, 50624, 50625, 50626, 50627, 50635,
- 50637, 50639, 50642, 50643, 50645, 50646, 50647, 50649, 50650, 50651,
- 50652, 50653, 50654, 50655, 50658, 50660, 50662, 50663, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 50664, 50665, 50666, 50667, 50671, 50673,
- 50674, 50675, 50677, 50680, 50681, 50682, 50683, 50690, 50691, 50692,
- 50697, 50698, 50699, 50701, 50702, 50703, 50705, 50706, 50707, 50708,
- 50709, 50710, 50711, 50714, 50717, 50718, 50719, 50720, 50721, 50722,
- 50723, 50726, 50727, 50729, 50730, 50731, 50735, 50737, 50738, 50742,
- 50744, 50746, 50748, 50749, 50750, 50751, 50754, 50755, 50757, 50758,
- 50759, 50761, 50762, 50763, 50764, 50765, 50766, 50767, 50770, 50774,
- 50775, 50776, 50777, 50778, 50779, 50782, 50783, 50785, 50786, 50787,
- 50788, 50789, 50790, 50791, 50792, 50793, 50794, 50795, 50797, 50798,
- 50800, 50802, 50803, 50804, 50805, 50806, 50807, 50810, 50811, 50813,
- 50814, 50815, 50817, 50818, 50819, 50820, 50821, 50822, 50823, 50826,
- 50828, 50830, 50831, 50832, 50833, 50834, 50835, 50838, 50839, 50841,
- 50842, 50843, 50845, 50846, 50847, 50848, 50849, 50850, 50851, 50854,
- 50856, 50858, 50859, 50860, 50861, 50862, 50863, 50866, 50867, 50869,
- 50870, 50871, 50875, 50876, 50877, 50878, 50879, 50882, 50884, 50886,
- 50887, 50888, 50889, 50890, 50891, 50894, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 50895, 50897, 50898, 50899, 50901, 50902, 50903, 50904,
- 50905, 50906, 50907, 50910, 50911, 50914, 50915, 50916, 50917, 50918,
- 50919, 50922, 50923, 50925, 50926, 50927, 50929, 50930, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 50931, 50932, 50933, 50934, 50935, 50938,
- 50939, 50940, 50942, 50943, 50944, 50945, 50946, 50947, 50950, 50951,
- 50953, 50954, 50955, 50957, 50958, 50959, 50960, 50961, 50962, 50963,
- 50966, 50968, 50970, 50971, 50972, 50973, 50974, 50975, 50978, 50979,
- 50981, 50982, 50983, 50985, 50986, 50987, 50988, 50989, 50990, 50991,
- 50994, 50996, 50998, 51000, 51001, 51002, 51003, 51006, 51007, 51009,
- 51010, 51011, 51013, 51014, 51015, 51016, 51017, 51019, 51022, 51024,
- 51033, 51034, 51035, 51037, 51038, 51039, 51041, 51042, 51043, 51044,
- 51045, 51046, 51047, 51049, 51050, 51052, 51053, 51054, 51055, 51056,
- 51057, 51058, 51059, 51062, 51063, 51065, 51066, 51067, 51071, 51072,
- 51073, 51074, 51078, 51083, 51084, 51085, 51087, 51090, 51091, 51093,
- 51097, 51099, 51100, 51101, 51102, 51103, 51106, 51111, 51112, 51113,
- 51114, 51115, 51118, 51119, 51121, 51122, 51123, 51125, 51126, 51127,
- 51128, 51129, 51130, 51131, 51134, 51138, 51139, 51140, 51141, 51142,
- 51143, 51146, 51147, 51149, 51151, 51153, 51154, 51155, 51156, 51157,
- 51158, 51159, 51161, 51162, 51163, 51164, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 51166, 51167, 51168, 51169, 51170, 51171, 51173, 51174,
- 51175, 51177, 51178, 51179, 51181, 51182, 51183, 51184, 51185, 51186,
- 51187, 51188, 51189, 51190, 51191, 51192, 51193, 51194, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 51195, 51196, 51197, 51198, 51199, 51202,
- 51203, 51205, 51206, 51207, 51209, 51211, 51212, 51213, 51214, 51215,
- 51218, 51220, 51223, 51224, 51225, 51226, 51227, 51230, 51231, 51233,
- 51234, 51235, 51237, 51238, 51239, 51240, 51241, 51242, 51243, 51246,
- 51248, 51250, 51251, 51252, 51253, 51254, 51255, 51257, 51258, 51259,
- 51261, 51262, 51263, 51265, 51266, 51267, 51268, 51269, 51270, 51271,
- 51274, 51275, 51278, 51279, 51280, 51281, 51282, 51283, 51285, 51286,
- 51287, 51288, 51289, 51290, 51291, 51292, 51293, 51294, 51295, 51296,
- 51297, 51298, 51299, 51300, 51301, 51302, 51303, 51304, 51305, 51306,
- 51307, 51308, 51309, 51310, 51311, 51314, 51315, 51317, 51318, 51319,
- 51321, 51323, 51324, 51325, 51326, 51327, 51330, 51332, 51336, 51337,
- 51338, 51342, 51343, 51344, 51345, 51346, 51347, 51349, 51350, 51351,
- 51352, 51353, 51354, 51355, 51356, 51358, 51360, 51362, 51363, 51364,
- 51365, 51366, 51367, 51369, 51370, 51371, 51372, 51373, 51374, 51375,
- 51376, 51377, 51378, 51379, 51380, 51381, 51382, 51383, 51384, 51385,
- 51386, 51387, 51390, 51391, 51392, 51393, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 51394, 51395, 51397, 51398, 51399, 51401, 51402, 51403,
- 51405, 51406, 51407, 51408, 51409, 51410, 51411, 51414, 51416, 51418,
- 51419, 51420, 51421, 51422, 51423, 51426, 51427, 51429, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 51430, 51431, 51432, 51433, 51434, 51435,
- 51436, 51437, 51438, 51439, 51440, 51441, 51442, 51443, 51444, 51446,
- 51447, 51448, 51449, 51450, 51451, 51454, 51455, 51457, 51458, 51459,
- 51463, 51464, 51465, 51466, 51467, 51470, 12288, 12289, 12290, 183,
- 8229, 8230, 168, 12291, 173, 8213, 8741, 65340, 8764, 8216,
- 8217, 8220, 8221, 12308, 12309, 12296, 12297, 12298, 12299, 12300,
- 12301, 12302, 12303, 12304, 12305, 177, 215, 247, 8800, 8804,
- 8805, 8734, 8756, 176, 8242, 8243, 8451, 8491, 65504, 65505,
- 65509, 9794, 9792, 8736, 8869, 8978, 8706, 8711, 8801, 8786,
- 167, 8251, 9734, 9733, 9675, 9679, 9678, 9671, 9670, 9633,
- 9632, 9651, 9650, 9661, 9660, 8594, 8592, 8593, 8595, 8596,
- 12307, 8810, 8811, 8730, 8765, 8733, 8757, 8747, 8748, 8712,
- 8715, 8838, 8839, 8834, 8835, 8746, 8745, 8743, 8744, 65506,
- 51472, 51474, 51475, 51476, 51477, 51478, 51479, 51481, 51482, 51483,
- 51484, 51485, 51486, 51487, 51488, 51489, 51490, 51491, 51492, 51493,
- 51494, 51495, 51496, 51497, 51498, 51499, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 51501, 51502, 51503, 51504, 51505, 51506, 51507, 51509,
- 51510, 51511, 51512, 51513, 51514, 51515, 51516, 51517, 51518, 51519,
- 51520, 51521, 51522, 51523, 51524, 51525, 51526, 51527, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 51528, 51529, 51530, 51531, 51532, 51533,
- 51534, 51535, 51538, 51539, 51541, 51542, 51543, 51545, 51546, 51547,
- 51548, 51549, 51550, 51551, 51554, 51556, 51557, 51558, 51559, 51560,
- 51561, 51562, 51563, 51565, 51566, 51567, 8658, 8660, 8704, 8707,
- 180, 65374, 711, 728, 733, 730, 729, 184, 731, 161,
- 191, 720, 8750, 8721, 8719, 164, 8457, 8240, 9665, 9664,
- 9655, 9654, 9828, 9824, 9825, 9829, 9831, 9827, 8857, 9672,
- 9635, 9680, 9681, 9618, 9636, 9637, 9640, 9639, 9638, 9641,
- 9832, 9743, 9742, 9756, 9758, 182, 8224, 8225, 8597, 8599,
- 8601, 8598, 8600, 9837, 9833, 9834, 9836, 12927, 12828, 8470,
- 13255, 8482, 13250, 13272, 8481, 8364, 174, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 51569, 51570, 51571, 51573, 51574, 51575, 51576, 51577, 51578, 51579,
- 51581, 51582, 51583, 51584, 51585, 51586, 51587, 51588, 51589, 51590,
- 51591, 51594, 51595, 51597, 51598, 51599, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 51601, 51602, 51603, 51604, 51605, 51606, 51607, 51610,
- 51612, 51614, 51615, 51616, 51617, 51618, 51619, 51620, 51621, 51622,
- 51623, 51624, 51625, 51626, 51627, 51628, 51629, 51630, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 51631, 51632, 51633, 51634, 51635, 51636,
- 51637, 51638, 51639, 51640, 51641, 51642, 51643, 51644, 51645, 51646,
- 51647, 51650, 51651, 51653, 51654, 51657, 51659, 51660, 51661, 51662,
- 51663, 51666, 51668, 51671, 51672, 51675, 65281, 65282, 65283, 65284,
- 65285, 65286, 65287, 65288, 65289, 65290, 65291, 65292, 65293, 65294,
- 65295, 65296, 65297, 65298, 65299, 65300, 65301, 65302, 65303, 65304,
- 65305, 65306, 65307, 65308, 65309, 65310, 65311, 65312, 65313, 65314,
- 65315, 65316, 65317, 65318, 65319, 65320, 65321, 65322, 65323, 65324,
- 65325, 65326, 65327, 65328, 65329, 65330, 65331, 65332, 65333, 65334,
- 65335, 65336, 65337, 65338, 65339, 65510, 65341, 65342, 65343, 65344,
- 65345, 65346, 65347, 65348, 65349, 65350, 65351, 65352, 65353, 65354,
- 65355, 65356, 65357, 65358, 65359, 65360, 65361, 65362, 65363, 65364,
- 65365, 65366, 65367, 65368, 65369, 65370, 65371, 65372, 65373, 65507,
- 51678, 51679, 51681, 51683, 51685, 51686, 51688, 51689, 51690, 51691,
- 51694, 51698, 51699, 51700, 51701, 51702, 51703, 51706, 51707, 51709,
- 51710, 51711, 51713, 51714, 51715, 51716, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 51717, 51718, 51719, 51722, 51726, 51727, 51728, 51729,
- 51730, 51731, 51733, 51734, 51735, 51737, 51738, 51739, 51740, 51741,
- 51742, 51743, 51744, 51745, 51746, 51747, 51748, 51749, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 51750, 51751, 51752, 51754, 51755, 51756,
- 51757, 51758, 51759, 51760, 51761, 51762, 51763, 51764, 51765, 51766,
- 51767, 51768, 51769, 51770, 51771, 51772, 51773, 51774, 51775, 51776,
- 51777, 51778, 51779, 51780, 51781, 51782, 12593, 12594, 12595, 12596,
- 12597, 12598, 12599, 12600, 12601, 12602, 12603, 12604, 12605, 12606,
- 12607, 12608, 12609, 12610, 12611, 12612, 12613, 12614, 12615, 12616,
- 12617, 12618, 12619, 12620, 12621, 12622, 12623, 12624, 12625, 12626,
- 12627, 12628, 12629, 12630, 12631, 12632, 12633, 12634, 12635, 12636,
- 12637, 12638, 12639, 12640, 12641, 12642, 12643, 12644, 12645, 12646,
- 12647, 12648, 12649, 12650, 12651, 12652, 12653, 12654, 12655, 12656,
- 12657, 12658, 12659, 12660, 12661, 12662, 12663, 12664, 12665, 12666,
- 12667, 12668, 12669, 12670, 12671, 12672, 12673, 12674, 12675, 12676,
- 12677, 12678, 12679, 12680, 12681, 12682, 12683, 12684, 12685, 12686,
- 51783, 51784, 51785, 51786, 51787, 51790, 51791, 51793, 51794, 51795,
- 51797, 51798, 51799, 51800, 51801, 51802, 51803, 51806, 51810, 51811,
- 51812, 51813, 51814, 51815, 51817, 51818, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 51819, 51820, 51821, 51822, 51823, 51824, 51825, 51826,
- 51827, 51828, 51829, 51830, 51831, 51832, 51833, 51834, 51835, 51836,
- 51838, 51839, 51840, 51841, 51842, 51843, 51845, 51846, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 51847, 51848, 51849, 51850, 51851, 51852,
- 51853, 51854, 51855, 51856, 51857, 51858, 51859, 51860, 51861, 51862,
- 51863, 51865, 51866, 51867, 51868, 51869, 51870, 51871, 51872, 51873,
- 51874, 51875, 51876, 51877, 51878, 51879, 8560, 8561, 8562, 8563,
- 8564, 8565, 8566, 8567, 8568, 8569, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 8544, 8545, 8546, 8547, 8548, 8549, 8550, 8551, 8552,
- 8553, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 913, 914,
- 915, 916, 917, 918, 919, 920, 921, 922, 923, 924,
- 925, 926, 927, 928, 929, 931, 932, 933, 934, 935,
- 936, 937, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 945, 946, 947, 948, 949, 950, 951, 952, 953, 954,
- 955, 956, 957, 958, 959, 960, 961, 963, 964, 965,
- 966, 967, 968, 969, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 51880, 51881, 51882, 51883, 51884, 51885, 51886, 51887, 51888, 51889,
- 51890, 51891, 51892, 51893, 51894, 51895, 51896, 51897, 51898, 51899,
- 51902, 51903, 51905, 51906, 51907, 51909, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 51910, 51911, 51912, 51913, 51914, 51915, 51918, 51920,
- 51922, 51924, 51925, 51926, 51927, 51930, 51931, 51932, 51933, 51934,
- 51935, 51937, 51938, 51939, 51940, 51941, 51942, 51943, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 51944, 51945, 51946, 51947, 51949, 51950,
- 51951, 51952, 51953, 51954, 51955, 51957, 51958, 51959, 51960, 51961,
- 51962, 51963, 51964, 51965, 51966, 51967, 51968, 51969, 51970, 51971,
- 51972, 51973, 51974, 51975, 51977, 51978, 9472, 9474, 9484, 9488,
- 9496, 9492, 9500, 9516, 9508, 9524, 9532, 9473, 9475, 9487,
- 9491, 9499, 9495, 9507, 9523, 9515, 9531, 9547, 9504, 9519,
- 9512, 9527, 9535, 9501, 9520, 9509, 9528, 9538, 9490, 9489,
- 9498, 9497, 9494, 9493, 9486, 9485, 9502, 9503, 9505, 9506,
- 9510, 9511, 9513, 9514, 9517, 9518, 9521, 9522, 9525, 9526,
- 9529, 9530, 9533, 9534, 9536, 9537, 9539, 9540, 9541, 9542,
- 9543, 9544, 9545, 9546, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 51979, 51980, 51981, 51982, 51983, 51985, 51986, 51987, 51989, 51990,
- 51991, 51993, 51994, 51995, 51996, 51997, 51998, 51999, 52002, 52003,
- 52004, 52005, 52006, 52007, 52008, 52009, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 52010, 52011, 52012, 52013, 52014, 52015, 52016, 52017,
- 52018, 52019, 52020, 52021, 52022, 52023, 52024, 52025, 52026, 52027,
- 52028, 52029, 52030, 52031, 52032, 52034, 52035, 52036, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 52037, 52038, 52039, 52042, 52043, 52045,
- 52046, 52047, 52049, 52050, 52051, 52052, 52053, 52054, 52055, 52058,
- 52059, 52060, 52062, 52063, 52064, 52065, 52066, 52067, 52069, 52070,
- 52071, 52072, 52073, 52074, 52075, 52076, 13205, 13206, 13207, 8467,
- 13208, 13252, 13219, 13220, 13221, 13222, 13209, 13210, 13211, 13212,
- 13213, 13214, 13215, 13216, 13217, 13218, 13258, 13197, 13198, 13199,
- 13263, 13192, 13193, 13256, 13223, 13224, 13232, 13233, 13234, 13235,
- 13236, 13237, 13238, 13239, 13240, 13241, 13184, 13185, 13186, 13187,
- 13188, 13242, 13243, 13244, 13245, 13246, 13247, 13200, 13201, 13202,
- 13203, 13204, 8486, 13248, 13249, 13194, 13195, 13196, 13270, 13253,
- 13229, 13230, 13231, 13275, 13225, 13226, 13227, 13228, 13277, 13264,
- 13267, 13251, 13257, 13276, 13254, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 52077, 52078, 52079, 52080, 52081, 52082, 52083, 52084, 52085, 52086,
- 52087, 52090, 52091, 52092, 52093, 52094, 52095, 52096, 52097, 52098,
- 52099, 52100, 52101, 52102, 52103, 52104, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 52105, 52106, 52107, 52108, 52109, 52110, 52111, 52112,
- 52113, 52114, 52115, 52116, 52117, 52118, 52119, 52120, 52121, 52122,
- 52123, 52125, 52126, 52127, 52128, 52129, 52130, 52131, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 52132, 52133, 52134, 52135, 52136, 52137,
- 52138, 52139, 52140, 52141, 52142, 52143, 52144, 52145, 52146, 52147,
- 52148, 52149, 52150, 52151, 52153, 52154, 52155, 52156, 52157, 52158,
- 52159, 52160, 52161, 52162, 52163, 52164, 198, 208, 170, 294,
- 0x0000, 306, 0x0000, 319, 321, 216, 338, 186, 222, 358,
- 330, 0x0000, 12896, 12897, 12898, 12899, 12900, 12901, 12902, 12903,
- 12904, 12905, 12906, 12907, 12908, 12909, 12910, 12911, 12912, 12913,
- 12914, 12915, 12916, 12917, 12918, 12919, 12920, 12921, 12922, 12923,
- 9424, 9425, 9426, 9427, 9428, 9429, 9430, 9431, 9432, 9433,
- 9434, 9435, 9436, 9437, 9438, 9439, 9440, 9441, 9442, 9443,
- 9444, 9445, 9446, 9447, 9448, 9449, 9312, 9313, 9314, 9315,
- 9316, 9317, 9318, 9319, 9320, 9321, 9322, 9323, 9324, 9325,
- 9326, 189, 8531, 8532, 188, 190, 8539, 8540, 8541, 8542,
- 52165, 52166, 52167, 52168, 52169, 52170, 52171, 52172, 52173, 52174,
- 52175, 52176, 52177, 52178, 52179, 52181, 52182, 52183, 52184, 52185,
- 52186, 52187, 52188, 52189, 52190, 52191, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 52192, 52193, 52194, 52195, 52197, 52198, 52200, 52202,
- 52203, 52204, 52205, 52206, 52207, 52208, 52209, 52210, 52211, 52212,
- 52213, 52214, 52215, 52216, 52217, 52218, 52219, 52220, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 52221, 52222, 52223, 52224, 52225, 52226,
- 52227, 52228, 52229, 52230, 52231, 52232, 52233, 52234, 52235, 52238,
- 52239, 52241, 52242, 52243, 52245, 52246, 52247, 52248, 52249, 52250,
- 52251, 52254, 52255, 52256, 52259, 52260, 230, 273, 240, 295,
- 305, 307, 312, 320, 322, 248, 339, 223, 254, 359,
- 331, 329, 12800, 12801, 12802, 12803, 12804, 12805, 12806, 12807,
- 12808, 12809, 12810, 12811, 12812, 12813, 12814, 12815, 12816, 12817,
- 12818, 12819, 12820, 12821, 12822, 12823, 12824, 12825, 12826, 12827,
- 9372, 9373, 9374, 9375, 9376, 9377, 9378, 9379, 9380, 9381,
- 9382, 9383, 9384, 9385, 9386, 9387, 9388, 9389, 9390, 9391,
- 9392, 9393, 9394, 9395, 9396, 9397, 9332, 9333, 9334, 9335,
- 9336, 9337, 9338, 9339, 9340, 9341, 9342, 9343, 9344, 9345,
- 9346, 185, 178, 179, 8308, 8319, 8321, 8322, 8323, 8324,
- 52261, 52262, 52266, 52267, 52269, 52271, 52273, 52274, 52275, 52276,
- 52277, 52278, 52279, 52282, 52287, 52288, 52289, 52290, 52291, 52294,
- 52295, 52297, 52298, 52299, 52301, 52302, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 52303, 52304, 52305, 52306, 52307, 52310, 52314, 52315,
- 52316, 52317, 52318, 52319, 52321, 52322, 52323, 52325, 52327, 52329,
- 52330, 52331, 52332, 52333, 52334, 52335, 52337, 52338, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 52339, 52340, 52342, 52343, 52344, 52345,
- 52346, 52347, 52348, 52349, 52350, 52351, 52352, 52353, 52354, 52355,
- 52356, 52357, 52358, 52359, 52360, 52361, 52362, 52363, 52364, 52365,
- 52366, 52367, 52368, 52369, 52370, 52371, 12353, 12354, 12355, 12356,
- 12357, 12358, 12359, 12360, 12361, 12362, 12363, 12364, 12365, 12366,
- 12367, 12368, 12369, 12370, 12371, 12372, 12373, 12374, 12375, 12376,
- 12377, 12378, 12379, 12380, 12381, 12382, 12383, 12384, 12385, 12386,
- 12387, 12388, 12389, 12390, 12391, 12392, 12393, 12394, 12395, 12396,
- 12397, 12398, 12399, 12400, 12401, 12402, 12403, 12404, 12405, 12406,
- 12407, 12408, 12409, 12410, 12411, 12412, 12413, 12414, 12415, 12416,
- 12417, 12418, 12419, 12420, 12421, 12422, 12423, 12424, 12425, 12426,
- 12427, 12428, 12429, 12430, 12431, 12432, 12433, 12434, 12435, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 52372, 52373, 52374, 52375, 52378, 52379, 52381, 52382, 52383, 52385,
- 52386, 52387, 52388, 52389, 52390, 52391, 52394, 52398, 52399, 52400,
- 52401, 52402, 52403, 52406, 52407, 52409, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 52410, 52411, 52413, 52414, 52415, 52416, 52417, 52418,
- 52419, 52422, 52424, 52426, 52427, 52428, 52429, 52430, 52431, 52433,
- 52434, 52435, 52437, 52438, 52439, 52440, 52441, 52442, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 52443, 52444, 52445, 52446, 52447, 52448,
- 52449, 52450, 52451, 52453, 52454, 52455, 52456, 52457, 52458, 52459,
- 52461, 52462, 52463, 52465, 52466, 52467, 52468, 52469, 52470, 52471,
- 52472, 52473, 52474, 52475, 52476, 52477, 12449, 12450, 12451, 12452,
- 12453, 12454, 12455, 12456, 12457, 12458, 12459, 12460, 12461, 12462,
- 12463, 12464, 12465, 12466, 12467, 12468, 12469, 12470, 12471, 12472,
- 12473, 12474, 12475, 12476, 12477, 12478, 12479, 12480, 12481, 12482,
- 12483, 12484, 12485, 12486, 12487, 12488, 12489, 12490, 12491, 12492,
- 12493, 12494, 12495, 12496, 12497, 12498, 12499, 12500, 12501, 12502,
- 12503, 12504, 12505, 12506, 12507, 12508, 12509, 12510, 12511, 12512,
- 12513, 12514, 12515, 12516, 12517, 12518, 12519, 12520, 12521, 12522,
- 12523, 12524, 12525, 12526, 12527, 12528, 12529, 12530, 12531, 12532,
- 12533, 12534, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 52478, 52479, 52480, 52482, 52483, 52484, 52485, 52486, 52487, 52490,
- 52491, 52493, 52494, 52495, 52497, 52498, 52499, 52500, 52501, 52502,
- 52503, 52506, 52508, 52510, 52511, 52512, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 52513, 52514, 52515, 52517, 52518, 52519, 52521, 52522,
- 52523, 52525, 52526, 52527, 52528, 52529, 52530, 52531, 52532, 52533,
- 52534, 52535, 52536, 52538, 52539, 52540, 52541, 52542, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 52543, 52544, 52545, 52546, 52547, 52548,
- 52549, 52550, 52551, 52552, 52553, 52554, 52555, 52556, 52557, 52558,
- 52559, 52560, 52561, 52562, 52563, 52564, 52565, 52566, 52567, 52568,
- 52569, 52570, 52571, 52573, 52574, 52575, 1040, 1041, 1042, 1043,
- 1044, 1045, 1025, 1046, 1047, 1048, 1049, 1050, 1051, 1052,
- 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062,
- 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 1072, 1073, 1074, 1075, 1076, 1077,
- 1105, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
- 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096,
- 1097, 1098, 1099, 1100, 1101, 1102, 1103, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 52577, 52578, 52579, 52581, 52582, 52583, 52584, 52585, 52586, 52587,
- 52590, 52592, 52594, 52595, 52596, 52597, 52598, 52599, 52601, 52602,
- 52603, 52604, 52605, 52606, 52607, 52608, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 52609, 52610, 52611, 52612, 52613, 52614, 52615, 52617,
- 52618, 52619, 52620, 52621, 52622, 52623, 52624, 52625, 52626, 52627,
- 52630, 52631, 52633, 52634, 52635, 52637, 52638, 52639, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 52640, 52641, 52642, 52643, 52646, 52648,
- 52650, 52651, 52652, 52653, 52654, 52655, 52657, 52658, 52659, 52660,
- 52661, 52662, 52663, 52664, 52665, 52666, 52667, 52668, 52669, 52670,
- 52671, 52672, 52673, 52674, 52675, 52677, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 52678, 52679, 52680, 52681, 52682, 52683, 52685, 52686, 52687, 52689,
- 52690, 52691, 52692, 52693, 52694, 52695, 52696, 52697, 52698, 52699,
- 52700, 52701, 52702, 52703, 52704, 52705, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 52706, 52707, 52708, 52709, 52710, 52711, 52713, 52714,
- 52715, 52717, 52718, 52719, 52721, 52722, 52723, 52724, 52725, 52726,
- 52727, 52730, 52732, 52734, 52735, 52736, 52737, 52738, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 52739, 52741, 52742, 52743, 52745, 52746,
- 52747, 52749, 52750, 52751, 52752, 52753, 52754, 52755, 52757, 52758,
- 52759, 52760, 52762, 52763, 52764, 52765, 52766, 52767, 52770, 52771,
- 52773, 52774, 52775, 52777, 52778, 52779, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 52780, 52781, 52782, 52783, 52786, 52788, 52790, 52791, 52792, 52793,
- 52794, 52795, 52796, 52797, 52798, 52799, 52800, 52801, 52802, 52803,
- 52804, 52805, 52806, 52807, 52808, 52809, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 52810, 52811, 52812, 52813, 52814, 52815, 52816, 52817,
- 52818, 52819, 52820, 52821, 52822, 52823, 52826, 52827, 52829, 52830,
- 52834, 52835, 52836, 52837, 52838, 52839, 52842, 52844, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 52846, 52847, 52848, 52849, 52850, 52851,
- 52854, 52855, 52857, 52858, 52859, 52861, 52862, 52863, 52864, 52865,
- 52866, 52867, 52870, 52872, 52874, 52875, 52876, 52877, 52878, 52879,
- 52882, 52883, 52885, 52886, 52887, 52889, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 52890, 52891, 52892, 52893, 52894, 52895, 52898, 52902, 52903, 52904,
- 52905, 52906, 52907, 52910, 52911, 52912, 52913, 52914, 52915, 52916,
- 52917, 52918, 52919, 52920, 52921, 52922, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 52923, 52924, 52925, 52926, 52927, 52928, 52930, 52931,
- 52932, 52933, 52934, 52935, 52936, 52937, 52938, 52939, 52940, 52941,
- 52942, 52943, 52944, 52945, 52946, 52947, 52948, 52949, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 52950, 52951, 52952, 52953, 52954, 52955,
- 52956, 52957, 52958, 52959, 52960, 52961, 52962, 52963, 52966, 52967,
- 52969, 52970, 52973, 52974, 52975, 52976, 52977, 52978, 52979, 52982,
- 52986, 52987, 52988, 52989, 52990, 52991, 44032, 44033, 44036, 44039,
- 44040, 44041, 44042, 44048, 44049, 44050, 44051, 44052, 44053, 44054,
- 44055, 44057, 44058, 44059, 44060, 44061, 44064, 44068, 44076, 44077,
- 44079, 44080, 44081, 44088, 44089, 44092, 44096, 44107, 44109, 44116,
- 44120, 44124, 44144, 44145, 44148, 44151, 44152, 44154, 44160, 44161,
- 44163, 44164, 44165, 44166, 44169, 44170, 44171, 44172, 44176, 44180,
- 44188, 44189, 44191, 44192, 44193, 44200, 44201, 44202, 44204, 44207,
- 44208, 44216, 44217, 44219, 44220, 44221, 44225, 44228, 44232, 44236,
- 44245, 44247, 44256, 44257, 44260, 44263, 44264, 44266, 44268, 44271,
- 44272, 44273, 44275, 44277, 44278, 44284, 44285, 44288, 44292, 44294,
- 52994, 52995, 52997, 52998, 52999, 53001, 53002, 53003, 53004, 53005,
- 53006, 53007, 53010, 53012, 53014, 53015, 53016, 53017, 53018, 53019,
- 53021, 53022, 53023, 53025, 53026, 53027, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 53029, 53030, 53031, 53032, 53033, 53034, 53035, 53038,
- 53042, 53043, 53044, 53045, 53046, 53047, 53049, 53050, 53051, 53052,
- 53053, 53054, 53055, 53056, 53057, 53058, 53059, 53060, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 53061, 53062, 53063, 53064, 53065, 53066,
- 53067, 53068, 53069, 53070, 53071, 53072, 53073, 53074, 53075, 53078,
- 53079, 53081, 53082, 53083, 53085, 53086, 53087, 53088, 53089, 53090,
- 53091, 53094, 53096, 53098, 53099, 53100, 44300, 44301, 44303, 44305,
- 44312, 44316, 44320, 44329, 44332, 44333, 44340, 44341, 44344, 44348,
- 44356, 44357, 44359, 44361, 44368, 44372, 44376, 44385, 44387, 44396,
- 44397, 44400, 44403, 44404, 44405, 44406, 44411, 44412, 44413, 44415,
- 44417, 44418, 44424, 44425, 44428, 44432, 44444, 44445, 44452, 44471,
- 44480, 44481, 44484, 44488, 44496, 44497, 44499, 44508, 44512, 44516,
- 44536, 44537, 44540, 44543, 44544, 44545, 44552, 44553, 44555, 44557,
- 44564, 44592, 44593, 44596, 44599, 44600, 44602, 44608, 44609, 44611,
- 44613, 44614, 44618, 44620, 44621, 44622, 44624, 44628, 44630, 44636,
- 44637, 44639, 44640, 44641, 44645, 44648, 44649, 44652, 44656, 44664,
- 53101, 53102, 53103, 53106, 53107, 53109, 53110, 53111, 53113, 53114,
- 53115, 53116, 53117, 53118, 53119, 53121, 53122, 53123, 53124, 53126,
- 53127, 53128, 53129, 53130, 53131, 53133, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 53134, 53135, 53136, 53137, 53138, 53139, 53140, 53141,
- 53142, 53143, 53144, 53145, 53146, 53147, 53148, 53149, 53150, 53151,
- 53152, 53154, 53155, 53156, 53157, 53158, 53159, 53161, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 53162, 53163, 53164, 53165, 53166, 53167,
- 53169, 53170, 53171, 53172, 53173, 53174, 53175, 53176, 53177, 53178,
- 53179, 53180, 53181, 53182, 53183, 53184, 53185, 53186, 53187, 53189,
- 53190, 53191, 53192, 53193, 53194, 53195, 44665, 44667, 44668, 44669,
- 44676, 44677, 44684, 44732, 44733, 44734, 44736, 44740, 44748, 44749,
- 44751, 44752, 44753, 44760, 44761, 44764, 44776, 44779, 44781, 44788,
- 44792, 44796, 44807, 44808, 44813, 44816, 44844, 44845, 44848, 44850,
- 44852, 44860, 44861, 44863, 44865, 44866, 44867, 44872, 44873, 44880,
- 44892, 44893, 44900, 44901, 44921, 44928, 44932, 44936, 44944, 44945,
- 44949, 44956, 44984, 44985, 44988, 44992, 44999, 45000, 45001, 45003,
- 45005, 45006, 45012, 45020, 45032, 45033, 45040, 45041, 45044, 45048,
- 45056, 45057, 45060, 45068, 45072, 45076, 45084, 45085, 45096, 45124,
- 45125, 45128, 45130, 45132, 45134, 45139, 45140, 45141, 45143, 45145,
- 53196, 53197, 53198, 53199, 53200, 53201, 53202, 53203, 53204, 53205,
- 53206, 53207, 53208, 53209, 53210, 53211, 53212, 53213, 53214, 53215,
- 53218, 53219, 53221, 53222, 53223, 53225, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 53226, 53227, 53228, 53229, 53230, 53231, 53234, 53236,
- 53238, 53239, 53240, 53241, 53242, 53243, 53245, 53246, 53247, 53249,
- 53250, 53251, 53253, 53254, 53255, 53256, 53257, 53258, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 53259, 53260, 53261, 53262, 53263, 53264,
- 53266, 53267, 53268, 53269, 53270, 53271, 53273, 53274, 53275, 53276,
- 53277, 53278, 53279, 53280, 53281, 53282, 53283, 53284, 53285, 53286,
- 53287, 53288, 53289, 53290, 53291, 53292, 45149, 45180, 45181, 45184,
- 45188, 45196, 45197, 45199, 45201, 45208, 45209, 45210, 45212, 45215,
- 45216, 45217, 45218, 45224, 45225, 45227, 45228, 45229, 45230, 45231,
- 45233, 45235, 45236, 45237, 45240, 45244, 45252, 45253, 45255, 45256,
- 45257, 45264, 45265, 45268, 45272, 45280, 45285, 45320, 45321, 45323,
- 45324, 45328, 45330, 45331, 45336, 45337, 45339, 45340, 45341, 45347,
- 45348, 45349, 45352, 45356, 45364, 45365, 45367, 45368, 45369, 45376,
- 45377, 45380, 45384, 45392, 45393, 45396, 45397, 45400, 45404, 45408,
- 45432, 45433, 45436, 45440, 45442, 45448, 45449, 45451, 45453, 45458,
- 45459, 45460, 45464, 45468, 45480, 45516, 45520, 45524, 45532, 45533,
- 53294, 53295, 53296, 53297, 53298, 53299, 53302, 53303, 53305, 53306,
- 53307, 53309, 53310, 53311, 53312, 53313, 53314, 53315, 53318, 53320,
- 53322, 53323, 53324, 53325, 53326, 53327, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 53329, 53330, 53331, 53333, 53334, 53335, 53337, 53338,
- 53339, 53340, 53341, 53342, 53343, 53345, 53346, 53347, 53348, 53349,
- 53350, 53351, 53352, 53353, 53354, 53355, 53358, 53359, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 53361, 53362, 53363, 53365, 53366, 53367,
- 53368, 53369, 53370, 53371, 53374, 53375, 53376, 53378, 53379, 53380,
- 53381, 53382, 53383, 53384, 53385, 53386, 53387, 53388, 53389, 53390,
- 53391, 53392, 53393, 53394, 53395, 53396, 45535, 45544, 45545, 45548,
- 45552, 45561, 45563, 45565, 45572, 45573, 45576, 45579, 45580, 45588,
- 45589, 45591, 45593, 45600, 45620, 45628, 45656, 45660, 45664, 45672,
- 45673, 45684, 45685, 45692, 45700, 45701, 45705, 45712, 45713, 45716,
- 45720, 45721, 45722, 45728, 45729, 45731, 45733, 45734, 45738, 45740,
- 45744, 45748, 45768, 45769, 45772, 45776, 45778, 45784, 45785, 45787,
- 45789, 45794, 45796, 45797, 45798, 45800, 45803, 45804, 45805, 45806,
- 45807, 45811, 45812, 45813, 45815, 45816, 45817, 45818, 45819, 45823,
- 45824, 45825, 45828, 45832, 45840, 45841, 45843, 45844, 45845, 45852,
- 45908, 45909, 45910, 45912, 45915, 45916, 45918, 45919, 45924, 45925,
- 53397, 53398, 53399, 53400, 53401, 53402, 53403, 53404, 53405, 53406,
- 53407, 53408, 53409, 53410, 53411, 53414, 53415, 53417, 53418, 53419,
- 53421, 53422, 53423, 53424, 53425, 53426, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 53427, 53430, 53432, 53434, 53435, 53436, 53437, 53438,
- 53439, 53442, 53443, 53445, 53446, 53447, 53450, 53451, 53452, 53453,
- 53454, 53455, 53458, 53462, 53463, 53464, 53465, 53466, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 53467, 53470, 53471, 53473, 53474, 53475,
- 53477, 53478, 53479, 53480, 53481, 53482, 53483, 53486, 53490, 53491,
- 53492, 53493, 53494, 53495, 53497, 53498, 53499, 53500, 53501, 53502,
- 53503, 53504, 53505, 53506, 53507, 53508, 45927, 45929, 45931, 45934,
- 45936, 45937, 45940, 45944, 45952, 45953, 45955, 45956, 45957, 45964,
- 45968, 45972, 45984, 45985, 45992, 45996, 46020, 46021, 46024, 46027,
- 46028, 46030, 46032, 46036, 46037, 46039, 46041, 46043, 46045, 46048,
- 46052, 46056, 46076, 46096, 46104, 46108, 46112, 46120, 46121, 46123,
- 46132, 46160, 46161, 46164, 46168, 46176, 46177, 46179, 46181, 46188,
- 46208, 46216, 46237, 46244, 46248, 46252, 46261, 46263, 46265, 46272,
- 46276, 46280, 46288, 46293, 46300, 46301, 46304, 46307, 46308, 46310,
- 46316, 46317, 46319, 46321, 46328, 46356, 46357, 46360, 46363, 46364,
- 46372, 46373, 46375, 46376, 46377, 46378, 46384, 46385, 46388, 46392,
- 53509, 53510, 53511, 53512, 53513, 53514, 53515, 53516, 53518, 53519,
- 53520, 53521, 53522, 53523, 53524, 53525, 53526, 53527, 53528, 53529,
- 53530, 53531, 53532, 53533, 53534, 53535, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 53536, 53537, 53538, 53539, 53540, 53541, 53542, 53543,
- 53544, 53545, 53546, 53547, 53548, 53549, 53550, 53551, 53554, 53555,
- 53557, 53558, 53559, 53561, 53563, 53564, 53565, 53566, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 53567, 53570, 53574, 53575, 53576, 53577,
- 53578, 53579, 53582, 53583, 53585, 53586, 53587, 53589, 53590, 53591,
- 53592, 53593, 53594, 53595, 53598, 53600, 53602, 53603, 53604, 53605,
- 53606, 53607, 53609, 53610, 53611, 53613, 46400, 46401, 46403, 46404,
- 46405, 46411, 46412, 46413, 46416, 46420, 46428, 46429, 46431, 46432,
- 46433, 46496, 46497, 46500, 46504, 46506, 46507, 46512, 46513, 46515,
- 46516, 46517, 46523, 46524, 46525, 46528, 46532, 46540, 46541, 46543,
- 46544, 46545, 46552, 46572, 46608, 46609, 46612, 46616, 46629, 46636,
- 46644, 46664, 46692, 46696, 46748, 46749, 46752, 46756, 46763, 46764,
- 46769, 46804, 46832, 46836, 46840, 46848, 46849, 46853, 46888, 46889,
- 46892, 46895, 46896, 46904, 46905, 46907, 46916, 46920, 46924, 46932,
- 46933, 46944, 46948, 46952, 46960, 46961, 46963, 46965, 46972, 46973,
- 46976, 46980, 46988, 46989, 46991, 46992, 46993, 46994, 46998, 46999,
- 53614, 53615, 53616, 53617, 53618, 53619, 53620, 53621, 53622, 53623,
- 53624, 53625, 53626, 53627, 53629, 53630, 53631, 53632, 53633, 53634,
- 53635, 53637, 53638, 53639, 53641, 53642, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 53643, 53644, 53645, 53646, 53647, 53648, 53649, 53650,
- 53651, 53652, 53653, 53654, 53655, 53656, 53657, 53658, 53659, 53660,
- 53661, 53662, 53663, 53666, 53667, 53669, 53670, 53671, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 53673, 53674, 53675, 53676, 53677, 53678,
- 53679, 53682, 53684, 53686, 53687, 53688, 53689, 53691, 53693, 53694,
- 53695, 53697, 53698, 53699, 53700, 53701, 53702, 53703, 53704, 53705,
- 53706, 53707, 53708, 53709, 53710, 53711, 47000, 47001, 47004, 47008,
- 47016, 47017, 47019, 47020, 47021, 47028, 47029, 47032, 47047, 47049,
- 47084, 47085, 47088, 47092, 47100, 47101, 47103, 47104, 47105, 47111,
- 47112, 47113, 47116, 47120, 47128, 47129, 47131, 47133, 47140, 47141,
- 47144, 47148, 47156, 47157, 47159, 47160, 47161, 47168, 47172, 47185,
- 47187, 47196, 47197, 47200, 47204, 47212, 47213, 47215, 47217, 47224,
- 47228, 47245, 47272, 47280, 47284, 47288, 47296, 47297, 47299, 47301,
- 47308, 47312, 47316, 47325, 47327, 47329, 47336, 47337, 47340, 47344,
- 47352, 47353, 47355, 47357, 47364, 47384, 47392, 47420, 47421, 47424,
- 47428, 47436, 47439, 47441, 47448, 47449, 47452, 47456, 47464, 47465,
- 53712, 53713, 53714, 53715, 53716, 53717, 53718, 53719, 53721, 53722,
- 53723, 53724, 53725, 53726, 53727, 53728, 53729, 53730, 53731, 53732,
- 53733, 53734, 53735, 53736, 53737, 53738, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 53739, 53740, 53741, 53742, 53743, 53744, 53745, 53746,
- 53747, 53749, 53750, 53751, 53753, 53754, 53755, 53756, 53757, 53758,
- 53759, 53760, 53761, 53762, 53763, 53764, 53765, 53766, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 53768, 53770, 53771, 53772, 53773, 53774,
- 53775, 53777, 53778, 53779, 53780, 53781, 53782, 53783, 53784, 53785,
- 53786, 53787, 53788, 53789, 53790, 53791, 53792, 53793, 53794, 53795,
- 53796, 53797, 53798, 53799, 53800, 53801, 47467, 47469, 47476, 47477,
- 47480, 47484, 47492, 47493, 47495, 47497, 47498, 47501, 47502, 47532,
- 47533, 47536, 47540, 47548, 47549, 47551, 47553, 47560, 47561, 47564,
- 47566, 47567, 47568, 47569, 47570, 47576, 47577, 47579, 47581, 47582,
- 47585, 47587, 47588, 47589, 47592, 47596, 47604, 47605, 47607, 47608,
- 47609, 47610, 47616, 47617, 47624, 47637, 47672, 47673, 47676, 47680,
- 47682, 47688, 47689, 47691, 47693, 47694, 47699, 47700, 47701, 47704,
- 47708, 47716, 47717, 47719, 47720, 47721, 47728, 47729, 47732, 47736,
- 47747, 47748, 47749, 47751, 47756, 47784, 47785, 47787, 47788, 47792,
- 47794, 47800, 47801, 47803, 47805, 47812, 47816, 47832, 47833, 47868,
- 53802, 53803, 53806, 53807, 53809, 53810, 53811, 53813, 53814, 53815,
- 53816, 53817, 53818, 53819, 53822, 53824, 53826, 53827, 53828, 53829,
- 53830, 53831, 53833, 53834, 53835, 53836, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 53837, 53838, 53839, 53840, 53841, 53842, 53843, 53844,
- 53845, 53846, 53847, 53848, 53849, 53850, 53851, 53853, 53854, 53855,
- 53856, 53857, 53858, 53859, 53861, 53862, 53863, 53864, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 53865, 53866, 53867, 53868, 53869, 53870,
- 53871, 53872, 53873, 53874, 53875, 53876, 53877, 53878, 53879, 53880,
- 53881, 53882, 53883, 53884, 53885, 53886, 53887, 53890, 53891, 53893,
- 53894, 53895, 53897, 53898, 53899, 53900, 47872, 47876, 47885, 47887,
- 47889, 47896, 47900, 47904, 47913, 47915, 47924, 47925, 47926, 47928,
- 47931, 47932, 47933, 47934, 47940, 47941, 47943, 47945, 47949, 47951,
- 47952, 47956, 47960, 47969, 47971, 47980, 48008, 48012, 48016, 48036,
- 48040, 48044, 48052, 48055, 48064, 48068, 48072, 48080, 48083, 48120,
- 48121, 48124, 48127, 48128, 48130, 48136, 48137, 48139, 48140, 48141,
- 48143, 48145, 48148, 48149, 48150, 48151, 48152, 48155, 48156, 48157,
- 48158, 48159, 48164, 48165, 48167, 48169, 48173, 48176, 48177, 48180,
- 48184, 48192, 48193, 48195, 48196, 48197, 48201, 48204, 48205, 48208,
- 48221, 48260, 48261, 48264, 48267, 48268, 48270, 48276, 48277, 48279,
- 53901, 53902, 53903, 53906, 53907, 53908, 53910, 53911, 53912, 53913,
- 53914, 53915, 53917, 53918, 53919, 53921, 53922, 53923, 53925, 53926,
- 53927, 53928, 53929, 53930, 53931, 53933, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 53934, 53935, 53936, 53938, 53939, 53940, 53941, 53942,
- 53943, 53946, 53947, 53949, 53950, 53953, 53955, 53956, 53957, 53958,
- 53959, 53962, 53964, 53965, 53966, 53967, 53968, 53969, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 53970, 53971, 53973, 53974, 53975, 53977,
- 53978, 53979, 53981, 53982, 53983, 53984, 53985, 53986, 53987, 53990,
- 53991, 53992, 53993, 53994, 53995, 53996, 53997, 53998, 53999, 54002,
- 54003, 54005, 54006, 54007, 54009, 54010, 48281, 48282, 48288, 48289,
- 48292, 48295, 48296, 48304, 48305, 48307, 48308, 48309, 48316, 48317,
- 48320, 48324, 48333, 48335, 48336, 48337, 48341, 48344, 48348, 48372,
- 48373, 48374, 48376, 48380, 48388, 48389, 48391, 48393, 48400, 48404,
- 48420, 48428, 48448, 48456, 48457, 48460, 48464, 48472, 48473, 48484,
- 48488, 48512, 48513, 48516, 48519, 48520, 48521, 48522, 48528, 48529,
- 48531, 48533, 48537, 48538, 48540, 48548, 48560, 48568, 48596, 48597,
- 48600, 48604, 48617, 48624, 48628, 48632, 48640, 48643, 48645, 48652,
- 48653, 48656, 48660, 48668, 48669, 48671, 48708, 48709, 48712, 48716,
- 48718, 48724, 48725, 48727, 48729, 48730, 48731, 48736, 48737, 48740,
- 54011, 54012, 54013, 54014, 54015, 54018, 54020, 54022, 54023, 54024,
- 54025, 54026, 54027, 54031, 54033, 54034, 54035, 54037, 54039, 54040,
- 54041, 54042, 54043, 54046, 54050, 54051, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 54052, 54054, 54055, 54058, 54059, 54061, 54062, 54063,
- 54065, 54066, 54067, 54068, 54069, 54070, 54071, 54074, 54078, 54079,
- 54080, 54081, 54082, 54083, 54086, 54087, 54088, 54089, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 54090, 54091, 54092, 54093, 54094, 54095,
- 54096, 54097, 54098, 54099, 54100, 54101, 54102, 54103, 54104, 54105,
- 54106, 54107, 54108, 54109, 54110, 54111, 54112, 54113, 54114, 54115,
- 54116, 54117, 54118, 54119, 54120, 54121, 48744, 48746, 48752, 48753,
- 48755, 48756, 48757, 48763, 48764, 48765, 48768, 48772, 48780, 48781,
- 48783, 48784, 48785, 48792, 48793, 48808, 48848, 48849, 48852, 48855,
- 48856, 48864, 48867, 48868, 48869, 48876, 48897, 48904, 48905, 48920,
- 48921, 48923, 48924, 48925, 48960, 48961, 48964, 48968, 48976, 48977,
- 48981, 49044, 49072, 49093, 49100, 49101, 49104, 49108, 49116, 49119,
- 49121, 49212, 49233, 49240, 49244, 49248, 49256, 49257, 49296, 49297,
- 49300, 49304, 49312, 49313, 49315, 49317, 49324, 49325, 49327, 49328,
- 49331, 49332, 49333, 49334, 49340, 49341, 49343, 49344, 49345, 49349,
- 49352, 49353, 49356, 49360, 49368, 49369, 49371, 49372, 49373, 49380,
- 54122, 54123, 54124, 54125, 54126, 54127, 54128, 54129, 54130, 54131,
- 54132, 54133, 54134, 54135, 54136, 54137, 54138, 54139, 54142, 54143,
- 54145, 54146, 54147, 54149, 54150, 54151, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 54152, 54153, 54154, 54155, 54158, 54162, 54163, 54164,
- 54165, 54166, 54167, 54170, 54171, 54173, 54174, 54175, 54177, 54178,
- 54179, 54180, 54181, 54182, 54183, 54186, 54188, 54190, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 54191, 54192, 54193, 54194, 54195, 54197,
- 54198, 54199, 54201, 54202, 54203, 54205, 54206, 54207, 54208, 54209,
- 54210, 54211, 54214, 54215, 54218, 54219, 54220, 54221, 54222, 54223,
- 54225, 54226, 54227, 54228, 54229, 54230, 49381, 49384, 49388, 49396,
- 49397, 49399, 49401, 49408, 49412, 49416, 49424, 49429, 49436, 49437,
- 49438, 49439, 49440, 49443, 49444, 49446, 49447, 49452, 49453, 49455,
- 49456, 49457, 49462, 49464, 49465, 49468, 49472, 49480, 49481, 49483,
- 49484, 49485, 49492, 49493, 49496, 49500, 49508, 49509, 49511, 49512,
- 49513, 49520, 49524, 49528, 49541, 49548, 49549, 49550, 49552, 49556,
- 49558, 49564, 49565, 49567, 49569, 49573, 49576, 49577, 49580, 49584,
- 49597, 49604, 49608, 49612, 49620, 49623, 49624, 49632, 49636, 49640,
- 49648, 49649, 49651, 49660, 49661, 49664, 49668, 49676, 49677, 49679,
- 49681, 49688, 49689, 49692, 49695, 49696, 49704, 49705, 49707, 49709,
- 54231, 54233, 54234, 54235, 54236, 54237, 54238, 54239, 54240, 54242,
- 54244, 54245, 54246, 54247, 54248, 54249, 54250, 54251, 54254, 54255,
- 54257, 54258, 54259, 54261, 54262, 54263, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 54264, 54265, 54266, 54267, 54270, 54272, 54274, 54275,
- 54276, 54277, 54278, 54279, 54281, 54282, 54283, 54284, 54285, 54286,
- 54287, 54288, 54289, 54290, 54291, 54292, 54293, 54294, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 54295, 54296, 54297, 54298, 54299, 54300,
- 54302, 54303, 54304, 54305, 54306, 54307, 54308, 54309, 54310, 54311,
- 54312, 54313, 54314, 54315, 54316, 54317, 54318, 54319, 54320, 54321,
- 54322, 54323, 54324, 54325, 54326, 54327, 49711, 49713, 49714, 49716,
- 49736, 49744, 49745, 49748, 49752, 49760, 49765, 49772, 49773, 49776,
- 49780, 49788, 49789, 49791, 49793, 49800, 49801, 49808, 49816, 49819,
- 49821, 49828, 49829, 49832, 49836, 49837, 49844, 49845, 49847, 49849,
- 49884, 49885, 49888, 49891, 49892, 49899, 49900, 49901, 49903, 49905,
- 49910, 49912, 49913, 49915, 49916, 49920, 49928, 49929, 49932, 49933,
- 49939, 49940, 49941, 49944, 49948, 49956, 49957, 49960, 49961, 49989,
- 50024, 50025, 50028, 50032, 50034, 50040, 50041, 50044, 50045, 50052,
- 50056, 50060, 50112, 50136, 50137, 50140, 50143, 50144, 50146, 50152,
- 50153, 50157, 50164, 50165, 50168, 50184, 50192, 50212, 50220, 50224,
- 54328, 54329, 54330, 54331, 54332, 54333, 54334, 54335, 54337, 54338,
- 54339, 54341, 54342, 54343, 54344, 54345, 54346, 54347, 54348, 54349,
- 54350, 54351, 54352, 54353, 54354, 54355, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 54356, 54357, 54358, 54359, 54360, 54361, 54362, 54363,
- 54365, 54366, 54367, 54369, 54370, 54371, 54373, 54374, 54375, 54376,
- 54377, 54378, 54379, 54380, 54382, 54384, 54385, 54386, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 54387, 54388, 54389, 54390, 54391, 54394,
- 54395, 54397, 54398, 54401, 54403, 54404, 54405, 54406, 54407, 54410,
- 54412, 54414, 54415, 54416, 54417, 54418, 54419, 54421, 54422, 54423,
- 54424, 54425, 54426, 54427, 54428, 54429, 50228, 50236, 50237, 50248,
- 50276, 50277, 50280, 50284, 50292, 50293, 50297, 50304, 50324, 50332,
- 50360, 50364, 50409, 50416, 50417, 50420, 50424, 50426, 50431, 50432,
- 50433, 50444, 50448, 50452, 50460, 50472, 50473, 50476, 50480, 50488,
- 50489, 50491, 50493, 50500, 50501, 50504, 50505, 50506, 50508, 50509,
- 50510, 50515, 50516, 50517, 50519, 50520, 50521, 50525, 50526, 50528,
- 50529, 50532, 50536, 50544, 50545, 50547, 50548, 50549, 50556, 50557,
- 50560, 50564, 50567, 50572, 50573, 50575, 50577, 50581, 50583, 50584,
- 50588, 50592, 50601, 50612, 50613, 50616, 50617, 50619, 50620, 50621,
- 50622, 50628, 50629, 50630, 50631, 50632, 50633, 50634, 50636, 50638,
- 54430, 54431, 54432, 54433, 54434, 54435, 54436, 54437, 54438, 54439,
- 54440, 54442, 54443, 54444, 54445, 54446, 54447, 54448, 54449, 54450,
- 54451, 54452, 54453, 54454, 54455, 54456, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 54457, 54458, 54459, 54460, 54461, 54462, 54463, 54464,
- 54465, 54466, 54467, 54468, 54469, 54470, 54471, 54472, 54473, 54474,
- 54475, 54477, 54478, 54479, 54481, 54482, 54483, 54485, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 54486, 54487, 54488, 54489, 54490, 54491,
- 54493, 54494, 54496, 54497, 54498, 54499, 54500, 54501, 54502, 54503,
- 54505, 54506, 54507, 54509, 54510, 54511, 54513, 54514, 54515, 54516,
- 54517, 54518, 54519, 54521, 54522, 54524, 50640, 50641, 50644, 50648,
- 50656, 50657, 50659, 50661, 50668, 50669, 50670, 50672, 50676, 50678,
- 50679, 50684, 50685, 50686, 50687, 50688, 50689, 50693, 50694, 50695,
- 50696, 50700, 50704, 50712, 50713, 50715, 50716, 50724, 50725, 50728,
- 50732, 50733, 50734, 50736, 50739, 50740, 50741, 50743, 50745, 50747,
- 50752, 50753, 50756, 50760, 50768, 50769, 50771, 50772, 50773, 50780,
- 50781, 50784, 50796, 50799, 50801, 50808, 50809, 50812, 50816, 50824,
- 50825, 50827, 50829, 50836, 50837, 50840, 50844, 50852, 50853, 50855,
- 50857, 50864, 50865, 50868, 50872, 50873, 50874, 50880, 50881, 50883,
- 50885, 50892, 50893, 50896, 50900, 50908, 50909, 50912, 50913, 50920,
- 54526, 54527, 54528, 54529, 54530, 54531, 54533, 54534, 54535, 54537,
- 54538, 54539, 54541, 54542, 54543, 54544, 54545, 54546, 54547, 54550,
- 54552, 54553, 54554, 54555, 54556, 54557, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 54558, 54559, 54560, 54561, 54562, 54563, 54564, 54565,
- 54566, 54567, 54568, 54569, 54570, 54571, 54572, 54573, 54574, 54575,
- 54576, 54577, 54578, 54579, 54580, 54581, 54582, 54583, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 54584, 54585, 54586, 54587, 54590, 54591,
- 54593, 54594, 54595, 54597, 54598, 54599, 54600, 54601, 54602, 54603,
- 54606, 54608, 54610, 54611, 54612, 54613, 54614, 54615, 54618, 54619,
- 54621, 54622, 54623, 54625, 54626, 54627, 50921, 50924, 50928, 50936,
- 50937, 50941, 50948, 50949, 50952, 50956, 50964, 50965, 50967, 50969,
- 50976, 50977, 50980, 50984, 50992, 50993, 50995, 50997, 50999, 51004,
- 51005, 51008, 51012, 51018, 51020, 51021, 51023, 51025, 51026, 51027,
- 51028, 51029, 51030, 51031, 51032, 51036, 51040, 51048, 51051, 51060,
- 51061, 51064, 51068, 51069, 51070, 51075, 51076, 51077, 51079, 51080,
- 51081, 51082, 51086, 51088, 51089, 51092, 51094, 51095, 51096, 51098,
- 51104, 51105, 51107, 51108, 51109, 51110, 51116, 51117, 51120, 51124,
- 51132, 51133, 51135, 51136, 51137, 51144, 51145, 51148, 51150, 51152,
- 51160, 51165, 51172, 51176, 51180, 51200, 51201, 51204, 51208, 51210,
- 54628, 54630, 54631, 54634, 54636, 54638, 54639, 54640, 54641, 54642,
- 54643, 54646, 54647, 54649, 54650, 54651, 54653, 54654, 54655, 54656,
- 54657, 54658, 54659, 54662, 54666, 54667, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 54668, 54669, 54670, 54671, 54673, 54674, 54675, 54676,
- 54677, 54678, 54679, 54680, 54681, 54682, 54683, 54684, 54685, 54686,
- 54687, 54688, 54689, 54690, 54691, 54692, 54694, 54695, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 54696, 54697, 54698, 54699, 54700, 54701,
- 54702, 54703, 54704, 54705, 54706, 54707, 54708, 54709, 54710, 54711,
- 54712, 54713, 54714, 54715, 54716, 54717, 54718, 54719, 54720, 54721,
- 54722, 54723, 54724, 54725, 54726, 54727, 51216, 51217, 51219, 51221,
- 51222, 51228, 51229, 51232, 51236, 51244, 51245, 51247, 51249, 51256,
- 51260, 51264, 51272, 51273, 51276, 51277, 51284, 51312, 51313, 51316,
- 51320, 51322, 51328, 51329, 51331, 51333, 51334, 51335, 51339, 51340,
- 51341, 51348, 51357, 51359, 51361, 51368, 51388, 51389, 51396, 51400,
- 51404, 51412, 51413, 51415, 51417, 51424, 51425, 51428, 51445, 51452,
- 51453, 51456, 51460, 51461, 51462, 51468, 51469, 51471, 51473, 51480,
- 51500, 51508, 51536, 51537, 51540, 51544, 51552, 51553, 51555, 51564,
- 51568, 51572, 51580, 51592, 51593, 51596, 51600, 51608, 51609, 51611,
- 51613, 51648, 51649, 51652, 51655, 51656, 51658, 51664, 51665, 51667,
- 54730, 54731, 54733, 54734, 54735, 54737, 54739, 54740, 54741, 54742,
- 54743, 54746, 54748, 54750, 54751, 54752, 54753, 54754, 54755, 54758,
- 54759, 54761, 54762, 54763, 54765, 54766, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 54767, 54768, 54769, 54770, 54771, 54774, 54776, 54778,
- 54779, 54780, 54781, 54782, 54783, 54786, 54787, 54789, 54790, 54791,
- 54793, 54794, 54795, 54796, 54797, 54798, 54799, 54802, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 54806, 54807, 54808, 54809, 54810, 54811,
- 54813, 54814, 54815, 54817, 54818, 54819, 54821, 54822, 54823, 54824,
- 54825, 54826, 54827, 54828, 54830, 54831, 54832, 54833, 54834, 54835,
- 54836, 54837, 54838, 54839, 54842, 54843, 51669, 51670, 51673, 51674,
- 51676, 51677, 51680, 51682, 51684, 51687, 51692, 51693, 51695, 51696,
- 51697, 51704, 51705, 51708, 51712, 51720, 51721, 51723, 51724, 51725,
- 51732, 51736, 51753, 51788, 51789, 51792, 51796, 51804, 51805, 51807,
- 51808, 51809, 51816, 51837, 51844, 51864, 51900, 51901, 51904, 51908,
- 51916, 51917, 51919, 51921, 51923, 51928, 51929, 51936, 51948, 51956,
- 51976, 51984, 51988, 51992, 52000, 52001, 52033, 52040, 52041, 52044,
- 52048, 52056, 52057, 52061, 52068, 52088, 52089, 52124, 52152, 52180,
- 52196, 52199, 52201, 52236, 52237, 52240, 52244, 52252, 52253, 52257,
- 52258, 52263, 52264, 52265, 52268, 52270, 52272, 52280, 52281, 52283,
- 54845, 54846, 54847, 54849, 54850, 54851, 54852, 54854, 54855, 54858,
- 54860, 54862, 54863, 54864, 54866, 54867, 54870, 54871, 54873, 54874,
- 54875, 54877, 54878, 54879, 54880, 54881, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 54882, 54883, 54884, 54885, 54886, 54888, 54890, 54891,
- 54892, 54893, 54894, 54895, 54898, 54899, 54901, 54902, 54903, 54904,
- 54905, 54906, 54907, 54908, 54909, 54910, 54911, 54912, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 54913, 54914, 54916, 54918, 54919, 54920,
- 54921, 54922, 54923, 54926, 54927, 54929, 54930, 54931, 54933, 54934,
- 54935, 54936, 54937, 54938, 54939, 54940, 54942, 54944, 54946, 54947,
- 54948, 54949, 54950, 54951, 54953, 54954, 52284, 52285, 52286, 52292,
- 52293, 52296, 52300, 52308, 52309, 52311, 52312, 52313, 52320, 52324,
- 52326, 52328, 52336, 52341, 52376, 52377, 52380, 52384, 52392, 52393,
- 52395, 52396, 52397, 52404, 52405, 52408, 52412, 52420, 52421, 52423,
- 52425, 52432, 52436, 52452, 52460, 52464, 52481, 52488, 52489, 52492,
- 52496, 52504, 52505, 52507, 52509, 52516, 52520, 52524, 52537, 52572,
- 52576, 52580, 52588, 52589, 52591, 52593, 52600, 52616, 52628, 52629,
- 52632, 52636, 52644, 52645, 52647, 52649, 52656, 52676, 52684, 52688,
- 52712, 52716, 52720, 52728, 52729, 52731, 52733, 52740, 52744, 52748,
- 52756, 52761, 52768, 52769, 52772, 52776, 52784, 52785, 52787, 52789,
- 54955, 54957, 54958, 54959, 54961, 54962, 54963, 54964, 54965, 54966,
- 54967, 54968, 54970, 54972, 54973, 54974, 54975, 54976, 54977, 54978,
- 54979, 54982, 54983, 54985, 54986, 54987, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 54989, 54990, 54991, 54992, 54994, 54995, 54997, 54998,
- 55000, 55002, 55003, 55004, 55005, 55006, 55007, 55009, 55010, 55011,
- 55013, 55014, 55015, 55017, 55018, 55019, 55020, 55021, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 55022, 55023, 55025, 55026, 55027, 55028,
- 55030, 55031, 55032, 55033, 55034, 55035, 55038, 55039, 55041, 55042,
- 55043, 55045, 55046, 55047, 55048, 55049, 55050, 55051, 55052, 55053,
- 55054, 55055, 55056, 55058, 55059, 55060, 52824, 52825, 52828, 52831,
- 52832, 52833, 52840, 52841, 52843, 52845, 52852, 52853, 52856, 52860,
- 52868, 52869, 52871, 52873, 52880, 52881, 52884, 52888, 52896, 52897,
- 52899, 52900, 52901, 52908, 52909, 52929, 52964, 52965, 52968, 52971,
- 52972, 52980, 52981, 52983, 52984, 52985, 52992, 52993, 52996, 53000,
- 53008, 53009, 53011, 53013, 53020, 53024, 53028, 53036, 53037, 53039,
- 53040, 53041, 53048, 53076, 53077, 53080, 53084, 53092, 53093, 53095,
- 53097, 53104, 53105, 53108, 53112, 53120, 53125, 53132, 53153, 53160,
- 53168, 53188, 53216, 53217, 53220, 53224, 53232, 53233, 53235, 53237,
- 53244, 53248, 53252, 53265, 53272, 53293, 53300, 53301, 53304, 53308,
- 55061, 55062, 55063, 55066, 55067, 55069, 55070, 55071, 55073, 55074,
- 55075, 55076, 55077, 55078, 55079, 55082, 55084, 55086, 55087, 55088,
- 55089, 55090, 55091, 55094, 55095, 55097, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 55098, 55099, 55101, 55102, 55103, 55104, 55105, 55106,
- 55107, 55109, 55110, 55112, 55114, 55115, 55116, 55117, 55118, 55119,
- 55122, 55123, 55125, 55130, 55131, 55132, 55133, 55134, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 55135, 55138, 55140, 55142, 55143, 55144,
- 55146, 55147, 55149, 55150, 55151, 55153, 55154, 55155, 55157, 55158,
- 55159, 55160, 55161, 55162, 55163, 55166, 55167, 55168, 55170, 55171,
- 55172, 55173, 55174, 55175, 55178, 55179, 53316, 53317, 53319, 53321,
- 53328, 53332, 53336, 53344, 53356, 53357, 53360, 53364, 53372, 53373,
- 53377, 53412, 53413, 53416, 53420, 53428, 53429, 53431, 53433, 53440,
- 53441, 53444, 53448, 53449, 53456, 53457, 53459, 53460, 53461, 53468,
- 53469, 53472, 53476, 53484, 53485, 53487, 53488, 53489, 53496, 53517,
- 53552, 53553, 53556, 53560, 53562, 53568, 53569, 53571, 53572, 53573,
- 53580, 53581, 53584, 53588, 53596, 53597, 53599, 53601, 53608, 53612,
- 53628, 53636, 53640, 53664, 53665, 53668, 53672, 53680, 53681, 53683,
- 53685, 53690, 53692, 53696, 53720, 53748, 53752, 53767, 53769, 53776,
- 53804, 53805, 53808, 53812, 53820, 53821, 53823, 53825, 53832, 53852,
- 55181, 55182, 55183, 55185, 55186, 55187, 55188, 55189, 55190, 55191,
- 55194, 55196, 55198, 55199, 55200, 55201, 55202, 55203, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 53860, 53888, 53889, 53892,
- 53896, 53904, 53905, 53909, 53916, 53920, 53924, 53932, 53937, 53944,
- 53945, 53948, 53951, 53952, 53954, 53960, 53961, 53963, 53972, 53976,
- 53980, 53988, 53989, 54000, 54001, 54004, 54008, 54016, 54017, 54019,
- 54021, 54028, 54029, 54030, 54032, 54036, 54038, 54044, 54045, 54047,
- 54048, 54049, 54053, 54056, 54057, 54060, 54064, 54072, 54073, 54075,
- 54076, 54077, 54084, 54085, 54140, 54141, 54144, 54148, 54156, 54157,
- 54159, 54160, 54161, 54168, 54169, 54172, 54176, 54184, 54185, 54187,
- 54189, 54196, 54200, 54204, 54212, 54213, 54216, 54217, 54224, 54232,
- 54241, 54243, 54252, 54253, 54256, 54260, 54268, 54269, 54271, 54273,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 54280, 54301, 54336, 54340,
- 54364, 54368, 54372, 54381, 54383, 54392, 54393, 54396, 54399, 54400,
- 54402, 54408, 54409, 54411, 54413, 54420, 54441, 54476, 54480, 54484,
- 54492, 54495, 54504, 54508, 54512, 54520, 54523, 54525, 54532, 54536,
- 54540, 54548, 54549, 54551, 54588, 54589, 54592, 54596, 54604, 54605,
- 54607, 54609, 54616, 54617, 54620, 54624, 54629, 54632, 54633, 54635,
- 54637, 54644, 54645, 54648, 54652, 54660, 54661, 54663, 54664, 54665,
- 54672, 54693, 54728, 54729, 54732, 54736, 54738, 54744, 54745, 54747,
- 54749, 54756, 54757, 54760, 54764, 54772, 54773, 54775, 54777, 54784,
- 54785, 54788, 54792, 54800, 54801, 54803, 54804, 54805, 54812, 54816,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 54820, 54829, 54840, 54841,
- 54844, 54848, 54853, 54856, 54857, 54859, 54861, 54865, 54868, 54869,
- 54872, 54876, 54887, 54889, 54896, 54897, 54900, 54915, 54917, 54924,
- 54925, 54928, 54932, 54941, 54943, 54945, 54952, 54956, 54960, 54969,
- 54971, 54980, 54981, 54984, 54988, 54993, 54996, 54999, 55001, 55008,
- 55012, 55016, 55024, 55029, 55036, 55037, 55040, 55044, 55057, 55064,
- 55065, 55068, 55072, 55080, 55081, 55083, 55085, 55092, 55093, 55096,
- 55100, 55108, 55111, 55113, 55120, 55121, 55124, 55126, 55127, 55128,
- 55129, 55136, 55137, 55139, 55141, 55145, 55148, 55152, 55156, 55164,
- 55165, 55169, 55176, 55177, 55180, 55184, 55192, 55193, 55195, 55197,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 20285, 20339, 20551, 20729,
- 21152, 21487, 21621, 21733, 22025, 23233, 23478, 26247, 26550, 26551,
- 26607, 27468, 29634, 30146, 31292, 33499, 33540, 34903, 34952, 35382,
- 36040, 36303, 36603, 36838, 39381, 21051, 21364, 21508, 24682, 24932,
- 27580, 29647, 33050, 35258, 35282, 38307, 20355, 21002, 22718, 22904,
- 23014, 24178, 24185, 25031, 25536, 26438, 26604, 26751, 28567, 30286,
- 30475, 30965, 31240, 31487, 31777, 32925, 33390, 33393, 35563, 38291,
- 20075, 21917, 26359, 28212, 30883, 31469, 33883, 35088, 34638, 38824,
- 21208, 22350, 22570, 23884, 24863, 25022, 25121, 25954, 26577, 27204,
- 28187, 29976, 30131, 30435, 30640, 32058, 37039, 37969, 37970, 40853,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 21283, 23724, 30002, 32987,
- 37440, 38296, 21083, 22536, 23004, 23713, 23831, 24247, 24378, 24394,
- 24951, 27743, 30074, 30086, 31968, 32115, 32177, 32652, 33108, 33313,
- 34193, 35137, 35611, 37628, 38477, 40007, 20171, 20215, 20491, 20977,
- 22607, 24887, 24894, 24936, 25913, 27114, 28433, 30117, 30342, 30422,
- 31623, 33445, 33995, 63744, 37799, 38283, 21888, 23458, 22353, 63745,
- 31923, 32697, 37301, 20520, 21435, 23621, 24040, 25298, 25454, 25818,
- 25831, 28192, 28844, 31067, 36317, 36382, 63746, 36989, 37445, 37624,
- 20094, 20214, 20581, 24062, 24314, 24838, 26967, 33137, 34388, 36423,
- 37749, 39467, 20062, 20625, 26480, 26688, 20745, 21133, 21138, 27298,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 30652, 37392, 40660, 21163,
- 24623, 36850, 20552, 25001, 25581, 25802, 26684, 27268, 28608, 33160,
- 35233, 38548, 22533, 29309, 29356, 29956, 32121, 32365, 32937, 35211,
- 35700, 36963, 40273, 25225, 27770, 28500, 32080, 32570, 35363, 20860,
- 24906, 31645, 35609, 37463, 37772, 20140, 20435, 20510, 20670, 20742,
- 21185, 21197, 21375, 22384, 22659, 24218, 24465, 24950, 25004, 25806,
- 25964, 26223, 26299, 26356, 26775, 28039, 28805, 28913, 29855, 29861,
- 29898, 30169, 30828, 30956, 31455, 31478, 32069, 32147, 32789, 32831,
- 33051, 33686, 35686, 36629, 36885, 37857, 38915, 38968, 39514, 39912,
- 20418, 21843, 22586, 22865, 23395, 23622, 24760, 25106, 26690, 26800,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 26856, 28330, 30028, 30328,
- 30926, 31293, 31995, 32363, 32380, 35336, 35489, 35903, 38542, 40388,
- 21476, 21481, 21578, 21617, 22266, 22993, 23396, 23611, 24235, 25335,
- 25911, 25925, 25970, 26272, 26543, 27073, 27837, 30204, 30352, 30590,
- 31295, 32660, 32771, 32929, 33167, 33510, 33533, 33776, 34241, 34865,
- 34996, 35493, 63747, 36764, 37678, 38599, 39015, 39640, 40723, 21741,
- 26011, 26354, 26767, 31296, 35895, 40288, 22256, 22372, 23825, 26118,
- 26801, 26829, 28414, 29736, 34974, 39908, 27752, 63748, 39592, 20379,
- 20844, 20849, 21151, 23380, 24037, 24656, 24685, 25329, 25511, 25915,
- 29657, 31354, 34467, 36002, 38799, 20018, 23521, 25096, 26524, 29916,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 31185, 33747, 35463, 35506,
- 36328, 36942, 37707, 38982, 24275, 27112, 34303, 37101, 63749, 20896,
- 23448, 23532, 24931, 26874, 27454, 28748, 29743, 29912, 31649, 32592,
- 33733, 35264, 36011, 38364, 39208, 21038, 24669, 25324, 36866, 20362,
- 20809, 21281, 22745, 24291, 26336, 27960, 28826, 29378, 29654, 31568,
- 33009, 37979, 21350, 25499, 32619, 20054, 20608, 22602, 22750, 24618,
- 24871, 25296, 27088, 39745, 23439, 32024, 32945, 36703, 20132, 20689,
- 21676, 21932, 23308, 23968, 24039, 25898, 25934, 26657, 27211, 29409,
- 30350, 30703, 32094, 32761, 33184, 34126, 34527, 36611, 36686, 37066,
- 39171, 39509, 39851, 19992, 20037, 20061, 20167, 20465, 20855, 21246,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 21312, 21475, 21477, 21646,
- 22036, 22389, 22434, 23495, 23943, 24272, 25084, 25304, 25937, 26552,
- 26601, 27083, 27472, 27590, 27628, 27714, 28317, 28792, 29399, 29590,
- 29699, 30655, 30697, 31350, 32127, 32777, 33276, 33285, 33290, 33503,
- 34914, 35635, 36092, 36544, 36881, 37041, 37476, 37558, 39378, 39493,
- 40169, 40407, 40860, 22283, 23616, 33738, 38816, 38827, 40628, 21531,
- 31384, 32676, 35033, 36557, 37089, 22528, 23624, 25496, 31391, 23470,
- 24339, 31353, 31406, 33422, 36524, 20518, 21048, 21240, 21367, 22280,
- 25331, 25458, 27402, 28099, 30519, 21413, 29527, 34152, 36470, 38357,
- 26426, 27331, 28528, 35437, 36556, 39243, 63750, 26231, 27512, 36020,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 39740, 63751, 21483, 22317,
- 22862, 25542, 27131, 29674, 30789, 31418, 31429, 31998, 33909, 35215,
- 36211, 36917, 38312, 21243, 22343, 30023, 31584, 33740, 37406, 63752,
- 27224, 20811, 21067, 21127, 25119, 26840, 26997, 38553, 20677, 21156,
- 21220, 25027, 26020, 26681, 27135, 29822, 31563, 33465, 33771, 35250,
- 35641, 36817, 39241, 63753, 20170, 22935, 25810, 26129, 27278, 29748,
- 31105, 31165, 33449, 34942, 34943, 35167, 63754, 37670, 20235, 21450,
- 24613, 25201, 27762, 32026, 32102, 20120, 20834, 30684, 32943, 20225,
- 20238, 20854, 20864, 21980, 22120, 22331, 22522, 22524, 22804, 22855,
- 22931, 23492, 23696, 23822, 24049, 24190, 24524, 25216, 26071, 26083,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 26398, 26399, 26462, 26827,
- 26820, 27231, 27450, 27683, 27773, 27778, 28103, 29592, 29734, 29738,
- 29826, 29859, 30072, 30079, 30849, 30959, 31041, 31047, 31048, 31098,
- 31637, 32000, 32186, 32648, 32774, 32813, 32908, 35352, 35663, 35912,
- 36215, 37665, 37668, 39138, 39249, 39438, 39439, 39525, 40594, 32202,
- 20342, 21513, 25326, 26708, 37329, 21931, 20794, 63755, 63756, 23068,
- 25062, 63757, 25295, 25343, 63758, 63759, 63760, 63761, 63762, 63763,
- 37027, 63764, 63765, 63766, 63767, 63768, 35582, 63769, 63770, 63771,
- 63772, 26262, 63773, 29014, 63774, 63775, 38627, 63776, 25423, 25466,
- 21335, 63777, 26511, 26976, 28275, 63778, 30007, 63779, 63780, 63781,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 32013, 63782, 63783, 34930,
- 22218, 23064, 63784, 63785, 63786, 63787, 63788, 20035, 63789, 20839,
- 22856, 26608, 32784, 63790, 22899, 24180, 25754, 31178, 24565, 24684,
- 25288, 25467, 23527, 23511, 21162, 63791, 22900, 24361, 24594, 63792,
- 63793, 63794, 29785, 63795, 63796, 63797, 63798, 63799, 63800, 39377,
- 63801, 63802, 63803, 63804, 63805, 63806, 63807, 63808, 63809, 63810,
- 63811, 28611, 63812, 63813, 33215, 36786, 24817, 63814, 63815, 33126,
- 63816, 63817, 23615, 63818, 63819, 63820, 63821, 63822, 63823, 63824,
- 63825, 23273, 35365, 26491, 32016, 63826, 63827, 63828, 63829, 63830,
- 63831, 33021, 63832, 63833, 23612, 27877, 21311, 28346, 22810, 33590,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 20025, 20150, 20294, 21934,
- 22296, 22727, 24406, 26039, 26086, 27264, 27573, 28237, 30701, 31471,
- 31774, 32222, 34507, 34962, 37170, 37723, 25787, 28606, 29562, 30136,
- 36948, 21846, 22349, 25018, 25812, 26311, 28129, 28251, 28525, 28601,
- 30192, 32835, 33213, 34113, 35203, 35527, 35674, 37663, 27795, 30035,
- 31572, 36367, 36957, 21776, 22530, 22616, 24162, 25095, 25758, 26848,
- 30070, 31958, 34739, 40680, 20195, 22408, 22382, 22823, 23565, 23729,
- 24118, 24453, 25140, 25825, 29619, 33274, 34955, 36024, 38538, 40667,
- 23429, 24503, 24755, 20498, 20992, 21040, 22294, 22581, 22615, 23566,
- 23648, 23798, 23947, 24230, 24466, 24764, 25361, 25481, 25623, 26691,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 26873, 27330, 28120, 28193,
- 28372, 28644, 29182, 30428, 30585, 31153, 31291, 33796, 35241, 36077,
- 36339, 36424, 36867, 36884, 36947, 37117, 37709, 38518, 38876, 27602,
- 28678, 29272, 29346, 29544, 30563, 31167, 31716, 32411, 35712, 22697,
- 24775, 25958, 26109, 26302, 27788, 28958, 29129, 35930, 38931, 20077,
- 31361, 20189, 20908, 20941, 21205, 21516, 24999, 26481, 26704, 26847,
- 27934, 28540, 30140, 30643, 31461, 33012, 33891, 37509, 20828, 26007,
- 26460, 26515, 30168, 31431, 33651, 63834, 35910, 36887, 38957, 23663,
- 33216, 33434, 36929, 36975, 37389, 24471, 23965, 27225, 29128, 30331,
- 31561, 34276, 35588, 37159, 39472, 21895, 25078, 63835, 30313, 32645,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 34367, 34746, 35064, 37007,
- 63836, 27931, 28889, 29662, 32097, 33853, 63837, 37226, 39409, 63838,
- 20098, 21365, 27396, 27410, 28734, 29211, 34349, 40478, 21068, 36771,
- 23888, 25829, 25900, 27414, 28651, 31811, 32412, 34253, 35172, 35261,
- 25289, 33240, 34847, 24266, 26391, 28010, 29436, 29701, 29807, 34690,
- 37086, 20358, 23821, 24480, 33802, 20919, 25504, 30053, 20142, 20486,
- 20841, 20937, 26753, 27153, 31918, 31921, 31975, 33391, 35538, 36635,
- 37327, 20406, 20791, 21237, 21570, 24300, 24942, 25150, 26053, 27354,
- 28670, 31018, 34268, 34851, 38317, 39522, 39530, 40599, 40654, 21147,
- 26310, 27511, 28701, 31019, 36706, 38722, 24976, 25088, 25891, 28451,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 29001, 29833, 32244, 32879,
- 34030, 36646, 36899, 37706, 20925, 21015, 21155, 27916, 28872, 35010,
- 24265, 25986, 27566, 28610, 31806, 29557, 20196, 20278, 22265, 63839,
- 23738, 23994, 24604, 29618, 31533, 32666, 32718, 32838, 36894, 37428,
- 38646, 38728, 38936, 40801, 20363, 28583, 31150, 37300, 38583, 21214,
- 63840, 25736, 25796, 27347, 28510, 28696, 29200, 30439, 32769, 34310,
- 34396, 36335, 36613, 38706, 39791, 40442, 40565, 30860, 31103, 32160,
- 33737, 37636, 40575, 40595, 35542, 22751, 24324, 26407, 28711, 29903,
- 31840, 32894, 20769, 28712, 29282, 30922, 36034, 36058, 36084, 38647,
- 20102, 20698, 23534, 24278, 26009, 29134, 30274, 30637, 32842, 34044,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 36988, 39719, 40845, 22744,
- 23105, 23650, 27155, 28122, 28431, 30267, 32047, 32311, 34078, 35128,
- 37860, 38475, 21129, 26066, 26611, 27060, 27969, 28316, 28687, 29705,
- 29792, 30041, 30244, 30827, 35628, 39006, 20845, 25134, 38520, 20374,
- 20523, 23833, 28138, 32184, 36650, 24459, 24900, 26647, 63841, 38534,
- 21202, 32907, 20956, 20940, 26974, 31260, 32190, 33777, 38517, 20442,
- 21033, 21400, 21519, 21774, 23653, 24743, 26446, 26792, 28012, 29313,
- 29432, 29702, 29827, 63842, 30178, 31852, 32633, 32696, 33673, 35023,
- 35041, 37324, 37328, 38626, 39881, 21533, 28542, 29136, 29848, 34298,
- 36522, 38563, 40023, 40607, 26519, 28107, 29747, 33256, 38678, 30764,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 31435, 31520, 31890, 25705,
- 29802, 30194, 30908, 30952, 39340, 39764, 40635, 23518, 24149, 28448,
- 33180, 33707, 37000, 19975, 21325, 23081, 24018, 24398, 24930, 25405,
- 26217, 26364, 28415, 28459, 28771, 30622, 33836, 34067, 34875, 36627,
- 39237, 39995, 21788, 25273, 26411, 27819, 33545, 35178, 38778, 20129,
- 22916, 24536, 24537, 26395, 32178, 32596, 33426, 33579, 33725, 36638,
- 37017, 22475, 22969, 23186, 23504, 26151, 26522, 26757, 27599, 29028,
- 32629, 36023, 36067, 36993, 39749, 33032, 35978, 38476, 39488, 40613,
- 23391, 27667, 29467, 30450, 30431, 33804, 20906, 35219, 20813, 20885,
- 21193, 26825, 27796, 30468, 30496, 32191, 32236, 38754, 40629, 28357,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 34065, 20901, 21517, 21629,
- 26126, 26269, 26919, 28319, 30399, 30609, 33559, 33986, 34719, 37225,
- 37528, 40180, 34946, 20398, 20882, 21215, 22982, 24125, 24917, 25720,
- 25721, 26286, 26576, 27169, 27597, 27611, 29279, 29281, 29761, 30520,
- 30683, 32791, 33468, 33541, 35584, 35624, 35980, 26408, 27792, 29287,
- 30446, 30566, 31302, 40361, 27519, 27794, 22818, 26406, 33945, 21359,
- 22675, 22937, 24287, 25551, 26164, 26483, 28218, 29483, 31447, 33495,
- 37672, 21209, 24043, 25006, 25035, 25098, 25287, 25771, 26080, 26969,
- 27494, 27595, 28961, 29687, 30045, 32326, 33310, 33538, 34154, 35491,
- 36031, 38695, 40289, 22696, 40664, 20497, 21006, 21563, 21839, 25991,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 27766, 32010, 32011, 32862,
- 34442, 38272, 38639, 21247, 27797, 29289, 21619, 23194, 23614, 23883,
- 24396, 24494, 26410, 26806, 26979, 28220, 28228, 30473, 31859, 32654,
- 34183, 35598, 36855, 38753, 40692, 23735, 24758, 24845, 25003, 25935,
- 26107, 26108, 27665, 27887, 29599, 29641, 32225, 38292, 23494, 34588,
- 35600, 21085, 21338, 25293, 25615, 25778, 26420, 27192, 27850, 29632,
- 29854, 31636, 31893, 32283, 33162, 33334, 34180, 36843, 38649, 39361,
- 20276, 21322, 21453, 21467, 25292, 25644, 25856, 26001, 27075, 27886,
- 28504, 29677, 30036, 30242, 30436, 30460, 30928, 30971, 31020, 32070,
- 33324, 34784, 36820, 38930, 39151, 21187, 25300, 25765, 28196, 28497,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 30332, 36299, 37297, 37474,
- 39662, 39747, 20515, 20621, 22346, 22952, 23592, 24135, 24439, 25151,
- 25918, 26041, 26049, 26121, 26507, 27036, 28354, 30917, 32033, 32938,
- 33152, 33323, 33459, 33953, 34444, 35370, 35607, 37030, 38450, 40848,
- 20493, 20467, 63843, 22521, 24472, 25308, 25490, 26479, 28227, 28953,
- 30403, 32972, 32986, 35060, 35061, 35097, 36064, 36649, 37197, 38506,
- 20271, 20336, 24091, 26575, 26658, 30333, 30334, 39748, 24161, 27146,
- 29033, 29140, 30058, 63844, 32321, 34115, 34281, 39132, 20240, 31567,
- 32624, 38309, 20961, 24070, 26805, 27710, 27726, 27867, 29359, 31684,
- 33539, 27861, 29754, 20731, 21128, 22721, 25816, 27287, 29863, 30294,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 30887, 34327, 38370, 38713,
- 63845, 21342, 24321, 35722, 36776, 36783, 37002, 21029, 30629, 40009,
- 40712, 19993, 20482, 20853, 23643, 24183, 26142, 26170, 26564, 26821,
- 28851, 29953, 30149, 31177, 31453, 36647, 39200, 39432, 20445, 22561,
- 22577, 23542, 26222, 27493, 27921, 28282, 28541, 29668, 29995, 33769,
- 35036, 35091, 35676, 36628, 20239, 20693, 21264, 21340, 23443, 24489,
- 26381, 31119, 33145, 33583, 34068, 35079, 35206, 36665, 36667, 39333,
- 39954, 26412, 20086, 20472, 22857, 23553, 23791, 23792, 25447, 26834,
- 28925, 29090, 29739, 32299, 34028, 34562, 36898, 37586, 40179, 19981,
- 20184, 20463, 20613, 21078, 21103, 21542, 21648, 22496, 22827, 23142,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 23386, 23413, 23500, 24220,
- 63846, 25206, 25975, 26023, 28014, 28325, 29238, 31526, 31807, 32566,
- 33104, 33105, 33178, 33344, 33433, 33705, 35331, 36000, 36070, 36091,
- 36212, 36282, 37096, 37340, 38428, 38468, 39385, 40167, 21271, 20998,
- 21545, 22132, 22707, 22868, 22894, 24575, 24996, 25198, 26128, 27774,
- 28954, 30406, 31881, 31966, 32027, 33452, 36033, 38640, 63847, 20315,
- 24343, 24447, 25282, 23849, 26379, 26842, 30844, 32323, 40300, 19989,
- 20633, 21269, 21290, 21329, 22915, 23138, 24199, 24754, 24970, 25161,
- 25209, 26000, 26503, 27047, 27604, 27606, 27607, 27608, 27832, 63848,
- 29749, 30202, 30738, 30865, 31189, 31192, 31875, 32203, 32737, 32933,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 33086, 33218, 33778, 34586,
- 35048, 35513, 35692, 36027, 37145, 38750, 39131, 40763, 22188, 23338,
- 24428, 25996, 27315, 27567, 27996, 28657, 28693, 29277, 29613, 36007,
- 36051, 38971, 24977, 27703, 32856, 39425, 20045, 20107, 20123, 20181,
- 20282, 20284, 20351, 20447, 20735, 21490, 21496, 21766, 21987, 22235,
- 22763, 22882, 23057, 23531, 23546, 23556, 24051, 24107, 24473, 24605,
- 25448, 26012, 26031, 26614, 26619, 26797, 27515, 27801, 27863, 28195,
- 28681, 29509, 30722, 31038, 31040, 31072, 31169, 31721, 32023, 32114,
- 32902, 33293, 33678, 34001, 34503, 35039, 35408, 35422, 35613, 36060,
- 36198, 36781, 37034, 39164, 39391, 40605, 21066, 63849, 26388, 63850,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 20632, 21034, 23665, 25955,
- 27733, 29642, 29987, 30109, 31639, 33948, 37240, 38704, 20087, 25746,
- 27578, 29022, 34217, 19977, 63851, 26441, 26862, 28183, 33439, 34072,
- 34923, 25591, 28545, 37394, 39087, 19978, 20663, 20687, 20767, 21830,
- 21930, 22039, 23360, 23577, 23776, 24120, 24202, 24224, 24258, 24819,
- 26705, 27233, 28248, 29245, 29248, 29376, 30456, 31077, 31665, 32724,
- 35059, 35316, 35443, 35937, 36062, 38684, 22622, 29885, 36093, 21959,
- 63852, 31329, 32034, 33394, 29298, 29983, 29989, 63853, 31513, 22661,
- 22779, 23996, 24207, 24246, 24464, 24661, 25234, 25471, 25933, 26257,
- 26329, 26360, 26646, 26866, 29312, 29790, 31598, 32110, 32214, 32626,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 32997, 33298, 34223, 35199,
- 35475, 36893, 37604, 40653, 40736, 22805, 22893, 24109, 24796, 26132,
- 26227, 26512, 27728, 28101, 28511, 30707, 30889, 33990, 37323, 37675,
- 20185, 20682, 20808, 21892, 23307, 23459, 25159, 25982, 26059, 28210,
- 29053, 29697, 29764, 29831, 29887, 30316, 31146, 32218, 32341, 32680,
- 33146, 33203, 33337, 34330, 34796, 35445, 36323, 36984, 37521, 37925,
- 39245, 39854, 21352, 23633, 26964, 27844, 27945, 28203, 33292, 34203,
- 35131, 35373, 35498, 38634, 40807, 21089, 26297, 27570, 32406, 34814,
- 36109, 38275, 38493, 25885, 28041, 29166, 63854, 22478, 22995, 23468,
- 24615, 24826, 25104, 26143, 26207, 29481, 29689, 30427, 30465, 31596,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 32854, 32882, 33125, 35488,
- 37266, 19990, 21218, 27506, 27927, 31237, 31545, 32048, 63855, 36016,
- 21484, 22063, 22609, 23477, 23567, 23569, 24034, 25152, 25475, 25620,
- 26157, 26803, 27836, 28040, 28335, 28703, 28836, 29138, 29990, 30095,
- 30094, 30233, 31505, 31712, 31787, 32032, 32057, 34092, 34157, 34311,
- 35380, 36877, 36961, 37045, 37559, 38902, 39479, 20439, 23660, 26463,
- 28049, 31903, 32396, 35606, 36118, 36895, 23403, 24061, 25613, 33984,
- 36956, 39137, 29575, 23435, 24730, 26494, 28126, 35359, 35494, 36865,
- 38924, 21047, 63856, 28753, 30862, 37782, 34928, 37335, 20462, 21463,
- 22013, 22234, 22402, 22781, 23234, 23432, 23723, 23744, 24101, 24833,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 25101, 25163, 25480, 25628,
- 25910, 25976, 27193, 27530, 27700, 27929, 28465, 29159, 29417, 29560,
- 29703, 29874, 30246, 30561, 31168, 31319, 31466, 31929, 32143, 32172,
- 32353, 32670, 33065, 33585, 33936, 34010, 34282, 34966, 35504, 35728,
- 36664, 36930, 36995, 37228, 37526, 37561, 38539, 38567, 38568, 38614,
- 38656, 38920, 39318, 39635, 39706, 21460, 22654, 22809, 23408, 23487,
- 28113, 28506, 29087, 29729, 29881, 32901, 33789, 24033, 24455, 24490,
- 24642, 26092, 26642, 26991, 27219, 27529, 27957, 28147, 29667, 30462,
- 30636, 31565, 32020, 33059, 33308, 33600, 34036, 34147, 35426, 35524,
- 37255, 37662, 38918, 39348, 25100, 34899, 36848, 37477, 23815, 23847,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 23913, 29791, 33181, 34664,
- 28629, 25342, 32722, 35126, 35186, 19998, 20056, 20711, 21213, 21319,
- 25215, 26119, 32361, 34821, 38494, 20365, 21273, 22070, 22987, 23204,
- 23608, 23630, 23629, 24066, 24337, 24643, 26045, 26159, 26178, 26558,
- 26612, 29468, 30690, 31034, 32709, 33940, 33997, 35222, 35430, 35433,
- 35553, 35925, 35962, 22516, 23508, 24335, 24687, 25325, 26893, 27542,
- 28252, 29060, 31698, 34645, 35672, 36606, 39135, 39166, 20280, 20353,
- 20449, 21627, 23072, 23480, 24892, 26032, 26216, 29180, 30003, 31070,
- 32051, 33102, 33251, 33688, 34218, 34254, 34563, 35338, 36523, 36763,
- 63857, 36805, 22833, 23460, 23526, 24713, 23529, 23563, 24515, 27777,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 63858, 28145, 28683, 29978,
- 33455, 35574, 20160, 21313, 63859, 38617, 27663, 20126, 20420, 20818,
- 21854, 23077, 23784, 25105, 29273, 33469, 33706, 34558, 34905, 35357,
- 38463, 38597, 39187, 40201, 40285, 22538, 23731, 23997, 24132, 24801,
- 24853, 25569, 27138, 28197, 37122, 37716, 38990, 39952, 40823, 23433,
- 23736, 25353, 26191, 26696, 30524, 38593, 38797, 38996, 39839, 26017,
- 35585, 36555, 38332, 21813, 23721, 24022, 24245, 26263, 30284, 33780,
- 38343, 22739, 25276, 29390, 40232, 20208, 22830, 24591, 26171, 27523,
- 31207, 40230, 21395, 21696, 22467, 23830, 24859, 26326, 28079, 30861,
- 33406, 38552, 38724, 21380, 25212, 25494, 28082, 32266, 33099, 38989,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 27387, 32588, 40367, 40474,
- 20063, 20539, 20918, 22812, 24825, 25590, 26928, 29242, 32822, 63860,
- 37326, 24369, 63861, 63862, 32004, 33509, 33903, 33979, 34277, 36493,
- 63863, 20335, 63864, 63865, 22756, 23363, 24665, 25562, 25880, 25965,
- 26264, 63866, 26954, 27171, 27915, 28673, 29036, 30162, 30221, 31155,
- 31344, 63867, 32650, 63868, 35140, 63869, 35731, 37312, 38525, 63870,
- 39178, 22276, 24481, 26044, 28417, 30208, 31142, 35486, 39341, 39770,
- 40812, 20740, 25014, 25233, 27277, 33222, 20547, 22576, 24422, 28937,
- 35328, 35578, 23420, 34326, 20474, 20796, 22196, 22852, 25513, 28153,
- 23978, 26989, 20870, 20104, 20313, 63871, 63872, 63873, 22914, 63874,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 63875, 27487, 27741, 63876,
- 29877, 30998, 63877, 33287, 33349, 33593, 36671, 36701, 63878, 39192,
- 63879, 63880, 63881, 20134, 63882, 22495, 24441, 26131, 63883, 63884,
- 30123, 32377, 35695, 63885, 36870, 39515, 22181, 22567, 23032, 23071,
- 23476, 63886, 24310, 63887, 63888, 25424, 25403, 63889, 26941, 27783,
- 27839, 28046, 28051, 28149, 28436, 63890, 28895, 28982, 29017, 63891,
- 29123, 29141, 63892, 30799, 30831, 63893, 31605, 32227, 63894, 32303,
- 63895, 34893, 36575, 63896, 63897, 63898, 37467, 63899, 40182, 63900,
- 63901, 63902, 24709, 28037, 63903, 29105, 63904, 63905, 38321, 21421,
- 63906, 63907, 63908, 26579, 63909, 28814, 28976, 29744, 33398, 33490,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 63910, 38331, 39653, 40573,
- 26308, 63911, 29121, 33865, 63912, 63913, 22603, 63914, 63915, 23992,
- 24433, 63916, 26144, 26254, 27001, 27054, 27704, 27891, 28214, 28481,
- 28634, 28699, 28719, 29008, 29151, 29552, 63917, 29787, 63918, 29908,
- 30408, 31310, 32403, 63919, 63920, 33521, 35424, 36814, 63921, 37704,
- 63922, 38681, 63923, 63924, 20034, 20522, 63925, 21000, 21473, 26355,
- 27757, 28618, 29450, 30591, 31330, 33454, 34269, 34306, 63926, 35028,
- 35427, 35709, 35947, 63927, 37555, 63928, 38675, 38928, 20116, 20237,
- 20425, 20658, 21320, 21566, 21555, 21978, 22626, 22714, 22887, 23067,
- 23524, 24735, 63929, 25034, 25942, 26111, 26212, 26791, 27738, 28595,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 28879, 29100, 29522, 31613,
- 34568, 35492, 39986, 40711, 23627, 27779, 29508, 29577, 37434, 28331,
- 29797, 30239, 31337, 32277, 34314, 20800, 22725, 25793, 29934, 29973,
- 30320, 32705, 37013, 38605, 39252, 28198, 29926, 31401, 31402, 33253,
- 34521, 34680, 35355, 23113, 23436, 23451, 26785, 26880, 28003, 29609,
- 29715, 29740, 30871, 32233, 32747, 33048, 33109, 33694, 35916, 38446,
- 38929, 26352, 24448, 26106, 26505, 27754, 29579, 20525, 23043, 27498,
- 30702, 22806, 23916, 24013, 29477, 30031, 63930, 63931, 20709, 20985,
- 22575, 22829, 22934, 23002, 23525, 63932, 63933, 23970, 25303, 25622,
- 25747, 25854, 63934, 26332, 63935, 27208, 63936, 29183, 29796, 63937,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 31368, 31407, 32327, 32350,
- 32768, 33136, 63938, 34799, 35201, 35616, 36953, 63939, 36992, 39250,
- 24958, 27442, 28020, 32287, 35109, 36785, 20433, 20653, 20887, 21191,
- 22471, 22665, 23481, 24248, 24898, 27029, 28044, 28263, 28342, 29076,
- 29794, 29992, 29996, 32883, 33592, 33993, 36362, 37780, 37854, 63940,
- 20110, 20305, 20598, 20778, 21448, 21451, 21491, 23431, 23507, 23588,
- 24858, 24962, 26100, 29275, 29591, 29760, 30402, 31056, 31121, 31161,
- 32006, 32701, 33419, 34261, 34398, 36802, 36935, 37109, 37354, 38533,
- 38632, 38633, 21206, 24423, 26093, 26161, 26671, 29020, 31286, 37057,
- 38922, 20113, 63941, 27218, 27550, 28560, 29065, 32792, 33464, 34131,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 36939, 38549, 38642, 38907,
- 34074, 39729, 20112, 29066, 38596, 20803, 21407, 21729, 22291, 22290,
- 22435, 23195, 23236, 23491, 24616, 24895, 25588, 27781, 27961, 28274,
- 28304, 29232, 29503, 29783, 33489, 34945, 36677, 36960, 63942, 38498,
- 39000, 40219, 26376, 36234, 37470, 20301, 20553, 20702, 21361, 22285,
- 22996, 23041, 23561, 24944, 26256, 28205, 29234, 29771, 32239, 32963,
- 33806, 33894, 34111, 34655, 34907, 35096, 35586, 36949, 38859, 39759,
- 20083, 20369, 20754, 20842, 63943, 21807, 21929, 23418, 23461, 24188,
- 24189, 24254, 24736, 24799, 24840, 24841, 25540, 25912, 26377, 63944,
- 26580, 26586, 63945, 26977, 26978, 27833, 27943, 63946, 28216, 63947,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 28641, 29494, 29495, 63948,
- 29788, 30001, 63949, 30290, 63950, 63951, 32173, 33278, 33848, 35029,
- 35480, 35547, 35565, 36400, 36418, 36938, 36926, 36986, 37193, 37321,
- 37742, 63952, 63953, 22537, 63954, 27603, 32905, 32946, 63955, 63956,
- 20801, 22891, 23609, 63957, 63958, 28516, 29607, 32996, 36103, 63959,
- 37399, 38287, 63960, 63961, 63962, 63963, 32895, 25102, 28700, 32104,
- 34701, 63964, 22432, 24681, 24903, 27575, 35518, 37504, 38577, 20057,
- 21535, 28139, 34093, 38512, 38899, 39150, 25558, 27875, 37009, 20957,
- 25033, 33210, 40441, 20381, 20506, 20736, 23452, 24847, 25087, 25836,
- 26885, 27589, 30097, 30691, 32681, 33380, 34191, 34811, 34915, 35516,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 35696, 37291, 20108, 20197,
- 20234, 63965, 63966, 22839, 23016, 63967, 24050, 24347, 24411, 24609,
- 63968, 63969, 63970, 63971, 29246, 29669, 63972, 30064, 30157, 63973,
- 31227, 63974, 32780, 32819, 32900, 33505, 33617, 63975, 63976, 36029,
- 36019, 36999, 63977, 63978, 39156, 39180, 63979, 63980, 28727, 30410,
- 32714, 32716, 32764, 35610, 20154, 20161, 20995, 21360, 63981, 21693,
- 22240, 23035, 23493, 24341, 24525, 28270, 63982, 63983, 32106, 33589,
- 63984, 34451, 35469, 63985, 38765, 38775, 63986, 63987, 19968, 20314,
- 20350, 22777, 26085, 28322, 36920, 37808, 39353, 20219, 22764, 22922,
- 23001, 24641, 63988, 63989, 31252, 63990, 33615, 36035, 20837, 21316,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 63991, 63992, 63993, 20173,
- 21097, 23381, 33471, 20180, 21050, 21672, 22985, 23039, 23376, 23383,
- 23388, 24675, 24904, 28363, 28825, 29038, 29574, 29943, 30133, 30913,
- 32043, 32773, 33258, 33576, 34071, 34249, 35566, 36039, 38604, 20316,
- 21242, 22204, 26027, 26152, 28796, 28856, 29237, 32189, 33421, 37196,
- 38592, 40306, 23409, 26855, 27544, 28538, 30430, 23697, 26283, 28507,
- 31668, 31786, 34870, 38620, 19976, 20183, 21280, 22580, 22715, 22767,
- 22892, 23559, 24115, 24196, 24373, 25484, 26290, 26454, 27167, 27299,
- 27404, 28479, 29254, 63994, 29520, 29835, 31456, 31911, 33144, 33247,
- 33255, 33674, 33900, 34083, 34196, 34255, 35037, 36115, 37292, 38263,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 38556, 20877, 21705, 22312,
- 23472, 25165, 26448, 26685, 26771, 28221, 28371, 28797, 32289, 35009,
- 36001, 36617, 40779, 40782, 29229, 31631, 35533, 37658, 20295, 20302,
- 20786, 21632, 22992, 24213, 25269, 26485, 26990, 27159, 27822, 28186,
- 29401, 29482, 30141, 31672, 32053, 33511, 33785, 33879, 34295, 35419,
- 36015, 36487, 36889, 37048, 38606, 40799, 21219, 21514, 23265, 23490,
- 25688, 25973, 28404, 29380, 63995, 30340, 31309, 31515, 31821, 32318,
- 32735, 33659, 35627, 36042, 36196, 36321, 36447, 36842, 36857, 36969,
- 37841, 20291, 20346, 20659, 20840, 20856, 21069, 21098, 22625, 22652,
- 22880, 23560, 23637, 24283, 24731, 25136, 26643, 27583, 27656, 28593,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 29006, 29728, 30000, 30008,
- 30033, 30322, 31564, 31627, 31661, 31686, 32399, 35438, 36670, 36681,
- 37439, 37523, 37666, 37931, 38651, 39002, 39019, 39198, 20999, 25130,
- 25240, 27993, 30308, 31434, 31680, 32118, 21344, 23742, 24215, 28472,
- 28857, 31896, 38673, 39822, 40670, 25509, 25722, 34678, 19969, 20117,
- 20141, 20572, 20597, 21576, 22979, 23450, 24128, 24237, 24311, 24449,
- 24773, 25402, 25919, 25972, 26060, 26230, 26232, 26622, 26984, 27273,
- 27491, 27712, 28096, 28136, 28191, 28254, 28702, 28833, 29582, 29693,
- 30010, 30555, 30855, 31118, 31243, 31357, 31934, 32142, 33351, 35330,
- 35562, 35998, 37165, 37194, 37336, 37478, 37580, 37664, 38662, 38742,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 38748, 38914, 40718, 21046,
- 21137, 21884, 22564, 24093, 24351, 24716, 25552, 26799, 28639, 31085,
- 31532, 33229, 34234, 35069, 35576, 36420, 37261, 38500, 38555, 38717,
- 38988, 40778, 20430, 20806, 20939, 21161, 22066, 24340, 24427, 25514,
- 25805, 26089, 26177, 26362, 26361, 26397, 26781, 26839, 27133, 28437,
- 28526, 29031, 29157, 29226, 29866, 30522, 31062, 31066, 31199, 31264,
- 31381, 31895, 31967, 32068, 32368, 32903, 34299, 34468, 35412, 35519,
- 36249, 36481, 36896, 36973, 37347, 38459, 38613, 40165, 26063, 31751,
- 36275, 37827, 23384, 23562, 21330, 25305, 29469, 20519, 23447, 24478,
- 24752, 24939, 26837, 28121, 29742, 31278, 32066, 32156, 32305, 33131,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 36394, 36405, 37758, 37912,
- 20304, 22352, 24038, 24231, 25387, 32618, 20027, 20303, 20367, 20570,
- 23005, 32964, 21610, 21608, 22014, 22863, 23449, 24030, 24282, 26205,
- 26417, 26609, 26666, 27880, 27954, 28234, 28557, 28855, 29664, 30087,
- 31820, 32002, 32044, 32162, 33311, 34523, 35387, 35461, 36208, 36490,
- 36659, 36913, 37198, 37202, 37956, 39376, 31481, 31909, 20426, 20737,
- 20934, 22472, 23535, 23803, 26201, 27197, 27994, 28310, 28652, 28940,
- 30063, 31459, 34850, 36897, 36981, 38603, 39423, 33537, 20013, 20210,
- 34886, 37325, 21373, 27355, 26987, 27713, 33914, 22686, 24974, 26366,
- 25327, 28893, 29969, 30151, 32338, 33976, 35657, 36104, 20043, 21482,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 21675, 22320, 22336, 24535,
- 25345, 25351, 25711, 25903, 26088, 26234, 26525, 26547, 27490, 27744,
- 27802, 28460, 30693, 30757, 31049, 31063, 32025, 32930, 33026, 33267,
- 33437, 33463, 34584, 35468, 63996, 36100, 36286, 36978, 30452, 31257,
- 31287, 32340, 32887, 21767, 21972, 22645, 25391, 25634, 26185, 26187,
- 26733, 27035, 27524, 27941, 28337, 29645, 29800, 29857, 30043, 30137,
- 30433, 30494, 30603, 31206, 32265, 32285, 33275, 34095, 34967, 35386,
- 36049, 36587, 36784, 36914, 37805, 38499, 38515, 38663, 20356, 21489,
- 23018, 23241, 24089, 26702, 29894, 30142, 31209, 31378, 33187, 34541,
- 36074, 36300, 36845, 26015, 26389, 63997, 22519, 28503, 32221, 36655,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 37878, 38598, 24501, 25074,
- 28548, 19988, 20376, 20511, 21449, 21983, 23919, 24046, 27425, 27492,
- 30923, 31642, 63998, 36425, 36554, 36974, 25417, 25662, 30528, 31364,
- 37679, 38015, 40810, 25776, 28591, 29158, 29864, 29914, 31428, 31762,
- 32386, 31922, 32408, 35738, 36106, 38013, 39184, 39244, 21049, 23519,
- 25830, 26413, 32046, 20717, 21443, 22649, 24920, 24921, 25082, 26028,
- 31449, 35730, 35734, 20489, 20513, 21109, 21809, 23100, 24288, 24432,
- 24884, 25950, 26124, 26166, 26274, 27085, 28356, 28466, 29462, 30241,
- 31379, 33081, 33369, 33750, 33980, 20661, 22512, 23488, 23528, 24425,
- 25505, 30758, 32181, 33756, 34081, 37319, 37365, 20874, 26613, 31574,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 36012, 20932, 22971, 24765,
- 34389, 20508, 63999, 21076, 23610, 24957, 25114, 25299, 25842, 26021,
- 28364, 30240, 33034, 36448, 38495, 38587, 20191, 21315, 21912, 22825,
- 24029, 25797, 27849, 28154, 29588, 31359, 33307, 34214, 36068, 36368,
- 36983, 37351, 38369, 38433, 38854, 20984, 21746, 21894, 24505, 25764,
- 28552, 32180, 36639, 36685, 37941, 20681, 23574, 27838, 28155, 29979,
- 30651, 31805, 31844, 35449, 35522, 22558, 22974, 24086, 25463, 29266,
- 30090, 30571, 35548, 36028, 36626, 24307, 26228, 28152, 32893, 33729,
- 35531, 38737, 39894, 64000, 21059, 26367, 28053, 28399, 32224, 35558,
- 36910, 36958, 39636, 21021, 21119, 21736, 24980, 25220, 25307, 26786,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 26898, 26970, 27189, 28818,
- 28966, 30813, 30977, 30990, 31186, 31245, 32918, 33400, 33493, 33609,
- 34121, 35970, 36229, 37218, 37259, 37294, 20419, 22225, 29165, 30679,
- 34560, 35320, 23544, 24534, 26449, 37032, 21474, 22618, 23541, 24740,
- 24961, 25696, 32317, 32880, 34085, 37507, 25774, 20652, 23828, 26368,
- 22684, 25277, 25512, 26894, 27000, 27166, 28267, 30394, 31179, 33467,
- 33833, 35535, 36264, 36861, 37138, 37195, 37276, 37648, 37656, 37786,
- 38619, 39478, 39949, 19985, 30044, 31069, 31482, 31569, 31689, 32302,
- 33988, 36441, 36468, 36600, 36880, 26149, 26943, 29763, 20986, 26414,
- 40668, 20805, 24544, 27798, 34802, 34909, 34935, 24756, 33205, 33795,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 36101, 21462, 21561, 22068,
- 23094, 23601, 28810, 32736, 32858, 33030, 33261, 36259, 37257, 39519,
- 40434, 20596, 20164, 21408, 24827, 28204, 23652, 20360, 20516, 21988,
- 23769, 24159, 24677, 26772, 27835, 28100, 29118, 30164, 30196, 30305,
- 31258, 31305, 32199, 32251, 32622, 33268, 34473, 36636, 38601, 39347,
- 40786, 21063, 21189, 39149, 35242, 19971, 26578, 28422, 20405, 23522,
- 26517, 27784, 28024, 29723, 30759, 37341, 37756, 34756, 31204, 31281,
- 24555, 20182, 21668, 21822, 22702, 22949, 24816, 25171, 25302, 26422,
- 26965, 33333, 38464, 39345, 39389, 20524, 21331, 21828, 22396, 64001,
- 25176, 64002, 25826, 26219, 26589, 28609, 28655, 29730, 29752, 35351,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 37944, 21585, 22022, 22374,
- 24392, 24986, 27470, 28760, 28845, 32187, 35477, 22890, 33067, 25506,
- 30472, 32829, 36010, 22612, 25645, 27067, 23445, 24081, 28271, 64003,
- 34153, 20812, 21488, 22826, 24608, 24907, 27526, 27760, 27888, 31518,
- 32974, 33492, 36294, 37040, 39089, 64004, 25799, 28580, 25745, 25860,
- 20814, 21520, 22303, 35342, 24927, 26742, 64005, 30171, 31570, 32113,
- 36890, 22534, 27084, 33151, 35114, 36864, 38969, 20600, 22871, 22956,
- 25237, 36879, 39722, 24925, 29305, 38358, 22369, 23110, 24052, 25226,
- 25773, 25850, 26487, 27874, 27966, 29228, 29750, 30772, 32631, 33453,
- 36315, 38935, 21028, 22338, 26495, 29256, 29923, 36009, 36774, 37393,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 38442, 20843, 21485, 25420,
- 20329, 21764, 24726, 25943, 27803, 28031, 29260, 29437, 31255, 35207,
- 35997, 24429, 28558, 28921, 33192, 24846, 20415, 20559, 25153, 29255,
- 31687, 32232, 32745, 36941, 38829, 39449, 36022, 22378, 24179, 26544,
- 33805, 35413, 21536, 23318, 24163, 24290, 24330, 25987, 32954, 34109,
- 38281, 38491, 20296, 21253, 21261, 21263, 21638, 21754, 22275, 24067,
- 24598, 25243, 25265, 25429, 64006, 27873, 28006, 30129, 30770, 32990,
- 33071, 33502, 33889, 33970, 34957, 35090, 36875, 37610, 39165, 39825,
- 24133, 26292, 26333, 28689, 29190, 64007, 20469, 21117, 24426, 24915,
- 26451, 27161, 28418, 29922, 31080, 34920, 35961, 39111, 39108, 39491,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 21697, 31263, 26963, 35575,
- 35914, 39080, 39342, 24444, 25259, 30130, 30382, 34987, 36991, 38466,
- 21305, 24380, 24517, 27852, 29644, 30050, 30091, 31558, 33534, 39325,
- 20047, 36924, 19979, 20309, 21414, 22799, 24264, 26160, 27827, 29781,
- 33655, 34662, 36032, 36944, 38686, 39957, 22737, 23416, 34384, 35604,
- 40372, 23506, 24680, 24717, 26097, 27735, 28450, 28579, 28698, 32597,
- 32752, 38289, 38290, 38480, 38867, 21106, 36676, 20989, 21547, 21688,
- 21859, 21898, 27323, 28085, 32216, 33382, 37532, 38519, 40569, 21512,
- 21704, 30418, 34532, 38308, 38356, 38492, 20130, 20233, 23022, 23270,
- 24055, 24658, 25239, 26477, 26689, 27782, 28207, 32568, 32923, 33322,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 64008, 64009, 38917, 20133,
- 20565, 21683, 22419, 22874, 23401, 23475, 25032, 26999, 28023, 28707,
- 34809, 35299, 35442, 35559, 36994, 39405, 39608, 21182, 26680, 20502,
- 24184, 26447, 33607, 34892, 20139, 21521, 22190, 29670, 37141, 38911,
- 39177, 39255, 39321, 22099, 22687, 34395, 35377, 25010, 27382, 29563,
- 36562, 27463, 38570, 39511, 22869, 29184, 36203, 38761, 20436, 23796,
- 24358, 25080, 26203, 27883, 28843, 29572, 29625, 29694, 30505, 30541,
- 32067, 32098, 32291, 33335, 34898, 64010, 36066, 37449, 39023, 23377,
- 31348, 34880, 38913, 23244, 20448, 21332, 22846, 23805, 25406, 28025,
- 29433, 33029, 33031, 33698, 37583, 38960, 20136, 20804, 21009, 22411,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 24418, 27842, 28366, 28677,
- 28752, 28847, 29074, 29673, 29801, 33610, 34722, 34913, 36872, 37026,
- 37795, 39336, 20846, 24407, 24800, 24935, 26291, 34137, 36426, 37295,
- 38795, 20046, 20114, 21628, 22741, 22778, 22909, 23733, 24359, 25142,
- 25160, 26122, 26215, 27627, 28009, 28111, 28246, 28408, 28564, 28640,
- 28649, 28765, 29392, 29733, 29786, 29920, 30355, 31068, 31946, 32286,
- 32993, 33446, 33899, 33983, 34382, 34399, 34676, 35703, 35946, 37804,
- 38912, 39013, 24785, 25110, 37239, 23130, 26127, 28151, 28222, 29759,
- 39746, 24573, 24794, 31503, 21700, 24344, 27742, 27859, 27946, 28888,
- 32005, 34425, 35340, 40251, 21270, 21644, 23301, 27194, 28779, 30069,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 31117, 31166, 33457, 33775,
- 35441, 35649, 36008, 38772, 64011, 25844, 25899, 30906, 30907, 31339,
- 20024, 21914, 22864, 23462, 24187, 24739, 25563, 27489, 26213, 26707,
- 28185, 29029, 29872, 32008, 36996, 39529, 39973, 27963, 28369, 29502,
- 35905, 38346, 20976, 24140, 24488, 24653, 24822, 24880, 24908, 26179,
- 26180, 27045, 27841, 28255, 28361, 28514, 29004, 29852, 30343, 31681,
- 31783, 33618, 34647, 36945, 38541, 40643, 21295, 22238, 24315, 24458,
- 24674, 24724, 25079, 26214, 26371, 27292, 28142, 28590, 28784, 29546,
- 32362, 33214, 33588, 34516, 35496, 36036, 21123, 29554, 23446, 27243,
- 37892, 21742, 22150, 23389, 25928, 25989, 26313, 26783, 28045, 28102,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 29243, 32948, 37237, 39501,
- 20399, 20505, 21402, 21518, 21564, 21897, 21957, 24127, 24460, 26429,
- 29030, 29661, 36869, 21211, 21235, 22628, 22734, 28932, 29071, 29179,
- 34224, 35347, 26248, 34216, 21927, 26244, 29002, 33841, 21321, 21913,
- 27585, 24409, 24509, 25582, 26249, 28999, 35569, 36637, 40638, 20241,
- 25658, 28875, 30054, 34407, 24676, 35662, 40440, 20807, 20982, 21256,
- 27958, 33016, 40657, 26133, 27427, 28824, 30165, 21507, 23673, 32007,
- 35350, 27424, 27453, 27462, 21560, 24688, 27965, 32725, 33288, 20694,
- 20958, 21916, 22123, 22221, 23020, 23305, 24076, 24985, 24984, 25137,
- 26206, 26342, 29081, 29113, 29114, 29351, 31143, 31232, 32690, 35440,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-
-};
-
-static const unsigned long myhtml_encoding_map_gb18030[] = {
- 19970, 19972, 19973, 19974, 19983, 19986, 19991, 19999, 20000, 20001,
- 20003, 20006, 20009, 20014, 20015, 20017, 20019, 20021, 20023, 20028,
- 20032, 20033, 20034, 20036, 20038, 20042, 20049, 20053, 20055, 20058,
- 20059, 20066, 20067, 20068, 20069, 20071, 20072, 20074, 20075, 20076,
- 20077, 20078, 20079, 20082, 20084, 20085, 20086, 20087, 20088, 20089,
- 20090, 20091, 20092, 20093, 20095, 20096, 20097, 20098, 20099, 20100,
- 20101, 20103, 20106, 20112, 20118, 20119, 20121, 20124, 20125, 20126,
- 20131, 20138, 20143, 20144, 20145, 20148, 20150, 20151, 20152, 20153,
- 20156, 20157, 20158, 20168, 20172, 20175, 20176, 20178, 20186, 20187,
- 20188, 20192, 20194, 20198, 20199, 20201, 20205, 20206, 20207, 20209,
- 20212, 20216, 20217, 20218, 20220, 20222, 20224, 20226, 20227, 20228,
- 20229, 20230, 20231, 20232, 20235, 20236, 20242, 20243, 20244, 20245,
- 20246, 20252, 20253, 20257, 20259, 20264, 20265, 20268, 20269, 20270,
- 20273, 20275, 20277, 20279, 20281, 20283, 20286, 20287, 20288, 20289,
- 20290, 20292, 20293, 20295, 20296, 20297, 20298, 20299, 20300, 20306,
- 20308, 20310, 20321, 20322, 20326, 20328, 20330, 20331, 20333, 20334,
- 20337, 20338, 20341, 20343, 20344, 20345, 20346, 20349, 20352, 20353,
- 20354, 20357, 20358, 20359, 20362, 20364, 20366, 20368, 20370, 20371,
- 20373, 20374, 20376, 20377, 20378, 20380, 20382, 20383, 20385, 20386,
- 20388, 20395, 20397, 20400, 20401, 20402, 20403, 20404, 20406, 20407,
- 20408, 20409, 20410, 20411, 20412, 20413, 20414, 20416, 20417, 20418,
- 20422, 20423, 20424, 20425, 20427, 20428, 20429, 20434, 20435, 20436,
- 20437, 20438, 20441, 20443, 20448, 20450, 20452, 20453, 20455, 20459,
- 20460, 20464, 20466, 20468, 20469, 20470, 20471, 20473, 20475, 20476,
- 20477, 20479, 20480, 20481, 20482, 20483, 20484, 20485, 20486, 20487,
- 20488, 20489, 20490, 20491, 20494, 20496, 20497, 20499, 20501, 20502,
- 20503, 20507, 20509, 20510, 20512, 20514, 20515, 20516, 20519, 20523,
- 20527, 20528, 20529, 20530, 20531, 20532, 20533, 20534, 20535, 20536,
- 20537, 20539, 20541, 20543, 20544, 20545, 20546, 20548, 20549, 20550,
- 20553, 20554, 20555, 20557, 20560, 20561, 20562, 20563, 20564, 20566,
- 20567, 20568, 20569, 20571, 20573, 20574, 20575, 20576, 20577, 20578,
- 20579, 20580, 20582, 20583, 20584, 20585, 20586, 20587, 20589, 20590,
- 20591, 20592, 20593, 20594, 20595, 20596, 20597, 20600, 20601, 20602,
- 20604, 20605, 20609, 20610, 20611, 20612, 20614, 20615, 20617, 20618,
- 20619, 20620, 20622, 20623, 20624, 20625, 20626, 20627, 20628, 20629,
- 20630, 20631, 20632, 20633, 20634, 20635, 20636, 20637, 20638, 20639,
- 20640, 20641, 20642, 20644, 20646, 20650, 20651, 20653, 20654, 20655,
- 20656, 20657, 20659, 20660, 20661, 20662, 20663, 20664, 20665, 20668,
- 20669, 20670, 20671, 20672, 20673, 20674, 20675, 20676, 20677, 20678,
- 20679, 20680, 20681, 20682, 20683, 20684, 20685, 20686, 20688, 20689,
- 20690, 20691, 20692, 20693, 20695, 20696, 20697, 20699, 20700, 20701,
- 20702, 20703, 20704, 20705, 20706, 20707, 20708, 20709, 20712, 20713,
- 20714, 20715, 20719, 20720, 20721, 20722, 20724, 20726, 20727, 20728,
- 20729, 20730, 20732, 20733, 20734, 20735, 20736, 20737, 20738, 20739,
- 20740, 20741, 20744, 20745, 20746, 20748, 20749, 20750, 20751, 20752,
- 20753, 20755, 20756, 20757, 20758, 20759, 20760, 20761, 20762, 20763,
- 20764, 20765, 20766, 20767, 20768, 20770, 20771, 20772, 20773, 20774,
- 20775, 20776, 20777, 20778, 20779, 20780, 20781, 20782, 20783, 20784,
- 20785, 20786, 20787, 20788, 20789, 20790, 20791, 20792, 20793, 20794,
- 20795, 20796, 20797, 20798, 20802, 20807, 20810, 20812, 20814, 20815,
- 20816, 20818, 20819, 20823, 20824, 20825, 20827, 20829, 20830, 20831,
- 20832, 20833, 20835, 20836, 20838, 20839, 20841, 20842, 20847, 20850,
- 20858, 20862, 20863, 20867, 20868, 20870, 20871, 20874, 20875, 20878,
- 20879, 20880, 20881, 20883, 20884, 20888, 20890, 20893, 20894, 20895,
- 20897, 20899, 20902, 20903, 20904, 20905, 20906, 20909, 20910, 20916,
- 20920, 20921, 20922, 20926, 20927, 20929, 20930, 20931, 20933, 20936,
- 20938, 20941, 20942, 20944, 20946, 20947, 20948, 20949, 20950, 20951,
- 20952, 20953, 20954, 20956, 20958, 20959, 20962, 20963, 20965, 20966,
- 20967, 20968, 20969, 20970, 20972, 20974, 20977, 20978, 20980, 20983,
- 20990, 20996, 20997, 21001, 21003, 21004, 21007, 21008, 21011, 21012,
- 21013, 21020, 21022, 21023, 21025, 21026, 21027, 21029, 21030, 21031,
- 21034, 21036, 21039, 21041, 21042, 21044, 21045, 21052, 21054, 21060,
- 21061, 21062, 21063, 21064, 21065, 21067, 21070, 21071, 21074, 21075,
- 21077, 21079, 21080, 21081, 21082, 21083, 21085, 21087, 21088, 21090,
- 21091, 21092, 21094, 21096, 21099, 21100, 21101, 21102, 21104, 21105,
- 21107, 21108, 21109, 21110, 21111, 21112, 21113, 21114, 21115, 21116,
- 21118, 21120, 21123, 21124, 21125, 21126, 21127, 21129, 21130, 21131,
- 21132, 21133, 21134, 21135, 21137, 21138, 21140, 21141, 21142, 21143,
- 21144, 21145, 21146, 21148, 21156, 21157, 21158, 21159, 21166, 21167,
- 21168, 21172, 21173, 21174, 21175, 21176, 21177, 21178, 21179, 21180,
- 21181, 21184, 21185, 21186, 21188, 21189, 21190, 21192, 21194, 21196,
- 21197, 21198, 21199, 21201, 21203, 21204, 21205, 21207, 21209, 21210,
- 21211, 21212, 21213, 21214, 21216, 21217, 21218, 21219, 21221, 21222,
- 21223, 21224, 21225, 21226, 21227, 21228, 21229, 21230, 21231, 21233,
- 21234, 21235, 21236, 21237, 21238, 21239, 21240, 21243, 21244, 21245,
- 21249, 21250, 21251, 21252, 21255, 21257, 21258, 21259, 21260, 21262,
- 21265, 21266, 21267, 21268, 21272, 21275, 21276, 21278, 21279, 21282,
- 21284, 21285, 21287, 21288, 21289, 21291, 21292, 21293, 21295, 21296,
- 21297, 21298, 21299, 21300, 21301, 21302, 21303, 21304, 21308, 21309,
- 21312, 21314, 21316, 21318, 21323, 21324, 21325, 21328, 21332, 21336,
- 21337, 21339, 21341, 21349, 21352, 21354, 21356, 21357, 21362, 21366,
- 21369, 21371, 21372, 21373, 21374, 21376, 21377, 21379, 21383, 21384,
- 21386, 21390, 21391, 21392, 21393, 21394, 21395, 21396, 21398, 21399,
- 21401, 21403, 21404, 21406, 21408, 21409, 21412, 21415, 21418, 21419,
- 21420, 21421, 21423, 21424, 21425, 21426, 21427, 21428, 21429, 21431,
- 21432, 21433, 21434, 21436, 21437, 21438, 21440, 21443, 21444, 21445,
- 21446, 21447, 21454, 21455, 21456, 21458, 21459, 21461, 21466, 21468,
- 21469, 21470, 21473, 21474, 21479, 21492, 21498, 21502, 21503, 21504,
- 21506, 21509, 21511, 21515, 21524, 21528, 21529, 21530, 21532, 21538,
- 21540, 21541, 21546, 21552, 21555, 21558, 21559, 21562, 21565, 21567,
- 21569, 21570, 21572, 21573, 21575, 21577, 21580, 21581, 21582, 21583,
- 21585, 21594, 21597, 21598, 21599, 21600, 21601, 21603, 21605, 21607,
- 21609, 21610, 21611, 21612, 21613, 21614, 21615, 21616, 21620, 21625,
- 21626, 21630, 21631, 21633, 21635, 21637, 21639, 21640, 21641, 21642,
- 21645, 21649, 21651, 21655, 21656, 21660, 21662, 21663, 21664, 21665,
- 21666, 21669, 21678, 21680, 21682, 21685, 21686, 21687, 21689, 21690,
- 21692, 21694, 21699, 21701, 21706, 21707, 21718, 21720, 21723, 21728,
- 21729, 21730, 21731, 21732, 21739, 21740, 21743, 21744, 21745, 21748,
- 21749, 21750, 21751, 21752, 21753, 21755, 21758, 21760, 21762, 21763,
- 21764, 21765, 21768, 21770, 21771, 21772, 21773, 21774, 21778, 21779,
- 21781, 21782, 21783, 21784, 21785, 21786, 21788, 21789, 21790, 21791,
- 21793, 21797, 21798, 21800, 21801, 21803, 21805, 21810, 21812, 21813,
- 21814, 21816, 21817, 21818, 21819, 21821, 21824, 21826, 21829, 21831,
- 21832, 21835, 21836, 21837, 21838, 21839, 21841, 21842, 21843, 21844,
- 21847, 21848, 21849, 21850, 21851, 21853, 21854, 21855, 21856, 21858,
- 21859, 21864, 21865, 21867, 21871, 21872, 21873, 21874, 21875, 21876,
- 21881, 21882, 21885, 21887, 21893, 21894, 21900, 21901, 21902, 21904,
- 21906, 21907, 21909, 21910, 21911, 21914, 21915, 21918, 21920, 21921,
- 21922, 21923, 21924, 21925, 21926, 21928, 21929, 21930, 21931, 21932,
- 21933, 21934, 21935, 21936, 21938, 21940, 21942, 21944, 21946, 21948,
- 21951, 21952, 21953, 21954, 21955, 21958, 21959, 21960, 21962, 21963,
- 21966, 21967, 21968, 21973, 21975, 21976, 21977, 21978, 21979, 21982,
- 21984, 21986, 21991, 21993, 21997, 21998, 22000, 22001, 22004, 22006,
- 22008, 22009, 22010, 22011, 22012, 22015, 22018, 22019, 22020, 22021,
- 22022, 22023, 22026, 22027, 22029, 22032, 22033, 22034, 22035, 22036,
- 22037, 22038, 22039, 22041, 22042, 22044, 22045, 22048, 22049, 22050,
- 22053, 22054, 22056, 22057, 22058, 22059, 22062, 22063, 22064, 22067,
- 22069, 22071, 22072, 22074, 22076, 22077, 22078, 22080, 22081, 22082,
- 22083, 22084, 22085, 22086, 22087, 22088, 22089, 22090, 22091, 22095,
- 22096, 22097, 22098, 22099, 22101, 22102, 22106, 22107, 22109, 22110,
- 22111, 22112, 22113, 22115, 22117, 22118, 22119, 22125, 22126, 22127,
- 22128, 22130, 22131, 22132, 22133, 22135, 22136, 22137, 22138, 22141,
- 22142, 22143, 22144, 22145, 22146, 22147, 22148, 22151, 22152, 22153,
- 22154, 22155, 22156, 22157, 22160, 22161, 22162, 22164, 22165, 22166,
- 22167, 22168, 22169, 22170, 22171, 22172, 22173, 22174, 22175, 22176,
- 22177, 22178, 22180, 22181, 22182, 22183, 22184, 22185, 22186, 22187,
- 22188, 22189, 22190, 22192, 22193, 22194, 22195, 22196, 22197, 22198,
- 22200, 22201, 22202, 22203, 22205, 22206, 22207, 22208, 22209, 22210,
- 22211, 22212, 22213, 22214, 22215, 22216, 22217, 22219, 22220, 22221,
- 22222, 22223, 22224, 22225, 22226, 22227, 22229, 22230, 22232, 22233,
- 22236, 22243, 22245, 22246, 22247, 22248, 22249, 22250, 22252, 22254,
- 22255, 22258, 22259, 22262, 22263, 22264, 22267, 22268, 22272, 22273,
- 22274, 22277, 22279, 22283, 22284, 22285, 22286, 22287, 22288, 22289,
- 22290, 22291, 22292, 22293, 22294, 22295, 22296, 22297, 22298, 22299,
- 22301, 22302, 22304, 22305, 22306, 22308, 22309, 22310, 22311, 22315,
- 22321, 22322, 22324, 22325, 22326, 22327, 22328, 22332, 22333, 22335,
- 22337, 22339, 22340, 22341, 22342, 22344, 22345, 22347, 22354, 22355,
- 22356, 22357, 22358, 22360, 22361, 22370, 22371, 22373, 22375, 22380,
- 22382, 22384, 22385, 22386, 22388, 22389, 22392, 22393, 22394, 22397,
- 22398, 22399, 22400, 22401, 22407, 22408, 22409, 22410, 22413, 22414,
- 22415, 22416, 22417, 22420, 22421, 22422, 22423, 22424, 22425, 22426,
- 22428, 22429, 22430, 22431, 22437, 22440, 22442, 22444, 22447, 22448,
- 22449, 22451, 22453, 22454, 22455, 22457, 22458, 22459, 22460, 22461,
- 22462, 22463, 22464, 22465, 22468, 22469, 22470, 22471, 22472, 22473,
- 22474, 22476, 22477, 22480, 22481, 22483, 22486, 22487, 22491, 22492,
- 22494, 22497, 22498, 22499, 22501, 22502, 22503, 22504, 22505, 22506,
- 22507, 22508, 22510, 22512, 22513, 22514, 22515, 22517, 22518, 22519,
- 22523, 22524, 22526, 22527, 22529, 22531, 22532, 22533, 22536, 22537,
- 22538, 22540, 22542, 22543, 22544, 22546, 22547, 22548, 22550, 22551,
- 22552, 22554, 22555, 22556, 22557, 22559, 22562, 22563, 22565, 22566,
- 22567, 22568, 22569, 22571, 22572, 22573, 22574, 22575, 22577, 22578,
- 22579, 22580, 22582, 22583, 22584, 22585, 22586, 22587, 22588, 22589,
- 22590, 22591, 22592, 22593, 22594, 22595, 22597, 22598, 22599, 22600,
- 22601, 22602, 22603, 22606, 22607, 22608, 22610, 22611, 22613, 22614,
- 22615, 22617, 22618, 22619, 22620, 22621, 22623, 22624, 22625, 22626,
- 22627, 22628, 22630, 22631, 22632, 22633, 22634, 22637, 22638, 22639,
- 22640, 22641, 22642, 22643, 22644, 22645, 22646, 22647, 22648, 22649,
- 22650, 22651, 22652, 22653, 22655, 22658, 22660, 22662, 22663, 22664,
- 22666, 22667, 22668, 22669, 22670, 22671, 22672, 22673, 22676, 22677,
- 22678, 22679, 22680, 22683, 22684, 22685, 22688, 22689, 22690, 22691,
- 22692, 22693, 22694, 22695, 22698, 22699, 22700, 22701, 22702, 22703,
- 22704, 22705, 22706, 22707, 22708, 22709, 22710, 22711, 22712, 22713,
- 22714, 22715, 22717, 22718, 22719, 22720, 22722, 22723, 22724, 22726,
- 22727, 22728, 22729, 22730, 22731, 22732, 22733, 22734, 22735, 22736,
- 22738, 22739, 22740, 22742, 22743, 22744, 22745, 22746, 22747, 22748,
- 22749, 22750, 22751, 22752, 22753, 22754, 22755, 22757, 22758, 22759,
- 22760, 22761, 22762, 22765, 22767, 22769, 22770, 22772, 22773, 22775,
- 22776, 22778, 22779, 22780, 22781, 22782, 22783, 22784, 22785, 22787,
- 22789, 22790, 22792, 22793, 22794, 22795, 22796, 22798, 22800, 22801,
- 22802, 22803, 22807, 22808, 22811, 22813, 22814, 22816, 22817, 22818,
- 22819, 22822, 22824, 22828, 22832, 22834, 22835, 22837, 22838, 22843,
- 22845, 22846, 22847, 22848, 22851, 22853, 22854, 22858, 22860, 22861,
- 22864, 22866, 22867, 22873, 22875, 22876, 22877, 22878, 22879, 22881,
- 22883, 22884, 22886, 22887, 22888, 22889, 22890, 22891, 22892, 22893,
- 22894, 22895, 22896, 22897, 22898, 22901, 22903, 22906, 22907, 22908,
- 22910, 22911, 22912, 22917, 22921, 22923, 22924, 22926, 22927, 22928,
- 22929, 22932, 22933, 22936, 22938, 22939, 22940, 22941, 22943, 22944,
- 22945, 22946, 22950, 22951, 22956, 22957, 22960, 22961, 22963, 22964,
- 22965, 22966, 22967, 22968, 22970, 22972, 22973, 22975, 22976, 22977,
- 22978, 22979, 22980, 22981, 22983, 22984, 22985, 22988, 22989, 22990,
- 22991, 22997, 22998, 23001, 23003, 23006, 23007, 23008, 23009, 23010,
- 23012, 23014, 23015, 23017, 23018, 23019, 23021, 23022, 23023, 23024,
- 23025, 23026, 23027, 23028, 23029, 23030, 23031, 23032, 23034, 23036,
- 23037, 23038, 23040, 23042, 23050, 23051, 23053, 23054, 23055, 23056,
- 23058, 23060, 23061, 23062, 23063, 23065, 23066, 23067, 23069, 23070,
- 23073, 23074, 23076, 23078, 23079, 23080, 23082, 23083, 23084, 23085,
- 23086, 23087, 23088, 23091, 23093, 23095, 23096, 23097, 23098, 23099,
- 23101, 23102, 23103, 23105, 23106, 23107, 23108, 23109, 23111, 23112,
- 23115, 23116, 23117, 23118, 23119, 23120, 23121, 23122, 23123, 23124,
- 23126, 23127, 23128, 23129, 23131, 23132, 23133, 23134, 23135, 23136,
- 23137, 23139, 23140, 23141, 23142, 23144, 23145, 23147, 23148, 23149,
- 23150, 23151, 23152, 23153, 23154, 23155, 23160, 23161, 23163, 23164,
- 23165, 23166, 23168, 23169, 23170, 23171, 23172, 23173, 23174, 23175,
- 23176, 23177, 23178, 23179, 23180, 23181, 23182, 23183, 23184, 23185,
- 23187, 23188, 23189, 23190, 23191, 23192, 23193, 23196, 23197, 23198,
- 23199, 23200, 23201, 23202, 23203, 23204, 23205, 23206, 23207, 23208,
- 23209, 23211, 23212, 23213, 23214, 23215, 23216, 23217, 23220, 23222,
- 23223, 23225, 23226, 23227, 23228, 23229, 23231, 23232, 23235, 23236,
- 23237, 23238, 23239, 23240, 23242, 23243, 23245, 23246, 23247, 23248,
- 23249, 23251, 23253, 23255, 23257, 23258, 23259, 23261, 23262, 23263,
- 23266, 23268, 23269, 23271, 23272, 23274, 23276, 23277, 23278, 23279,
- 23280, 23282, 23283, 23284, 23285, 23286, 23287, 23288, 23289, 23290,
- 23291, 23292, 23293, 23294, 23295, 23296, 23297, 23298, 23299, 23300,
- 23301, 23302, 23303, 23304, 23306, 23307, 23308, 23309, 23310, 23311,
- 23312, 23313, 23314, 23315, 23316, 23317, 23320, 23321, 23322, 23323,
- 23324, 23325, 23326, 23327, 23328, 23329, 23330, 23331, 23332, 23333,
- 23334, 23335, 23336, 23337, 23338, 23339, 23340, 23341, 23342, 23343,
- 23344, 23345, 23347, 23349, 23350, 23352, 23353, 23354, 23355, 23356,
- 23357, 23358, 23359, 23361, 23362, 23363, 23364, 23365, 23366, 23367,
- 23368, 23369, 23370, 23371, 23372, 23373, 23374, 23375, 23378, 23382,
- 23390, 23392, 23393, 23399, 23400, 23403, 23405, 23406, 23407, 23410,
- 23412, 23414, 23415, 23416, 23417, 23419, 23420, 23422, 23423, 23426,
- 23430, 23434, 23437, 23438, 23440, 23441, 23442, 23444, 23446, 23455,
- 23463, 23464, 23465, 23468, 23469, 23470, 23471, 23473, 23474, 23479,
- 23482, 23483, 23484, 23488, 23489, 23491, 23496, 23497, 23498, 23499,
- 23501, 23502, 23503, 23505, 23508, 23509, 23510, 23511, 23512, 23513,
- 23514, 23515, 23516, 23520, 23522, 23523, 23526, 23527, 23529, 23530,
- 23531, 23532, 23533, 23535, 23537, 23538, 23539, 23540, 23541, 23542,
- 23543, 23549, 23550, 23552, 23554, 23555, 23557, 23559, 23560, 23563,
- 23564, 23565, 23566, 23568, 23570, 23571, 23575, 23577, 23579, 23582,
- 23583, 23584, 23585, 23587, 23590, 23592, 23593, 23594, 23595, 23597,
- 23598, 23599, 23600, 23602, 23603, 23605, 23606, 23607, 23619, 23620,
- 23622, 23623, 23628, 23629, 23634, 23635, 23636, 23638, 23639, 23640,
- 23642, 23643, 23644, 23645, 23647, 23650, 23652, 23655, 23656, 23657,
- 23658, 23659, 23660, 23661, 23664, 23666, 23667, 23668, 23669, 23670,
- 23671, 23672, 23675, 23676, 23677, 23678, 23680, 23683, 23684, 23685,
- 23686, 23687, 23689, 23690, 23691, 23694, 23695, 23698, 23699, 23701,
- 23709, 23710, 23711, 23712, 23713, 23716, 23717, 23718, 23719, 23720,
- 23722, 23726, 23727, 23728, 23730, 23732, 23734, 23737, 23738, 23739,
- 23740, 23742, 23744, 23746, 23747, 23749, 23750, 23751, 23752, 23753,
- 23754, 23756, 23757, 23758, 23759, 23760, 23761, 23763, 23764, 23765,
- 23766, 23767, 23768, 23770, 23771, 23772, 23773, 23774, 23775, 23776,
- 23778, 23779, 23783, 23785, 23787, 23788, 23790, 23791, 23793, 23794,
- 23795, 23796, 23797, 23798, 23799, 23800, 23801, 23802, 23804, 23805,
- 23806, 23807, 23808, 23809, 23812, 23813, 23816, 23817, 23818, 23819,
- 23820, 23821, 23823, 23824, 23825, 23826, 23827, 23829, 23831, 23832,
- 23833, 23834, 23836, 23837, 23839, 23840, 23841, 23842, 23843, 23845,
- 23848, 23850, 23851, 23852, 23855, 23856, 23857, 23858, 23859, 23861,
- 23862, 23863, 23864, 23865, 23866, 23867, 23868, 23871, 23872, 23873,
- 23874, 23875, 23876, 23877, 23878, 23880, 23881, 23885, 23886, 23887,
- 23888, 23889, 23890, 23891, 23892, 23893, 23894, 23895, 23897, 23898,
- 23900, 23902, 23903, 23904, 23905, 23906, 23907, 23908, 23909, 23910,
- 23911, 23912, 23914, 23917, 23918, 23920, 23921, 23922, 23923, 23925,
- 23926, 23927, 23928, 23929, 23930, 23931, 23932, 23933, 23934, 23935,
- 23936, 23937, 23939, 23940, 23941, 23942, 23943, 23944, 23945, 23946,
- 23947, 23948, 23949, 23950, 23951, 23952, 23953, 23954, 23955, 23956,
- 23957, 23958, 23959, 23960, 23962, 23963, 23964, 23966, 23967, 23968,
- 23969, 23970, 23971, 23972, 23973, 23974, 23975, 23976, 23977, 23978,
- 23979, 23980, 23981, 23982, 23983, 23984, 23985, 23986, 23987, 23988,
- 23989, 23990, 23992, 23993, 23994, 23995, 23996, 23997, 23998, 23999,
- 24000, 24001, 24002, 24003, 24004, 24006, 24007, 24008, 24009, 24010,
- 24011, 24012, 24014, 24015, 24016, 24017, 24018, 24019, 24020, 24021,
- 24022, 24023, 24024, 24025, 24026, 24028, 24031, 24032, 24035, 24036,
- 24042, 24044, 24045, 24048, 24053, 24054, 24056, 24057, 24058, 24059,
- 24060, 24063, 24064, 24068, 24071, 24073, 24074, 24075, 24077, 24078,
- 24082, 24083, 24087, 24094, 24095, 24096, 24097, 24098, 24099, 24100,
- 24101, 24104, 24105, 24106, 24107, 24108, 24111, 24112, 24114, 24115,
- 24116, 24117, 24118, 24121, 24122, 24126, 24127, 24128, 24129, 24131,
- 24134, 24135, 24136, 24137, 24138, 24139, 24141, 24142, 24143, 24144,
- 24145, 24146, 24147, 24150, 24151, 24152, 24153, 24154, 24156, 24157,
- 24159, 24160, 24163, 24164, 24165, 24166, 24167, 24168, 24169, 24170,
- 24171, 24172, 24173, 24174, 24175, 24176, 24177, 24181, 24183, 24185,
- 24190, 24193, 24194, 24195, 24197, 24200, 24201, 24204, 24205, 24206,
- 24210, 24216, 24219, 24221, 24225, 24226, 24227, 24228, 24232, 24233,
- 24234, 24235, 24236, 24238, 24239, 24240, 24241, 24242, 24244, 24250,
- 24251, 24252, 24253, 24255, 24256, 24257, 24258, 24259, 24260, 24261,
- 24262, 24263, 24264, 24267, 24268, 24269, 24270, 24271, 24272, 24276,
- 24277, 24279, 24280, 24281, 24282, 24284, 24285, 24286, 24287, 24288,
- 24289, 24290, 24291, 24292, 24293, 24294, 24295, 24297, 24299, 24300,
- 24301, 24302, 24303, 24304, 24305, 24306, 24307, 24309, 24312, 24313,
- 24315, 24316, 24317, 24325, 24326, 24327, 24329, 24332, 24333, 24334,
- 24336, 24338, 24340, 24342, 24345, 24346, 24348, 24349, 24350, 24353,
- 24354, 24355, 24356, 24360, 24363, 24364, 24366, 24368, 24370, 24371,
- 24372, 24373, 24374, 24375, 24376, 24379, 24381, 24382, 24383, 24385,
- 24386, 24387, 24388, 24389, 24390, 24391, 24392, 24393, 24394, 24395,
- 24396, 24397, 24398, 24399, 24401, 24404, 24409, 24410, 24411, 24412,
- 24414, 24415, 24416, 24419, 24421, 24423, 24424, 24427, 24430, 24431,
- 24434, 24436, 24437, 24438, 24440, 24442, 24445, 24446, 24447, 24451,
- 24454, 24461, 24462, 24463, 24465, 24467, 24468, 24470, 24474, 24475,
- 24477, 24478, 24479, 24480, 24482, 24483, 24484, 24485, 24486, 24487,
- 24489, 24491, 24492, 24495, 24496, 24497, 24498, 24499, 24500, 24502,
- 24504, 24505, 24506, 24507, 24510, 24511, 24512, 24513, 24514, 24519,
- 24520, 24522, 24523, 24526, 24531, 24532, 24533, 24538, 24539, 24540,
- 24542, 24543, 24546, 24547, 24549, 24550, 24552, 24553, 24556, 24559,
- 24560, 24562, 24563, 24564, 24566, 24567, 24569, 24570, 24572, 24583,
- 24584, 24585, 24587, 24588, 24592, 24593, 24595, 24599, 24600, 24602,
- 24606, 24607, 24610, 24611, 24612, 24620, 24621, 24622, 24624, 24625,
- 24626, 24627, 24628, 24630, 24631, 24632, 24633, 24634, 24637, 24638,
- 24640, 24644, 24645, 24646, 24647, 24648, 24649, 24650, 24652, 24654,
- 24655, 24657, 24659, 24660, 24662, 24663, 24664, 24667, 24668, 24670,
- 24671, 24672, 24673, 24677, 24678, 24686, 24689, 24690, 24692, 24693,
- 24695, 24702, 24704, 24705, 24706, 24709, 24710, 24711, 24712, 24714,
- 24715, 24718, 24719, 24720, 24721, 24723, 24725, 24727, 24728, 24729,
- 24732, 24734, 24737, 24738, 24740, 24741, 24743, 24745, 24746, 24750,
- 24752, 24755, 24757, 24758, 24759, 24761, 24762, 24765, 24766, 24767,
- 24768, 24769, 24770, 24771, 24772, 24775, 24776, 24777, 24780, 24781,
- 24782, 24783, 24784, 24786, 24787, 24788, 24790, 24791, 24793, 24795,
- 24798, 24801, 24802, 24803, 24804, 24805, 24810, 24817, 24818, 24821,
- 24823, 24824, 24827, 24828, 24829, 24830, 24831, 24834, 24835, 24836,
- 24837, 24839, 24842, 24843, 24844, 24848, 24849, 24850, 24851, 24852,
- 24854, 24855, 24856, 24857, 24859, 24860, 24861, 24862, 24865, 24866,
- 24869, 24872, 24873, 24874, 24876, 24877, 24878, 24879, 24880, 24881,
- 24882, 24883, 24884, 24885, 24886, 24887, 24888, 24889, 24890, 24891,
- 24892, 24893, 24894, 24896, 24897, 24898, 24899, 24900, 24901, 24902,
- 24903, 24905, 24907, 24909, 24911, 24912, 24914, 24915, 24916, 24918,
- 24919, 24920, 24921, 24922, 24923, 24924, 24926, 24927, 24928, 24929,
- 24931, 24932, 24933, 24934, 24937, 24938, 24939, 24940, 24941, 24942,
- 24943, 24945, 24946, 24947, 24948, 24950, 24952, 24953, 24954, 24955,
- 24956, 24957, 24958, 24959, 24960, 24961, 24962, 24963, 24964, 24965,
- 24966, 24967, 24968, 24969, 24970, 24972, 24973, 24975, 24976, 24977,
- 24978, 24979, 24981, 24982, 24983, 24984, 24985, 24986, 24987, 24988,
- 24990, 24991, 24992, 24993, 24994, 24995, 24996, 24997, 24998, 25002,
- 25003, 25005, 25006, 25007, 25008, 25009, 25010, 25011, 25012, 25013,
- 25014, 25016, 25017, 25018, 25019, 25020, 25021, 25023, 25024, 25025,
- 25027, 25028, 25029, 25030, 25031, 25033, 25036, 25037, 25038, 25039,
- 25040, 25043, 25045, 25046, 25047, 25048, 25049, 25050, 25051, 25052,
- 25053, 25054, 25055, 25056, 25057, 25058, 25059, 25060, 25061, 25063,
- 25064, 25065, 25066, 25067, 25068, 25069, 25070, 25071, 25072, 25073,
- 25074, 25075, 25076, 25078, 25079, 25080, 25081, 25082, 25083, 25084,
- 25085, 25086, 25088, 25089, 25090, 25091, 25092, 25093, 25095, 25097,
- 25107, 25108, 25113, 25116, 25117, 25118, 25120, 25123, 25126, 25127,
- 25128, 25129, 25131, 25133, 25135, 25136, 25137, 25138, 25141, 25142,
- 25144, 25145, 25146, 25147, 25148, 25154, 25156, 25157, 25158, 25162,
- 25167, 25168, 25173, 25174, 25175, 25177, 25178, 25180, 25181, 25182,
- 25183, 25184, 25185, 25186, 25188, 25189, 25192, 25201, 25202, 25204,
- 25205, 25207, 25208, 25210, 25211, 25213, 25217, 25218, 25219, 25221,
- 25222, 25223, 25224, 25227, 25228, 25229, 25230, 25231, 25232, 25236,
- 25241, 25244, 25245, 25246, 25251, 25254, 25255, 25257, 25258, 25261,
- 25262, 25263, 25264, 25266, 25267, 25268, 25270, 25271, 25272, 25274,
- 25278, 25280, 25281, 25283, 25291, 25295, 25297, 25301, 25309, 25310,
- 25312, 25313, 25316, 25322, 25323, 25328, 25330, 25333, 25336, 25337,
- 25338, 25339, 25344, 25347, 25348, 25349, 25350, 25354, 25355, 25356,
- 25357, 25359, 25360, 25362, 25363, 25364, 25365, 25367, 25368, 25369,
- 25372, 25382, 25383, 25385, 25388, 25389, 25390, 25392, 25393, 25395,
- 25396, 25397, 25398, 25399, 25400, 25403, 25404, 25406, 25407, 25408,
- 25409, 25412, 25415, 25416, 25418, 25425, 25426, 25427, 25428, 25430,
- 25431, 25432, 25433, 25434, 25435, 25436, 25437, 25440, 25444, 25445,
- 25446, 25448, 25450, 25451, 25452, 25455, 25456, 25458, 25459, 25460,
- 25461, 25464, 25465, 25468, 25469, 25470, 25471, 25473, 25475, 25476,
- 25477, 25478, 25483, 25485, 25489, 25491, 25492, 25493, 25495, 25497,
- 25498, 25499, 25500, 25501, 25502, 25503, 25505, 25508, 25510, 25515,
- 25519, 25521, 25522, 25525, 25526, 25529, 25531, 25533, 25535, 25536,
- 25537, 25538, 25539, 25541, 25543, 25544, 25546, 25547, 25548, 25553,
- 25555, 25556, 25557, 25559, 25560, 25561, 25562, 25563, 25564, 25565,
- 25567, 25570, 25572, 25573, 25574, 25575, 25576, 25579, 25580, 25582,
- 25583, 25584, 25585, 25587, 25589, 25591, 25593, 25594, 25595, 25596,
- 25598, 25603, 25604, 25606, 25607, 25608, 25609, 25610, 25613, 25614,
- 25617, 25618, 25621, 25622, 25623, 25624, 25625, 25626, 25629, 25631,
- 25634, 25635, 25636, 25637, 25639, 25640, 25641, 25643, 25646, 25647,
- 25648, 25649, 25650, 25651, 25653, 25654, 25655, 25656, 25657, 25659,
- 25660, 25662, 25664, 25666, 25667, 25673, 25675, 25676, 25677, 25678,
- 25679, 25680, 25681, 25683, 25685, 25686, 25687, 25689, 25690, 25691,
- 25692, 25693, 25695, 25696, 25697, 25698, 25699, 25700, 25701, 25702,
- 25704, 25706, 25707, 25708, 25710, 25711, 25712, 25713, 25714, 25715,
- 25716, 25717, 25718, 25719, 25723, 25724, 25725, 25726, 25727, 25728,
- 25729, 25731, 25734, 25736, 25737, 25738, 25739, 25740, 25741, 25742,
- 25743, 25744, 25747, 25748, 25751, 25752, 25754, 25755, 25756, 25757,
- 25759, 25760, 25761, 25762, 25763, 25765, 25766, 25767, 25768, 25770,
- 25771, 25775, 25777, 25778, 25779, 25780, 25782, 25785, 25787, 25789,
- 25790, 25791, 25793, 25795, 25796, 25798, 25799, 25800, 25801, 25802,
- 25803, 25804, 25807, 25809, 25811, 25812, 25813, 25814, 25817, 25818,
- 25819, 25820, 25821, 25823, 25824, 25825, 25827, 25829, 25831, 25832,
- 25833, 25834, 25835, 25836, 25837, 25838, 25839, 25840, 25841, 25842,
- 25843, 25844, 25845, 25846, 25847, 25848, 25849, 25850, 25851, 25852,
- 25853, 25854, 25855, 25857, 25858, 25859, 25860, 25861, 25862, 25863,
- 25864, 25866, 25867, 25868, 25869, 25870, 25871, 25872, 25873, 25875,
- 25876, 25877, 25878, 25879, 25881, 25882, 25883, 25884, 25885, 25886,
- 25887, 25888, 25889, 25890, 25891, 25892, 25894, 25895, 25896, 25897,
- 25898, 25900, 25901, 25904, 25905, 25906, 25907, 25911, 25914, 25916,
- 25917, 25920, 25921, 25922, 25923, 25924, 25926, 25927, 25930, 25931,
- 25933, 25934, 25936, 25938, 25939, 25940, 25943, 25944, 25946, 25948,
- 25951, 25952, 25953, 25956, 25957, 25959, 25960, 25961, 25962, 25965,
- 25966, 25967, 25969, 25971, 25973, 25974, 25976, 25977, 25978, 25979,
- 25980, 25981, 25982, 25983, 25984, 25985, 25986, 25987, 25988, 25989,
- 25990, 25992, 25993, 25994, 25997, 25998, 25999, 26002, 26004, 26005,
- 26006, 26008, 26010, 26013, 26014, 26016, 26018, 26019, 26022, 26024,
- 26026, 26028, 26030, 26033, 26034, 26035, 26036, 26037, 26038, 26039,
- 26040, 26042, 26043, 26046, 26047, 26048, 26050, 26055, 26056, 26057,
- 26058, 26061, 26064, 26065, 26067, 26068, 26069, 26072, 26073, 26074,
- 26075, 26076, 26077, 26078, 26079, 26081, 26083, 26084, 26090, 26091,
- 26098, 26099, 26100, 26101, 26104, 26105, 26107, 26108, 26109, 26110,
- 26111, 26113, 26116, 26117, 26119, 26120, 26121, 26123, 26125, 26128,
- 26129, 26130, 26134, 26135, 26136, 26138, 26139, 26140, 26142, 26145,
- 26146, 26147, 26148, 26150, 26153, 26154, 26155, 26156, 26158, 26160,
- 26162, 26163, 26167, 26168, 26169, 26170, 26171, 26173, 26175, 26176,
- 26178, 26180, 26181, 26182, 26183, 26184, 26185, 26186, 26189, 26190,
- 26192, 26193, 26200, 26201, 26203, 26204, 26205, 26206, 26208, 26210,
- 26211, 26213, 26215, 26217, 26218, 26219, 26220, 26221, 26225, 26226,
- 26227, 26229, 26232, 26233, 26235, 26236, 26237, 26239, 26240, 26241,
- 26243, 26245, 26246, 26248, 26249, 26250, 26251, 26253, 26254, 26255,
- 26256, 26258, 26259, 26260, 26261, 26264, 26265, 26266, 26267, 26268,
- 26270, 26271, 26272, 26273, 26274, 26275, 26276, 26277, 26278, 26281,
- 26282, 26283, 26284, 26285, 26287, 26288, 26289, 26290, 26291, 26293,
- 26294, 26295, 26296, 26298, 26299, 26300, 26301, 26303, 26304, 26305,
- 26306, 26307, 26308, 26309, 26310, 26311, 26312, 26313, 26314, 26315,
- 26316, 26317, 26318, 26319, 26320, 26321, 26322, 26323, 26324, 26325,
- 26326, 26327, 26328, 26330, 26334, 26335, 26336, 26337, 26338, 26339,
- 26340, 26341, 26343, 26344, 26346, 26347, 26348, 26349, 26350, 26351,
- 26353, 26357, 26358, 26360, 26362, 26363, 26365, 26369, 26370, 26371,
- 26372, 26373, 26374, 26375, 26380, 26382, 26383, 26385, 26386, 26387,
- 26390, 26392, 26393, 26394, 26396, 26398, 26400, 26401, 26402, 26403,
- 26404, 26405, 26407, 26409, 26414, 26416, 26418, 26419, 26422, 26423,
- 26424, 26425, 26427, 26428, 26430, 26431, 26433, 26436, 26437, 26439,
- 26442, 26443, 26445, 26450, 26452, 26453, 26455, 26456, 26457, 26458,
- 26459, 26461, 26466, 26467, 26468, 26470, 26471, 26475, 26476, 26478,
- 26481, 26484, 26486, 26488, 26489, 26490, 26491, 26493, 26496, 26498,
- 26499, 26501, 26502, 26504, 26506, 26508, 26509, 26510, 26511, 26513,
- 26514, 26515, 26516, 26518, 26521, 26523, 26527, 26528, 26529, 26532,
- 26534, 26537, 26540, 26542, 26545, 26546, 26548, 26553, 26554, 26555,
- 26556, 26557, 26558, 26559, 26560, 26562, 26565, 26566, 26567, 26568,
- 26569, 26570, 26571, 26572, 26573, 26574, 26581, 26582, 26583, 26587,
- 26591, 26593, 26595, 26596, 26598, 26599, 26600, 26602, 26603, 26605,
- 26606, 26610, 26613, 26614, 26615, 26616, 26617, 26618, 26619, 26620,
- 26622, 26625, 26626, 26627, 26628, 26630, 26637, 26640, 26642, 26644,
- 26645, 26648, 26649, 26650, 26651, 26652, 26654, 26655, 26656, 26658,
- 26659, 26660, 26661, 26662, 26663, 26664, 26667, 26668, 26669, 26670,
- 26671, 26672, 26673, 26676, 26677, 26678, 26682, 26683, 26687, 26695,
- 26699, 26701, 26703, 26706, 26710, 26711, 26712, 26713, 26714, 26715,
- 26716, 26717, 26718, 26719, 26730, 26732, 26733, 26734, 26735, 26736,
- 26737, 26738, 26739, 26741, 26744, 26745, 26746, 26747, 26748, 26749,
- 26750, 26751, 26752, 26754, 26756, 26759, 26760, 26761, 26762, 26763,
- 26764, 26765, 26766, 26768, 26769, 26770, 26772, 26773, 26774, 26776,
- 26777, 26778, 26779, 26780, 26781, 26782, 26783, 26784, 26785, 26787,
- 26788, 26789, 26793, 26794, 26795, 26796, 26798, 26801, 26802, 26804,
- 26806, 26807, 26808, 26809, 26810, 26811, 26812, 26813, 26814, 26815,
- 26817, 26819, 26820, 26821, 26822, 26823, 26824, 26826, 26828, 26830,
- 26831, 26832, 26833, 26835, 26836, 26838, 26839, 26841, 26843, 26844,
- 26845, 26846, 26847, 26849, 26850, 26852, 26853, 26854, 26855, 26856,
- 26857, 26858, 26859, 26860, 26861, 26863, 26866, 26867, 26868, 26870,
- 26871, 26872, 26875, 26877, 26878, 26879, 26880, 26882, 26883, 26884,
- 26886, 26887, 26888, 26889, 26890, 26892, 26895, 26897, 26899, 26900,
- 26901, 26902, 26903, 26904, 26905, 26906, 26907, 26908, 26909, 26910,
- 26913, 26914, 26915, 26917, 26918, 26919, 26920, 26921, 26922, 26923,
- 26924, 26926, 26927, 26929, 26930, 26931, 26933, 26934, 26935, 26936,
- 26938, 26939, 26940, 26942, 26944, 26945, 26947, 26948, 26949, 26950,
- 26951, 26952, 26953, 26954, 26955, 26956, 26957, 26958, 26959, 26960,
- 26961, 26962, 26963, 26965, 26966, 26968, 26969, 26971, 26972, 26975,
- 26977, 26978, 26980, 26981, 26983, 26984, 26985, 26986, 26988, 26989,
- 26991, 26992, 26994, 26995, 26996, 26997, 26998, 27002, 27003, 27005,
- 27006, 27007, 27009, 27011, 27013, 27018, 27019, 27020, 27022, 27023,
- 27024, 27025, 27026, 27027, 27030, 27031, 27033, 27034, 27037, 27038,
- 27039, 27040, 27041, 27042, 27043, 27044, 27045, 27046, 27049, 27050,
- 27052, 27054, 27055, 27056, 27058, 27059, 27061, 27062, 27064, 27065,
- 27066, 27068, 27069, 27070, 27071, 27072, 27074, 27075, 27076, 27077,
- 27078, 27079, 27080, 27081, 27083, 27085, 27087, 27089, 27090, 27091,
- 27093, 27094, 27095, 27096, 27097, 27098, 27100, 27101, 27102, 27105,
- 27106, 27107, 27108, 27109, 27110, 27111, 27112, 27113, 27114, 27115,
- 27116, 27118, 27119, 27120, 27121, 27123, 27124, 27125, 27126, 27127,
- 27128, 27129, 27130, 27131, 27132, 27134, 27136, 27137, 27138, 27139,
- 27140, 27141, 27142, 27143, 27144, 27145, 27147, 27148, 27149, 27150,
- 27151, 27152, 27153, 27154, 27155, 27156, 27157, 27158, 27161, 27162,
- 27163, 27164, 27165, 27166, 27168, 27170, 27171, 27172, 27173, 27174,
- 27175, 27177, 27179, 27180, 27181, 27182, 27184, 27186, 27187, 27188,
- 27190, 27191, 27192, 27193, 27194, 27195, 27196, 27199, 27200, 27201,
- 27202, 27203, 27205, 27206, 27208, 27209, 27210, 27211, 27212, 27213,
- 27214, 27215, 27217, 27218, 27219, 27220, 27221, 27222, 27223, 27226,
- 27228, 27229, 27230, 27231, 27232, 27234, 27235, 27236, 27238, 27239,
- 27240, 27241, 27242, 27243, 27244, 27245, 27246, 27247, 27248, 27250,
- 27251, 27252, 27253, 27254, 27255, 27256, 27258, 27259, 27261, 27262,
- 27263, 27265, 27266, 27267, 27269, 27270, 27271, 27272, 27273, 27274,
- 27275, 27276, 27277, 27279, 27282, 27283, 27284, 27285, 27286, 27288,
- 27289, 27290, 27291, 27292, 27293, 27294, 27295, 27297, 27298, 27299,
- 27300, 27301, 27302, 27303, 27304, 27306, 27309, 27310, 27311, 27312,
- 27313, 27314, 27315, 27316, 27317, 27318, 27319, 27320, 27321, 27322,
- 27323, 27324, 27325, 27326, 27327, 27328, 27329, 27330, 27331, 27332,
- 27333, 27334, 27335, 27336, 27337, 27338, 27339, 27340, 27341, 27342,
- 27343, 27344, 27345, 27346, 27347, 27348, 27349, 27350, 27351, 27352,
- 27353, 27354, 27355, 27356, 27357, 27358, 27359, 27360, 27361, 27362,
- 27363, 27364, 27365, 27366, 27367, 27368, 27369, 27370, 27371, 27372,
- 27373, 27374, 27375, 27376, 27377, 27378, 27379, 27380, 27381, 27382,
- 27383, 27384, 27385, 27386, 27387, 27388, 27389, 27390, 27391, 27392,
- 27393, 27394, 27395, 27396, 27397, 27398, 27399, 27400, 27401, 27402,
- 27403, 27404, 27405, 27406, 27407, 27408, 27409, 27410, 27411, 27412,
- 27413, 27414, 27415, 27416, 27417, 27418, 27419, 27420, 27421, 27422,
- 27423, 27429, 27430, 27432, 27433, 27434, 27435, 27436, 27437, 27438,
- 27439, 27440, 27441, 27443, 27444, 27445, 27446, 27448, 27451, 27452,
- 27453, 27455, 27456, 27457, 27458, 27460, 27461, 27464, 27466, 27467,
- 27469, 27470, 27471, 27472, 27473, 27474, 27475, 27476, 27477, 27478,
- 27479, 27480, 27482, 27483, 27484, 27485, 27486, 27487, 27488, 27489,
- 27496, 27497, 27499, 27500, 27501, 27502, 27503, 27504, 27505, 27506,
- 27507, 27508, 27509, 27510, 27511, 27512, 27514, 27517, 27518, 27519,
- 27520, 27525, 27528, 27532, 27534, 27535, 27536, 27537, 27540, 27541,
- 27543, 27544, 27545, 27548, 27549, 27550, 27551, 27552, 27554, 27555,
- 27556, 27557, 27558, 27559, 27560, 27561, 27563, 27564, 27565, 27566,
- 27567, 27568, 27569, 27570, 27574, 27576, 27577, 27578, 27579, 27580,
- 27581, 27582, 27584, 27587, 27588, 27590, 27591, 27592, 27593, 27594,
- 27596, 27598, 27600, 27601, 27608, 27610, 27612, 27613, 27614, 27615,
- 27616, 27618, 27619, 27620, 27621, 27622, 27623, 27624, 27625, 27628,
- 27629, 27630, 27632, 27633, 27634, 27636, 27638, 27639, 27640, 27642,
- 27643, 27644, 27646, 27647, 27648, 27649, 27650, 27651, 27652, 27656,
- 27657, 27658, 27659, 27660, 27662, 27666, 27671, 27676, 27677, 27678,
- 27680, 27683, 27685, 27691, 27692, 27693, 27697, 27699, 27702, 27703,
- 27705, 27706, 27707, 27708, 27710, 27711, 27715, 27716, 27717, 27720,
- 27723, 27724, 27725, 27726, 27727, 27729, 27730, 27731, 27734, 27736,
- 27737, 27738, 27746, 27747, 27749, 27750, 27751, 27755, 27756, 27757,
- 27758, 27759, 27761, 27763, 27765, 27767, 27768, 27770, 27771, 27772,
- 27775, 27776, 27780, 27783, 27786, 27787, 27789, 27790, 27793, 27794,
- 27797, 27798, 27799, 27800, 27802, 27804, 27805, 27806, 27808, 27810,
- 27816, 27820, 27823, 27824, 27828, 27829, 27830, 27831, 27834, 27840,
- 27841, 27842, 27843, 27846, 27847, 27848, 27851, 27853, 27854, 27855,
- 27857, 27858, 27864, 27865, 27866, 27868, 27869, 27871, 27876, 27878,
- 27879, 27881, 27884, 27885, 27890, 27892, 27897, 27903, 27904, 27906,
- 27907, 27909, 27910, 27912, 27913, 27914, 27917, 27919, 27920, 27921,
- 27923, 27924, 27925, 27926, 27928, 27932, 27933, 27935, 27936, 27937,
- 27938, 27939, 27940, 27942, 27944, 27945, 27948, 27949, 27951, 27952,
- 27956, 27958, 27959, 27960, 27962, 27967, 27968, 27970, 27972, 27977,
- 27980, 27984, 27989, 27990, 27991, 27992, 27995, 27997, 27999, 28001,
- 28002, 28004, 28005, 28007, 28008, 28011, 28012, 28013, 28016, 28017,
- 28018, 28019, 28021, 28022, 28025, 28026, 28027, 28029, 28030, 28031,
- 28032, 28033, 28035, 28036, 28038, 28039, 28042, 28043, 28045, 28047,
- 28048, 28050, 28054, 28055, 28056, 28057, 28058, 28060, 28066, 28069,
- 28076, 28077, 28080, 28081, 28083, 28084, 28086, 28087, 28089, 28090,
- 28091, 28092, 28093, 28094, 28097, 28098, 28099, 28104, 28105, 28106,
- 28109, 28110, 28111, 28112, 28114, 28115, 28116, 28117, 28119, 28122,
- 28123, 28124, 28127, 28130, 28131, 28133, 28135, 28136, 28137, 28138,
- 28141, 28143, 28144, 28146, 28148, 28149, 28150, 28152, 28154, 28157,
- 28158, 28159, 28160, 28161, 28162, 28163, 28164, 28166, 28167, 28168,
- 28169, 28171, 28175, 28178, 28179, 28181, 28184, 28185, 28187, 28188,
- 28190, 28191, 28194, 28198, 28199, 28200, 28202, 28204, 28206, 28208,
- 28209, 28211, 28213, 28214, 28215, 28217, 28219, 28220, 28221, 28222,
- 28223, 28224, 28225, 28226, 28229, 28230, 28231, 28232, 28233, 28234,
- 28235, 28236, 28239, 28240, 28241, 28242, 28245, 28247, 28249, 28250,
- 28252, 28253, 28254, 28256, 28257, 28258, 28259, 28260, 28261, 28262,
- 28263, 28264, 28265, 28266, 28268, 28269, 28271, 28272, 28273, 28274,
- 28275, 28276, 28277, 28278, 28279, 28280, 28281, 28282, 28283, 28284,
- 28285, 28288, 28289, 28290, 28292, 28295, 28296, 28298, 28299, 28300,
- 28301, 28302, 28305, 28306, 28307, 28308, 28309, 28310, 28311, 28313,
- 28314, 28315, 28317, 28318, 28320, 28321, 28323, 28324, 28326, 28328,
- 28329, 28331, 28332, 28333, 28334, 28336, 28339, 28341, 28344, 28345,
- 28348, 28350, 28351, 28352, 28355, 28356, 28357, 28358, 28360, 28361,
- 28362, 28364, 28365, 28366, 28368, 28370, 28374, 28376, 28377, 28379,
- 28380, 28381, 28387, 28391, 28394, 28395, 28396, 28397, 28398, 28399,
- 28400, 28401, 28402, 28403, 28405, 28406, 28407, 28408, 28410, 28411,
- 28412, 28413, 28414, 28415, 28416, 28417, 28419, 28420, 28421, 28423,
- 28424, 28426, 28427, 28428, 28429, 28430, 28432, 28433, 28434, 28438,
- 28439, 28440, 28441, 28442, 28443, 28444, 28445, 28446, 28447, 28449,
- 28450, 28451, 28453, 28454, 28455, 28456, 28460, 28462, 28464, 28466,
- 28468, 28469, 28471, 28472, 28473, 28474, 28475, 28476, 28477, 28479,
- 28480, 28481, 28482, 28483, 28484, 28485, 28488, 28489, 28490, 28492,
- 28494, 28495, 28496, 28497, 28498, 28499, 28500, 28501, 28502, 28503,
- 28505, 28506, 28507, 28509, 28511, 28512, 28513, 28515, 28516, 28517,
- 28519, 28520, 28521, 28522, 28523, 28524, 28527, 28528, 28529, 28531,
- 28533, 28534, 28535, 28537, 28539, 28541, 28542, 28543, 28544, 28545,
- 28546, 28547, 28549, 28550, 28551, 28554, 28555, 28559, 28560, 28561,
- 28562, 28563, 28564, 28565, 28566, 28567, 28568, 28569, 28570, 28571,
- 28573, 28574, 28575, 28576, 28578, 28579, 28580, 28581, 28582, 28584,
- 28585, 28586, 28587, 28588, 28589, 28590, 28591, 28592, 28593, 28594,
- 28596, 28597, 28599, 28600, 28602, 28603, 28604, 28605, 28606, 28607,
- 28609, 28611, 28612, 28613, 28614, 28615, 28616, 28618, 28619, 28620,
- 28621, 28622, 28623, 28624, 28627, 28628, 28629, 28630, 28631, 28632,
- 28633, 28634, 28635, 28636, 28637, 28639, 28642, 28643, 28644, 28645,
- 28646, 28647, 28648, 28649, 28650, 28651, 28652, 28653, 28656, 28657,
- 28658, 28659, 28660, 28661, 28662, 28663, 28664, 28665, 28666, 28667,
- 28668, 28669, 28670, 28671, 28672, 28673, 28674, 28675, 28676, 28677,
- 28678, 28679, 28680, 28681, 28682, 28683, 28684, 28685, 28686, 28687,
- 28688, 28690, 28691, 28692, 28693, 28694, 28695, 28696, 28697, 28700,
- 28701, 28702, 28703, 28704, 28705, 28706, 28708, 28709, 28710, 28711,
- 28712, 28713, 28714, 28715, 28716, 28717, 28718, 28719, 28720, 28721,
- 28722, 28723, 28724, 28726, 28727, 28728, 28730, 28731, 28732, 28733,
- 28734, 28735, 28736, 28737, 28738, 28739, 28740, 28741, 28742, 28743,
- 28744, 28745, 28746, 28747, 28749, 28750, 28752, 28753, 28754, 28755,
- 28756, 28757, 28758, 28759, 28760, 28761, 28762, 28763, 28764, 28765,
- 28767, 28768, 28769, 28770, 28771, 28772, 28773, 28774, 28775, 28776,
- 28777, 28778, 28782, 28785, 28786, 28787, 28788, 28791, 28793, 28794,
- 28795, 28797, 28801, 28802, 28803, 28804, 28806, 28807, 28808, 28811,
- 28812, 28813, 28815, 28816, 28817, 28819, 28823, 28824, 28826, 28827,
- 28830, 28831, 28832, 28833, 28834, 28835, 28836, 28837, 28838, 28839,
- 28840, 28841, 28842, 28848, 28850, 28852, 28853, 28854, 28858, 28862,
- 28863, 28868, 28869, 28870, 28871, 28873, 28875, 28876, 28877, 28878,
- 28879, 28880, 28881, 28882, 28883, 28884, 28885, 28886, 28887, 28890,
- 28892, 28893, 28894, 28896, 28897, 28898, 28899, 28901, 28906, 28910,
- 28912, 28913, 28914, 28915, 28916, 28917, 28918, 28920, 28922, 28923,
- 28924, 28926, 28927, 28928, 28929, 28930, 28931, 28932, 28933, 28934,
- 28935, 28936, 28939, 28940, 28941, 28942, 28943, 28945, 28946, 28948,
- 28951, 28955, 28956, 28957, 28958, 28959, 28960, 28961, 28962, 28963,
- 28964, 28965, 28967, 28968, 28969, 28970, 28971, 28972, 28973, 28974,
- 28978, 28979, 28980, 28981, 28983, 28984, 28985, 28986, 28987, 28988,
- 28989, 28990, 28991, 28992, 28993, 28994, 28995, 28996, 28998, 28999,
- 29000, 29001, 29003, 29005, 29007, 29008, 29009, 29010, 29011, 29012,
- 29013, 29014, 29015, 29016, 29017, 29018, 29019, 29021, 29023, 29024,
- 29025, 29026, 29027, 29029, 29033, 29034, 29035, 29036, 29037, 29039,
- 29040, 29041, 29044, 29045, 29046, 29047, 29049, 29051, 29052, 29054,
- 29055, 29056, 29057, 29058, 29059, 29061, 29062, 29063, 29064, 29065,
- 29067, 29068, 29069, 29070, 29072, 29073, 29074, 29075, 29077, 29078,
- 29079, 29082, 29083, 29084, 29085, 29086, 29089, 29090, 29091, 29092,
- 29093, 29094, 29095, 29097, 29098, 29099, 29101, 29102, 29103, 29104,
- 29105, 29106, 29108, 29110, 29111, 29112, 29114, 29115, 29116, 29117,
- 29118, 29119, 29120, 29121, 29122, 29124, 29125, 29126, 29127, 29128,
- 29129, 29130, 29131, 29132, 29133, 29135, 29136, 29137, 29138, 29139,
- 29142, 29143, 29144, 29145, 29146, 29147, 29148, 29149, 29150, 29151,
- 29153, 29154, 29155, 29156, 29158, 29160, 29161, 29162, 29163, 29164,
- 29165, 29167, 29168, 29169, 29170, 29171, 29172, 29173, 29174, 29175,
- 29176, 29178, 29179, 29180, 29181, 29182, 29183, 29184, 29185, 29186,
- 29187, 29188, 29189, 29191, 29192, 29193, 29194, 29195, 29196, 29197,
- 29198, 29199, 29200, 29201, 29202, 29203, 29204, 29205, 29206, 29207,
- 29208, 29209, 29210, 29211, 29212, 29214, 29215, 29216, 29217, 29218,
- 29219, 29220, 29221, 29222, 29223, 29225, 29227, 29229, 29230, 29231,
- 29234, 29235, 29236, 29242, 29244, 29246, 29248, 29249, 29250, 29251,
- 29252, 29253, 29254, 29257, 29258, 29259, 29262, 29263, 29264, 29265,
- 29267, 29268, 29269, 29271, 29272, 29274, 29276, 29278, 29280, 29283,
- 29284, 29285, 29288, 29290, 29291, 29292, 29293, 29296, 29297, 29299,
- 29300, 29302, 29303, 29304, 29307, 29308, 29309, 29314, 29315, 29317,
- 29318, 29319, 29320, 29321, 29324, 29326, 29328, 29329, 29331, 29332,
- 29333, 29334, 29335, 29336, 29337, 29338, 29339, 29340, 29341, 29342,
- 29344, 29345, 29346, 29347, 29348, 29349, 29350, 29351, 29352, 29353,
- 29354, 29355, 29358, 29361, 29362, 29363, 29365, 29370, 29371, 29372,
- 29373, 29374, 29375, 29376, 29381, 29382, 29383, 29385, 29386, 29387,
- 29388, 29391, 29393, 29395, 29396, 29397, 29398, 29400, 29402, 29403,
- 58566, 58567, 58568, 58569, 58570, 58571, 58572, 58573, 58574, 58575,
- 58576, 58577, 58578, 58579, 58580, 58581, 58582, 58583, 58584, 58585,
- 58586, 58587, 58588, 58589, 58590, 58591, 58592, 58593, 58594, 58595,
- 58596, 58597, 58598, 58599, 58600, 58601, 58602, 58603, 58604, 58605,
- 58606, 58607, 58608, 58609, 58610, 58611, 58612, 58613, 58614, 58615,
- 58616, 58617, 58618, 58619, 58620, 58621, 58622, 58623, 58624, 58625,
- 58626, 58627, 58628, 58629, 58630, 58631, 58632, 58633, 58634, 58635,
- 58636, 58637, 58638, 58639, 58640, 58641, 58642, 58643, 58644, 58645,
- 58646, 58647, 58648, 58649, 58650, 58651, 58652, 58653, 58654, 58655,
- 58656, 58657, 58658, 58659, 58660, 58661, 12288, 12289, 12290, 183,
- 713, 711, 168, 12291, 12293, 8212, 65374, 8214, 8230, 8216,
- 8217, 8220, 8221, 12308, 12309, 12296, 12297, 12298, 12299, 12300,
- 12301, 12302, 12303, 12310, 12311, 12304, 12305, 177, 215, 247,
- 8758, 8743, 8744, 8721, 8719, 8746, 8745, 8712, 8759, 8730,
- 8869, 8741, 8736, 8978, 8857, 8747, 8750, 8801, 8780, 8776,
- 8765, 8733, 8800, 8814, 8815, 8804, 8805, 8734, 8757, 8756,
- 9794, 9792, 176, 8242, 8243, 8451, 65284, 164, 65504, 65505,
- 8240, 167, 8470, 9734, 9733, 9675, 9679, 9678, 9671, 9670,
- 9633, 9632, 9651, 9650, 8251, 8594, 8592, 8593, 8595, 12307,
- 58662, 58663, 58664, 58665, 58666, 58667, 58668, 58669, 58670, 58671,
- 58672, 58673, 58674, 58675, 58676, 58677, 58678, 58679, 58680, 58681,
- 58682, 58683, 58684, 58685, 58686, 58687, 58688, 58689, 58690, 58691,
- 58692, 58693, 58694, 58695, 58696, 58697, 58698, 58699, 58700, 58701,
- 58702, 58703, 58704, 58705, 58706, 58707, 58708, 58709, 58710, 58711,
- 58712, 58713, 58714, 58715, 58716, 58717, 58718, 58719, 58720, 58721,
- 58722, 58723, 58724, 58725, 58726, 58727, 58728, 58729, 58730, 58731,
- 58732, 58733, 58734, 58735, 58736, 58737, 58738, 58739, 58740, 58741,
- 58742, 58743, 58744, 58745, 58746, 58747, 58748, 58749, 58750, 58751,
- 58752, 58753, 58754, 58755, 58756, 58757, 8560, 8561, 8562, 8563,
- 8564, 8565, 8566, 8567, 8568, 8569, 59238, 59239, 59240, 59241,
- 59242, 59243, 9352, 9353, 9354, 9355, 9356, 9357, 9358, 9359,
- 9360, 9361, 9362, 9363, 9364, 9365, 9366, 9367, 9368, 9369,
- 9370, 9371, 9332, 9333, 9334, 9335, 9336, 9337, 9338, 9339,
- 9340, 9341, 9342, 9343, 9344, 9345, 9346, 9347, 9348, 9349,
- 9350, 9351, 9312, 9313, 9314, 9315, 9316, 9317, 9318, 9319,
- 9320, 9321, 8364, 59245, 12832, 12833, 12834, 12835, 12836, 12837,
- 12838, 12839, 12840, 12841, 59246, 59247, 8544, 8545, 8546, 8547,
- 8548, 8549, 8550, 8551, 8552, 8553, 8554, 8555, 59248, 59249,
- 58758, 58759, 58760, 58761, 58762, 58763, 58764, 58765, 58766, 58767,
- 58768, 58769, 58770, 58771, 58772, 58773, 58774, 58775, 58776, 58777,
- 58778, 58779, 58780, 58781, 58782, 58783, 58784, 58785, 58786, 58787,
- 58788, 58789, 58790, 58791, 58792, 58793, 58794, 58795, 58796, 58797,
- 58798, 58799, 58800, 58801, 58802, 58803, 58804, 58805, 58806, 58807,
- 58808, 58809, 58810, 58811, 58812, 58813, 58814, 58815, 58816, 58817,
- 58818, 58819, 58820, 58821, 58822, 58823, 58824, 58825, 58826, 58827,
- 58828, 58829, 58830, 58831, 58832, 58833, 58834, 58835, 58836, 58837,
- 58838, 58839, 58840, 58841, 58842, 58843, 58844, 58845, 58846, 58847,
- 58848, 58849, 58850, 58851, 58852, 12288, 65281, 65282, 65283, 65509,
- 65285, 65286, 65287, 65288, 65289, 65290, 65291, 65292, 65293, 65294,
- 65295, 65296, 65297, 65298, 65299, 65300, 65301, 65302, 65303, 65304,
- 65305, 65306, 65307, 65308, 65309, 65310, 65311, 65312, 65313, 65314,
- 65315, 65316, 65317, 65318, 65319, 65320, 65321, 65322, 65323, 65324,
- 65325, 65326, 65327, 65328, 65329, 65330, 65331, 65332, 65333, 65334,
- 65335, 65336, 65337, 65338, 65339, 65340, 65341, 65342, 65343, 65344,
- 65345, 65346, 65347, 65348, 65349, 65350, 65351, 65352, 65353, 65354,
- 65355, 65356, 65357, 65358, 65359, 65360, 65361, 65362, 65363, 65364,
- 65365, 65366, 65367, 65368, 65369, 65370, 65371, 65372, 65373, 65507,
- 58854, 58855, 58856, 58857, 58858, 58859, 58860, 58861, 58862, 58863,
- 58864, 58865, 58866, 58867, 58868, 58869, 58870, 58871, 58872, 58873,
- 58874, 58875, 58876, 58877, 58878, 58879, 58880, 58881, 58882, 58883,
- 58884, 58885, 58886, 58887, 58888, 58889, 58890, 58891, 58892, 58893,
- 58894, 58895, 58896, 58897, 58898, 58899, 58900, 58901, 58902, 58903,
- 58904, 58905, 58906, 58907, 58908, 58909, 58910, 58911, 58912, 58913,
- 58914, 58915, 58916, 58917, 58918, 58919, 58920, 58921, 58922, 58923,
- 58924, 58925, 58926, 58927, 58928, 58929, 58930, 58931, 58932, 58933,
- 58934, 58935, 58936, 58937, 58938, 58939, 58940, 58941, 58942, 58943,
- 58944, 58945, 58946, 58947, 58948, 58949, 12353, 12354, 12355, 12356,
- 12357, 12358, 12359, 12360, 12361, 12362, 12363, 12364, 12365, 12366,
- 12367, 12368, 12369, 12370, 12371, 12372, 12373, 12374, 12375, 12376,
- 12377, 12378, 12379, 12380, 12381, 12382, 12383, 12384, 12385, 12386,
- 12387, 12388, 12389, 12390, 12391, 12392, 12393, 12394, 12395, 12396,
- 12397, 12398, 12399, 12400, 12401, 12402, 12403, 12404, 12405, 12406,
- 12407, 12408, 12409, 12410, 12411, 12412, 12413, 12414, 12415, 12416,
- 12417, 12418, 12419, 12420, 12421, 12422, 12423, 12424, 12425, 12426,
- 12427, 12428, 12429, 12430, 12431, 12432, 12433, 12434, 12435, 59250,
- 59251, 59252, 59253, 59254, 59255, 59256, 59257, 59258, 59259, 59260,
- 58950, 58951, 58952, 58953, 58954, 58955, 58956, 58957, 58958, 58959,
- 58960, 58961, 58962, 58963, 58964, 58965, 58966, 58967, 58968, 58969,
- 58970, 58971, 58972, 58973, 58974, 58975, 58976, 58977, 58978, 58979,
- 58980, 58981, 58982, 58983, 58984, 58985, 58986, 58987, 58988, 58989,
- 58990, 58991, 58992, 58993, 58994, 58995, 58996, 58997, 58998, 58999,
- 59000, 59001, 59002, 59003, 59004, 59005, 59006, 59007, 59008, 59009,
- 59010, 59011, 59012, 59013, 59014, 59015, 59016, 59017, 59018, 59019,
- 59020, 59021, 59022, 59023, 59024, 59025, 59026, 59027, 59028, 59029,
- 59030, 59031, 59032, 59033, 59034, 59035, 59036, 59037, 59038, 59039,
- 59040, 59041, 59042, 59043, 59044, 59045, 12449, 12450, 12451, 12452,
- 12453, 12454, 12455, 12456, 12457, 12458, 12459, 12460, 12461, 12462,
- 12463, 12464, 12465, 12466, 12467, 12468, 12469, 12470, 12471, 12472,
- 12473, 12474, 12475, 12476, 12477, 12478, 12479, 12480, 12481, 12482,
- 12483, 12484, 12485, 12486, 12487, 12488, 12489, 12490, 12491, 12492,
- 12493, 12494, 12495, 12496, 12497, 12498, 12499, 12500, 12501, 12502,
- 12503, 12504, 12505, 12506, 12507, 12508, 12509, 12510, 12511, 12512,
- 12513, 12514, 12515, 12516, 12517, 12518, 12519, 12520, 12521, 12522,
- 12523, 12524, 12525, 12526, 12527, 12528, 12529, 12530, 12531, 12532,
- 12533, 12534, 59261, 59262, 59263, 59264, 59265, 59266, 59267, 59268,
- 59046, 59047, 59048, 59049, 59050, 59051, 59052, 59053, 59054, 59055,
- 59056, 59057, 59058, 59059, 59060, 59061, 59062, 59063, 59064, 59065,
- 59066, 59067, 59068, 59069, 59070, 59071, 59072, 59073, 59074, 59075,
- 59076, 59077, 59078, 59079, 59080, 59081, 59082, 59083, 59084, 59085,
- 59086, 59087, 59088, 59089, 59090, 59091, 59092, 59093, 59094, 59095,
- 59096, 59097, 59098, 59099, 59100, 59101, 59102, 59103, 59104, 59105,
- 59106, 59107, 59108, 59109, 59110, 59111, 59112, 59113, 59114, 59115,
- 59116, 59117, 59118, 59119, 59120, 59121, 59122, 59123, 59124, 59125,
- 59126, 59127, 59128, 59129, 59130, 59131, 59132, 59133, 59134, 59135,
- 59136, 59137, 59138, 59139, 59140, 59141, 913, 914, 915, 916,
- 917, 918, 919, 920, 921, 922, 923, 924, 925, 926,
- 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,
- 59269, 59270, 59271, 59272, 59273, 59274, 59275, 59276, 945, 946,
- 947, 948, 949, 950, 951, 952, 953, 954, 955, 956,
- 957, 958, 959, 960, 961, 963, 964, 965, 966, 967,
- 968, 969, 59277, 59278, 59279, 59280, 59281, 59282, 59283, 65077,
- 65078, 65081, 65082, 65087, 65088, 65085, 65086, 65089, 65090, 65091,
- 65092, 59284, 59285, 65083, 65084, 65079, 65080, 65073, 59286, 65075,
- 65076, 59287, 59288, 59289, 59290, 59291, 59292, 59293, 59294, 59295,
- 59142, 59143, 59144, 59145, 59146, 59147, 59148, 59149, 59150, 59151,
- 59152, 59153, 59154, 59155, 59156, 59157, 59158, 59159, 59160, 59161,
- 59162, 59163, 59164, 59165, 59166, 59167, 59168, 59169, 59170, 59171,
- 59172, 59173, 59174, 59175, 59176, 59177, 59178, 59179, 59180, 59181,
- 59182, 59183, 59184, 59185, 59186, 59187, 59188, 59189, 59190, 59191,
- 59192, 59193, 59194, 59195, 59196, 59197, 59198, 59199, 59200, 59201,
- 59202, 59203, 59204, 59205, 59206, 59207, 59208, 59209, 59210, 59211,
- 59212, 59213, 59214, 59215, 59216, 59217, 59218, 59219, 59220, 59221,
- 59222, 59223, 59224, 59225, 59226, 59227, 59228, 59229, 59230, 59231,
- 59232, 59233, 59234, 59235, 59236, 59237, 1040, 1041, 1042, 1043,
- 1044, 1045, 1025, 1046, 1047, 1048, 1049, 1050, 1051, 1052,
- 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062,
- 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 59296,
- 59297, 59298, 59299, 59300, 59301, 59302, 59303, 59304, 59305, 59306,
- 59307, 59308, 59309, 59310, 1072, 1073, 1074, 1075, 1076, 1077,
- 1105, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
- 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096,
- 1097, 1098, 1099, 1100, 1101, 1102, 1103, 59311, 59312, 59313,
- 59314, 59315, 59316, 59317, 59318, 59319, 59320, 59321, 59322, 59323,
- 714, 715, 729, 8211, 8213, 8229, 8245, 8453, 8457, 8598,
- 8599, 8600, 8601, 8725, 8735, 8739, 8786, 8806, 8807, 8895,
- 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561,
- 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571,
- 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9581,
- 9582, 9583, 9584, 9585, 9586, 9587, 9601, 9602, 9603, 9604,
- 9605, 9606, 9607, 9608, 9609, 9610, 9611, 9612, 9613, 9614,
- 9615, 9619, 9620, 9621, 9660, 9661, 9698, 9699, 9700, 9701,
- 9737, 8853, 12306, 12317, 12318, 59324, 59325, 59326, 59327, 59328,
- 59329, 59330, 59331, 59332, 59333, 59334, 257, 225, 462, 224,
- 275, 233, 283, 232, 299, 237, 464, 236, 333, 243,
- 466, 242, 363, 250, 468, 249, 470, 472, 474, 476,
- 252, 234, 593, 7743, 324, 328, 505, 609, 59337, 59338,
- 59339, 59340, 12549, 12550, 12551, 12552, 12553, 12554, 12555, 12556,
- 12557, 12558, 12559, 12560, 12561, 12562, 12563, 12564, 12565, 12566,
- 12567, 12568, 12569, 12570, 12571, 12572, 12573, 12574, 12575, 12576,
- 12577, 12578, 12579, 12580, 12581, 12582, 12583, 12584, 12585, 59341,
- 59342, 59343, 59344, 59345, 59346, 59347, 59348, 59349, 59350, 59351,
- 59352, 59353, 59354, 59355, 59356, 59357, 59358, 59359, 59360, 59361,
- 12321, 12322, 12323, 12324, 12325, 12326, 12327, 12328, 12329, 12963,
- 13198, 13199, 13212, 13213, 13214, 13217, 13252, 13262, 13265, 13266,
- 13269, 65072, 65506, 65508, 59362, 8481, 12849, 59363, 8208, 59364,
- 59365, 59366, 12540, 12443, 12444, 12541, 12542, 12294, 12445, 12446,
- 65097, 65098, 65099, 65100, 65101, 65102, 65103, 65104, 65105, 65106,
- 65108, 65109, 65110, 65111, 65113, 65114, 65115, 65116, 65117, 65118,
- 65119, 65120, 65121, 65122, 65123, 65124, 65125, 65126, 65128, 65129,
- 65130, 65131, 12350, 12272, 12273, 12274, 12275, 12276, 12277, 12278,
- 12279, 12280, 12281, 12282, 12283, 12295, 59380, 59381, 59382, 59383,
- 59384, 59385, 59386, 59387, 59388, 59389, 59390, 59391, 59392, 9472,
- 9473, 9474, 9475, 9476, 9477, 9478, 9479, 9480, 9481, 9482,
- 9483, 9484, 9485, 9486, 9487, 9488, 9489, 9490, 9491, 9492,
- 9493, 9494, 9495, 9496, 9497, 9498, 9499, 9500, 9501, 9502,
- 9503, 9504, 9505, 9506, 9507, 9508, 9509, 9510, 9511, 9512,
- 9513, 9514, 9515, 9516, 9517, 9518, 9519, 9520, 9521, 9522,
- 9523, 9524, 9525, 9526, 9527, 9528, 9529, 9530, 9531, 9532,
- 9533, 9534, 9535, 9536, 9537, 9538, 9539, 9540, 9541, 9542,
- 9543, 9544, 9545, 9546, 9547, 59393, 59394, 59395, 59396, 59397,
- 59398, 59399, 59400, 59401, 59402, 59403, 59404, 59405, 59406, 59407,
- 29404, 29405, 29407, 29410, 29411, 29412, 29413, 29414, 29415, 29418,
- 29419, 29429, 29430, 29433, 29437, 29438, 29439, 29440, 29442, 29444,
- 29445, 29446, 29447, 29448, 29449, 29451, 29452, 29453, 29455, 29456,
- 29457, 29458, 29460, 29464, 29465, 29466, 29471, 29472, 29475, 29476,
- 29478, 29479, 29480, 29485, 29487, 29488, 29490, 29491, 29493, 29494,
- 29498, 29499, 29500, 29501, 29504, 29505, 29506, 29507, 29508, 29509,
- 29510, 29511, 29512, 29513, 29514, 29515, 29516, 29518, 29519, 29521,
- 29523, 29524, 29525, 29526, 29528, 29529, 29530, 29531, 29532, 29533,
- 29534, 29535, 29537, 29538, 29539, 29540, 29541, 29542, 29543, 29544,
- 29545, 29546, 29547, 29550, 29552, 29553, 57344, 57345, 57346, 57347,
- 57348, 57349, 57350, 57351, 57352, 57353, 57354, 57355, 57356, 57357,
- 57358, 57359, 57360, 57361, 57362, 57363, 57364, 57365, 57366, 57367,
- 57368, 57369, 57370, 57371, 57372, 57373, 57374, 57375, 57376, 57377,
- 57378, 57379, 57380, 57381, 57382, 57383, 57384, 57385, 57386, 57387,
- 57388, 57389, 57390, 57391, 57392, 57393, 57394, 57395, 57396, 57397,
- 57398, 57399, 57400, 57401, 57402, 57403, 57404, 57405, 57406, 57407,
- 57408, 57409, 57410, 57411, 57412, 57413, 57414, 57415, 57416, 57417,
- 57418, 57419, 57420, 57421, 57422, 57423, 57424, 57425, 57426, 57427,
- 57428, 57429, 57430, 57431, 57432, 57433, 57434, 57435, 57436, 57437,
- 29554, 29555, 29556, 29557, 29558, 29559, 29560, 29561, 29562, 29563,
- 29564, 29565, 29567, 29568, 29569, 29570, 29571, 29573, 29574, 29576,
- 29578, 29580, 29581, 29583, 29584, 29586, 29587, 29588, 29589, 29591,
- 29592, 29593, 29594, 29596, 29597, 29598, 29600, 29601, 29603, 29604,
- 29605, 29606, 29607, 29608, 29610, 29612, 29613, 29617, 29620, 29621,
- 29622, 29624, 29625, 29628, 29629, 29630, 29631, 29633, 29635, 29636,
- 29637, 29638, 29639, 29643, 29644, 29646, 29650, 29651, 29652, 29653,
- 29654, 29655, 29656, 29658, 29659, 29660, 29661, 29663, 29665, 29666,
- 29667, 29668, 29670, 29672, 29674, 29675, 29676, 29678, 29679, 29680,
- 29681, 29683, 29684, 29685, 29686, 29687, 57438, 57439, 57440, 57441,
- 57442, 57443, 57444, 57445, 57446, 57447, 57448, 57449, 57450, 57451,
- 57452, 57453, 57454, 57455, 57456, 57457, 57458, 57459, 57460, 57461,
- 57462, 57463, 57464, 57465, 57466, 57467, 57468, 57469, 57470, 57471,
- 57472, 57473, 57474, 57475, 57476, 57477, 57478, 57479, 57480, 57481,
- 57482, 57483, 57484, 57485, 57486, 57487, 57488, 57489, 57490, 57491,
- 57492, 57493, 57494, 57495, 57496, 57497, 57498, 57499, 57500, 57501,
- 57502, 57503, 57504, 57505, 57506, 57507, 57508, 57509, 57510, 57511,
- 57512, 57513, 57514, 57515, 57516, 57517, 57518, 57519, 57520, 57521,
- 57522, 57523, 57524, 57525, 57526, 57527, 57528, 57529, 57530, 57531,
- 29688, 29689, 29690, 29691, 29692, 29693, 29694, 29695, 29696, 29697,
- 29698, 29700, 29703, 29704, 29707, 29708, 29709, 29710, 29713, 29714,
- 29715, 29716, 29717, 29718, 29719, 29720, 29721, 29724, 29725, 29726,
- 29727, 29728, 29729, 29731, 29732, 29735, 29737, 29739, 29741, 29743,
- 29745, 29746, 29751, 29752, 29753, 29754, 29755, 29757, 29758, 29759,
- 29760, 29762, 29763, 29764, 29765, 29766, 29767, 29768, 29769, 29770,
- 29771, 29772, 29773, 29774, 29775, 29776, 29777, 29778, 29779, 29780,
- 29782, 29784, 29789, 29792, 29793, 29794, 29795, 29796, 29797, 29798,
- 29799, 29800, 29801, 29802, 29803, 29804, 29806, 29807, 29809, 29810,
- 29811, 29812, 29813, 29816, 29817, 29818, 57532, 57533, 57534, 57535,
- 57536, 57537, 57538, 57539, 57540, 57541, 57542, 57543, 57544, 57545,
- 57546, 57547, 57548, 57549, 57550, 57551, 57552, 57553, 57554, 57555,
- 57556, 57557, 57558, 57559, 57560, 57561, 57562, 57563, 57564, 57565,
- 57566, 57567, 57568, 57569, 57570, 57571, 57572, 57573, 57574, 57575,
- 57576, 57577, 57578, 57579, 57580, 57581, 57582, 57583, 57584, 57585,
- 57586, 57587, 57588, 57589, 57590, 57591, 57592, 57593, 57594, 57595,
- 57596, 57597, 57598, 57599, 57600, 57601, 57602, 57603, 57604, 57605,
- 57606, 57607, 57608, 57609, 57610, 57611, 57612, 57613, 57614, 57615,
- 57616, 57617, 57618, 57619, 57620, 57621, 57622, 57623, 57624, 57625,
- 29819, 29820, 29821, 29823, 29826, 29828, 29829, 29830, 29832, 29833,
- 29834, 29836, 29837, 29839, 29841, 29842, 29843, 29844, 29845, 29846,
- 29847, 29848, 29849, 29850, 29851, 29853, 29855, 29856, 29857, 29858,
- 29859, 29860, 29861, 29862, 29866, 29867, 29868, 29869, 29870, 29871,
- 29872, 29873, 29874, 29875, 29876, 29877, 29878, 29879, 29880, 29881,
- 29883, 29884, 29885, 29886, 29887, 29888, 29889, 29890, 29891, 29892,
- 29893, 29894, 29895, 29896, 29897, 29898, 29899, 29900, 29901, 29902,
- 29903, 29904, 29905, 29907, 29908, 29909, 29910, 29911, 29912, 29913,
- 29914, 29915, 29917, 29919, 29921, 29925, 29927, 29928, 29929, 29930,
- 29931, 29932, 29933, 29936, 29937, 29938, 57626, 57627, 57628, 57629,
- 57630, 57631, 57632, 57633, 57634, 57635, 57636, 57637, 57638, 57639,
- 57640, 57641, 57642, 57643, 57644, 57645, 57646, 57647, 57648, 57649,
- 57650, 57651, 57652, 57653, 57654, 57655, 57656, 57657, 57658, 57659,
- 57660, 57661, 57662, 57663, 57664, 57665, 57666, 57667, 57668, 57669,
- 57670, 57671, 57672, 57673, 57674, 57675, 57676, 57677, 57678, 57679,
- 57680, 57681, 57682, 57683, 57684, 57685, 57686, 57687, 57688, 57689,
- 57690, 57691, 57692, 57693, 57694, 57695, 57696, 57697, 57698, 57699,
- 57700, 57701, 57702, 57703, 57704, 57705, 57706, 57707, 57708, 57709,
- 57710, 57711, 57712, 57713, 57714, 57715, 57716, 57717, 57718, 57719,
- 29939, 29941, 29944, 29945, 29946, 29947, 29948, 29949, 29950, 29952,
- 29953, 29954, 29955, 29957, 29958, 29959, 29960, 29961, 29962, 29963,
- 29964, 29966, 29968, 29970, 29972, 29973, 29974, 29975, 29979, 29981,
- 29982, 29984, 29985, 29986, 29987, 29988, 29990, 29991, 29994, 29998,
- 30004, 30006, 30009, 30012, 30013, 30015, 30017, 30018, 30019, 30020,
- 30022, 30023, 30025, 30026, 30029, 30032, 30033, 30034, 30035, 30037,
- 30038, 30039, 30040, 30045, 30046, 30047, 30048, 30049, 30050, 30051,
- 30052, 30055, 30056, 30057, 30059, 30060, 30061, 30062, 30063, 30064,
- 30065, 30067, 30069, 30070, 30071, 30074, 30075, 30076, 30077, 30078,
- 30080, 30081, 30082, 30084, 30085, 30087, 57720, 57721, 57722, 57723,
- 57724, 57725, 57726, 57727, 57728, 57729, 57730, 57731, 57732, 57733,
- 57734, 57735, 57736, 57737, 57738, 57739, 57740, 57741, 57742, 57743,
- 57744, 57745, 57746, 57747, 57748, 57749, 57750, 57751, 57752, 57753,
- 57754, 57755, 57756, 57757, 57758, 57759, 57760, 57761, 57762, 57763,
- 57764, 57765, 57766, 57767, 57768, 57769, 57770, 57771, 57772, 57773,
- 57774, 57775, 57776, 57777, 57778, 57779, 57780, 57781, 57782, 57783,
- 57784, 57785, 57786, 57787, 57788, 57789, 57790, 57791, 57792, 57793,
- 57794, 57795, 57796, 57797, 57798, 57799, 57800, 57801, 57802, 57803,
- 57804, 57805, 57806, 57807, 57808, 57809, 57810, 57811, 57812, 57813,
- 30088, 30089, 30090, 30092, 30093, 30094, 30096, 30099, 30101, 30104,
- 30107, 30108, 30110, 30114, 30118, 30119, 30120, 30121, 30122, 30125,
- 30134, 30135, 30138, 30139, 30143, 30144, 30145, 30150, 30155, 30156,
- 30158, 30159, 30160, 30161, 30163, 30167, 30169, 30170, 30172, 30173,
- 30175, 30176, 30177, 30181, 30185, 30188, 30189, 30190, 30191, 30194,
- 30195, 30197, 30198, 30199, 30200, 30202, 30203, 30205, 30206, 30210,
- 30212, 30214, 30215, 30216, 30217, 30219, 30221, 30222, 30223, 30225,
- 30226, 30227, 30228, 30230, 30234, 30236, 30237, 30238, 30241, 30243,
- 30247, 30248, 30252, 30254, 30255, 30257, 30258, 30262, 30263, 30265,
- 30266, 30267, 30269, 30273, 30274, 30276, 57814, 57815, 57816, 57817,
- 57818, 57819, 57820, 57821, 57822, 57823, 57824, 57825, 57826, 57827,
- 57828, 57829, 57830, 57831, 57832, 57833, 57834, 57835, 57836, 57837,
- 57838, 57839, 57840, 57841, 57842, 57843, 57844, 57845, 57846, 57847,
- 57848, 57849, 57850, 57851, 57852, 57853, 57854, 57855, 57856, 57857,
- 57858, 57859, 57860, 57861, 57862, 57863, 57864, 57865, 57866, 57867,
- 57868, 57869, 57870, 57871, 57872, 57873, 57874, 57875, 57876, 57877,
- 57878, 57879, 57880, 57881, 57882, 57883, 57884, 57885, 57886, 57887,
- 57888, 57889, 57890, 57891, 57892, 57893, 57894, 57895, 57896, 57897,
- 57898, 57899, 57900, 57901, 57902, 57903, 57904, 57905, 57906, 57907,
- 30277, 30278, 30279, 30280, 30281, 30282, 30283, 30286, 30287, 30288,
- 30289, 30290, 30291, 30293, 30295, 30296, 30297, 30298, 30299, 30301,
- 30303, 30304, 30305, 30306, 30308, 30309, 30310, 30311, 30312, 30313,
- 30314, 30316, 30317, 30318, 30320, 30321, 30322, 30323, 30324, 30325,
- 30326, 30327, 30329, 30330, 30332, 30335, 30336, 30337, 30339, 30341,
- 30345, 30346, 30348, 30349, 30351, 30352, 30354, 30356, 30357, 30359,
- 30360, 30362, 30363, 30364, 30365, 30366, 30367, 30368, 30369, 30370,
- 30371, 30373, 30374, 30375, 30376, 30377, 30378, 30379, 30380, 30381,
- 30383, 30384, 30387, 30389, 30390, 30391, 30392, 30393, 30394, 30395,
- 30396, 30397, 30398, 30400, 30401, 30403, 21834, 38463, 22467, 25384,
- 21710, 21769, 21696, 30353, 30284, 34108, 30702, 33406, 30861, 29233,
- 38552, 38797, 27688, 23433, 20474, 25353, 26263, 23736, 33018, 26696,
- 32942, 26114, 30414, 20985, 25942, 29100, 32753, 34948, 20658, 22885,
- 25034, 28595, 33453, 25420, 25170, 21485, 21543, 31494, 20843, 30116,
- 24052, 25300, 36299, 38774, 25226, 32793, 22365, 38712, 32610, 29240,
- 30333, 26575, 30334, 25670, 20336, 36133, 25308, 31255, 26001, 29677,
- 25644, 25203, 33324, 39041, 26495, 29256, 25198, 25292, 20276, 29923,
- 21322, 21150, 32458, 37030, 24110, 26758, 27036, 33152, 32465, 26834,
- 30917, 34444, 38225, 20621, 35876, 33502, 32990, 21253, 35090, 21093,
- 30404, 30407, 30409, 30411, 30412, 30419, 30421, 30425, 30426, 30428,
- 30429, 30430, 30432, 30433, 30434, 30435, 30436, 30438, 30439, 30440,
- 30441, 30442, 30443, 30444, 30445, 30448, 30451, 30453, 30454, 30455,
- 30458, 30459, 30461, 30463, 30464, 30466, 30467, 30469, 30470, 30474,
- 30476, 30478, 30479, 30480, 30481, 30482, 30483, 30484, 30485, 30486,
- 30487, 30488, 30491, 30492, 30493, 30494, 30497, 30499, 30500, 30501,
- 30503, 30506, 30507, 30508, 30510, 30512, 30513, 30514, 30515, 30516,
- 30521, 30523, 30525, 30526, 30527, 30530, 30532, 30533, 30534, 30536,
- 30537, 30538, 30539, 30540, 30541, 30542, 30543, 30546, 30547, 30548,
- 30549, 30550, 30551, 30552, 30553, 30556, 34180, 38649, 20445, 22561,
- 39281, 23453, 25265, 25253, 26292, 35961, 40077, 29190, 26479, 30865,
- 24754, 21329, 21271, 36744, 32972, 36125, 38049, 20493, 29384, 22791,
- 24811, 28953, 34987, 22868, 33519, 26412, 31528, 23849, 32503, 29997,
- 27893, 36454, 36856, 36924, 40763, 27604, 37145, 31508, 24444, 30887,
- 34006, 34109, 27605, 27609, 27606, 24065, 24199, 30201, 38381, 25949,
- 24330, 24517, 36767, 22721, 33218, 36991, 38491, 38829, 36793, 32534,
- 36140, 25153, 20415, 21464, 21342, 36776, 36777, 36779, 36941, 26631,
- 24426, 33176, 34920, 40150, 24971, 21035, 30250, 24428, 25996, 28626,
- 28392, 23486, 25672, 20853, 20912, 26564, 19993, 31177, 39292, 28851,
- 30557, 30558, 30559, 30560, 30564, 30567, 30569, 30570, 30573, 30574,
- 30575, 30576, 30577, 30578, 30579, 30580, 30581, 30582, 30583, 30584,
- 30586, 30587, 30588, 30593, 30594, 30595, 30598, 30599, 30600, 30601,
- 30602, 30603, 30607, 30608, 30611, 30612, 30613, 30614, 30615, 30616,
- 30617, 30618, 30619, 30620, 30621, 30622, 30625, 30627, 30628, 30630,
- 30632, 30635, 30637, 30638, 30639, 30641, 30642, 30644, 30646, 30647,
- 30648, 30649, 30650, 30652, 30654, 30656, 30657, 30658, 30659, 30660,
- 30661, 30662, 30663, 30664, 30665, 30666, 30667, 30668, 30670, 30671,
- 30672, 30673, 30674, 30675, 30676, 30677, 30678, 30680, 30681, 30682,
- 30685, 30686, 30687, 30688, 30689, 30692, 30149, 24182, 29627, 33760,
- 25773, 25320, 38069, 27874, 21338, 21187, 25615, 38082, 31636, 20271,
- 24091, 33334, 33046, 33162, 28196, 27850, 39539, 25429, 21340, 21754,
- 34917, 22496, 19981, 24067, 27493, 31807, 37096, 24598, 25830, 29468,
- 35009, 26448, 25165, 36130, 30572, 36393, 37319, 24425, 33756, 34081,
- 39184, 21442, 34453, 27531, 24813, 24808, 28799, 33485, 33329, 20179,
- 27815, 34255, 25805, 31961, 27133, 26361, 33609, 21397, 31574, 20391,
- 20876, 27979, 23618, 36461, 25554, 21449, 33580, 33590, 26597, 30900,
- 25661, 23519, 23700, 24046, 35815, 25286, 26612, 35962, 25600, 25530,
- 34633, 39307, 35863, 32544, 38130, 20135, 38416, 39076, 26124, 29462,
- 30694, 30696, 30698, 30703, 30704, 30705, 30706, 30708, 30709, 30711,
- 30713, 30714, 30715, 30716, 30723, 30724, 30725, 30726, 30727, 30728,
- 30730, 30731, 30734, 30735, 30736, 30739, 30741, 30745, 30747, 30750,
- 30752, 30753, 30754, 30756, 30760, 30762, 30763, 30766, 30767, 30769,
- 30770, 30771, 30773, 30774, 30781, 30783, 30785, 30786, 30787, 30788,
- 30790, 30792, 30793, 30794, 30795, 30797, 30799, 30801, 30803, 30804,
- 30808, 30809, 30810, 30811, 30812, 30814, 30815, 30816, 30817, 30818,
- 30819, 30820, 30821, 30822, 30823, 30824, 30825, 30831, 30832, 30833,
- 30834, 30835, 30836, 30837, 30838, 30840, 30841, 30842, 30843, 30845,
- 30846, 30847, 30848, 30849, 30850, 30851, 22330, 23581, 24120, 38271,
- 20607, 32928, 21378, 25950, 30021, 21809, 20513, 36229, 25220, 38046,
- 26397, 22066, 28526, 24034, 21557, 28818, 36710, 25199, 25764, 25507,
- 24443, 28552, 37108, 33251, 36784, 23576, 26216, 24561, 27785, 38472,
- 36225, 34924, 25745, 31216, 22478, 27225, 25104, 21576, 20056, 31243,
- 24809, 28548, 35802, 25215, 36894, 39563, 31204, 21507, 30196, 25345,
- 21273, 27744, 36831, 24347, 39536, 32827, 40831, 20360, 23610, 36196,
- 32709, 26021, 28861, 20805, 20914, 34411, 23815, 23456, 25277, 37228,
- 30068, 36364, 31264, 24833, 31609, 20167, 32504, 30597, 19985, 33261,
- 21021, 20986, 27249, 21416, 36487, 38148, 38607, 28353, 38500, 26970,
- 30852, 30853, 30854, 30856, 30858, 30859, 30863, 30864, 30866, 30868,
- 30869, 30870, 30873, 30877, 30878, 30880, 30882, 30884, 30886, 30888,
- 30889, 30890, 30891, 30892, 30893, 30894, 30895, 30901, 30902, 30903,
- 30904, 30906, 30907, 30908, 30909, 30911, 30912, 30914, 30915, 30916,
- 30918, 30919, 30920, 30924, 30925, 30926, 30927, 30929, 30930, 30931,
- 30934, 30935, 30936, 30938, 30939, 30940, 30941, 30942, 30943, 30944,
- 30945, 30946, 30947, 30948, 30949, 30950, 30951, 30953, 30954, 30955,
- 30957, 30958, 30959, 30960, 30961, 30963, 30965, 30966, 30968, 30969,
- 30971, 30972, 30973, 30974, 30975, 30976, 30978, 30979, 30980, 30982,
- 30983, 30984, 30985, 30986, 30987, 30988, 30784, 20648, 30679, 25616,
- 35302, 22788, 25571, 24029, 31359, 26941, 20256, 33337, 21912, 20018,
- 30126, 31383, 24162, 24202, 38383, 21019, 21561, 28810, 25462, 38180,
- 22402, 26149, 26943, 37255, 21767, 28147, 32431, 34850, 25139, 32496,
- 30133, 33576, 30913, 38604, 36766, 24904, 29943, 35789, 27492, 21050,
- 36176, 27425, 32874, 33905, 22257, 21254, 20174, 19995, 20945, 31895,
- 37259, 31751, 20419, 36479, 31713, 31388, 25703, 23828, 20652, 33030,
- 30209, 31929, 28140, 32736, 26449, 23384, 23544, 30923, 25774, 25619,
- 25514, 25387, 38169, 25645, 36798, 31572, 30249, 25171, 22823, 21574,
- 27513, 20643, 25140, 24102, 27526, 20195, 36151, 34955, 24453, 36910,
- 30989, 30990, 30991, 30992, 30993, 30994, 30996, 30997, 30998, 30999,
- 31000, 31001, 31002, 31003, 31004, 31005, 31007, 31008, 31009, 31010,
- 31011, 31013, 31014, 31015, 31016, 31017, 31018, 31019, 31020, 31021,
- 31022, 31023, 31024, 31025, 31026, 31027, 31029, 31030, 31031, 31032,
- 31033, 31037, 31039, 31042, 31043, 31044, 31045, 31047, 31050, 31051,
- 31052, 31053, 31054, 31055, 31056, 31057, 31058, 31060, 31061, 31064,
- 31065, 31073, 31075, 31076, 31078, 31081, 31082, 31083, 31084, 31086,
- 31088, 31089, 31090, 31091, 31092, 31093, 31094, 31097, 31099, 31100,
- 31101, 31102, 31103, 31106, 31107, 31110, 31111, 31112, 31113, 31115,
- 31116, 31117, 31118, 31120, 31121, 31122, 24608, 32829, 25285, 20025,
- 21333, 37112, 25528, 32966, 26086, 27694, 20294, 24814, 28129, 35806,
- 24377, 34507, 24403, 25377, 20826, 33633, 26723, 20992, 25443, 36424,
- 20498, 23707, 31095, 23548, 21040, 31291, 24764, 36947, 30423, 24503,
- 24471, 30340, 36460, 28783, 30331, 31561, 30634, 20979, 37011, 22564,
- 20302, 28404, 36842, 25932, 31515, 29380, 28068, 32735, 23265, 25269,
- 24213, 22320, 33922, 31532, 24093, 24351, 36882, 32532, 39072, 25474,
- 28359, 30872, 28857, 20856, 38747, 22443, 30005, 20291, 30008, 24215,
- 24806, 22880, 28096, 27583, 30857, 21500, 38613, 20939, 20993, 25481,
- 21514, 38035, 35843, 36300, 29241, 30879, 34678, 36845, 35853, 21472,
- 31123, 31124, 31125, 31126, 31127, 31128, 31129, 31131, 31132, 31133,
- 31134, 31135, 31136, 31137, 31138, 31139, 31140, 31141, 31142, 31144,
- 31145, 31146, 31147, 31148, 31149, 31150, 31151, 31152, 31153, 31154,
- 31156, 31157, 31158, 31159, 31160, 31164, 31167, 31170, 31172, 31173,
- 31175, 31176, 31178, 31180, 31182, 31183, 31184, 31187, 31188, 31190,
- 31191, 31193, 31194, 31195, 31196, 31197, 31198, 31200, 31201, 31202,
- 31205, 31208, 31210, 31212, 31214, 31217, 31218, 31219, 31220, 31221,
- 31222, 31223, 31225, 31226, 31228, 31230, 31231, 31233, 31236, 31237,
- 31239, 31240, 31241, 31242, 31244, 31247, 31248, 31249, 31250, 31251,
- 31253, 31254, 31256, 31257, 31259, 31260, 19969, 30447, 21486, 38025,
- 39030, 40718, 38189, 23450, 35746, 20002, 19996, 20908, 33891, 25026,
- 21160, 26635, 20375, 24683, 20923, 27934, 20828, 25238, 26007, 38497,
- 35910, 36887, 30168, 37117, 30563, 27602, 29322, 29420, 35835, 22581,
- 30585, 36172, 26460, 38208, 32922, 24230, 28193, 22930, 31471, 30701,
- 38203, 27573, 26029, 32526, 22534, 20817, 38431, 23545, 22697, 21544,
- 36466, 25958, 39039, 22244, 38045, 30462, 36929, 25479, 21702, 22810,
- 22842, 22427, 36530, 26421, 36346, 33333, 21057, 24816, 22549, 34558,
- 23784, 40517, 20420, 39069, 35769, 23077, 24694, 21380, 25212, 36943,
- 37122, 39295, 24681, 32780, 20799, 32819, 23572, 39285, 27953, 20108,
- 31261, 31263, 31265, 31266, 31268, 31269, 31270, 31271, 31272, 31273,
- 31274, 31275, 31276, 31277, 31278, 31279, 31280, 31281, 31282, 31284,
- 31285, 31286, 31288, 31290, 31294, 31296, 31297, 31298, 31299, 31300,
- 31301, 31303, 31304, 31305, 31306, 31307, 31308, 31309, 31310, 31311,
- 31312, 31314, 31315, 31316, 31317, 31318, 31320, 31321, 31322, 31323,
- 31324, 31325, 31326, 31327, 31328, 31329, 31330, 31331, 31332, 31333,
- 31334, 31335, 31336, 31337, 31338, 31339, 31340, 31341, 31342, 31343,
- 31345, 31346, 31347, 31349, 31355, 31356, 31357, 31358, 31362, 31365,
- 31367, 31369, 31370, 31371, 31372, 31374, 31375, 31376, 31379, 31380,
- 31385, 31386, 31387, 31390, 31393, 31394, 36144, 21457, 32602, 31567,
- 20240, 20047, 38400, 27861, 29648, 34281, 24070, 30058, 32763, 27146,
- 30718, 38034, 32321, 20961, 28902, 21453, 36820, 33539, 36137, 29359,
- 39277, 27867, 22346, 33459, 26041, 32938, 25151, 38450, 22952, 20223,
- 35775, 32442, 25918, 33778, 38750, 21857, 39134, 32933, 21290, 35837,
- 21536, 32954, 24223, 27832, 36153, 33452, 37210, 21545, 27675, 20998,
- 32439, 22367, 28954, 27774, 31881, 22859, 20221, 24575, 24868, 31914,
- 20016, 23553, 26539, 34562, 23792, 38155, 39118, 30127, 28925, 36898,
- 20911, 32541, 35773, 22857, 20964, 20315, 21542, 22827, 25975, 32932,
- 23413, 25206, 25282, 36752, 24133, 27679, 31526, 20239, 20440, 26381,
- 31395, 31396, 31399, 31401, 31402, 31403, 31406, 31407, 31408, 31409,
- 31410, 31412, 31413, 31414, 31415, 31416, 31417, 31418, 31419, 31420,
- 31421, 31422, 31424, 31425, 31426, 31427, 31428, 31429, 31430, 31431,
- 31432, 31433, 31434, 31436, 31437, 31438, 31439, 31440, 31441, 31442,
- 31443, 31444, 31445, 31447, 31448, 31450, 31451, 31452, 31453, 31457,
- 31458, 31460, 31463, 31464, 31465, 31466, 31467, 31468, 31470, 31472,
- 31473, 31474, 31475, 31476, 31477, 31478, 31479, 31480, 31483, 31484,
- 31486, 31488, 31489, 31490, 31493, 31495, 31497, 31500, 31501, 31502,
- 31504, 31506, 31507, 31510, 31511, 31512, 31514, 31516, 31517, 31519,
- 31521, 31522, 31523, 31527, 31529, 31533, 28014, 28074, 31119, 34993,
- 24343, 29995, 25242, 36741, 20463, 37340, 26023, 33071, 33105, 24220,
- 33104, 36212, 21103, 35206, 36171, 22797, 20613, 20184, 38428, 29238,
- 33145, 36127, 23500, 35747, 38468, 22919, 32538, 21648, 22134, 22030,
- 35813, 25913, 27010, 38041, 30422, 28297, 24178, 29976, 26438, 26577,
- 31487, 32925, 36214, 24863, 31174, 25954, 36195, 20872, 21018, 38050,
- 32568, 32923, 32434, 23703, 28207, 26464, 31705, 30347, 39640, 33167,
- 32660, 31957, 25630, 38224, 31295, 21578, 21733, 27468, 25601, 25096,
- 40509, 33011, 30105, 21106, 38761, 33883, 26684, 34532, 38401, 38548,
- 38124, 20010, 21508, 32473, 26681, 36319, 32789, 26356, 24218, 32697,
- 31535, 31536, 31538, 31540, 31541, 31542, 31543, 31545, 31547, 31549,
- 31551, 31552, 31553, 31554, 31555, 31556, 31558, 31560, 31562, 31565,
- 31566, 31571, 31573, 31575, 31577, 31580, 31582, 31583, 31585, 31587,
- 31588, 31589, 31590, 31591, 31592, 31593, 31594, 31595, 31596, 31597,
- 31599, 31600, 31603, 31604, 31606, 31608, 31610, 31612, 31613, 31615,
- 31617, 31618, 31619, 31620, 31622, 31623, 31624, 31625, 31626, 31627,
- 31628, 31630, 31631, 31633, 31634, 31635, 31638, 31640, 31641, 31642,
- 31643, 31646, 31647, 31648, 31651, 31652, 31653, 31662, 31663, 31664,
- 31666, 31667, 31669, 31670, 31671, 31673, 31674, 31675, 31676, 31677,
- 31678, 31679, 31680, 31682, 31683, 31684, 22466, 32831, 26775, 24037,
- 25915, 21151, 24685, 40858, 20379, 36524, 20844, 23467, 24339, 24041,
- 27742, 25329, 36129, 20849, 38057, 21246, 27807, 33503, 29399, 22434,
- 26500, 36141, 22815, 36764, 33735, 21653, 31629, 20272, 27837, 23396,
- 22993, 40723, 21476, 34506, 39592, 35895, 32929, 25925, 39038, 22266,
- 38599, 21038, 29916, 21072, 23521, 25346, 35074, 20054, 25296, 24618,
- 26874, 20851, 23448, 20896, 35266, 31649, 39302, 32592, 24815, 28748,
- 36143, 20809, 24191, 36891, 29808, 35268, 22317, 30789, 24402, 40863,
- 38394, 36712, 39740, 35809, 30328, 26690, 26588, 36330, 36149, 21053,
- 36746, 28378, 26829, 38149, 37101, 22269, 26524, 35065, 36807, 21704,
- 31685, 31688, 31689, 31690, 31691, 31693, 31694, 31695, 31696, 31698,
- 31700, 31701, 31702, 31703, 31704, 31707, 31708, 31710, 31711, 31712,
- 31714, 31715, 31716, 31719, 31720, 31721, 31723, 31724, 31725, 31727,
- 31728, 31730, 31731, 31732, 31733, 31734, 31736, 31737, 31738, 31739,
- 31741, 31743, 31744, 31745, 31746, 31747, 31748, 31749, 31750, 31752,
- 31753, 31754, 31757, 31758, 31760, 31761, 31762, 31763, 31764, 31765,
- 31767, 31768, 31769, 31770, 31771, 31772, 31773, 31774, 31776, 31777,
- 31778, 31779, 31780, 31781, 31784, 31785, 31787, 31788, 31789, 31790,
- 31791, 31792, 31793, 31794, 31795, 31796, 31797, 31798, 31799, 31801,
- 31802, 31803, 31804, 31805, 31806, 31810, 39608, 23401, 28023, 27686,
- 20133, 23475, 39559, 37219, 25000, 37039, 38889, 21547, 28085, 23506,
- 20989, 21898, 32597, 32752, 25788, 25421, 26097, 25022, 24717, 28938,
- 27735, 27721, 22831, 26477, 33322, 22741, 22158, 35946, 27627, 37085,
- 22909, 32791, 21495, 28009, 21621, 21917, 33655, 33743, 26680, 31166,
- 21644, 20309, 21512, 30418, 35977, 38402, 27827, 28088, 36203, 35088,
- 40548, 36154, 22079, 40657, 30165, 24456, 29408, 24680, 21756, 20136,
- 27178, 34913, 24658, 36720, 21700, 28888, 34425, 40511, 27946, 23439,
- 24344, 32418, 21897, 20399, 29492, 21564, 21402, 20505, 21518, 21628,
- 20046, 24573, 29786, 22774, 33899, 32993, 34676, 29392, 31946, 28246,
- 31811, 31812, 31813, 31814, 31815, 31816, 31817, 31818, 31819, 31820,
- 31822, 31823, 31824, 31825, 31826, 31827, 31828, 31829, 31830, 31831,
- 31832, 31833, 31834, 31835, 31836, 31837, 31838, 31839, 31840, 31841,
- 31842, 31843, 31844, 31845, 31846, 31847, 31848, 31849, 31850, 31851,
- 31852, 31853, 31854, 31855, 31856, 31857, 31858, 31861, 31862, 31863,
- 31864, 31865, 31866, 31870, 31871, 31872, 31873, 31874, 31875, 31876,
- 31877, 31878, 31879, 31880, 31882, 31883, 31884, 31885, 31886, 31887,
- 31888, 31891, 31892, 31894, 31897, 31898, 31899, 31904, 31905, 31907,
- 31910, 31911, 31912, 31913, 31915, 31916, 31917, 31919, 31920, 31924,
- 31925, 31926, 31927, 31928, 31930, 31931, 24359, 34382, 21804, 25252,
- 20114, 27818, 25143, 33457, 21719, 21326, 29502, 28369, 30011, 21010,
- 21270, 35805, 27088, 24458, 24576, 28142, 22351, 27426, 29615, 26707,
- 36824, 32531, 25442, 24739, 21796, 30186, 35938, 28949, 28067, 23462,
- 24187, 33618, 24908, 40644, 30970, 34647, 31783, 30343, 20976, 24822,
- 29004, 26179, 24140, 24653, 35854, 28784, 25381, 36745, 24509, 24674,
- 34516, 22238, 27585, 24724, 24935, 21321, 24800, 26214, 36159, 31229,
- 20250, 28905, 27719, 35763, 35826, 32472, 33636, 26127, 23130, 39746,
- 27985, 28151, 35905, 27963, 20249, 28779, 33719, 25110, 24785, 38669,
- 36135, 31096, 20987, 22334, 22522, 26426, 30072, 31293, 31215, 31637,
- 31935, 31936, 31938, 31939, 31940, 31942, 31945, 31947, 31950, 31951,
- 31952, 31953, 31954, 31955, 31956, 31960, 31962, 31963, 31965, 31966,
- 31969, 31970, 31971, 31972, 31973, 31974, 31975, 31977, 31978, 31979,
- 31980, 31981, 31982, 31984, 31985, 31986, 31987, 31988, 31989, 31990,
- 31991, 31993, 31994, 31996, 31997, 31998, 31999, 32000, 32001, 32002,
- 32003, 32004, 32005, 32006, 32007, 32008, 32009, 32011, 32012, 32013,
- 32014, 32015, 32016, 32017, 32018, 32019, 32020, 32021, 32022, 32023,
- 32024, 32025, 32026, 32027, 32028, 32029, 32030, 32031, 32033, 32035,
- 32036, 32037, 32038, 32040, 32041, 32042, 32044, 32045, 32046, 32048,
- 32049, 32050, 32051, 32052, 32053, 32054, 32908, 39269, 36857, 28608,
- 35749, 40481, 23020, 32489, 32521, 21513, 26497, 26840, 36753, 31821,
- 38598, 21450, 24613, 30142, 27762, 21363, 23241, 32423, 25380, 20960,
- 33034, 24049, 34015, 25216, 20864, 23395, 20238, 31085, 21058, 24760,
- 27982, 23492, 23490, 35745, 35760, 26082, 24524, 38469, 22931, 32487,
- 32426, 22025, 26551, 22841, 20339, 23478, 21152, 33626, 39050, 36158,
- 30002, 38078, 20551, 31292, 20215, 26550, 39550, 23233, 27516, 30417,
- 22362, 23574, 31546, 38388, 29006, 20860, 32937, 33392, 22904, 32516,
- 33575, 26816, 26604, 30897, 30839, 25315, 25441, 31616, 20461, 21098,
- 20943, 33616, 27099, 37492, 36341, 36145, 35265, 38190, 31661, 20214,
- 32055, 32056, 32057, 32058, 32059, 32060, 32061, 32062, 32063, 32064,
- 32065, 32066, 32067, 32068, 32069, 32070, 32071, 32072, 32073, 32074,
- 32075, 32076, 32077, 32078, 32079, 32080, 32081, 32082, 32083, 32084,
- 32085, 32086, 32087, 32088, 32089, 32090, 32091, 32092, 32093, 32094,
- 32095, 32096, 32097, 32098, 32099, 32100, 32101, 32102, 32103, 32104,
- 32105, 32106, 32107, 32108, 32109, 32111, 32112, 32113, 32114, 32115,
- 32116, 32117, 32118, 32120, 32121, 32122, 32123, 32124, 32125, 32126,
- 32127, 32128, 32129, 32130, 32131, 32132, 32133, 32134, 32135, 32136,
- 32137, 32138, 32139, 32140, 32141, 32142, 32143, 32144, 32145, 32146,
- 32147, 32148, 32149, 32150, 32151, 32152, 20581, 33328, 21073, 39279,
- 28176, 28293, 28071, 24314, 20725, 23004, 23558, 27974, 27743, 30086,
- 33931, 26728, 22870, 35762, 21280, 37233, 38477, 34121, 26898, 30977,
- 28966, 33014, 20132, 37066, 27975, 39556, 23047, 22204, 25605, 38128,
- 30699, 20389, 33050, 29409, 35282, 39290, 32564, 32478, 21119, 25945,
- 37237, 36735, 36739, 21483, 31382, 25581, 25509, 30342, 31224, 34903,
- 38454, 25130, 21163, 33410, 26708, 26480, 25463, 30571, 31469, 27905,
- 32467, 35299, 22992, 25106, 34249, 33445, 30028, 20511, 20171, 30117,
- 35819, 23626, 24062, 31563, 26020, 37329, 20170, 27941, 35167, 32039,
- 38182, 20165, 35880, 36827, 38771, 26187, 31105, 36817, 28908, 28024,
- 32153, 32154, 32155, 32156, 32157, 32158, 32159, 32160, 32161, 32162,
- 32163, 32164, 32165, 32167, 32168, 32169, 32170, 32171, 32172, 32173,
- 32175, 32176, 32177, 32178, 32179, 32180, 32181, 32182, 32183, 32184,
- 32185, 32186, 32187, 32188, 32189, 32190, 32191, 32192, 32193, 32194,
- 32195, 32196, 32197, 32198, 32199, 32200, 32201, 32202, 32203, 32204,
- 32205, 32206, 32207, 32208, 32209, 32210, 32211, 32212, 32213, 32214,
- 32215, 32216, 32217, 32218, 32219, 32220, 32221, 32222, 32223, 32224,
- 32225, 32226, 32227, 32228, 32229, 32230, 32231, 32232, 32233, 32234,
- 32235, 32236, 32237, 32238, 32239, 32240, 32241, 32242, 32243, 32244,
- 32245, 32246, 32247, 32248, 32249, 32250, 23613, 21170, 33606, 20834,
- 33550, 30555, 26230, 40120, 20140, 24778, 31934, 31923, 32463, 20117,
- 35686, 26223, 39048, 38745, 22659, 25964, 38236, 24452, 30153, 38742,
- 31455, 31454, 20928, 28847, 31384, 25578, 31350, 32416, 29590, 38893,
- 20037, 28792, 20061, 37202, 21417, 25937, 26087, 33276, 33285, 21646,
- 23601, 30106, 38816, 25304, 29401, 30141, 23621, 39545, 33738, 23616,
- 21632, 30697, 20030, 27822, 32858, 25298, 25454, 24040, 20855, 36317,
- 36382, 38191, 20465, 21477, 24807, 28844, 21095, 25424, 40515, 23071,
- 20518, 30519, 21367, 32482, 25733, 25899, 25225, 25496, 20500, 29237,
- 35273, 20915, 35776, 32477, 22343, 33740, 38055, 20891, 21531, 23803,
- 32251, 32252, 32253, 32254, 32255, 32256, 32257, 32258, 32259, 32260,
- 32261, 32262, 32263, 32264, 32265, 32266, 32267, 32268, 32269, 32270,
- 32271, 32272, 32273, 32274, 32275, 32276, 32277, 32278, 32279, 32280,
- 32281, 32282, 32283, 32284, 32285, 32286, 32287, 32288, 32289, 32290,
- 32291, 32292, 32293, 32294, 32295, 32296, 32297, 32298, 32299, 32300,
- 32301, 32302, 32303, 32304, 32305, 32306, 32307, 32308, 32309, 32310,
- 32311, 32312, 32313, 32314, 32316, 32317, 32318, 32319, 32320, 32322,
- 32323, 32324, 32325, 32326, 32328, 32329, 32330, 32331, 32332, 32333,
- 32334, 32335, 32336, 32337, 32338, 32339, 32340, 32341, 32342, 32343,
- 32344, 32345, 32346, 32347, 32348, 32349, 20426, 31459, 27994, 37089,
- 39567, 21888, 21654, 21345, 21679, 24320, 25577, 26999, 20975, 24936,
- 21002, 22570, 21208, 22350, 30733, 30475, 24247, 24951, 31968, 25179,
- 25239, 20130, 28821, 32771, 25335, 28900, 38752, 22391, 33499, 26607,
- 26869, 30933, 39063, 31185, 22771, 21683, 21487, 28212, 20811, 21051,
- 23458, 35838, 32943, 21827, 22438, 24691, 22353, 21549, 31354, 24656,
- 23380, 25511, 25248, 21475, 25187, 23495, 26543, 21741, 31391, 33510,
- 37239, 24211, 35044, 22840, 22446, 25358, 36328, 33007, 22359, 31607,
- 20393, 24555, 23485, 27454, 21281, 31568, 29378, 26694, 30719, 30518,
- 26103, 20917, 20111, 30420, 23743, 31397, 33909, 22862, 39745, 20608,
- 32350, 32351, 32352, 32353, 32354, 32355, 32356, 32357, 32358, 32359,
- 32360, 32361, 32362, 32363, 32364, 32365, 32366, 32367, 32368, 32369,
- 32370, 32371, 32372, 32373, 32374, 32375, 32376, 32377, 32378, 32379,
- 32380, 32381, 32382, 32383, 32384, 32385, 32387, 32388, 32389, 32390,
- 32391, 32392, 32393, 32394, 32395, 32396, 32397, 32398, 32399, 32400,
- 32401, 32402, 32403, 32404, 32405, 32406, 32407, 32408, 32409, 32410,
- 32412, 32413, 32414, 32430, 32436, 32443, 32444, 32470, 32484, 32492,
- 32505, 32522, 32528, 32542, 32567, 32569, 32571, 32572, 32573, 32574,
- 32575, 32576, 32577, 32579, 32582, 32583, 32584, 32585, 32586, 32587,
- 32588, 32589, 32590, 32591, 32594, 32595, 39304, 24871, 28291, 22372,
- 26118, 25414, 22256, 25324, 25193, 24275, 38420, 22403, 25289, 21895,
- 34593, 33098, 36771, 21862, 33713, 26469, 36182, 34013, 23146, 26639,
- 25318, 31726, 38417, 20848, 28572, 35888, 25597, 35272, 25042, 32518,
- 28866, 28389, 29701, 27028, 29436, 24266, 37070, 26391, 28010, 25438,
- 21171, 29282, 32769, 20332, 23013, 37226, 28889, 28061, 21202, 20048,
- 38647, 38253, 34174, 30922, 32047, 20769, 22418, 25794, 32907, 31867,
- 27882, 26865, 26974, 20919, 21400, 26792, 29313, 40654, 31729, 29432,
- 31163, 28435, 29702, 26446, 37324, 40100, 31036, 33673, 33620, 21519,
- 26647, 20029, 21385, 21169, 30782, 21382, 21033, 20616, 20363, 20432,
- 32598, 32601, 32603, 32604, 32605, 32606, 32608, 32611, 32612, 32613,
- 32614, 32615, 32619, 32620, 32621, 32623, 32624, 32627, 32629, 32630,
- 32631, 32632, 32634, 32635, 32636, 32637, 32639, 32640, 32642, 32643,
- 32644, 32645, 32646, 32647, 32648, 32649, 32651, 32653, 32655, 32656,
- 32657, 32658, 32659, 32661, 32662, 32663, 32664, 32665, 32667, 32668,
- 32672, 32674, 32675, 32677, 32678, 32680, 32681, 32682, 32683, 32684,
- 32685, 32686, 32689, 32691, 32692, 32693, 32694, 32695, 32698, 32699,
- 32702, 32704, 32706, 32707, 32708, 32710, 32711, 32712, 32713, 32715,
- 32717, 32719, 32720, 32721, 32722, 32723, 32726, 32727, 32729, 32730,
- 32731, 32732, 32733, 32734, 32738, 32739, 30178, 31435, 31890, 27813,
- 38582, 21147, 29827, 21737, 20457, 32852, 33714, 36830, 38256, 24265,
- 24604, 28063, 24088, 25947, 33080, 38142, 24651, 28860, 32451, 31918,
- 20937, 26753, 31921, 33391, 20004, 36742, 37327, 26238, 20142, 35845,
- 25769, 32842, 20698, 30103, 29134, 23525, 36797, 28518, 20102, 25730,
- 38243, 24278, 26009, 21015, 35010, 28872, 21155, 29454, 29747, 26519,
- 30967, 38678, 20020, 37051, 40158, 28107, 20955, 36161, 21533, 25294,
- 29618, 33777, 38646, 40836, 38083, 20278, 32666, 20940, 28789, 38517,
- 23725, 39046, 21478, 20196, 28316, 29705, 27060, 30827, 39311, 30041,
- 21016, 30244, 27969, 26611, 20845, 40857, 32843, 21657, 31548, 31423,
- 32740, 32743, 32744, 32746, 32747, 32748, 32749, 32751, 32754, 32756,
- 32757, 32758, 32759, 32760, 32761, 32762, 32765, 32766, 32767, 32770,
- 32775, 32776, 32777, 32778, 32782, 32783, 32785, 32787, 32794, 32795,
- 32797, 32798, 32799, 32801, 32803, 32804, 32811, 32812, 32813, 32814,
- 32815, 32816, 32818, 32820, 32825, 32826, 32828, 32830, 32832, 32833,
- 32836, 32837, 32839, 32840, 32841, 32846, 32847, 32848, 32849, 32851,
- 32853, 32854, 32855, 32857, 32859, 32860, 32861, 32862, 32863, 32864,
- 32865, 32866, 32867, 32868, 32869, 32870, 32871, 32872, 32875, 32876,
- 32877, 32878, 32879, 32880, 32882, 32883, 32884, 32885, 32886, 32887,
- 32888, 32889, 32890, 32891, 32892, 32893, 38534, 22404, 25314, 38471,
- 27004, 23044, 25602, 31699, 28431, 38475, 33446, 21346, 39045, 24208,
- 28809, 25523, 21348, 34383, 40065, 40595, 30860, 38706, 36335, 36162,
- 40575, 28510, 31108, 24405, 38470, 25134, 39540, 21525, 38109, 20387,
- 26053, 23653, 23649, 32533, 34385, 27695, 24459, 29575, 28388, 32511,
- 23782, 25371, 23402, 28390, 21365, 20081, 25504, 30053, 25249, 36718,
- 20262, 20177, 27814, 32438, 35770, 33821, 34746, 32599, 36923, 38179,
- 31657, 39585, 35064, 33853, 27931, 39558, 32476, 22920, 40635, 29595,
- 30721, 34434, 39532, 39554, 22043, 21527, 22475, 20080, 40614, 21334,
- 36808, 33033, 30610, 39314, 34542, 28385, 34067, 26364, 24930, 28459,
- 32894, 32897, 32898, 32901, 32904, 32906, 32909, 32910, 32911, 32912,
- 32913, 32914, 32916, 32917, 32919, 32921, 32926, 32931, 32934, 32935,
- 32936, 32940, 32944, 32947, 32949, 32950, 32952, 32953, 32955, 32965,
- 32967, 32968, 32969, 32970, 32971, 32975, 32976, 32977, 32978, 32979,
- 32980, 32981, 32984, 32991, 32992, 32994, 32995, 32998, 33006, 33013,
- 33015, 33017, 33019, 33022, 33023, 33024, 33025, 33027, 33028, 33029,
- 33031, 33032, 33035, 33036, 33045, 33047, 33049, 33051, 33052, 33053,
- 33055, 33056, 33057, 33058, 33059, 33060, 33061, 33062, 33063, 33064,
- 33065, 33066, 33067, 33069, 33070, 33072, 33075, 33076, 33077, 33079,
- 33081, 33082, 33083, 33084, 33085, 33087, 35881, 33426, 33579, 30450,
- 27667, 24537, 33725, 29483, 33541, 38170, 27611, 30683, 38086, 21359,
- 33538, 20882, 24125, 35980, 36152, 20040, 29611, 26522, 26757, 37238,
- 38665, 29028, 27809, 30473, 23186, 38209, 27599, 32654, 26151, 23504,
- 22969, 23194, 38376, 38391, 20204, 33804, 33945, 27308, 30431, 38192,
- 29467, 26790, 23391, 30511, 37274, 38753, 31964, 36855, 35868, 24357,
- 31859, 31192, 35269, 27852, 34588, 23494, 24130, 26825, 30496, 32501,
- 20885, 20813, 21193, 23081, 32517, 38754, 33495, 25551, 30596, 34256,
- 31186, 28218, 24217, 22937, 34065, 28781, 27665, 25279, 30399, 25935,
- 24751, 38397, 26126, 34719, 40483, 38125, 21517, 21629, 35884, 25720,
- 33088, 33089, 33090, 33091, 33092, 33093, 33095, 33097, 33101, 33102,
- 33103, 33106, 33110, 33111, 33112, 33115, 33116, 33117, 33118, 33119,
- 33121, 33122, 33123, 33124, 33126, 33128, 33130, 33131, 33132, 33135,
- 33138, 33139, 33141, 33142, 33143, 33144, 33153, 33155, 33156, 33157,
- 33158, 33159, 33161, 33163, 33164, 33165, 33166, 33168, 33170, 33171,
- 33172, 33173, 33174, 33175, 33177, 33178, 33182, 33183, 33184, 33185,
- 33186, 33188, 33189, 33191, 33193, 33195, 33196, 33197, 33198, 33199,
- 33200, 33201, 33202, 33204, 33205, 33206, 33207, 33208, 33209, 33212,
- 33213, 33214, 33215, 33220, 33221, 33223, 33224, 33225, 33227, 33229,
- 33230, 33231, 33232, 33233, 33234, 33235, 25721, 34321, 27169, 33180,
- 30952, 25705, 39764, 25273, 26411, 33707, 22696, 40664, 27819, 28448,
- 23518, 38476, 35851, 29279, 26576, 25287, 29281, 20137, 22982, 27597,
- 22675, 26286, 24149, 21215, 24917, 26408, 30446, 30566, 29287, 31302,
- 25343, 21738, 21584, 38048, 37027, 23068, 32435, 27670, 20035, 22902,
- 32784, 22856, 21335, 30007, 38590, 22218, 25376, 33041, 24700, 38393,
- 28118, 21602, 39297, 20869, 23273, 33021, 22958, 38675, 20522, 27877,
- 23612, 25311, 20320, 21311, 33147, 36870, 28346, 34091, 25288, 24180,
- 30910, 25781, 25467, 24565, 23064, 37247, 40479, 23615, 25423, 32834,
- 23421, 21870, 38218, 38221, 28037, 24744, 26592, 29406, 20957, 23425,
- 33236, 33237, 33238, 33239, 33240, 33241, 33242, 33243, 33244, 33245,
- 33246, 33247, 33248, 33249, 33250, 33252, 33253, 33254, 33256, 33257,
- 33259, 33262, 33263, 33264, 33265, 33266, 33269, 33270, 33271, 33272,
- 33273, 33274, 33277, 33279, 33283, 33287, 33288, 33289, 33290, 33291,
- 33294, 33295, 33297, 33299, 33301, 33302, 33303, 33304, 33305, 33306,
- 33309, 33312, 33316, 33317, 33318, 33319, 33321, 33326, 33330, 33338,
- 33340, 33341, 33343, 33344, 33345, 33346, 33347, 33349, 33350, 33352,
- 33354, 33356, 33357, 33358, 33360, 33361, 33362, 33363, 33364, 33365,
- 33366, 33367, 33369, 33371, 33372, 33373, 33374, 33376, 33377, 33378,
- 33379, 33380, 33381, 33382, 33383, 33385, 25319, 27870, 29275, 25197,
- 38062, 32445, 33043, 27987, 20892, 24324, 22900, 21162, 24594, 22899,
- 26262, 34384, 30111, 25386, 25062, 31983, 35834, 21734, 27431, 40485,
- 27572, 34261, 21589, 20598, 27812, 21866, 36276, 29228, 24085, 24597,
- 29750, 25293, 25490, 29260, 24472, 28227, 27966, 25856, 28504, 30424,
- 30928, 30460, 30036, 21028, 21467, 20051, 24222, 26049, 32810, 32982,
- 25243, 21638, 21032, 28846, 34957, 36305, 27873, 21624, 32986, 22521,
- 35060, 36180, 38506, 37197, 20329, 27803, 21943, 30406, 30768, 25256,
- 28921, 28558, 24429, 34028, 26842, 30844, 31735, 33192, 26379, 40527,
- 25447, 30896, 22383, 30738, 38713, 25209, 25259, 21128, 29749, 27607,
- 33386, 33387, 33388, 33389, 33393, 33397, 33398, 33399, 33400, 33403,
- 33404, 33408, 33409, 33411, 33413, 33414, 33415, 33417, 33420, 33424,
- 33427, 33428, 33429, 33430, 33434, 33435, 33438, 33440, 33442, 33443,
- 33447, 33458, 33461, 33462, 33466, 33467, 33468, 33471, 33472, 33474,
- 33475, 33477, 33478, 33481, 33488, 33494, 33497, 33498, 33501, 33506,
- 33511, 33512, 33513, 33514, 33516, 33517, 33518, 33520, 33522, 33523,
- 33525, 33526, 33528, 33530, 33532, 33533, 33534, 33535, 33536, 33546,
- 33547, 33549, 33552, 33554, 33555, 33558, 33560, 33561, 33565, 33566,
- 33567, 33568, 33569, 33570, 33571, 33572, 33573, 33574, 33577, 33578,
- 33582, 33584, 33586, 33591, 33595, 33597, 21860, 33086, 30130, 30382,
- 21305, 30174, 20731, 23617, 35692, 31687, 20559, 29255, 39575, 39128,
- 28418, 29922, 31080, 25735, 30629, 25340, 39057, 36139, 21697, 32856,
- 20050, 22378, 33529, 33805, 24179, 20973, 29942, 35780, 23631, 22369,
- 27900, 39047, 23110, 30772, 39748, 36843, 31893, 21078, 25169, 38138,
- 20166, 33670, 33889, 33769, 33970, 22484, 26420, 22275, 26222, 28006,
- 35889, 26333, 28689, 26399, 27450, 26646, 25114, 22971, 19971, 20932,
- 28422, 26578, 27791, 20854, 26827, 22855, 27495, 30054, 23822, 33040,
- 40784, 26071, 31048, 31041, 39569, 36215, 23682, 20062, 20225, 21551,
- 22865, 30732, 22120, 27668, 36804, 24323, 27773, 27875, 35755, 25488,
- 33598, 33599, 33601, 33602, 33604, 33605, 33608, 33610, 33611, 33612,
- 33613, 33614, 33619, 33621, 33622, 33623, 33624, 33625, 33629, 33634,
- 33648, 33649, 33650, 33651, 33652, 33653, 33654, 33657, 33658, 33662,
- 33663, 33664, 33665, 33666, 33667, 33668, 33671, 33672, 33674, 33675,
- 33676, 33677, 33679, 33680, 33681, 33684, 33685, 33686, 33687, 33689,
- 33690, 33693, 33695, 33697, 33698, 33699, 33700, 33701, 33702, 33703,
- 33708, 33709, 33710, 33711, 33717, 33723, 33726, 33727, 33730, 33731,
- 33732, 33734, 33736, 33737, 33739, 33741, 33742, 33744, 33745, 33746,
- 33747, 33749, 33751, 33753, 33754, 33755, 33758, 33762, 33763, 33764,
- 33766, 33767, 33768, 33771, 33772, 33773, 24688, 27965, 29301, 25190,
- 38030, 38085, 21315, 36801, 31614, 20191, 35878, 20094, 40660, 38065,
- 38067, 21069, 28508, 36963, 27973, 35892, 22545, 23884, 27424, 27465,
- 26538, 21595, 33108, 32652, 22681, 34103, 24378, 25250, 27207, 38201,
- 25970, 24708, 26725, 30631, 20052, 20392, 24039, 38808, 25772, 32728,
- 23789, 20431, 31373, 20999, 33540, 19988, 24623, 31363, 38054, 20405,
- 20146, 31206, 29748, 21220, 33465, 25810, 31165, 23517, 27777, 38738,
- 36731, 27682, 20542, 21375, 28165, 25806, 26228, 27696, 24773, 39031,
- 35831, 24198, 29756, 31351, 31179, 19992, 37041, 29699, 27714, 22234,
- 37195, 27845, 36235, 21306, 34502, 26354, 36527, 23624, 39537, 28192,
- 33774, 33775, 33779, 33780, 33781, 33782, 33783, 33786, 33787, 33788,
- 33790, 33791, 33792, 33794, 33797, 33799, 33800, 33801, 33802, 33808,
- 33810, 33811, 33812, 33813, 33814, 33815, 33817, 33818, 33819, 33822,
- 33823, 33824, 33825, 33826, 33827, 33833, 33834, 33835, 33836, 33837,
- 33838, 33839, 33840, 33842, 33843, 33844, 33845, 33846, 33847, 33849,
- 33850, 33851, 33854, 33855, 33856, 33857, 33858, 33859, 33860, 33861,
- 33863, 33864, 33865, 33866, 33867, 33868, 33869, 33870, 33871, 33872,
- 33874, 33875, 33876, 33877, 33878, 33880, 33885, 33886, 33887, 33888,
- 33890, 33892, 33893, 33894, 33895, 33896, 33898, 33902, 33903, 33904,
- 33906, 33908, 33911, 33913, 33915, 33916, 21462, 23094, 40843, 36259,
- 21435, 22280, 39079, 26435, 37275, 27849, 20840, 30154, 25331, 29356,
- 21048, 21149, 32570, 28820, 30264, 21364, 40522, 27063, 30830, 38592,
- 35033, 32676, 28982, 29123, 20873, 26579, 29924, 22756, 25880, 22199,
- 35753, 39286, 25200, 32469, 24825, 28909, 22764, 20161, 20154, 24525,
- 38887, 20219, 35748, 20995, 22922, 32427, 25172, 20173, 26085, 25102,
- 33592, 33993, 33635, 34701, 29076, 28342, 23481, 32466, 20887, 25545,
- 26580, 32905, 33593, 34837, 20754, 23418, 22914, 36785, 20083, 27741,
- 20837, 35109, 36719, 38446, 34122, 29790, 38160, 38384, 28070, 33509,
- 24369, 25746, 27922, 33832, 33134, 40131, 22622, 36187, 19977, 21441,
- 33917, 33918, 33919, 33920, 33921, 33923, 33924, 33925, 33926, 33930,
- 33933, 33935, 33936, 33937, 33938, 33939, 33940, 33941, 33942, 33944,
- 33946, 33947, 33949, 33950, 33951, 33952, 33954, 33955, 33956, 33957,
- 33958, 33959, 33960, 33961, 33962, 33963, 33964, 33965, 33966, 33968,
- 33969, 33971, 33973, 33974, 33975, 33979, 33980, 33982, 33984, 33986,
- 33987, 33989, 33990, 33991, 33992, 33995, 33996, 33998, 33999, 34002,
- 34004, 34005, 34007, 34008, 34009, 34010, 34011, 34012, 34014, 34017,
- 34018, 34020, 34023, 34024, 34025, 34026, 34027, 34029, 34030, 34031,
- 34033, 34034, 34035, 34036, 34037, 34038, 34039, 34040, 34041, 34042,
- 34043, 34045, 34046, 34048, 34049, 34050, 20254, 25955, 26705, 21971,
- 20007, 25620, 39578, 25195, 23234, 29791, 33394, 28073, 26862, 20711,
- 33678, 30722, 26432, 21049, 27801, 32433, 20667, 21861, 29022, 31579,
- 26194, 29642, 33515, 26441, 23665, 21024, 29053, 34923, 38378, 38485,
- 25797, 36193, 33203, 21892, 27733, 25159, 32558, 22674, 20260, 21830,
- 36175, 26188, 19978, 23578, 35059, 26786, 25422, 31245, 28903, 33421,
- 21242, 38902, 23569, 21736, 37045, 32461, 22882, 36170, 34503, 33292,
- 33293, 36198, 25668, 23556, 24913, 28041, 31038, 35774, 30775, 30003,
- 21627, 20280, 36523, 28145, 23072, 32453, 31070, 27784, 23457, 23158,
- 29978, 32958, 24910, 28183, 22768, 29983, 29989, 29298, 21319, 32499,
- 34051, 34052, 34053, 34054, 34055, 34056, 34057, 34058, 34059, 34061,
- 34062, 34063, 34064, 34066, 34068, 34069, 34070, 34072, 34073, 34075,
- 34076, 34077, 34078, 34080, 34082, 34083, 34084, 34085, 34086, 34087,
- 34088, 34089, 34090, 34093, 34094, 34095, 34096, 34097, 34098, 34099,
- 34100, 34101, 34102, 34110, 34111, 34112, 34113, 34114, 34116, 34117,
- 34118, 34119, 34123, 34124, 34125, 34126, 34127, 34128, 34129, 34130,
- 34131, 34132, 34133, 34135, 34136, 34138, 34139, 34140, 34141, 34143,
- 34144, 34145, 34146, 34147, 34149, 34150, 34151, 34153, 34154, 34155,
- 34156, 34157, 34158, 34159, 34160, 34161, 34163, 34165, 34166, 34167,
- 34168, 34172, 34173, 34175, 34176, 34177, 30465, 30427, 21097, 32988,
- 22307, 24072, 22833, 29422, 26045, 28287, 35799, 23608, 34417, 21313,
- 30707, 25342, 26102, 20160, 39135, 34432, 23454, 35782, 21490, 30690,
- 20351, 23630, 39542, 22987, 24335, 31034, 22763, 19990, 26623, 20107,
- 25325, 35475, 36893, 21183, 26159, 21980, 22124, 36866, 20181, 20365,
- 37322, 39280, 27663, 24066, 24643, 23460, 35270, 35797, 25910, 25163,
- 39318, 23432, 23551, 25480, 21806, 21463, 30246, 20861, 34092, 26530,
- 26803, 27530, 25234, 36755, 21460, 33298, 28113, 30095, 20070, 36174,
- 23408, 29087, 34223, 26257, 26329, 32626, 34560, 40653, 40736, 23646,
- 26415, 36848, 26641, 26463, 25101, 31446, 22661, 24246, 25968, 28465,
- 34178, 34179, 34182, 34184, 34185, 34186, 34187, 34188, 34189, 34190,
- 34192, 34193, 34194, 34195, 34196, 34197, 34198, 34199, 34200, 34201,
- 34202, 34205, 34206, 34207, 34208, 34209, 34210, 34211, 34213, 34214,
- 34215, 34217, 34219, 34220, 34221, 34225, 34226, 34227, 34228, 34229,
- 34230, 34232, 34234, 34235, 34236, 34237, 34238, 34239, 34240, 34242,
- 34243, 34244, 34245, 34246, 34247, 34248, 34250, 34251, 34252, 34253,
- 34254, 34257, 34258, 34260, 34262, 34263, 34264, 34265, 34266, 34267,
- 34269, 34270, 34271, 34272, 34273, 34274, 34275, 34277, 34278, 34279,
- 34280, 34282, 34283, 34284, 34285, 34286, 34287, 34288, 34289, 34290,
- 34291, 34292, 34293, 34294, 34295, 34296, 24661, 21047, 32781, 25684,
- 34928, 29993, 24069, 26643, 25332, 38684, 21452, 29245, 35841, 27700,
- 30561, 31246, 21550, 30636, 39034, 33308, 35828, 30805, 26388, 28865,
- 26031, 25749, 22070, 24605, 31169, 21496, 19997, 27515, 32902, 23546,
- 21987, 22235, 20282, 20284, 39282, 24051, 26494, 32824, 24578, 39042,
- 36865, 23435, 35772, 35829, 25628, 33368, 25822, 22013, 33487, 37221,
- 20439, 32032, 36895, 31903, 20723, 22609, 28335, 23487, 35785, 32899,
- 37240, 33948, 31639, 34429, 38539, 38543, 32485, 39635, 30862, 23681,
- 31319, 36930, 38567, 31071, 23385, 25439, 31499, 34001, 26797, 21766,
- 32553, 29712, 32034, 38145, 25152, 22604, 20182, 23427, 22905, 22612,
- 34297, 34298, 34300, 34301, 34302, 34304, 34305, 34306, 34307, 34308,
- 34310, 34311, 34312, 34313, 34314, 34315, 34316, 34317, 34318, 34319,
- 34320, 34322, 34323, 34324, 34325, 34327, 34328, 34329, 34330, 34331,
- 34332, 34333, 34334, 34335, 34336, 34337, 34338, 34339, 34340, 34341,
- 34342, 34344, 34346, 34347, 34348, 34349, 34350, 34351, 34352, 34353,
- 34354, 34355, 34356, 34357, 34358, 34359, 34361, 34362, 34363, 34365,
- 34366, 34367, 34368, 34369, 34370, 34371, 34372, 34373, 34374, 34375,
- 34376, 34377, 34378, 34379, 34380, 34386, 34387, 34389, 34390, 34391,
- 34392, 34393, 34395, 34396, 34397, 34399, 34400, 34401, 34403, 34404,
- 34405, 34406, 34407, 34408, 34409, 34410, 29549, 25374, 36427, 36367,
- 32974, 33492, 25260, 21488, 27888, 37214, 22826, 24577, 27760, 22349,
- 25674, 36138, 30251, 28393, 22363, 27264, 30192, 28525, 35885, 35848,
- 22374, 27631, 34962, 30899, 25506, 21497, 28845, 27748, 22616, 25642,
- 22530, 26848, 33179, 21776, 31958, 20504, 36538, 28108, 36255, 28907,
- 25487, 28059, 28372, 32486, 33796, 26691, 36867, 28120, 38518, 35752,
- 22871, 29305, 34276, 33150, 30140, 35466, 26799, 21076, 36386, 38161,
- 25552, 39064, 36420, 21884, 20307, 26367, 22159, 24789, 28053, 21059,
- 23625, 22825, 28155, 22635, 30000, 29980, 24684, 33300, 33094, 25361,
- 26465, 36834, 30522, 36339, 36148, 38081, 24086, 21381, 21548, 28867,
- 34413, 34415, 34416, 34418, 34419, 34420, 34421, 34422, 34423, 34424,
- 34435, 34436, 34437, 34438, 34439, 34440, 34441, 34446, 34447, 34448,
- 34449, 34450, 34452, 34454, 34455, 34456, 34457, 34458, 34459, 34462,
- 34463, 34464, 34465, 34466, 34469, 34470, 34475, 34477, 34478, 34482,
- 34483, 34487, 34488, 34489, 34491, 34492, 34493, 34494, 34495, 34497,
- 34498, 34499, 34501, 34504, 34508, 34509, 34514, 34515, 34517, 34518,
- 34519, 34522, 34524, 34525, 34528, 34529, 34530, 34531, 34533, 34534,
- 34535, 34536, 34538, 34539, 34540, 34543, 34549, 34550, 34551, 34554,
- 34555, 34556, 34557, 34559, 34561, 34564, 34565, 34566, 34571, 34572,
- 34574, 34575, 34576, 34577, 34580, 34582, 27712, 24311, 20572, 20141,
- 24237, 25402, 33351, 36890, 26704, 37230, 30643, 21516, 38108, 24420,
- 31461, 26742, 25413, 31570, 32479, 30171, 20599, 25237, 22836, 36879,
- 20984, 31171, 31361, 22270, 24466, 36884, 28034, 23648, 22303, 21520,
- 20820, 28237, 22242, 25512, 39059, 33151, 34581, 35114, 36864, 21534,
- 23663, 33216, 25302, 25176, 33073, 40501, 38464, 39534, 39548, 26925,
- 22949, 25299, 21822, 25366, 21703, 34521, 27964, 23043, 29926, 34972,
- 27498, 22806, 35916, 24367, 28286, 29609, 39037, 20024, 28919, 23436,
- 30871, 25405, 26202, 30358, 24779, 23451, 23113, 19975, 33109, 27754,
- 29579, 20129, 26505, 32593, 24448, 26106, 26395, 24536, 22916, 23041,
- 34585, 34587, 34589, 34591, 34592, 34596, 34598, 34599, 34600, 34602,
- 34603, 34604, 34605, 34607, 34608, 34610, 34611, 34613, 34614, 34616,
- 34617, 34618, 34620, 34621, 34624, 34625, 34626, 34627, 34628, 34629,
- 34630, 34634, 34635, 34637, 34639, 34640, 34641, 34642, 34644, 34645,
- 34646, 34648, 34650, 34651, 34652, 34653, 34654, 34655, 34657, 34658,
- 34662, 34663, 34664, 34665, 34666, 34667, 34668, 34669, 34671, 34673,
- 34674, 34675, 34677, 34679, 34680, 34681, 34682, 34687, 34688, 34689,
- 34692, 34694, 34695, 34697, 34698, 34700, 34702, 34703, 34704, 34705,
- 34706, 34708, 34709, 34710, 34712, 34713, 34714, 34715, 34716, 34717,
- 34718, 34720, 34721, 34722, 34723, 34724, 24013, 24494, 21361, 38886,
- 36829, 26693, 22260, 21807, 24799, 20026, 28493, 32500, 33479, 33806,
- 22996, 20255, 20266, 23614, 32428, 26410, 34074, 21619, 30031, 32963,
- 21890, 39759, 20301, 28205, 35859, 23561, 24944, 21355, 30239, 28201,
- 34442, 25991, 38395, 32441, 21563, 31283, 32010, 38382, 21985, 32705,
- 29934, 25373, 34583, 28065, 31389, 25105, 26017, 21351, 25569, 27779,
- 24043, 21596, 38056, 20044, 27745, 35820, 23627, 26080, 33436, 26791,
- 21566, 21556, 27595, 27494, 20116, 25410, 21320, 33310, 20237, 20398,
- 22366, 25098, 38654, 26212, 29289, 21247, 21153, 24735, 35823, 26132,
- 29081, 26512, 35199, 30802, 30717, 26224, 22075, 21560, 38177, 29306,
- 34725, 34726, 34727, 34729, 34730, 34734, 34736, 34737, 34738, 34740,
- 34742, 34743, 34744, 34745, 34747, 34748, 34750, 34751, 34753, 34754,
- 34755, 34756, 34757, 34759, 34760, 34761, 34764, 34765, 34766, 34767,
- 34768, 34772, 34773, 34774, 34775, 34776, 34777, 34778, 34780, 34781,
- 34782, 34783, 34785, 34786, 34787, 34788, 34790, 34791, 34792, 34793,
- 34795, 34796, 34797, 34799, 34800, 34801, 34802, 34803, 34804, 34805,
- 34806, 34807, 34808, 34810, 34811, 34812, 34813, 34815, 34816, 34817,
- 34818, 34820, 34821, 34822, 34823, 34824, 34825, 34827, 34828, 34829,
- 34830, 34831, 34832, 34833, 34834, 34836, 34839, 34840, 34841, 34842,
- 34844, 34845, 34846, 34847, 34848, 34851, 31232, 24687, 24076, 24713,
- 33181, 22805, 24796, 29060, 28911, 28330, 27728, 29312, 27268, 34989,
- 24109, 20064, 23219, 21916, 38115, 27927, 31995, 38553, 25103, 32454,
- 30606, 34430, 21283, 38686, 36758, 26247, 23777, 20384, 29421, 19979,
- 21414, 22799, 21523, 25472, 38184, 20808, 20185, 40092, 32420, 21688,
- 36132, 34900, 33335, 38386, 28046, 24358, 23244, 26174, 38505, 29616,
- 29486, 21439, 33146, 39301, 32673, 23466, 38519, 38480, 32447, 30456,
- 21410, 38262, 39321, 31665, 35140, 28248, 20065, 32724, 31077, 35814,
- 24819, 21709, 20139, 39033, 24055, 27233, 20687, 21521, 35937, 33831,
- 30813, 38660, 21066, 21742, 22179, 38144, 28040, 23477, 28102, 26195,
- 34852, 34853, 34854, 34855, 34856, 34857, 34858, 34859, 34860, 34861,
- 34862, 34863, 34864, 34865, 34867, 34868, 34869, 34870, 34871, 34872,
- 34874, 34875, 34877, 34878, 34879, 34881, 34882, 34883, 34886, 34887,
- 34888, 34889, 34890, 34891, 34894, 34895, 34896, 34897, 34898, 34899,
- 34901, 34902, 34904, 34906, 34907, 34908, 34909, 34910, 34911, 34912,
- 34918, 34919, 34922, 34925, 34927, 34929, 34931, 34932, 34933, 34934,
- 34936, 34937, 34938, 34939, 34940, 34944, 34947, 34950, 34951, 34953,
- 34954, 34956, 34958, 34959, 34960, 34961, 34963, 34964, 34965, 34967,
- 34968, 34969, 34970, 34971, 34973, 34974, 34975, 34976, 34977, 34979,
- 34981, 34982, 34983, 34984, 34985, 34986, 23567, 23389, 26657, 32918,
- 21880, 31505, 25928, 26964, 20123, 27463, 34638, 38795, 21327, 25375,
- 25658, 37034, 26012, 32961, 35856, 20889, 26800, 21368, 34809, 25032,
- 27844, 27899, 35874, 23633, 34218, 33455, 38156, 27427, 36763, 26032,
- 24571, 24515, 20449, 34885, 26143, 33125, 29481, 24826, 20852, 21009,
- 22411, 24418, 37026, 34892, 37266, 24184, 26447, 24615, 22995, 20804,
- 20982, 33016, 21256, 27769, 38596, 29066, 20241, 20462, 32670, 26429,
- 21957, 38152, 31168, 34966, 32483, 22687, 25100, 38656, 34394, 22040,
- 39035, 24464, 35768, 33988, 37207, 21465, 26093, 24207, 30044, 24676,
- 32110, 23167, 32490, 32493, 36713, 21927, 23459, 24748, 26059, 29572,
- 34988, 34990, 34991, 34992, 34994, 34995, 34996, 34997, 34998, 35000,
- 35001, 35002, 35003, 35005, 35006, 35007, 35008, 35011, 35012, 35015,
- 35016, 35018, 35019, 35020, 35021, 35023, 35024, 35025, 35027, 35030,
- 35031, 35034, 35035, 35036, 35037, 35038, 35040, 35041, 35046, 35047,
- 35049, 35050, 35051, 35052, 35053, 35054, 35055, 35058, 35061, 35062,
- 35063, 35066, 35067, 35069, 35071, 35072, 35073, 35075, 35076, 35077,
- 35078, 35079, 35080, 35081, 35083, 35084, 35085, 35086, 35087, 35089,
- 35092, 35093, 35094, 35095, 35096, 35100, 35101, 35102, 35103, 35104,
- 35106, 35107, 35108, 35110, 35111, 35112, 35113, 35116, 35117, 35118,
- 35119, 35121, 35122, 35123, 35125, 35127, 36873, 30307, 30505, 32474,
- 38772, 34203, 23398, 31348, 38634, 34880, 21195, 29071, 24490, 26092,
- 35810, 23547, 39535, 24033, 27529, 27739, 35757, 35759, 36874, 36805,
- 21387, 25276, 40486, 40493, 21568, 20011, 33469, 29273, 34460, 23830,
- 34905, 28079, 38597, 21713, 20122, 35766, 28937, 21693, 38409, 28895,
- 28153, 30416, 20005, 30740, 34578, 23721, 24310, 35328, 39068, 38414,
- 28814, 27839, 22852, 25513, 30524, 34893, 28436, 33395, 22576, 29141,
- 21388, 30746, 38593, 21761, 24422, 28976, 23476, 35866, 39564, 27523,
- 22830, 40495, 31207, 26472, 25196, 20335, 30113, 32650, 27915, 38451,
- 27687, 20208, 30162, 20859, 26679, 28478, 36992, 33136, 22934, 29814,
- 35128, 35129, 35130, 35131, 35132, 35133, 35134, 35135, 35136, 35138,
- 35139, 35141, 35142, 35143, 35144, 35145, 35146, 35147, 35148, 35149,
- 35150, 35151, 35152, 35153, 35154, 35155, 35156, 35157, 35158, 35159,
- 35160, 35161, 35162, 35163, 35164, 35165, 35168, 35169, 35170, 35171,
- 35172, 35173, 35175, 35176, 35177, 35178, 35179, 35180, 35181, 35182,
- 35183, 35184, 35185, 35186, 35187, 35188, 35189, 35190, 35191, 35192,
- 35193, 35194, 35196, 35197, 35198, 35200, 35202, 35204, 35205, 35207,
- 35208, 35209, 35210, 35211, 35212, 35213, 35214, 35215, 35216, 35217,
- 35218, 35219, 35220, 35221, 35222, 35223, 35224, 35225, 35226, 35227,
- 35228, 35229, 35230, 35231, 35232, 35233, 25671, 23591, 36965, 31377,
- 35875, 23002, 21676, 33280, 33647, 35201, 32768, 26928, 22094, 32822,
- 29239, 37326, 20918, 20063, 39029, 25494, 19994, 21494, 26355, 33099,
- 22812, 28082, 19968, 22777, 21307, 25558, 38129, 20381, 20234, 34915,
- 39056, 22839, 36951, 31227, 20202, 33008, 30097, 27778, 23452, 23016,
- 24413, 26885, 34433, 20506, 24050, 20057, 30691, 20197, 33402, 25233,
- 26131, 37009, 23673, 20159, 24441, 33222, 36920, 32900, 30123, 20134,
- 35028, 24847, 27589, 24518, 20041, 30410, 28322, 35811, 35758, 35850,
- 35793, 24322, 32764, 32716, 32462, 33589, 33643, 22240, 27575, 38899,
- 38452, 23035, 21535, 38134, 28139, 23493, 39278, 23609, 24341, 38544,
- 35234, 35235, 35236, 35237, 35238, 35239, 35240, 35241, 35242, 35243,
- 35244, 35245, 35246, 35247, 35248, 35249, 35250, 35251, 35252, 35253,
- 35254, 35255, 35256, 35257, 35258, 35259, 35260, 35261, 35262, 35263,
- 35264, 35267, 35277, 35283, 35284, 35285, 35287, 35288, 35289, 35291,
- 35293, 35295, 35296, 35297, 35298, 35300, 35303, 35304, 35305, 35306,
- 35308, 35309, 35310, 35312, 35313, 35314, 35316, 35317, 35318, 35319,
- 35320, 35321, 35322, 35323, 35324, 35325, 35326, 35327, 35329, 35330,
- 35331, 35332, 35333, 35334, 35336, 35337, 35338, 35339, 35340, 35341,
- 35342, 35343, 35344, 35345, 35346, 35347, 35348, 35349, 35350, 35351,
- 35352, 35353, 35354, 35355, 35356, 35357, 21360, 33521, 27185, 23156,
- 40560, 24212, 32552, 33721, 33828, 33829, 33639, 34631, 36814, 36194,
- 30408, 24433, 39062, 30828, 26144, 21727, 25317, 20323, 33219, 30152,
- 24248, 38605, 36362, 34553, 21647, 27891, 28044, 27704, 24703, 21191,
- 29992, 24189, 20248, 24736, 24551, 23588, 30001, 37038, 38080, 29369,
- 27833, 28216, 37193, 26377, 21451, 21491, 20305, 37321, 35825, 21448,
- 24188, 36802, 28132, 20110, 30402, 27014, 34398, 24858, 33286, 20313,
- 20446, 36926, 40060, 24841, 28189, 28180, 38533, 20104, 23089, 38632,
- 19982, 23679, 31161, 23431, 35821, 32701, 29577, 22495, 33419, 37057,
- 21505, 36935, 21947, 23786, 24481, 24840, 27442, 29425, 32946, 35465,
- 35358, 35359, 35360, 35361, 35362, 35363, 35364, 35365, 35366, 35367,
- 35368, 35369, 35370, 35371, 35372, 35373, 35374, 35375, 35376, 35377,
- 35378, 35379, 35380, 35381, 35382, 35383, 35384, 35385, 35386, 35387,
- 35388, 35389, 35391, 35392, 35393, 35394, 35395, 35396, 35397, 35398,
- 35399, 35401, 35402, 35403, 35404, 35405, 35406, 35407, 35408, 35409,
- 35410, 35411, 35412, 35413, 35414, 35415, 35416, 35417, 35418, 35419,
- 35420, 35421, 35422, 35423, 35424, 35425, 35426, 35427, 35428, 35429,
- 35430, 35431, 35432, 35433, 35434, 35435, 35436, 35437, 35438, 35439,
- 35440, 35441, 35442, 35443, 35444, 35445, 35446, 35447, 35448, 35450,
- 35451, 35452, 35453, 35454, 35455, 35456, 28020, 23507, 35029, 39044,
- 35947, 39533, 40499, 28170, 20900, 20803, 22435, 34945, 21407, 25588,
- 36757, 22253, 21592, 22278, 29503, 28304, 32536, 36828, 33489, 24895,
- 24616, 38498, 26352, 32422, 36234, 36291, 38053, 23731, 31908, 26376,
- 24742, 38405, 32792, 20113, 37095, 21248, 38504, 20801, 36816, 34164,
- 37213, 26197, 38901, 23381, 21277, 30776, 26434, 26685, 21705, 28798,
- 23472, 36733, 20877, 22312, 21681, 25874, 26242, 36190, 36163, 33039,
- 33900, 36973, 31967, 20991, 34299, 26531, 26089, 28577, 34468, 36481,
- 22122, 36896, 30338, 28790, 29157, 36131, 25321, 21017, 27901, 36156,
- 24590, 22686, 24974, 26366, 36192, 25166, 21939, 28195, 26413, 36711,
- 35457, 35458, 35459, 35460, 35461, 35462, 35463, 35464, 35467, 35468,
- 35469, 35470, 35471, 35472, 35473, 35474, 35476, 35477, 35478, 35479,
- 35480, 35481, 35482, 35483, 35484, 35485, 35486, 35487, 35488, 35489,
- 35490, 35491, 35492, 35493, 35494, 35495, 35496, 35497, 35498, 35499,
- 35500, 35501, 35502, 35503, 35504, 35505, 35506, 35507, 35508, 35509,
- 35510, 35511, 35512, 35513, 35514, 35515, 35516, 35517, 35518, 35519,
- 35520, 35521, 35522, 35523, 35524, 35525, 35526, 35527, 35528, 35529,
- 35530, 35531, 35532, 35533, 35534, 35535, 35536, 35537, 35538, 35539,
- 35540, 35541, 35542, 35543, 35544, 35545, 35546, 35547, 35548, 35549,
- 35550, 35551, 35552, 35553, 35554, 35555, 38113, 38392, 30504, 26629,
- 27048, 21643, 20045, 28856, 35784, 25688, 25995, 23429, 31364, 20538,
- 23528, 30651, 27617, 35449, 31896, 27838, 30415, 26025, 36759, 23853,
- 23637, 34360, 26632, 21344, 25112, 31449, 28251, 32509, 27167, 31456,
- 24432, 28467, 24352, 25484, 28072, 26454, 19976, 24080, 36134, 20183,
- 32960, 30260, 38556, 25307, 26157, 25214, 27836, 36213, 29031, 32617,
- 20806, 32903, 21484, 36974, 25240, 21746, 34544, 36761, 32773, 38167,
- 34071, 36825, 27993, 29645, 26015, 30495, 29956, 30759, 33275, 36126,
- 38024, 20390, 26517, 30137, 35786, 38663, 25391, 38215, 38453, 33976,
- 25379, 30529, 24449, 29424, 20105, 24596, 25972, 25327, 27491, 25919,
- 35556, 35557, 35558, 35559, 35560, 35561, 35562, 35563, 35564, 35565,
- 35566, 35567, 35568, 35569, 35570, 35571, 35572, 35573, 35574, 35575,
- 35576, 35577, 35578, 35579, 35580, 35581, 35582, 35583, 35584, 35585,
- 35586, 35587, 35588, 35589, 35590, 35592, 35593, 35594, 35595, 35596,
- 35597, 35598, 35599, 35600, 35601, 35602, 35603, 35604, 35605, 35606,
- 35607, 35608, 35609, 35610, 35611, 35612, 35613, 35614, 35615, 35616,
- 35617, 35618, 35619, 35620, 35621, 35623, 35624, 35625, 35626, 35627,
- 35628, 35629, 35630, 35631, 35632, 35633, 35634, 35635, 35636, 35637,
- 35638, 35639, 35640, 35641, 35642, 35643, 35644, 35645, 35646, 35647,
- 35648, 35649, 35650, 35651, 35652, 35653, 24103, 30151, 37073, 35777,
- 33437, 26525, 25903, 21553, 34584, 30693, 32930, 33026, 27713, 20043,
- 32455, 32844, 30452, 26893, 27542, 25191, 20540, 20356, 22336, 25351,
- 27490, 36286, 21482, 26088, 32440, 24535, 25370, 25527, 33267, 33268,
- 32622, 24092, 23769, 21046, 26234, 31209, 31258, 36136, 28825, 30164,
- 28382, 27835, 31378, 20013, 30405, 24544, 38047, 34935, 32456, 31181,
- 32959, 37325, 20210, 20247, 33311, 21608, 24030, 27954, 35788, 31909,
- 36724, 32920, 24090, 21650, 30385, 23449, 26172, 39588, 29664, 26666,
- 34523, 26417, 29482, 35832, 35803, 36880, 31481, 28891, 29038, 25284,
- 30633, 22065, 20027, 33879, 26609, 21161, 34496, 36142, 38136, 31569,
- 35654, 35655, 35656, 35657, 35658, 35659, 35660, 35661, 35662, 35663,
- 35664, 35665, 35666, 35667, 35668, 35669, 35670, 35671, 35672, 35673,
- 35674, 35675, 35676, 35677, 35678, 35679, 35680, 35681, 35682, 35683,
- 35684, 35685, 35687, 35688, 35689, 35690, 35691, 35693, 35694, 35695,
- 35696, 35697, 35698, 35699, 35700, 35701, 35702, 35703, 35704, 35705,
- 35706, 35707, 35708, 35709, 35710, 35711, 35712, 35713, 35714, 35715,
- 35716, 35717, 35718, 35719, 35720, 35721, 35722, 35723, 35724, 35725,
- 35726, 35727, 35728, 35729, 35730, 35731, 35732, 35733, 35734, 35735,
- 35736, 35737, 35738, 35739, 35740, 35741, 35742, 35743, 35756, 35761,
- 35771, 35783, 35792, 35818, 35849, 35870, 20303, 27880, 31069, 39547,
- 25235, 29226, 25341, 19987, 30742, 36716, 25776, 36186, 31686, 26729,
- 24196, 35013, 22918, 25758, 22766, 29366, 26894, 38181, 36861, 36184,
- 22368, 32512, 35846, 20934, 25417, 25305, 21331, 26700, 29730, 33537,
- 37196, 21828, 30528, 28796, 27978, 20857, 21672, 36164, 23039, 28363,
- 28100, 23388, 32043, 20180, 31869, 28371, 23376, 33258, 28173, 23383,
- 39683, 26837, 36394, 23447, 32508, 24635, 32437, 37049, 36208, 22863,
- 25549, 31199, 36275, 21330, 26063, 31062, 35781, 38459, 32452, 38075,
- 32386, 22068, 37257, 26368, 32618, 23562, 36981, 26152, 24038, 20304,
- 26590, 20570, 20316, 22352, 24231, 59408, 59409, 59410, 59411, 59412,
- 35896, 35897, 35898, 35899, 35900, 35901, 35902, 35903, 35904, 35906,
- 35907, 35908, 35909, 35912, 35914, 35915, 35917, 35918, 35919, 35920,
- 35921, 35922, 35923, 35924, 35926, 35927, 35928, 35929, 35931, 35932,
- 35933, 35934, 35935, 35936, 35939, 35940, 35941, 35942, 35943, 35944,
- 35945, 35948, 35949, 35950, 35951, 35952, 35953, 35954, 35956, 35957,
- 35958, 35959, 35963, 35964, 35965, 35966, 35967, 35968, 35969, 35971,
- 35972, 35974, 35975, 35976, 35979, 35981, 35982, 35983, 35984, 35985,
- 35986, 35987, 35989, 35990, 35991, 35993, 35994, 35995, 35996, 35997,
- 35998, 35999, 36000, 36001, 36002, 36003, 36004, 36005, 36006, 36007,
- 36008, 36009, 36010, 36011, 36012, 36013, 20109, 19980, 20800, 19984,
- 24319, 21317, 19989, 20120, 19998, 39730, 23404, 22121, 20008, 31162,
- 20031, 21269, 20039, 22829, 29243, 21358, 27664, 22239, 32996, 39319,
- 27603, 30590, 40727, 20022, 20127, 40720, 20060, 20073, 20115, 33416,
- 23387, 21868, 22031, 20164, 21389, 21405, 21411, 21413, 21422, 38757,
- 36189, 21274, 21493, 21286, 21294, 21310, 36188, 21350, 21347, 20994,
- 21000, 21006, 21037, 21043, 21055, 21056, 21068, 21086, 21089, 21084,
- 33967, 21117, 21122, 21121, 21136, 21139, 20866, 32596, 20155, 20163,
- 20169, 20162, 20200, 20193, 20203, 20190, 20251, 20211, 20258, 20324,
- 20213, 20261, 20263, 20233, 20267, 20318, 20327, 25912, 20314, 20317,
- 36014, 36015, 36016, 36017, 36018, 36019, 36020, 36021, 36022, 36023,
- 36024, 36025, 36026, 36027, 36028, 36029, 36030, 36031, 36032, 36033,
- 36034, 36035, 36036, 36037, 36038, 36039, 36040, 36041, 36042, 36043,
- 36044, 36045, 36046, 36047, 36048, 36049, 36050, 36051, 36052, 36053,
- 36054, 36055, 36056, 36057, 36058, 36059, 36060, 36061, 36062, 36063,
- 36064, 36065, 36066, 36067, 36068, 36069, 36070, 36071, 36072, 36073,
- 36074, 36075, 36076, 36077, 36078, 36079, 36080, 36081, 36082, 36083,
- 36084, 36085, 36086, 36087, 36088, 36089, 36090, 36091, 36092, 36093,
- 36094, 36095, 36096, 36097, 36098, 36099, 36100, 36101, 36102, 36103,
- 36104, 36105, 36106, 36107, 36108, 36109, 20319, 20311, 20274, 20285,
- 20342, 20340, 20369, 20361, 20355, 20367, 20350, 20347, 20394, 20348,
- 20396, 20372, 20454, 20456, 20458, 20421, 20442, 20451, 20444, 20433,
- 20447, 20472, 20521, 20556, 20467, 20524, 20495, 20526, 20525, 20478,
- 20508, 20492, 20517, 20520, 20606, 20547, 20565, 20552, 20558, 20588,
- 20603, 20645, 20647, 20649, 20666, 20694, 20742, 20717, 20716, 20710,
- 20718, 20743, 20747, 20189, 27709, 20312, 20325, 20430, 40864, 27718,
- 31860, 20846, 24061, 40649, 39320, 20865, 22804, 21241, 21261, 35335,
- 21264, 20971, 22809, 20821, 20128, 20822, 20147, 34926, 34980, 20149,
- 33044, 35026, 31104, 23348, 34819, 32696, 20907, 20913, 20925, 20924,
- 36110, 36111, 36112, 36113, 36114, 36115, 36116, 36117, 36118, 36119,
- 36120, 36121, 36122, 36123, 36124, 36128, 36177, 36178, 36183, 36191,
- 36197, 36200, 36201, 36202, 36204, 36206, 36207, 36209, 36210, 36216,
- 36217, 36218, 36219, 36220, 36221, 36222, 36223, 36224, 36226, 36227,
- 36230, 36231, 36232, 36233, 36236, 36237, 36238, 36239, 36240, 36242,
- 36243, 36245, 36246, 36247, 36248, 36249, 36250, 36251, 36252, 36253,
- 36254, 36256, 36257, 36258, 36260, 36261, 36262, 36263, 36264, 36265,
- 36266, 36267, 36268, 36269, 36270, 36271, 36272, 36274, 36278, 36279,
- 36281, 36283, 36285, 36288, 36289, 36290, 36293, 36295, 36296, 36297,
- 36298, 36301, 36304, 36306, 36307, 36308, 20935, 20886, 20898, 20901,
- 35744, 35750, 35751, 35754, 35764, 35765, 35767, 35778, 35779, 35787,
- 35791, 35790, 35794, 35795, 35796, 35798, 35800, 35801, 35804, 35807,
- 35808, 35812, 35816, 35817, 35822, 35824, 35827, 35830, 35833, 35836,
- 35839, 35840, 35842, 35844, 35847, 35852, 35855, 35857, 35858, 35860,
- 35861, 35862, 35865, 35867, 35864, 35869, 35871, 35872, 35873, 35877,
- 35879, 35882, 35883, 35886, 35887, 35890, 35891, 35893, 35894, 21353,
- 21370, 38429, 38434, 38433, 38449, 38442, 38461, 38460, 38466, 38473,
- 38484, 38495, 38503, 38508, 38514, 38516, 38536, 38541, 38551, 38576,
- 37015, 37019, 37021, 37017, 37036, 37025, 37044, 37043, 37046, 37050,
- 36309, 36312, 36313, 36316, 36320, 36321, 36322, 36325, 36326, 36327,
- 36329, 36333, 36334, 36336, 36337, 36338, 36340, 36342, 36348, 36350,
- 36351, 36352, 36353, 36354, 36355, 36356, 36358, 36359, 36360, 36363,
- 36365, 36366, 36368, 36369, 36370, 36371, 36373, 36374, 36375, 36376,
- 36377, 36378, 36379, 36380, 36384, 36385, 36388, 36389, 36390, 36391,
- 36392, 36395, 36397, 36400, 36402, 36403, 36404, 36406, 36407, 36408,
- 36411, 36412, 36414, 36415, 36419, 36421, 36422, 36428, 36429, 36430,
- 36431, 36432, 36435, 36436, 36437, 36438, 36439, 36440, 36442, 36443,
- 36444, 36445, 36446, 36447, 36448, 36449, 36450, 36451, 36452, 36453,
- 36455, 36456, 36458, 36459, 36462, 36465, 37048, 37040, 37071, 37061,
- 37054, 37072, 37060, 37063, 37075, 37094, 37090, 37084, 37079, 37083,
- 37099, 37103, 37118, 37124, 37154, 37150, 37155, 37169, 37167, 37177,
- 37187, 37190, 21005, 22850, 21154, 21164, 21165, 21182, 21759, 21200,
- 21206, 21232, 21471, 29166, 30669, 24308, 20981, 20988, 39727, 21430,
- 24321, 30042, 24047, 22348, 22441, 22433, 22654, 22716, 22725, 22737,
- 22313, 22316, 22314, 22323, 22329, 22318, 22319, 22364, 22331, 22338,
- 22377, 22405, 22379, 22406, 22396, 22395, 22376, 22381, 22390, 22387,
- 22445, 22436, 22412, 22450, 22479, 22439, 22452, 22419, 22432, 22485,
- 22488, 22490, 22489, 22482, 22456, 22516, 22511, 22520, 22500, 22493,
- 36467, 36469, 36471, 36472, 36473, 36474, 36475, 36477, 36478, 36480,
- 36482, 36483, 36484, 36486, 36488, 36489, 36490, 36491, 36492, 36493,
- 36494, 36497, 36498, 36499, 36501, 36502, 36503, 36504, 36505, 36506,
- 36507, 36509, 36511, 36512, 36513, 36514, 36515, 36516, 36517, 36518,
- 36519, 36520, 36521, 36522, 36525, 36526, 36528, 36529, 36531, 36532,
- 36533, 36534, 36535, 36536, 36537, 36539, 36540, 36541, 36542, 36543,
- 36544, 36545, 36546, 36547, 36548, 36549, 36550, 36551, 36552, 36553,
- 36554, 36555, 36556, 36557, 36559, 36560, 36561, 36562, 36563, 36564,
- 36565, 36566, 36567, 36568, 36569, 36570, 36571, 36572, 36573, 36574,
- 36575, 36576, 36577, 36578, 36579, 36580, 22539, 22541, 22525, 22509,
- 22528, 22558, 22553, 22596, 22560, 22629, 22636, 22657, 22665, 22682,
- 22656, 39336, 40729, 25087, 33401, 33405, 33407, 33423, 33418, 33448,
- 33412, 33422, 33425, 33431, 33433, 33451, 33464, 33470, 33456, 33480,
- 33482, 33507, 33432, 33463, 33454, 33483, 33484, 33473, 33449, 33460,
- 33441, 33450, 33439, 33476, 33486, 33444, 33505, 33545, 33527, 33508,
- 33551, 33543, 33500, 33524, 33490, 33496, 33548, 33531, 33491, 33553,
- 33562, 33542, 33556, 33557, 33504, 33493, 33564, 33617, 33627, 33628,
- 33544, 33682, 33596, 33588, 33585, 33691, 33630, 33583, 33615, 33607,
- 33603, 33631, 33600, 33559, 33632, 33581, 33594, 33587, 33638, 33637,
- 36581, 36582, 36583, 36584, 36585, 36586, 36587, 36588, 36589, 36590,
- 36591, 36592, 36593, 36594, 36595, 36596, 36597, 36598, 36599, 36600,
- 36601, 36602, 36603, 36604, 36605, 36606, 36607, 36608, 36609, 36610,
- 36611, 36612, 36613, 36614, 36615, 36616, 36617, 36618, 36619, 36620,
- 36621, 36622, 36623, 36624, 36625, 36626, 36627, 36628, 36629, 36630,
- 36631, 36632, 36633, 36634, 36635, 36636, 36637, 36638, 36639, 36640,
- 36641, 36642, 36643, 36644, 36645, 36646, 36647, 36648, 36649, 36650,
- 36651, 36652, 36653, 36654, 36655, 36656, 36657, 36658, 36659, 36660,
- 36661, 36662, 36663, 36664, 36665, 36666, 36667, 36668, 36669, 36670,
- 36671, 36672, 36673, 36674, 36675, 36676, 33640, 33563, 33641, 33644,
- 33642, 33645, 33646, 33712, 33656, 33715, 33716, 33696, 33706, 33683,
- 33692, 33669, 33660, 33718, 33705, 33661, 33720, 33659, 33688, 33694,
- 33704, 33722, 33724, 33729, 33793, 33765, 33752, 22535, 33816, 33803,
- 33757, 33789, 33750, 33820, 33848, 33809, 33798, 33748, 33759, 33807,
- 33795, 33784, 33785, 33770, 33733, 33728, 33830, 33776, 33761, 33884,
- 33873, 33882, 33881, 33907, 33927, 33928, 33914, 33929, 33912, 33852,
- 33862, 33897, 33910, 33932, 33934, 33841, 33901, 33985, 33997, 34000,
- 34022, 33981, 34003, 33994, 33983, 33978, 34016, 33953, 33977, 33972,
- 33943, 34021, 34019, 34060, 29965, 34104, 34032, 34105, 34079, 34106,
- 36677, 36678, 36679, 36680, 36681, 36682, 36683, 36684, 36685, 36686,
- 36687, 36688, 36689, 36690, 36691, 36692, 36693, 36694, 36695, 36696,
- 36697, 36698, 36699, 36700, 36701, 36702, 36703, 36704, 36705, 36706,
- 36707, 36708, 36709, 36714, 36736, 36748, 36754, 36765, 36768, 36769,
- 36770, 36772, 36773, 36774, 36775, 36778, 36780, 36781, 36782, 36783,
- 36786, 36787, 36788, 36789, 36791, 36792, 36794, 36795, 36796, 36799,
- 36800, 36803, 36806, 36809, 36810, 36811, 36812, 36813, 36815, 36818,
- 36822, 36823, 36826, 36832, 36833, 36835, 36839, 36844, 36847, 36849,
- 36850, 36852, 36853, 36854, 36858, 36859, 36860, 36862, 36863, 36871,
- 36872, 36876, 36878, 36883, 36885, 36888, 34134, 34107, 34047, 34044,
- 34137, 34120, 34152, 34148, 34142, 34170, 30626, 34115, 34162, 34171,
- 34212, 34216, 34183, 34191, 34169, 34222, 34204, 34181, 34233, 34231,
- 34224, 34259, 34241, 34268, 34303, 34343, 34309, 34345, 34326, 34364,
- 24318, 24328, 22844, 22849, 32823, 22869, 22874, 22872, 21263, 23586,
- 23589, 23596, 23604, 25164, 25194, 25247, 25275, 25290, 25306, 25303,
- 25326, 25378, 25334, 25401, 25419, 25411, 25517, 25590, 25457, 25466,
- 25486, 25524, 25453, 25516, 25482, 25449, 25518, 25532, 25586, 25592,
- 25568, 25599, 25540, 25566, 25550, 25682, 25542, 25534, 25669, 25665,
- 25611, 25627, 25632, 25612, 25638, 25633, 25694, 25732, 25709, 25750,
- 36889, 36892, 36899, 36900, 36901, 36903, 36904, 36905, 36906, 36907,
- 36908, 36912, 36913, 36914, 36915, 36916, 36919, 36921, 36922, 36925,
- 36927, 36928, 36931, 36933, 36934, 36936, 36937, 36938, 36939, 36940,
- 36942, 36948, 36949, 36950, 36953, 36954, 36956, 36957, 36958, 36959,
- 36960, 36961, 36964, 36966, 36967, 36969, 36970, 36971, 36972, 36975,
- 36976, 36977, 36978, 36979, 36982, 36983, 36984, 36985, 36986, 36987,
- 36988, 36990, 36993, 36996, 36997, 36998, 36999, 37001, 37002, 37004,
- 37005, 37006, 37007, 37008, 37010, 37012, 37014, 37016, 37018, 37020,
- 37022, 37023, 37024, 37028, 37029, 37031, 37032, 37033, 37035, 37037,
- 37042, 37047, 37052, 37053, 37055, 37056, 25722, 25783, 25784, 25753,
- 25786, 25792, 25808, 25815, 25828, 25826, 25865, 25893, 25902, 24331,
- 24530, 29977, 24337, 21343, 21489, 21501, 21481, 21480, 21499, 21522,
- 21526, 21510, 21579, 21586, 21587, 21588, 21590, 21571, 21537, 21591,
- 21593, 21539, 21554, 21634, 21652, 21623, 21617, 21604, 21658, 21659,
- 21636, 21622, 21606, 21661, 21712, 21677, 21698, 21684, 21714, 21671,
- 21670, 21715, 21716, 21618, 21667, 21717, 21691, 21695, 21708, 21721,
- 21722, 21724, 21673, 21674, 21668, 21725, 21711, 21726, 21787, 21735,
- 21792, 21757, 21780, 21747, 21794, 21795, 21775, 21777, 21799, 21802,
- 21863, 21903, 21941, 21833, 21869, 21825, 21845, 21823, 21840, 21820,
- 37058, 37059, 37062, 37064, 37065, 37067, 37068, 37069, 37074, 37076,
- 37077, 37078, 37080, 37081, 37082, 37086, 37087, 37088, 37091, 37092,
- 37093, 37097, 37098, 37100, 37102, 37104, 37105, 37106, 37107, 37109,
- 37110, 37111, 37113, 37114, 37115, 37116, 37119, 37120, 37121, 37123,
- 37125, 37126, 37127, 37128, 37129, 37130, 37131, 37132, 37133, 37134,
- 37135, 37136, 37137, 37138, 37139, 37140, 37141, 37142, 37143, 37144,
- 37146, 37147, 37148, 37149, 37151, 37152, 37153, 37156, 37157, 37158,
- 37159, 37160, 37161, 37162, 37163, 37164, 37165, 37166, 37168, 37170,
- 37171, 37172, 37173, 37174, 37175, 37176, 37178, 37179, 37180, 37181,
- 37182, 37183, 37184, 37185, 37186, 37188, 21815, 21846, 21877, 21878,
- 21879, 21811, 21808, 21852, 21899, 21970, 21891, 21937, 21945, 21896,
- 21889, 21919, 21886, 21974, 21905, 21883, 21983, 21949, 21950, 21908,
- 21913, 21994, 22007, 21961, 22047, 21969, 21995, 21996, 21972, 21990,
- 21981, 21956, 21999, 21989, 22002, 22003, 21964, 21965, 21992, 22005,
- 21988, 36756, 22046, 22024, 22028, 22017, 22052, 22051, 22014, 22016,
- 22055, 22061, 22104, 22073, 22103, 22060, 22093, 22114, 22105, 22108,
- 22092, 22100, 22150, 22116, 22129, 22123, 22139, 22140, 22149, 22163,
- 22191, 22228, 22231, 22237, 22241, 22261, 22251, 22265, 22271, 22276,
- 22282, 22281, 22300, 24079, 24089, 24084, 24081, 24113, 24123, 24124,
- 37189, 37191, 37192, 37201, 37203, 37204, 37205, 37206, 37208, 37209,
- 37211, 37212, 37215, 37216, 37222, 37223, 37224, 37227, 37229, 37235,
- 37242, 37243, 37244, 37248, 37249, 37250, 37251, 37252, 37254, 37256,
- 37258, 37262, 37263, 37267, 37268, 37269, 37270, 37271, 37272, 37273,
- 37276, 37277, 37278, 37279, 37280, 37281, 37284, 37285, 37286, 37287,
- 37288, 37289, 37291, 37292, 37296, 37297, 37298, 37299, 37302, 37303,
- 37304, 37305, 37307, 37308, 37309, 37310, 37311, 37312, 37313, 37314,
- 37315, 37316, 37317, 37318, 37320, 37323, 37328, 37330, 37331, 37332,
- 37333, 37334, 37335, 37336, 37337, 37338, 37339, 37341, 37342, 37343,
- 37344, 37345, 37346, 37347, 37348, 37349, 24119, 24132, 24148, 24155,
- 24158, 24161, 23692, 23674, 23693, 23696, 23702, 23688, 23704, 23705,
- 23697, 23706, 23708, 23733, 23714, 23741, 23724, 23723, 23729, 23715,
- 23745, 23735, 23748, 23762, 23780, 23755, 23781, 23810, 23811, 23847,
- 23846, 23854, 23844, 23838, 23814, 23835, 23896, 23870, 23860, 23869,
- 23916, 23899, 23919, 23901, 23915, 23883, 23882, 23913, 23924, 23938,
- 23961, 23965, 35955, 23991, 24005, 24435, 24439, 24450, 24455, 24457,
- 24460, 24469, 24473, 24476, 24488, 24493, 24501, 24508, 34914, 24417,
- 29357, 29360, 29364, 29367, 29368, 29379, 29377, 29390, 29389, 29394,
- 29416, 29423, 29417, 29426, 29428, 29431, 29441, 29427, 29443, 29434,
- 37350, 37351, 37352, 37353, 37354, 37355, 37356, 37357, 37358, 37359,
- 37360, 37361, 37362, 37363, 37364, 37365, 37366, 37367, 37368, 37369,
- 37370, 37371, 37372, 37373, 37374, 37375, 37376, 37377, 37378, 37379,
- 37380, 37381, 37382, 37383, 37384, 37385, 37386, 37387, 37388, 37389,
- 37390, 37391, 37392, 37393, 37394, 37395, 37396, 37397, 37398, 37399,
- 37400, 37401, 37402, 37403, 37404, 37405, 37406, 37407, 37408, 37409,
- 37410, 37411, 37412, 37413, 37414, 37415, 37416, 37417, 37418, 37419,
- 37420, 37421, 37422, 37423, 37424, 37425, 37426, 37427, 37428, 37429,
- 37430, 37431, 37432, 37433, 37434, 37435, 37436, 37437, 37438, 37439,
- 37440, 37441, 37442, 37443, 37444, 37445, 29435, 29463, 29459, 29473,
- 29450, 29470, 29469, 29461, 29474, 29497, 29477, 29484, 29496, 29489,
- 29520, 29517, 29527, 29536, 29548, 29551, 29566, 33307, 22821, 39143,
- 22820, 22786, 39267, 39271, 39272, 39273, 39274, 39275, 39276, 39284,
- 39287, 39293, 39296, 39300, 39303, 39306, 39309, 39312, 39313, 39315,
- 39316, 39317, 24192, 24209, 24203, 24214, 24229, 24224, 24249, 24245,
- 24254, 24243, 36179, 24274, 24273, 24283, 24296, 24298, 33210, 24516,
- 24521, 24534, 24527, 24579, 24558, 24580, 24545, 24548, 24574, 24581,
- 24582, 24554, 24557, 24568, 24601, 24629, 24614, 24603, 24591, 24589,
- 24617, 24619, 24586, 24639, 24609, 24696, 24697, 24699, 24698, 24642,
- 37446, 37447, 37448, 37449, 37450, 37451, 37452, 37453, 37454, 37455,
- 37456, 37457, 37458, 37459, 37460, 37461, 37462, 37463, 37464, 37465,
- 37466, 37467, 37468, 37469, 37470, 37471, 37472, 37473, 37474, 37475,
- 37476, 37477, 37478, 37479, 37480, 37481, 37482, 37483, 37484, 37485,
- 37486, 37487, 37488, 37489, 37490, 37491, 37493, 37494, 37495, 37496,
- 37497, 37498, 37499, 37500, 37501, 37502, 37503, 37504, 37505, 37506,
- 37507, 37508, 37509, 37510, 37511, 37512, 37513, 37514, 37515, 37516,
- 37517, 37519, 37520, 37521, 37522, 37523, 37524, 37525, 37526, 37527,
- 37528, 37529, 37530, 37531, 37532, 37533, 37534, 37535, 37536, 37537,
- 37538, 37539, 37540, 37541, 37542, 37543, 24682, 24701, 24726, 24730,
- 24749, 24733, 24707, 24722, 24716, 24731, 24812, 24763, 24753, 24797,
- 24792, 24774, 24794, 24756, 24864, 24870, 24853, 24867, 24820, 24832,
- 24846, 24875, 24906, 24949, 25004, 24980, 24999, 25015, 25044, 25077,
- 24541, 38579, 38377, 38379, 38385, 38387, 38389, 38390, 38396, 38398,
- 38403, 38404, 38406, 38408, 38410, 38411, 38412, 38413, 38415, 38418,
- 38421, 38422, 38423, 38425, 38426, 20012, 29247, 25109, 27701, 27732,
- 27740, 27722, 27811, 27781, 27792, 27796, 27788, 27752, 27753, 27764,
- 27766, 27782, 27817, 27856, 27860, 27821, 27895, 27896, 27889, 27863,
- 27826, 27872, 27862, 27898, 27883, 27886, 27825, 27859, 27887, 27902,
- 37544, 37545, 37546, 37547, 37548, 37549, 37551, 37552, 37553, 37554,
- 37555, 37556, 37557, 37558, 37559, 37560, 37561, 37562, 37563, 37564,
- 37565, 37566, 37567, 37568, 37569, 37570, 37571, 37572, 37573, 37574,
- 37575, 37577, 37578, 37579, 37580, 37581, 37582, 37583, 37584, 37585,
- 37586, 37587, 37588, 37589, 37590, 37591, 37592, 37593, 37594, 37595,
- 37596, 37597, 37598, 37599, 37600, 37601, 37602, 37603, 37604, 37605,
- 37606, 37607, 37608, 37609, 37610, 37611, 37612, 37613, 37614, 37615,
- 37616, 37617, 37618, 37619, 37620, 37621, 37622, 37623, 37624, 37625,
- 37626, 37627, 37628, 37629, 37630, 37631, 37632, 37633, 37634, 37635,
- 37636, 37637, 37638, 37639, 37640, 37641, 27961, 27943, 27916, 27971,
- 27976, 27911, 27908, 27929, 27918, 27947, 27981, 27950, 27957, 27930,
- 27983, 27986, 27988, 27955, 28049, 28015, 28062, 28064, 27998, 28051,
- 28052, 27996, 28000, 28028, 28003, 28186, 28103, 28101, 28126, 28174,
- 28095, 28128, 28177, 28134, 28125, 28121, 28182, 28075, 28172, 28078,
- 28203, 28270, 28238, 28267, 28338, 28255, 28294, 28243, 28244, 28210,
- 28197, 28228, 28383, 28337, 28312, 28384, 28461, 28386, 28325, 28327,
- 28349, 28347, 28343, 28375, 28340, 28367, 28303, 28354, 28319, 28514,
- 28486, 28487, 28452, 28437, 28409, 28463, 28470, 28491, 28532, 28458,
- 28425, 28457, 28553, 28557, 28556, 28536, 28530, 28540, 28538, 28625,
- 37642, 37643, 37644, 37645, 37646, 37647, 37648, 37649, 37650, 37651,
- 37652, 37653, 37654, 37655, 37656, 37657, 37658, 37659, 37660, 37661,
- 37662, 37663, 37664, 37665, 37666, 37667, 37668, 37669, 37670, 37671,
- 37672, 37673, 37674, 37675, 37676, 37677, 37678, 37679, 37680, 37681,
- 37682, 37683, 37684, 37685, 37686, 37687, 37688, 37689, 37690, 37691,
- 37692, 37693, 37695, 37696, 37697, 37698, 37699, 37700, 37701, 37702,
- 37703, 37704, 37705, 37706, 37707, 37708, 37709, 37710, 37711, 37712,
- 37713, 37714, 37715, 37716, 37717, 37718, 37719, 37720, 37721, 37722,
- 37723, 37724, 37725, 37726, 37727, 37728, 37729, 37730, 37731, 37732,
- 37733, 37734, 37735, 37736, 37737, 37739, 28617, 28583, 28601, 28598,
- 28610, 28641, 28654, 28638, 28640, 28655, 28698, 28707, 28699, 28729,
- 28725, 28751, 28766, 23424, 23428, 23445, 23443, 23461, 23480, 29999,
- 39582, 25652, 23524, 23534, 35120, 23536, 36423, 35591, 36790, 36819,
- 36821, 36837, 36846, 36836, 36841, 36838, 36851, 36840, 36869, 36868,
- 36875, 36902, 36881, 36877, 36886, 36897, 36917, 36918, 36909, 36911,
- 36932, 36945, 36946, 36944, 36968, 36952, 36962, 36955, 26297, 36980,
- 36989, 36994, 37000, 36995, 37003, 24400, 24407, 24406, 24408, 23611,
- 21675, 23632, 23641, 23409, 23651, 23654, 32700, 24362, 24361, 24365,
- 33396, 24380, 39739, 23662, 22913, 22915, 22925, 22953, 22954, 22947,
- 37740, 37741, 37742, 37743, 37744, 37745, 37746, 37747, 37748, 37749,
- 37750, 37751, 37752, 37753, 37754, 37755, 37756, 37757, 37758, 37759,
- 37760, 37761, 37762, 37763, 37764, 37765, 37766, 37767, 37768, 37769,
- 37770, 37771, 37772, 37773, 37774, 37776, 37777, 37778, 37779, 37780,
- 37781, 37782, 37783, 37784, 37785, 37786, 37787, 37788, 37789, 37790,
- 37791, 37792, 37793, 37794, 37795, 37796, 37797, 37798, 37799, 37800,
- 37801, 37802, 37803, 37804, 37805, 37806, 37807, 37808, 37809, 37810,
- 37811, 37812, 37813, 37814, 37815, 37816, 37817, 37818, 37819, 37820,
- 37821, 37822, 37823, 37824, 37825, 37826, 37827, 37828, 37829, 37830,
- 37831, 37832, 37833, 37835, 37836, 37837, 22935, 22986, 22955, 22942,
- 22948, 22994, 22962, 22959, 22999, 22974, 23045, 23046, 23005, 23048,
- 23011, 23000, 23033, 23052, 23049, 23090, 23092, 23057, 23075, 23059,
- 23104, 23143, 23114, 23125, 23100, 23138, 23157, 33004, 23210, 23195,
- 23159, 23162, 23230, 23275, 23218, 23250, 23252, 23224, 23264, 23267,
- 23281, 23254, 23270, 23256, 23260, 23305, 23319, 23318, 23346, 23351,
- 23360, 23573, 23580, 23386, 23397, 23411, 23377, 23379, 23394, 39541,
- 39543, 39544, 39546, 39551, 39549, 39552, 39553, 39557, 39560, 39562,
- 39568, 39570, 39571, 39574, 39576, 39579, 39580, 39581, 39583, 39584,
- 39586, 39587, 39589, 39591, 32415, 32417, 32419, 32421, 32424, 32425,
- 37838, 37839, 37840, 37841, 37842, 37843, 37844, 37845, 37847, 37848,
- 37849, 37850, 37851, 37852, 37853, 37854, 37855, 37856, 37857, 37858,
- 37859, 37860, 37861, 37862, 37863, 37864, 37865, 37866, 37867, 37868,
- 37869, 37870, 37871, 37872, 37873, 37874, 37875, 37876, 37877, 37878,
- 37879, 37880, 37881, 37882, 37883, 37884, 37885, 37886, 37887, 37888,
- 37889, 37890, 37891, 37892, 37893, 37894, 37895, 37896, 37897, 37898,
- 37899, 37900, 37901, 37902, 37903, 37904, 37905, 37906, 37907, 37908,
- 37909, 37910, 37911, 37912, 37913, 37914, 37915, 37916, 37917, 37918,
- 37919, 37920, 37921, 37922, 37923, 37924, 37925, 37926, 37927, 37928,
- 37929, 37930, 37931, 37932, 37933, 37934, 32429, 32432, 32446, 32448,
- 32449, 32450, 32457, 32459, 32460, 32464, 32468, 32471, 32475, 32480,
- 32481, 32488, 32491, 32494, 32495, 32497, 32498, 32525, 32502, 32506,
- 32507, 32510, 32513, 32514, 32515, 32519, 32520, 32523, 32524, 32527,
- 32529, 32530, 32535, 32537, 32540, 32539, 32543, 32545, 32546, 32547,
- 32548, 32549, 32550, 32551, 32554, 32555, 32556, 32557, 32559, 32560,
- 32561, 32562, 32563, 32565, 24186, 30079, 24027, 30014, 37013, 29582,
- 29585, 29614, 29602, 29599, 29647, 29634, 29649, 29623, 29619, 29632,
- 29641, 29640, 29669, 29657, 39036, 29706, 29673, 29671, 29662, 29626,
- 29682, 29711, 29738, 29787, 29734, 29733, 29736, 29744, 29742, 29740,
- 37935, 37936, 37937, 37938, 37939, 37940, 37941, 37942, 37943, 37944,
- 37945, 37946, 37947, 37948, 37949, 37951, 37952, 37953, 37954, 37955,
- 37956, 37957, 37958, 37959, 37960, 37961, 37962, 37963, 37964, 37965,
- 37966, 37967, 37968, 37969, 37970, 37971, 37972, 37973, 37974, 37975,
- 37976, 37977, 37978, 37979, 37980, 37981, 37982, 37983, 37984, 37985,
- 37986, 37987, 37988, 37989, 37990, 37991, 37992, 37993, 37994, 37996,
- 37997, 37998, 37999, 38000, 38001, 38002, 38003, 38004, 38005, 38006,
- 38007, 38008, 38009, 38010, 38011, 38012, 38013, 38014, 38015, 38016,
- 38017, 38018, 38019, 38020, 38033, 38038, 38040, 38087, 38095, 38099,
- 38100, 38106, 38118, 38139, 38172, 38176, 29723, 29722, 29761, 29788,
- 29783, 29781, 29785, 29815, 29805, 29822, 29852, 29838, 29824, 29825,
- 29831, 29835, 29854, 29864, 29865, 29840, 29863, 29906, 29882, 38890,
- 38891, 38892, 26444, 26451, 26462, 26440, 26473, 26533, 26503, 26474,
- 26483, 26520, 26535, 26485, 26536, 26526, 26541, 26507, 26487, 26492,
- 26608, 26633, 26584, 26634, 26601, 26544, 26636, 26585, 26549, 26586,
- 26547, 26589, 26624, 26563, 26552, 26594, 26638, 26561, 26621, 26674,
- 26675, 26720, 26721, 26702, 26722, 26692, 26724, 26755, 26653, 26709,
- 26726, 26689, 26727, 26688, 26686, 26698, 26697, 26665, 26805, 26767,
- 26740, 26743, 26771, 26731, 26818, 26990, 26876, 26911, 26912, 26873,
- 38183, 38195, 38205, 38211, 38216, 38219, 38229, 38234, 38240, 38254,
- 38260, 38261, 38263, 38264, 38265, 38266, 38267, 38268, 38269, 38270,
- 38272, 38273, 38274, 38275, 38276, 38277, 38278, 38279, 38280, 38281,
- 38282, 38283, 38284, 38285, 38286, 38287, 38288, 38289, 38290, 38291,
- 38292, 38293, 38294, 38295, 38296, 38297, 38298, 38299, 38300, 38301,
- 38302, 38303, 38304, 38305, 38306, 38307, 38308, 38309, 38310, 38311,
- 38312, 38313, 38314, 38315, 38316, 38317, 38318, 38319, 38320, 38321,
- 38322, 38323, 38324, 38325, 38326, 38327, 38328, 38329, 38330, 38331,
- 38332, 38333, 38334, 38335, 38336, 38337, 38338, 38339, 38340, 38341,
- 38342, 38343, 38344, 38345, 38346, 38347, 26916, 26864, 26891, 26881,
- 26967, 26851, 26896, 26993, 26937, 26976, 26946, 26973, 27012, 26987,
- 27008, 27032, 27000, 26932, 27084, 27015, 27016, 27086, 27017, 26982,
- 26979, 27001, 27035, 27047, 27067, 27051, 27053, 27092, 27057, 27073,
- 27082, 27103, 27029, 27104, 27021, 27135, 27183, 27117, 27159, 27160,
- 27237, 27122, 27204, 27198, 27296, 27216, 27227, 27189, 27278, 27257,
- 27197, 27176, 27224, 27260, 27281, 27280, 27305, 27287, 27307, 29495,
- 29522, 27521, 27522, 27527, 27524, 27538, 27539, 27533, 27546, 27547,
- 27553, 27562, 36715, 36717, 36721, 36722, 36723, 36725, 36726, 36728,
- 36727, 36729, 36730, 36732, 36734, 36737, 36738, 36740, 36743, 36747,
- 38348, 38349, 38350, 38351, 38352, 38353, 38354, 38355, 38356, 38357,
- 38358, 38359, 38360, 38361, 38362, 38363, 38364, 38365, 38366, 38367,
- 38368, 38369, 38370, 38371, 38372, 38373, 38374, 38375, 38380, 38399,
- 38407, 38419, 38424, 38427, 38430, 38432, 38435, 38436, 38437, 38438,
- 38439, 38440, 38441, 38443, 38444, 38445, 38447, 38448, 38455, 38456,
- 38457, 38458, 38462, 38465, 38467, 38474, 38478, 38479, 38481, 38482,
- 38483, 38486, 38487, 38488, 38489, 38490, 38492, 38493, 38494, 38496,
- 38499, 38501, 38502, 38507, 38509, 38510, 38511, 38512, 38513, 38515,
- 38520, 38521, 38522, 38523, 38524, 38525, 38526, 38527, 38528, 38529,
- 38530, 38531, 38532, 38535, 38537, 38538, 36749, 36750, 36751, 36760,
- 36762, 36558, 25099, 25111, 25115, 25119, 25122, 25121, 25125, 25124,
- 25132, 33255, 29935, 29940, 29951, 29967, 29969, 29971, 25908, 26094,
- 26095, 26096, 26122, 26137, 26482, 26115, 26133, 26112, 28805, 26359,
- 26141, 26164, 26161, 26166, 26165, 32774, 26207, 26196, 26177, 26191,
- 26198, 26209, 26199, 26231, 26244, 26252, 26279, 26269, 26302, 26331,
- 26332, 26342, 26345, 36146, 36147, 36150, 36155, 36157, 36160, 36165,
- 36166, 36168, 36169, 36167, 36173, 36181, 36185, 35271, 35274, 35275,
- 35276, 35278, 35279, 35280, 35281, 29294, 29343, 29277, 29286, 29295,
- 29310, 29311, 29316, 29323, 29325, 29327, 29330, 25352, 25394, 25520,
- 38540, 38542, 38545, 38546, 38547, 38549, 38550, 38554, 38555, 38557,
- 38558, 38559, 38560, 38561, 38562, 38563, 38564, 38565, 38566, 38568,
- 38569, 38570, 38571, 38572, 38573, 38574, 38575, 38577, 38578, 38580,
- 38581, 38583, 38584, 38586, 38587, 38591, 38594, 38595, 38600, 38602,
- 38603, 38608, 38609, 38611, 38612, 38614, 38615, 38616, 38617, 38618,
- 38619, 38620, 38621, 38622, 38623, 38625, 38626, 38627, 38628, 38629,
- 38630, 38631, 38635, 38636, 38637, 38638, 38640, 38641, 38642, 38644,
- 38645, 38648, 38650, 38651, 38652, 38653, 38655, 38658, 38659, 38661,
- 38666, 38667, 38668, 38672, 38673, 38674, 38676, 38677, 38679, 38680,
- 38681, 38682, 38683, 38685, 38687, 38688, 25663, 25816, 32772, 27626,
- 27635, 27645, 27637, 27641, 27653, 27655, 27654, 27661, 27669, 27672,
- 27673, 27674, 27681, 27689, 27684, 27690, 27698, 25909, 25941, 25963,
- 29261, 29266, 29270, 29232, 34402, 21014, 32927, 32924, 32915, 32956,
- 26378, 32957, 32945, 32939, 32941, 32948, 32951, 32999, 33000, 33001,
- 33002, 32987, 32962, 32964, 32985, 32973, 32983, 26384, 32989, 33003,
- 33009, 33012, 33005, 33037, 33038, 33010, 33020, 26389, 33042, 35930,
- 33078, 33054, 33068, 33048, 33074, 33096, 33100, 33107, 33140, 33113,
- 33114, 33137, 33120, 33129, 33148, 33149, 33133, 33127, 22605, 23221,
- 33160, 33154, 33169, 28373, 33187, 33194, 33228, 26406, 33226, 33211,
- 38689, 38690, 38691, 38692, 38693, 38694, 38695, 38696, 38697, 38699,
- 38700, 38702, 38703, 38705, 38707, 38708, 38709, 38710, 38711, 38714,
- 38715, 38716, 38717, 38719, 38720, 38721, 38722, 38723, 38724, 38725,
- 38726, 38727, 38728, 38729, 38730, 38731, 38732, 38733, 38734, 38735,
- 38736, 38737, 38740, 38741, 38743, 38744, 38746, 38748, 38749, 38751,
- 38755, 38756, 38758, 38759, 38760, 38762, 38763, 38764, 38765, 38766,
- 38767, 38768, 38769, 38770, 38773, 38775, 38776, 38777, 38778, 38779,
- 38781, 38782, 38783, 38784, 38785, 38786, 38787, 38788, 38790, 38791,
- 38792, 38793, 38794, 38796, 38798, 38799, 38800, 38803, 38805, 38806,
- 38807, 38809, 38810, 38811, 38812, 38813, 33217, 33190, 27428, 27447,
- 27449, 27459, 27462, 27481, 39121, 39122, 39123, 39125, 39129, 39130,
- 27571, 24384, 27586, 35315, 26000, 40785, 26003, 26044, 26054, 26052,
- 26051, 26060, 26062, 26066, 26070, 28800, 28828, 28822, 28829, 28859,
- 28864, 28855, 28843, 28849, 28904, 28874, 28944, 28947, 28950, 28975,
- 28977, 29043, 29020, 29032, 28997, 29042, 29002, 29048, 29050, 29080,
- 29107, 29109, 29096, 29088, 29152, 29140, 29159, 29177, 29213, 29224,
- 28780, 28952, 29030, 29113, 25150, 25149, 25155, 25160, 25161, 31035,
- 31040, 31046, 31049, 31067, 31068, 31059, 31066, 31074, 31063, 31072,
- 31087, 31079, 31098, 31109, 31114, 31130, 31143, 31155, 24529, 24528,
- 38814, 38815, 38817, 38818, 38820, 38821, 38822, 38823, 38824, 38825,
- 38826, 38828, 38830, 38832, 38833, 38835, 38837, 38838, 38839, 38840,
- 38841, 38842, 38843, 38844, 38845, 38846, 38847, 38848, 38849, 38850,
- 38851, 38852, 38853, 38854, 38855, 38856, 38857, 38858, 38859, 38860,
- 38861, 38862, 38863, 38864, 38865, 38866, 38867, 38868, 38869, 38870,
- 38871, 38872, 38873, 38874, 38875, 38876, 38877, 38878, 38879, 38880,
- 38881, 38882, 38883, 38884, 38885, 38888, 38894, 38895, 38896, 38897,
- 38898, 38900, 38903, 38904, 38905, 38906, 38907, 38908, 38909, 38910,
- 38911, 38912, 38913, 38914, 38915, 38916, 38917, 38918, 38919, 38920,
- 38921, 38922, 38923, 38924, 38925, 38926, 24636, 24669, 24666, 24679,
- 24641, 24665, 24675, 24747, 24838, 24845, 24925, 25001, 24989, 25035,
- 25041, 25094, 32896, 32895, 27795, 27894, 28156, 30710, 30712, 30720,
- 30729, 30743, 30744, 30737, 26027, 30765, 30748, 30749, 30777, 30778,
- 30779, 30751, 30780, 30757, 30764, 30755, 30761, 30798, 30829, 30806,
- 30807, 30758, 30800, 30791, 30796, 30826, 30875, 30867, 30874, 30855,
- 30876, 30881, 30883, 30898, 30905, 30885, 30932, 30937, 30921, 30956,
- 30962, 30981, 30964, 30995, 31012, 31006, 31028, 40859, 40697, 40699,
- 40700, 30449, 30468, 30477, 30457, 30471, 30472, 30490, 30498, 30489,
- 30509, 30502, 30517, 30520, 30544, 30545, 30535, 30531, 30554, 30568,
- 38927, 38928, 38929, 38930, 38931, 38932, 38933, 38934, 38935, 38936,
- 38937, 38938, 38939, 38940, 38941, 38942, 38943, 38944, 38945, 38946,
- 38947, 38948, 38949, 38950, 38951, 38952, 38953, 38954, 38955, 38956,
- 38957, 38958, 38959, 38960, 38961, 38962, 38963, 38964, 38965, 38966,
- 38967, 38968, 38969, 38970, 38971, 38972, 38973, 38974, 38975, 38976,
- 38977, 38978, 38979, 38980, 38981, 38982, 38983, 38984, 38985, 38986,
- 38987, 38988, 38989, 38990, 38991, 38992, 38993, 38994, 38995, 38996,
- 38997, 38998, 38999, 39000, 39001, 39002, 39003, 39004, 39005, 39006,
- 39007, 39008, 39009, 39010, 39011, 39012, 39013, 39014, 39015, 39016,
- 39017, 39018, 39019, 39020, 39021, 39022, 30562, 30565, 30591, 30605,
- 30589, 30592, 30604, 30609, 30623, 30624, 30640, 30645, 30653, 30010,
- 30016, 30030, 30027, 30024, 30043, 30066, 30073, 30083, 32600, 32609,
- 32607, 35400, 32616, 32628, 32625, 32633, 32641, 32638, 30413, 30437,
- 34866, 38021, 38022, 38023, 38027, 38026, 38028, 38029, 38031, 38032,
- 38036, 38039, 38037, 38042, 38043, 38044, 38051, 38052, 38059, 38058,
- 38061, 38060, 38063, 38064, 38066, 38068, 38070, 38071, 38072, 38073,
- 38074, 38076, 38077, 38079, 38084, 38088, 38089, 38090, 38091, 38092,
- 38093, 38094, 38096, 38097, 38098, 38101, 38102, 38103, 38105, 38104,
- 38107, 38110, 38111, 38112, 38114, 38116, 38117, 38119, 38120, 38122,
- 39023, 39024, 39025, 39026, 39027, 39028, 39051, 39054, 39058, 39061,
- 39065, 39075, 39080, 39081, 39082, 39083, 39084, 39085, 39086, 39087,
- 39088, 39089, 39090, 39091, 39092, 39093, 39094, 39095, 39096, 39097,
- 39098, 39099, 39100, 39101, 39102, 39103, 39104, 39105, 39106, 39107,
- 39108, 39109, 39110, 39111, 39112, 39113, 39114, 39115, 39116, 39117,
- 39119, 39120, 39124, 39126, 39127, 39131, 39132, 39133, 39136, 39137,
- 39138, 39139, 39140, 39141, 39142, 39145, 39146, 39147, 39148, 39149,
- 39150, 39151, 39152, 39153, 39154, 39155, 39156, 39157, 39158, 39159,
- 39160, 39161, 39162, 39163, 39164, 39165, 39166, 39167, 39168, 39169,
- 39170, 39171, 39172, 39173, 39174, 39175, 38121, 38123, 38126, 38127,
- 38131, 38132, 38133, 38135, 38137, 38140, 38141, 38143, 38147, 38146,
- 38150, 38151, 38153, 38154, 38157, 38158, 38159, 38162, 38163, 38164,
- 38165, 38166, 38168, 38171, 38173, 38174, 38175, 38178, 38186, 38187,
- 38185, 38188, 38193, 38194, 38196, 38198, 38199, 38200, 38204, 38206,
- 38207, 38210, 38197, 38212, 38213, 38214, 38217, 38220, 38222, 38223,
- 38226, 38227, 38228, 38230, 38231, 38232, 38233, 38235, 38238, 38239,
- 38237, 38241, 38242, 38244, 38245, 38246, 38247, 38248, 38249, 38250,
- 38251, 38252, 38255, 38257, 38258, 38259, 38202, 30695, 30700, 38601,
- 31189, 31213, 31203, 31211, 31238, 23879, 31235, 31234, 31262, 31252,
- 39176, 39177, 39178, 39179, 39180, 39182, 39183, 39185, 39186, 39187,
- 39188, 39189, 39190, 39191, 39192, 39193, 39194, 39195, 39196, 39197,
- 39198, 39199, 39200, 39201, 39202, 39203, 39204, 39205, 39206, 39207,
- 39208, 39209, 39210, 39211, 39212, 39213, 39215, 39216, 39217, 39218,
- 39219, 39220, 39221, 39222, 39223, 39224, 39225, 39226, 39227, 39228,
- 39229, 39230, 39231, 39232, 39233, 39234, 39235, 39236, 39237, 39238,
- 39239, 39240, 39241, 39242, 39243, 39244, 39245, 39246, 39247, 39248,
- 39249, 39250, 39251, 39254, 39255, 39256, 39257, 39258, 39259, 39260,
- 39261, 39262, 39263, 39264, 39265, 39266, 39268, 39270, 39283, 39288,
- 39289, 39291, 39294, 39298, 39299, 39305, 31289, 31287, 31313, 40655,
- 39333, 31344, 30344, 30350, 30355, 30361, 30372, 29918, 29920, 29996,
- 40480, 40482, 40488, 40489, 40490, 40491, 40492, 40498, 40497, 40502,
- 40504, 40503, 40505, 40506, 40510, 40513, 40514, 40516, 40518, 40519,
- 40520, 40521, 40523, 40524, 40526, 40529, 40533, 40535, 40538, 40539,
- 40540, 40542, 40547, 40550, 40551, 40552, 40553, 40554, 40555, 40556,
- 40561, 40557, 40563, 30098, 30100, 30102, 30112, 30109, 30124, 30115,
- 30131, 30132, 30136, 30148, 30129, 30128, 30147, 30146, 30166, 30157,
- 30179, 30184, 30182, 30180, 30187, 30183, 30211, 30193, 30204, 30207,
- 30224, 30208, 30213, 30220, 30231, 30218, 30245, 30232, 30229, 30233,
- 39308, 39310, 39322, 39323, 39324, 39325, 39326, 39327, 39328, 39329,
- 39330, 39331, 39332, 39334, 39335, 39337, 39338, 39339, 39340, 39341,
- 39342, 39343, 39344, 39345, 39346, 39347, 39348, 39349, 39350, 39351,
- 39352, 39353, 39354, 39355, 39356, 39357, 39358, 39359, 39360, 39361,
- 39362, 39363, 39364, 39365, 39366, 39367, 39368, 39369, 39370, 39371,
- 39372, 39373, 39374, 39375, 39376, 39377, 39378, 39379, 39380, 39381,
- 39382, 39383, 39384, 39385, 39386, 39387, 39388, 39389, 39390, 39391,
- 39392, 39393, 39394, 39395, 39396, 39397, 39398, 39399, 39400, 39401,
- 39402, 39403, 39404, 39405, 39406, 39407, 39408, 39409, 39410, 39411,
- 39412, 39413, 39414, 39415, 39416, 39417, 30235, 30268, 30242, 30240,
- 30272, 30253, 30256, 30271, 30261, 30275, 30270, 30259, 30285, 30302,
- 30292, 30300, 30294, 30315, 30319, 32714, 31462, 31352, 31353, 31360,
- 31366, 31368, 31381, 31398, 31392, 31404, 31400, 31405, 31411, 34916,
- 34921, 34930, 34941, 34943, 34946, 34978, 35014, 34999, 35004, 35017,
- 35042, 35022, 35043, 35045, 35057, 35098, 35068, 35048, 35070, 35056,
- 35105, 35097, 35091, 35099, 35082, 35124, 35115, 35126, 35137, 35174,
- 35195, 30091, 32997, 30386, 30388, 30684, 32786, 32788, 32790, 32796,
- 32800, 32802, 32805, 32806, 32807, 32809, 32808, 32817, 32779, 32821,
- 32835, 32838, 32845, 32850, 32873, 32881, 35203, 39032, 39040, 39043,
- 39418, 39419, 39420, 39421, 39422, 39423, 39424, 39425, 39426, 39427,
- 39428, 39429, 39430, 39431, 39432, 39433, 39434, 39435, 39436, 39437,
- 39438, 39439, 39440, 39441, 39442, 39443, 39444, 39445, 39446, 39447,
- 39448, 39449, 39450, 39451, 39452, 39453, 39454, 39455, 39456, 39457,
- 39458, 39459, 39460, 39461, 39462, 39463, 39464, 39465, 39466, 39467,
- 39468, 39469, 39470, 39471, 39472, 39473, 39474, 39475, 39476, 39477,
- 39478, 39479, 39480, 39481, 39482, 39483, 39484, 39485, 39486, 39487,
- 39488, 39489, 39490, 39491, 39492, 39493, 39494, 39495, 39496, 39497,
- 39498, 39499, 39500, 39501, 39502, 39503, 39504, 39505, 39506, 39507,
- 39508, 39509, 39510, 39511, 39512, 39513, 39049, 39052, 39053, 39055,
- 39060, 39066, 39067, 39070, 39071, 39073, 39074, 39077, 39078, 34381,
- 34388, 34412, 34414, 34431, 34426, 34428, 34427, 34472, 34445, 34443,
- 34476, 34461, 34471, 34467, 34474, 34451, 34473, 34486, 34500, 34485,
- 34510, 34480, 34490, 34481, 34479, 34505, 34511, 34484, 34537, 34545,
- 34546, 34541, 34547, 34512, 34579, 34526, 34548, 34527, 34520, 34513,
- 34563, 34567, 34552, 34568, 34570, 34573, 34569, 34595, 34619, 34590,
- 34597, 34606, 34586, 34622, 34632, 34612, 34609, 34601, 34615, 34623,
- 34690, 34594, 34685, 34686, 34683, 34656, 34672, 34636, 34670, 34699,
- 34643, 34659, 34684, 34660, 34649, 34661, 34707, 34735, 34728, 34770,
- 39514, 39515, 39516, 39517, 39518, 39519, 39520, 39521, 39522, 39523,
- 39524, 39525, 39526, 39527, 39528, 39529, 39530, 39531, 39538, 39555,
- 39561, 39565, 39566, 39572, 39573, 39577, 39590, 39593, 39594, 39595,
- 39596, 39597, 39598, 39599, 39602, 39603, 39604, 39605, 39609, 39611,
- 39613, 39614, 39615, 39619, 39620, 39622, 39623, 39624, 39625, 39626,
- 39629, 39630, 39631, 39632, 39634, 39636, 39637, 39638, 39639, 39641,
- 39642, 39643, 39644, 39645, 39646, 39648, 39650, 39651, 39652, 39653,
- 39655, 39656, 39657, 39658, 39660, 39662, 39664, 39665, 39666, 39667,
- 39668, 39669, 39670, 39671, 39672, 39674, 39676, 39677, 39678, 39679,
- 39680, 39681, 39682, 39684, 39685, 39686, 34758, 34696, 34693, 34733,
- 34711, 34691, 34731, 34789, 34732, 34741, 34739, 34763, 34771, 34749,
- 34769, 34752, 34762, 34779, 34794, 34784, 34798, 34838, 34835, 34814,
- 34826, 34843, 34849, 34873, 34876, 32566, 32578, 32580, 32581, 33296,
- 31482, 31485, 31496, 31491, 31492, 31509, 31498, 31531, 31503, 31559,
- 31544, 31530, 31513, 31534, 31537, 31520, 31525, 31524, 31539, 31550,
- 31518, 31576, 31578, 31557, 31605, 31564, 31581, 31584, 31598, 31611,
- 31586, 31602, 31601, 31632, 31654, 31655, 31672, 31660, 31645, 31656,
- 31621, 31658, 31644, 31650, 31659, 31668, 31697, 31681, 31692, 31709,
- 31706, 31717, 31718, 31722, 31756, 31742, 31740, 31759, 31766, 31755,
- 39687, 39689, 39690, 39691, 39692, 39693, 39694, 39696, 39697, 39698,
- 39700, 39701, 39702, 39703, 39704, 39705, 39706, 39707, 39708, 39709,
- 39710, 39712, 39713, 39714, 39716, 39717, 39718, 39719, 39720, 39721,
- 39722, 39723, 39724, 39725, 39726, 39728, 39729, 39731, 39732, 39733,
- 39734, 39735, 39736, 39737, 39738, 39741, 39742, 39743, 39744, 39750,
- 39754, 39755, 39756, 39758, 39760, 39762, 39763, 39765, 39766, 39767,
- 39768, 39769, 39770, 39771, 39772, 39773, 39774, 39775, 39776, 39777,
- 39778, 39779, 39780, 39781, 39782, 39783, 39784, 39785, 39786, 39787,
- 39788, 39789, 39790, 39791, 39792, 39793, 39794, 39795, 39796, 39797,
- 39798, 39799, 39800, 39801, 39802, 39803, 31775, 31786, 31782, 31800,
- 31809, 31808, 33278, 33281, 33282, 33284, 33260, 34884, 33313, 33314,
- 33315, 33325, 33327, 33320, 33323, 33336, 33339, 33331, 33332, 33342,
- 33348, 33353, 33355, 33359, 33370, 33375, 33384, 34942, 34949, 34952,
- 35032, 35039, 35166, 32669, 32671, 32679, 32687, 32688, 32690, 31868,
- 25929, 31889, 31901, 31900, 31902, 31906, 31922, 31932, 31933, 31937,
- 31943, 31948, 31949, 31944, 31941, 31959, 31976, 33390, 26280, 32703,
- 32718, 32725, 32741, 32737, 32742, 32745, 32750, 32755, 31992, 32119,
- 32166, 32174, 32327, 32411, 40632, 40628, 36211, 36228, 36244, 36241,
- 36273, 36199, 36205, 35911, 35913, 37194, 37200, 37198, 37199, 37220,
- 39804, 39805, 39806, 39807, 39808, 39809, 39810, 39811, 39812, 39813,
- 39814, 39815, 39816, 39817, 39818, 39819, 39820, 39821, 39822, 39823,
- 39824, 39825, 39826, 39827, 39828, 39829, 39830, 39831, 39832, 39833,
- 39834, 39835, 39836, 39837, 39838, 39839, 39840, 39841, 39842, 39843,
- 39844, 39845, 39846, 39847, 39848, 39849, 39850, 39851, 39852, 39853,
- 39854, 39855, 39856, 39857, 39858, 39859, 39860, 39861, 39862, 39863,
- 39864, 39865, 39866, 39867, 39868, 39869, 39870, 39871, 39872, 39873,
- 39874, 39875, 39876, 39877, 39878, 39879, 39880, 39881, 39882, 39883,
- 39884, 39885, 39886, 39887, 39888, 39889, 39890, 39891, 39892, 39893,
- 39894, 39895, 39896, 39897, 39898, 39899, 37218, 37217, 37232, 37225,
- 37231, 37245, 37246, 37234, 37236, 37241, 37260, 37253, 37264, 37261,
- 37265, 37282, 37283, 37290, 37293, 37294, 37295, 37301, 37300, 37306,
- 35925, 40574, 36280, 36331, 36357, 36441, 36457, 36277, 36287, 36284,
- 36282, 36292, 36310, 36311, 36314, 36318, 36302, 36303, 36315, 36294,
- 36332, 36343, 36344, 36323, 36345, 36347, 36324, 36361, 36349, 36372,
- 36381, 36383, 36396, 36398, 36387, 36399, 36410, 36416, 36409, 36405,
- 36413, 36401, 36425, 36417, 36418, 36433, 36434, 36426, 36464, 36470,
- 36476, 36463, 36468, 36485, 36495, 36500, 36496, 36508, 36510, 35960,
- 35970, 35978, 35973, 35992, 35988, 26011, 35286, 35294, 35290, 35292,
- 39900, 39901, 39902, 39903, 39904, 39905, 39906, 39907, 39908, 39909,
- 39910, 39911, 39912, 39913, 39914, 39915, 39916, 39917, 39918, 39919,
- 39920, 39921, 39922, 39923, 39924, 39925, 39926, 39927, 39928, 39929,
- 39930, 39931, 39932, 39933, 39934, 39935, 39936, 39937, 39938, 39939,
- 39940, 39941, 39942, 39943, 39944, 39945, 39946, 39947, 39948, 39949,
- 39950, 39951, 39952, 39953, 39954, 39955, 39956, 39957, 39958, 39959,
- 39960, 39961, 39962, 39963, 39964, 39965, 39966, 39967, 39968, 39969,
- 39970, 39971, 39972, 39973, 39974, 39975, 39976, 39977, 39978, 39979,
- 39980, 39981, 39982, 39983, 39984, 39985, 39986, 39987, 39988, 39989,
- 39990, 39991, 39992, 39993, 39994, 39995, 35301, 35307, 35311, 35390,
- 35622, 38739, 38633, 38643, 38639, 38662, 38657, 38664, 38671, 38670,
- 38698, 38701, 38704, 38718, 40832, 40835, 40837, 40838, 40839, 40840,
- 40841, 40842, 40844, 40702, 40715, 40717, 38585, 38588, 38589, 38606,
- 38610, 30655, 38624, 37518, 37550, 37576, 37694, 37738, 37834, 37775,
- 37950, 37995, 40063, 40066, 40069, 40070, 40071, 40072, 31267, 40075,
- 40078, 40080, 40081, 40082, 40084, 40085, 40090, 40091, 40094, 40095,
- 40096, 40097, 40098, 40099, 40101, 40102, 40103, 40104, 40105, 40107,
- 40109, 40110, 40112, 40113, 40114, 40115, 40116, 40117, 40118, 40119,
- 40122, 40123, 40124, 40125, 40132, 40133, 40134, 40135, 40138, 40139,
- 39996, 39997, 39998, 39999, 40000, 40001, 40002, 40003, 40004, 40005,
- 40006, 40007, 40008, 40009, 40010, 40011, 40012, 40013, 40014, 40015,
- 40016, 40017, 40018, 40019, 40020, 40021, 40022, 40023, 40024, 40025,
- 40026, 40027, 40028, 40029, 40030, 40031, 40032, 40033, 40034, 40035,
- 40036, 40037, 40038, 40039, 40040, 40041, 40042, 40043, 40044, 40045,
- 40046, 40047, 40048, 40049, 40050, 40051, 40052, 40053, 40054, 40055,
- 40056, 40057, 40058, 40059, 40061, 40062, 40064, 40067, 40068, 40073,
- 40074, 40076, 40079, 40083, 40086, 40087, 40088, 40089, 40093, 40106,
- 40108, 40111, 40121, 40126, 40127, 40128, 40129, 40130, 40136, 40137,
- 40145, 40146, 40154, 40155, 40160, 40161, 40140, 40141, 40142, 40143,
- 40144, 40147, 40148, 40149, 40151, 40152, 40153, 40156, 40157, 40159,
- 40162, 38780, 38789, 38801, 38802, 38804, 38831, 38827, 38819, 38834,
- 38836, 39601, 39600, 39607, 40536, 39606, 39610, 39612, 39617, 39616,
- 39621, 39618, 39627, 39628, 39633, 39749, 39747, 39751, 39753, 39752,
- 39757, 39761, 39144, 39181, 39214, 39253, 39252, 39647, 39649, 39654,
- 39663, 39659, 39675, 39661, 39673, 39688, 39695, 39699, 39711, 39715,
- 40637, 40638, 32315, 40578, 40583, 40584, 40587, 40594, 37846, 40605,
- 40607, 40667, 40668, 40669, 40672, 40671, 40674, 40681, 40679, 40677,
- 40682, 40687, 40738, 40748, 40751, 40761, 40759, 40765, 40766, 40772,
- 40163, 40164, 40165, 40166, 40167, 40168, 40169, 40170, 40171, 40172,
- 40173, 40174, 40175, 40176, 40177, 40178, 40179, 40180, 40181, 40182,
- 40183, 40184, 40185, 40186, 40187, 40188, 40189, 40190, 40191, 40192,
- 40193, 40194, 40195, 40196, 40197, 40198, 40199, 40200, 40201, 40202,
- 40203, 40204, 40205, 40206, 40207, 40208, 40209, 40210, 40211, 40212,
- 40213, 40214, 40215, 40216, 40217, 40218, 40219, 40220, 40221, 40222,
- 40223, 40224, 40225, 40226, 40227, 40228, 40229, 40230, 40231, 40232,
- 40233, 40234, 40235, 40236, 40237, 40238, 40239, 40240, 40241, 40242,
- 40243, 40244, 40245, 40246, 40247, 40248, 40249, 40250, 40251, 40252,
- 40253, 40254, 40255, 40256, 40257, 40258, 57908, 57909, 57910, 57911,
- 57912, 57913, 57914, 57915, 57916, 57917, 57918, 57919, 57920, 57921,
- 57922, 57923, 57924, 57925, 57926, 57927, 57928, 57929, 57930, 57931,
- 57932, 57933, 57934, 57935, 57936, 57937, 57938, 57939, 57940, 57941,
- 57942, 57943, 57944, 57945, 57946, 57947, 57948, 57949, 57950, 57951,
- 57952, 57953, 57954, 57955, 57956, 57957, 57958, 57959, 57960, 57961,
- 57962, 57963, 57964, 57965, 57966, 57967, 57968, 57969, 57970, 57971,
- 57972, 57973, 57974, 57975, 57976, 57977, 57978, 57979, 57980, 57981,
- 57982, 57983, 57984, 57985, 57986, 57987, 57988, 57989, 57990, 57991,
- 57992, 57993, 57994, 57995, 57996, 57997, 57998, 57999, 58000, 58001,
- 40259, 40260, 40261, 40262, 40263, 40264, 40265, 40266, 40267, 40268,
- 40269, 40270, 40271, 40272, 40273, 40274, 40275, 40276, 40277, 40278,
- 40279, 40280, 40281, 40282, 40283, 40284, 40285, 40286, 40287, 40288,
- 40289, 40290, 40291, 40292, 40293, 40294, 40295, 40296, 40297, 40298,
- 40299, 40300, 40301, 40302, 40303, 40304, 40305, 40306, 40307, 40308,
- 40309, 40310, 40311, 40312, 40313, 40314, 40315, 40316, 40317, 40318,
- 40319, 40320, 40321, 40322, 40323, 40324, 40325, 40326, 40327, 40328,
- 40329, 40330, 40331, 40332, 40333, 40334, 40335, 40336, 40337, 40338,
- 40339, 40340, 40341, 40342, 40343, 40344, 40345, 40346, 40347, 40348,
- 40349, 40350, 40351, 40352, 40353, 40354, 58002, 58003, 58004, 58005,
- 58006, 58007, 58008, 58009, 58010, 58011, 58012, 58013, 58014, 58015,
- 58016, 58017, 58018, 58019, 58020, 58021, 58022, 58023, 58024, 58025,
- 58026, 58027, 58028, 58029, 58030, 58031, 58032, 58033, 58034, 58035,
- 58036, 58037, 58038, 58039, 58040, 58041, 58042, 58043, 58044, 58045,
- 58046, 58047, 58048, 58049, 58050, 58051, 58052, 58053, 58054, 58055,
- 58056, 58057, 58058, 58059, 58060, 58061, 58062, 58063, 58064, 58065,
- 58066, 58067, 58068, 58069, 58070, 58071, 58072, 58073, 58074, 58075,
- 58076, 58077, 58078, 58079, 58080, 58081, 58082, 58083, 58084, 58085,
- 58086, 58087, 58088, 58089, 58090, 58091, 58092, 58093, 58094, 58095,
- 40355, 40356, 40357, 40358, 40359, 40360, 40361, 40362, 40363, 40364,
- 40365, 40366, 40367, 40368, 40369, 40370, 40371, 40372, 40373, 40374,
- 40375, 40376, 40377, 40378, 40379, 40380, 40381, 40382, 40383, 40384,
- 40385, 40386, 40387, 40388, 40389, 40390, 40391, 40392, 40393, 40394,
- 40395, 40396, 40397, 40398, 40399, 40400, 40401, 40402, 40403, 40404,
- 40405, 40406, 40407, 40408, 40409, 40410, 40411, 40412, 40413, 40414,
- 40415, 40416, 40417, 40418, 40419, 40420, 40421, 40422, 40423, 40424,
- 40425, 40426, 40427, 40428, 40429, 40430, 40431, 40432, 40433, 40434,
- 40435, 40436, 40437, 40438, 40439, 40440, 40441, 40442, 40443, 40444,
- 40445, 40446, 40447, 40448, 40449, 40450, 58096, 58097, 58098, 58099,
- 58100, 58101, 58102, 58103, 58104, 58105, 58106, 58107, 58108, 58109,
- 58110, 58111, 58112, 58113, 58114, 58115, 58116, 58117, 58118, 58119,
- 58120, 58121, 58122, 58123, 58124, 58125, 58126, 58127, 58128, 58129,
- 58130, 58131, 58132, 58133, 58134, 58135, 58136, 58137, 58138, 58139,
- 58140, 58141, 58142, 58143, 58144, 58145, 58146, 58147, 58148, 58149,
- 58150, 58151, 58152, 58153, 58154, 58155, 58156, 58157, 58158, 58159,
- 58160, 58161, 58162, 58163, 58164, 58165, 58166, 58167, 58168, 58169,
- 58170, 58171, 58172, 58173, 58174, 58175, 58176, 58177, 58178, 58179,
- 58180, 58181, 58182, 58183, 58184, 58185, 58186, 58187, 58188, 58189,
- 40451, 40452, 40453, 40454, 40455, 40456, 40457, 40458, 40459, 40460,
- 40461, 40462, 40463, 40464, 40465, 40466, 40467, 40468, 40469, 40470,
- 40471, 40472, 40473, 40474, 40475, 40476, 40477, 40478, 40484, 40487,
- 40494, 40496, 40500, 40507, 40508, 40512, 40525, 40528, 40530, 40531,
- 40532, 40534, 40537, 40541, 40543, 40544, 40545, 40546, 40549, 40558,
- 40559, 40562, 40564, 40565, 40566, 40567, 40568, 40569, 40570, 40571,
- 40572, 40573, 40576, 40577, 40579, 40580, 40581, 40582, 40585, 40586,
- 40588, 40589, 40590, 40591, 40592, 40593, 40596, 40597, 40598, 40599,
- 40600, 40601, 40602, 40603, 40604, 40606, 40608, 40609, 40610, 40611,
- 40612, 40613, 40615, 40616, 40617, 40618, 58190, 58191, 58192, 58193,
- 58194, 58195, 58196, 58197, 58198, 58199, 58200, 58201, 58202, 58203,
- 58204, 58205, 58206, 58207, 58208, 58209, 58210, 58211, 58212, 58213,
- 58214, 58215, 58216, 58217, 58218, 58219, 58220, 58221, 58222, 58223,
- 58224, 58225, 58226, 58227, 58228, 58229, 58230, 58231, 58232, 58233,
- 58234, 58235, 58236, 58237, 58238, 58239, 58240, 58241, 58242, 58243,
- 58244, 58245, 58246, 58247, 58248, 58249, 58250, 58251, 58252, 58253,
- 58254, 58255, 58256, 58257, 58258, 58259, 58260, 58261, 58262, 58263,
- 58264, 58265, 58266, 58267, 58268, 58269, 58270, 58271, 58272, 58273,
- 58274, 58275, 58276, 58277, 58278, 58279, 58280, 58281, 58282, 58283,
- 40619, 40620, 40621, 40622, 40623, 40624, 40625, 40626, 40627, 40629,
- 40630, 40631, 40633, 40634, 40636, 40639, 40640, 40641, 40642, 40643,
- 40645, 40646, 40647, 40648, 40650, 40651, 40652, 40656, 40658, 40659,
- 40661, 40662, 40663, 40665, 40666, 40670, 40673, 40675, 40676, 40678,
- 40680, 40683, 40684, 40685, 40686, 40688, 40689, 40690, 40691, 40692,
- 40693, 40694, 40695, 40696, 40698, 40701, 40703, 40704, 40705, 40706,
- 40707, 40708, 40709, 40710, 40711, 40712, 40713, 40714, 40716, 40719,
- 40721, 40722, 40724, 40725, 40726, 40728, 40730, 40731, 40732, 40733,
- 40734, 40735, 40737, 40739, 40740, 40741, 40742, 40743, 40744, 40745,
- 40746, 40747, 40749, 40750, 40752, 40753, 58284, 58285, 58286, 58287,
- 58288, 58289, 58290, 58291, 58292, 58293, 58294, 58295, 58296, 58297,
- 58298, 58299, 58300, 58301, 58302, 58303, 58304, 58305, 58306, 58307,
- 58308, 58309, 58310, 58311, 58312, 58313, 58314, 58315, 58316, 58317,
- 58318, 58319, 58320, 58321, 58322, 58323, 58324, 58325, 58326, 58327,
- 58328, 58329, 58330, 58331, 58332, 58333, 58334, 58335, 58336, 58337,
- 58338, 58339, 58340, 58341, 58342, 58343, 58344, 58345, 58346, 58347,
- 58348, 58349, 58350, 58351, 58352, 58353, 58354, 58355, 58356, 58357,
- 58358, 58359, 58360, 58361, 58362, 58363, 58364, 58365, 58366, 58367,
- 58368, 58369, 58370, 58371, 58372, 58373, 58374, 58375, 58376, 58377,
- 40754, 40755, 40756, 40757, 40758, 40760, 40762, 40764, 40767, 40768,
- 40769, 40770, 40771, 40773, 40774, 40775, 40776, 40777, 40778, 40779,
- 40780, 40781, 40782, 40783, 40786, 40787, 40788, 40789, 40790, 40791,
- 40792, 40793, 40794, 40795, 40796, 40797, 40798, 40799, 40800, 40801,
- 40802, 40803, 40804, 40805, 40806, 40807, 40808, 40809, 40810, 40811,
- 40812, 40813, 40814, 40815, 40816, 40817, 40818, 40819, 40820, 40821,
- 40822, 40823, 40824, 40825, 40826, 40827, 40828, 40829, 40830, 40833,
- 40834, 40845, 40846, 40847, 40848, 40849, 40850, 40851, 40852, 40853,
- 40854, 40855, 40856, 40860, 40861, 40862, 40865, 40866, 40867, 40868,
- 40869, 63788, 63865, 63893, 63975, 63985, 58378, 58379, 58380, 58381,
- 58382, 58383, 58384, 58385, 58386, 58387, 58388, 58389, 58390, 58391,
- 58392, 58393, 58394, 58395, 58396, 58397, 58398, 58399, 58400, 58401,
- 58402, 58403, 58404, 58405, 58406, 58407, 58408, 58409, 58410, 58411,
- 58412, 58413, 58414, 58415, 58416, 58417, 58418, 58419, 58420, 58421,
- 58422, 58423, 58424, 58425, 58426, 58427, 58428, 58429, 58430, 58431,
- 58432, 58433, 58434, 58435, 58436, 58437, 58438, 58439, 58440, 58441,
- 58442, 58443, 58444, 58445, 58446, 58447, 58448, 58449, 58450, 58451,
- 58452, 58453, 58454, 58455, 58456, 58457, 58458, 58459, 58460, 58461,
- 58462, 58463, 58464, 58465, 58466, 58467, 58468, 58469, 58470, 58471,
- 64012, 64013, 64014, 64015, 64017, 64019, 64020, 64024, 64031, 64032,
- 64033, 64035, 64036, 64039, 64040, 64041, 11905, 59414, 59415, 59416,
- 11908, 13427, 13383, 11912, 11915, 59422, 13726, 13850, 13838, 11916,
- 11927, 14702, 14616, 59430, 14799, 14815, 14963, 14800, 59435, 59436,
- 15182, 15470, 15584, 11943, 59441, 59442, 11946, 16470, 16735, 11950,
- 17207, 11955, 11958, 11959, 59451, 17329, 17324, 11963, 17373, 17622,
- 18017, 17996, 59459, 18211, 18217, 18300, 18317, 11978, 18759, 18810,
- 18813, 18818, 18819, 18821, 18822, 18847, 18843, 18871, 18870, 59476,
- 59477, 19619, 19615, 19616, 19617, 19575, 19618, 19731, 19732, 19733,
- 19734, 19735, 19736, 19737, 19886, 59492, 58472, 58473, 58474, 58475,
- 58476, 58477, 58478, 58479, 58480, 58481, 58482, 58483, 58484, 58485,
- 58486, 58487, 58488, 58489, 58490, 58491, 58492, 58493, 58494, 58495,
- 58496, 58497, 58498, 58499, 58500, 58501, 58502, 58503, 58504, 58505,
- 58506, 58507, 58508, 58509, 58510, 58511, 58512, 58513, 58514, 58515,
- 58516, 58517, 58518, 58519, 58520, 58521, 58522, 58523, 58524, 58525,
- 58526, 58527, 58528, 58529, 58530, 58531, 58532, 58533, 58534, 58535,
- 58536, 58537, 58538, 58539, 58540, 58541, 58542, 58543, 58544, 58545,
- 58546, 58547, 58548, 58549, 58550, 58551, 58552, 58553, 58554, 58555,
- 58556, 58557, 58558, 58559, 58560, 58561, 58562, 58563, 58564, 58565,
-
-};
-
-static const unsigned long myhtml_encoding_map_gb18030_ranges[][2] = {
- {0, 128}, {36, 165}, {38, 169}, {45, 178}, {50, 184},
- {81, 216}, {89, 226}, {95, 235}, {96, 238}, {100, 244},
- {103, 248}, {104, 251}, {105, 253}, {109, 258}, {126, 276},
- {133, 284}, {148, 300}, {172, 325}, {175, 329}, {179, 334},
- {208, 364}, {306, 463}, {307, 465}, {308, 467}, {309, 469},
- {310, 471}, {311, 473}, {312, 475}, {313, 477}, {341, 506},
- {428, 594}, {443, 610}, {544, 712}, {545, 716}, {558, 730},
- {741, 930}, {742, 938}, {749, 962}, {750, 970}, {805, 1026},
- {819, 1104}, {820, 1106}, {7922, 8209}, {7924, 8215}, {7925, 8218},
- {7927, 8222}, {7934, 8231}, {7943, 8241}, {7944, 8244}, {7945, 8246},
- {7950, 8252}, {8062, 8365}, {8148, 8452}, {8149, 8454}, {8152, 8458},
- {8164, 8471}, {8174, 8482}, {8236, 8556}, {8240, 8570}, {8262, 8596},
- {8264, 8602}, {8374, 8713}, {8380, 8720}, {8381, 8722}, {8384, 8726},
- {8388, 8731}, {8390, 8737}, {8392, 8740}, {8393, 8742}, {8394, 8748},
- {8396, 8751}, {8401, 8760}, {8406, 8766}, {8416, 8777}, {8419, 8781},
- {8424, 8787}, {8437, 8802}, {8439, 8808}, {8445, 8816}, {8482, 8854},
- {8485, 8858}, {8496, 8870}, {8521, 8896}, {8603, 8979}, {8936, 9322},
- {8946, 9372}, {9046, 9548}, {9050, 9588}, {9063, 9616}, {9066, 9622},
- {9076, 9634}, {9092, 9652}, {9100, 9662}, {9108, 9672}, {9111, 9676},
- {9113, 9680}, {9131, 9702}, {9162, 9735}, {9164, 9738}, {9218, 9793},
- {9219, 9795}, {11329, 11906}, {11331, 11909}, {11334, 11913}, {11336, 11917},
- {11346, 11928}, {11361, 11944}, {11363, 11947}, {11366, 11951}, {11370, 11956},
- {11372, 11960}, {11375, 11964}, {11389, 11979}, {11682, 12284}, {11686, 12292},
- {11687, 12312}, {11692, 12319}, {11694, 12330}, {11714, 12351}, {11716, 12436},
- {11723, 12447}, {11725, 12535}, {11730, 12543}, {11736, 12586}, {11982, 12842},
- {11989, 12850}, {12102, 12964}, {12336, 13200}, {12348, 13215}, {12350, 13218},
- {12384, 13253}, {12393, 13263}, {12395, 13267}, {12397, 13270}, {12510, 13384},
- {12553, 13428}, {12851, 13727}, {12962, 13839}, {12973, 13851}, {13738, 14617},
- {13823, 14703}, {13919, 14801}, {13933, 14816}, {14080, 14964}, {14298, 15183},
- {14585, 15471}, {14698, 15585}, {15583, 16471}, {15847, 16736}, {16318, 17208},
- {16434, 17325}, {16438, 17330}, {16481, 17374}, {16729, 17623}, {17102, 17997},
- {17122, 18018}, {17315, 18212}, {17320, 18218}, {17402, 18301}, {17418, 18318},
- {17859, 18760}, {17909, 18811}, {17911, 18814}, {17915, 18820}, {17916, 18823},
- {17936, 18844}, {17939, 18848}, {17961, 18872}, {18664, 19576}, {18703, 19620},
- {18814, 19738}, {18962, 19887}, {19043, 40870}, {33469, 59244}, {33470, 59336},
- {33471, 59367}, {33484, 59413}, {33485, 59417}, {33490, 59423}, {33497, 59431},
- {33501, 59437}, {33505, 59443}, {33513, 59452}, {33520, 59460}, {33536, 59478},
- {33550, 59493}, {37845, 63789}, {37921, 63866}, {37948, 63894}, {38029, 63976},
- {38038, 63986}, {38064, 64016}, {38065, 64018}, {38066, 64021}, {38069, 64025},
- {38075, 64034}, {38076, 64037}, {38078, 64042}, {39108, 65074}, {39109, 65093},
- {39113, 65107}, {39114, 65112}, {39115, 65127}, {39116, 65132}, {39265, 65375},
- {39394, 65510}, {189000, 65536},
-};
-
-static const unsigned long myhtml_encoding_map_ibm866[] = {
- 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049,
- 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059,
- 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,
- 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079,
- 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 9617, 9618,
- 9619, 9474, 9508, 9569, 9570, 9558, 9557, 9571, 9553, 9559,
- 9565, 9564, 9563, 9488, 9492, 9524, 9516, 9500, 9472, 9532,
- 9566, 9567, 9562, 9556, 9577, 9574, 9568, 9552, 9580, 9575,
- 9576, 9572, 9573, 9561, 9560, 9554, 9555, 9579, 9578, 9496,
- 9484, 9608, 9604, 9612, 9616, 9600, 1088, 1089, 1090, 1091,
- 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101,
- 1102, 1103, 1025, 1105, 1028, 1108, 1031, 1111, 1038, 1118,
- 176, 8729, 183, 8730, 8470, 164, 9632, 160,
-};
-
-static const unsigned long myhtml_encoding_map_iso_8859_10[] = {
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 260, 274, 290, 298, 296, 310, 167,
- 315, 272, 352, 358, 381, 173, 362, 330, 176, 261,
- 275, 291, 299, 297, 311, 183, 316, 273, 353, 359,
- 382, 8213, 363, 331, 256, 193, 194, 195, 196, 197,
- 198, 302, 268, 201, 280, 203, 278, 205, 206, 207,
- 208, 325, 332, 211, 212, 213, 214, 360, 216, 370,
- 218, 219, 220, 221, 222, 223, 257, 225, 226, 227,
- 228, 229, 230, 303, 269, 233, 281, 235, 279, 237,
- 238, 239, 240, 326, 333, 243, 244, 245, 246, 361,
- 248, 371, 250, 251, 252, 253, 254, 312,
-};
-
-static const unsigned long myhtml_encoding_map_iso_8859_13[] = {
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 8221, 162, 163, 164, 8222, 166, 167,
- 216, 169, 342, 171, 172, 173, 174, 198, 176, 177,
- 178, 179, 8220, 181, 182, 183, 248, 185, 343, 187,
- 188, 189, 190, 230, 260, 302, 256, 262, 196, 197,
- 280, 274, 268, 201, 377, 278, 290, 310, 298, 315,
- 352, 323, 325, 211, 332, 213, 214, 215, 370, 321,
- 346, 362, 220, 379, 381, 223, 261, 303, 257, 263,
- 228, 229, 281, 275, 269, 233, 378, 279, 291, 311,
- 299, 316, 353, 324, 326, 243, 333, 245, 246, 247,
- 371, 322, 347, 363, 252, 380, 382, 8217,
-};
-
-static const unsigned long myhtml_encoding_map_iso_8859_14[] = {
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 7682, 7683, 163, 266, 267, 7690, 167,
- 7808, 169, 7810, 7691, 7922, 173, 174, 376, 7710, 7711,
- 288, 289, 7744, 7745, 182, 7766, 7809, 7767, 7811, 7776,
- 7923, 7812, 7813, 7777, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 372, 209, 210, 211, 212, 213, 214, 7786, 216, 217,
- 218, 219, 220, 221, 374, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 373, 241, 242, 243, 244, 245, 246, 7787,
- 248, 249, 250, 251, 252, 253, 375, 255,
-};
-
-static const unsigned long myhtml_encoding_map_iso_8859_15[] = {
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 8364, 165, 352, 167,
- 353, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 381, 181, 182, 183, 382, 185, 186, 187,
- 338, 339, 376, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255,
-};
-
-static const unsigned long myhtml_encoding_map_iso_8859_16[] = {
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 260, 261, 321, 8364, 8222, 352, 167,
- 353, 169, 536, 171, 377, 173, 378, 379, 176, 177,
- 268, 322, 381, 8221, 182, 183, 382, 269, 537, 187,
- 338, 339, 376, 380, 192, 193, 194, 258, 196, 262,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 272, 323, 210, 211, 212, 336, 214, 346, 368, 217,
- 218, 219, 220, 280, 538, 223, 224, 225, 226, 259,
- 228, 263, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 273, 324, 242, 243, 244, 337, 246, 347,
- 369, 249, 250, 251, 252, 281, 539, 255,
-};
-
-static const unsigned long myhtml_encoding_map_iso_8859_2[] = {
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 260, 728, 321, 164, 317, 346, 167,
- 168, 352, 350, 356, 377, 173, 381, 379, 176, 261,
- 731, 322, 180, 318, 347, 711, 184, 353, 351, 357,
- 378, 733, 382, 380, 340, 193, 194, 258, 196, 313,
- 262, 199, 268, 201, 280, 203, 282, 205, 206, 270,
- 272, 323, 327, 211, 212, 336, 214, 215, 344, 366,
- 218, 368, 220, 221, 354, 223, 341, 225, 226, 259,
- 228, 314, 263, 231, 269, 233, 281, 235, 283, 237,
- 238, 271, 273, 324, 328, 243, 244, 337, 246, 247,
- 345, 367, 250, 369, 252, 253, 355, 729,
-};
-
-static const unsigned long myhtml_encoding_map_iso_8859_3[] = {
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 294, 728, 163, 164, 0x0000, 292, 167,
- 168, 304, 350, 286, 308, 173, 0x0000, 379, 176, 295,
- 178, 179, 180, 181, 293, 183, 184, 305, 351, 287,
- 309, 189, 0x0000, 380, 192, 193, 194, 0x0000, 196, 266,
- 264, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 0x0000, 209, 210, 211, 212, 288, 214, 215, 284, 217,
- 218, 219, 220, 364, 348, 223, 224, 225, 226, 0x0000,
- 228, 267, 265, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 0x0000, 241, 242, 243, 244, 289, 246, 247,
- 285, 249, 250, 251, 252, 365, 349, 729,
-};
-
-static const unsigned long myhtml_encoding_map_iso_8859_4[] = {
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 260, 312, 342, 164, 296, 315, 167,
- 168, 352, 274, 290, 358, 173, 381, 175, 176, 261,
- 731, 343, 180, 297, 316, 711, 184, 353, 275, 291,
- 359, 330, 382, 331, 256, 193, 194, 195, 196, 197,
- 198, 302, 268, 201, 280, 203, 278, 205, 206, 298,
- 272, 325, 332, 310, 212, 213, 214, 215, 216, 370,
- 218, 219, 220, 360, 362, 223, 257, 225, 226, 227,
- 228, 229, 230, 303, 269, 233, 281, 235, 279, 237,
- 238, 299, 273, 326, 333, 311, 244, 245, 246, 247,
- 248, 371, 250, 251, 252, 361, 363, 729,
-};
-
-static const unsigned long myhtml_encoding_map_iso_8859_5[] = {
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 1025, 1026, 1027, 1028, 1029, 1030, 1031,
- 1032, 1033, 1034, 1035, 1036, 173, 1038, 1039, 1040, 1041,
- 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051,
- 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061,
- 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071,
- 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081,
- 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091,
- 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101,
- 1102, 1103, 8470, 1105, 1106, 1107, 1108, 1109, 1110, 1111,
- 1112, 1113, 1114, 1115, 1116, 167, 1118, 1119,
-};
-
-static const unsigned long myhtml_encoding_map_iso_8859_6[] = {
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 0x0000, 0x0000, 0x0000, 164, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 1548, 173, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 1563,
- 0x0000, 0x0000, 0x0000, 1567, 0x0000, 1569, 1570, 1571, 1572, 1573,
- 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583,
- 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593,
- 1594, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 1600, 1601, 1602, 1603,
- 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613,
- 1614, 1615, 1616, 1617, 1618, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static const unsigned long myhtml_encoding_map_iso_8859_7[] = {
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 8216, 8217, 163, 8364, 8367, 166, 167,
- 168, 169, 890, 171, 172, 173, 0x0000, 8213, 176, 177,
- 178, 179, 900, 901, 902, 183, 904, 905, 906, 187,
- 908, 189, 910, 911, 912, 913, 914, 915, 916, 917,
- 918, 919, 920, 921, 922, 923, 924, 925, 926, 927,
- 928, 929, 0x0000, 931, 932, 933, 934, 935, 936, 937,
- 938, 939, 940, 941, 942, 943, 944, 945, 946, 947,
- 948, 949, 950, 951, 952, 953, 954, 955, 956, 957,
- 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,
- 968, 969, 970, 971, 972, 973, 974, 0x0000,
-};
-
-static const unsigned long myhtml_encoding_map_iso_8859_8[] = {
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 0x0000, 162, 163, 164, 165, 166, 167,
- 168, 169, 215, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 247, 187,
- 188, 189, 190, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 8215, 1488, 1489, 1490, 1491,
- 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501,
- 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511,
- 1512, 1513, 1514, 0x0000, 0x0000, 8206, 8207, 0x0000,
-};
-
-static const unsigned long myhtml_encoding_map_jis0208[] = {
- 12288, 12289, 12290, 65292, 65294, 12539, 65306, 65307, 65311, 65281,
- 12443, 12444, 180, 65344, 168, 65342, 65507, 65343, 12541, 12542,
- 12445, 12446, 12291, 20189, 12293, 12294, 12295, 12540, 8213, 8208,
- 65295, 65340, 65374, 8741, 65372, 8230, 8229, 8216, 8217, 8220,
- 8221, 65288, 65289, 12308, 12309, 65339, 65341, 65371, 65373, 12296,
- 12297, 12298, 12299, 12300, 12301, 12302, 12303, 12304, 12305, 65291,
- 65293, 177, 215, 247, 65309, 8800, 65308, 65310, 8806, 8807,
- 8734, 8756, 9794, 9792, 176, 8242, 8243, 8451, 65509, 65284,
- 65504, 65505, 65285, 65283, 65286, 65290, 65312, 167, 9734, 9733,
- 9675, 9679, 9678, 9671, 9670, 9633, 9632, 9651, 9650, 9661,
- 9660, 8251, 12306, 8594, 8592, 8593, 8595, 12307, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 8712,
- 8715, 8838, 8839, 8834, 8835, 8746, 8745, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 8743, 8744, 65506, 8658, 8660,
- 8704, 8707, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 8736, 8869, 8978, 8706, 8711, 8801, 8786,
- 8810, 8811, 8730, 8765, 8733, 8757, 8747, 8748, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 8491, 8240, 9839, 9837, 9834,
- 8224, 8225, 182, 0x0000, 0x0000, 0x0000, 0x0000, 9711, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 65296, 65297, 65298, 65299, 65300, 65301, 65302,
- 65303, 65304, 65305, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 65313, 65314, 65315, 65316, 65317, 65318, 65319, 65320, 65321, 65322,
- 65323, 65324, 65325, 65326, 65327, 65328, 65329, 65330, 65331, 65332,
- 65333, 65334, 65335, 65336, 65337, 65338, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 65345, 65346, 65347, 65348, 65349, 65350, 65351, 65352,
- 65353, 65354, 65355, 65356, 65357, 65358, 65359, 65360, 65361, 65362,
- 65363, 65364, 65365, 65366, 65367, 65368, 65369, 65370, 0x0000, 0x0000,
- 0x0000, 0x0000, 12353, 12354, 12355, 12356, 12357, 12358, 12359, 12360,
- 12361, 12362, 12363, 12364, 12365, 12366, 12367, 12368, 12369, 12370,
- 12371, 12372, 12373, 12374, 12375, 12376, 12377, 12378, 12379, 12380,
- 12381, 12382, 12383, 12384, 12385, 12386, 12387, 12388, 12389, 12390,
- 12391, 12392, 12393, 12394, 12395, 12396, 12397, 12398, 12399, 12400,
- 12401, 12402, 12403, 12404, 12405, 12406, 12407, 12408, 12409, 12410,
- 12411, 12412, 12413, 12414, 12415, 12416, 12417, 12418, 12419, 12420,
- 12421, 12422, 12423, 12424, 12425, 12426, 12427, 12428, 12429, 12430,
- 12431, 12432, 12433, 12434, 12435, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 12449, 12450, 12451, 12452,
- 12453, 12454, 12455, 12456, 12457, 12458, 12459, 12460, 12461, 12462,
- 12463, 12464, 12465, 12466, 12467, 12468, 12469, 12470, 12471, 12472,
- 12473, 12474, 12475, 12476, 12477, 12478, 12479, 12480, 12481, 12482,
- 12483, 12484, 12485, 12486, 12487, 12488, 12489, 12490, 12491, 12492,
- 12493, 12494, 12495, 12496, 12497, 12498, 12499, 12500, 12501, 12502,
- 12503, 12504, 12505, 12506, 12507, 12508, 12509, 12510, 12511, 12512,
- 12513, 12514, 12515, 12516, 12517, 12518, 12519, 12520, 12521, 12522,
- 12523, 12524, 12525, 12526, 12527, 12528, 12529, 12530, 12531, 12532,
- 12533, 12534, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 913, 914, 915, 916, 917, 918, 919, 920, 921, 922,
- 923, 924, 925, 926, 927, 928, 929, 931, 932, 933,
- 934, 935, 936, 937, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 945, 946, 947, 948, 949, 950, 951, 952,
- 953, 954, 955, 956, 957, 958, 959, 960, 961, 963,
- 964, 965, 966, 967, 968, 969, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 1040, 1041, 1042, 1043, 1044, 1045,
- 1025, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054,
- 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064,
- 1065, 1066, 1067, 1068, 1069, 1070, 1071, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 1072, 1073, 1074, 1075, 1076, 1077, 1105, 1078,
- 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088,
- 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098,
- 1099, 1100, 1101, 1102, 1103, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 9472, 9474,
- 9484, 9488, 9496, 9492, 9500, 9516, 9508, 9524, 9532, 9473,
- 9475, 9487, 9491, 9499, 9495, 9507, 9523, 9515, 9531, 9547,
- 9504, 9519, 9512, 9527, 9535, 9501, 9520, 9509, 9528, 9538,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 9312, 9313,
- 9314, 9315, 9316, 9317, 9318, 9319, 9320, 9321, 9322, 9323,
- 9324, 9325, 9326, 9327, 9328, 9329, 9330, 9331, 8544, 8545,
- 8546, 8547, 8548, 8549, 8550, 8551, 8552, 8553, 0x0000, 13129,
- 13076, 13090, 13133, 13080, 13095, 13059, 13110, 13137, 13143, 13069,
- 13094, 13091, 13099, 13130, 13115, 13212, 13213, 13214, 13198, 13199,
- 13252, 13217, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 13179, 12317, 12319, 8470, 13261, 8481, 12964, 12965, 12966, 12967,
- 12968, 12849, 12850, 12857, 13182, 13181, 13180, 8786, 8801, 8747,
- 8750, 8721, 8730, 8869, 8736, 8735, 8895, 8757, 8745, 8746,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 20124, 21782, 23043, 38463, 21696, 24859, 25384, 23030, 36898, 33909,
- 33564, 31312, 24746, 25569, 28197, 26093, 33894, 33446, 39925, 26771,
- 22311, 26017, 25201, 23451, 22992, 34427, 39156, 32098, 32190, 39822,
- 25110, 31903, 34999, 23433, 24245, 25353, 26263, 26696, 38343, 38797,
- 26447, 20197, 20234, 20301, 20381, 20553, 22258, 22839, 22996, 23041,
- 23561, 24799, 24847, 24944, 26131, 26885, 28858, 30031, 30064, 31227,
- 32173, 32239, 32963, 33806, 34915, 35586, 36949, 36986, 21307, 20117,
- 20133, 22495, 32946, 37057, 30959, 19968, 22769, 28322, 36920, 31282,
- 33576, 33419, 39983, 20801, 21360, 21693, 21729, 22240, 23035, 24341,
- 39154, 28139, 32996, 34093, 38498, 38512, 38560, 38907, 21515, 21491,
- 23431, 28879, 32701, 36802, 38632, 21359, 40284, 31418, 19985, 30867,
- 33276, 28198, 22040, 21764, 27421, 34074, 39995, 23013, 21417, 28006,
- 29916, 38287, 22082, 20113, 36939, 38642, 33615, 39180, 21473, 21942,
- 23344, 24433, 26144, 26355, 26628, 27704, 27891, 27945, 29787, 30408,
- 31310, 38964, 33521, 34907, 35424, 37613, 28082, 30123, 30410, 39365,
- 24742, 35585, 36234, 38322, 27022, 21421, 20870, 22290, 22576, 22852,
- 23476, 24310, 24616, 25513, 25588, 27839, 28436, 28814, 28948, 29017,
- 29141, 29503, 32257, 33398, 33489, 34199, 36960, 37467, 40219, 22633,
- 26044, 27738, 29989, 20985, 22830, 22885, 24448, 24540, 25276, 26106,
- 27178, 27431, 27572, 29579, 32705, 35158, 40236, 40206, 40644, 23713,
- 27798, 33659, 20740, 23627, 25014, 33222, 26742, 29281, 20057, 20474,
- 21368, 24681, 28201, 31311, 38899, 19979, 21270, 20206, 20309, 20285,
- 20385, 20339, 21152, 21487, 22025, 22799, 23233, 23478, 23521, 31185,
- 26247, 26524, 26550, 27468, 27827, 28779, 29634, 31117, 31166, 31292,
- 31623, 33457, 33499, 33540, 33655, 33775, 33747, 34662, 35506, 22057,
- 36008, 36838, 36942, 38686, 34442, 20420, 23784, 25105, 29273, 30011,
- 33253, 33469, 34558, 36032, 38597, 39187, 39381, 20171, 20250, 35299,
- 22238, 22602, 22730, 24315, 24555, 24618, 24724, 24674, 25040, 25106,
- 25296, 25913, 39745, 26214, 26800, 28023, 28784, 30028, 30342, 32117,
- 33445, 34809, 38283, 38542, 35997, 20977, 21182, 22806, 21683, 23475,
- 23830, 24936, 27010, 28079, 30861, 33995, 34903, 35442, 37799, 39608,
- 28012, 39336, 34521, 22435, 26623, 34510, 37390, 21123, 22151, 21508,
- 24275, 25313, 25785, 26684, 26680, 27579, 29554, 30906, 31339, 35226,
- 35282, 36203, 36611, 37101, 38307, 38548, 38761, 23398, 23731, 27005,
- 38989, 38990, 25499, 31520, 27179, 27263, 26806, 39949, 28511, 21106,
- 21917, 24688, 25324, 27963, 28167, 28369, 33883, 35088, 36676, 19988,
- 39993, 21494, 26907, 27194, 38788, 26666, 20828, 31427, 33970, 37340,
- 37772, 22107, 40232, 26658, 33541, 33841, 31909, 21000, 33477, 29926,
- 20094, 20355, 20896, 23506, 21002, 21208, 21223, 24059, 21914, 22570,
- 23014, 23436, 23448, 23515, 24178, 24185, 24739, 24863, 24931, 25022,
- 25563, 25954, 26577, 26707, 26874, 27454, 27475, 27735, 28450, 28567,
- 28485, 29872, 29976, 30435, 30475, 31487, 31649, 31777, 32233, 32566,
- 32752, 32925, 33382, 33694, 35251, 35532, 36011, 36996, 37969, 38291,
- 38289, 38306, 38501, 38867, 39208, 33304, 20024, 21547, 23736, 24012,
- 29609, 30284, 30524, 23721, 32747, 36107, 38593, 38929, 38996, 39000,
- 20225, 20238, 21361, 21916, 22120, 22522, 22855, 23305, 23492, 23696,
- 24076, 24190, 24524, 25582, 26426, 26071, 26082, 26399, 26827, 26820,
- 27231, 24112, 27589, 27671, 27773, 30079, 31048, 23395, 31232, 32000,
- 24509, 35215, 35352, 36020, 36215, 36556, 36637, 39138, 39438, 39740,
- 20096, 20605, 20736, 22931, 23452, 25135, 25216, 25836, 27450, 29344,
- 30097, 31047, 32681, 34811, 35516, 35696, 25516, 33738, 38816, 21513,
- 21507, 21931, 26708, 27224, 35440, 30759, 26485, 40653, 21364, 23458,
- 33050, 34384, 36870, 19992, 20037, 20167, 20241, 21450, 21560, 23470,
- 24339, 24613, 25937, 26429, 27714, 27762, 27875, 28792, 29699, 31350,
- 31406, 31496, 32026, 31998, 32102, 26087, 29275, 21435, 23621, 24040,
- 25298, 25312, 25369, 28192, 34394, 35377, 36317, 37624, 28417, 31142,
- 39770, 20136, 20139, 20140, 20379, 20384, 20689, 20807, 31478, 20849,
- 20982, 21332, 21281, 21375, 21483, 21932, 22659, 23777, 24375, 24394,
- 24623, 24656, 24685, 25375, 25945, 27211, 27841, 29378, 29421, 30703,
- 33016, 33029, 33288, 34126, 37111, 37857, 38911, 39255, 39514, 20208,
- 20957, 23597, 26241, 26989, 23616, 26354, 26997, 29577, 26704, 31873,
- 20677, 21220, 22343, 24062, 37670, 26020, 27427, 27453, 29748, 31105,
- 31165, 31563, 32202, 33465, 33740, 34943, 35167, 35641, 36817, 37329,
- 21535, 37504, 20061, 20534, 21477, 21306, 29399, 29590, 30697, 33510,
- 36527, 39366, 39368, 39378, 20855, 24858, 34398, 21936, 31354, 20598,
- 23507, 36935, 38533, 20018, 27355, 37351, 23633, 23624, 25496, 31391,
- 27795, 38772, 36705, 31402, 29066, 38536, 31874, 26647, 32368, 26705,
- 37740, 21234, 21531, 34219, 35347, 32676, 36557, 37089, 21350, 34952,
- 31041, 20418, 20670, 21009, 20804, 21843, 22317, 29674, 22411, 22865,
- 24418, 24452, 24693, 24950, 24935, 25001, 25522, 25658, 25964, 26223,
- 26690, 28179, 30054, 31293, 31995, 32076, 32153, 32331, 32619, 33550,
- 33610, 34509, 35336, 35427, 35686, 36605, 38938, 40335, 33464, 36814,
- 39912, 21127, 25119, 25731, 28608, 38553, 26689, 20625, 27424, 27770,
- 28500, 31348, 32080, 34880, 35363, 26376, 20214, 20537, 20518, 20581,
- 20860, 21048, 21091, 21927, 22287, 22533, 23244, 24314, 25010, 25080,
- 25331, 25458, 26908, 27177, 29309, 29356, 29486, 30740, 30831, 32121,
- 30476, 32937, 35211, 35609, 36066, 36562, 36963, 37749, 38522, 38997,
- 39443, 40568, 20803, 21407, 21427, 24187, 24358, 28187, 28304, 29572,
- 29694, 32067, 33335, 35328, 35578, 38480, 20046, 20491, 21476, 21628,
- 22266, 22993, 23396, 24049, 24235, 24359, 25144, 25925, 26543, 28246,
- 29392, 31946, 34996, 32929, 32993, 33776, 34382, 35463, 36328, 37431,
- 38599, 39015, 40723, 20116, 20114, 20237, 21320, 21577, 21566, 23087,
- 24460, 24481, 24735, 26791, 27278, 29786, 30849, 35486, 35492, 35703,
- 37264, 20062, 39881, 20132, 20348, 20399, 20505, 20502, 20809, 20844,
- 21151, 21177, 21246, 21402, 21475, 21521, 21518, 21897, 22353, 22434,
- 22909, 23380, 23389, 23439, 24037, 24039, 24055, 24184, 24195, 24218,
- 24247, 24344, 24658, 24908, 25239, 25304, 25511, 25915, 26114, 26179,
- 26356, 26477, 26657, 26775, 27083, 27743, 27946, 28009, 28207, 28317,
- 30002, 30343, 30828, 31295, 31968, 32005, 32024, 32094, 32177, 32789,
- 32771, 32943, 32945, 33108, 33167, 33322, 33618, 34892, 34913, 35611,
- 36002, 36092, 37066, 37237, 37489, 30783, 37628, 38308, 38477, 38917,
- 39321, 39640, 40251, 21083, 21163, 21495, 21512, 22741, 25335, 28640,
- 35946, 36703, 40633, 20811, 21051, 21578, 22269, 31296, 37239, 40288,
- 40658, 29508, 28425, 33136, 29969, 24573, 24794, 39592, 29403, 36796,
- 27492, 38915, 20170, 22256, 22372, 22718, 23130, 24680, 25031, 26127,
- 26118, 26681, 26801, 28151, 30165, 32058, 33390, 39746, 20123, 20304,
- 21449, 21766, 23919, 24038, 24046, 26619, 27801, 29811, 30722, 35408,
- 37782, 35039, 22352, 24231, 25387, 20661, 20652, 20877, 26368, 21705,
- 22622, 22971, 23472, 24425, 25165, 25505, 26685, 27507, 28168, 28797,
- 37319, 29312, 30741, 30758, 31085, 25998, 32048, 33756, 35009, 36617,
- 38555, 21092, 22312, 26448, 32618, 36001, 20916, 22338, 38442, 22586,
- 27018, 32948, 21682, 23822, 22524, 30869, 40442, 20316, 21066, 21643,
- 25662, 26152, 26388, 26613, 31364, 31574, 32034, 37679, 26716, 39853,
- 31545, 21273, 20874, 21047, 23519, 25334, 25774, 25830, 26413, 27578,
- 34217, 38609, 30352, 39894, 25420, 37638, 39851, 30399, 26194, 19977,
- 20632, 21442, 23665, 24808, 25746, 25955, 26719, 29158, 29642, 29987,
- 31639, 32386, 34453, 35715, 36059, 37240, 39184, 26028, 26283, 27531,
- 20181, 20180, 20282, 20351, 21050, 21496, 21490, 21987, 22235, 22763,
- 22987, 22985, 23039, 23376, 23629, 24066, 24107, 24535, 24605, 25351,
- 25903, 23388, 26031, 26045, 26088, 26525, 27490, 27515, 27663, 29509,
- 31049, 31169, 31992, 32025, 32043, 32930, 33026, 33267, 35222, 35422,
- 35433, 35430, 35468, 35566, 36039, 36060, 38604, 39164, 27503, 20107,
- 20284, 20365, 20816, 23383, 23546, 24904, 25345, 26178, 27425, 28363,
- 27835, 29246, 29885, 30164, 30913, 31034, 32780, 32819, 33258, 33940,
- 36766, 27728, 40575, 24335, 35672, 40235, 31482, 36600, 23437, 38635,
- 19971, 21489, 22519, 22833, 23241, 23460, 24713, 28287, 28422, 30142,
- 36074, 23455, 34048, 31712, 20594, 26612, 33437, 23649, 34122, 32286,
- 33294, 20889, 23556, 25448, 36198, 26012, 29038, 31038, 32023, 32773,
- 35613, 36554, 36974, 34503, 37034, 20511, 21242, 23610, 26451, 28796,
- 29237, 37196, 37320, 37675, 33509, 23490, 24369, 24825, 20027, 21462,
- 23432, 25163, 26417, 27530, 29417, 29664, 31278, 33131, 36259, 37202,
- 39318, 20754, 21463, 21610, 23551, 25480, 27193, 32172, 38656, 22234,
- 21454, 21608, 23447, 23601, 24030, 20462, 24833, 25342, 27954, 31168,
- 31179, 32066, 32333, 32722, 33261, 33311, 33936, 34886, 35186, 35728,
- 36468, 36655, 36913, 37195, 37228, 38598, 37276, 20160, 20303, 20805,
- 21313, 24467, 25102, 26580, 27713, 28171, 29539, 32294, 37325, 37507,
- 21460, 22809, 23487, 28113, 31069, 32302, 31899, 22654, 29087, 20986,
- 34899, 36848, 20426, 23803, 26149, 30636, 31459, 33308, 39423, 20934,
- 24490, 26092, 26991, 27529, 28147, 28310, 28516, 30462, 32020, 24033,
- 36981, 37255, 38918, 20966, 21021, 25152, 26257, 26329, 28186, 24246,
- 32210, 32626, 26360, 34223, 34295, 35576, 21161, 21465, 22899, 24207,
- 24464, 24661, 37604, 38500, 20663, 20767, 21213, 21280, 21319, 21484,
- 21736, 21830, 21809, 22039, 22888, 22974, 23100, 23477, 23558, 23567,
- 23569, 23578, 24196, 24202, 24288, 24432, 25215, 25220, 25307, 25484,
- 25463, 26119, 26124, 26157, 26230, 26494, 26786, 27167, 27189, 27836,
- 28040, 28169, 28248, 28988, 28966, 29031, 30151, 30465, 30813, 30977,
- 31077, 31216, 31456, 31505, 31911, 32057, 32918, 33750, 33931, 34121,
- 34909, 35059, 35359, 35388, 35412, 35443, 35937, 36062, 37284, 37478,
- 37758, 37912, 38556, 38808, 19978, 19976, 19998, 20055, 20887, 21104,
- 22478, 22580, 22732, 23330, 24120, 24773, 25854, 26465, 26454, 27972,
- 29366, 30067, 31331, 33976, 35698, 37304, 37664, 22065, 22516, 39166,
- 25325, 26893, 27542, 29165, 32340, 32887, 33394, 35302, 39135, 34645,
- 36785, 23611, 20280, 20449, 20405, 21767, 23072, 23517, 23529, 24515,
- 24910, 25391, 26032, 26187, 26862, 27035, 28024, 28145, 30003, 30137,
- 30495, 31070, 31206, 32051, 33251, 33455, 34218, 35242, 35386, 36523,
- 36763, 36914, 37341, 38663, 20154, 20161, 20995, 22645, 22764, 23563,
- 29978, 23613, 33102, 35338, 36805, 38499, 38765, 31525, 35535, 38920,
- 37218, 22259, 21416, 36887, 21561, 22402, 24101, 25512, 27700, 28810,
- 30561, 31883, 32736, 34928, 36930, 37204, 37648, 37656, 38543, 29790,
- 39620, 23815, 23913, 25968, 26530, 36264, 38619, 25454, 26441, 26905,
- 33733, 38935, 38592, 35070, 28548, 25722, 23544, 19990, 28716, 30045,
- 26159, 20932, 21046, 21218, 22995, 24449, 24615, 25104, 25919, 25972,
- 26143, 26228, 26866, 26646, 27491, 28165, 29298, 29983, 30427, 31934,
- 32854, 22768, 35069, 35199, 35488, 35475, 35531, 36893, 37266, 38738,
- 38745, 25993, 31246, 33030, 38587, 24109, 24796, 25114, 26021, 26132,
- 26512, 30707, 31309, 31821, 32318, 33034, 36012, 36196, 36321, 36447,
- 30889, 20999, 25305, 25509, 25666, 25240, 35373, 31363, 31680, 35500,
- 38634, 32118, 33292, 34633, 20185, 20808, 21315, 21344, 23459, 23554,
- 23574, 24029, 25126, 25159, 25776, 26643, 26676, 27849, 27973, 27927,
- 26579, 28508, 29006, 29053, 26059, 31359, 31661, 32218, 32330, 32680,
- 33146, 33307, 33337, 34214, 35438, 36046, 36341, 36984, 36983, 37549,
- 37521, 38275, 39854, 21069, 21892, 28472, 28982, 20840, 31109, 32341,
- 33203, 31950, 22092, 22609, 23720, 25514, 26366, 26365, 26970, 29401,
- 30095, 30094, 30990, 31062, 31199, 31895, 32032, 32068, 34311, 35380,
- 38459, 36961, 40736, 20711, 21109, 21452, 21474, 20489, 21930, 22766,
- 22863, 29245, 23435, 23652, 21277, 24803, 24819, 25436, 25475, 25407,
- 25531, 25805, 26089, 26361, 24035, 27085, 27133, 28437, 29157, 20105,
- 30185, 30456, 31379, 31967, 32207, 32156, 32865, 33609, 33624, 33900,
- 33980, 34299, 35013, 36208, 36865, 36973, 37783, 38684, 39442, 20687,
- 22679, 24974, 33235, 34101, 36104, 36896, 20419, 20596, 21063, 21363,
- 24687, 25417, 26463, 28204, 36275, 36895, 20439, 23646, 36042, 26063,
- 32154, 21330, 34966, 20854, 25539, 23384, 23403, 23562, 25613, 26449,
- 36956, 20182, 22810, 22826, 27760, 35409, 21822, 22549, 22949, 24816,
- 25171, 26561, 33333, 26965, 38464, 39364, 39464, 20307, 22534, 23550,
- 32784, 23729, 24111, 24453, 24608, 24907, 25140, 26367, 27888, 28382,
- 32974, 33151, 33492, 34955, 36024, 36864, 36910, 38538, 40667, 39899,
- 20195, 21488, 22823, 31532, 37261, 38988, 40441, 28381, 28711, 21331,
- 21828, 23429, 25176, 25246, 25299, 27810, 28655, 29730, 35351, 37944,
- 28609, 35582, 33592, 20967, 34552, 21482, 21481, 20294, 36948, 36784,
- 22890, 33073, 24061, 31466, 36799, 26842, 35895, 29432, 40008, 27197,
- 35504, 20025, 21336, 22022, 22374, 25285, 25506, 26086, 27470, 28129,
- 28251, 28845, 30701, 31471, 31658, 32187, 32829, 32966, 34507, 35477,
- 37723, 22243, 22727, 24382, 26029, 26262, 27264, 27573, 30007, 35527,
- 20516, 30693, 22320, 24347, 24677, 26234, 27744, 30196, 31258, 32622,
- 33268, 34584, 36933, 39347, 31689, 30044, 31481, 31569, 33988, 36880,
- 31209, 31378, 33590, 23265, 30528, 20013, 20210, 23449, 24544, 25277,
- 26172, 26609, 27880, 34411, 34935, 35387, 37198, 37619, 39376, 27159,
- 28710, 29482, 33511, 33879, 36015, 19969, 20806, 20939, 21899, 23541,
- 24086, 24115, 24193, 24340, 24373, 24427, 24500, 25074, 25361, 26274,
- 26397, 28526, 29266, 30010, 30522, 32884, 33081, 33144, 34678, 35519,
- 35548, 36229, 36339, 37530, 38263, 38914, 40165, 21189, 25431, 30452,
- 26389, 27784, 29645, 36035, 37806, 38515, 27941, 22684, 26894, 27084,
- 36861, 37786, 30171, 36890, 22618, 26626, 25524, 27131, 20291, 28460,
- 26584, 36795, 34086, 32180, 37716, 26943, 28528, 22378, 22775, 23340,
- 32044, 29226, 21514, 37347, 40372, 20141, 20302, 20572, 20597, 21059,
- 35998, 21576, 22564, 23450, 24093, 24213, 24237, 24311, 24351, 24716,
- 25269, 25402, 25552, 26799, 27712, 30855, 31118, 31243, 32224, 33351,
- 35330, 35558, 36420, 36883, 37048, 37165, 37336, 40718, 27877, 25688,
- 25826, 25973, 28404, 30340, 31515, 36969, 37841, 28346, 21746, 24505,
- 25764, 36685, 36845, 37444, 20856, 22635, 22825, 23637, 24215, 28155,
- 32399, 29980, 36028, 36578, 39003, 28857, 20253, 27583, 28593, 30000,
- 38651, 20814, 21520, 22581, 22615, 22956, 23648, 24466, 26007, 26460,
- 28193, 30331, 33759, 36077, 36884, 37117, 37709, 30757, 30778, 21162,
- 24230, 22303, 22900, 24594, 20498, 20826, 20908, 20941, 20992, 21776,
- 22612, 22616, 22871, 23445, 23798, 23947, 24764, 25237, 25645, 26481,
- 26691, 26812, 26847, 30423, 28120, 28271, 28059, 28783, 29128, 24403,
- 30168, 31095, 31561, 31572, 31570, 31958, 32113, 21040, 33891, 34153,
- 34276, 35342, 35588, 35910, 36367, 36867, 36879, 37913, 38518, 38957,
- 39472, 38360, 20685, 21205, 21516, 22530, 23566, 24999, 25758, 27934,
- 30643, 31461, 33012, 33796, 36947, 37509, 23776, 40199, 21311, 24471,
- 24499, 28060, 29305, 30563, 31167, 31716, 27602, 29420, 35501, 26627,
- 27233, 20984, 31361, 26932, 23626, 40182, 33515, 23493, 37193, 28702,
- 22136, 23663, 24775, 25958, 27788, 35930, 36929, 38931, 21585, 26311,
- 37389, 22856, 37027, 20869, 20045, 20970, 34201, 35598, 28760, 25466,
- 37707, 26978, 39348, 32260, 30071, 21335, 26976, 36575, 38627, 27741,
- 20108, 23612, 24336, 36841, 21250, 36049, 32905, 34425, 24319, 26085,
- 20083, 20837, 22914, 23615, 38894, 20219, 22922, 24525, 35469, 28641,
- 31152, 31074, 23527, 33905, 29483, 29105, 24180, 24565, 25467, 25754,
- 29123, 31896, 20035, 24316, 20043, 22492, 22178, 24745, 28611, 32013,
- 33021, 33075, 33215, 36786, 35223, 34468, 24052, 25226, 25773, 35207,
- 26487, 27874, 27966, 29750, 30772, 23110, 32629, 33453, 39340, 20467,
- 24259, 25309, 25490, 25943, 26479, 30403, 29260, 32972, 32954, 36649,
- 37197, 20493, 22521, 23186, 26757, 26995, 29028, 29437, 36023, 22770,
- 36064, 38506, 36889, 34687, 31204, 30695, 33833, 20271, 21093, 21338,
- 25293, 26575, 27850, 30333, 31636, 31893, 33334, 34180, 36843, 26333,
- 28448, 29190, 32283, 33707, 39361, 40614, 20989, 31665, 30834, 31672,
- 32903, 31560, 27368, 24161, 32908, 30033, 30048, 20843, 37474, 28300,
- 30330, 37271, 39658, 20240, 32624, 25244, 31567, 38309, 40169, 22138,
- 22617, 34532, 38588, 20276, 21028, 21322, 21453, 21467, 24070, 25644,
- 26001, 26495, 27710, 27726, 29256, 29359, 29677, 30036, 32321, 33324,
- 34281, 36009, 31684, 37318, 29033, 38930, 39151, 25405, 26217, 30058,
- 30436, 30928, 34115, 34542, 21290, 21329, 21542, 22915, 24199, 24444,
- 24754, 25161, 25209, 25259, 26000, 27604, 27852, 30130, 30382, 30865,
- 31192, 32203, 32631, 32933, 34987, 35513, 36027, 36991, 38750, 39131,
- 27147, 31800, 20633, 23614, 24494, 26503, 27608, 29749, 30473, 32654,
- 40763, 26570, 31255, 21305, 30091, 39661, 24422, 33181, 33777, 32920,
- 24380, 24517, 30050, 31558, 36924, 26727, 23019, 23195, 32016, 30334,
- 35628, 20469, 24426, 27161, 27703, 28418, 29922, 31080, 34920, 35413,
- 35961, 24287, 25551, 30149, 31186, 33495, 37672, 37618, 33948, 34541,
- 39981, 21697, 24428, 25996, 27996, 28693, 36007, 36051, 38971, 25935,
- 29942, 19981, 20184, 22496, 22827, 23142, 23500, 20904, 24067, 24220,
- 24598, 25206, 25975, 26023, 26222, 28014, 29238, 31526, 33104, 33178,
- 33433, 35676, 36000, 36070, 36212, 38428, 38468, 20398, 25771, 27494,
- 33310, 33889, 34154, 37096, 23553, 26963, 39080, 33914, 34135, 20239,
- 21103, 24489, 24133, 26381, 31119, 33145, 35079, 35206, 28149, 24343,
- 25173, 27832, 20175, 29289, 39826, 20998, 21563, 22132, 22707, 24996,
- 25198, 28954, 22894, 31881, 31966, 32027, 38640, 25991, 32862, 19993,
- 20341, 20853, 22592, 24163, 24179, 24330, 26564, 20006, 34109, 38281,
- 38491, 31859, 38913, 20731, 22721, 30294, 30887, 21029, 30629, 34065,
- 31622, 20559, 22793, 29255, 31687, 32232, 36794, 36820, 36941, 20415,
- 21193, 23081, 24321, 38829, 20445, 33303, 37610, 22275, 25429, 27497,
- 29995, 35036, 36628, 31298, 21215, 22675, 24917, 25098, 26286, 27597,
- 31807, 33769, 20515, 20472, 21253, 21574, 22577, 22857, 23453, 23792,
- 23791, 23849, 24214, 25265, 25447, 25918, 26041, 26379, 27861, 27873,
- 28921, 30770, 32299, 32990, 33459, 33804, 34028, 34562, 35090, 35370,
- 35914, 37030, 37586, 39165, 40179, 40300, 20047, 20129, 20621, 21078,
- 22346, 22952, 24125, 24536, 24537, 25151, 26292, 26395, 26576, 26834,
- 20882, 32033, 32938, 33192, 35584, 35980, 36031, 37502, 38450, 21536,
- 38956, 21271, 20693, 21340, 22696, 25778, 26420, 29287, 30566, 31302,
- 37350, 21187, 27809, 27526, 22528, 24140, 22868, 26412, 32763, 20961,
- 30406, 25705, 30952, 39764, 40635, 22475, 22969, 26151, 26522, 27598,
- 21737, 27097, 24149, 33180, 26517, 39850, 26622, 40018, 26717, 20134,
- 20451, 21448, 25273, 26411, 27819, 36804, 20397, 32365, 40639, 19975,
- 24930, 28288, 28459, 34067, 21619, 26410, 39749, 24051, 31637, 23724,
- 23494, 34588, 28234, 34001, 31252, 33032, 22937, 31885, 27665, 30496,
- 21209, 22818, 28961, 29279, 30683, 38695, 40289, 26891, 23167, 23064,
- 20901, 21517, 21629, 26126, 30431, 36855, 37528, 40180, 23018, 29277,
- 28357, 20813, 26825, 32191, 32236, 38754, 40634, 25720, 27169, 33538,
- 22916, 23391, 27611, 29467, 30450, 32178, 32791, 33945, 20786, 26408,
- 40665, 30446, 26466, 21247, 39173, 23588, 25147, 31870, 36016, 21839,
- 24758, 32011, 38272, 21249, 20063, 20918, 22812, 29242, 32822, 37326,
- 24357, 30690, 21380, 24441, 32004, 34220, 35379, 36493, 38742, 26611,
- 34222, 37971, 24841, 24840, 27833, 30290, 35565, 36664, 21807, 20305,
- 20778, 21191, 21451, 23461, 24189, 24736, 24962, 25558, 26377, 26586,
- 28263, 28044, 29494, 29495, 30001, 31056, 35029, 35480, 36938, 37009,
- 37109, 38596, 34701, 22805, 20104, 20313, 19982, 35465, 36671, 38928,
- 20653, 24188, 22934, 23481, 24248, 25562, 25594, 25793, 26332, 26954,
- 27096, 27915, 28342, 29076, 29992, 31407, 32650, 32768, 33865, 33993,
- 35201, 35617, 36362, 36965, 38525, 39178, 24958, 25233, 27442, 27779,
- 28020, 32716, 32764, 28096, 32645, 34746, 35064, 26469, 33713, 38972,
- 38647, 27931, 32097, 33853, 37226, 20081, 21365, 23888, 27396, 28651,
- 34253, 34349, 35239, 21033, 21519, 23653, 26446, 26792, 29702, 29827,
- 30178, 35023, 35041, 37324, 38626, 38520, 24459, 29575, 31435, 33870,
- 25504, 30053, 21129, 27969, 28316, 29705, 30041, 30827, 31890, 38534,
- 31452, 40845, 20406, 24942, 26053, 34396, 20102, 20142, 20698, 20001,
- 20940, 23534, 26009, 26753, 28092, 29471, 30274, 30637, 31260, 31975,
- 33391, 35538, 36988, 37327, 38517, 38936, 21147, 32209, 20523, 21400,
- 26519, 28107, 29136, 29747, 33256, 36650, 38563, 40023, 40607, 29792,
- 22593, 28057, 32047, 39006, 20196, 20278, 20363, 20919, 21169, 23994,
- 24604, 29618, 31036, 33491, 37428, 38583, 38646, 38666, 40599, 40802,
- 26278, 27508, 21015, 21155, 28872, 35010, 24265, 24651, 24976, 28451,
- 29001, 31806, 32244, 32879, 34030, 36899, 37676, 21570, 39791, 27347,
- 28809, 36034, 36335, 38706, 21172, 23105, 24266, 24324, 26391, 27004,
- 27028, 28010, 28431, 29282, 29436, 31725, 32769, 32894, 34635, 37070,
- 20845, 40595, 31108, 32907, 37682, 35542, 20525, 21644, 35441, 27498,
- 36036, 33031, 24785, 26528, 40434, 20121, 20120, 39952, 35435, 34241,
- 34152, 26880, 28286, 30871, 33109, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 24332, 19984,
- 19989, 20010, 20017, 20022, 20028, 20031, 20034, 20054, 20056, 20098,
- 20101, 35947, 20106, 33298, 24333, 20110, 20126, 20127, 20128, 20130,
- 20144, 20147, 20150, 20174, 20173, 20164, 20166, 20162, 20183, 20190,
- 20205, 20191, 20215, 20233, 20314, 20272, 20315, 20317, 20311, 20295,
- 20342, 20360, 20367, 20376, 20347, 20329, 20336, 20369, 20335, 20358,
- 20374, 20760, 20436, 20447, 20430, 20440, 20443, 20433, 20442, 20432,
- 20452, 20453, 20506, 20520, 20500, 20522, 20517, 20485, 20252, 20470,
- 20513, 20521, 20524, 20478, 20463, 20497, 20486, 20547, 20551, 26371,
- 20565, 20560, 20552, 20570, 20566, 20588, 20600, 20608, 20634, 20613,
- 20660, 20658, 20681, 20682, 20659, 20674, 20694, 20702, 20709, 20717,
- 20707, 20718, 20729, 20725, 20745, 20737, 20738, 20758, 20757, 20756,
- 20762, 20769, 20794, 20791, 20796, 20795, 20799, 20800, 20818, 20812,
- 20820, 20834, 31480, 20841, 20842, 20846, 20864, 20866, 22232, 20876,
- 20873, 20879, 20881, 20883, 20885, 20886, 20900, 20902, 20898, 20905,
- 20906, 20907, 20915, 20913, 20914, 20912, 20917, 20925, 20933, 20937,
- 20955, 20960, 34389, 20969, 20973, 20976, 20981, 20990, 20996, 21003,
- 21012, 21006, 21031, 21034, 21038, 21043, 21049, 21071, 21060, 21067,
- 21068, 21086, 21076, 21098, 21108, 21097, 21107, 21119, 21117, 21133,
- 21140, 21138, 21105, 21128, 21137, 36776, 36775, 21164, 21165, 21180,
- 21173, 21185, 21197, 21207, 21214, 21219, 21222, 39149, 21216, 21235,
- 21237, 21240, 21241, 21254, 21256, 30008, 21261, 21264, 21263, 21269,
- 21274, 21283, 21295, 21297, 21299, 21304, 21312, 21318, 21317, 19991,
- 21321, 21325, 20950, 21342, 21353, 21358, 22808, 21371, 21367, 21378,
- 21398, 21408, 21414, 21413, 21422, 21424, 21430, 21443, 31762, 38617,
- 21471, 26364, 29166, 21486, 21480, 21485, 21498, 21505, 21565, 21568,
- 21548, 21549, 21564, 21550, 21558, 21545, 21533, 21582, 21647, 21621,
- 21646, 21599, 21617, 21623, 21616, 21650, 21627, 21632, 21622, 21636,
- 21648, 21638, 21703, 21666, 21688, 21669, 21676, 21700, 21704, 21672,
- 21675, 21698, 21668, 21694, 21692, 21720, 21733, 21734, 21775, 21780,
- 21757, 21742, 21741, 21754, 21730, 21817, 21824, 21859, 21836, 21806,
- 21852, 21829, 21846, 21847, 21816, 21811, 21853, 21913, 21888, 21679,
- 21898, 21919, 21883, 21886, 21912, 21918, 21934, 21884, 21891, 21929,
- 21895, 21928, 21978, 21957, 21983, 21956, 21980, 21988, 21972, 22036,
- 22007, 22038, 22014, 22013, 22043, 22009, 22094, 22096, 29151, 22068,
- 22070, 22066, 22072, 22123, 22116, 22063, 22124, 22122, 22150, 22144,
- 22154, 22176, 22164, 22159, 22181, 22190, 22198, 22196, 22210, 22204,
- 22209, 22211, 22208, 22216, 22222, 22225, 22227, 22231, 22254, 22265,
- 22272, 22271, 22276, 22281, 22280, 22283, 22285, 22291, 22296, 22294,
- 21959, 22300, 22310, 22327, 22328, 22350, 22331, 22336, 22351, 22377,
- 22464, 22408, 22369, 22399, 22409, 22419, 22432, 22451, 22436, 22442,
- 22448, 22467, 22470, 22484, 22482, 22483, 22538, 22486, 22499, 22539,
- 22553, 22557, 22642, 22561, 22626, 22603, 22640, 27584, 22610, 22589,
- 22649, 22661, 22713, 22687, 22699, 22714, 22750, 22715, 22712, 22702,
- 22725, 22739, 22737, 22743, 22745, 22744, 22757, 22748, 22756, 22751,
- 22767, 22778, 22777, 22779, 22780, 22781, 22786, 22794, 22800, 22811,
- 26790, 22821, 22828, 22829, 22834, 22840, 22846, 31442, 22869, 22864,
- 22862, 22874, 22872, 22882, 22880, 22887, 22892, 22889, 22904, 22913,
- 22941, 20318, 20395, 22947, 22962, 22982, 23016, 23004, 22925, 23001,
- 23002, 23077, 23071, 23057, 23068, 23049, 23066, 23104, 23148, 23113,
- 23093, 23094, 23138, 23146, 23194, 23228, 23230, 23243, 23234, 23229,
- 23267, 23255, 23270, 23273, 23254, 23290, 23291, 23308, 23307, 23318,
- 23346, 23248, 23338, 23350, 23358, 23363, 23365, 23360, 23377, 23381,
- 23386, 23387, 23397, 23401, 23408, 23411, 23413, 23416, 25992, 23418,
- 23424, 23427, 23462, 23480, 23491, 23495, 23497, 23508, 23504, 23524,
- 23526, 23522, 23518, 23525, 23531, 23536, 23542, 23539, 23557, 23559,
- 23560, 23565, 23571, 23584, 23586, 23592, 23608, 23609, 23617, 23622,
- 23630, 23635, 23632, 23631, 23409, 23660, 23662, 20066, 23670, 23673,
- 23692, 23697, 23700, 22939, 23723, 23739, 23734, 23740, 23735, 23749,
- 23742, 23751, 23769, 23785, 23805, 23802, 23789, 23948, 23786, 23819,
- 23829, 23831, 23900, 23839, 23835, 23825, 23828, 23842, 23834, 23833,
- 23832, 23884, 23890, 23886, 23883, 23916, 23923, 23926, 23943, 23940,
- 23938, 23970, 23965, 23980, 23982, 23997, 23952, 23991, 23996, 24009,
- 24013, 24019, 24018, 24022, 24027, 24043, 24050, 24053, 24075, 24090,
- 24089, 24081, 24091, 24118, 24119, 24132, 24131, 24128, 24142, 24151,
- 24148, 24159, 24162, 24164, 24135, 24181, 24182, 24186, 40636, 24191,
- 24224, 24257, 24258, 24264, 24272, 24271, 24278, 24291, 24285, 24282,
- 24283, 24290, 24289, 24296, 24297, 24300, 24305, 24307, 24304, 24308,
- 24312, 24318, 24323, 24329, 24413, 24412, 24331, 24337, 24342, 24361,
- 24365, 24376, 24385, 24392, 24396, 24398, 24367, 24401, 24406, 24407,
- 24409, 24417, 24429, 24435, 24439, 24451, 24450, 24447, 24458, 24456,
- 24465, 24455, 24478, 24473, 24472, 24480, 24488, 24493, 24508, 24534,
- 24571, 24548, 24568, 24561, 24541, 24755, 24575, 24609, 24672, 24601,
- 24592, 24617, 24590, 24625, 24603, 24597, 24619, 24614, 24591, 24634,
- 24666, 24641, 24682, 24695, 24671, 24650, 24646, 24653, 24675, 24643,
- 24676, 24642, 24684, 24683, 24665, 24705, 24717, 24807, 24707, 24730,
- 24708, 24731, 24726, 24727, 24722, 24743, 24715, 24801, 24760, 24800,
- 24787, 24756, 24560, 24765, 24774, 24757, 24792, 24909, 24853, 24838,
- 24822, 24823, 24832, 24820, 24826, 24835, 24865, 24827, 24817, 24845,
- 24846, 24903, 24894, 24872, 24871, 24906, 24895, 24892, 24876, 24884,
- 24893, 24898, 24900, 24947, 24951, 24920, 24921, 24922, 24939, 24948,
- 24943, 24933, 24945, 24927, 24925, 24915, 24949, 24985, 24982, 24967,
- 25004, 24980, 24986, 24970, 24977, 25003, 25006, 25036, 25034, 25033,
- 25079, 25032, 25027, 25030, 25018, 25035, 32633, 25037, 25062, 25059,
- 25078, 25082, 25076, 25087, 25085, 25084, 25086, 25088, 25096, 25097,
- 25101, 25100, 25108, 25115, 25118, 25121, 25130, 25134, 25136, 25138,
- 25139, 25153, 25166, 25182, 25187, 25179, 25184, 25192, 25212, 25218,
- 25225, 25214, 25234, 25235, 25238, 25300, 25219, 25236, 25303, 25297,
- 25275, 25295, 25343, 25286, 25812, 25288, 25308, 25292, 25290, 25282,
- 25287, 25243, 25289, 25356, 25326, 25329, 25383, 25346, 25352, 25327,
- 25333, 25424, 25406, 25421, 25628, 25423, 25494, 25486, 25472, 25515,
- 25462, 25507, 25487, 25481, 25503, 25525, 25451, 25449, 25534, 25577,
- 25536, 25542, 25571, 25545, 25554, 25590, 25540, 25622, 25652, 25606,
- 25619, 25638, 25654, 25885, 25623, 25640, 25615, 25703, 25711, 25718,
- 25678, 25898, 25749, 25747, 25765, 25769, 25736, 25788, 25818, 25810,
- 25797, 25799, 25787, 25816, 25794, 25841, 25831, 33289, 25824, 25825,
- 25260, 25827, 25839, 25900, 25846, 25844, 25842, 25850, 25856, 25853,
- 25880, 25884, 25861, 25892, 25891, 25899, 25908, 25909, 25911, 25910,
- 25912, 30027, 25928, 25942, 25941, 25933, 25944, 25950, 25949, 25970,
- 25976, 25986, 25987, 35722, 26011, 26015, 26027, 26039, 26051, 26054,
- 26049, 26052, 26060, 26066, 26075, 26073, 26080, 26081, 26097, 26482,
- 26122, 26115, 26107, 26483, 26165, 26166, 26164, 26140, 26191, 26180,
- 26185, 26177, 26206, 26205, 26212, 26215, 26216, 26207, 26210, 26224,
- 26243, 26248, 26254, 26249, 26244, 26264, 26269, 26305, 26297, 26313,
- 26302, 26300, 26308, 26296, 26326, 26330, 26336, 26175, 26342, 26345,
- 26352, 26357, 26359, 26383, 26390, 26398, 26406, 26407, 38712, 26414,
- 26431, 26422, 26433, 26424, 26423, 26438, 26462, 26464, 26457, 26467,
- 26468, 26505, 26480, 26537, 26492, 26474, 26508, 26507, 26534, 26529,
- 26501, 26551, 26607, 26548, 26604, 26547, 26601, 26552, 26596, 26590,
- 26589, 26594, 26606, 26553, 26574, 26566, 26599, 27292, 26654, 26694,
- 26665, 26688, 26701, 26674, 26702, 26803, 26667, 26713, 26723, 26743,
- 26751, 26783, 26767, 26797, 26772, 26781, 26779, 26755, 27310, 26809,
- 26740, 26805, 26784, 26810, 26895, 26765, 26750, 26881, 26826, 26888,
- 26840, 26914, 26918, 26849, 26892, 26829, 26836, 26855, 26837, 26934,
- 26898, 26884, 26839, 26851, 26917, 26873, 26848, 26863, 26920, 26922,
- 26906, 26915, 26913, 26822, 27001, 26999, 26972, 27000, 26987, 26964,
- 27006, 26990, 26937, 26996, 26941, 26969, 26928, 26977, 26974, 26973,
- 27009, 26986, 27058, 27054, 27088, 27071, 27073, 27091, 27070, 27086,
- 23528, 27082, 27101, 27067, 27075, 27047, 27182, 27025, 27040, 27036,
- 27029, 27060, 27102, 27112, 27138, 27163, 27135, 27402, 27129, 27122,
- 27111, 27141, 27057, 27166, 27117, 27156, 27115, 27146, 27154, 27329,
- 27171, 27155, 27204, 27148, 27250, 27190, 27256, 27207, 27234, 27225,
- 27238, 27208, 27192, 27170, 27280, 27277, 27296, 27268, 27298, 27299,
- 27287, 34327, 27323, 27331, 27330, 27320, 27315, 27308, 27358, 27345,
- 27359, 27306, 27354, 27370, 27387, 27397, 34326, 27386, 27410, 27414,
- 39729, 27423, 27448, 27447, 30428, 27449, 39150, 27463, 27459, 27465,
- 27472, 27481, 27476, 27483, 27487, 27489, 27512, 27513, 27519, 27520,
- 27524, 27523, 27533, 27544, 27541, 27550, 27556, 27562, 27563, 27567,
- 27570, 27569, 27571, 27575, 27580, 27590, 27595, 27603, 27615, 27628,
- 27627, 27635, 27631, 40638, 27656, 27667, 27668, 27675, 27684, 27683,
- 27742, 27733, 27746, 27754, 27778, 27789, 27802, 27777, 27803, 27774,
- 27752, 27763, 27794, 27792, 27844, 27889, 27859, 27837, 27863, 27845,
- 27869, 27822, 27825, 27838, 27834, 27867, 27887, 27865, 27882, 27935,
- 34893, 27958, 27947, 27965, 27960, 27929, 27957, 27955, 27922, 27916,
- 28003, 28051, 28004, 27994, 28025, 27993, 28046, 28053, 28644, 28037,
- 28153, 28181, 28170, 28085, 28103, 28134, 28088, 28102, 28140, 28126,
- 28108, 28136, 28114, 28101, 28154, 28121, 28132, 28117, 28138, 28142,
- 28205, 28270, 28206, 28185, 28274, 28255, 28222, 28195, 28267, 28203,
- 28278, 28237, 28191, 28227, 28218, 28238, 28196, 28415, 28189, 28216,
- 28290, 28330, 28312, 28361, 28343, 28371, 28349, 28335, 28356, 28338,
- 28372, 28373, 28303, 28325, 28354, 28319, 28481, 28433, 28748, 28396,
- 28408, 28414, 28479, 28402, 28465, 28399, 28466, 28364, 28478, 28435,
- 28407, 28550, 28538, 28536, 28545, 28544, 28527, 28507, 28659, 28525,
- 28546, 28540, 28504, 28558, 28561, 28610, 28518, 28595, 28579, 28577,
- 28580, 28601, 28614, 28586, 28639, 28629, 28652, 28628, 28632, 28657,
- 28654, 28635, 28681, 28683, 28666, 28689, 28673, 28687, 28670, 28699,
- 28698, 28532, 28701, 28696, 28703, 28720, 28734, 28722, 28753, 28771,
- 28825, 28818, 28847, 28913, 28844, 28856, 28851, 28846, 28895, 28875,
- 28893, 28889, 28937, 28925, 28956, 28953, 29029, 29013, 29064, 29030,
- 29026, 29004, 29014, 29036, 29071, 29179, 29060, 29077, 29096, 29100,
- 29143, 29113, 29118, 29138, 29129, 29140, 29134, 29152, 29164, 29159,
- 29173, 29180, 29177, 29183, 29197, 29200, 29211, 29224, 29229, 29228,
- 29232, 29234, 29243, 29244, 29247, 29248, 29254, 29259, 29272, 29300,
- 29310, 29314, 29313, 29319, 29330, 29334, 29346, 29351, 29369, 29362,
- 29379, 29382, 29380, 29390, 29394, 29410, 29408, 29409, 29433, 29431,
- 20495, 29463, 29450, 29468, 29462, 29469, 29492, 29487, 29481, 29477,
- 29502, 29518, 29519, 40664, 29527, 29546, 29544, 29552, 29560, 29557,
- 29563, 29562, 29640, 29619, 29646, 29627, 29632, 29669, 29678, 29662,
- 29858, 29701, 29807, 29733, 29688, 29746, 29754, 29781, 29759, 29791,
- 29785, 29761, 29788, 29801, 29808, 29795, 29802, 29814, 29822, 29835,
- 29854, 29863, 29898, 29903, 29908, 29681, 29920, 29923, 29927, 29929,
- 29934, 29938, 29936, 29937, 29944, 29943, 29956, 29955, 29957, 29964,
- 29966, 29965, 29973, 29971, 29982, 29990, 29996, 30012, 30020, 30029,
- 30026, 30025, 30043, 30022, 30042, 30057, 30052, 30055, 30059, 30061,
- 30072, 30070, 30086, 30087, 30068, 30090, 30089, 30082, 30100, 30106,
- 30109, 30117, 30115, 30146, 30131, 30147, 30133, 30141, 30136, 30140,
- 30129, 30157, 30154, 30162, 30169, 30179, 30174, 30206, 30207, 30204,
- 30209, 30192, 30202, 30194, 30195, 30219, 30221, 30217, 30239, 30247,
- 30240, 30241, 30242, 30244, 30260, 30256, 30267, 30279, 30280, 30278,
- 30300, 30296, 30305, 30306, 30312, 30313, 30314, 30311, 30316, 30320,
- 30322, 30326, 30328, 30332, 30336, 30339, 30344, 30347, 30350, 30358,
- 30355, 30361, 30362, 30384, 30388, 30392, 30393, 30394, 30402, 30413,
- 30422, 30418, 30430, 30433, 30437, 30439, 30442, 34351, 30459, 30472,
- 30471, 30468, 30505, 30500, 30494, 30501, 30502, 30491, 30519, 30520,
- 30535, 30554, 30568, 30571, 30555, 30565, 30591, 30590, 30585, 30606,
- 30603, 30609, 30624, 30622, 30640, 30646, 30649, 30655, 30652, 30653,
- 30651, 30663, 30669, 30679, 30682, 30684, 30691, 30702, 30716, 30732,
- 30738, 31014, 30752, 31018, 30789, 30862, 30836, 30854, 30844, 30874,
- 30860, 30883, 30901, 30890, 30895, 30929, 30918, 30923, 30932, 30910,
- 30908, 30917, 30922, 30956, 30951, 30938, 30973, 30964, 30983, 30994,
- 30993, 31001, 31020, 31019, 31040, 31072, 31063, 31071, 31066, 31061,
- 31059, 31098, 31103, 31114, 31133, 31143, 40779, 31146, 31150, 31155,
- 31161, 31162, 31177, 31189, 31207, 31212, 31201, 31203, 31240, 31245,
- 31256, 31257, 31264, 31263, 31104, 31281, 31291, 31294, 31287, 31299,
- 31319, 31305, 31329, 31330, 31337, 40861, 31344, 31353, 31357, 31368,
- 31383, 31381, 31384, 31382, 31401, 31432, 31408, 31414, 31429, 31428,
- 31423, 36995, 31431, 31434, 31437, 31439, 31445, 31443, 31449, 31450,
- 31453, 31457, 31458, 31462, 31469, 31472, 31490, 31503, 31498, 31494,
- 31539, 31512, 31513, 31518, 31541, 31528, 31542, 31568, 31610, 31492,
- 31565, 31499, 31564, 31557, 31605, 31589, 31604, 31591, 31600, 31601,
- 31596, 31598, 31645, 31640, 31647, 31629, 31644, 31642, 31627, 31634,
- 31631, 31581, 31641, 31691, 31681, 31692, 31695, 31668, 31686, 31709,
- 31721, 31761, 31764, 31718, 31717, 31840, 31744, 31751, 31763, 31731,
- 31735, 31767, 31757, 31734, 31779, 31783, 31786, 31775, 31799, 31787,
- 31805, 31820, 31811, 31828, 31823, 31808, 31824, 31832, 31839, 31844,
- 31830, 31845, 31852, 31861, 31875, 31888, 31908, 31917, 31906, 31915,
- 31905, 31912, 31923, 31922, 31921, 31918, 31929, 31933, 31936, 31941,
- 31938, 31960, 31954, 31964, 31970, 39739, 31983, 31986, 31988, 31990,
- 31994, 32006, 32002, 32028, 32021, 32010, 32069, 32075, 32046, 32050,
- 32063, 32053, 32070, 32115, 32086, 32078, 32114, 32104, 32110, 32079,
- 32099, 32147, 32137, 32091, 32143, 32125, 32155, 32186, 32174, 32163,
- 32181, 32199, 32189, 32171, 32317, 32162, 32175, 32220, 32184, 32159,
- 32176, 32216, 32221, 32228, 32222, 32251, 32242, 32225, 32261, 32266,
- 32291, 32289, 32274, 32305, 32287, 32265, 32267, 32290, 32326, 32358,
- 32315, 32309, 32313, 32323, 32311, 32306, 32314, 32359, 32349, 32342,
- 32350, 32345, 32346, 32377, 32362, 32361, 32380, 32379, 32387, 32213,
- 32381, 36782, 32383, 32392, 32393, 32396, 32402, 32400, 32403, 32404,
- 32406, 32398, 32411, 32412, 32568, 32570, 32581, 32588, 32589, 32590,
- 32592, 32593, 32597, 32596, 32600, 32607, 32608, 32616, 32617, 32615,
- 32632, 32642, 32646, 32643, 32648, 32647, 32652, 32660, 32670, 32669,
- 32666, 32675, 32687, 32690, 32697, 32686, 32694, 32696, 35697, 32709,
- 32710, 32714, 32725, 32724, 32737, 32742, 32745, 32755, 32761, 39132,
- 32774, 32772, 32779, 32786, 32792, 32793, 32796, 32801, 32808, 32831,
- 32827, 32842, 32838, 32850, 32856, 32858, 32863, 32866, 32872, 32883,
- 32882, 32880, 32886, 32889, 32893, 32895, 32900, 32902, 32901, 32923,
- 32915, 32922, 32941, 20880, 32940, 32987, 32997, 32985, 32989, 32964,
- 32986, 32982, 33033, 33007, 33009, 33051, 33065, 33059, 33071, 33099,
- 38539, 33094, 33086, 33107, 33105, 33020, 33137, 33134, 33125, 33126,
- 33140, 33155, 33160, 33162, 33152, 33154, 33184, 33173, 33188, 33187,
- 33119, 33171, 33193, 33200, 33205, 33214, 33208, 33213, 33216, 33218,
- 33210, 33225, 33229, 33233, 33241, 33240, 33224, 33242, 33247, 33248,
- 33255, 33274, 33275, 33278, 33281, 33282, 33285, 33287, 33290, 33293,
- 33296, 33302, 33321, 33323, 33336, 33331, 33344, 33369, 33368, 33373,
- 33370, 33375, 33380, 33378, 33384, 33386, 33387, 33326, 33393, 33399,
- 33400, 33406, 33421, 33426, 33451, 33439, 33467, 33452, 33505, 33507,
- 33503, 33490, 33524, 33523, 33530, 33683, 33539, 33531, 33529, 33502,
- 33542, 33500, 33545, 33497, 33589, 33588, 33558, 33586, 33585, 33600,
- 33593, 33616, 33605, 33583, 33579, 33559, 33560, 33669, 33690, 33706,
- 33695, 33698, 33686, 33571, 33678, 33671, 33674, 33660, 33717, 33651,
- 33653, 33696, 33673, 33704, 33780, 33811, 33771, 33742, 33789, 33795,
- 33752, 33803, 33729, 33783, 33799, 33760, 33778, 33805, 33826, 33824,
- 33725, 33848, 34054, 33787, 33901, 33834, 33852, 34138, 33924, 33911,
- 33899, 33965, 33902, 33922, 33897, 33862, 33836, 33903, 33913, 33845,
- 33994, 33890, 33977, 33983, 33951, 34009, 33997, 33979, 34010, 34000,
- 33985, 33990, 34006, 33953, 34081, 34047, 34036, 34071, 34072, 34092,
- 34079, 34069, 34068, 34044, 34112, 34147, 34136, 34120, 34113, 34306,
- 34123, 34133, 34176, 34212, 34184, 34193, 34186, 34216, 34157, 34196,
- 34203, 34282, 34183, 34204, 34167, 34174, 34192, 34249, 34234, 34255,
- 34233, 34256, 34261, 34269, 34277, 34268, 34297, 34314, 34323, 34315,
- 34302, 34298, 34310, 34338, 34330, 34352, 34367, 34381, 20053, 34388,
- 34399, 34407, 34417, 34451, 34467, 34473, 34474, 34443, 34444, 34486,
- 34479, 34500, 34502, 34480, 34505, 34851, 34475, 34516, 34526, 34537,
- 34540, 34527, 34523, 34543, 34578, 34566, 34568, 34560, 34563, 34555,
- 34577, 34569, 34573, 34553, 34570, 34612, 34623, 34615, 34619, 34597,
- 34601, 34586, 34656, 34655, 34680, 34636, 34638, 34676, 34647, 34664,
- 34670, 34649, 34643, 34659, 34666, 34821, 34722, 34719, 34690, 34735,
- 34763, 34749, 34752, 34768, 38614, 34731, 34756, 34739, 34759, 34758,
- 34747, 34799, 34802, 34784, 34831, 34829, 34814, 34806, 34807, 34830,
- 34770, 34833, 34838, 34837, 34850, 34849, 34865, 34870, 34873, 34855,
- 34875, 34884, 34882, 34898, 34905, 34910, 34914, 34923, 34945, 34942,
- 34974, 34933, 34941, 34997, 34930, 34946, 34967, 34962, 34990, 34969,
- 34978, 34957, 34980, 34992, 35007, 34993, 35011, 35012, 35028, 35032,
- 35033, 35037, 35065, 35074, 35068, 35060, 35048, 35058, 35076, 35084,
- 35082, 35091, 35139, 35102, 35109, 35114, 35115, 35137, 35140, 35131,
- 35126, 35128, 35148, 35101, 35168, 35166, 35174, 35172, 35181, 35178,
- 35183, 35188, 35191, 35198, 35203, 35208, 35210, 35219, 35224, 35233,
- 35241, 35238, 35244, 35247, 35250, 35258, 35261, 35263, 35264, 35290,
- 35292, 35293, 35303, 35316, 35320, 35331, 35350, 35344, 35340, 35355,
- 35357, 35365, 35382, 35393, 35419, 35410, 35398, 35400, 35452, 35437,
- 35436, 35426, 35461, 35458, 35460, 35496, 35489, 35473, 35493, 35494,
- 35482, 35491, 35524, 35533, 35522, 35546, 35563, 35571, 35559, 35556,
- 35569, 35604, 35552, 35554, 35575, 35550, 35547, 35596, 35591, 35610,
- 35553, 35606, 35600, 35607, 35616, 35635, 38827, 35622, 35627, 35646,
- 35624, 35649, 35660, 35663, 35662, 35657, 35670, 35675, 35674, 35691,
- 35679, 35692, 35695, 35700, 35709, 35712, 35724, 35726, 35730, 35731,
- 35734, 35737, 35738, 35898, 35905, 35903, 35912, 35916, 35918, 35920,
- 35925, 35938, 35948, 35960, 35962, 35970, 35977, 35973, 35978, 35981,
- 35982, 35988, 35964, 35992, 25117, 36013, 36010, 36029, 36018, 36019,
- 36014, 36022, 36040, 36033, 36068, 36067, 36058, 36093, 36090, 36091,
- 36100, 36101, 36106, 36103, 36111, 36109, 36112, 40782, 36115, 36045,
- 36116, 36118, 36199, 36205, 36209, 36211, 36225, 36249, 36290, 36286,
- 36282, 36303, 36314, 36310, 36300, 36315, 36299, 36330, 36331, 36319,
- 36323, 36348, 36360, 36361, 36351, 36381, 36382, 36368, 36383, 36418,
- 36405, 36400, 36404, 36426, 36423, 36425, 36428, 36432, 36424, 36441,
- 36452, 36448, 36394, 36451, 36437, 36470, 36466, 36476, 36481, 36487,
- 36485, 36484, 36491, 36490, 36499, 36497, 36500, 36505, 36522, 36513,
- 36524, 36528, 36550, 36529, 36542, 36549, 36552, 36555, 36571, 36579,
- 36604, 36603, 36587, 36606, 36618, 36613, 36629, 36626, 36633, 36627,
- 36636, 36639, 36635, 36620, 36646, 36659, 36667, 36665, 36677, 36674,
- 36670, 36684, 36681, 36678, 36686, 36695, 36700, 36706, 36707, 36708,
- 36764, 36767, 36771, 36781, 36783, 36791, 36826, 36837, 36834, 36842,
- 36847, 36999, 36852, 36869, 36857, 36858, 36881, 36885, 36897, 36877,
- 36894, 36886, 36875, 36903, 36918, 36917, 36921, 36856, 36943, 36944,
- 36945, 36946, 36878, 36937, 36926, 36950, 36952, 36958, 36968, 36975,
- 36982, 38568, 36978, 36994, 36989, 36993, 36992, 37002, 37001, 37007,
- 37032, 37039, 37041, 37045, 37090, 37092, 25160, 37083, 37122, 37138,
- 37145, 37170, 37168, 37194, 37206, 37208, 37219, 37221, 37225, 37235,
- 37234, 37259, 37257, 37250, 37282, 37291, 37295, 37290, 37301, 37300,
- 37306, 37312, 37313, 37321, 37323, 37328, 37334, 37343, 37345, 37339,
- 37372, 37365, 37366, 37406, 37375, 37396, 37420, 37397, 37393, 37470,
- 37463, 37445, 37449, 37476, 37448, 37525, 37439, 37451, 37456, 37532,
- 37526, 37523, 37531, 37466, 37583, 37561, 37559, 37609, 37647, 37626,
- 37700, 37678, 37657, 37666, 37658, 37667, 37690, 37685, 37691, 37724,
- 37728, 37756, 37742, 37718, 37808, 37804, 37805, 37780, 37817, 37846,
- 37847, 37864, 37861, 37848, 37827, 37853, 37840, 37832, 37860, 37914,
- 37908, 37907, 37891, 37895, 37904, 37942, 37931, 37941, 37921, 37946,
- 37953, 37970, 37956, 37979, 37984, 37986, 37982, 37994, 37417, 38000,
- 38005, 38007, 38013, 37978, 38012, 38014, 38017, 38015, 38274, 38279,
- 38282, 38292, 38294, 38296, 38297, 38304, 38312, 38311, 38317, 38332,
- 38331, 38329, 38334, 38346, 28662, 38339, 38349, 38348, 38357, 38356,
- 38358, 38364, 38369, 38373, 38370, 38433, 38440, 38446, 38447, 38466,
- 38476, 38479, 38475, 38519, 38492, 38494, 38493, 38495, 38502, 38514,
- 38508, 38541, 38552, 38549, 38551, 38570, 38567, 38577, 38578, 38576,
- 38580, 38582, 38584, 38585, 38606, 38603, 38601, 38605, 35149, 38620,
- 38669, 38613, 38649, 38660, 38662, 38664, 38675, 38670, 38673, 38671,
- 38678, 38681, 38692, 38698, 38704, 38713, 38717, 38718, 38724, 38726,
- 38728, 38722, 38729, 38748, 38752, 38756, 38758, 38760, 21202, 38763,
- 38769, 38777, 38789, 38780, 38785, 38778, 38790, 38795, 38799, 38800,
- 38812, 38824, 38822, 38819, 38835, 38836, 38851, 38854, 38856, 38859,
- 38876, 38893, 40783, 38898, 31455, 38902, 38901, 38927, 38924, 38968,
- 38948, 38945, 38967, 38973, 38982, 38991, 38987, 39019, 39023, 39024,
- 39025, 39028, 39027, 39082, 39087, 39089, 39094, 39108, 39107, 39110,
- 39145, 39147, 39171, 39177, 39186, 39188, 39192, 39201, 39197, 39198,
- 39204, 39200, 39212, 39214, 39229, 39230, 39234, 39241, 39237, 39248,
- 39243, 39249, 39250, 39244, 39253, 39319, 39320, 39333, 39341, 39342,
- 39356, 39391, 39387, 39389, 39384, 39377, 39405, 39406, 39409, 39410,
- 39419, 39416, 39425, 39439, 39429, 39394, 39449, 39467, 39479, 39493,
- 39490, 39488, 39491, 39486, 39509, 39501, 39515, 39511, 39519, 39522,
- 39525, 39524, 39529, 39531, 39530, 39597, 39600, 39612, 39616, 39631,
- 39633, 39635, 39636, 39646, 39647, 39650, 39651, 39654, 39663, 39659,
- 39662, 39668, 39665, 39671, 39675, 39686, 39704, 39706, 39711, 39714,
- 39715, 39717, 39719, 39720, 39721, 39722, 39726, 39727, 39730, 39748,
- 39747, 39759, 39757, 39758, 39761, 39768, 39796, 39827, 39811, 39825,
- 39830, 39831, 39839, 39840, 39848, 39860, 39872, 39882, 39865, 39878,
- 39887, 39889, 39890, 39907, 39906, 39908, 39892, 39905, 39994, 39922,
- 39921, 39920, 39957, 39956, 39945, 39955, 39948, 39942, 39944, 39954,
- 39946, 39940, 39982, 39963, 39973, 39972, 39969, 39984, 40007, 39986,
- 40006, 39998, 40026, 40032, 40039, 40054, 40056, 40167, 40172, 40176,
- 40201, 40200, 40171, 40195, 40198, 40234, 40230, 40367, 40227, 40223,
- 40260, 40213, 40210, 40257, 40255, 40254, 40262, 40264, 40285, 40286,
- 40292, 40273, 40272, 40281, 40306, 40329, 40327, 40363, 40303, 40314,
- 40346, 40356, 40361, 40370, 40388, 40385, 40379, 40376, 40378, 40390,
- 40399, 40386, 40409, 40403, 40440, 40422, 40429, 40431, 40445, 40474,
- 40475, 40478, 40565, 40569, 40573, 40577, 40584, 40587, 40588, 40594,
- 40597, 40593, 40605, 40613, 40617, 40632, 40618, 40621, 38753, 40652,
- 40654, 40655, 40656, 40660, 40668, 40670, 40669, 40672, 40677, 40680,
- 40687, 40692, 40694, 40695, 40697, 40699, 40700, 40701, 40711, 40712,
- 30391, 40725, 40737, 40748, 40766, 40778, 40786, 40788, 40803, 40799,
- 40800, 40801, 40806, 40807, 40812, 40810, 40823, 40818, 40822, 40853,
- 40860, 40864, 22575, 27079, 36953, 29796, 20956, 29081, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 32394, 35100, 37704, 37512, 34012, 20425, 28859, 26161,
- 26824, 37625, 26363, 24389, 20008, 20193, 20220, 20224, 20227, 20281,
- 20310, 20370, 20362, 20378, 20372, 20429, 20544, 20514, 20479, 20510,
- 20550, 20592, 20546, 20628, 20724, 20696, 20810, 20836, 20893, 20926,
- 20972, 21013, 21148, 21158, 21184, 21211, 21248, 21255, 21284, 21362,
- 21395, 21426, 21469, 64014, 21660, 21642, 21673, 21759, 21894, 22361,
- 22373, 22444, 22472, 22471, 64015, 64016, 22686, 22706, 22795, 22867,
- 22875, 22877, 22883, 22948, 22970, 23382, 23488, 29999, 23512, 23532,
- 23582, 23718, 23738, 23797, 23847, 23891, 64017, 23874, 23917, 23992,
- 23993, 24016, 24353, 24372, 24423, 24503, 24542, 24669, 24709, 24714,
- 24798, 24789, 24864, 24818, 24849, 24887, 24880, 24984, 25107, 25254,
- 25589, 25696, 25757, 25806, 25934, 26112, 26133, 26171, 26121, 26158,
- 26142, 26148, 26213, 26199, 26201, 64018, 26227, 26265, 26272, 26290,
- 26303, 26362, 26382, 63785, 26470, 26555, 26706, 26560, 26625, 26692,
- 26831, 64019, 26984, 64020, 27032, 27106, 27184, 27243, 27206, 27251,
- 27262, 27362, 27364, 27606, 27711, 27740, 27782, 27759, 27866, 27908,
- 28039, 28015, 28054, 28076, 28111, 28152, 28146, 28156, 28217, 28252,
- 28199, 28220, 28351, 28552, 28597, 28661, 28677, 28679, 28712, 28805,
- 28843, 28943, 28932, 29020, 28998, 28999, 64021, 29121, 29182, 29361,
- 29374, 29476, 64022, 29559, 29629, 29641, 29654, 29667, 29650, 29703,
- 29685, 29734, 29738, 29737, 29742, 29794, 29833, 29855, 29953, 30063,
- 30338, 30364, 30366, 30363, 30374, 64023, 30534, 21167, 30753, 30798,
- 30820, 30842, 31024, 64024, 64025, 64026, 31124, 64027, 31131, 31441,
- 31463, 64028, 31467, 31646, 64029, 32072, 32092, 32183, 32160, 32214,
- 32338, 32583, 32673, 64030, 33537, 33634, 33663, 33735, 33782, 33864,
- 33972, 34131, 34137, 34155, 64031, 34224, 64032, 64033, 34823, 35061,
- 35346, 35383, 35449, 35495, 35518, 35551, 64034, 35574, 35667, 35711,
- 36080, 36084, 36114, 36214, 64035, 36559, 64036, 64037, 36967, 37086,
- 64038, 37141, 37159, 37338, 37335, 37342, 37357, 37358, 37348, 37349,
- 37382, 37392, 37386, 37434, 37440, 37436, 37454, 37465, 37457, 37433,
- 37479, 37543, 37495, 37496, 37607, 37591, 37593, 37584, 64039, 37589,
- 37600, 37587, 37669, 37665, 37627, 64040, 37662, 37631, 37661, 37634,
- 37744, 37719, 37796, 37830, 37854, 37880, 37937, 37957, 37960, 38290,
- 63964, 64041, 38557, 38575, 38707, 38715, 38723, 38733, 38735, 38737,
- 38741, 38999, 39013, 64042, 64043, 39207, 64044, 39326, 39502, 39641,
- 39644, 39797, 39794, 39823, 39857, 39867, 39936, 40304, 40299, 64045,
- 40473, 40657, 0x0000, 0x0000, 8560, 8561, 8562, 8563, 8564, 8565,
- 8566, 8567, 8568, 8569, 65506, 65508, 65287, 65282, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 8560, 8561, 8562, 8563,
- 8564, 8565, 8566, 8567, 8568, 8569, 8544, 8545, 8546, 8547,
- 8548, 8549, 8550, 8551, 8552, 8553, 65506, 65508, 65287, 65282,
- 12849, 8470, 8481, 8757, 32394, 35100, 37704, 37512, 34012, 20425,
- 28859, 26161, 26824, 37625, 26363, 24389, 20008, 20193, 20220, 20224,
- 20227, 20281, 20310, 20370, 20362, 20378, 20372, 20429, 20544, 20514,
- 20479, 20510, 20550, 20592, 20546, 20628, 20724, 20696, 20810, 20836,
- 20893, 20926, 20972, 21013, 21148, 21158, 21184, 21211, 21248, 21255,
- 21284, 21362, 21395, 21426, 21469, 64014, 21660, 21642, 21673, 21759,
- 21894, 22361, 22373, 22444, 22472, 22471, 64015, 64016, 22686, 22706,
- 22795, 22867, 22875, 22877, 22883, 22948, 22970, 23382, 23488, 29999,
- 23512, 23532, 23582, 23718, 23738, 23797, 23847, 23891, 64017, 23874,
- 23917, 23992, 23993, 24016, 24353, 24372, 24423, 24503, 24542, 24669,
- 24709, 24714, 24798, 24789, 24864, 24818, 24849, 24887, 24880, 24984,
- 25107, 25254, 25589, 25696, 25757, 25806, 25934, 26112, 26133, 26171,
- 26121, 26158, 26142, 26148, 26213, 26199, 26201, 64018, 26227, 26265,
- 26272, 26290, 26303, 26362, 26382, 63785, 26470, 26555, 26706, 26560,
- 26625, 26692, 26831, 64019, 26984, 64020, 27032, 27106, 27184, 27243,
- 27206, 27251, 27262, 27362, 27364, 27606, 27711, 27740, 27782, 27759,
- 27866, 27908, 28039, 28015, 28054, 28076, 28111, 28152, 28146, 28156,
- 28217, 28252, 28199, 28220, 28351, 28552, 28597, 28661, 28677, 28679,
- 28712, 28805, 28843, 28943, 28932, 29020, 28998, 28999, 64021, 29121,
- 29182, 29361, 29374, 29476, 64022, 29559, 29629, 29641, 29654, 29667,
- 29650, 29703, 29685, 29734, 29738, 29737, 29742, 29794, 29833, 29855,
- 29953, 30063, 30338, 30364, 30366, 30363, 30374, 64023, 30534, 21167,
- 30753, 30798, 30820, 30842, 31024, 64024, 64025, 64026, 31124, 64027,
- 31131, 31441, 31463, 64028, 31467, 31646, 64029, 32072, 32092, 32183,
- 32160, 32214, 32338, 32583, 32673, 64030, 33537, 33634, 33663, 33735,
- 33782, 33864, 33972, 34131, 34137, 34155, 64031, 34224, 64032, 64033,
- 34823, 35061, 35346, 35383, 35449, 35495, 35518, 35551, 64034, 35574,
- 35667, 35711, 36080, 36084, 36114, 36214, 64035, 36559, 64036, 64037,
- 36967, 37086, 64038, 37141, 37159, 37338, 37335, 37342, 37357, 37358,
- 37348, 37349, 37382, 37392, 37386, 37434, 37440, 37436, 37454, 37465,
- 37457, 37433, 37479, 37543, 37495, 37496, 37607, 37591, 37593, 37584,
- 64039, 37589, 37600, 37587, 37669, 37665, 37627, 64040, 37662, 37631,
- 37661, 37634, 37744, 37719, 37796, 37830, 37854, 37880, 37937, 37957,
- 37960, 38290, 63964, 64041, 38557, 38575, 38707, 38715, 38723, 38733,
- 38735, 38737, 38741, 38999, 39013, 64042, 64043, 39207, 64044, 39326,
- 39502, 39641, 39644, 39797, 39794, 39823, 39857, 39867, 39936, 40304,
- 40299, 64045, 40473, 40657, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-
-};
-
-static const unsigned long myhtml_encoding_map_jis0212[] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 728, 711,
- 184, 729, 733, 175, 731, 730, 65374, 900, 901, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 161, 166, 191,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 186, 170,
- 169, 174, 8482, 164, 8470, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 902, 904, 905, 906, 938, 0x0000,
- 908, 0x0000, 910, 939, 0x0000, 911, 0x0000, 0x0000, 0x0000, 0x0000,
- 940, 941, 942, 943, 970, 912, 972, 962, 973, 971,
- 944, 974, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 1026, 1027, 1028,
- 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1038, 1039,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 1106, 1107, 1108, 1109, 1110,
- 1111, 1112, 1113, 1114, 1115, 1116, 1118, 1119, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 198, 272, 0x0000, 294, 0x0000, 306, 0x0000, 321,
- 319, 0x0000, 330, 216, 338, 0x0000, 358, 222, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 230, 273, 240, 295, 305, 307,
- 312, 322, 320, 329, 331, 248, 339, 223, 359, 254,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 193, 192, 196, 194,
- 258, 461, 256, 260, 197, 195, 262, 264, 268, 199,
- 266, 270, 201, 200, 203, 202, 282, 278, 274, 280,
- 0x0000, 284, 286, 290, 288, 292, 205, 204, 207, 206,
- 463, 304, 298, 302, 296, 308, 310, 313, 317, 315,
- 323, 327, 325, 209, 211, 210, 214, 212, 465, 336,
- 332, 213, 340, 344, 342, 346, 348, 352, 350, 356,
- 354, 218, 217, 220, 219, 364, 467, 368, 362, 370,
- 366, 360, 471, 475, 473, 469, 372, 221, 376, 374,
- 377, 381, 379, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 225, 224, 228, 226, 259, 462, 257, 261, 229, 227,
- 263, 265, 269, 231, 267, 271, 233, 232, 235, 234,
- 283, 279, 275, 281, 501, 285, 287, 0x0000, 289, 293,
- 237, 236, 239, 238, 464, 0x0000, 299, 303, 297, 309,
- 311, 314, 318, 316, 324, 328, 326, 241, 243, 242,
- 246, 244, 466, 337, 333, 245, 341, 345, 343, 347,
- 349, 353, 351, 357, 355, 250, 249, 252, 251, 365,
- 468, 369, 363, 371, 367, 361, 472, 476, 474, 470,
- 373, 253, 255, 375, 378, 382, 380, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 19970, 19972, 19973, 19980, 19986, 19999, 20003, 20004, 20008, 20011,
- 20014, 20015, 20016, 20021, 20032, 20033, 20036, 20039, 20049, 20058,
- 20060, 20067, 20072, 20073, 20084, 20085, 20089, 20095, 20109, 20118,
- 20119, 20125, 20143, 20153, 20163, 20176, 20186, 20187, 20192, 20193,
- 20194, 20200, 20207, 20209, 20211, 20213, 20221, 20222, 20223, 20224,
- 20226, 20227, 20232, 20235, 20236, 20242, 20245, 20246, 20247, 20249,
- 20270, 20273, 20320, 20275, 20277, 20279, 20281, 20283, 20286, 20288,
- 20290, 20296, 20297, 20299, 20300, 20306, 20308, 20310, 20312, 20319,
- 20323, 20330, 20332, 20334, 20337, 20343, 20344, 20345, 20346, 20349,
- 20350, 20353, 20354, 20356, 20357, 20361, 20362, 20364, 20366, 20368,
- 20370, 20371, 20372, 20375, 20377, 20378, 20382, 20383, 20402, 20407,
- 20409, 20411, 20412, 20413, 20414, 20416, 20417, 20421, 20422, 20424,
- 20425, 20427, 20428, 20429, 20431, 20434, 20444, 20448, 20450, 20464,
- 20466, 20476, 20477, 20479, 20480, 20481, 20484, 20487, 20490, 20492,
- 20494, 20496, 20499, 20503, 20504, 20507, 20508, 20509, 20510, 20514,
- 20519, 20526, 20528, 20530, 20531, 20533, 20544, 20545, 20546, 20549,
- 20550, 20554, 20556, 20558, 20561, 20562, 20563, 20567, 20569, 20575,
- 20576, 20578, 20579, 20582, 20583, 20586, 20589, 20592, 20593, 20539,
- 20609, 20611, 20612, 20614, 20618, 20622, 20623, 20624, 20626, 20627,
- 20628, 20630, 20635, 20636, 20638, 20639, 20640, 20641, 20642, 20650,
- 20655, 20656, 20665, 20666, 20669, 20672, 20675, 20676, 20679, 20684,
- 20686, 20688, 20691, 20692, 20696, 20700, 20701, 20703, 20706, 20708,
- 20710, 20712, 20713, 20719, 20721, 20726, 20730, 20734, 20739, 20742,
- 20743, 20744, 20747, 20748, 20749, 20750, 20722, 20752, 20759, 20761,
- 20763, 20764, 20765, 20766, 20771, 20775, 20776, 20780, 20781, 20783,
- 20785, 20787, 20788, 20789, 20792, 20793, 20802, 20810, 20815, 20819,
- 20821, 20823, 20824, 20831, 20836, 20838, 20862, 20867, 20868, 20875,
- 20878, 20888, 20893, 20897, 20899, 20909, 20920, 20922, 20924, 20926,
- 20927, 20930, 20936, 20943, 20945, 20946, 20947, 20949, 20952, 20958,
- 20962, 20965, 20974, 20978, 20979, 20980, 20983, 20993, 20994, 20997,
- 21010, 21011, 21013, 21014, 21016, 21026, 21032, 21041, 21042, 21045,
- 21052, 21061, 21065, 21077, 21079, 21080, 21082, 21084, 21087, 21088,
- 21089, 21094, 21102, 21111, 21112, 21113, 21120, 21122, 21125, 21130,
- 21132, 21139, 21141, 21142, 21143, 21144, 21146, 21148, 21156, 21157,
- 21158, 21159, 21167, 21168, 21174, 21175, 21176, 21178, 21179, 21181,
- 21184, 21188, 21190, 21192, 21196, 21199, 21201, 21204, 21206, 21211,
- 21212, 21217, 21221, 21224, 21225, 21226, 21228, 21232, 21233, 21236,
- 21238, 21239, 21248, 21251, 21258, 21259, 21260, 21265, 21267, 21272,
- 21275, 21276, 21278, 21279, 21285, 21287, 21288, 21289, 21291, 21292,
- 21293, 21296, 21298, 21301, 21308, 21309, 21310, 21314, 21324, 21323,
- 21337, 21339, 21345, 21347, 21349, 21356, 21357, 21362, 21369, 21374,
- 21379, 21383, 21384, 21390, 21395, 21396, 21401, 21405, 21409, 21412,
- 21418, 21419, 21423, 21426, 21428, 21429, 21431, 21432, 21434, 21437,
- 21440, 21445, 21455, 21458, 21459, 21461, 21466, 21469, 21470, 21472,
- 21478, 21479, 21493, 21506, 21523, 21530, 21537, 21543, 21544, 21546,
- 21551, 21553, 21556, 21557, 21571, 21572, 21575, 21581, 21583, 21598,
- 21602, 21604, 21606, 21607, 21609, 21611, 21613, 21614, 21620, 21631,
- 21633, 21635, 21637, 21640, 21641, 21645, 21649, 21653, 21654, 21660,
- 21663, 21665, 21670, 21671, 21673, 21674, 21677, 21678, 21681, 21687,
- 21689, 21690, 21691, 21695, 21702, 21706, 21709, 21710, 21728, 21738,
- 21740, 21743, 21750, 21756, 21758, 21759, 21760, 21761, 21765, 21768,
- 21769, 21772, 21773, 21774, 21781, 21802, 21803, 21810, 21813, 21814,
- 21819, 21820, 21821, 21825, 21831, 21833, 21834, 21837, 21840, 21841,
- 21848, 21850, 21851, 21854, 21856, 21857, 21860, 21862, 21887, 21889,
- 21890, 21894, 21896, 21902, 21903, 21905, 21906, 21907, 21908, 21911,
- 21923, 21924, 21933, 21938, 21951, 21953, 21955, 21958, 21961, 21963,
- 21964, 21966, 21969, 21970, 21971, 21975, 21976, 21979, 21982, 21986,
- 21993, 22006, 22015, 22021, 22024, 22026, 22029, 22030, 22031, 22032,
- 22033, 22034, 22041, 22060, 22064, 22067, 22069, 22071, 22073, 22075,
- 22076, 22077, 22079, 22080, 22081, 22083, 22084, 22086, 22089, 22091,
- 22093, 22095, 22100, 22110, 22112, 22113, 22114, 22115, 22118, 22121,
- 22125, 22127, 22129, 22130, 22133, 22148, 22149, 22152, 22155, 22156,
- 22165, 22169, 22170, 22173, 22174, 22175, 22182, 22183, 22184, 22185,
- 22187, 22188, 22189, 22193, 22195, 22199, 22206, 22213, 22217, 22218,
- 22219, 22223, 22224, 22220, 22221, 22233, 22236, 22237, 22239, 22241,
- 22244, 22245, 22246, 22247, 22248, 22257, 22251, 22253, 22262, 22263,
- 22273, 22274, 22279, 22282, 22284, 22289, 22293, 22298, 22299, 22301,
- 22304, 22306, 22307, 22308, 22309, 22313, 22314, 22316, 22318, 22319,
- 22323, 22324, 22333, 22334, 22335, 22341, 22342, 22348, 22349, 22354,
- 22370, 22373, 22375, 22376, 22379, 22381, 22382, 22383, 22384, 22385,
- 22387, 22388, 22389, 22391, 22393, 22394, 22395, 22396, 22398, 22401,
- 22403, 22412, 22420, 22423, 22425, 22426, 22428, 22429, 22430, 22431,
- 22433, 22421, 22439, 22440, 22441, 22444, 22456, 22461, 22471, 22472,
- 22476, 22479, 22485, 22493, 22494, 22500, 22502, 22503, 22505, 22509,
- 22512, 22517, 22518, 22520, 22525, 22526, 22527, 22531, 22532, 22536,
- 22537, 22497, 22540, 22541, 22555, 22558, 22559, 22560, 22566, 22567,
- 22573, 22578, 22585, 22591, 22601, 22604, 22605, 22607, 22608, 22613,
- 22623, 22625, 22628, 22631, 22632, 22648, 22652, 22655, 22656, 22657,
- 22663, 22664, 22665, 22666, 22668, 22669, 22671, 22672, 22676, 22678,
- 22685, 22688, 22689, 22690, 22694, 22697, 22705, 22706, 22724, 22716,
- 22722, 22728, 22733, 22734, 22736, 22738, 22740, 22742, 22746, 22749,
- 22753, 22754, 22761, 22771, 22789, 22790, 22795, 22796, 22802, 22803,
- 22804, 34369, 22813, 22817, 22819, 22820, 22824, 22831, 22832, 22835,
- 22837, 22838, 22847, 22851, 22854, 22866, 22867, 22873, 22875, 22877,
- 22878, 22879, 22881, 22883, 22891, 22893, 22895, 22898, 22901, 22902,
- 22905, 22907, 22908, 22923, 22924, 22926, 22930, 22933, 22935, 22943,
- 22948, 22951, 22957, 22958, 22959, 22960, 22963, 22967, 22970, 22972,
- 22977, 22979, 22980, 22984, 22986, 22989, 22994, 23005, 23006, 23007,
- 23011, 23012, 23015, 23022, 23023, 23025, 23026, 23028, 23031, 23040,
- 23044, 23052, 23053, 23054, 23058, 23059, 23070, 23075, 23076, 23079,
- 23080, 23082, 23085, 23088, 23108, 23109, 23111, 23112, 23116, 23120,
- 23125, 23134, 23139, 23141, 23143, 23149, 23159, 23162, 23163, 23166,
- 23179, 23184, 23187, 23190, 23193, 23196, 23198, 23199, 23200, 23202,
- 23207, 23212, 23217, 23218, 23219, 23221, 23224, 23226, 23227, 23231,
- 23236, 23238, 23240, 23247, 23258, 23260, 23264, 23269, 23274, 23278,
- 23285, 23286, 23293, 23296, 23297, 23304, 23319, 23348, 23321, 23323,
- 23325, 23329, 23333, 23341, 23352, 23361, 23371, 23372, 23378, 23382,
- 23390, 23400, 23406, 23407, 23420, 23421, 23422, 23423, 23425, 23428,
- 23430, 23434, 23438, 23440, 23441, 23443, 23444, 23446, 23464, 23465,
- 23468, 23469, 23471, 23473, 23474, 23479, 23482, 23484, 23488, 23489,
- 23501, 23503, 23510, 23511, 23512, 23513, 23514, 23520, 23535, 23537,
- 23540, 23549, 23564, 23575, 23582, 23583, 23587, 23590, 23593, 23595,
- 23596, 23598, 23600, 23602, 23605, 23606, 23641, 23642, 23644, 23650,
- 23651, 23655, 23656, 23657, 23661, 23664, 23668, 23669, 23674, 23675,
- 23676, 23677, 23687, 23688, 23690, 23695, 23698, 23709, 23711, 23712,
- 23714, 23715, 23718, 23722, 23730, 23732, 23733, 23738, 23753, 23755,
- 23762, 23773, 23767, 23790, 23793, 23794, 23796, 23809, 23814, 23821,
- 23826, 23851, 23843, 23844, 23846, 23847, 23857, 23860, 23865, 23869,
- 23871, 23874, 23875, 23878, 23880, 23893, 23889, 23897, 23882, 23903,
- 23904, 23905, 23906, 23908, 23914, 23917, 23920, 23929, 23930, 23934,
- 23935, 23937, 23939, 23944, 23946, 23954, 23955, 23956, 23957, 23961,
- 23963, 23967, 23968, 23975, 23979, 23984, 23988, 23992, 23993, 24003,
- 24007, 24011, 24016, 24014, 24024, 24025, 24032, 24036, 24041, 24056,
- 24057, 24064, 24071, 24077, 24082, 24084, 24085, 24088, 24095, 24096,
- 24110, 24104, 24114, 24117, 24126, 24139, 24144, 24137, 24145, 24150,
- 24152, 24155, 24156, 24158, 24168, 24170, 24171, 24172, 24173, 24174,
- 24176, 24192, 24203, 24206, 24226, 24228, 24229, 24232, 24234, 24236,
- 24241, 24243, 24253, 24254, 24255, 24262, 24268, 24267, 24270, 24273,
- 24274, 24276, 24277, 24284, 24286, 24293, 24299, 24322, 24326, 24327,
- 24328, 24334, 24345, 24348, 24349, 24353, 24354, 24355, 24356, 24360,
- 24363, 24364, 24366, 24368, 24372, 24374, 24379, 24381, 24383, 24384,
- 24388, 24389, 24391, 24397, 24400, 24404, 24408, 24411, 24416, 24419,
- 24420, 24423, 24431, 24434, 24436, 24437, 24440, 24442, 24445, 24446,
- 24457, 24461, 24463, 24470, 24476, 24477, 24482, 24487, 24491, 24484,
- 24492, 24495, 24496, 24497, 24504, 24516, 24519, 24520, 24521, 24523,
- 24528, 24529, 24530, 24531, 24532, 24542, 24545, 24546, 24552, 24553,
- 24554, 24556, 24557, 24558, 24559, 24562, 24563, 24566, 24570, 24572,
- 24583, 24586, 24589, 24595, 24596, 24599, 24600, 24602, 24607, 24612,
- 24621, 24627, 24629, 24640, 24647, 24648, 24649, 24652, 24657, 24660,
- 24662, 24663, 24669, 24673, 24679, 24689, 24702, 24703, 24706, 24710,
- 24712, 24714, 24718, 24721, 24723, 24725, 24728, 24733, 24734, 24738,
- 24740, 24741, 24744, 24752, 24753, 24759, 24763, 24766, 24770, 24772,
- 24776, 24777, 24778, 24779, 24782, 24783, 24788, 24789, 24793, 24795,
- 24797, 24798, 24802, 24805, 24818, 24821, 24824, 24828, 24829, 24834,
- 24839, 24842, 24844, 24848, 24849, 24850, 24851, 24852, 24854, 24855,
- 24857, 24860, 24862, 24866, 24874, 24875, 24880, 24881, 24885, 24886,
- 24887, 24889, 24897, 24901, 24902, 24905, 24926, 24928, 24940, 24946,
- 24952, 24955, 24956, 24959, 24960, 24961, 24963, 24964, 24971, 24973,
- 24978, 24979, 24983, 24984, 24988, 24989, 24991, 24992, 24997, 25000,
- 25002, 25005, 25016, 25017, 25020, 25024, 25025, 25026, 25038, 25039,
- 25045, 25052, 25053, 25054, 25055, 25057, 25058, 25063, 25065, 25061,
- 25068, 25069, 25071, 25089, 25091, 25092, 25095, 25107, 25109, 25116,
- 25120, 25122, 25123, 25127, 25129, 25131, 25145, 25149, 25154, 25155,
- 25156, 25158, 25164, 25168, 25169, 25170, 25172, 25174, 25178, 25180,
- 25188, 25197, 25199, 25203, 25210, 25213, 25229, 25230, 25231, 25232,
- 25254, 25256, 25267, 25270, 25271, 25274, 25278, 25279, 25284, 25294,
- 25301, 25302, 25306, 25322, 25330, 25332, 25340, 25341, 25347, 25348,
- 25354, 25355, 25357, 25360, 25363, 25366, 25368, 25385, 25386, 25389,
- 25397, 25398, 25401, 25404, 25409, 25410, 25411, 25412, 25414, 25418,
- 25419, 25422, 25426, 25427, 25428, 25432, 25435, 25445, 25446, 25452,
- 25453, 25457, 25460, 25461, 25464, 25468, 25469, 25471, 25474, 25476,
- 25479, 25482, 25488, 25492, 25493, 25497, 25498, 25502, 25508, 25510,
- 25517, 25518, 25519, 25533, 25537, 25541, 25544, 25550, 25553, 25555,
- 25556, 25557, 25564, 25568, 25573, 25578, 25580, 25586, 25587, 25589,
- 25592, 25593, 25609, 25610, 25616, 25618, 25620, 25624, 25630, 25632,
- 25634, 25636, 25637, 25641, 25642, 25647, 25648, 25653, 25661, 25663,
- 25675, 25679, 25681, 25682, 25683, 25684, 25690, 25691, 25692, 25693,
- 25695, 25696, 25697, 25699, 25709, 25715, 25716, 25723, 25725, 25733,
- 25735, 25743, 25744, 25745, 25752, 25753, 25755, 25757, 25759, 25761,
- 25763, 25766, 25768, 25772, 25779, 25789, 25790, 25791, 25796, 25801,
- 25802, 25803, 25804, 25806, 25808, 25809, 25813, 25815, 25828, 25829,
- 25833, 25834, 25837, 25840, 25845, 25847, 25851, 25855, 25857, 25860,
- 25864, 25865, 25866, 25871, 25875, 25876, 25878, 25881, 25883, 25886,
- 25887, 25890, 25894, 25897, 25902, 25905, 25914, 25916, 25917, 25923,
- 25927, 25929, 25936, 25938, 25940, 25951, 25952, 25959, 25963, 25978,
- 25981, 25985, 25989, 25994, 26002, 26005, 26008, 26013, 26016, 26019,
- 26022, 26030, 26034, 26035, 26036, 26047, 26050, 26056, 26057, 26062,
- 26064, 26068, 26070, 26072, 26079, 26096, 26098, 26100, 26101, 26105,
- 26110, 26111, 26112, 26116, 26120, 26121, 26125, 26129, 26130, 26133,
- 26134, 26141, 26142, 26145, 26146, 26147, 26148, 26150, 26153, 26154,
- 26155, 26156, 26158, 26160, 26161, 26163, 26169, 26167, 26176, 26181,
- 26182, 26186, 26188, 26193, 26190, 26199, 26200, 26201, 26203, 26204,
- 26208, 26209, 26363, 26218, 26219, 26220, 26238, 26227, 26229, 26239,
- 26231, 26232, 26233, 26235, 26240, 26236, 26251, 26252, 26253, 26256,
- 26258, 26265, 26266, 26267, 26268, 26271, 26272, 26276, 26285, 26289,
- 26290, 26293, 26299, 26303, 26304, 26306, 26307, 26312, 26316, 26318,
- 26319, 26324, 26331, 26335, 26344, 26347, 26348, 26350, 26362, 26373,
- 26375, 26382, 26387, 26393, 26396, 26400, 26402, 26419, 26430, 26437,
- 26439, 26440, 26444, 26452, 26453, 26461, 26470, 26476, 26478, 26484,
- 26486, 26491, 26497, 26500, 26510, 26511, 26513, 26515, 26518, 26520,
- 26521, 26523, 26544, 26545, 26546, 26549, 26555, 26556, 26557, 26617,
- 26560, 26562, 26563, 26565, 26568, 26569, 26578, 26583, 26585, 26588,
- 26593, 26598, 26608, 26610, 26614, 26615, 26706, 26644, 26649, 26653,
- 26655, 26664, 26663, 26668, 26669, 26671, 26672, 26673, 26675, 26683,
- 26687, 26692, 26693, 26698, 26700, 26709, 26711, 26712, 26715, 26731,
- 26734, 26735, 26736, 26737, 26738, 26741, 26745, 26746, 26747, 26748,
- 26754, 26756, 26758, 26760, 26774, 26776, 26778, 26780, 26785, 26787,
- 26789, 26793, 26794, 26798, 26802, 26811, 26821, 26824, 26828, 26831,
- 26832, 26833, 26835, 26838, 26841, 26844, 26845, 26853, 26856, 26858,
- 26859, 26860, 26861, 26864, 26865, 26869, 26870, 26875, 26876, 26877,
- 26886, 26889, 26890, 26896, 26897, 26899, 26902, 26903, 26929, 26931,
- 26933, 26936, 26939, 26946, 26949, 26953, 26958, 26967, 26971, 26979,
- 26980, 26981, 26982, 26984, 26985, 26988, 26992, 26993, 26994, 27002,
- 27003, 27007, 27008, 27021, 27026, 27030, 27032, 27041, 27045, 27046,
- 27048, 27051, 27053, 27055, 27063, 27064, 27066, 27068, 27077, 27080,
- 27089, 27094, 27095, 27106, 27109, 27118, 27119, 27121, 27123, 27125,
- 27134, 27136, 27137, 27139, 27151, 27153, 27157, 27162, 27165, 27168,
- 27172, 27176, 27184, 27186, 27188, 27191, 27195, 27198, 27199, 27205,
- 27206, 27209, 27210, 27214, 27216, 27217, 27218, 27221, 27222, 27227,
- 27236, 27239, 27242, 27249, 27251, 27262, 27265, 27267, 27270, 27271,
- 27273, 27275, 27281, 27291, 27293, 27294, 27295, 27301, 27307, 27311,
- 27312, 27313, 27316, 27325, 27326, 27327, 27334, 27337, 27336, 27340,
- 27344, 27348, 27349, 27350, 27356, 27357, 27364, 27367, 27372, 27376,
- 27377, 27378, 27388, 27389, 27394, 27395, 27398, 27399, 27401, 27407,
- 27408, 27409, 27415, 27419, 27422, 27428, 27432, 27435, 27436, 27439,
- 27445, 27446, 27451, 27455, 27462, 27466, 27469, 27474, 27478, 27480,
- 27485, 27488, 27495, 27499, 27502, 27504, 27509, 27517, 27518, 27522,
- 27525, 27543, 27547, 27551, 27552, 27554, 27555, 27560, 27561, 27564,
- 27565, 27566, 27568, 27576, 27577, 27581, 27582, 27587, 27588, 27593,
- 27596, 27606, 27610, 27617, 27619, 27622, 27623, 27630, 27633, 27639,
- 27641, 27647, 27650, 27652, 27653, 27657, 27661, 27662, 27664, 27666,
- 27673, 27679, 27686, 27687, 27688, 27692, 27694, 27699, 27701, 27702,
- 27706, 27707, 27711, 27722, 27723, 27725, 27727, 27730, 27732, 27737,
- 27739, 27740, 27755, 27757, 27759, 27764, 27766, 27768, 27769, 27771,
- 27781, 27782, 27783, 27785, 27796, 27797, 27799, 27800, 27804, 27807,
- 27824, 27826, 27828, 27842, 27846, 27853, 27855, 27856, 27857, 27858,
- 27860, 27862, 27866, 27868, 27872, 27879, 27881, 27883, 27884, 27886,
- 27890, 27892, 27908, 27911, 27914, 27918, 27919, 27921, 27923, 27930,
- 27942, 27943, 27944, 27751, 27950, 27951, 27953, 27961, 27964, 27967,
- 27991, 27998, 27999, 28001, 28005, 28007, 28015, 28016, 28028, 28034,
- 28039, 28049, 28050, 28052, 28054, 28055, 28056, 28074, 28076, 28084,
- 28087, 28089, 28093, 28095, 28100, 28104, 28106, 28110, 28111, 28118,
- 28123, 28125, 28127, 28128, 28130, 28133, 28137, 28143, 28144, 28148,
- 28150, 28156, 28160, 28164, 28190, 28194, 28199, 28210, 28214, 28217,
- 28219, 28220, 28228, 28229, 28232, 28233, 28235, 28239, 28241, 28242,
- 28243, 28244, 28247, 28252, 28253, 28254, 28258, 28259, 28264, 28275,
- 28283, 28285, 28301, 28307, 28313, 28320, 28327, 28333, 28334, 28337,
- 28339, 28347, 28351, 28352, 28353, 28355, 28359, 28360, 28362, 28365,
- 28366, 28367, 28395, 28397, 28398, 28409, 28411, 28413, 28420, 28424,
- 28426, 28428, 28429, 28438, 28440, 28442, 28443, 28454, 28457, 28458,
- 28463, 28464, 28467, 28470, 28475, 28476, 28461, 28495, 28497, 28498,
- 28499, 28503, 28505, 28506, 28509, 28510, 28513, 28514, 28520, 28524,
- 28541, 28542, 28547, 28551, 28552, 28555, 28556, 28557, 28560, 28562,
- 28563, 28564, 28566, 28570, 28575, 28576, 28581, 28582, 28583, 28584,
- 28590, 28591, 28592, 28597, 28598, 28604, 28613, 28615, 28616, 28618,
- 28634, 28638, 28648, 28649, 28656, 28661, 28665, 28668, 28669, 28672,
- 28677, 28678, 28679, 28685, 28695, 28704, 28707, 28719, 28724, 28727,
- 28729, 28732, 28739, 28740, 28744, 28745, 28746, 28747, 28756, 28757,
- 28765, 28766, 28750, 28772, 28773, 28780, 28782, 28789, 28790, 28798,
- 28801, 28805, 28806, 28820, 28821, 28822, 28823, 28824, 28827, 28836,
- 28843, 28848, 28849, 28852, 28855, 28874, 28881, 28883, 28884, 28885,
- 28886, 28888, 28892, 28900, 28922, 28931, 28932, 28933, 28934, 28935,
- 28939, 28940, 28943, 28958, 28960, 28971, 28973, 28975, 28976, 28977,
- 28984, 28993, 28997, 28998, 28999, 29002, 29003, 29008, 29010, 29015,
- 29018, 29020, 29022, 29024, 29032, 29049, 29056, 29061, 29063, 29068,
- 29074, 29082, 29083, 29088, 29090, 29103, 29104, 29106, 29107, 29114,
- 29119, 29120, 29121, 29124, 29131, 29132, 29139, 29142, 29145, 29146,
- 29148, 29176, 29182, 29184, 29191, 29192, 29193, 29203, 29207, 29210,
- 29213, 29215, 29220, 29227, 29231, 29236, 29240, 29241, 29249, 29250,
- 29251, 29253, 29262, 29263, 29264, 29267, 29269, 29270, 29274, 29276,
- 29278, 29280, 29283, 29288, 29291, 29294, 29295, 29297, 29303, 29304,
- 29307, 29308, 29311, 29316, 29321, 29325, 29326, 29331, 29339, 29352,
- 29357, 29358, 29361, 29364, 29374, 29377, 29383, 29385, 29388, 29397,
- 29398, 29400, 29407, 29413, 29427, 29428, 29434, 29435, 29438, 29442,
- 29444, 29445, 29447, 29451, 29453, 29458, 29459, 29464, 29465, 29470,
- 29474, 29476, 29479, 29480, 29484, 29489, 29490, 29493, 29498, 29499,
- 29501, 29507, 29517, 29520, 29522, 29526, 29528, 29533, 29534, 29535,
- 29536, 29542, 29543, 29545, 29547, 29548, 29550, 29551, 29553, 29559,
- 29561, 29564, 29568, 29569, 29571, 29573, 29574, 29582, 29584, 29587,
- 29589, 29591, 29592, 29596, 29598, 29599, 29600, 29602, 29605, 29606,
- 29610, 29611, 29613, 29621, 29623, 29625, 29628, 29629, 29631, 29637,
- 29638, 29641, 29643, 29644, 29647, 29650, 29651, 29654, 29657, 29661,
- 29665, 29667, 29670, 29671, 29673, 29684, 29685, 29687, 29689, 29690,
- 29691, 29693, 29695, 29696, 29697, 29700, 29703, 29706, 29713, 29722,
- 29723, 29732, 29734, 29736, 29737, 29738, 29739, 29740, 29741, 29742,
- 29743, 29744, 29745, 29753, 29760, 29763, 29764, 29766, 29767, 29771,
- 29773, 29777, 29778, 29783, 29789, 29794, 29798, 29799, 29800, 29803,
- 29805, 29806, 29809, 29810, 29824, 29825, 29829, 29830, 29831, 29833,
- 29839, 29840, 29841, 29842, 29848, 29849, 29850, 29852, 29855, 29856,
- 29857, 29859, 29862, 29864, 29865, 29866, 29867, 29870, 29871, 29873,
- 29874, 29877, 29881, 29883, 29887, 29896, 29897, 29900, 29904, 29907,
- 29912, 29914, 29915, 29918, 29919, 29924, 29928, 29930, 29931, 29935,
- 29940, 29946, 29947, 29948, 29951, 29958, 29970, 29974, 29975, 29984,
- 29985, 29988, 29991, 29993, 29994, 29999, 30006, 30009, 30013, 30014,
- 30015, 30016, 30019, 30023, 30024, 30030, 30032, 30034, 30039, 30046,
- 30047, 30049, 30063, 30065, 30073, 30074, 30075, 30076, 30077, 30078,
- 30081, 30085, 30096, 30098, 30099, 30101, 30105, 30108, 30114, 30116,
- 30132, 30138, 30143, 30144, 30145, 30148, 30150, 30156, 30158, 30159,
- 30167, 30172, 30175, 30176, 30177, 30180, 30183, 30188, 30190, 30191,
- 30193, 30201, 30208, 30210, 30211, 30212, 30215, 30216, 30218, 30220,
- 30223, 30226, 30227, 30229, 30230, 30233, 30235, 30236, 30237, 30238,
- 30243, 30245, 30246, 30249, 30253, 30258, 30259, 30261, 30264, 30265,
- 30266, 30268, 30282, 30272, 30273, 30275, 30276, 30277, 30281, 30283,
- 30293, 30297, 30303, 30308, 30309, 30317, 30318, 30319, 30321, 30324,
- 30337, 30341, 30348, 30349, 30357, 30363, 30364, 30365, 30367, 30368,
- 30370, 30371, 30372, 30373, 30374, 30375, 30376, 30378, 30381, 30397,
- 30401, 30405, 30409, 30411, 30412, 30414, 30420, 30425, 30432, 30438,
- 30440, 30444, 30448, 30449, 30454, 30457, 30460, 30464, 30470, 30474,
- 30478, 30482, 30484, 30485, 30487, 30489, 30490, 30492, 30498, 30504,
- 30509, 30510, 30511, 30516, 30517, 30518, 30521, 30525, 30526, 30530,
- 30533, 30534, 30538, 30541, 30542, 30543, 30546, 30550, 30551, 30556,
- 30558, 30559, 30560, 30562, 30564, 30567, 30570, 30572, 30576, 30578,
- 30579, 30580, 30586, 30589, 30592, 30596, 30604, 30605, 30612, 30613,
- 30614, 30618, 30623, 30626, 30631, 30634, 30638, 30639, 30641, 30645,
- 30654, 30659, 30665, 30673, 30674, 30677, 30681, 30686, 30687, 30688,
- 30692, 30694, 30698, 30700, 30704, 30705, 30708, 30712, 30715, 30725,
- 30726, 30729, 30733, 30734, 30737, 30749, 30753, 30754, 30755, 30765,
- 30766, 30768, 30773, 30775, 30787, 30788, 30791, 30792, 30796, 30798,
- 30802, 30812, 30814, 30816, 30817, 30819, 30820, 30824, 30826, 30830,
- 30842, 30846, 30858, 30863, 30868, 30872, 30881, 30877, 30878, 30879,
- 30884, 30888, 30892, 30893, 30896, 30897, 30898, 30899, 30907, 30909,
- 30911, 30919, 30920, 30921, 30924, 30926, 30930, 30931, 30933, 30934,
- 30948, 30939, 30943, 30944, 30945, 30950, 30954, 30962, 30963, 30976,
- 30966, 30967, 30970, 30971, 30975, 30982, 30988, 30992, 31002, 31004,
- 31006, 31007, 31008, 31013, 31015, 31017, 31021, 31025, 31028, 31029,
- 31035, 31037, 31039, 31044, 31045, 31046, 31050, 31051, 31055, 31057,
- 31060, 31064, 31067, 31068, 31079, 31081, 31083, 31090, 31097, 31099,
- 31100, 31102, 31115, 31116, 31121, 31123, 31124, 31125, 31126, 31128,
- 31131, 31132, 31137, 31144, 31145, 31147, 31151, 31153, 31156, 31160,
- 31163, 31170, 31172, 31175, 31176, 31178, 31183, 31188, 31190, 31194,
- 31197, 31198, 31200, 31202, 31205, 31210, 31211, 31213, 31217, 31224,
- 31228, 31234, 31235, 31239, 31241, 31242, 31244, 31249, 31253, 31259,
- 31262, 31265, 31271, 31275, 31277, 31279, 31280, 31284, 31285, 31288,
- 31289, 31290, 31300, 31301, 31303, 31304, 31308, 31317, 31318, 31321,
- 31324, 31325, 31327, 31328, 31333, 31335, 31338, 31341, 31349, 31352,
- 31358, 31360, 31362, 31365, 31366, 31370, 31371, 31376, 31377, 31380,
- 31390, 31392, 31395, 31404, 31411, 31413, 31417, 31419, 31420, 31430,
- 31433, 31436, 31438, 31441, 31451, 31464, 31465, 31467, 31468, 31473,
- 31476, 31483, 31485, 31486, 31495, 31508, 31519, 31523, 31527, 31529,
- 31530, 31531, 31533, 31534, 31535, 31536, 31537, 31540, 31549, 31551,
- 31552, 31553, 31559, 31566, 31573, 31584, 31588, 31590, 31593, 31594,
- 31597, 31599, 31602, 31603, 31607, 31620, 31625, 31630, 31632, 31633,
- 31638, 31643, 31646, 31648, 31653, 31660, 31663, 31664, 31666, 31669,
- 31670, 31674, 31675, 31676, 31677, 31682, 31685, 31688, 31690, 31700,
- 31702, 31703, 31705, 31706, 31707, 31720, 31722, 31730, 31732, 31733,
- 31736, 31737, 31738, 31740, 31742, 31745, 31746, 31747, 31748, 31750,
- 31753, 31755, 31756, 31758, 31759, 31769, 31771, 31776, 31781, 31782,
- 31784, 31788, 31793, 31795, 31796, 31798, 31801, 31802, 31814, 31818,
- 31829, 31825, 31826, 31827, 31833, 31834, 31835, 31836, 31837, 31838,
- 31841, 31843, 31847, 31849, 31853, 31854, 31856, 31858, 31865, 31868,
- 31869, 31878, 31879, 31887, 31892, 31902, 31904, 31910, 31920, 31926,
- 31927, 31930, 31931, 31932, 31935, 31940, 31943, 31944, 31945, 31949,
- 31951, 31955, 31956, 31957, 31959, 31961, 31962, 31965, 31974, 31977,
- 31979, 31989, 32003, 32007, 32008, 32009, 32015, 32017, 32018, 32019,
- 32022, 32029, 32030, 32035, 32038, 32042, 32045, 32049, 32060, 32061,
- 32062, 32064, 32065, 32071, 32072, 32077, 32081, 32083, 32087, 32089,
- 32090, 32092, 32093, 32101, 32103, 32106, 32112, 32120, 32122, 32123,
- 32127, 32129, 32130, 32131, 32133, 32134, 32136, 32139, 32140, 32141,
- 32145, 32150, 32151, 32157, 32158, 32166, 32167, 32170, 32179, 32182,
- 32183, 32185, 32194, 32195, 32196, 32197, 32198, 32204, 32205, 32206,
- 32215, 32217, 32256, 32226, 32229, 32230, 32234, 32235, 32237, 32241,
- 32245, 32246, 32249, 32250, 32264, 32272, 32273, 32277, 32279, 32284,
- 32285, 32288, 32295, 32296, 32300, 32301, 32303, 32307, 32310, 32319,
- 32324, 32325, 32327, 32334, 32336, 32338, 32344, 32351, 32353, 32354,
- 32357, 32363, 32366, 32367, 32371, 32376, 32382, 32385, 32390, 32391,
- 32394, 32397, 32401, 32405, 32408, 32410, 32413, 32414, 32572, 32571,
- 32573, 32574, 32575, 32579, 32580, 32583, 32591, 32594, 32595, 32603,
- 32604, 32605, 32609, 32611, 32612, 32613, 32614, 32621, 32625, 32637,
- 32638, 32639, 32640, 32651, 32653, 32655, 32656, 32657, 32662, 32663,
- 32668, 32673, 32674, 32678, 32682, 32685, 32692, 32700, 32703, 32704,
- 32707, 32712, 32718, 32719, 32731, 32735, 32739, 32741, 32744, 32748,
- 32750, 32751, 32754, 32762, 32765, 32766, 32767, 32775, 32776, 32778,
- 32781, 32782, 32783, 32785, 32787, 32788, 32790, 32797, 32798, 32799,
- 32800, 32804, 32806, 32812, 32814, 32816, 32820, 32821, 32823, 32825,
- 32826, 32828, 32830, 32832, 32836, 32864, 32868, 32870, 32877, 32881,
- 32885, 32897, 32904, 32910, 32924, 32926, 32934, 32935, 32939, 32952,
- 32953, 32968, 32973, 32975, 32978, 32980, 32981, 32983, 32984, 32992,
- 33005, 33006, 33008, 33010, 33011, 33014, 33017, 33018, 33022, 33027,
- 33035, 33046, 33047, 33048, 33052, 33054, 33056, 33060, 33063, 33068,
- 33072, 33077, 33082, 33084, 33093, 33095, 33098, 33100, 33106, 33111,
- 33120, 33121, 33127, 33128, 33129, 33133, 33135, 33143, 33153, 33168,
- 33156, 33157, 33158, 33163, 33166, 33174, 33176, 33179, 33182, 33186,
- 33198, 33202, 33204, 33211, 33227, 33219, 33221, 33226, 33230, 33231,
- 33237, 33239, 33243, 33245, 33246, 33249, 33252, 33259, 33260, 33264,
- 33265, 33266, 33269, 33270, 33272, 33273, 33277, 33279, 33280, 33283,
- 33295, 33299, 33300, 33305, 33306, 33309, 33313, 33314, 33320, 33330,
- 33332, 33338, 33347, 33348, 33349, 33350, 33355, 33358, 33359, 33361,
- 33366, 33372, 33376, 33379, 33383, 33389, 33396, 33403, 33405, 33407,
- 33408, 33409, 33411, 33412, 33415, 33417, 33418, 33422, 33425, 33428,
- 33430, 33432, 33434, 33435, 33440, 33441, 33443, 33444, 33447, 33448,
- 33449, 33450, 33454, 33456, 33458, 33460, 33463, 33466, 33468, 33470,
- 33471, 33478, 33488, 33493, 33498, 33504, 33506, 33508, 33512, 33514,
- 33517, 33519, 33526, 33527, 33533, 33534, 33536, 33537, 33543, 33544,
- 33546, 33547, 33620, 33563, 33565, 33566, 33567, 33569, 33570, 33580,
- 33581, 33582, 33584, 33587, 33591, 33594, 33596, 33597, 33602, 33603,
- 33604, 33607, 33613, 33614, 33617, 33621, 33622, 33623, 33648, 33656,
- 33661, 33663, 33664, 33666, 33668, 33670, 33677, 33682, 33684, 33685,
- 33688, 33689, 33691, 33692, 33693, 33702, 33703, 33705, 33708, 33726,
- 33727, 33728, 33735, 33737, 33743, 33744, 33745, 33748, 33757, 33619,
- 33768, 33770, 33782, 33784, 33785, 33788, 33793, 33798, 33802, 33807,
- 33809, 33813, 33817, 33709, 33839, 33849, 33861, 33863, 33864, 33866,
- 33869, 33871, 33873, 33874, 33878, 33880, 33881, 33882, 33884, 33888,
- 33892, 33893, 33895, 33898, 33904, 33907, 33908, 33910, 33912, 33916,
- 33917, 33921, 33925, 33938, 33939, 33941, 33950, 33958, 33960, 33961,
- 33962, 33967, 33969, 33972, 33978, 33981, 33982, 33984, 33986, 33991,
- 33992, 33996, 33999, 34003, 34012, 34023, 34026, 34031, 34032, 34033,
- 34034, 34039, 34098, 34042, 34043, 34045, 34050, 34051, 34055, 34060,
- 34062, 34064, 34076, 34078, 34082, 34083, 34084, 34085, 34087, 34090,
- 34091, 34095, 34099, 34100, 34102, 34111, 34118, 34127, 34128, 34129,
- 34130, 34131, 34134, 34137, 34140, 34141, 34142, 34143, 34144, 34145,
- 34146, 34148, 34155, 34159, 34169, 34170, 34171, 34173, 34175, 34177,
- 34181, 34182, 34185, 34187, 34188, 34191, 34195, 34200, 34205, 34207,
- 34208, 34210, 34213, 34215, 34228, 34230, 34231, 34232, 34236, 34237,
- 34238, 34239, 34242, 34247, 34250, 34251, 34254, 34221, 34264, 34266,
- 34271, 34272, 34278, 34280, 34285, 34291, 34294, 34300, 34303, 34304,
- 34308, 34309, 34317, 34318, 34320, 34321, 34322, 34328, 34329, 34331,
- 34334, 34337, 34343, 34345, 34358, 34360, 34362, 34364, 34365, 34368,
- 34370, 34374, 34386, 34387, 34390, 34391, 34392, 34393, 34397, 34400,
- 34401, 34402, 34403, 34404, 34409, 34412, 34415, 34421, 34422, 34423,
- 34426, 34445, 34449, 34454, 34456, 34458, 34460, 34465, 34470, 34471,
- 34472, 34477, 34481, 34483, 34484, 34485, 34487, 34488, 34489, 34495,
- 34496, 34497, 34499, 34501, 34513, 34514, 34517, 34519, 34522, 34524,
- 34528, 34531, 34533, 34535, 34440, 34554, 34556, 34557, 34564, 34565,
- 34567, 34571, 34574, 34575, 34576, 34579, 34580, 34585, 34590, 34591,
- 34593, 34595, 34600, 34606, 34607, 34609, 34610, 34617, 34618, 34620,
- 34621, 34622, 34624, 34627, 34629, 34637, 34648, 34653, 34657, 34660,
- 34661, 34671, 34673, 34674, 34683, 34691, 34692, 34693, 34694, 34695,
- 34696, 34697, 34699, 34700, 34704, 34707, 34709, 34711, 34712, 34713,
- 34718, 34720, 34723, 34727, 34732, 34733, 34734, 34737, 34741, 34750,
- 34751, 34753, 34760, 34761, 34762, 34766, 34773, 34774, 34777, 34778,
- 34780, 34783, 34786, 34787, 34788, 34794, 34795, 34797, 34801, 34803,
- 34808, 34810, 34815, 34817, 34819, 34822, 34825, 34826, 34827, 34832,
- 34841, 34834, 34835, 34836, 34840, 34842, 34843, 34844, 34846, 34847,
- 34856, 34861, 34862, 34864, 34866, 34869, 34874, 34876, 34881, 34883,
- 34885, 34888, 34889, 34890, 34891, 34894, 34897, 34901, 34902, 34904,
- 34906, 34908, 34911, 34912, 34916, 34921, 34929, 34937, 34939, 34944,
- 34968, 34970, 34971, 34972, 34975, 34976, 34984, 34986, 35002, 35005,
- 35006, 35008, 35018, 35019, 35020, 35021, 35022, 35025, 35026, 35027,
- 35035, 35038, 35047, 35055, 35056, 35057, 35061, 35063, 35073, 35078,
- 35085, 35086, 35087, 35093, 35094, 35096, 35097, 35098, 35100, 35104,
- 35110, 35111, 35112, 35120, 35121, 35122, 35125, 35129, 35130, 35134,
- 35136, 35138, 35141, 35142, 35145, 35151, 35154, 35159, 35162, 35163,
- 35164, 35169, 35170, 35171, 35179, 35182, 35184, 35187, 35189, 35194,
- 35195, 35196, 35197, 35209, 35213, 35216, 35220, 35221, 35227, 35228,
- 35231, 35232, 35237, 35248, 35252, 35253, 35254, 35255, 35260, 35284,
- 35285, 35286, 35287, 35288, 35301, 35305, 35307, 35309, 35313, 35315,
- 35318, 35321, 35325, 35327, 35332, 35333, 35335, 35343, 35345, 35346,
- 35348, 35349, 35358, 35360, 35362, 35364, 35366, 35371, 35372, 35375,
- 35381, 35383, 35389, 35390, 35392, 35395, 35397, 35399, 35401, 35405,
- 35406, 35411, 35414, 35415, 35416, 35420, 35421, 35425, 35429, 35431,
- 35445, 35446, 35447, 35449, 35450, 35451, 35454, 35455, 35456, 35459,
- 35462, 35467, 35471, 35472, 35474, 35478, 35479, 35481, 35487, 35495,
- 35497, 35502, 35503, 35507, 35510, 35511, 35515, 35518, 35523, 35526,
- 35528, 35529, 35530, 35537, 35539, 35540, 35541, 35543, 35549, 35551,
- 35564, 35568, 35572, 35573, 35574, 35580, 35583, 35589, 35590, 35595,
- 35601, 35612, 35614, 35615, 35594, 35629, 35632, 35639, 35644, 35650,
- 35651, 35652, 35653, 35654, 35656, 35666, 35667, 35668, 35673, 35661,
- 35678, 35683, 35693, 35702, 35704, 35705, 35708, 35710, 35713, 35716,
- 35717, 35723, 35725, 35727, 35732, 35733, 35740, 35742, 35743, 35896,
- 35897, 35901, 35902, 35909, 35911, 35913, 35915, 35919, 35921, 35923,
- 35924, 35927, 35928, 35931, 35933, 35929, 35939, 35940, 35942, 35944,
- 35945, 35949, 35955, 35957, 35958, 35963, 35966, 35974, 35975, 35979,
- 35984, 35986, 35987, 35993, 35995, 35996, 36004, 36025, 36026, 36037,
- 36038, 36041, 36043, 36047, 36054, 36053, 36057, 36061, 36065, 36072,
- 36076, 36079, 36080, 36082, 36085, 36087, 36088, 36094, 36095, 36097,
- 36099, 36105, 36114, 36119, 36123, 36197, 36201, 36204, 36206, 36223,
- 36226, 36228, 36232, 36237, 36240, 36241, 36245, 36254, 36255, 36256,
- 36262, 36267, 36268, 36271, 36274, 36277, 36279, 36281, 36283, 36288,
- 36293, 36294, 36295, 36296, 36298, 36302, 36305, 36308, 36309, 36311,
- 36313, 36324, 36325, 36327, 36332, 36336, 36284, 36337, 36338, 36340,
- 36349, 36353, 36356, 36357, 36358, 36363, 36369, 36372, 36374, 36384,
- 36385, 36386, 36387, 36390, 36391, 36401, 36403, 36406, 36407, 36408,
- 36409, 36413, 36416, 36417, 36427, 36429, 36430, 36431, 36436, 36443,
- 36444, 36445, 36446, 36449, 36450, 36457, 36460, 36461, 36463, 36464,
- 36465, 36473, 36474, 36475, 36482, 36483, 36489, 36496, 36498, 36501,
- 36506, 36507, 36509, 36510, 36514, 36519, 36521, 36525, 36526, 36531,
- 36533, 36538, 36539, 36544, 36545, 36547, 36548, 36551, 36559, 36561,
- 36564, 36572, 36584, 36590, 36592, 36593, 36599, 36601, 36602, 36589,
- 36608, 36610, 36615, 36616, 36623, 36624, 36630, 36631, 36632, 36638,
- 36640, 36641, 36643, 36645, 36647, 36648, 36652, 36653, 36654, 36660,
- 36661, 36662, 36663, 36666, 36672, 36673, 36675, 36679, 36687, 36689,
- 36690, 36691, 36692, 36693, 36696, 36701, 36702, 36709, 36765, 36768,
- 36769, 36772, 36773, 36774, 36789, 36790, 36792, 36798, 36800, 36801,
- 36806, 36810, 36811, 36813, 36816, 36818, 36819, 36821, 36832, 36835,
- 36836, 36840, 36846, 36849, 36853, 36854, 36859, 36862, 36866, 36868,
- 36872, 36876, 36888, 36891, 36904, 36905, 36911, 36906, 36908, 36909,
- 36915, 36916, 36919, 36927, 36931, 36932, 36940, 36955, 36957, 36962,
- 36966, 36967, 36972, 36976, 36980, 36985, 36997, 37000, 37003, 37004,
- 37006, 37008, 37013, 37015, 37016, 37017, 37019, 37024, 37025, 37026,
- 37029, 37040, 37042, 37043, 37044, 37046, 37053, 37068, 37054, 37059,
- 37060, 37061, 37063, 37064, 37077, 37079, 37080, 37081, 37084, 37085,
- 37087, 37093, 37074, 37110, 37099, 37103, 37104, 37108, 37118, 37119,
- 37120, 37124, 37125, 37126, 37128, 37133, 37136, 37140, 37142, 37143,
- 37144, 37146, 37148, 37150, 37152, 37157, 37154, 37155, 37159, 37161,
- 37166, 37167, 37169, 37172, 37174, 37175, 37177, 37178, 37180, 37181,
- 37187, 37191, 37192, 37199, 37203, 37207, 37209, 37210, 37211, 37217,
- 37220, 37223, 37229, 37236, 37241, 37242, 37243, 37249, 37251, 37253,
- 37254, 37258, 37262, 37265, 37267, 37268, 37269, 37272, 37278, 37281,
- 37286, 37288, 37292, 37293, 37294, 37296, 37297, 37298, 37299, 37302,
- 37307, 37308, 37309, 37311, 37314, 37315, 37317, 37331, 37332, 37335,
- 37337, 37338, 37342, 37348, 37349, 37353, 37354, 37356, 37357, 37358,
- 37359, 37360, 37361, 37367, 37369, 37371, 37373, 37376, 37377, 37380,
- 37381, 37382, 37383, 37385, 37386, 37388, 37392, 37394, 37395, 37398,
- 37400, 37404, 37405, 37411, 37412, 37413, 37414, 37416, 37422, 37423,
- 37424, 37427, 37429, 37430, 37432, 37433, 37434, 37436, 37438, 37440,
- 37442, 37443, 37446, 37447, 37450, 37453, 37454, 37455, 37457, 37464,
- 37465, 37468, 37469, 37472, 37473, 37477, 37479, 37480, 37481, 37486,
- 37487, 37488, 37493, 37494, 37495, 37496, 37497, 37499, 37500, 37501,
- 37503, 37512, 37513, 37514, 37517, 37518, 37522, 37527, 37529, 37535,
- 37536, 37540, 37541, 37543, 37544, 37547, 37551, 37554, 37558, 37560,
- 37562, 37563, 37564, 37565, 37567, 37568, 37569, 37570, 37571, 37573,
- 37574, 37575, 37576, 37579, 37580, 37581, 37582, 37584, 37587, 37589,
- 37591, 37592, 37593, 37596, 37597, 37599, 37600, 37601, 37603, 37605,
- 37607, 37608, 37612, 37614, 37616, 37625, 37627, 37631, 37632, 37634,
- 37640, 37645, 37649, 37652, 37653, 37660, 37661, 37662, 37663, 37665,
- 37668, 37669, 37671, 37673, 37674, 37683, 37684, 37686, 37687, 37703,
- 37704, 37705, 37712, 37713, 37714, 37717, 37719, 37720, 37722, 37726,
- 37732, 37733, 37735, 37737, 37738, 37741, 37743, 37744, 37745, 37747,
- 37748, 37750, 37754, 37757, 37759, 37760, 37761, 37762, 37768, 37770,
- 37771, 37773, 37775, 37778, 37781, 37784, 37787, 37790, 37793, 37795,
- 37796, 37798, 37800, 37803, 37812, 37813, 37814, 37818, 37801, 37825,
- 37828, 37829, 37830, 37831, 37833, 37834, 37835, 37836, 37837, 37843,
- 37849, 37852, 37854, 37855, 37858, 37862, 37863, 37881, 37879, 37880,
- 37882, 37883, 37885, 37889, 37890, 37892, 37896, 37897, 37901, 37902,
- 37903, 37909, 37910, 37911, 37919, 37934, 37935, 37937, 37938, 37939,
- 37940, 37947, 37951, 37949, 37955, 37957, 37960, 37962, 37964, 37973,
- 37977, 37980, 37983, 37985, 37987, 37992, 37995, 37997, 37998, 37999,
- 38001, 38002, 38020, 38019, 38264, 38265, 38270, 38276, 38280, 38284,
- 38285, 38286, 38301, 38302, 38303, 38305, 38310, 38313, 38315, 38316,
- 38324, 38326, 38330, 38333, 38335, 38342, 38344, 38345, 38347, 38352,
- 38353, 38354, 38355, 38361, 38362, 38365, 38366, 38367, 38368, 38372,
- 38374, 38429, 38430, 38434, 38436, 38437, 38438, 38444, 38449, 38451,
- 38455, 38456, 38457, 38458, 38460, 38461, 38465, 38482, 38484, 38486,
- 38487, 38488, 38497, 38510, 38516, 38523, 38524, 38526, 38527, 38529,
- 38530, 38531, 38532, 38537, 38545, 38550, 38554, 38557, 38559, 38564,
- 38565, 38566, 38569, 38574, 38575, 38579, 38586, 38602, 38610, 23986,
- 38616, 38618, 38621, 38622, 38623, 38633, 38639, 38641, 38650, 38658,
- 38659, 38661, 38665, 38682, 38683, 38685, 38689, 38690, 38691, 38696,
- 38705, 38707, 38721, 38723, 38730, 38734, 38735, 38741, 38743, 38744,
- 38746, 38747, 38755, 38759, 38762, 38766, 38771, 38774, 38775, 38776,
- 38779, 38781, 38783, 38784, 38793, 38805, 38806, 38807, 38809, 38810,
- 38814, 38815, 38818, 38828, 38830, 38833, 38834, 38837, 38838, 38840,
- 38841, 38842, 38844, 38846, 38847, 38849, 38852, 38853, 38855, 38857,
- 38858, 38860, 38861, 38862, 38864, 38865, 38868, 38871, 38872, 38873,
- 38877, 38878, 38880, 38875, 38881, 38884, 38895, 38897, 38900, 38903,
- 38904, 38906, 38919, 38922, 38937, 38925, 38926, 38932, 38934, 38940,
- 38942, 38944, 38947, 38950, 38955, 38958, 38959, 38960, 38962, 38963,
- 38965, 38949, 38974, 38980, 38983, 38986, 38993, 38994, 38995, 38998,
- 38999, 39001, 39002, 39010, 39011, 39013, 39014, 39018, 39020, 39083,
- 39085, 39086, 39088, 39092, 39095, 39096, 39098, 39099, 39103, 39106,
- 39109, 39112, 39116, 39137, 39139, 39141, 39142, 39143, 39146, 39155,
- 39158, 39170, 39175, 39176, 39185, 39189, 39190, 39191, 39194, 39195,
- 39196, 39199, 39202, 39206, 39207, 39211, 39217, 39218, 39219, 39220,
- 39221, 39225, 39226, 39227, 39228, 39232, 39233, 39238, 39239, 39240,
- 39245, 39246, 39252, 39256, 39257, 39259, 39260, 39262, 39263, 39264,
- 39323, 39325, 39327, 39334, 39344, 39345, 39346, 39349, 39353, 39354,
- 39357, 39359, 39363, 39369, 39379, 39380, 39385, 39386, 39388, 39390,
- 39399, 39402, 39403, 39404, 39408, 39412, 39413, 39417, 39421, 39422,
- 39426, 39427, 39428, 39435, 39436, 39440, 39441, 39446, 39454, 39456,
- 39458, 39459, 39460, 39463, 39469, 39470, 39475, 39477, 39478, 39480,
- 39495, 39489, 39492, 39498, 39499, 39500, 39502, 39505, 39508, 39510,
- 39517, 39594, 39596, 39598, 39599, 39602, 39604, 39605, 39606, 39609,
- 39611, 39614, 39615, 39617, 39619, 39622, 39624, 39630, 39632, 39634,
- 39637, 39638, 39639, 39643, 39644, 39648, 39652, 39653, 39655, 39657,
- 39660, 39666, 39667, 39669, 39673, 39674, 39677, 39679, 39680, 39681,
- 39682, 39683, 39684, 39685, 39688, 39689, 39691, 39692, 39693, 39694,
- 39696, 39698, 39702, 39705, 39707, 39708, 39712, 39718, 39723, 39725,
- 39731, 39732, 39733, 39735, 39737, 39738, 39741, 39752, 39755, 39756,
- 39765, 39766, 39767, 39771, 39774, 39777, 39779, 39781, 39782, 39784,
- 39786, 39787, 39788, 39789, 39790, 39795, 39797, 39799, 39800, 39801,
- 39807, 39808, 39812, 39813, 39814, 39815, 39817, 39818, 39819, 39821,
- 39823, 39824, 39828, 39834, 39837, 39838, 39846, 39847, 39849, 39852,
- 39856, 39857, 39858, 39863, 39864, 39867, 39868, 39870, 39871, 39873,
- 39879, 39880, 39886, 39888, 39895, 39896, 39901, 39903, 39909, 39911,
- 39914, 39915, 39919, 39923, 39927, 39928, 39929, 39930, 39933, 39935,
- 39936, 39938, 39947, 39951, 39953, 39958, 39960, 39961, 39962, 39964,
- 39966, 39970, 39971, 39974, 39975, 39976, 39977, 39978, 39985, 39989,
- 39990, 39991, 39997, 40001, 40003, 40004, 40005, 40009, 40010, 40014,
- 40015, 40016, 40019, 40020, 40022, 40024, 40027, 40029, 40030, 40031,
- 40035, 40041, 40042, 40028, 40043, 40040, 40046, 40048, 40050, 40053,
- 40055, 40059, 40166, 40178, 40183, 40185, 40203, 40194, 40209, 40215,
- 40216, 40220, 40221, 40222, 40239, 40240, 40242, 40243, 40244, 40250,
- 40252, 40261, 40253, 40258, 40259, 40263, 40266, 40275, 40276, 40287,
- 40291, 40290, 40293, 40297, 40298, 40299, 40304, 40310, 40311, 40315,
- 40316, 40318, 40323, 40324, 40326, 40330, 40333, 40334, 40338, 40339,
- 40341, 40342, 40343, 40344, 40353, 40362, 40364, 40366, 40369, 40373,
- 40377, 40380, 40383, 40387, 40391, 40393, 40394, 40404, 40405, 40406,
- 40407, 40410, 40414, 40415, 40416, 40421, 40423, 40425, 40427, 40430,
- 40432, 40435, 40436, 40446, 40458, 40450, 40455, 40462, 40464, 40465,
- 40466, 40469, 40470, 40473, 40476, 40477, 40570, 40571, 40572, 40576,
- 40578, 40579, 40580, 40581, 40583, 40590, 40591, 40598, 40600, 40603,
- 40606, 40612, 40616, 40620, 40622, 40623, 40624, 40627, 40628, 40629,
- 40646, 40648, 40651, 40661, 40671, 40676, 40679, 40684, 40685, 40686,
- 40688, 40689, 40690, 40693, 40696, 40703, 40706, 40707, 40713, 40719,
- 40720, 40721, 40722, 40724, 40726, 40727, 40729, 40730, 40731, 40735,
- 40738, 40742, 40746, 40747, 40751, 40753, 40754, 40756, 40759, 40761,
- 40762, 40764, 40765, 40767, 40769, 40771, 40772, 40773, 40774, 40775,
- 40787, 40789, 40790, 40791, 40792, 40794, 40797, 40798, 40808, 40809,
- 40813, 40814, 40815, 40816, 40817, 40819, 40821, 40826, 40829, 40847,
- 40848, 40849, 40850, 40852, 40854, 40855, 40862, 40865, 40866, 40867,
- 40869, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static const unsigned long myhtml_encoding_map_koi8_r[] = {
- 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524,
- 9532, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 8992,
- 9632, 8729, 8730, 8776, 8804, 8805, 160, 8993, 176, 178,
- 183, 247, 9552, 9553, 9554, 1105, 9555, 9556, 9557, 9558,
- 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,
- 9569, 1025, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577,
- 9578, 9579, 9580, 169, 1102, 1072, 1073, 1094, 1076, 1077,
- 1092, 1075, 1093, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
- 1087, 1103, 1088, 1089, 1090, 1091, 1078, 1074, 1100, 1099,
- 1079, 1096, 1101, 1097, 1095, 1098, 1070, 1040, 1041, 1062,
- 1044, 1045, 1060, 1043, 1061, 1048, 1049, 1050, 1051, 1052,
- 1053, 1054, 1055, 1071, 1056, 1057, 1058, 1059, 1046, 1042,
- 1068, 1067, 1047, 1064, 1069, 1065, 1063, 1066,
-};
-
-static const unsigned long myhtml_encoding_map_koi8_u[] = {
- 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524,
- 9532, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 8992,
- 9632, 8729, 8730, 8776, 8804, 8805, 160, 8993, 176, 178,
- 183, 247, 9552, 9553, 9554, 1105, 1108, 9556, 1110, 1111,
- 9559, 9560, 9561, 9562, 9563, 1169, 1118, 9566, 9567, 9568,
- 9569, 1025, 1028, 9571, 1030, 1031, 9574, 9575, 9576, 9577,
- 9578, 1168, 1038, 169, 1102, 1072, 1073, 1094, 1076, 1077,
- 1092, 1075, 1093, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
- 1087, 1103, 1088, 1089, 1090, 1091, 1078, 1074, 1100, 1099,
- 1079, 1096, 1101, 1097, 1095, 1098, 1070, 1040, 1041, 1062,
- 1044, 1045, 1060, 1043, 1061, 1048, 1049, 1050, 1051, 1052,
- 1053, 1054, 1055, 1071, 1056, 1057, 1058, 1059, 1046, 1042,
- 1068, 1067, 1047, 1064, 1069, 1065, 1063, 1066,
-};
-
-static const unsigned long myhtml_encoding_map_macintosh[] = {
- 196, 197, 199, 201, 209, 214, 220, 225, 224, 226,
- 228, 227, 229, 231, 233, 232, 234, 235, 237, 236,
- 238, 239, 241, 243, 242, 244, 246, 245, 250, 249,
- 251, 252, 8224, 176, 162, 163, 167, 8226, 182, 223,
- 174, 169, 8482, 180, 168, 8800, 198, 216, 8734, 177,
- 8804, 8805, 165, 181, 8706, 8721, 8719, 960, 8747, 170,
- 186, 937, 230, 248, 191, 161, 172, 8730, 402, 8776,
- 8710, 171, 187, 8230, 160, 192, 195, 213, 338, 339,
- 8211, 8212, 8220, 8221, 8216, 8217, 247, 9674, 255, 376,
- 8260, 8364, 8249, 8250, 64257, 64258, 8225, 183, 8218, 8222,
- 8240, 194, 202, 193, 203, 200, 205, 206, 207, 204,
- 211, 212, 63743, 210, 218, 219, 217, 305, 710, 732,
- 175, 728, 729, 730, 184, 733, 731, 711,
-};
-
-static const unsigned long myhtml_encoding_map_windows_1250[] = {
- 8364, 129, 8218, 131, 8222, 8230, 8224, 8225, 136, 8240,
- 352, 8249, 346, 356, 381, 377, 144, 8216, 8217, 8220,
- 8221, 8226, 8211, 8212, 152, 8482, 353, 8250, 347, 357,
- 382, 378, 160, 711, 728, 321, 164, 260, 166, 167,
- 168, 169, 350, 171, 172, 173, 174, 379, 176, 177,
- 731, 322, 180, 181, 182, 183, 184, 261, 351, 187,
- 317, 733, 318, 380, 340, 193, 194, 258, 196, 313,
- 262, 199, 268, 201, 280, 203, 282, 205, 206, 270,
- 272, 323, 327, 211, 212, 336, 214, 215, 344, 366,
- 218, 368, 220, 221, 354, 223, 341, 225, 226, 259,
- 228, 314, 263, 231, 269, 233, 281, 235, 283, 237,
- 238, 271, 273, 324, 328, 243, 244, 337, 246, 247,
- 345, 367, 250, 369, 252, 253, 355, 729,
-};
-
-static const unsigned long myhtml_encoding_map_windows_1251[] = {
- 1026, 1027, 8218, 1107, 8222, 8230, 8224, 8225, 8364, 8240,
- 1033, 8249, 1034, 1036, 1035, 1039, 1106, 8216, 8217, 8220,
- 8221, 8226, 8211, 8212, 152, 8482, 1113, 8250, 1114, 1116,
- 1115, 1119, 160, 1038, 1118, 1032, 164, 1168, 166, 167,
- 1025, 169, 1028, 171, 172, 173, 174, 1031, 176, 177,
- 1030, 1110, 1169, 181, 182, 183, 1105, 8470, 1108, 187,
- 1112, 1029, 1109, 1111, 1040, 1041, 1042, 1043, 1044, 1045,
- 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
- 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065,
- 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075,
- 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085,
- 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,
- 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
-};
-
-static const unsigned long myhtml_encoding_map_windows_1252[] = {
- 8364, 129, 8218, 402, 8222, 8230, 8224, 8225, 710, 8240,
- 352, 8249, 338, 141, 381, 143, 144, 8216, 8217, 8220,
- 8221, 8226, 8211, 8212, 732, 8482, 353, 8250, 339, 157,
- 382, 376, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255,
-};
-
-static const unsigned long myhtml_encoding_map_windows_1253[] = {
- 8364, 129, 8218, 402, 8222, 8230, 8224, 8225, 136, 8240,
- 138, 8249, 140, 141, 142, 143, 144, 8216, 8217, 8220,
- 8221, 8226, 8211, 8212, 152, 8482, 154, 8250, 156, 157,
- 158, 159, 160, 901, 902, 163, 164, 165, 166, 167,
- 168, 169, 0x0000, 171, 172, 173, 174, 8213, 176, 177,
- 178, 179, 900, 181, 182, 183, 904, 905, 906, 187,
- 908, 189, 910, 911, 912, 913, 914, 915, 916, 917,
- 918, 919, 920, 921, 922, 923, 924, 925, 926, 927,
- 928, 929, 0x0000, 931, 932, 933, 934, 935, 936, 937,
- 938, 939, 940, 941, 942, 943, 944, 945, 946, 947,
- 948, 949, 950, 951, 952, 953, 954, 955, 956, 957,
- 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,
- 968, 969, 970, 971, 972, 973, 974, 0x0000,
-};
-
-static const unsigned long myhtml_encoding_map_windows_1254[] = {
- 8364, 129, 8218, 402, 8222, 8230, 8224, 8225, 710, 8240,
- 352, 8249, 338, 141, 142, 143, 144, 8216, 8217, 8220,
- 8221, 8226, 8211, 8212, 732, 8482, 353, 8250, 339, 157,
- 158, 376, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 286, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 304, 350, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 287, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 305, 351, 255,
-};
-
-static const unsigned long myhtml_encoding_map_windows_1255[] = {
- 8364, 129, 8218, 402, 8222, 8230, 8224, 8225, 710, 8240,
- 138, 8249, 140, 141, 142, 143, 144, 8216, 8217, 8220,
- 8221, 8226, 8211, 8212, 732, 8482, 154, 8250, 156, 157,
- 158, 159, 160, 161, 162, 163, 8362, 165, 166, 167,
- 168, 169, 215, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 247, 187,
- 188, 189, 190, 191, 1456, 1457, 1458, 1459, 1460, 1461,
- 1462, 1463, 1464, 1465, 0x0000, 1467, 1468, 1469, 1470, 1471,
- 1472, 1473, 1474, 1475, 1520, 1521, 1522, 1523, 1524, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 1488, 1489, 1490, 1491,
- 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501,
- 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511,
- 1512, 1513, 1514, 0x0000, 0x0000, 8206, 8207, 0x0000,
-};
-
-static const unsigned long myhtml_encoding_map_windows_1256[] = {
- 8364, 1662, 8218, 402, 8222, 8230, 8224, 8225, 710, 8240,
- 1657, 8249, 338, 1670, 1688, 1672, 1711, 8216, 8217, 8220,
- 8221, 8226, 8211, 8212, 1705, 8482, 1681, 8250, 339, 8204,
- 8205, 1722, 160, 1548, 162, 163, 164, 165, 166, 167,
- 168, 169, 1726, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 1563, 187,
- 188, 189, 190, 1567, 1729, 1569, 1570, 1571, 1572, 1573,
- 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583,
- 1584, 1585, 1586, 1587, 1588, 1589, 1590, 215, 1591, 1592,
- 1593, 1594, 1600, 1601, 1602, 1603, 224, 1604, 226, 1605,
- 1606, 1607, 1608, 231, 232, 233, 234, 235, 1609, 1610,
- 238, 239, 1611, 1612, 1613, 1614, 244, 1615, 1616, 247,
- 1617, 249, 1618, 251, 252, 8206, 8207, 1746,
-};
-
-static const unsigned long myhtml_encoding_map_windows_1257[] = {
- 8364, 129, 8218, 131, 8222, 8230, 8224, 8225, 136, 8240,
- 138, 8249, 140, 168, 711, 184, 144, 8216, 8217, 8220,
- 8221, 8226, 8211, 8212, 152, 8482, 154, 8250, 156, 175,
- 731, 159, 160, 0x0000, 162, 163, 164, 0x0000, 166, 167,
- 216, 169, 342, 171, 172, 173, 174, 198, 176, 177,
- 178, 179, 180, 181, 182, 183, 248, 185, 343, 187,
- 188, 189, 190, 230, 260, 302, 256, 262, 196, 197,
- 280, 274, 268, 201, 377, 278, 290, 310, 298, 315,
- 352, 323, 325, 211, 332, 213, 214, 215, 370, 321,
- 346, 362, 220, 379, 381, 223, 261, 303, 257, 263,
- 228, 229, 281, 275, 269, 233, 378, 279, 291, 311,
- 299, 316, 353, 324, 326, 243, 333, 245, 246, 247,
- 371, 322, 347, 363, 252, 380, 382, 729,
-};
-
-static const unsigned long myhtml_encoding_map_windows_1258[] = {
- 8364, 129, 8218, 402, 8222, 8230, 8224, 8225, 710, 8240,
- 138, 8249, 338, 141, 142, 143, 144, 8216, 8217, 8220,
- 8221, 8226, 8211, 8212, 732, 8482, 154, 8250, 339, 157,
- 158, 376, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 258, 196, 197,
- 198, 199, 200, 201, 202, 203, 768, 205, 206, 207,
- 272, 209, 777, 211, 212, 416, 214, 215, 216, 217,
- 218, 219, 220, 431, 771, 223, 224, 225, 226, 259,
- 228, 229, 230, 231, 232, 233, 234, 235, 769, 237,
- 238, 239, 273, 241, 803, 243, 244, 417, 246, 247,
- 248, 249, 250, 251, 252, 432, 8363, 255,
-};
-
-static const unsigned long myhtml_encoding_map_windows_874[] = {
- 8364, 129, 130, 131, 132, 8230, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 8216, 8217, 8220,
- 8221, 8226, 8211, 8212, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 3585, 3586, 3587, 3588, 3589, 3590, 3591,
- 3592, 3593, 3594, 3595, 3596, 3597, 3598, 3599, 3600, 3601,
- 3602, 3603, 3604, 3605, 3606, 3607, 3608, 3609, 3610, 3611,
- 3612, 3613, 3614, 3615, 3616, 3617, 3618, 3619, 3620, 3621,
- 3622, 3623, 3624, 3625, 3626, 3627, 3628, 3629, 3630, 3631,
- 3632, 3633, 3634, 3635, 3636, 3637, 3638, 3639, 3640, 3641,
- 3642, 0x0000, 0x0000, 0x0000, 0x0000, 3647, 3648, 3649, 3650, 3651,
- 3652, 3653, 3654, 3655, 3656, 3657, 3658, 3659, 3660, 3661,
- 3662, 3663, 3664, 3665, 3666, 3667, 3668, 3669, 3670, 3671,
- 3672, 3673, 3674, 3675, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static const unsigned long myhtml_encoding_map_x_mac_cyrillic[] = {
- 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049,
- 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059,
- 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,
- 1070, 1071, 8224, 176, 1168, 163, 167, 8226, 182, 1030,
- 174, 169, 8482, 1026, 1106, 8800, 1027, 1107, 8734, 177,
- 8804, 8805, 1110, 181, 1169, 1032, 1028, 1108, 1031, 1111,
- 1033, 1113, 1034, 1114, 1112, 1029, 172, 8730, 402, 8776,
- 8710, 171, 187, 8230, 160, 1035, 1115, 1036, 1116, 1109,
- 8211, 8212, 8220, 8221, 8216, 8217, 247, 8222, 1038, 1118,
- 1039, 1119, 8470, 1025, 1105, 1103, 1072, 1073, 1074, 1075,
- 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085,
- 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,
- 1096, 1097, 1098, 1099, 1100, 1101, 1102, 8364,
-};
-
-static const myhtml_encoding_custom_f myhtml_encoding_function_index[] = {
- myhtml_encoding_decode_utf_8, NULL, NULL, myhtml_encoding_decode_utf_8, myhtml_encoding_decode_utf_16le,
- myhtml_encoding_decode_utf_16be, myhtml_encoding_decode_x_user_defined,
- myhtml_encoding_decode_big5, myhtml_encoding_decode_euc_kr, myhtml_encoding_decode_gb18030,
- myhtml_encoding_decode_ibm866, myhtml_encoding_decode_iso_8859_10, myhtml_encoding_decode_iso_8859_13,
- myhtml_encoding_decode_iso_8859_14, myhtml_encoding_decode_iso_8859_15, myhtml_encoding_decode_iso_8859_16,
- myhtml_encoding_decode_iso_8859_2, myhtml_encoding_decode_iso_8859_3, myhtml_encoding_decode_iso_8859_4,
- myhtml_encoding_decode_iso_8859_5, myhtml_encoding_decode_iso_8859_6, myhtml_encoding_decode_iso_8859_7,
- myhtml_encoding_decode_iso_8859_8, myhtml_encoding_decode_koi8_r, myhtml_encoding_decode_koi8_u,
- myhtml_encoding_decode_macintosh, myhtml_encoding_decode_windows_1250, myhtml_encoding_decode_windows_1251,
- myhtml_encoding_decode_windows_1252, myhtml_encoding_decode_windows_1253, myhtml_encoding_decode_windows_1254,
- myhtml_encoding_decode_windows_1255, myhtml_encoding_decode_windows_1256, myhtml_encoding_decode_windows_1257,
- myhtml_encoding_decode_windows_1258, myhtml_encoding_decode_windows_874, myhtml_encoding_decode_x_mac_cyrillic,
- myhtml_encoding_decode_iso_2022_jp, myhtml_encoding_decode_gbk, myhtml_encoding_decode_shift_jis,
- myhtml_encoding_decode_euc_jp, myhtml_encoding_decode_iso_8859_8_i
-};
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* MyHTML_ENCODING_RESOURCE_H */
-
-
-
-
diff --git a/source/myhtml/incoming.c b/source/myhtml/incoming.c
deleted file mode 100644
index fc0bd99..0000000
--- a/source/myhtml/incoming.c
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- Copyright (C) 2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#include "myhtml/incoming.h"
-#include "myhtml/utils/resources.h"
-
-myhtml_incoming_buffer_t * myhtml_incoming_buffer_add(myhtml_incoming_buffer_t *current, mcobject_t *mcobject,
- const char *html, size_t html_size)
-{
- myhtml_incoming_buffer_t *inc_buf = mcobject_malloc(mcobject, NULL);
-
- inc_buf->size = html_size;
- inc_buf->length = 0;
- inc_buf->data = html;
-
- if(current) {
- inc_buf->offset = current->offset + current->size;
- current->next = inc_buf;
- }
- else {
- inc_buf->offset = 0;
- }
-
- inc_buf->prev = current;
- inc_buf->next = NULL;
-
- return inc_buf;
-}
-
-void myhtml_incoming_buffer_clean(myhtml_incoming_buffer_t *current)
-{
- memset(current, 0, sizeof(myhtml_incoming_buffer_t));
-}
-
-myhtml_incoming_buffer_t * myhtml_incoming_buffer_split(myhtml_incoming_buffer_t *current, mcobject_t *mcobject, size_t global_pos)
-{
- size_t relative_pos = global_pos - current->offset;
- myhtml_incoming_buffer_t *inc_buf = mcobject_malloc(mcobject, NULL);
-
- inc_buf->size = current->size - relative_pos;
- inc_buf->length = inc_buf->size;
- inc_buf->data = &current->data[relative_pos];
- inc_buf->offset = current->offset + relative_pos;
- inc_buf->next = NULL;
- inc_buf->prev = current;
-
- current->next = inc_buf;
- current->size = relative_pos;
- current->length = relative_pos;
-
- return inc_buf;
-}
-
-myhtml_incoming_buffer_t * myhtml_incoming_buffer_find_by_position(myhtml_incoming_buffer_t *inc_buf, size_t begin)
-{
- if(inc_buf->offset < begin) {
- while(inc_buf && (inc_buf->offset + inc_buf->size) < begin)
- inc_buf = inc_buf->next;
- }
- else {
- while(inc_buf && inc_buf->offset > begin)
- inc_buf = inc_buf->prev;
- }
-
- return inc_buf;
-}
-
-const char * myhtml_incoming_buffer_data(myhtml_incoming_buffer_t *inc_buf)
-{
- return inc_buf->data;
-}
-
-size_t myhtml_incoming_buffer_length(myhtml_incoming_buffer_t *inc_buf)
-{
- return inc_buf->length;
-}
-
-size_t myhtml_incoming_buffer_size(myhtml_incoming_buffer_t *inc_buf)
-{
- return inc_buf->size;
-}
-
-size_t myhtml_incoming_buffer_offset(myhtml_incoming_buffer_t *inc_buf)
-{
- return inc_buf->offset;
-}
-
-size_t myhtml_incoming_buffer_relative_begin(myhtml_incoming_buffer_t *inc_buf, size_t begin)
-{
- return (begin - inc_buf->offset);
-}
-
-size_t myhtml_incoming_buffer_available_length(myhtml_incoming_buffer_t *inc_buf, size_t relative_begin, size_t length)
-{
- if((relative_begin + length) > inc_buf->size)
- return (inc_buf->size - relative_begin);
-
- return length;
-}
-
-myhtml_incoming_buffer_t * myhtml_incoming_buffer_next(myhtml_incoming_buffer_t *inc_buf)
-{
- return inc_buf->next;
-}
-
-myhtml_incoming_buffer_t * myhtml_incoming_buffer_prev(myhtml_incoming_buffer_t *inc_buf)
-{
- return inc_buf->prev;
-}
-
-// // //
-// convert only one 002345 (\002345) to code point
-//
-size_t myhtml_incoming_buffer_convert_one_escaped_to_code_point(myhtml_incoming_buffer_t **inc_buf, size_t *relative_pos)
-{
- const unsigned char *u_data;
- myhtml_incoming_buffer_t *current = *inc_buf;
-
- if(*relative_pos >= current->size) {
- *relative_pos = 0;
- current = current->next;
- }
-
- u_data = (const unsigned char*)current->data;
-
- unsigned int consume = 0;
- size_t code_point = 0;
-
- while(current)
- {
- if(myhtml_string_chars_num_map[ u_data[*relative_pos] ] != 0xff && consume < 6) {
- code_point <<= 4;
- code_point |= myhtml_string_chars_hex_map[ u_data[*relative_pos] ];
-
- ++consume;
- }
- else
- break;
-
- *relative_pos += 1;
-
- if(*relative_pos >= current->size)
- {
- if(current->next == NULL)
- break;
-
- *relative_pos = 0;
-
- u_data = (const unsigned char*)current->data;
- current = current->next;
- }
- }
-
- *inc_buf = current;
-
- return code_point;
-}
-
-size_t myhtml_incoming_buffer_escaped_case_cmp(myhtml_incoming_buffer_t **inc_buf, const char *to, size_t to_size, size_t *relative_pos)
-{
- myhtml_incoming_buffer_t *current = *inc_buf;
-
- if(*relative_pos >= current->size) {
- if(current->next == 0)
- return to_size;
-
- *relative_pos = 0;
- current = current->next;
- }
-
- const unsigned char *u_to = (const unsigned char*)to;
- const unsigned char *u_data = (const unsigned char*)current->data;
-
- size_t i = 0;
-
- while(i < to_size)
- {
- if(u_data[*relative_pos] == 0x5C) {
- *relative_pos += 1;
-
- size_t code_point = myhtml_incoming_buffer_convert_one_escaped_to_code_point(&current, relative_pos);
-
- if(code_point > 255 || myhtml_string_chars_lowercase_map[code_point] != myhtml_string_chars_lowercase_map[ u_to[i] ]) {
- break;
- }
-
- u_data = (const unsigned char*)current->data;
- }
- else if(myhtml_string_chars_lowercase_map[ u_data[*relative_pos] ] != myhtml_string_chars_lowercase_map[ u_to[i] ]) {
- break;
- }
- else {
- ++(*relative_pos);
- }
-
- i++;
-
- if(*relative_pos >= current->size)
- {
- if(current->next == NULL)
- break;
-
- current = current->next;
- u_data = (const unsigned char*)current->data;
- *relative_pos = 0;
- }
- }
-
- *inc_buf = current;
- return (to_size - i);
-}
-
-
-
-
diff --git a/source/myhtml/incoming.h b/source/myhtml/incoming.h
deleted file mode 100644
index 6e35389..0000000
--- a/source/myhtml/incoming.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- Copyright (C) 2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#ifndef MyHTML_INCOMING_H
-#define MyHTML_INCOMING_H
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "myhtml/myosi.h"
-#include "myhtml/tree.h"
-#include "myhtml/utils/mcobject.h"
-
-struct myhtml_incoming_buffer {
- const char* data;
- size_t length; // use of data
- size_t size; // size of data
- size_t offset; // begin global offset
-
- struct myhtml_incoming_buffer* prev;
- struct myhtml_incoming_buffer* next;
-};
-
-
-// incoming buffer
-myhtml_incoming_buffer_t * myhtml_incoming_buffer_add(myhtml_incoming_buffer_t *current, mcobject_t *mcobject, const char *html, size_t html_size);
-void myhtml_incoming_buffer_clean(myhtml_incoming_buffer_t *current);
-myhtml_incoming_buffer_t * myhtml_incoming_buffer_split(myhtml_incoming_buffer_t *current, mcobject_t *mcobject, size_t global_pos);
-
-myhtml_incoming_buffer_t * myhtml_incoming_buffer_find_by_position(myhtml_incoming_buffer_t *inc_buf, size_t begin);
-
-const char * myhtml_incoming_buffer_data(myhtml_incoming_buffer_t *inc_buf);
-size_t myhtml_incoming_buffer_length(myhtml_incoming_buffer_t *inc_buf);
-size_t myhtml_incoming_buffer_size(myhtml_incoming_buffer_t *inc_buf);
-size_t myhtml_incoming_buffer_offset(myhtml_incoming_buffer_t *inc_buf);
-size_t myhtml_incoming_buffer_relative_begin(myhtml_incoming_buffer_t *inc_buf, size_t begin);
-size_t myhtml_incoming_buffer_available_length(myhtml_incoming_buffer_t *inc_buf, size_t relative_begin, size_t length);
-
-myhtml_incoming_buffer_t * myhtml_incoming_buffer_next(myhtml_incoming_buffer_t *inc_buf);
-myhtml_incoming_buffer_t * myhtml_incoming_buffer_prev(myhtml_incoming_buffer_t *inc_buf);
-
-size_t myhtml_incoming_buffer_convert_one_escaped_to_code_point(myhtml_incoming_buffer_t **inc_buf, size_t *relative_pos);
-size_t myhtml_incoming_buffer_escaped_case_cmp(myhtml_incoming_buffer_t **inc_buf, const char *to, size_t to_size, size_t *relative_pos);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* MyHTML_INCOMING_H */
diff --git a/source/myhtml/myhtml.c b/source/myhtml/myhtml.c
index 767603e..479f33e 100644
--- a/source/myhtml/myhtml.c
+++ b/source/myhtml/myhtml.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,7 @@
void myhtml_init_marker(myhtml_t* myhtml)
{
- myhtml->marker = (myhtml_tree_node_t*)myhtml_malloc(sizeof(myhtml_tree_node_t));
+ myhtml->marker = (myhtml_tree_node_t*)mycore_malloc(sizeof(myhtml_tree_node_t));
if(myhtml->marker)
myhtml_tree_node_clean(myhtml->marker);
@@ -31,92 +31,152 @@ void myhtml_init_marker(myhtml_t* myhtml)
void myhtml_destroy_marker(myhtml_t* myhtml)
{
if(myhtml->marker)
- myhtml_free(myhtml->marker);
+ mycore_free(myhtml->marker);
}
-myhtml_t * myhtml_create(void)
+#ifndef MyCORE_BUILD_WITHOUT_THREADS
+mystatus_t myhtml_stream_create(myhtml_t* myhtml, mystatus_t* status, size_t count, size_t id_increase)
{
- return (myhtml_t*)myhtml_malloc(sizeof(myhtml_t));
+ if(count == 0) {
+ myhtml->thread_stream = NULL;
+
+ *status = MyHTML_STATUS_OK;
+ return *status;
+ }
+
+ myhtml->thread_stream = mythread_create();
+ if(myhtml->thread_stream == NULL)
+ *status = MyCORE_STATUS_THREAD_ERROR_MEMORY_ALLOCATION;
+
+ *status = mythread_init(myhtml->thread_stream, MyTHREAD_TYPE_STREAM, count, id_increase);
+
+ if(*status)
+ myhtml->thread_stream = mythread_destroy(myhtml->thread_stream, NULL, NULL, true);
+
+ return *status;
}
-myhtml_status_t myhtml_init(myhtml_t* myhtml, enum myhtml_options opt, size_t thread_count, size_t queue_size)
+mystatus_t myhtml_batch_create(myhtml_t* myhtml, mystatus_t* status, size_t count, size_t id_increase)
{
- myhtml_status_t status;
+ if(count == 0) {
+ myhtml->thread_batch = NULL;
+
+ *status = MyHTML_STATUS_OK;
+ return *status;
+ }
- myhtml_init_marker(myhtml);
+ myhtml->thread_batch = mythread_create();
+ if(myhtml->thread_stream == NULL) {
+ myhtml->thread_stream = mythread_destroy(myhtml->thread_stream, NULL, NULL, true);
+ *status = MyCORE_STATUS_THREAD_ERROR_MEMORY_ALLOCATION;
+ }
- status = myhtml_tokenizer_state_init(myhtml);
- if(status) {
- myhtml->insertion_func = NULL;
- myhtml->thread = NULL;
-
+ *status = mythread_init(myhtml->thread_batch, MyTHREAD_TYPE_BATCH, count, id_increase);
+
+ if(*status)
+ myhtml->thread_batch = mythread_destroy(myhtml->thread_batch , NULL, NULL, true);
+
+ return *status;
+}
+
+mystatus_t myhtml_create_stream_and_batch(myhtml_t* myhtml, size_t stream_count, size_t batch_count)
+{
+ mystatus_t status;
+
+ /* stream */
+ if(myhtml_stream_create(myhtml, &status, stream_count, 0)) {
return status;
}
- status = myhtml_rules_init(myhtml);
- if(status) {
- myhtml->thread = NULL;
-
+ /* batch */
+ if(myhtml_batch_create(myhtml, &status, batch_count, stream_count)) {
+ myhtml->thread_stream = mythread_destroy(myhtml->thread_stream, NULL, NULL, true);
return status;
}
+ return status;
+}
+#endif /* if undef MyCORE_BUILD_WITHOUT_THREADS */
+
+myhtml_t * myhtml_create(void)
+{
+ return (myhtml_t*)mycore_calloc(1, sizeof(myhtml_t));
+}
+
+mystatus_t myhtml_init(myhtml_t* myhtml, enum myhtml_options opt, size_t thread_count, size_t queue_size)
+{
+ mystatus_t status;
+
myhtml->opt = opt;
- myhtml->thread = mythread_create();
+ myhtml_init_marker(myhtml);
- if(myhtml->thread == NULL)
- return MyHTML_STATUS_THREAD_ERROR_MEMORY_ALLOCATION;
+ status = myhtml_tokenizer_state_init(myhtml);
+ if(status)
+ return status;
-#ifdef MyHTML_BUILD_WITHOUT_THREADS
+ status = myhtml_rules_init(myhtml);
+
+#ifdef MyCORE_BUILD_WITHOUT_THREADS
- status = mythread_init(myhtml->thread, NULL, thread_count);
+ myhtml->thread_stream = NULL;
+ myhtml->thread_batch = NULL;
+ myhtml->thread_total = 0;
+#else /* if undef MyCORE_BUILD_WITHOUT_THREADS */
if(status)
return status;
-#else /* MyHTML_BUILD_WITHOUT_THREADS */
switch (opt) {
case MyHTML_OPTIONS_PARSE_MODE_SINGLE:
- status = mythread_init(myhtml->thread, "lastmac", 0);
- if(status)
- return status;
-
- myhtml->thread->context = mythread_queue_list_create(&status);
- if(status)
+ if((status = myhtml_create_stream_and_batch(myhtml, 0, 0)))
return status;
break;
case MyHTML_OPTIONS_PARSE_MODE_ALL_IN_ONE:
- status = mythread_init(myhtml->thread, "lastmac", 1);
- if(status)
+ if((status = myhtml_create_stream_and_batch(myhtml, 1, 0)))
return status;
- myhtml->thread->context = mythread_queue_list_create(&status);
- if(status)
- return status;
+ myhtml->thread_stream->context = mythread_queue_list_create(&status);
+ status = myhread_entry_create(myhtml->thread_stream, mythread_function_queue_stream, myhtml_parser_worker_stream, MyTHREAD_OPT_STOP);
- myhread_create_stream(myhtml->thread, mythread_function_queue_stream, myhtml_parser_worker_stream, MyTHREAD_OPT_STOP, &status);
break;
default:
// default MyHTML_OPTIONS_PARSE_MODE_SEPARATELY
- if(thread_count == 0)
- thread_count = 1;
+ if(thread_count < 2)
+ thread_count = 2;
- status = mythread_init(myhtml->thread, "lastmac", (thread_count + 1));
- if(status)
+ if((status = myhtml_create_stream_and_batch(myhtml, 1, (thread_count - 1))))
return status;
- myhtml->thread->context = mythread_queue_list_create(&status);
+ myhtml->thread_stream->context = mythread_queue_list_create(&status);
+ myhtml->thread_batch->context = myhtml->thread_stream->context;
+
+ status = myhread_entry_create(myhtml->thread_stream, mythread_function_queue_stream, myhtml_parser_stream, MyTHREAD_OPT_STOP);
if(status)
return status;
- myhread_create_stream(myhtml->thread, mythread_function_queue_stream, myhtml_parser_stream, MyTHREAD_OPT_STOP, &status);
- myhread_create_batch(myhtml->thread, mythread_function_queue_batch, myhtml_parser_worker, MyTHREAD_OPT_STOP, &status, thread_count);
+ for(size_t i = 0; i < myhtml->thread_batch->entries_size; i++) {
+ status = myhread_entry_create(myhtml->thread_batch, mythread_function_queue_batch, myhtml_parser_worker, MyTHREAD_OPT_STOP);
+
+ if(status)
+ return status;
+ }
+
break;
}
-#endif /* MyHTML_BUILD_WITHOUT_THREADS */
+ myhtml->thread_total = thread_count;
+
+ myhtml->thread_list[0] = myhtml->thread_stream;
+ myhtml->thread_list[1] = myhtml->thread_batch;
+ myhtml->thread_list[2] = NULL;
+
+#endif /* if undef MyCORE_BUILD_WITHOUT_THREADS */
+
+ if(status)
+ return status;
myhtml_clean(myhtml);
@@ -125,7 +185,7 @@ myhtml_status_t myhtml_init(myhtml_t* myhtml, enum myhtml_options opt, size_t th
void myhtml_clean(myhtml_t* myhtml)
{
- mythread_clean(myhtml->thread);
+ /* some code */
}
myhtml_t* myhtml_destroy(myhtml_t* myhtml)
@@ -135,36 +195,41 @@ myhtml_t* myhtml_destroy(myhtml_t* myhtml)
myhtml_destroy_marker(myhtml);
- if(myhtml->thread) {
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
- mythread_queue_list_t* queue_list = myhtml->thread->context;
-#endif
+#ifndef MyCORE_BUILD_WITHOUT_THREADS
+ if(myhtml->thread_stream) {
+ mythread_queue_list_t* queue_list = myhtml->thread_stream->context;
+
+ if(queue_list)
+ mythread_queue_list_wait_for_done(myhtml->thread_stream, queue_list);
- myhtml->thread = mythread_destroy(myhtml->thread, mythread_queue_wait_all_for_done, true);
+ myhtml->thread_stream = mythread_destroy(myhtml->thread_stream, mythread_callback_quit, NULL, true);
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
- mythread_queue_list_destroy(queue_list);
-#endif
+ if(myhtml->thread_batch)
+ myhtml->thread_batch = mythread_destroy(myhtml->thread_batch, mythread_callback_quit, NULL, true);
+
+ if(queue_list)
+ mythread_queue_list_destroy(queue_list);
}
+#endif /* if undef MyCORE_BUILD_WITHOUT_THREADS */
myhtml_tokenizer_state_destroy(myhtml);
if(myhtml->insertion_func)
- myhtml_free(myhtml->insertion_func);
+ mycore_free(myhtml->insertion_func);
- myhtml_free(myhtml);
+ mycore_free(myhtml);
return NULL;
}
-myhtml_status_t myhtml_parse(myhtml_tree_t* tree, myhtml_encoding_t encoding, const char* html, size_t html_size)
+mystatus_t myhtml_parse(myhtml_tree_t* tree, myencoding_t encoding, const char* html, size_t html_size)
{
if(tree->flags & MyHTML_TREE_FLAGS_PARSE_END) {
myhtml_tree_clean(tree);
}
myhtml_encoding_set(tree, encoding);
- myhtml_status_t status = myhtml_tokenizer_begin(tree, html, html_size);
+ mystatus_t status = myhtml_tokenizer_begin(tree, html, html_size);
if(status)
return status;
@@ -172,7 +237,7 @@ myhtml_status_t myhtml_parse(myhtml_tree_t* tree, myhtml_encoding_t encoding, co
return myhtml_tokenizer_end(tree);
}
-myhtml_status_t myhtml_parse_fragment(myhtml_tree_t* tree, myhtml_encoding_t encoding, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns)
+mystatus_t myhtml_parse_fragment(myhtml_tree_t* tree, myencoding_t encoding, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns)
{
if(tree->flags & MyHTML_TREE_FLAGS_PARSE_END) {
myhtml_tree_clean(tree);
@@ -188,7 +253,7 @@ myhtml_status_t myhtml_parse_fragment(myhtml_tree_t* tree, myhtml_encoding_t enc
return MyHTML_STATUS_TOKENIZER_ERROR_FRAGMENT_INIT;
myhtml_encoding_set(tree, encoding);
- myhtml_status_t status = myhtml_tokenizer_begin(tree, html, html_size);
+ mystatus_t status = myhtml_tokenizer_begin(tree, html, html_size);
if(status)
return status;
@@ -196,7 +261,7 @@ myhtml_status_t myhtml_parse_fragment(myhtml_tree_t* tree, myhtml_encoding_t enc
return myhtml_tokenizer_end(tree);
}
-myhtml_status_t myhtml_parse_single(myhtml_tree_t* tree, myhtml_encoding_t encoding, const char* html, size_t html_size)
+mystatus_t myhtml_parse_single(myhtml_tree_t* tree, myencoding_t encoding, const char* html, size_t html_size)
{
if(tree->flags & MyHTML_TREE_FLAGS_PARSE_END) {
myhtml_tree_clean(tree);
@@ -206,7 +271,7 @@ myhtml_status_t myhtml_parse_single(myhtml_tree_t* tree, myhtml_encoding_t encod
myhtml_encoding_set(tree, encoding);
- myhtml_status_t status = myhtml_tokenizer_begin(tree, html, html_size);
+ mystatus_t status = myhtml_tokenizer_begin(tree, html, html_size);
if(status)
return status;
@@ -214,7 +279,7 @@ myhtml_status_t myhtml_parse_single(myhtml_tree_t* tree, myhtml_encoding_t encod
return myhtml_tokenizer_end(tree);
}
-myhtml_status_t myhtml_parse_fragment_single(myhtml_tree_t* tree, myhtml_encoding_t encoding, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns)
+mystatus_t myhtml_parse_fragment_single(myhtml_tree_t* tree, myencoding_t encoding, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns)
{
if(tree->flags & MyHTML_TREE_FLAGS_PARSE_END) {
myhtml_tree_clean(tree);
@@ -233,7 +298,7 @@ myhtml_status_t myhtml_parse_fragment_single(myhtml_tree_t* tree, myhtml_encodin
myhtml_encoding_set(tree, encoding);
- myhtml_status_t status = myhtml_tokenizer_begin(tree, html, html_size);
+ mystatus_t status = myhtml_tokenizer_begin(tree, html, html_size);
if(status)
return status;
@@ -241,7 +306,7 @@ myhtml_status_t myhtml_parse_fragment_single(myhtml_tree_t* tree, myhtml_encodin
return myhtml_tokenizer_end(tree);
}
-myhtml_status_t myhtml_parse_chunk(myhtml_tree_t* tree, const char* html, size_t html_size)
+mystatus_t myhtml_parse_chunk(myhtml_tree_t* tree, const char* html, size_t html_size)
{
if(tree->flags & MyHTML_TREE_FLAGS_PARSE_END) {
myhtml_tree_clean(tree);
@@ -250,7 +315,7 @@ myhtml_status_t myhtml_parse_chunk(myhtml_tree_t* tree, const char* html, size_t
return myhtml_tokenizer_chunk(tree, html, html_size);
}
-myhtml_status_t myhtml_parse_chunk_fragment(myhtml_tree_t* tree, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns)
+mystatus_t myhtml_parse_chunk_fragment(myhtml_tree_t* tree, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns)
{
if(tree->flags & MyHTML_TREE_FLAGS_PARSE_END) {
myhtml_tree_clean(tree);
@@ -268,7 +333,7 @@ myhtml_status_t myhtml_parse_chunk_fragment(myhtml_tree_t* tree, const char* htm
return myhtml_tokenizer_chunk(tree, html, html_size);
}
-myhtml_status_t myhtml_parse_chunk_single(myhtml_tree_t* tree, const char* html, size_t html_size)
+mystatus_t myhtml_parse_chunk_single(myhtml_tree_t* tree, const char* html, size_t html_size)
{
if((tree->flags & MyHTML_TREE_FLAGS_SINGLE_MODE) == 0)
tree->flags |= MyHTML_TREE_FLAGS_SINGLE_MODE;
@@ -276,7 +341,7 @@ myhtml_status_t myhtml_parse_chunk_single(myhtml_tree_t* tree, const char* html,
return myhtml_parse_chunk(tree, html, html_size);
}
-myhtml_status_t myhtml_parse_chunk_fragment_single(myhtml_tree_t* tree, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns)
+mystatus_t myhtml_parse_chunk_fragment_single(myhtml_tree_t* tree, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns)
{
if((tree->flags & MyHTML_TREE_FLAGS_SINGLE_MODE) == 0)
tree->flags |= MyHTML_TREE_FLAGS_SINGLE_MODE;
@@ -284,21 +349,21 @@ myhtml_status_t myhtml_parse_chunk_fragment_single(myhtml_tree_t* tree, const ch
return myhtml_parse_chunk_fragment(tree, html, html_size, tag_id, ns);
}
-myhtml_status_t myhtml_parse_chunk_end(myhtml_tree_t* tree)
+mystatus_t myhtml_parse_chunk_end(myhtml_tree_t* tree)
{
return myhtml_tokenizer_end(tree);
}
-void myhtml_encoding_set(myhtml_tree_t* tree, myhtml_encoding_t encoding)
+void myhtml_encoding_set(myhtml_tree_t* tree, myencoding_t encoding)
{
- if(encoding >= MyHTML_ENCODING_LAST_ENTRY)
+ if(encoding >= MyENCODING_LAST_ENTRY)
return;
tree->encoding_usereq = encoding;
tree->encoding = encoding;
}
-myhtml_encoding_t myhtml_encoding_get(myhtml_tree_t* tree)
+myencoding_t myhtml_encoding_get(myhtml_tree_t* tree)
{
return tree->encoding;
}
@@ -307,7 +372,7 @@ myhtml_encoding_t myhtml_encoding_get(myhtml_tree_t* tree)
* Nodes
*/
-myhtml_status_t myhtml_get_nodes_by_tag_id_in_scope_find_recursion(myhtml_tree_node_t *node, myhtml_collection_t *collection, myhtml_tag_id_t tag_id)
+mystatus_t myhtml_get_nodes_by_tag_id_in_scope_find_recursion(myhtml_tree_node_t *node, myhtml_collection_t *collection, myhtml_tag_id_t tag_id)
{
while(node) {
if(node->tag_id == tag_id) {
@@ -316,7 +381,7 @@ myhtml_status_t myhtml_get_nodes_by_tag_id_in_scope_find_recursion(myhtml_tree_n
if(collection->length >= collection->size)
{
- myhtml_status_t mystatus = myhtml_collection_check_size(collection, 1024, 0);
+ mystatus_t mystatus = myhtml_collection_check_size(collection, 1024, 0);
if(mystatus != MyHTML_STATUS_OK)
return mystatus;
@@ -332,12 +397,12 @@ myhtml_status_t myhtml_get_nodes_by_tag_id_in_scope_find_recursion(myhtml_tree_n
return MyHTML_STATUS_OK;
}
-myhtml_collection_t * myhtml_get_nodes_by_tag_id_in_scope(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tree_node_t *node, myhtml_tag_id_t tag_id, myhtml_status_t *status)
+myhtml_collection_t * myhtml_get_nodes_by_tag_id_in_scope(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tree_node_t *node, myhtml_tag_id_t tag_id, mystatus_t *status)
{
if(node == NULL)
return NULL;
- myhtml_status_t mystatus = MyHTML_STATUS_OK;
+ mystatus_t mystatus = MyHTML_STATUS_OK;
if(collection == NULL) {
collection = myhtml_collection_create(1024, &mystatus);
@@ -361,13 +426,13 @@ myhtml_collection_t * myhtml_get_nodes_by_tag_id_in_scope(myhtml_tree_t* tree, m
return collection;
}
-myhtml_collection_t * myhtml_get_nodes_by_name_in_scope(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tree_node_t *node, const char* html, size_t length, myhtml_status_t *status)
+myhtml_collection_t * myhtml_get_nodes_by_name_in_scope(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tree_node_t *node, const char* html, size_t length, mystatus_t *status)
{
const myhtml_tag_context_t *tag_ctx = myhtml_tag_get_by_name(tree->tags, html, length);
return myhtml_get_nodes_by_tag_id_in_scope(tree, collection, node, tag_ctx->id, status);
}
-myhtml_collection_t * myhtml_get_nodes_by_tag_id(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tag_id_t tag_id, myhtml_status_t *status)
+myhtml_collection_t * myhtml_get_nodes_by_tag_id(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tag_id_t tag_id, mystatus_t *status)
{
if(collection == NULL) {
collection = myhtml_collection_create(1024, NULL);
@@ -417,7 +482,7 @@ myhtml_collection_t * myhtml_get_nodes_by_tag_id(myhtml_tree_t* tree, myhtml_col
return collection;
}
-myhtml_collection_t * myhtml_get_nodes_by_name(myhtml_tree_t* tree, myhtml_collection_t *collection, const char* html, size_t length, myhtml_status_t *status)
+myhtml_collection_t * myhtml_get_nodes_by_name(myhtml_tree_t* tree, myhtml_collection_t *collection, const char* html, size_t length, mystatus_t *status)
{
const myhtml_tag_context_t *tag_ctx = myhtml_tag_get_by_name(tree->tags, html, length);
@@ -546,12 +611,12 @@ myhtml_tree_node_t * myhtml_node_insert_to_appropriate_place(myhtml_tree_node_t
return node;
}
-myhtml_string_t * myhtml_node_text_set(myhtml_tree_node_t *node, const char* text, size_t length, myhtml_encoding_t encoding)
+mycore_string_t * myhtml_node_text_set(myhtml_tree_node_t *node, const char* text, size_t length, myencoding_t encoding)
{
if(node == NULL)
return NULL;
- if(encoding >= MyHTML_ENCODING_LAST_ENTRY)
+ if(encoding >= MyENCODING_LAST_ENTRY)
return NULL;
myhtml_tree_t* tree = node->tree;
@@ -564,22 +629,22 @@ myhtml_string_t * myhtml_node_text_set(myhtml_tree_node_t *node, const char* tex
}
if(node->token->str.data == NULL) {
- myhtml_string_init(tree->mchar, tree->mchar_node_id, &node->token->str, (length + 2));
+ mycore_string_init(tree->mchar, tree->mchar_node_id, &node->token->str, (length + 2));
}
else {
if(node->token->str.size < length) {
mchar_async_free(tree->mchar, node->token->str.node_idx, node->token->str.data);
- myhtml_string_init(tree->mchar, tree->mchar_node_id, &node->token->str, length);
+ mycore_string_init(tree->mchar, tree->mchar_node_id, &node->token->str, length);
}
else
node->token->str.length = 0;
}
- if(encoding != MyHTML_ENCODING_UTF_8) {
- myhtml_string_append_with_convert_encoding(&node->token->str, text, length, encoding);
+ if(encoding != MyENCODING_UTF_8) {
+ myencoding_string_append(&node->token->str, text, length, encoding);
}
else {
- myhtml_string_append(&node->token->str, text, length);
+ mycore_string_append(&node->token->str, text, length);
}
node->token->raw_begin = 0;
@@ -588,12 +653,12 @@ myhtml_string_t * myhtml_node_text_set(myhtml_tree_node_t *node, const char* tex
return &node->token->str;
}
-myhtml_string_t * myhtml_node_text_set_with_charef(myhtml_tree_node_t *node, const char* text, size_t length, myhtml_encoding_t encoding)
+mycore_string_t * myhtml_node_text_set_with_charef(myhtml_tree_node_t *node, const char* text, size_t length, myencoding_t encoding)
{
if(node == NULL)
return NULL;
- if(encoding >= MyHTML_ENCODING_LAST_ENTRY)
+ if(encoding >= MyENCODING_LAST_ENTRY)
return NULL;
myhtml_tree_t* tree = node->tree;
@@ -606,12 +671,12 @@ myhtml_string_t * myhtml_node_text_set_with_charef(myhtml_tree_node_t *node, con
}
if(node->token->str.data == NULL) {
- myhtml_string_init(tree->mchar, tree->mchar_node_id, &node->token->str, (length + 2));
+ mycore_string_init(tree->mchar, tree->mchar_node_id, &node->token->str, (length + 2));
}
else {
if(node->token->str.size < length) {
mchar_async_free(tree->mchar, node->token->str.node_idx, node->token->str.data);
- myhtml_string_init(tree->mchar, tree->mchar_node_id, &node->token->str, length);
+ mycore_string_init(tree->mchar, tree->mchar_node_id, &node->token->str, length);
}
else
node->token->str.length = 0;
@@ -621,7 +686,7 @@ myhtml_string_t * myhtml_node_text_set_with_charef(myhtml_tree_node_t *node, con
myhtml_data_process_entry_clean(&proc_entry);
proc_entry.encoding = encoding;
- myhtml_encoding_result_clean(&proc_entry.res);
+ myencoding_result_clean(&proc_entry.res);
myhtml_data_process(&proc_entry, &node->token->str, text, length);
myhtml_data_process_end(&proc_entry, &node->token->str);
@@ -724,7 +789,7 @@ const char * myhtml_node_text(myhtml_tree_node_t *node, size_t *length)
return NULL;
}
-myhtml_string_t * myhtml_node_string(myhtml_tree_node_t *node)
+mycore_string_t * myhtml_node_string(myhtml_tree_node_t *node)
{
if(node && node->token)
return &node->token->str;
@@ -763,7 +828,7 @@ myhtml_tree_t * myhtml_node_tree(myhtml_tree_node_t *node)
return node->tree;
}
-myhtml_status_t myhtml_get_nodes_by_attribute_key_recursion(myhtml_tree_node_t* node, myhtml_collection_t* collection, const char* key, size_t key_len)
+mystatus_t myhtml_get_nodes_by_attribute_key_recursion(myhtml_tree_node_t* node, myhtml_collection_t* collection, const char* key, size_t key_len)
{
while(node)
{
@@ -771,14 +836,14 @@ myhtml_status_t myhtml_get_nodes_by_attribute_key_recursion(myhtml_tree_node_t*
myhtml_tree_attr_t* attr = node->token->attr_first;
while(attr) {
- myhtml_string_t* str_key = &attr->key;
+ mycore_string_t* str_key = &attr->key;
- if(str_key->length == key_len && myhtml_strncasecmp(str_key->data, key, key_len) == 0) {
+ if(str_key->length == key_len && mycore_strncasecmp(str_key->data, key, key_len) == 0) {
collection->list[ collection->length ] = node;
collection->length++;
if(collection->length >= collection->size) {
- myhtml_status_t status = myhtml_collection_check_size(collection, 1024, 0);
+ mystatus_t status = myhtml_collection_check_size(collection, 1024, 0);
if(status)
return status;
@@ -790,7 +855,7 @@ myhtml_status_t myhtml_get_nodes_by_attribute_key_recursion(myhtml_tree_node_t*
}
if(node->child) {
- myhtml_status_t status = myhtml_get_nodes_by_attribute_key_recursion(node->child, collection, key, key_len);
+ mystatus_t status = myhtml_get_nodes_by_attribute_key_recursion(node->child, collection, key, key_len);
if(status)
return status;
@@ -802,7 +867,7 @@ myhtml_status_t myhtml_get_nodes_by_attribute_key_recursion(myhtml_tree_node_t*
return MyHTML_STATUS_OK;
}
-myhtml_collection_t * myhtml_get_nodes_by_attribute_key(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* scope_node, const char* key, size_t key_len, myhtml_status_t* status)
+myhtml_collection_t * myhtml_get_nodes_by_attribute_key(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* scope_node, const char* key, size_t key_len, mystatus_t* status)
{
if(collection == NULL) {
collection = myhtml_collection_create(1024, status);
@@ -814,7 +879,7 @@ myhtml_collection_t * myhtml_get_nodes_by_attribute_key(myhtml_tree_t *tree, myh
if(scope_node == NULL)
scope_node = tree->node_html;
- myhtml_status_t rec_status = myhtml_get_nodes_by_attribute_key_recursion(scope_node, collection, key, key_len);
+ mystatus_t rec_status = myhtml_get_nodes_by_attribute_key_recursion(scope_node, collection, key, key_len);
if(rec_status && status)
*status = rec_status;
@@ -823,28 +888,28 @@ myhtml_collection_t * myhtml_get_nodes_by_attribute_key(myhtml_tree_t *tree, myh
}
/* find by attribute value; case-sensitivity */
-bool myhtml_get_nodes_by_attribute_value_recursion_eq(myhtml_string_t* str, const char* value, size_t value_len)
+bool myhtml_get_nodes_by_attribute_value_recursion_eq(mycore_string_t* str, const char* value, size_t value_len)
{
- return str->length == value_len && myhtml_strncmp(str->data, value, value_len) == 0;
+ return str->length == value_len && mycore_strncmp(str->data, value, value_len) == 0;
}
-bool myhtml_get_nodes_by_attribute_value_recursion_whitespace_separated(myhtml_string_t* str, const char* value, size_t value_len)
+bool myhtml_get_nodes_by_attribute_value_recursion_whitespace_separated(mycore_string_t* str, const char* value, size_t value_len)
{
if(str->length < value_len)
return false;
const char *data = str->data;
- if(myhtml_strncmp(data, value, value_len) == 0) {
- if((str->length > value_len && myhtml_utils_whithspace(data[value_len], ==, ||)) || str->length == value_len)
+ if(mycore_strncmp(data, value, value_len) == 0) {
+ if((str->length > value_len && mycore_utils_whithspace(data[value_len], ==, ||)) || str->length == value_len)
return true;
}
for(size_t i = 1; (str->length - i) >= value_len; i++)
{
- if(myhtml_utils_whithspace(data[(i - 1)], ==, ||)) {
- if(myhtml_strncmp(&data[i], value, value_len) == 0) {
- if((i > value_len && myhtml_utils_whithspace(data[(i + value_len)], ==, ||)) || (str->length - i) == value_len)
+ if(mycore_utils_whithspace(data[(i - 1)], ==, ||)) {
+ if(mycore_strncmp(&data[i], value, value_len) == 0) {
+ if((i > value_len && mycore_utils_whithspace(data[(i + value_len)], ==, ||)) || (str->length - i) == value_len)
return true;
}
}
@@ -853,23 +918,23 @@ bool myhtml_get_nodes_by_attribute_value_recursion_whitespace_separated(myhtml_s
return false;
}
-bool myhtml_get_nodes_by_attribute_value_recursion_begin(myhtml_string_t* str, const char* value, size_t value_len)
+bool myhtml_get_nodes_by_attribute_value_recursion_begin(mycore_string_t* str, const char* value, size_t value_len)
{
if(str->length < value_len)
return false;
- return myhtml_strncmp(str->data, value, value_len) == 0;
+ return mycore_strncmp(str->data, value, value_len) == 0;
}
-bool myhtml_get_nodes_by_attribute_value_recursion_end(myhtml_string_t* str, const char* value, size_t value_len)
+bool myhtml_get_nodes_by_attribute_value_recursion_end(mycore_string_t* str, const char* value, size_t value_len)
{
if(str->length < value_len)
return false;
- return myhtml_strncmp(&str->data[ (str->length - (str->length - value_len)) ], value, value_len) == 0;
+ return mycore_strncmp(&str->data[ (str->length - (str->length - value_len)) ], value, value_len) == 0;
}
-bool myhtml_get_nodes_by_attribute_value_recursion_contain(myhtml_string_t* str, const char* value, size_t value_len)
+bool myhtml_get_nodes_by_attribute_value_recursion_contain(mycore_string_t* str, const char* value, size_t value_len)
{
if(str->length < value_len)
return false;
@@ -878,7 +943,7 @@ bool myhtml_get_nodes_by_attribute_value_recursion_contain(myhtml_string_t* str,
for(size_t i = 0; (str->length - i) >= value_len; i++)
{
- if(myhtml_strncmp(&data[i], value, value_len) == 0) {
+ if(mycore_strncmp(&data[i], value, value_len) == 0) {
return true;
}
}
@@ -886,16 +951,16 @@ bool myhtml_get_nodes_by_attribute_value_recursion_contain(myhtml_string_t* str,
return false;
}
-bool myhtml_get_nodes_by_attribute_value_recursion_hyphen_separated(myhtml_string_t* str, const char* value, size_t value_len)
+bool myhtml_get_nodes_by_attribute_value_recursion_hyphen_separated(mycore_string_t* str, const char* value, size_t value_len)
{
const char *data = str->data;
if(str->length < value_len)
return false;
- else if(str->length == value_len && myhtml_strncmp(data, value, value_len) == 0) {
+ else if(str->length == value_len && mycore_strncmp(data, value, value_len) == 0) {
return true;
}
- else if(myhtml_strncmp(data, value, value_len) == 0 && data[value_len] == '-') {
+ else if(mycore_strncmp(data, value, value_len) == 0 && data[value_len] == '-') {
return true;
}
@@ -903,28 +968,28 @@ bool myhtml_get_nodes_by_attribute_value_recursion_hyphen_separated(myhtml_strin
}
/* find by attribute value; case-insensitive */
-bool myhtml_get_nodes_by_attribute_value_recursion_eq_i(myhtml_string_t* str, const char* value, size_t value_len)
+bool myhtml_get_nodes_by_attribute_value_recursion_eq_i(mycore_string_t* str, const char* value, size_t value_len)
{
- return str->length == value_len && myhtml_strncasecmp(str->data, value, value_len) == 0;
+ return str->length == value_len && mycore_strncasecmp(str->data, value, value_len) == 0;
}
-bool myhtml_get_nodes_by_attribute_value_recursion_whitespace_separated_i(myhtml_string_t* str, const char* value, size_t value_len)
+bool myhtml_get_nodes_by_attribute_value_recursion_whitespace_separated_i(mycore_string_t* str, const char* value, size_t value_len)
{
if(str->length < value_len)
return false;
const char *data = str->data;
- if(myhtml_strncasecmp(data, value, value_len) == 0) {
- if((str->length > value_len && myhtml_utils_whithspace(data[value_len], ==, ||)) || str->length == value_len)
+ if(mycore_strncasecmp(data, value, value_len) == 0) {
+ if((str->length > value_len && mycore_utils_whithspace(data[value_len], ==, ||)) || str->length == value_len)
return true;
}
for(size_t i = 1; (str->length - i) >= value_len; i++)
{
- if(myhtml_utils_whithspace(data[(i - 1)], ==, ||)) {
- if(myhtml_strncasecmp(&data[i], value, value_len) == 0) {
- if((i > value_len && myhtml_utils_whithspace(data[(i + value_len)], ==, ||)) || (str->length - i) == value_len)
+ if(mycore_utils_whithspace(data[(i - 1)], ==, ||)) {
+ if(mycore_strncasecmp(&data[i], value, value_len) == 0) {
+ if((i > value_len && mycore_utils_whithspace(data[(i + value_len)], ==, ||)) || (str->length - i) == value_len)
return true;
}
}
@@ -933,23 +998,23 @@ bool myhtml_get_nodes_by_attribute_value_recursion_whitespace_separated_i(myhtml
return false;
}
-bool myhtml_get_nodes_by_attribute_value_recursion_begin_i(myhtml_string_t* str, const char* value, size_t value_len)
+bool myhtml_get_nodes_by_attribute_value_recursion_begin_i(mycore_string_t* str, const char* value, size_t value_len)
{
if(str->length < value_len)
return false;
- return myhtml_strncasecmp(str->data, value, value_len) == 0;
+ return mycore_strncasecmp(str->data, value, value_len) == 0;
}
-bool myhtml_get_nodes_by_attribute_value_recursion_end_i(myhtml_string_t* str, const char* value, size_t value_len)
+bool myhtml_get_nodes_by_attribute_value_recursion_end_i(mycore_string_t* str, const char* value, size_t value_len)
{
if(str->length < value_len)
return false;
- return myhtml_strncasecmp(&str->data[ (str->length - (str->length - value_len)) ], value, value_len) == 0;
+ return mycore_strncasecmp(&str->data[ (str->length - (str->length - value_len)) ], value, value_len) == 0;
}
-bool myhtml_get_nodes_by_attribute_value_recursion_contain_i(myhtml_string_t* str, const char* value, size_t value_len)
+bool myhtml_get_nodes_by_attribute_value_recursion_contain_i(mycore_string_t* str, const char* value, size_t value_len)
{
if(str->length < value_len)
return false;
@@ -958,7 +1023,7 @@ bool myhtml_get_nodes_by_attribute_value_recursion_contain_i(myhtml_string_t* st
for(size_t i = 0; (str->length - i) >= value_len; i++)
{
- if(myhtml_strncasecmp(&data[i], value, value_len) == 0) {
+ if(mycore_strncasecmp(&data[i], value, value_len) == 0) {
return true;
}
}
@@ -966,16 +1031,16 @@ bool myhtml_get_nodes_by_attribute_value_recursion_contain_i(myhtml_string_t* st
return false;
}
-bool myhtml_get_nodes_by_attribute_value_recursion_hyphen_separated_i(myhtml_string_t* str, const char* value, size_t value_len)
+bool myhtml_get_nodes_by_attribute_value_recursion_hyphen_separated_i(mycore_string_t* str, const char* value, size_t value_len)
{
const char *data = str->data;
if(str->length < value_len)
return false;
- else if(str->length == value_len && myhtml_strncasecmp(data, value, value_len) == 0) {
+ else if(str->length == value_len && mycore_strncasecmp(data, value, value_len) == 0) {
return true;
}
- else if(myhtml_strncasecmp(data, value, value_len) == 0 && data[value_len] == '-') {
+ else if(mycore_strncasecmp(data, value, value_len) == 0 && data[value_len] == '-') {
return true;
}
@@ -983,7 +1048,7 @@ bool myhtml_get_nodes_by_attribute_value_recursion_hyphen_separated_i(myhtml_str
}
/* find by attribute value; basic functions */
-myhtml_status_t myhtml_get_nodes_by_attribute_value_recursion(myhtml_tree_node_t* node, myhtml_collection_t* collection,
+mystatus_t myhtml_get_nodes_by_attribute_value_recursion(myhtml_tree_node_t* node, myhtml_collection_t* collection,
myhtml_attribute_value_find_f func_eq,
const char* value, size_t value_len)
{
@@ -993,14 +1058,14 @@ myhtml_status_t myhtml_get_nodes_by_attribute_value_recursion(myhtml_tree_node_t
myhtml_tree_attr_t* attr = node->token->attr_first;
while(attr) {
- myhtml_string_t* str = &attr->value;
+ mycore_string_t* str = &attr->value;
if(func_eq(str, value, value_len)) {
collection->list[ collection->length ] = node;
collection->length++;
if(collection->length >= collection->size) {
- myhtml_status_t status = myhtml_collection_check_size(collection, 1024, 0);
+ mystatus_t status = myhtml_collection_check_size(collection, 1024, 0);
if(status)
return status;
@@ -1012,7 +1077,7 @@ myhtml_status_t myhtml_get_nodes_by_attribute_value_recursion(myhtml_tree_node_t
}
if(node->child) {
- myhtml_status_t status = myhtml_get_nodes_by_attribute_value_recursion(node->child, collection, func_eq, value, value_len);
+ mystatus_t status = myhtml_get_nodes_by_attribute_value_recursion(node->child, collection, func_eq, value, value_len);
if(status)
return status;
@@ -1024,7 +1089,7 @@ myhtml_status_t myhtml_get_nodes_by_attribute_value_recursion(myhtml_tree_node_t
return MyHTML_STATUS_OK;
}
-myhtml_status_t myhtml_get_nodes_by_attribute_value_recursion_by_key(myhtml_tree_node_t* node, myhtml_collection_t* collection,
+mystatus_t myhtml_get_nodes_by_attribute_value_recursion_by_key(myhtml_tree_node_t* node, myhtml_collection_t* collection,
myhtml_attribute_value_find_f func_eq,
const char* key, size_t key_len,
const char* value, size_t value_len)
@@ -1035,17 +1100,17 @@ myhtml_status_t myhtml_get_nodes_by_attribute_value_recursion_by_key(myhtml_tree
myhtml_tree_attr_t* attr = node->token->attr_first;
while(attr) {
- myhtml_string_t* str_key = &attr->key;
- myhtml_string_t* str = &attr->value;
+ mycore_string_t* str_key = &attr->key;
+ mycore_string_t* str = &attr->value;
- if(str_key->length == key_len && myhtml_strncasecmp(str_key->data, key, key_len) == 0)
+ if(str_key->length == key_len && mycore_strncasecmp(str_key->data, key, key_len) == 0)
{
if(func_eq(str, value, value_len)) {
collection->list[ collection->length ] = node;
collection->length++;
if(collection->length >= collection->size) {
- myhtml_status_t status = myhtml_collection_check_size(collection, 1024, 0);
+ mystatus_t status = myhtml_collection_check_size(collection, 1024, 0);
if(status)
return status;
@@ -1058,7 +1123,7 @@ myhtml_status_t myhtml_get_nodes_by_attribute_value_recursion_by_key(myhtml_tree
}
if(node->child) {
- myhtml_status_t status = myhtml_get_nodes_by_attribute_value_recursion_by_key(node->child, collection, func_eq,
+ mystatus_t status = myhtml_get_nodes_by_attribute_value_recursion_by_key(node->child, collection, func_eq,
key, key_len, value, value_len);
if(status)
@@ -1075,7 +1140,7 @@ myhtml_collection_t * _myhtml_get_nodes_by_attribute_value(myhtml_tree_t *tree,
myhtml_attribute_value_find_f func_eq,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status)
+ mystatus_t* status)
{
if(collection == NULL) {
collection = myhtml_collection_create(1024, status);
@@ -1087,7 +1152,7 @@ myhtml_collection_t * _myhtml_get_nodes_by_attribute_value(myhtml_tree_t *tree,
if(node == NULL)
node = tree->node_html;
- myhtml_status_t rec_status;
+ mystatus_t rec_status;
if(key && key_len)
rec_status = myhtml_get_nodes_by_attribute_value_recursion_by_key(node, collection, func_eq, key, key_len, value, value_len);
@@ -1104,7 +1169,7 @@ myhtml_collection_t * myhtml_get_nodes_by_attribute_value(myhtml_tree_t *tree, m
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status)
+ mystatus_t* status)
{
if(case_insensitive) {
return _myhtml_get_nodes_by_attribute_value(tree, collection, node,
@@ -1121,7 +1186,7 @@ myhtml_collection_t * myhtml_get_nodes_by_attribute_value_whitespace_separated(m
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status)
+ mystatus_t* status)
{
if(case_insensitive) {
return _myhtml_get_nodes_by_attribute_value(tree, collection, node,
@@ -1138,7 +1203,7 @@ myhtml_collection_t * myhtml_get_nodes_by_attribute_value_begin(myhtml_tree_t *t
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status)
+ mystatus_t* status)
{
if(case_insensitive) {
return _myhtml_get_nodes_by_attribute_value(tree, collection, node,
@@ -1155,7 +1220,7 @@ myhtml_collection_t * myhtml_get_nodes_by_attribute_value_end(myhtml_tree_t *tre
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status)
+ mystatus_t* status)
{
if(case_insensitive) {
return _myhtml_get_nodes_by_attribute_value(tree, collection, node,
@@ -1172,7 +1237,7 @@ myhtml_collection_t * myhtml_get_nodes_by_attribute_value_contain(myhtml_tree_t
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status)
+ mystatus_t* status)
{
if(case_insensitive) {
return _myhtml_get_nodes_by_attribute_value(tree, collection, node,
@@ -1189,7 +1254,7 @@ myhtml_collection_t * myhtml_get_nodes_by_attribute_value_hyphen_separated(myhtm
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status)
+ mystatus_t* status)
{
if(case_insensitive) {
return _myhtml_get_nodes_by_attribute_value(tree, collection, node,
@@ -1257,7 +1322,7 @@ const char * myhtml_attribute_value(myhtml_tree_attr_t *attr, size_t *length)
return NULL;
}
-myhtml_string_t * myhtml_attribute_key_string(myhtml_tree_attr_t* attr)
+mycore_string_t * myhtml_attribute_key_string(myhtml_tree_attr_t* attr)
{
if(attr)
return &attr->key;
@@ -1265,7 +1330,7 @@ myhtml_string_t * myhtml_attribute_key_string(myhtml_tree_attr_t* attr)
return NULL;
}
-myhtml_string_t * myhtml_attribute_value_string(myhtml_tree_attr_t* attr)
+mycore_string_t * myhtml_attribute_value_string(myhtml_tree_attr_t* attr)
{
if(attr)
return &attr->value;
@@ -1281,7 +1346,7 @@ myhtml_tree_attr_t * myhtml_attribute_by_key(myhtml_tree_node_t *node, const cha
return myhtml_token_attr_by_name(node->token, key, key_len);
}
-myhtml_tree_attr_t * myhtml_attribute_add(myhtml_tree_node_t *node, const char *key, size_t key_len, const char *value, size_t value_len, myhtml_encoding_t encoding)
+myhtml_tree_attr_t * myhtml_attribute_add(myhtml_tree_node_t *node, const char *key, size_t key_len, const char *value, size_t value_len, myencoding_t encoding)
{
if(node == NULL)
return NULL;
@@ -1353,9 +1418,9 @@ myhtml_position_t myhtml_attribute_value_raw_position(myhtml_tree_attr_t *attr)
/*
* Collections
*/
-myhtml_collection_t * myhtml_collection_create(size_t size, myhtml_status_t *status)
+myhtml_collection_t * myhtml_collection_create(size_t size, mystatus_t *status)
{
- myhtml_collection_t *collection = (myhtml_collection_t*)myhtml_malloc(sizeof(myhtml_collection_t));
+ myhtml_collection_t *collection = (myhtml_collection_t*)mycore_malloc(sizeof(myhtml_collection_t));
if(collection == NULL) {
if(status)
@@ -1366,10 +1431,10 @@ myhtml_collection_t * myhtml_collection_create(size_t size, myhtml_status_t *sta
collection->size = size;
collection->length = 0;
- collection->list = (myhtml_tree_node_t **)myhtml_malloc(sizeof(myhtml_tree_node_t*) * size);
+ collection->list = (myhtml_tree_node_t **)mycore_malloc(sizeof(myhtml_tree_node_t*) * size);
if(collection->list == NULL) {
- myhtml_free(collection);
+ mycore_free(collection);
if(status)
*status = MyHTML_STATUS_ERROR_MEMORY_ALLOCATION;
@@ -1383,12 +1448,12 @@ myhtml_collection_t * myhtml_collection_create(size_t size, myhtml_status_t *sta
return collection;
}
-myhtml_status_t myhtml_collection_check_size(myhtml_collection_t *collection, size_t need, size_t upto_length)
+mystatus_t myhtml_collection_check_size(myhtml_collection_t *collection, size_t need, size_t upto_length)
{
if((collection->length + need) >= collection->size)
{
size_t tmp_size = collection->length + need + upto_length + 1;
- myhtml_tree_node_t **tmp = (myhtml_tree_node_t **)myhtml_realloc(collection->list, sizeof(myhtml_tree_node_t*) * tmp_size);
+ myhtml_tree_node_t **tmp = (myhtml_tree_node_t **)mycore_realloc(collection->list, sizeof(myhtml_tree_node_t*) * tmp_size);
if(tmp) {
collection->size = tmp_size;
@@ -1413,15 +1478,15 @@ myhtml_collection_t * myhtml_collection_destroy(myhtml_collection_t *collection)
return NULL;
if(collection->list)
- myhtml_free(collection->list);
+ mycore_free(collection->list);
- myhtml_free(collection);
+ mycore_free(collection);
return NULL;
}
/* queue */
-myhtml_status_t myhtml_queue_add(myhtml_tree_t *tree, size_t begin, myhtml_token_node_t* token)
+mystatus_t myhtml_queue_add(myhtml_tree_t *tree, size_t begin, myhtml_token_node_t* token)
{
// TODO: need refactoring this code
// too many conditions
@@ -1437,50 +1502,48 @@ myhtml_status_t myhtml_queue_add(myhtml_tree_t *tree, size_t begin, myhtml_token
}
}
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
+#ifndef MyCORE_BUILD_WITHOUT_THREADS
if(tree->flags & MyHTML_TREE_FLAGS_SINGLE_MODE) {
if(qnode && token) {
- qnode->token = token;
+ qnode->args = token;
myhtml_parser_worker(0, qnode);
myhtml_parser_stream(0, qnode);
}
- tree->current_qnode = mythread_queue_node_malloc_limit(tree->myhtml->thread, tree->queue, 4, NULL);
+ tree->current_qnode = mythread_queue_node_malloc_limit(tree->myhtml->thread_stream, tree->queue, 4, NULL);
}
else {
if(qnode)
- qnode->token = token;
+ qnode->args = token;
- tree->current_qnode = mythread_queue_node_malloc_round(tree->myhtml->thread, tree->queue_entry, NULL);
+ tree->current_qnode = mythread_queue_node_malloc_round(tree->myhtml->thread_stream, tree->queue_entry, NULL);
}
#else
if(qnode && token) {
- qnode->token = token;
+ qnode->args = token;
myhtml_parser_worker(0, qnode);
myhtml_parser_stream(0, qnode);
}
- tree->current_qnode = mythread_queue_node_malloc_limit(tree->myhtml->thread, tree->queue, 4, NULL);
+ tree->current_qnode = mythread_queue_node_malloc_limit(tree->myhtml->thread_stream, tree->queue, 4, NULL);
-#endif /* MyHTML_BUILD_WITHOUT_THREADS */
+#endif /* MyCORE_BUILD_WITHOUT_THREADS */
- if(tree->current_qnode == NULL) {
+ if(tree->current_qnode == NULL)
return MyHTML_STATUS_ERROR_MEMORY_ALLOCATION;
- }
- tree->current_qnode->tree = tree;
+ tree->current_qnode->context = tree;
tree->current_qnode->prev = qnode;
if(qnode && token)
myhtml_tokenizer_calc_current_namespace(tree, token);
tree->current_token_node = myhtml_token_node_create(tree->token, tree->token->mcasync_token_id);
-
if(tree->current_token_node == NULL)
return MyHTML_STATUS_ERROR_MEMORY_ALLOCATION;
diff --git a/source/myhtml/myhtml.h b/source/myhtml/myhtml.h
index 9a049e2..1bc94e1 100644
--- a/source/myhtml/myhtml.h
+++ b/source/myhtml/myhtml.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -28,19 +28,19 @@ extern "C" {
#include "myhtml/myosi.h"
-#include "myhtml/utils/mctree.h"
-#include "myhtml/utils/mcobject_async.h"
+#include "mycore/utils/mctree.h"
+#include "mycore/utils/mcobject_async.h"
+#include "mycore/mythread.h"
+#include "mycore/incoming.h"
+#include "myencoding/encoding.h"
#include "myhtml/tree.h"
#include "myhtml/tag.h"
#include "myhtml/def.h"
#include "myhtml/parser.h"
#include "myhtml/tokenizer.h"
-#include "myhtml/thread.h"
#include "myhtml/rules.h"
#include "myhtml/token.h"
#include "myhtml/charef.h"
-#include "myhtml/encoding.h"
-#include "myhtml/incoming.h"
#include "myhtml/callback.h"
#define mh_queue_current() tree->queue
@@ -65,8 +65,10 @@ extern "C" {
(onechar < 'A' || onechar > 'Z'))
struct myhtml {
- mythread_t *thread;
- //mchar_async_t *mchar; // for all
+ mythread_t* thread_stream;
+ mythread_t* thread_batch;
+ mythread_t* thread_list[3];
+ size_t thread_total;
myhtml_tokenizer_state_f* parse_state_func;
myhtml_insertion_f* insertion_func;
@@ -83,68 +85,68 @@ struct myhtml_collection {
myhtml_t * myhtml_create(void);
-myhtml_status_t myhtml_init(myhtml_t* myhtml, enum myhtml_options opt, size_t thread_count, size_t queue_size);
+mystatus_t myhtml_init(myhtml_t* myhtml, enum myhtml_options opt, size_t thread_count, size_t queue_size);
void myhtml_clean(myhtml_t* myhtml);
myhtml_t* myhtml_destroy(myhtml_t* myhtml);
-myhtml_status_t myhtml_parse(myhtml_tree_t* tree, myhtml_encoding_t encoding, const char* html, size_t html_size);
-myhtml_status_t myhtml_parse_fragment(myhtml_tree_t* tree, myhtml_encoding_t encoding, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns);
+mystatus_t myhtml_parse(myhtml_tree_t* tree, myencoding_t encoding, const char* html, size_t html_size);
+mystatus_t myhtml_parse_fragment(myhtml_tree_t* tree, myencoding_t encoding, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns);
-myhtml_status_t myhtml_parse_single(myhtml_tree_t* tree, myhtml_encoding_t encoding, const char* html, size_t html_size);
-myhtml_status_t myhtml_parse_fragment_single(myhtml_tree_t* tree, myhtml_encoding_t encoding, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns);
+mystatus_t myhtml_parse_single(myhtml_tree_t* tree, myencoding_t encoding, const char* html, size_t html_size);
+mystatus_t myhtml_parse_fragment_single(myhtml_tree_t* tree, myencoding_t encoding, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns);
-myhtml_status_t myhtml_parse_chunk(myhtml_tree_t* tree, const char* html, size_t html_size);
-myhtml_status_t myhtml_parse_chunk_fragment(myhtml_tree_t* tree, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns);
-myhtml_status_t myhtml_parse_chunk_single(myhtml_tree_t* tree, const char* html, size_t html_size);
-myhtml_status_t myhtml_parse_chunk_fragment_single(myhtml_tree_t* tree, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns);
-myhtml_status_t myhtml_parse_chunk_end(myhtml_tree_t* tree);
+mystatus_t myhtml_parse_chunk(myhtml_tree_t* tree, const char* html, size_t html_size);
+mystatus_t myhtml_parse_chunk_fragment(myhtml_tree_t* tree, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns);
+mystatus_t myhtml_parse_chunk_single(myhtml_tree_t* tree, const char* html, size_t html_size);
+mystatus_t myhtml_parse_chunk_fragment_single(myhtml_tree_t* tree, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns);
+mystatus_t myhtml_parse_chunk_end(myhtml_tree_t* tree);
// encoding
-void myhtml_encoding_set(myhtml_tree_t* tree, myhtml_encoding_t encoding);
-myhtml_encoding_t myhtml_encoding_get(myhtml_tree_t* tree);
+void myhtml_encoding_set(myhtml_tree_t* tree, myencoding_t encoding);
+myencoding_t myhtml_encoding_get(myhtml_tree_t* tree);
-myhtml_collection_t * myhtml_get_nodes_by_tag_id(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tag_id_t tag_id, myhtml_status_t *status);
-myhtml_collection_t * myhtml_get_nodes_by_name(myhtml_tree_t* tree, myhtml_collection_t *collection, const char* html, size_t length, myhtml_status_t *status);
-myhtml_collection_t * myhtml_get_nodes_by_attribute_key(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* scope_node, const char* key, size_t key_len, myhtml_status_t* status);
+myhtml_collection_t * myhtml_get_nodes_by_tag_id(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tag_id_t tag_id, mystatus_t *status);
+myhtml_collection_t * myhtml_get_nodes_by_name(myhtml_tree_t* tree, myhtml_collection_t *collection, const char* html, size_t length, mystatus_t *status);
+myhtml_collection_t * myhtml_get_nodes_by_attribute_key(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* scope_node, const char* key, size_t key_len, mystatus_t* status);
/* like a [some=value] or #id */
myhtml_collection_t * myhtml_get_nodes_by_attribute_value(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* node,
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status);
+ mystatus_t* status);
/* like a [some~=value] or .class */
myhtml_collection_t * myhtml_get_nodes_by_attribute_value_whitespace_separated(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* node,
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status);
+ mystatus_t* status);
/* like a [some^=value] */
myhtml_collection_t * myhtml_get_nodes_by_attribute_value_begin(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* node,
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status);
+ mystatus_t* status);
/* like a [some$=value] */
myhtml_collection_t * myhtml_get_nodes_by_attribute_value_end(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* node,
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status);
+ mystatus_t* status);
/* like a [some*=value] */
myhtml_collection_t * myhtml_get_nodes_by_attribute_value_contain(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* node,
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status);
+ mystatus_t* status);
/* like a [some|=value] */
myhtml_collection_t * myhtml_get_nodes_by_attribute_value_hyphen_separated(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* node,
bool case_insensitive,
const char* key, size_t key_len,
const char* value, size_t value_len,
- myhtml_status_t* status);
+ mystatus_t* status);
-myhtml_collection_t * myhtml_get_nodes_by_tag_id_in_scope(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tree_node_t *node, myhtml_tag_id_t tag_id, myhtml_status_t *status);
-myhtml_collection_t * myhtml_get_nodes_by_name_in_scope(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tree_node_t *node, const char* html, size_t length, myhtml_status_t *status);
+myhtml_collection_t * myhtml_get_nodes_by_tag_id_in_scope(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tree_node_t *node, myhtml_tag_id_t tag_id, mystatus_t *status);
+myhtml_collection_t * myhtml_get_nodes_by_name_in_scope(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tree_node_t *node, const char* html, size_t length, mystatus_t *status);
myhtml_tree_node_t * myhtml_node_first(myhtml_tree_t* tree);
myhtml_tree_node_t * myhtml_node_next(myhtml_tree_node_t *node);
@@ -174,7 +176,7 @@ bool myhtml_node_is_close_self(myhtml_tree_node_t *node);
myhtml_tree_attr_t * myhtml_node_attribute_first(myhtml_tree_node_t *node);
myhtml_tree_attr_t * myhtml_node_attribute_last(myhtml_tree_node_t *node);
const char * myhtml_node_text(myhtml_tree_node_t *node, size_t *length);
-myhtml_string_t * myhtml_node_string(myhtml_tree_node_t *node);
+mycore_string_t * myhtml_node_string(myhtml_tree_node_t *node);
myhtml_position_t myhtml_node_raw_pasition(myhtml_tree_node_t *node);
myhtml_position_t myhtml_node_element_pasition(myhtml_tree_node_t *node);
void myhtml_node_set_data(myhtml_tree_node_t *node, void* data);
@@ -188,10 +190,10 @@ void myhtml_attribute_namespace_set(myhtml_tree_attr_t *attr, myhtml_namespace_t
const char * myhtml_attribute_key(myhtml_tree_attr_t *attr, size_t *length);
const char * myhtml_attribute_value(myhtml_tree_attr_t *attr, size_t *length);
-myhtml_string_t * myhtml_attribute_key_string(myhtml_tree_attr_t* attr);
-myhtml_string_t * myhtml_attribute_value_string(myhtml_tree_attr_t* attr);
+mycore_string_t * myhtml_attribute_key_string(myhtml_tree_attr_t* attr);
+mycore_string_t * myhtml_attribute_value_string(myhtml_tree_attr_t* attr);
myhtml_tree_attr_t * myhtml_attribute_by_key(myhtml_tree_node_t *node, const char *key, size_t key_len);
-myhtml_tree_attr_t * myhtml_attribute_add(myhtml_tree_node_t *node, const char *key, size_t key_len, const char *value, size_t value_len, myhtml_encoding_t encoding);
+myhtml_tree_attr_t * myhtml_attribute_add(myhtml_tree_node_t *node, const char *key, size_t key_len, const char *value, size_t value_len, myencoding_t encoding);
myhtml_tree_attr_t * myhtml_attribute_remove(myhtml_tree_node_t *node, myhtml_tree_attr_t *attr);
myhtml_tree_attr_t * myhtml_attribute_remove_by_key(myhtml_tree_node_t *node, const char *key, size_t key_len);
void myhtml_attribute_delete(myhtml_tree_t *tree, myhtml_tree_node_t *node, myhtml_tree_attr_t *attr);
@@ -200,35 +202,20 @@ myhtml_position_t myhtml_attribute_key_raw_position(myhtml_tree_attr_t *attr);
myhtml_position_t myhtml_attribute_value_raw_position(myhtml_tree_attr_t *attr);
/* collection */
-myhtml_collection_t * myhtml_collection_create(size_t size, myhtml_status_t *status);
+myhtml_collection_t * myhtml_collection_create(size_t size, mystatus_t *status);
void myhtml_collection_clean(myhtml_collection_t *collection);
myhtml_collection_t * myhtml_collection_destroy(myhtml_collection_t *collection);
-myhtml_status_t myhtml_collection_check_size(myhtml_collection_t *collection, size_t need, size_t upto_length);
+mystatus_t myhtml_collection_check_size(myhtml_collection_t *collection, size_t need, size_t upto_length);
// strings
-myhtml_string_t * myhtml_node_text_set(myhtml_tree_node_t *node, const char* text, size_t length, myhtml_encoding_t encoding);
-myhtml_string_t * myhtml_node_text_set_with_charef(myhtml_tree_node_t *node, const char* text, size_t length, myhtml_encoding_t encoding);
+mycore_string_t * myhtml_node_text_set(myhtml_tree_node_t *node, const char* text, size_t length, myencoding_t encoding);
+mycore_string_t * myhtml_node_text_set_with_charef(myhtml_tree_node_t *node, const char* text, size_t length, myencoding_t encoding);
bool myhtml_utils_strcmp(const char* ab, const char* to_lowercase, size_t size);
bool myhtml_is_html_node(myhtml_tree_node_t *node, myhtml_tag_id_t tag_id);
// queue
-myhtml_status_t myhtml_queue_add(myhtml_tree_t *tree, size_t begin, myhtml_token_node_t* token);
-
-/**
- * Platform-specific hdef performance clock queries.
- * Implemented in perf.c
- */
-
-/** Get clock resolution */
-uint64_t myhtml_hperf_res(myhtml_status_t *status);
-
-/** Get current value in clock ticks */
-uint64_t myhtml_hperf_clock(myhtml_status_t *status);
-
-/** Print an hperf measure */
-myhtml_status_t myhtml_hperf_print(const char *name, uint64_t x, uint64_t y, FILE *fh);
-myhtml_status_t myhtml_hperf_print_by_val(const char *name, uint64_t x, FILE *fh);
+mystatus_t myhtml_queue_add(myhtml_tree_t *tree, size_t begin, myhtml_token_node_t* token);
/* version */
myhtml_version_t myhtml_version(void);
diff --git a/source/myhtml/mynamespace.c b/source/myhtml/mynamespace.c
index 596b518..4821c75 100644
--- a/source/myhtml/mynamespace.c
+++ b/source/myhtml/mynamespace.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -20,19 +20,19 @@
#include "myhtml/mynamespace.h"
#include "myhtml/mynamespace_resource.h"
-#include "myhtml/utils/resources.h"
+#include "mycore/utils/resources.h"
const myhtml_namespace_detect_name_entry_t * myhtml_namespace_name_entry_by_name(const char* name, size_t length)
{
- size_t idx = ((myhtml_string_chars_lowercase_map[ (const unsigned char)name[0] ] *
- myhtml_string_chars_lowercase_map[ (const unsigned char)name[(length - 1)] ] *
+ size_t idx = ((mycore_string_chars_lowercase_map[ (const unsigned char)name[0] ] *
+ mycore_string_chars_lowercase_map[ (const unsigned char)name[(length - 1)] ] *
length)
% MyHTML_NAMESPACE_DETECT_NAME_STATIC_SIZE) + 1;
while (myhtml_namespace_detect_name_entry_static_list_index[idx].name)
{
if(myhtml_namespace_detect_name_entry_static_list_index[idx].name_length == length) {
- if(myhtml_strncasecmp(myhtml_namespace_detect_name_entry_static_list_index[idx].name, name, length) == 0)
+ if(mycore_strncasecmp(myhtml_namespace_detect_name_entry_static_list_index[idx].name, name, length) == 0)
return &myhtml_namespace_detect_name_entry_static_list_index[idx];
if(myhtml_namespace_detect_name_entry_static_list_index[idx].next)
diff --git a/source/myhtml/mynamespace.h b/source/myhtml/mynamespace.h
index 0d8d0e9..755cd09 100644
--- a/source/myhtml/mynamespace.h
+++ b/source/myhtml/mynamespace.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -31,7 +31,7 @@ extern "C" {
#include <string.h>
#include "myhtml/myosi.h"
-#include "myhtml/utils.h"
+#include "mycore/utils.h"
struct myhtml_namespace_detect_name_entry {
const char* name;
diff --git a/source/myhtml/mynamespace_resource.h b/source/myhtml/mynamespace_resource.h
index e584cb7..be20f0b 100644
--- a/source/myhtml/mynamespace_resource.h
+++ b/source/myhtml/mynamespace_resource.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
diff --git a/source/myhtml/myosi.c b/source/myhtml/myosi.c
deleted file mode 100644
index cd1e683..0000000
--- a/source/myhtml/myosi.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#include "myhtml/myosi.h"
-
-void * myhtml_mem_malloc(size_t size)
-{
- return malloc(size);
-}
-
-// see who's call realloc
-void * myhtml_mem_realloc(void* dst, size_t size)
-{
- return realloc(dst, size);
-}
-
-void * myhtml_mem_calloc(size_t num, size_t size)
-{
- return calloc(num, size);
-}
-
-void myhtml_mem_free(void* dst)
-{
- free(dst);
-}
-
-void myhtml_print(FILE* out, const char* format, ...)
-{
- va_list argptr;
- va_start(argptr, format);
- vfprintf(out, format, argptr);
- va_end(argptr);
-}
diff --git a/source/myhtml/myosi.h b/source/myhtml/myosi.h
index 3901fae..cdc14db 100644
--- a/source/myhtml/myosi.h
+++ b/source/myhtml/myosi.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -22,181 +22,23 @@
#define MyHTML_MYOSI_H
#pragma once
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <memory.h>
-#include <stdint.h>
-#include <stdarg.h>
+#include "mycore/myosi.h"
-#define MyHTML_VERSION_MAJOR 3
+#define MyHTML_VERSION_MAJOR 4
#define MyHTML_VERSION_MINOR 0
#define MyHTML_VERSION_PATCH 0
-#if (defined(_WIN32) || defined(_WIN64)) && !defined(__WINPTHREADS_VERSION)
-#define IS_OS_WINDOWS
-#include <windows.h>
-#endif
-
-#if defined(_MSC_VER)
-# define MyHTML_DEPRECATED(func) __declspec(deprecated) func
-#elif defined(__GNUC__) || defined(__INTEL_COMPILER)
-# define MyHTML_DEPRECATED(func) func __attribute__((deprecated))
-#else
-# define MyHTML_DEPRECATED(func) func
-#endif
+#define MyHTML_VERSION_STRING MyCORE_STR(MyHTML_VERSION_MAJOR) MyCORE_STR(.) MyCORE_STR(MyHTML_VERSION_MINOR) MyCORE_STR(.) MyCORE_STR(MyHTML_VERSION_PATCH)
#ifdef __cplusplus
extern "C" {
#endif
-/* Mem */
-#ifdef MyHTML_EXTERN_MALLOC
- extern void * MyHTML_EXTERN_MALLOC(size_t size);
- #define myhtml_malloc MyHTML_EXTERN_MALLOC
-#else
- #define myhtml_malloc myhtml_mem_malloc
-#endif
-
-#ifdef MyHTML_EXTERN_REALLOC
- extern void * MyHTML_EXTERN_REALLOC(void* dst, size_t size);
- #define myhtml_realloc MyHTML_EXTERN_REALLOC
-#else
- #define myhtml_realloc myhtml_mem_realloc
-#endif
-
-#ifdef MyHTML_EXTERN_CALLOC
- extern void * MyHTML_EXTERN_CALLOC(size_t num, size_t size);
- #define myhtml_calloc MyHTML_EXTERN_CALLOC
-#else
- #define myhtml_calloc myhtml_mem_calloc
-#endif
-
-#ifdef MyHTML_EXTERN_FREE
- extern void MyHTML_EXTERN_FREE(void* dst);
- #define myhtml_free MyHTML_EXTERN_FREE
-#else
- #define myhtml_free myhtml_mem_free
-#endif
-
-/* Debug */
-#ifdef DEBUG_MODE
- #define MyHTML_DEBUG(format, ...) \
- myhtml_print(stderr, "DEBUG: "format"\n", ##__VA_ARGS__)
-#else
- #define MyHTML_DEBUG(format, ...)
-#endif
-
-#ifdef DEBUG_MODE
- #define MyHTML_DEBUG_ERROR(format, ...) \
- myhtml_print(stderr, "DEBUG ERROR: "format"\n", ##__VA_ARGS__)
-#else
- #define MyHTML_DEBUG_ERROR(format, ...)
-#endif
-
-#define myhtml_base_add(myhtml, point, lenn, sizen, strcn, size) \
- myhtml->Lenn++; \
- if(myhtml->lenn == myhtml->sizen) { \
- myhtml->sizen += size; \
- myhtml->point = (strcn*)myhtml_realloc(myhtml->point, \
- sizeof(strcn) * myhtml->sizen); \
- }
-
#define MyHTML_FAILED(_status_) ((_status_) != MyHTML_STATUS_OK)
-// encoding
-// https://encoding.spec.whatwg.org/#the-encoding
-// https://encoding.spec.whatwg.org/#legacy-single-byte-encodings
-// https://encoding.spec.whatwg.org/#legacy-multi-byte-chinese-(simplified)-encodings
-// https://encoding.spec.whatwg.org/#legacy-multi-byte-chinese-(traditional)-encodings
-// https://encoding.spec.whatwg.org/#legacy-multi-byte-japanese-encodings
-// https://encoding.spec.whatwg.org/#legacy-multi-byte-korean-encodings
-// https://encoding.spec.whatwg.org/#legacy-miscellaneous-encodings
-
-enum myhtml_encoding_list {
- MyHTML_ENCODING_DEFAULT = 0x00,
-// MyHTML_ENCODING_AUTO = 0x01, // future
- MyHTML_ENCODING_NOT_DETERMINED = 0x02,
- MyHTML_ENCODING_UTF_8 = 0x00, // default encoding
- MyHTML_ENCODING_UTF_16LE = 0x04,
- MyHTML_ENCODING_UTF_16BE = 0x05,
- MyHTML_ENCODING_X_USER_DEFINED = 0x06,
- MyHTML_ENCODING_BIG5 = 0x07,
- MyHTML_ENCODING_EUC_JP = 0x08,
- MyHTML_ENCODING_EUC_KR = 0x09,
- MyHTML_ENCODING_GB18030 = 0x0a,
- MyHTML_ENCODING_GBK = 0x0b,
- MyHTML_ENCODING_IBM866 = 0x0c,
- MyHTML_ENCODING_ISO_2022_JP = 0x0d,
- MyHTML_ENCODING_ISO_8859_10 = 0x0e,
- MyHTML_ENCODING_ISO_8859_13 = 0x0f,
- MyHTML_ENCODING_ISO_8859_14 = 0x10,
- MyHTML_ENCODING_ISO_8859_15 = 0x11,
- MyHTML_ENCODING_ISO_8859_16 = 0x12,
- MyHTML_ENCODING_ISO_8859_2 = 0x13,
- MyHTML_ENCODING_ISO_8859_3 = 0x14,
- MyHTML_ENCODING_ISO_8859_4 = 0x15,
- MyHTML_ENCODING_ISO_8859_5 = 0x16,
- MyHTML_ENCODING_ISO_8859_6 = 0x17,
- MyHTML_ENCODING_ISO_8859_7 = 0x18,
- MyHTML_ENCODING_ISO_8859_8 = 0x19,
- MyHTML_ENCODING_ISO_8859_8_I = 0x1a,
- MyHTML_ENCODING_KOI8_R = 0x1b,
- MyHTML_ENCODING_KOI8_U = 0x1c,
- MyHTML_ENCODING_MACINTOSH = 0x1d,
- MyHTML_ENCODING_SHIFT_JIS = 0x1e,
- MyHTML_ENCODING_WINDOWS_1250 = 0x1f,
- MyHTML_ENCODING_WINDOWS_1251 = 0x20,
- MyHTML_ENCODING_WINDOWS_1252 = 0x21,
- MyHTML_ENCODING_WINDOWS_1253 = 0x22,
- MyHTML_ENCODING_WINDOWS_1254 = 0x23,
- MyHTML_ENCODING_WINDOWS_1255 = 0x24,
- MyHTML_ENCODING_WINDOWS_1256 = 0x25,
- MyHTML_ENCODING_WINDOWS_1257 = 0x26,
- MyHTML_ENCODING_WINDOWS_1258 = 0x27,
- MyHTML_ENCODING_WINDOWS_874 = 0x28,
- MyHTML_ENCODING_X_MAC_CYRILLIC = 0x29,
- MyHTML_ENCODING_LAST_ENTRY = 0x2a
-}
-typedef myhtml_encoding_t;
-
-typedef struct myhtml_encoding_result myhtml_encoding_result_t;
-typedef struct myhtml_encoding_trigram myhtml_encoding_trigram_t;
-typedef struct myhtml_encoding_trigram_result myhtml_encoding_trigram_result_t;
-typedef struct myhtml_encoding_unicode_result myhtml_encoding_unicode_result_t;
-typedef struct myhtml_encoding_detect_name_entry myhtml_encoding_detect_name_entry_t;
-typedef struct myhtml_encoding_detect_attr myhtml_encoding_detect_attr_t;
-typedef struct myhtml_encoding_entry_name_index myhtml_encoding_entry_name_index_t;
-
// char references
typedef struct myhtml_data_process_entry myhtml_data_process_entry_t;
-// strings
-typedef struct myhtml_string_raw myhtml_string_raw_t;
-typedef struct myhtml_string myhtml_string_t;
-
-// thread
-enum mythread_thread_opt {
- MyTHREAD_OPT_UNDEF = 0x00,
- MyTHREAD_OPT_WAIT = 0x01,
- MyTHREAD_OPT_QUIT = 0x02,
- MyTHREAD_OPT_STOP = 0x04,
- MyTHREAD_OPT_DONE = 0x08
-}
-typedef mythread_thread_opt_t;
-
-typedef struct mythread_queue_list_entry mythread_queue_list_entry_t;
-typedef struct mythread_queue_thread_param mythread_queue_thread_param_t;
-typedef struct mythread_queue_list mythread_queue_list_t;
-typedef struct mythread_queue_node mythread_queue_node_t;
-typedef struct mythread_queue mythread_queue_t;
-
-typedef size_t mythread_id_t;
-typedef struct mythread_workers_list mythread_workers_list_t;
-typedef struct mythread_context mythread_context_t;
-typedef struct mythread_list mythread_list_t;
-typedef struct mythread mythread_t;
-
// tree
enum myhtml_tree_flags {
MyHTML_TREE_FLAGS_CLEAN = 0x000,
@@ -386,68 +228,33 @@ enum myhtml_insertion_mode {
// base
/*
Very important!!!
-
- for myhtml 0..00ffff; MyHTML_STATUS_OK == 0x000000
- for mycss and modules 010000..01ffff; MyCSS_STATUS_OK == 0x000000
- for modest 020000..02ffff; MODEST_STATUS_OK == 0x000000
- for myrender 030000..03ffff; MyRENDER_STATUS_OK == 0x000000
- for mydom 040000..04ffff; MyDOM_STATUS_OK == 0x000000
- for mynetwork 050000..05ffff; MyNETWORK_STATUS_OK == 0x000000
- for myecma 060000..06ffff; MyECMA_STATUS_OK == 0x000000
- not occupied 070000..
+ See mycore/myosi.h:mystatus_t
*/
enum myhtml_status {
MyHTML_STATUS_OK = 0x0000,
MyHTML_STATUS_ERROR = 0x0001,
MyHTML_STATUS_ERROR_MEMORY_ALLOCATION = 0x0002,
- MyHTML_STATUS_THREAD_ERROR_MEMORY_ALLOCATION = 0x0009,
- MyHTML_STATUS_THREAD_ERROR_LIST_INIT = 0x000a,
- MyHTML_STATUS_THREAD_ERROR_ATTR_MALLOC = 0x000b,
- MyHTML_STATUS_THREAD_ERROR_ATTR_INIT = 0x000c,
- MyHTML_STATUS_THREAD_ERROR_ATTR_SET = 0x000d,
- MyHTML_STATUS_THREAD_ERROR_ATTR_DESTROY = 0x000e,
- MyHTML_STATUS_THREAD_ERROR_NO_SLOTS = 0x000f,
- MyHTML_STATUS_THREAD_ERROR_BATCH_INIT = 0x0010,
- MyHTML_STATUS_THREAD_ERROR_WORKER_MALLOC = 0x0011,
- MyHTML_STATUS_THREAD_ERROR_WORKER_SEM_CREATE = 0x0012,
- MyHTML_STATUS_THREAD_ERROR_WORKER_THREAD_CREATE = 0x0013,
- MyHTML_STATUS_THREAD_ERROR_MASTER_THREAD_CREATE = 0x0014,
- MyHTML_STATUS_THREAD_ERROR_SEM_PREFIX_MALLOC = 0x0032,
- MyHTML_STATUS_THREAD_ERROR_SEM_CREATE = 0x0033,
- MyHTML_STATUS_THREAD_ERROR_QUEUE_MALLOC = 0x003c,
- MyHTML_STATUS_THREAD_ERROR_QUEUE_NODES_MALLOC = 0x003d,
- MyHTML_STATUS_THREAD_ERROR_QUEUE_NODE_MALLOC = 0x003e,
- MyHTML_STATUS_THREAD_ERROR_MUTEX_MALLOC = 0x0046,
- MyHTML_STATUS_THREAD_ERROR_MUTEX_INIT = 0x0047,
- MyHTML_STATUS_THREAD_ERROR_MUTEX_LOCK = 0x0048,
- MyHTML_STATUS_THREAD_ERROR_MUTEX_UNLOCK = 0x0049,
- MyHTML_STATUS_RULES_ERROR_MEMORY_ALLOCATION = 0x0064,
- MyHTML_STATUS_PERF_ERROR_COMPILED_WITHOUT_PERF = 0x00c8,
- MyHTML_STATUS_PERF_ERROR_FIND_CPU_CLOCK = 0x00c9,
- MyHTML_STATUS_TOKENIZER_ERROR_MEMORY_ALLOCATION = 0x012c,
- MyHTML_STATUS_TOKENIZER_ERROR_FRAGMENT_INIT = 0x012d,
- MyHTML_STATUS_TAGS_ERROR_MEMORY_ALLOCATION = 0x0190,
- MyHTML_STATUS_TAGS_ERROR_MCOBJECT_CREATE = 0x0191,
- MyHTML_STATUS_TAGS_ERROR_MCOBJECT_MALLOC = 0x0192,
- MyHTML_STATUS_TAGS_ERROR_MCOBJECT_CREATE_NODE = 0x0193,
- MyHTML_STATUS_TAGS_ERROR_CACHE_MEMORY_ALLOCATION = 0x0194,
- MyHTML_STATUS_TAGS_ERROR_INDEX_MEMORY_ALLOCATION = 0x0195,
- MyHTML_STATUS_TREE_ERROR_MEMORY_ALLOCATION = 0x01f4,
- MyHTML_STATUS_TREE_ERROR_MCOBJECT_CREATE = 0x01f5,
- MyHTML_STATUS_TREE_ERROR_MCOBJECT_INIT = 0x01f6,
- MyHTML_STATUS_TREE_ERROR_MCOBJECT_CREATE_NODE = 0x01f7,
- MyHTML_STATUS_TREE_ERROR_INCOMING_BUFFER_CREATE = 0x01f8,
- MyHTML_STATUS_ATTR_ERROR_ALLOCATION = 0x0258,
- MyHTML_STATUS_ATTR_ERROR_CREATE = 0x0259,
- MyHTML_STATUS_STREAM_BUFFER_ERROR_CREATE = 0x0300,
- MyHTML_STATUS_STREAM_BUFFER_ERROR_INIT = 0x0301,
- MyHTML_STATUS_STREAM_BUFFER_ENTRY_ERROR_CREATE = 0x0302,
- MyHTML_STATUS_STREAM_BUFFER_ENTRY_ERROR_INIT = 0x0303,
- MyHTML_STATUS_STREAM_BUFFER_ERROR_ADD_ENTRY = 0x0304,
- MyHTML_STATUS_MCOBJECT_ERROR_CACHE_CREATE = 0x0340,
- MyHTML_STATUS_MCOBJECT_ERROR_CHUNK_CREATE = 0x0341,
- MyHTML_STATUS_MCOBJECT_ERROR_CHUNK_INIT = 0x0342,
- MyHTML_STATUS_MCOBJECT_ERROR_CACHE_REALLOC = 0x0343
+ MyHTML_STATUS_RULES_ERROR_MEMORY_ALLOCATION = 0x9064,
+ MyHTML_STATUS_TOKENIZER_ERROR_MEMORY_ALLOCATION = 0x912c,
+ MyHTML_STATUS_TOKENIZER_ERROR_FRAGMENT_INIT = 0x912d,
+ MyHTML_STATUS_TAGS_ERROR_MEMORY_ALLOCATION = 0x9190,
+ MyHTML_STATUS_TAGS_ERROR_MCOBJECT_CREATE = 0x9191,
+ MyHTML_STATUS_TAGS_ERROR_MCOBJECT_MALLOC = 0x9192,
+ MyHTML_STATUS_TAGS_ERROR_MCOBJECT_CREATE_NODE = 0x9193,
+ MyHTML_STATUS_TAGS_ERROR_CACHE_MEMORY_ALLOCATION = 0x9194,
+ MyHTML_STATUS_TAGS_ERROR_INDEX_MEMORY_ALLOCATION = 0x9195,
+ MyHTML_STATUS_TREE_ERROR_MEMORY_ALLOCATION = 0x91f4,
+ MyHTML_STATUS_TREE_ERROR_MCOBJECT_CREATE = 0x91f5,
+ MyHTML_STATUS_TREE_ERROR_MCOBJECT_INIT = 0x91f6,
+ MyHTML_STATUS_TREE_ERROR_MCOBJECT_CREATE_NODE = 0x91f7,
+ MyHTML_STATUS_TREE_ERROR_INCOMING_BUFFER_CREATE = 0x91f8,
+ MyHTML_STATUS_ATTR_ERROR_ALLOCATION = 0x9258,
+ MyHTML_STATUS_ATTR_ERROR_CREATE = 0x9259,
+ MyHTML_STATUS_STREAM_BUFFER_ERROR_CREATE = 0x9300,
+ MyHTML_STATUS_STREAM_BUFFER_ERROR_INIT = 0x9301,
+ MyHTML_STATUS_STREAM_BUFFER_ENTRY_ERROR_CREATE = 0x9302,
+ MyHTML_STATUS_STREAM_BUFFER_ENTRY_ERROR_INIT = 0x9303,
+ MyHTML_STATUS_STREAM_BUFFER_ERROR_ADD_ENTRY = 0x9304
}
typedef myhtml_status_t;
@@ -486,7 +293,6 @@ struct myhtml_version {
}
typedef myhtml_version_t;
-typedef struct myhtml_incoming_buffer myhtml_incoming_buffer_t;
typedef myhtml_token_attr_t myhtml_tree_attr_t;
typedef struct myhtml_collection myhtml_collection_t;
typedef struct myhtml myhtml_t;
@@ -498,24 +304,14 @@ typedef size_t (*myhtml_tokenizer_state_f)(myhtml_tree_t* tree, myhtml_token_nod
typedef bool (*myhtml_insertion_f)(myhtml_tree_t* tree, myhtml_token_node_t* token);
// char references state
-typedef size_t (*myhtml_data_process_state_f)(myhtml_data_process_entry_t* charef, myhtml_string_t* str, const char* data, size_t offset, size_t size);
+typedef size_t (*myhtml_data_process_state_f)(myhtml_data_process_entry_t* charef, mycore_string_t* str, const char* data, size_t offset, size_t size);
// callback functions
typedef void* (*myhtml_callback_token_f)(myhtml_tree_t* tree, myhtml_token_node_t* token, void* ctx);
typedef void (*myhtml_callback_tree_node_f)(myhtml_tree_t* tree, myhtml_tree_node_t* node, void* ctx);
// find attribute value functions
-typedef bool (*myhtml_attribute_value_find_f)(myhtml_string_t* str_key, const char* value, size_t value_len);
-
-// callback to be implemented by the user
-typedef void (*myhtml_callback_serialize_f)(const char* buffer, size_t size, void* ctx);
-
-void * myhtml_mem_malloc(size_t size);
-void * myhtml_mem_realloc(void* dst, size_t size);
-void * myhtml_mem_calloc(size_t num, size_t size);
-void myhtml_mem_free(void* dst);
-
-void myhtml_print(FILE* out, const char* format, ...);
+typedef bool (*myhtml_attribute_value_find_f)(mycore_string_t* str_key, const char* value, size_t value_len);
#ifdef __cplusplus
} /* extern "C" */
diff --git a/source/myhtml/mystring.c b/source/myhtml/mystring.c
index a353e60..71888e4 100644
--- a/source/myhtml/mystring.c
+++ b/source/myhtml/mystring.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -19,205 +19,11 @@
*/
#include "myhtml/mystring.h"
-#include "myhtml/utils/resources.h"
+#include "mycore/utils/resources.h"
-/////////////////////////////////////////////////////////
-//// Init, Clean, Destroy
-////
-/////////////////////////////////////////////////////////
-char * myhtml_string_init(mchar_async_t *mchar, size_t node_idx, myhtml_string_t* str, size_t size)
-{
- str->data = mchar_async_malloc(mchar, node_idx, size);
- str->size = size;
- str->node_idx = node_idx;
- str->mchar = mchar;
-
- myhtml_string_clean(str);
-
- return str->data;
-}
-
-void myhtml_string_clean(myhtml_string_t* str)
-{
- str->length = 0;
-}
-
-void myhtml_string_clean_all(myhtml_string_t* str)
-{
- memset(str, 0, sizeof(myhtml_string_t));
-}
-
-myhtml_string_t * myhtml_string_destroy(myhtml_string_t* str, bool destroy_obj)
-{
- if(str == NULL)
- return NULL;
-
- if(str->data && str->mchar)
- mchar_async_free(str->mchar, str->node_idx, str->data);
-
- if(destroy_obj && str) {
- myhtml_free(str);
- return NULL;
- }
-
- return str;
-}
-
-void myhtml_string_raw_clean(myhtml_string_raw_t* str_raw)
-{
- str_raw->length = 0;
-}
-
-void myhtml_string_raw_clean_all(myhtml_string_raw_t* str_raw)
-{
- memset(str_raw, 0, sizeof(myhtml_string_raw_t));
-}
-
-myhtml_string_raw_t * myhtml_string_raw_destroy(myhtml_string_raw_t* str_raw, bool destroy_obj)
-{
- if(str_raw == NULL)
- return NULL;
-
- if(str_raw->data) {
- myhtml_free(str_raw->data);
- str_raw->data = NULL;
- }
-
- if(destroy_obj && str_raw) {
- myhtml_free(str_raw);
- return NULL;
- }
-
- return str_raw;
-}
-
-char * myhtml_string_realloc(myhtml_string_t *str, size_t new_size)
-{
- if(str == NULL)
- return NULL;
-
- char *tmp = mchar_async_realloc(str->mchar, str->node_idx, str->data, str->length, new_size);
-
- if(tmp) {
- str->size = new_size;
- str->data = tmp;
- }
- else
- return NULL;
-
- return tmp;
-}
-
-/////////////////////////////////////////////////////////
-//// Basic API
-////
-/////////////////////////////////////////////////////////
-char * myhtml_string_data_alloc(mchar_async_t *mchar, size_t node_id, size_t size)
-{
- return mchar_async_malloc(mchar, node_id, size);
-}
-
-char * myhtml_string_data_realloc(mchar_async_t *mchar, size_t node_id, char *data, size_t len_to_copy, size_t size)
-{
- return mchar_async_realloc(mchar, node_id, data, len_to_copy, size);
-}
-
-void myhtml_string_data_free(mchar_async_t *mchar, size_t node_id, char *data)
+size_t myhtml_string_append_with_preprocessing(mycore_string_t* str, const char* buff, size_t length, bool emit_null_chars)
{
- mchar_async_free(mchar, node_id, data);
-}
-
-char * myhtml_string_data(myhtml_string_t *str)
-{
- if(str == NULL)
- return NULL;
-
- return str->data;
-}
-
-size_t myhtml_string_length(myhtml_string_t *str)
-{
- if(str == NULL)
- return 0;
-
- return str->length;
-}
-
-size_t myhtml_string_size(myhtml_string_t *str)
-{
- if(str == NULL)
- return 0;
-
- return str->size;
-}
-
-char * myhtml_string_data_set(myhtml_string_t *str, char *data)
-{
- if(str == NULL)
- return NULL;
-
- str->data = data;
- return str->data;
-}
-
-size_t myhtml_string_size_set(myhtml_string_t *str, size_t size)
-{
- if(str == NULL)
- return 0;
-
- str->size = size;
- return str->size;
-}
-
-size_t myhtml_string_length_set(myhtml_string_t *str, size_t length)
-{
- if(str == NULL)
- return 0;
-
- str->length = length;
- return str->length;
-}
-
-/////////////////////////////////////////////////////////
-//// Append API
-////
-/////////////////////////////////////////////////////////
-void myhtml_string_append(myhtml_string_t* str, const char* buff, size_t length)
-{
- MyHTML_STRING_REALLOC_IF_NEED(str, (length + 1), 0);
-
- memcpy(&str->data[str->length], buff, (sizeof(char) * length));
-
- str->length += length;
- str->data[str->length] = '\0';
-}
-
-void myhtml_string_append_one(myhtml_string_t* str, const char data)
-{
- MyHTML_STRING_REALLOC_IF_NEED(str, 2, 1);
- MyHTML_STRING_APPEND_BYTE_WITHOUT_REALLOC(data, str);
- MyHTML_STRING_APPEND_BYTE_WITHOUT_INCREMENT_REALLOC('\0', str);
-}
-
-void myhtml_string_append_lowercase(myhtml_string_t* str, const char* data, size_t length)
-{
- MyHTML_STRING_REALLOC_IF_NEED(str, (length + 1), 0);
-
- unsigned char *ref = (unsigned char*)&str->data[str->length];
- const unsigned char *buf = (const unsigned char*)data;
-
- size_t i;
- for(i = 0; i < length; i++) {
- ref[i] = myhtml_string_chars_lowercase_map[ buf[i] ];
- }
-
- ref[i] = '\0';
- str->length += length;
-}
-
-size_t myhtml_string_append_with_preprocessing(myhtml_string_t* str, const char* buff, size_t length, bool emit_null_chars)
-{
- MyHTML_STRING_REALLOC_IF_NEED(str, (length + 1), 0);
+ MyCORE_STRING_REALLOC_IF_NEED(str, (length + 1), 0);
unsigned char *data = (unsigned char*)str->data;
const unsigned char *u_buff = (const unsigned char*)buff;
@@ -236,12 +42,16 @@ size_t myhtml_string_append_with_preprocessing(myhtml_string_t* str, const char*
}
else {
str->length++;
+
+ MyCORE_STRING_REALLOC_IF_NEED(str, 0, 2);
+ str->data[str->length] = '\0';
+
return str->length;
}
}
else if(u_buff[i] == 0x00 && emit_null_chars == false)
{
- myhtml_string_realloc(str, (str->size + 5));
+ mycore_string_realloc(str, (str->size + 5));
data = (unsigned char*)str->data;
// Unicode Character 'REPLACEMENT CHARACTER' (U+FFFD)
@@ -260,9 +70,9 @@ size_t myhtml_string_append_with_preprocessing(myhtml_string_t* str, const char*
return 0;
}
-size_t myhtml_string_append_lowercase_with_preprocessing(myhtml_string_t* str, const char* buff, size_t length, bool emit_null_chars)
+size_t myhtml_string_append_lowercase_with_preprocessing(mycore_string_t* str, const char* buff, size_t length, bool emit_null_chars)
{
- MyHTML_STRING_REALLOC_IF_NEED(str, (length + 1), 0);
+ MyCORE_STRING_REALLOC_IF_NEED(str, (length + 1), 0);
unsigned char *data = (unsigned char*)str->data;
const unsigned char *u_buff = (const unsigned char*)buff;
@@ -278,12 +88,16 @@ size_t myhtml_string_append_lowercase_with_preprocessing(myhtml_string_t* str, c
}
else {
str->length++;
+
+ MyCORE_STRING_REALLOC_IF_NEED(str, 0, 2);
+ str->data[str->length] = '\0';
+
return str->length;
}
}
else if(u_buff[i] == 0x00 && emit_null_chars == false)
{
- myhtml_string_realloc(str, (str->size + 5));
+ mycore_string_realloc(str, (str->size + 5));
data = (unsigned char*)str->data;
// Unicode Character 'REPLACEMENT CHARACTER' (U+FFFD)
@@ -292,7 +106,7 @@ size_t myhtml_string_append_lowercase_with_preprocessing(myhtml_string_t* str, c
data[str->length] = 0xBD;
}
else {
- data[str->length] = myhtml_string_chars_lowercase_map[ u_buff[i] ];
+ data[str->length] = mycore_string_chars_lowercase_map[ u_buff[i] ];
}
str->length++;
@@ -303,7 +117,7 @@ size_t myhtml_string_append_lowercase_with_preprocessing(myhtml_string_t* str, c
return 0;
}
-size_t myhtml_string_before_append_any_preprocessing(myhtml_string_t* str, const char* buff, size_t length, size_t last_position)
+size_t myhtml_string_before_append_any_preprocessing(mycore_string_t* str, const char* buff, size_t length, size_t last_position)
{
if(last_position == 0 || length == 0)
return 0;
@@ -318,27 +132,27 @@ size_t myhtml_string_before_append_any_preprocessing(myhtml_string_t* str, const
//// Append With Convert Encoding and Preprocessing API
////
/////////////////////////////////////////////////////////
-size_t myhtml_string_append_with_convert_encoding_with_preprocessing(myhtml_string_t* str, const char* buff, size_t length, myhtml_encoding_t encoding, bool emit_null_chars)
+size_t myhtml_string_append_with_convert_encoding_with_preprocessing(mycore_string_t* str, const char* buff, size_t length, myencoding_t encoding, bool emit_null_chars)
{
- myhtml_encoding_result_t res;
- myhtml_encoding_result_clean(&res);
+ myencoding_result_t res;
+ myencoding_result_clean(&res);
return myhtml_string_append_chunk_with_convert_encoding_with_preprocessing(str, &res, buff, length, encoding, emit_null_chars);
}
-size_t myhtml_string_append_chunk_with_convert_encoding_with_preprocessing(myhtml_string_t* str, myhtml_encoding_result_t* res, const char* buff, size_t length, myhtml_encoding_t encoding, bool emit_null_chars)
+size_t myhtml_string_append_chunk_with_convert_encoding_with_preprocessing(mycore_string_t* str, myencoding_result_t* res, const char* buff, size_t length, myencoding_t encoding, bool emit_null_chars)
{
- MyHTML_STRING_REALLOC_IF_NEED(str, (length + 1), 0);
+ MyCORE_STRING_REALLOC_IF_NEED(str, (length + 1), 0);
unsigned const char* u_buff = (unsigned const char*)buff;
- const myhtml_encoding_custom_f func = myhtml_encoding_get_function_by_id(encoding);
+ const myencoding_custom_f func = myencoding_get_function_by_id(encoding);
for (size_t i = 0; i < length; i++)
{
- if(func(u_buff[i], res) == MyHTML_ENCODING_STATUS_OK) {
- MyHTML_STRING_REALLOC_IF_NEED(str, 5, 1);
+ if(func(u_buff[i], res) == MyENCODING_STATUS_OK) {
+ MyCORE_STRING_REALLOC_IF_NEED(str, 5, 1);
- size_t len = myhtml_encoding_codepoint_to_ascii_utf_8(res->result, &str->data[str->length]);
+ size_t len = myencoding_codepoint_to_ascii_utf_8(res->result, &str->data[str->length]);
if(len == 1) {
if(str->data[str->length] == '\r') {
@@ -350,12 +164,16 @@ size_t myhtml_string_append_chunk_with_convert_encoding_with_preprocessing(myhtm
}
else {
str->length++;
+
+ MyCORE_STRING_REALLOC_IF_NEED(str, 0, 2);
+ str->data[str->length] = '\0';
+
return str->length;
}
}
else if(str->data[str->length] == 0x00 && emit_null_chars == false)
{
- myhtml_string_realloc(str, (str->size + 5));
+ mycore_string_realloc(str, (str->size + 5));
// Unicode Character 'REPLACEMENT CHARACTER' (U+FFFD)
str->data[str->length] = (char)0xEF; str->length++;
@@ -368,32 +186,32 @@ size_t myhtml_string_append_chunk_with_convert_encoding_with_preprocessing(myhtm
}
}
- MyHTML_STRING_APPEND_BYTE_WITHOUT_INCREMENT('\0', str, 1);
+ MyCORE_STRING_APPEND_BYTE_WITHOUT_INCREMENT('\0', str, 1);
return 0;
}
-size_t myhtml_string_append_lowercase_with_convert_encoding_with_preprocessing(myhtml_string_t* str, const char* buff, size_t length, myhtml_encoding_t encoding, bool emit_null_chars)
+size_t myhtml_string_append_lowercase_with_convert_encoding_with_preprocessing(mycore_string_t* str, const char* buff, size_t length, myencoding_t encoding, bool emit_null_chars)
{
- myhtml_encoding_result_t res;
- myhtml_encoding_result_clean(&res);
+ myencoding_result_t res;
+ myencoding_result_clean(&res);
return myhtml_string_append_lowercase_chunk_with_convert_encoding_with_preprocessing(str, &res, buff, length, encoding, emit_null_chars);
}
-size_t myhtml_string_append_lowercase_chunk_with_convert_encoding_with_preprocessing(myhtml_string_t* str, myhtml_encoding_result_t* res, const char* buff, size_t length, myhtml_encoding_t encoding, bool emit_null_chars)
+size_t myhtml_string_append_lowercase_chunk_with_convert_encoding_with_preprocessing(mycore_string_t* str, myencoding_result_t* res, const char* buff, size_t length, myencoding_t encoding, bool emit_null_chars)
{
- MyHTML_STRING_REALLOC_IF_NEED(str, (length + 1), 0);
+ MyCORE_STRING_REALLOC_IF_NEED(str, (length + 1), 0);
unsigned const char* u_buff = (unsigned const char*)buff;
- const myhtml_encoding_custom_f func = myhtml_encoding_get_function_by_id(encoding);
+ const myencoding_custom_f func = myencoding_get_function_by_id(encoding);
for (size_t i = 0; i < length; i++)
{
- if(func(u_buff[i], res) == MyHTML_ENCODING_STATUS_OK) {
- MyHTML_STRING_REALLOC_IF_NEED(str, 5, 1);
+ if(func(u_buff[i], res) == MyENCODING_STATUS_OK) {
+ MyCORE_STRING_REALLOC_IF_NEED(str, 5, 1);
- size_t len = myhtml_encoding_codepoint_to_lowercase_ascii_utf_8(res->result, &str->data[str->length]);
+ size_t len = myencoding_codepoint_to_lowercase_ascii_utf_8(res->result, &str->data[str->length]);
if(len == 1) {
if(str->data[str->length] == '\r') {
@@ -405,12 +223,16 @@ size_t myhtml_string_append_lowercase_chunk_with_convert_encoding_with_preproces
}
else {
str->length++;
+
+ MyCORE_STRING_REALLOC_IF_NEED(str, 0, 2);
+ str->data[str->length] = '\0';
+
return str->length;
}
}
else if(str->data[str->length] == 0x00 && emit_null_chars == false)
{
- myhtml_string_realloc(str, (str->size + 5));
+ mycore_string_realloc(str, (str->size + 5));
// Unicode Character 'REPLACEMENT CHARACTER' (U+FFFD)
str->data[str->length] = (char)0xEF; str->length++;
@@ -423,182 +245,7 @@ size_t myhtml_string_append_lowercase_chunk_with_convert_encoding_with_preproces
}
}
- MyHTML_STRING_APPEND_BYTE_WITHOUT_INCREMENT('\0', str, 1);
+ MyCORE_STRING_APPEND_BYTE_WITHOUT_INCREMENT('\0', str, 1);
return 0;
}
-
-/////////////////////////////////////////////////////////
-//// Append With Convert Encoding without Preprocessing API
-////
-/////////////////////////////////////////////////////////
-void myhtml_string_append_with_convert_encoding(myhtml_string_t* str, const char* buff, size_t length, myhtml_encoding_t encoding)
-{
- myhtml_encoding_result_t res;
- myhtml_encoding_result_clean(&res);
-
- myhtml_string_append_chunk_with_convert_encoding(str, &res, buff, length, encoding);
-}
-
-void myhtml_string_append_chunk_with_convert_encoding(myhtml_string_t* str, myhtml_encoding_result_t* res, const char* buff, size_t length, myhtml_encoding_t encoding)
-{
- unsigned const char* u_buff = (unsigned const char*)buff;
- const myhtml_encoding_custom_f func = myhtml_encoding_get_function_by_id(encoding);
-
- for (size_t i = 0; i < length; i++)
- {
- if(func(u_buff[i], res) == MyHTML_ENCODING_STATUS_OK) {
- MyHTML_STRING_REALLOC_IF_NEED(str, 5, 0);
- str->length += myhtml_encoding_codepoint_to_ascii_utf_8(res->result, &str->data[str->length]);
- }
- }
-
- MyHTML_STRING_APPEND_BYTE_WITHOUT_INCREMENT('\0', str, 1);
-}
-
-void myhtml_string_append_one_with_convert_encoding(myhtml_string_t* str, myhtml_encoding_result_t* res, const char data, myhtml_encoding_t encoding)
-{
- const myhtml_encoding_custom_f func = myhtml_encoding_get_function_by_id(encoding);
-
- if(func((unsigned const char)data, res) == MyHTML_ENCODING_STATUS_OK) {
- MyHTML_STRING_REALLOC_IF_NEED(str, 5, 0);
- str->length += myhtml_encoding_codepoint_to_ascii_utf_8(res->result, &str->data[str->length]);
-
- MyHTML_STRING_APPEND_BYTE_WITHOUT_INCREMENT_REALLOC('\0', str);
- }
-}
-
-
-void myhtml_string_append_lowercase_ascii_with_convert_encoding(myhtml_string_t* str, const char* buff, size_t length, myhtml_encoding_t encoding)
-{
- myhtml_encoding_result_t res;
- myhtml_encoding_result_clean(&res);
-
- myhtml_string_append_chunk_lowercase_ascii_with_convert_encoding(str, &res, buff, length, encoding);
-}
-
-void myhtml_string_append_chunk_lowercase_ascii_with_convert_encoding(myhtml_string_t* str, myhtml_encoding_result_t* res, const char* buff, size_t length, myhtml_encoding_t encoding)
-{
- unsigned const char* u_buff = (unsigned const char*)buff;
- const myhtml_encoding_custom_f func = myhtml_encoding_get_function_by_id(encoding);
-
- for (size_t i = 0; i < length; i++)
- {
- if(func(u_buff[i], res) == MyHTML_ENCODING_STATUS_OK) {
- MyHTML_STRING_REALLOC_IF_NEED(str, 5, 1);
-
- size_t insert_len = myhtml_encoding_codepoint_to_ascii_utf_8(res->result, &str->data[str->length]);
-
- if(insert_len == 1) {
- str->data[str->length] = (const char)myhtml_string_chars_lowercase_map[ u_buff[i] ];
- }
-
- str->length += insert_len;
- }
- }
-
- MyHTML_STRING_APPEND_BYTE_WITHOUT_INCREMENT('\0', str, 1);
-}
-
-void myhtml_string_copy(myhtml_string_t* dest, myhtml_string_t* target)
-{
- myhtml_string_append(dest, target->data, target->length);
-}
-
-size_t myhtml_string_raw_copy(char* str1, const char* str2, size_t size)
-{
- str1[size] = '\0';
-
- while(size) {
- size--;
- str1[size] = str2[size];
- }
-
- return size;
-}
-
-size_t myhtml_string_raw_set_replacement_character(myhtml_string_t* target, size_t position)
-{
- // Unicode Character 'REPLACEMENT CHARACTER' (U+FFFD)
- target->data[(position)] = (char)0xEF;
- target->data[(position + 1)] = (char)0xBF;
- target->data[(position + 2)] = (char)0xBD;
-
- return 3;
-}
-
-void myhtml_string_append_with_replacement_null_characters_only(myhtml_string_t* str, const char* buff, size_t length)
-{
- MyHTML_STRING_REALLOC_IF_NEED(str, (length + 1), 0);
-
- unsigned char *data = (unsigned char*)str->data;
- const unsigned char *u_buff = (const unsigned char*)buff;
-
- for (size_t i = 0; i < length; i++)
- {
- if(u_buff[i] == 0x00) {
- myhtml_string_realloc(str, (str->size + 5));
- data = (unsigned char*)str->data;
-
- // Unicode Character 'REPLACEMENT CHARACTER' (U+FFFD)
- data[str->length] = 0xEF; str->length++;
- data[str->length] = 0xBF; str->length++;
- data[str->length] = 0xBD;
- }
- else
- data[str->length] = u_buff[i];
-
- str->length++;
- }
-
- str->data[str->length] = '\0';
-}
-
-void myhtml_string_stay_only_whitespace(myhtml_string_t* target)
-{
- char *data = target->data;
- size_t pos = 0;
-
- for(size_t i = 0; i < target->length; i++)
- {
- if(myhtml_mystring_whitespace(data[i], ==, ||)) {
- data[pos] = data[i];
- pos++;
- }
- }
-
- target->length = pos;
-}
-
-size_t myhtml_string_crop_whitespace_from_begin(myhtml_string_t* target)
-{
- char *data = target->data;
- size_t i;
-
- for(i = 0; i < target->length; i++) {
- if(myhtml_mystring_whitespace(data[i], !=, &&))
- break;
- }
-
- if(i)
- target->data = mchar_async_crop_first_chars_without_cache(target->data, i);
-
- target->length -= i;
-
- return i;
-}
-
-size_t myhtml_string_whitespace_from_begin(myhtml_string_t* target)
-{
- char *data = target->data;
- size_t i;
-
- for(i = 0; i < target->length; i++) {
- if(myhtml_mystring_whitespace(data[i], !=, &&))
- break;
- }
-
- return i;
-}
-
-
diff --git a/source/myhtml/mystring.h b/source/myhtml/mystring.h
index 0a0c02c..2906d59 100644
--- a/source/myhtml/mystring.h
+++ b/source/myhtml/mystring.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -25,129 +25,31 @@
#ifdef __cplusplus
extern "C" {
#endif
-
+
#include "myhtml/myosi.h"
-#include "myhtml/encoding.h"
-#include "myhtml/utils/mchar_async.h"
+
+#include "myencoding/encoding.h"
+#include "myencoding/mystring.h"
+
+#include "mycore/mystring.h"
+#include "mycore/utils/mchar_async.h"
#define myhtml_string_get(str, attr) str->attr
#define myhtml_string_set(str, attr) myhtml_string_get(str, attr)
#define myhtml_string_len(str) myhtml_string_get(str, length)
-#define MyHTML_STRING_PREPROCESSOR_CHECK_BUFFER_SIZE(str, unsigned_data) \
- if(str->length >= str->size) { \
- myhtml_string_realloc(str, (str->length + 5)); \
- \
- unsigned_data = (unsigned char*)str->data; \
- }
-
-#define MyHTML_STRING_REALLOC_IF_NEED(str, need_length, upto) \
- if((str->length + need_length) >= str->size) { \
- myhtml_string_realloc(str, (str->length + need_length + upto)); \
- } \
-
-#define MyHTML_STRING_APPEND_BYTE_WITHOUT_REALLOC(onechar, str) \
- str->data[str->length] = onechar; \
- str->length++
-
-#define MyHTML_STRING_APPEND_BYTE_WITHOUT_INCREMENT(onechar, str, upto) \
- if(str->length >= str->size) { \
- myhtml_string_realloc(str, (str->length + upto)); \
- } \
- str->data[str->length] = onechar
-
-#define MyHTML_STRING_APPEND_BYTE_WITHOUT_INCREMENT_REALLOC(onechar, str) \
- str->data[str->length] = onechar
-
-#define MyHTML_STRING_APPEND_BYTE(onechar, str, upto) \
- MyHTML_STRING_APPEND_BYTE_WITHOUT_INCREMENT(onechar, str, upto); \
- str->length++
-
-#define myhtml_mystring_whitespace(onechar, action, logic) \
- (onechar action ' ' logic \
- onechar action '\t' logic \
- onechar action '\n' logic \
- onechar action '\f' logic \
- onechar action '\r')
-
-struct myhtml_string {
- char* data;
- size_t size;
- size_t length;
-
- mchar_async_t *mchar;
- size_t node_idx;
-};
-
-struct myhtml_string_raw {
- char* data;
- size_t size;
- size_t length;
-};
-
-typedef size_t myhtml_string_index_t;
-
-char * myhtml_string_init(mchar_async_t *mchar, size_t node_idx, myhtml_string_t* str, size_t size);
-char * myhtml_string_realloc(myhtml_string_t *str, size_t new_size);
-
-void myhtml_string_clean(myhtml_string_t* str);
-void myhtml_string_clean_all(myhtml_string_t* str);
-myhtml_string_t * myhtml_string_destroy(myhtml_string_t* str, bool destroy_obj);
-
-void myhtml_string_raw_clean(myhtml_string_raw_t* str_raw);
-void myhtml_string_raw_clean_all(myhtml_string_raw_t* str_raw);
-myhtml_string_raw_t * myhtml_string_raw_destroy(myhtml_string_raw_t* str_raw, bool destroy_obj);
-
-/* basic api */
-char * myhtml_string_data_alloc(mchar_async_t *mchar, size_t node_id, size_t size);
-char * myhtml_string_data_realloc(mchar_async_t *mchar, size_t node_id, char *data, size_t len_to_copy, size_t size);
-void myhtml_string_data_free(mchar_async_t *mchar, size_t node_id, char *data);
-
-char * myhtml_string_data(myhtml_string_t *str);
-size_t myhtml_string_length(myhtml_string_t *str);
-size_t myhtml_string_size(myhtml_string_t *str);
-char * myhtml_string_data_set(myhtml_string_t *str, char *data);
-size_t myhtml_string_size_set(myhtml_string_t *str, size_t size);
-size_t myhtml_string_length_set(myhtml_string_t *str, size_t length);
-
-/* append */
-void myhtml_string_append(myhtml_string_t* str, const char* data, size_t length);
-void myhtml_string_append_one(myhtml_string_t* str, const char data);
-void myhtml_string_append_lowercase(myhtml_string_t* str, const char* data, size_t length);
-void myhtml_string_append_with_convert_encoding(myhtml_string_t* str, const char* buff, size_t length, myhtml_encoding_t encoding);
-
-/* append with convert encoding */
-void myhtml_string_append_chunk_with_convert_encoding(myhtml_string_t* str, myhtml_encoding_result_t* res, const char* buff, size_t length, myhtml_encoding_t encoding);
-void myhtml_string_append_one_with_convert_encoding(myhtml_string_t* str, myhtml_encoding_result_t* res, const char data, myhtml_encoding_t encoding);
-
-/* append with convert encoding lowercase */
-void myhtml_string_append_lowercase_ascii_with_convert_encoding(myhtml_string_t* str, const char* buff, size_t length, myhtml_encoding_t encoding);
-void myhtml_string_append_chunk_lowercase_ascii_with_convert_encoding(myhtml_string_t* str, myhtml_encoding_result_t* res, const char* buff, size_t length, myhtml_encoding_t encoding);
-
-/* Oh, long long long name */
-
/* append with convert encoding with preprocessing */
-size_t myhtml_string_append_with_convert_encoding_with_preprocessing(myhtml_string_t* str, const char* buff, size_t length, myhtml_encoding_t encoding, bool emit_null_chars);
-size_t myhtml_string_append_chunk_with_convert_encoding_with_preprocessing(myhtml_string_t* str, myhtml_encoding_result_t* res, const char* buff, size_t length, myhtml_encoding_t encoding, bool emit_null_chars);
+size_t myhtml_string_append_with_convert_encoding_with_preprocessing(mycore_string_t* str, const char* buff, size_t length, myencoding_t encoding, bool emit_null_chars);
+size_t myhtml_string_append_chunk_with_convert_encoding_with_preprocessing(mycore_string_t* str, myencoding_result_t* res, const char* buff, size_t length, myencoding_t encoding, bool emit_null_chars);
/* append with convert encoding lowercase with preprocessing */
-size_t myhtml_string_append_lowercase_with_convert_encoding_with_preprocessing(myhtml_string_t* str, const char* buff, size_t length, myhtml_encoding_t encoding, bool emit_null_chars);
-size_t myhtml_string_append_lowercase_chunk_with_convert_encoding_with_preprocessing(myhtml_string_t* str, myhtml_encoding_result_t* res, const char* buff, size_t length, myhtml_encoding_t encoding, bool emit_null_chars);
-
-void myhtml_string_append_with_replacement_null_characters_only(myhtml_string_t* str, const char* buff, size_t length);
+size_t myhtml_string_append_lowercase_with_convert_encoding_with_preprocessing(mycore_string_t* str, const char* buff, size_t length, myencoding_t encoding, bool emit_null_chars);
+size_t myhtml_string_append_lowercase_chunk_with_convert_encoding_with_preprocessing(mycore_string_t* str, myencoding_result_t* res, const char* buff, size_t length, myencoding_t encoding, bool emit_null_chars);
/* append with preprocessing */
-size_t myhtml_string_before_append_any_preprocessing(myhtml_string_t* str, const char* buff, size_t length, size_t last_position);
-size_t myhtml_string_append_with_preprocessing(myhtml_string_t* str, const char* buff, size_t length, bool emit_null_chars);
-size_t myhtml_string_append_lowercase_with_preprocessing(myhtml_string_t* str, const char* buff, size_t length, bool emit_null_chars);
-size_t myhtml_string_raw_set_replacement_character(myhtml_string_t* target, size_t position);
-
-/* other functions */
-void myhtml_string_copy(myhtml_string_t* dest, myhtml_string_t* target);
-size_t myhtml_string_raw_copy(char* str1, const char* str2, size_t size);
-void myhtml_string_stay_only_whitespace(myhtml_string_t* target);
-size_t myhtml_string_crop_whitespace_from_begin(myhtml_string_t* target);
-size_t myhtml_string_whitespace_from_begin(myhtml_string_t* target);
+size_t myhtml_string_before_append_any_preprocessing(mycore_string_t* str, const char* buff, size_t length, size_t last_position);
+size_t myhtml_string_append_with_preprocessing(mycore_string_t* str, const char* buff, size_t length, bool emit_null_chars);
+size_t myhtml_string_append_lowercase_with_preprocessing(mycore_string_t* str, const char* buff, size_t length, bool emit_null_chars);
#ifdef __cplusplus
} /* extern "C" */
diff --git a/source/myhtml/parser.c b/source/myhtml/parser.c
index 95cdc1b..95a7764 100644
--- a/source/myhtml/parser.c
+++ b/source/myhtml/parser.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -24,19 +24,19 @@ void myhtml_parser_stream(mythread_id_t thread_id, void* ctx)
{
mythread_queue_node_t *qnode = (mythread_queue_node_t*)ctx;
- if((qnode->tree->parse_flags & MyHTML_TREE_PARSE_FLAGS_WITHOUT_BUILD_TREE) == 0) {
- while(myhtml_rules_tree_dispatcher(qnode->tree, qnode->token)){}
+ if((((myhtml_tree_t*)(qnode->context))->parse_flags & MyHTML_TREE_PARSE_FLAGS_WITHOUT_BUILD_TREE) == 0) {
+ while(myhtml_rules_tree_dispatcher(qnode->context, qnode->args)){}
}
}
-size_t myhtml_parser_token_data_to_string_lowercase(myhtml_tree_t *tree, myhtml_string_t* str, myhtml_data_process_entry_t* proc_entry, size_t begin, size_t length)
+size_t myhtml_parser_token_data_to_string_lowercase(myhtml_tree_t *tree, mycore_string_t* str, myhtml_data_process_entry_t* proc_entry, size_t begin, size_t length)
{
- myhtml_incoming_buffer_t *buffer = myhtml_incoming_buffer_find_by_position(tree->incoming_buf_first, begin);
+ mycore_incoming_buffer_t *buffer = mycore_incoming_buffer_find_by_position(tree->incoming_buf_first, begin);
size_t relative_begin = begin - buffer->offset;
// if token data length in one buffer then print them all at once
if((relative_begin + length) <= buffer->size) {
- if(tree->encoding == MyHTML_ENCODING_UTF_8)
+ if(tree->encoding == MyENCODING_UTF_8)
myhtml_string_append_lowercase_with_preprocessing(str, &buffer->data[relative_begin], length, proc_entry->emit_null_char);
else
myhtml_string_append_lowercase_chunk_with_convert_encoding_with_preprocessing(str, &proc_entry->res,
@@ -57,7 +57,7 @@ size_t myhtml_parser_token_data_to_string_lowercase(myhtml_tree_t *tree, myhtml_
size_t tmp_offset = myhtml_string_before_append_any_preprocessing(str, &buffer->data[relative_begin], relative_end, save_position);
if(relative_end > 0) {
- if(tree->encoding == MyHTML_ENCODING_UTF_8)
+ if(tree->encoding == MyENCODING_UTF_8)
save_position = myhtml_string_append_lowercase_with_preprocessing(str, &buffer->data[(relative_begin + tmp_offset)], (relative_end - tmp_offset), proc_entry->emit_null_char);
else
save_position = myhtml_string_append_lowercase_chunk_with_convert_encoding_with_preprocessing(str, &proc_entry->res,
@@ -72,7 +72,7 @@ size_t myhtml_parser_token_data_to_string_lowercase(myhtml_tree_t *tree, myhtml_
size_t tmp_offset = myhtml_string_before_append_any_preprocessing(str, &buffer->data[relative_begin], length, save_position);
if(length > 0) {
- if(tree->encoding == MyHTML_ENCODING_UTF_8)
+ if(tree->encoding == MyENCODING_UTF_8)
myhtml_string_append_lowercase_with_preprocessing(str, &buffer->data[(relative_begin + tmp_offset)], (length - tmp_offset), proc_entry->emit_null_char);
else
myhtml_string_append_lowercase_chunk_with_convert_encoding_with_preprocessing(str, &proc_entry->res,
@@ -87,14 +87,14 @@ size_t myhtml_parser_token_data_to_string_lowercase(myhtml_tree_t *tree, myhtml_
return str->length;
}
-size_t myhtml_parser_token_data_to_string(myhtml_tree_t *tree, myhtml_string_t* str, myhtml_data_process_entry_t* proc_entry, size_t begin, size_t length)
+size_t myhtml_parser_token_data_to_string(myhtml_tree_t *tree, mycore_string_t* str, myhtml_data_process_entry_t* proc_entry, size_t begin, size_t length)
{
- myhtml_incoming_buffer_t *buffer = myhtml_incoming_buffer_find_by_position(tree->incoming_buf_first, begin);
+ mycore_incoming_buffer_t *buffer = mycore_incoming_buffer_find_by_position(tree->incoming_buf_first, begin);
size_t relative_begin = begin - buffer->offset;
// if token data length in one buffer then print them all at once
if((relative_begin + length) <= buffer->size) {
- if(tree->encoding == MyHTML_ENCODING_UTF_8)
+ if(tree->encoding == MyENCODING_UTF_8)
myhtml_string_append_with_preprocessing(str, &buffer->data[relative_begin], length, proc_entry->emit_null_char);
else
myhtml_string_append_chunk_with_convert_encoding_with_preprocessing(str, &proc_entry->res,
@@ -115,7 +115,7 @@ size_t myhtml_parser_token_data_to_string(myhtml_tree_t *tree, myhtml_string_t*
size_t tmp_offset = myhtml_string_before_append_any_preprocessing(str, &buffer->data[relative_begin], relative_end, save_position);
if(relative_end > 0) {
- if(tree->encoding == MyHTML_ENCODING_UTF_8)
+ if(tree->encoding == MyENCODING_UTF_8)
save_position = myhtml_string_append_with_preprocessing(str, &buffer->data[(relative_begin + tmp_offset)], (relative_end - tmp_offset), proc_entry->emit_null_char);
else
save_position = myhtml_string_append_chunk_with_convert_encoding_with_preprocessing(str, &proc_entry->res,
@@ -131,12 +131,12 @@ size_t myhtml_parser_token_data_to_string(myhtml_tree_t *tree, myhtml_string_t*
size_t tmp_offset = myhtml_string_before_append_any_preprocessing(str, &buffer->data[relative_begin], length, save_position);
if(length > 0) {
- if(tree->encoding == MyHTML_ENCODING_UTF_8)
+ if(tree->encoding == MyENCODING_UTF_8)
myhtml_string_append_with_preprocessing(str, &buffer->data[(relative_begin + tmp_offset)], (length - tmp_offset), proc_entry->emit_null_char);
else
myhtml_string_append_chunk_with_convert_encoding_with_preprocessing(str, &proc_entry->res,
- &buffer->data[(relative_begin + tmp_offset)], (length - tmp_offset),
- proc_entry->encoding, proc_entry->emit_null_char);
+ &buffer->data[(relative_begin + tmp_offset)], (length - tmp_offset),
+ proc_entry->encoding, proc_entry->emit_null_char);
}
break;
@@ -146,9 +146,9 @@ size_t myhtml_parser_token_data_to_string(myhtml_tree_t *tree, myhtml_string_t*
return str->length;
}
-size_t myhtml_parser_token_data_to_string_charef(myhtml_tree_t *tree, myhtml_string_t* str, myhtml_data_process_entry_t* proc_entry, size_t begin, size_t length)
+size_t myhtml_parser_token_data_to_string_charef(myhtml_tree_t *tree, mycore_string_t* str, myhtml_data_process_entry_t* proc_entry, size_t begin, size_t length)
{
- myhtml_incoming_buffer_t *buffer = myhtml_incoming_buffer_find_by_position(tree->incoming_buf_first, begin);
+ mycore_incoming_buffer_t *buffer = mycore_incoming_buffer_find_by_position(tree->incoming_buf_first, begin);
size_t relative_begin = begin - buffer->offset;
// if token data length in one buffer then print them all at once
@@ -186,8 +186,8 @@ void myhtml_parser_worker(mythread_id_t thread_id, void* ctx)
{
mythread_queue_node_t *qnode = (mythread_queue_node_t*)ctx;
- myhtml_tree_t* tree = qnode->tree;
- myhtml_token_node_t* token = qnode->token;
+ myhtml_tree_t* tree = qnode->context;
+ myhtml_token_node_t* token = qnode->args;
/*
* Tree can not be built without tokens
@@ -201,8 +201,8 @@ void myhtml_parser_worker(mythread_id_t thread_id, void* ctx)
* return true
* we need check both, 1 and 2
*/
- if((qnode->tree->parse_flags & MyHTML_TREE_PARSE_FLAGS_WITHOUT_PROCESS_TOKEN) &&
- (qnode->tree->parse_flags & 2))
+ if((tree->parse_flags & MyHTML_TREE_PARSE_FLAGS_WITHOUT_PROCESS_TOKEN) &&
+ (tree->parse_flags & 2))
{
if(tree->callback_before_token)
tree->callback_before_token_ctx = tree->callback_before_token(tree, token, tree->callback_before_token_ctx);
@@ -215,15 +215,21 @@ void myhtml_parser_worker(mythread_id_t thread_id, void* ctx)
return;
}
+ size_t mchar_node_id;
+#ifndef MyCORE_BUILD_WITHOUT_THREADS
+ if(tree->myhtml->thread_batch)
+ mchar_node_id = tree->async_args[(thread_id + tree->myhtml->thread_batch->id_increase)].mchar_node_id;
+ else
+#endif
+ mchar_node_id = tree->async_args[thread_id].mchar_node_id;
+
if(tree->callback_before_token)
tree->callback_before_token_ctx = tree->callback_before_token(tree, token, tree->callback_before_token_ctx);
- size_t mchar_node_id = qnode->tree->async_args[thread_id].mchar_node_id;
-
if(token->tag_id == MyHTML_TAG__TEXT ||
token->tag_id == MyHTML_TAG__COMMENT)
{
- myhtml_string_init(tree->mchar, mchar_node_id, &token->str, (token->raw_length + 1));
+ mycore_string_init(tree->mchar, mchar_node_id, &token->str, (token->raw_length + 1));
token->attr_first = NULL;
token->attr_last = NULL;
@@ -246,7 +252,7 @@ void myhtml_parser_worker(mythread_id_t thread_id, void* ctx)
}
else if(token->attr_first)
{
- myhtml_string_clean_all(&token->str);
+ mycore_string_clean_all(&token->str);
myhtml_token_attr_t* attr = token->attr_first;
myhtml_data_process_entry_t proc_entry;
@@ -257,22 +263,22 @@ void myhtml_parser_worker(mythread_id_t thread_id, void* ctx)
myhtml_data_process_entry_clean(&proc_entry);
proc_entry.encoding = tree->encoding;
- myhtml_string_init(tree->mchar, mchar_node_id, &attr->key, (attr->raw_key_length + 1));
+ mycore_string_init(tree->mchar, mchar_node_id, &attr->key, (attr->raw_key_length + 1));
myhtml_parser_token_data_to_string_lowercase(tree, &attr->key, &proc_entry, attr->raw_key_begin, attr->raw_key_length);
}
else
- myhtml_string_clean_all(&attr->key);
+ mycore_string_clean_all(&attr->key);
if(attr->raw_value_length) {
myhtml_data_process_entry_clean(&proc_entry);
proc_entry.encoding = tree->encoding;
proc_entry.is_attributes = true;
- myhtml_string_init(tree->mchar, mchar_node_id, &attr->value, (attr->raw_value_length + 1));
+ mycore_string_init(tree->mchar, mchar_node_id, &attr->value, (attr->raw_value_length + 1));
myhtml_parser_token_data_to_string_charef(tree, &attr->value, &proc_entry, attr->raw_value_begin, attr->raw_value_length);
}
else
- myhtml_string_clean_all(&attr->value);
+ mycore_string_clean_all(&attr->value);
attr = attr->next;
}
@@ -281,7 +287,7 @@ void myhtml_parser_worker(mythread_id_t thread_id, void* ctx)
token->attr_first = NULL;
token->attr_last = NULL;
- myhtml_string_clean_all(&token->str);
+ mycore_string_clean_all(&token->str);
}
token->type |= MyHTML_TOKEN_TYPE_DONE;
diff --git a/source/myhtml/parser.h b/source/myhtml/parser.h
index a4d1ab9..d04e043 100644
--- a/source/myhtml/parser.h
+++ b/source/myhtml/parser.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -37,9 +37,9 @@ void myhtml_parser_stream(mythread_id_t thread_id, void* ctx);
void myhtml_parser_worker(mythread_id_t thread_id, void* ctx);
void myhtml_parser_worker_stream(mythread_id_t thread_id, void* ctx);
-size_t myhtml_parser_token_data_to_string(myhtml_tree_t *tree, myhtml_string_t* str, myhtml_data_process_entry_t* proc_entry, size_t begin, size_t length);
-size_t myhtml_parser_token_data_to_string_lowercase(myhtml_tree_t *tree, myhtml_string_t* str, myhtml_data_process_entry_t* proc_entry, size_t begin, size_t length);
-size_t myhtml_parser_token_data_to_string_charef(myhtml_tree_t *tree, myhtml_string_t* str, myhtml_data_process_entry_t* proc_entry, size_t begin, size_t length);
+size_t myhtml_parser_token_data_to_string(myhtml_tree_t *tree, mycore_string_t* str, myhtml_data_process_entry_t* proc_entry, size_t begin, size_t length);
+size_t myhtml_parser_token_data_to_string_lowercase(myhtml_tree_t *tree, mycore_string_t* str, myhtml_data_process_entry_t* proc_entry, size_t begin, size_t length);
+size_t myhtml_parser_token_data_to_string_charef(myhtml_tree_t *tree, mycore_string_t* str, myhtml_data_process_entry_t* proc_entry, size_t begin, size_t length);
#ifdef __cplusplus
} /* extern "C" */
diff --git a/source/myhtml/perf.c b/source/myhtml/perf.c
deleted file mode 100644
index f95faab..0000000
--- a/source/myhtml/perf.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Authors: insoreiges@gmail.com (Evgeny Yakovlev), lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-/**
- * Platform-specific hdef performance clock value.
- */
-
-#include "myhtml/myhtml.h"
-#include <time.h>
-
-#if !defined(IS_OS_WINDOWS)
-#include <unistd.h>
-#endif
-
-#if !defined(MyHTML_WITH_PERF)
-
-uint64_t myhtml_hperf_res(myhtml_status_t *status)
-{
- if(status)
- *status = MyHTML_STATUS_PERF_ERROR_COMPILED_WITHOUT_PERF;
-
- return 0;
-}
-
-uint64_t myhtml_hperf_clock(myhtml_status_t *status)
-{
- if(status)
- *status = MyHTML_STATUS_PERF_ERROR_COMPILED_WITHOUT_PERF;
-
- return 0;
-}
-
-#else
-
-#if defined(__APPLE__)
-#include <sys/types.h>
-#include <sys/sysctl.h>
-#elif defined(IS_OS_WINDOWS)
-#endif
-
-#if defined(MyHTML_FORCE_RDTSC) /* Force using rdtsc, useful for comparison */
-
-/**
- * Get CPU rdtsc frequency.
- *
- * TODO: I think using rdtsc for measuring user-space counters is not correct:
- * - rdtsc does not have a constant rate. instead ot is scaled to physical core's internal clock which changes due to power saving modes on modern CPUs
- * - rdtsc is software-emulated in virtual machines which will introduce an inconsistency in reported ticks
- * - user space process can be preempted between consecutive rdtsc measures but the physical clock will still tick while it is executing a different thread.
- * also think what would happen if preempted process will be re-scheduled on a different physical core which has a different tsc value.
- * - computing rdtsc frequency produces unreliable results (due to all of the above)
- *
- * Consider using platform-specific monotonic hperf timers (ftrace/dtrace) or even clock().
- */
-uint64_t myhtml_hperf_res(myhtml_status_t *status)
-{
- if(status)
- *status = MyHTML_STATUS_OK;
-
-#if defined(__APPLE__) && defined(CTL_HW) && defined(HW_CPU_FREQ)
- unsigned long long freq = 0;
-
- /* OSX kernel: sysctl(CTL_HW | HW_CPU_FREQ) */
- size_t len = sizeof(freq);
- int mib[2] = {CTL_HW, HW_CPU_FREQ};
-
- int error = sysctl(mib, 2, &freq, &len, NULL, 0);
- if (error) {
- if(status)
- *status = MyHTML_STATUS_PERF_ERROR_FIND_CPU_CLOCK;
-
- return 0;
- }
-
- return freq;
-
-#elif defined(__linux__)
- unsigned long long freq = 0;
-
- /* Use procfs on linux */
- FILE* fp = NULL;
- fp = fopen("/proc/cpuinfo", "r");
- if (fp == NULL) {
- if(status)
- *status = MyHTML_STATUS_PERF_ERROR_FIND_CPU_CLOCK;
-
- return 0;
- }
-
- /* Find 'CPU MHz :' */
- char buf[1024] = {0};
- double fval = 0.0;
- while (fgets(buf, sizeof(buf), fp) != NULL) {
- if (sscanf(buf, "cpu MHz : %lf\n", &fval) == 1) {
- freq = (unsigned long long)(fval * 1000000ull);
- break;
- }
- }
-
- fclose(fp);
- return freq;
-
-#else
-# warning Cant figure out cpu frequency on this platfrom
-
- if(status)
- *status = MyHTML_STATUS_PERF_ERROR_FIND_CPU_CLOCK;
-
- return 0;
-#endif /* defined __APPLE__ || __linux__ ... */
-}
-
-uint64_t myhtml_hperf_clock(myhtml_status_t *status)
-{
- uint64_t x;
-
- __asm__ volatile (
- "cpuid\n\t" /* cpuid serializes any out-of-order prefetches before executing rdtsc (clobbers ebx, ecx, edx) */
- "rdtsc\n\t"
- "shl $32, %%rdx\n\t"
- "or %%rdx, %%rax"
- : "=a" (x)
- :
- : "rdx", "ebx", "ecx");
-
- return x;
-}
-
-#elif defined(_POSIX_TIMERS) && defined(_POSIX_CPUTIME) \
- && defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 199309L) /* Do we have clock_gettime? */
-
-#define NSEC_PER_SECOND 1000000000ull
-#define TIMESPEC_TO_USEC(tspec) (((uint64_t)(tspec).tv_sec * NSEC_PER_SECOND) + (tspec).tv_nsec)
-
-uint64_t myhtml_hperf_res(myhtml_status_t *status)
-{
- if(status)
- *status = MyHTML_STATUS_OK;
-
- struct timespec tspec;
- int error = clock_getres(CLOCK_PROCESS_CPUTIME_ID, &tspec);
- if (error) {
- if(status)
- *status = MyHTML_STATUS_PERF_ERROR_FIND_CPU_CLOCK;
-
- return 0;
- }
-
- unsigned long long ticks_per_sec = (unsigned long long)((double)NSEC_PER_SECOND / TIMESPEC_TO_USEC(tspec));
- return ticks_per_sec;
-}
-
-uint64_t myhtml_hperf_clock(myhtml_status_t *status)
-{
- if(status)
- *status = MyHTML_STATUS_OK;
-
- struct timespec tspec;
- int error = clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &tspec);
- if (error) {
- if(status)
- *status = MyHTML_STATUS_PERF_ERROR_FIND_CPU_CLOCK;
-
- return 0;
- }
-
- return TIMESPEC_TO_USEC(tspec);
-}
-
-#elif defined(__APPLE__) && defined(__MACH__)
-
-/*
- * TODO: on OSX we can use clock_get_time: http://stackoverflow.com/questions/5167269/clock-gettime-alternative-in-mac-os-x
- * Or this: http://web.archive.org/web/20100517095152/http://www.wand.net.nz/~smr26/wordpress/2009/01/19/monotonic-time-in-mac-os-x/comment-page-1/
- */
-
-// TODO: this is incorrect plug for mac os x
-// look at links before this comment
-
-#include <mach/mach_time.h>
-
-uint64_t myhtml_hperf_res(myhtml_status_t *status)
-{
- if(status)
- *status = MyHTML_STATUS_OK;
-
- unsigned long long freq = 0;
-
- size_t len = sizeof(freq);
- int mib[2] = {CTL_HW, HW_CPU_FREQ};
-
- int error = sysctl(mib, 2, &freq, &len, NULL, 0);
- if (error) {
- if(status)
- *status = MyHTML_STATUS_PERF_ERROR_FIND_CPU_CLOCK;
-
- return 0;
- }
-
- return freq;
-}
-
-uint64_t myhtml_hperf_clock(myhtml_status_t *status)
-{
- if(status)
- *status = MyHTML_STATUS_OK;
-
- return mach_absolute_time();
-}
-
-#else
-
-# warning No hperf implementation for this platform
-
-uint64_t myhtml_hperf_res(myhtml_status_t *status)
-{
- if(status)
- *status = MyHTML_STATUS_PERF_ERROR_FIND_CPU_CLOCK;
-
- return 0;
-}
-
-uint64_t myhtml_hperf_clock(myhtml_status_t *status)
-{
- if(status)
- *status = MyHTML_STATUS_PERF_ERROR_FIND_CPU_CLOCK;
-
- return 0;
-}
-
-#endif /* defined(MyHTML_FORCE_RDTSC) ... */
-#endif /* MyHTML_WITH_PERF */
-
-#define _MyHTML_CHECK_STATUS_AND_PRINT_ERROR \
- if(status == MyHTML_STATUS_PERF_ERROR_COMPILED_WITHOUT_PERF) { \
- fprintf(fh, "MyHTML: Library compiled without perf source. Please, build library with -DMyHTML_WITH_PERF flag\n"); \
- } \
- else if(status) { \
- fprintf(fh, "MyHTML: Something wrong! Perhaps, your platform does not support the measurement of performance\n"); \
- } \
- else
-
-myhtml_status_t myhtml_hperf_print(const char *name, uint64_t x, uint64_t y, FILE *fh) {
- myhtml_status_t status;
-
- unsigned long long freq = myhtml_hperf_res(&status);
-
- if(freq) {
- _MyHTML_CHECK_STATUS_AND_PRINT_ERROR {
- fprintf(fh, "%s: %0.5f\n", name, (((float)(y - x) / (float)freq)));
- }
- }
-
- return status;
-}
-
-myhtml_status_t myhtml_hperf_print_by_val(const char *name, uint64_t x, FILE *fh) {
- myhtml_status_t status;
-
- unsigned long long freq = myhtml_hperf_res(&status);
-
- if(freq) {
- _MyHTML_CHECK_STATUS_AND_PRINT_ERROR {
- fprintf(fh, "%s: %0.5f\n", name, ((float)x / (float)freq));
- }
- }
-
- return status;
-}
-
-
diff --git a/source/myhtml/rules.c b/source/myhtml/rules.c
index 3921952..17e08ce 100644
--- a/source/myhtml/rules.c
+++ b/source/myhtml/rules.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -20,16 +20,16 @@
#include "myhtml/rules.h"
-void myhtml_insertion_fix_emit_for_text_begin_ws(myhtml_token_node_t* token)
+void myhtml_insertion_fix_emit_for_text_begin_ws(myhtml_token_t* token, myhtml_token_node_t* node)
{
- myhtml_token_node_wait_for_done(token);
- myhtml_string_crop_whitespace_from_begin(&token->str);
+ myhtml_token_node_wait_for_done(token, node);
+ mycore_string_crop_whitespace_from_begin(&node->str);
}
myhtml_token_node_t * myhtml_insertion_fix_split_for_text_begin_ws(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
- myhtml_token_node_wait_for_done(token);
- size_t len = myhtml_string_whitespace_from_begin(&token->str);
+ myhtml_token_node_wait_for_done(tree->token, token);
+ size_t len = mycore_string_whitespace_from_begin(&token->str);
if(len == 0)
return NULL;
@@ -40,9 +40,9 @@ myhtml_token_node_t * myhtml_insertion_fix_split_for_text_begin_ws(myhtml_tree_t
if(new_token == NULL)
return NULL;
- myhtml_string_init(tree->mchar, tree->mchar_node_id, &new_token->str, (len + 2));
+ mycore_string_init(tree->mchar, tree->mchar_node_id, &new_token->str, (len + 2));
- myhtml_string_append(&new_token->str, token->str.data, len);
+ mycore_string_append(&new_token->str, token->str.data, len);
new_token->type |= MyHTML_TOKEN_TYPE_DONE;
@@ -55,9 +55,9 @@ myhtml_token_node_t * myhtml_insertion_fix_split_for_text_begin_ws(myhtml_tree_t
void myhtml_insertion_fix_for_null_char_drop_all(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
- myhtml_token_node_wait_for_done(token);
+ myhtml_token_node_wait_for_done(tree->token, token);
- myhtml_string_t *str = &token->str;
+ mycore_string_t *str = &token->str;
size_t len = str->length;
size_t offset = 0;
@@ -93,7 +93,7 @@ bool myhtml_insertion_mode_initial(myhtml_tree_t* tree, myhtml_token_node_t* tok
return false;
}
- myhtml_insertion_fix_emit_for_text_begin_ws(token);
+ myhtml_insertion_fix_emit_for_text_begin_ws(tree->token, token);
// default, other token
tree->compat_mode = MyHTML_TREE_COMPAT_MODE_QUIRKS;
@@ -109,7 +109,7 @@ bool myhtml_insertion_mode_initial(myhtml_tree_t* tree, myhtml_token_node_t* tok
case MyHTML_TAG__DOCTYPE:
{
- myhtml_token_node_wait_for_done(token);
+ myhtml_token_node_wait_for_done(tree->token, token);
myhtml_token_release_and_check_doctype_attributes(tree->token, token, &tree->doctype);
@@ -183,7 +183,7 @@ bool myhtml_insertion_mode_before_html(myhtml_tree_t* tree, myhtml_token_node_t*
break;
}
- myhtml_insertion_fix_emit_for_text_begin_ws(token);
+ myhtml_insertion_fix_emit_for_text_begin_ws(tree->token, token);
// default, other token
myhtml_tree_node_insert_root(tree, NULL, MyHTML_NAMESPACE_HTML);
@@ -246,7 +246,7 @@ bool myhtml_insertion_mode_before_head(myhtml_tree_t* tree, myhtml_token_node_t*
break;
}
- myhtml_insertion_fix_emit_for_text_begin_ws(token);
+ myhtml_insertion_fix_emit_for_text_begin_ws(tree->token, token);
// default, other token
tree->node_head = myhtml_tree_node_insert(tree, MyHTML_TAG_HEAD, MyHTML_NAMESPACE_HTML);
@@ -1207,8 +1207,8 @@ bool myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t* tok
myhtml_tree_node_t* top_node = tree->open_elements->list[0];
if(top_node->token) {
- myhtml_token_node_wait_for_done(token);
- myhtml_token_node_wait_for_done(top_node->token);
+ myhtml_token_node_wait_for_done(tree->token, token);
+ myhtml_token_node_wait_for_done(tree->token, top_node->token);
myhtml_token_node_attr_copy_with_check(tree->token, token, top_node->token, tree->mcasync_rules_attr_id);
}
else {
@@ -1259,8 +1259,8 @@ bool myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t* tok
myhtml_tree_node_t* top_node = tree->open_elements->list[1];
if(top_node->token) {
- myhtml_token_node_wait_for_done(token);
- myhtml_token_node_wait_for_done(top_node->token);
+ myhtml_token_node_wait_for_done(tree->token, token);
+ myhtml_token_node_wait_for_done(tree->token, top_node->token);
myhtml_token_node_attr_copy_with_check(tree->token, token, top_node->token, tree->mcasync_rules_attr_id);
}
else {
@@ -1701,7 +1701,7 @@ bool myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t* tok
myhtml_tree_node_insert_html_element(tree, token);
myhtml_tree_open_elements_pop(tree);
- myhtml_token_node_wait_for_done(token);
+ myhtml_token_node_wait_for_done(tree->token, token);
if(myhtml_token_attr_match_case(tree->token, token, "type", 4, "hidden", 6) == NULL) {
tree->flags ^= (tree->flags & MyHTML_TREE_FLAGS_FRAMESET_OK);
}
@@ -1902,7 +1902,7 @@ bool myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t* tok
{
myhtml_tree_active_formatting_reconstruction(tree);
- myhtml_token_node_wait_for_done(token);
+ myhtml_token_node_wait_for_done(tree->token, token);
myhtml_token_adjust_mathml_attributes(token);
myhtml_token_adjust_foreign_attributes(token);
@@ -1920,7 +1920,7 @@ bool myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t* tok
{
myhtml_tree_active_formatting_reconstruction(tree);
- myhtml_token_node_wait_for_done(token);
+ myhtml_token_node_wait_for_done(tree->token, token);
myhtml_token_adjust_svg_attributes(token);
myhtml_token_adjust_foreign_attributes(token);
@@ -2182,7 +2182,8 @@ bool myhtml_insertion_mode_in_table(myhtml_tree_t* tree, myhtml_token_node_t* to
case MyHTML_TAG_INPUT:
{
- myhtml_token_node_wait_for_done(token);
+ myhtml_token_node_wait_for_done(tree->token, token);
+
if(myhtml_token_attr_match_case(tree->token, token, "type", 4, "hidden", 6) == NULL) {
tree->foster_parenting = true;
myhtml_insertion_mode_in_body(tree, token);
@@ -3301,7 +3302,7 @@ bool myhtml_insertion_mode_after_body(myhtml_tree_t* tree, myhtml_token_node_t*
case MyHTML_TAG__COMMENT:
{
if(tree->open_elements->length == 0) {
- MyHTML_DEBUG_ERROR("after body state; open_elements length < 1");
+ MyCORE_DEBUG_ERROR("after body state; open_elements length < 1");
break;
}
@@ -3396,8 +3397,8 @@ bool myhtml_insertion_mode_in_frameset(myhtml_tree_t* tree, myhtml_token_node_t*
// parse error
/* %EXTERNAL% VALIDATOR:RULES TOKEN STATUS:ELEMENT_UNNECESSARY ACTION:IGNORE LEVEL:ERROR */
- myhtml_token_node_wait_for_done(token);
- myhtml_string_stay_only_whitespace(&token->str);
+ myhtml_token_node_wait_for_done(tree->token, token);
+ mycore_string_stay_only_whitespace(&token->str);
if(token->str.length)
myhtml_tree_node_insert_text(tree, token);
@@ -3488,8 +3489,8 @@ bool myhtml_insertion_mode_after_frameset(myhtml_tree_t* tree, myhtml_token_node
// parse error
/* %EXTERNAL% VALIDATOR:RULES TOKEN STATUS:ELEMENT_UNNECESSARY ACTION:IGNORE LEVEL:ERROR */
- myhtml_token_node_wait_for_done(token);
- myhtml_string_stay_only_whitespace(&token->str);
+ myhtml_token_node_wait_for_done(tree->token, token);
+ mycore_string_stay_only_whitespace(&token->str);
if(token->str.length)
myhtml_tree_node_insert_text(tree, token);
@@ -3684,7 +3685,7 @@ bool myhtml_insertion_mode_in_foreign_content_start_other(myhtml_tree_t* tree, m
{
myhtml_tree_node_t* adjusted_node = myhtml_tree_adjusted_current_node(tree);
- myhtml_token_node_wait_for_done(token);
+ myhtml_token_node_wait_for_done(tree->token, token);
if(adjusted_node->ns == MyHTML_NAMESPACE_MATHML) {
myhtml_token_adjust_mathml_attributes(token);
@@ -3738,7 +3739,7 @@ bool myhtml_insertion_mode_in_foreign_content(myhtml_tree_t* tree, myhtml_token_
// parse error
/* %EXTERNAL% VALIDATOR:RULES TOKEN STATUS:NULL_CHAR LEVEL:ERROR */
- myhtml_token_node_wait_for_done(token);
+ myhtml_token_node_wait_for_done(tree->token, token);
myhtml_token_set_replacement_character_for_null_token(tree, token);
}
@@ -3812,12 +3813,14 @@ bool myhtml_insertion_mode_in_foreign_content(myhtml_tree_t* tree, myhtml_token_
if(token->tag_id == MyHTML_TAG_FONT)
{
- myhtml_token_node_wait_for_done(token);
+ myhtml_token_node_wait_for_done(tree->token, token);
if(myhtml_token_attr_by_name(token, "color", 5) == NULL &&
myhtml_token_attr_by_name(token, "face" , 4) == NULL &&
myhtml_token_attr_by_name(token, "size" , 4) == NULL)
+ {
return myhtml_insertion_mode_in_foreign_content_start_other(tree, token);
+ }
}
if(tree->fragment == NULL) {
@@ -3854,7 +3857,7 @@ bool myhtml_rules_check_for_first_newline(myhtml_tree_t* tree, myhtml_token_node
if(tree->flags &MyHTML_TREE_FLAGS_PARSE_FLAG_EMIT_NEWLINE)
{
if(token->tag_id == MyHTML_TAG__TEXT) {
- myhtml_token_node_wait_for_done(token);
+ myhtml_token_node_wait_for_done(tree->token, token);
if(token->str.length > 0) {
if(token->str.data[0] == '\n') {
@@ -3924,9 +3927,9 @@ bool myhtml_rules_tree_dispatcher(myhtml_tree_t* tree, myhtml_token_node_t* toke
return reprocess;
}
-myhtml_status_t myhtml_rules_init(myhtml_t* myhtml)
+mystatus_t myhtml_rules_init(myhtml_t* myhtml)
{
- myhtml->insertion_func = (myhtml_insertion_f*)myhtml_malloc(sizeof(myhtml_insertion_f) * MyHTML_INSERTION_MODE_LAST_ENTRY);
+ myhtml->insertion_func = (myhtml_insertion_f*)mycore_malloc(sizeof(myhtml_insertion_f) * MyHTML_INSERTION_MODE_LAST_ENTRY);
if(myhtml->insertion_func == NULL)
return MyHTML_STATUS_RULES_ERROR_MEMORY_ALLOCATION;
diff --git a/source/myhtml/rules.h b/source/myhtml/rules.h
index 1724e22..7610115 100644
--- a/source/myhtml/rules.h
+++ b/source/myhtml/rules.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -30,8 +30,7 @@ extern "C" {
#include "myhtml/myhtml.h"
#include "myhtml/tree.h"
-
-myhtml_status_t myhtml_rules_init(myhtml_t* myhtml);
+mystatus_t myhtml_rules_init(myhtml_t* myhtml);
void myhtml_rules_stop_parsing(myhtml_tree_t* tree);
bool myhtml_rules_tree_dispatcher(myhtml_tree_t* tree, myhtml_token_node_t* token);
@@ -39,7 +38,6 @@ bool myhtml_insertion_mode_in_body_other_end_tag(myhtml_tree_t* tree, myhtml_tok
bool myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t* token);
bool myhtml_insertion_mode_in_template(myhtml_tree_t* tree, myhtml_token_node_t* token);
-
#ifdef __cplusplus
} /* extern "C" */
#endif
diff --git a/source/myhtml/serialization.c b/source/myhtml/serialization.c
index 75003f3..c142c91 100755
--- a/source/myhtml/serialization.c
+++ b/source/myhtml/serialization.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2016 Alexander Borisov
+ Copyright (C) 2016-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -19,22 +19,21 @@
Author: https://github.com/EmielBruijntjes (Emiel Bruijntjes)
*/
-#include <setjmp.h>
#include "myhtml/serialization.h"
/**
* Forward declaration of all the functions that are used inside this module
*/
-static void myhtml_serialization_append(const char* str, size_t size, myhtml_callback_serialize_f callback, void *ptr);
-static void myhtml_serialization_append_attr(const char* str, size_t length, myhtml_callback_serialize_f callback, void *ptr);
-static void myhtml_serialization_attributes(myhtml_tree_t* tree, myhtml_tree_attr_t* attr, myhtml_callback_serialize_f callback, void *ptr);
-static void myhtml_serialization_node_append_text_node(myhtml_tree_node_t* node, myhtml_callback_serialize_f callback, void *ptr);
-static void myhtml_serialization_node_append_close(myhtml_tree_node_t* node, myhtml_callback_serialize_f callback, void *ptr);
+static mystatus_t myhtml_serialization_append(const char* str, size_t size, mycore_callback_serialize_f callback, void *ptr);
+static mystatus_t myhtml_serialization_append_attr(const char* str, size_t length, mycore_callback_serialize_f callback, void *ptr);
+static mystatus_t myhtml_serialization_attributes(myhtml_tree_t* tree, myhtml_tree_attr_t* attr, mycore_callback_serialize_f callback, void *ptr);
+static mystatus_t myhtml_serialization_node_append_text_node(myhtml_tree_node_t* node, mycore_callback_serialize_f callback, void *ptr);
+static mystatus_t myhtml_serialization_node_append_close(myhtml_tree_node_t* node, mycore_callback_serialize_f callback, void *ptr);
/**
* See the function myhtml_serialization_tree_buffer
*/
-bool myhtml_serialization(myhtml_tree_node_t* scope_node, myhtml_string_raw_t* str)
+mystatus_t myhtml_serialization(myhtml_tree_node_t* scope_node, mycore_string_raw_t* str)
{
return myhtml_serialization_tree_buffer(scope_node, str);
}
@@ -42,7 +41,7 @@ bool myhtml_serialization(myhtml_tree_node_t* scope_node, myhtml_string_raw_t* s
/**
* See the function myhtml_serialization_node_buffer
*/
-bool myhtml_serialization_node(myhtml_tree_node_t* node, myhtml_string_raw_t* str)
+mystatus_t myhtml_serialization_node(myhtml_tree_node_t* node, mycore_string_raw_t* str)
{
return myhtml_serialization_node_buffer(node, str);
}
@@ -55,32 +54,41 @@ bool myhtml_serialization_node(myhtml_tree_node_t* node, myhtml_string_raw_t* st
* @param ptr user-supplied pointer
* @return bool
*/
-bool myhtml_serialization_tree_callback(myhtml_tree_node_t* scope_node, myhtml_callback_serialize_f callback, void *ptr)
+mystatus_t myhtml_serialization_tree_callback(myhtml_tree_node_t* scope_node, mycore_callback_serialize_f callback, void *ptr)
{
myhtml_tree_node_t* node = scope_node;
while(node) {
- if(!myhtml_serialization_node_callback(node, callback, ptr)) return false;
+ if(myhtml_serialization_node_callback(node, callback, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
if(node->child)
node = node->child;
else {
while(node != scope_node && node->next == NULL) {
- myhtml_serialization_node_append_close(node, callback, ptr);
+ if(myhtml_serialization_node_append_close(node, callback, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
node = node->parent;
}
if(node == scope_node) {
- if(node != node->tree->document) myhtml_serialization_node_append_close(node, callback, ptr);
+ if(node != node->tree->document) {
+ if(myhtml_serialization_node_append_close(node, callback, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+ }
+
break;
}
- myhtml_serialization_node_append_close(node, callback, ptr);
+ if(myhtml_serialization_node_append_close(node, callback, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
node = node->next;
}
}
- return true;
+ return MyCORE_STATUS_OK;
}
/**
@@ -91,46 +99,73 @@ bool myhtml_serialization_tree_callback(myhtml_tree_node_t* scope_node, myhtml_c
* @param ptr user-supplied pointer
* @return bool
*/
-bool myhtml_serialization_node_callback(myhtml_tree_node_t* node, myhtml_callback_serialize_f callback, void *ptr)
+mystatus_t myhtml_serialization_node_callback(myhtml_tree_node_t* node, mycore_callback_serialize_f callback, void *ptr)
{
switch (node->tag_id) {
case MyHTML_TAG__TEXT: {
- myhtml_serialization_node_append_text_node(node, callback, ptr);
+ if(myhtml_serialization_node_append_text_node(node, callback, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
break;
}
case MyHTML_TAG__COMMENT: {
- callback("<!--", 4, ptr);
- if(node->token && node->token->str.data) callback(node->token->str.data, node->token->str.length, ptr);
- callback("-->", 3, ptr);
+ if(callback("<!--", 4, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
+ if(node->token && node->token->str.data) {
+ if(callback(node->token->str.data, node->token->str.length, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+ }
+
+ if(callback("-->", 3, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
break;
}
case MyHTML_TAG__DOCTYPE: {
- callback("<!DOCTYPE", 9, ptr);
+ if(callback("<!DOCTYPE", 9, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
if(node->token) {
myhtml_tree_attr_t* attr = node->token->attr_first;
if(attr->key.data && attr->key.length) {
- callback(" ", 1, ptr);
- callback(attr->key.data, attr->key.length, ptr);
+ if(callback(" ", 1, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
+ if(callback(attr->key.data, attr->key.length, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
}
}
- callback(">", 1, ptr);
+
+ if(callback(">", 1, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
break;
}
default: {
size_t length;
const char *tag = myhtml_tag_name_by_id(node->tree, node->tag_id, &length);
- callback("<", 1, ptr);
- callback(tag, length, ptr);
- if(node->token) myhtml_serialization_attributes(node->tree, node->token->attr_first, callback, ptr);
- callback(">", 1, ptr);
+ if(callback("<", 1, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
+ if(callback(tag, length, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
+ if(node->token) {
+ if(myhtml_serialization_attributes(node->tree, node->token->attr_first, callback, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+ }
+
+ if(callback(">", 1, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
break;
}
}
- return true;
+ return MyCORE_STATUS_OK;
}
/**
@@ -140,28 +175,33 @@ bool myhtml_serialization_node_callback(myhtml_tree_node_t* node, myhtml_callbac
* @param callback
* @param ptr
*/
-void myhtml_serialization_attributes(myhtml_tree_t* tree, myhtml_tree_attr_t* attr, myhtml_callback_serialize_f callback, void* ptr)
+mystatus_t myhtml_serialization_attributes(myhtml_tree_t* tree, myhtml_tree_attr_t* attr, mycore_callback_serialize_f callback, void* ptr)
{
while(attr) {
- callback(" ", 1, ptr);
+ if(callback(" ", 1, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
switch (attr->ns) {
case MyHTML_NAMESPACE_XML:
- callback("xml:", 4, ptr);
+ if(callback("xml:", 4, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
break;
case MyHTML_NAMESPACE_XMLNS: {
/*
If the attribute is in the XMLNS namespace and the attribute's local name is not xmlns
The attribute's serialized name is the string "xmlns:" followed by the attribute's local name.
*/
- if(attr->key.data && attr->key.length == 5 && myhtml_strcmp(attr->key.data, "xmlns")) {
- callback("xmlns:", 6, ptr);
+ if(attr->key.data && attr->key.length == 5 && mycore_strcmp(attr->key.data, "xmlns")) {
+ if(callback("xmlns:", 6, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
}
break;
}
case MyHTML_NAMESPACE_XLINK: {
- callback("xlink:", 6, ptr);
+ if(callback("xlink:", 6, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
break;
}
@@ -172,14 +212,25 @@ void myhtml_serialization_attributes(myhtml_tree_t* tree, myhtml_tree_attr_t* at
size_t length;
const char *data = myhtml_attribute_key(attr, &length);
- if(data) callback(data, length, ptr);
- callback("=\"", 2, ptr);
+ if(data) {
+ if(callback(data, length, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+ }
+ if(callback("=\"", 2, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
data = myhtml_attribute_value(attr, &length);
- if(data) myhtml_serialization_append_attr(data, length, callback, ptr);
- callback("\"", 1, ptr);
+ if(data) {
+ if(myhtml_serialization_append_attr(data, length, callback, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+ }
+ if(callback("\"", 1, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
attr = attr->next;
}
+
+ return MyCORE_STATUS_OK;
}
/**
@@ -189,7 +240,7 @@ void myhtml_serialization_attributes(myhtml_tree_t* tree, myhtml_tree_attr_t* at
* @param callback
* @param ptr
*/
-void myhtml_serialization_node_append_close(myhtml_tree_node_t* node, myhtml_callback_serialize_f callback, void* ptr)
+mystatus_t myhtml_serialization_node_append_close(myhtml_tree_node_t* node, mycore_callback_serialize_f callback, void* ptr)
{
if(node->tag_id != MyHTML_TAG__TEXT &&
node->tag_id != MyHTML_TAG__COMMENT &&
@@ -198,10 +249,17 @@ void myhtml_serialization_node_append_close(myhtml_tree_node_t* node, myhtml_cal
size_t length;
const char *tag = myhtml_tag_name_by_id(node->tree, node->tag_id, &length);
- callback("</", 2, ptr);
- callback(tag, length, ptr);
- callback(">", 1, ptr);
+ if(callback("</", 2, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
+ if(callback(tag, length, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
+ if(callback(">", 1, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
}
+
+ return MyCORE_STATUS_OK;
}
/**
@@ -211,11 +269,16 @@ void myhtml_serialization_node_append_close(myhtml_tree_node_t* node, myhtml_cal
* @param callback
* @param ptr
*/
-void myhtml_serialization_node_append_text_node(myhtml_tree_node_t* node, myhtml_callback_serialize_f callback, void* ptr)
+mystatus_t myhtml_serialization_node_append_text_node(myhtml_tree_node_t* node, mycore_callback_serialize_f callback, void* ptr)
{
- if(node->token == NULL || node->token->str.data == NULL) return;
+ if(node->token == NULL || node->token->str.data == NULL) return MyCORE_STATUS_OK;
- if(node->parent == NULL) return myhtml_serialization_append(node->token->str.data, node->token->str.length, callback, ptr);
+ if(node->parent == NULL) {
+ if(myhtml_serialization_append(node->token->str.data, node->token->str.length, callback, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
+ return MyCORE_STATUS_OK;
+ }
switch (node->parent->tag_id) {
case MyHTML_TAG_STYLE:
@@ -225,12 +288,17 @@ void myhtml_serialization_node_append_text_node(myhtml_tree_node_t* node, myhtml
case MyHTML_TAG_NOEMBED:
case MyHTML_TAG_NOFRAMES:
case MyHTML_TAG_PLAINTEXT:
- callback(node->token->str.data, node->token->str.length, ptr);
+ if(callback(node->token->str.data, node->token->str.length, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
break;
default:
- myhtml_serialization_append(node->token->str.data, node->token->str.length, callback, ptr);
+ if(myhtml_serialization_append(node->token->str.data, node->token->str.length, callback, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
break;
}
+
+ return MyCORE_STATUS_OK;
}
/**
@@ -240,7 +308,7 @@ void myhtml_serialization_node_append_text_node(myhtml_tree_node_t* node, myhtml
* @param callback
* @param ptr
*/
-void myhtml_serialization_append(const char *data, size_t size, myhtml_callback_serialize_f callback, void* ptr)
+mystatus_t myhtml_serialization_append(const char *data, size_t size, mycore_callback_serialize_f callback, void* ptr)
{
// number of chars not yet displayed
size_t notwritten = 0;
@@ -249,24 +317,48 @@ void myhtml_serialization_append(const char *data, size_t size, myhtml_callback_
for (size_t i = 0; i < size; ++i) {
switch ((unsigned char)data[i]) {
case '&':
- if (notwritten) callback(data + i - notwritten, notwritten, ptr);
- callback("&amp;", 5, ptr);
+ if(notwritten) {
+ if(callback(data + i - notwritten, notwritten, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+ }
+
+ if(callback("&amp;", 5, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
notwritten = 0;
break;
case '<':
- if (notwritten) callback(data + i - notwritten, notwritten, ptr);
- callback("&lt;", 4, ptr);
+ if(notwritten) {
+ if(callback(data + i - notwritten, notwritten, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+ }
+
+ if(callback("&lt;", 4, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
notwritten = 0;
break;
case '>':
- if (notwritten) callback(data + i - notwritten, notwritten, ptr);
- callback("&gt;", 4, ptr);
+ if(notwritten) {
+ if(callback(data + i - notwritten, notwritten, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+ }
+
+ if(callback("&gt;", 4, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
notwritten = 0;
break;
case 0xA0:
if(i > 0 && (unsigned char)(data[(i - 1)]) == 0xC2) {
- if (notwritten) callback(data + i - notwritten, (notwritten - 1), ptr);
- callback("&nbsp;", 6, ptr);
+ if(notwritten) {
+ if(callback(data + i - notwritten, (notwritten - 1), ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+ }
+
+ if(callback("&nbsp;", 6, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
notwritten = 0;
}
else {
@@ -280,7 +372,11 @@ void myhtml_serialization_append(const char *data, size_t size, myhtml_callback_
}
}
- if (notwritten) callback(data + size - notwritten, notwritten, ptr);
+ if(notwritten)
+ if(callback(data + size - notwritten, notwritten, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
+ return MyCORE_STATUS_OK;
}
/**
@@ -290,7 +386,7 @@ void myhtml_serialization_append(const char *data, size_t size, myhtml_callback_
* @param callback
* @param ptr
*/
-void myhtml_serialization_append_attr(const char* data, size_t size, myhtml_callback_serialize_f callback, void* ptr)
+mystatus_t myhtml_serialization_append_attr(const char* data, size_t size, mycore_callback_serialize_f callback, void* ptr)
{
// number of chars not yet displayed
size_t notwritten = 0;
@@ -299,19 +395,37 @@ void myhtml_serialization_append_attr(const char* data, size_t size, myhtml_call
for (size_t i = 0; i < size; ++i) {
switch ((unsigned char)data[i]) {
case '&':
- if (notwritten) callback(data + i - notwritten, notwritten, ptr);
- callback("&amp;", 5, ptr);
+ if(notwritten) {
+ if(callback(data + i - notwritten, notwritten, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+ }
+
+ if(callback("&amp;", 5, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
notwritten = 0;
break;
case '"':
- if (notwritten) callback(data + i - notwritten, notwritten, ptr);
- callback("&quot;", 6, ptr);
+ if(notwritten) {
+ if(callback(data + i - notwritten, notwritten, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+ }
+
+ if(callback("&quot;", 6, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
notwritten = 0;
break;
case 0xA0:
if(i > 0 && (unsigned char)(data[(i - 1)]) == 0xC2) {
- if (notwritten) callback(data + i - notwritten, (notwritten - 1), ptr);
- callback("&nbsp;", 6, ptr);
+ if(notwritten) {
+ if(callback(data + i - notwritten, (notwritten - 1), ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+ }
+
+ if(callback("&nbsp;", 6, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+
notwritten = 0;
}
else {
@@ -325,57 +439,53 @@ void myhtml_serialization_append_attr(const char* data, size_t size, myhtml_call
}
}
- if (notwritten) callback(data + size - notwritten, notwritten, ptr);
+ if(notwritten) {
+ if(callback(data + size - notwritten, notwritten, ptr))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+ }
+
+ return MyCORE_STATUS_OK;
}
/**
- * Because we want to leap out of the algorithm if we're halfway through
- * serializing, we use a longjmp() call to jump back to the public APP
- * @var jmp_buf
- */
-static jmp_buf leap;
-
-/**
* Reallocate the buffer
* @param str the buffer to reallocate
* @param size new size
*/
-void myhtml_serialization_reallocate(myhtml_string_raw_t *str, size_t size)
+mystatus_t myhtml_serialization_reallocate(mycore_string_raw_t *str, size_t size)
{
// construct a buffer
- char *data = (char*)myhtml_realloc(str->data, size * sizeof(char));
+ char *data = (char*)mycore_realloc(str->data, size * sizeof(char));
// was it ok?
- if (data == NULL) {
-
- // allocation failed, reset the string object
- myhtml_free(str->data);
- memset(str, 0, sizeof(myhtml_string_raw_t));
-
- // leap back to the source of the serialization algorithm
- longjmp(leap, 1);
+ if(data == NULL) {
+ memset(str, 0, sizeof(mycore_string_raw_t));
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
}
else {
-
// reallocation succeeded
str->data = data;
str->size = size;
}
+
+ return MyCORE_STATUS_OK;
}
/**
- * Implementation of the myhtml_callback_serialize_f function for internal
+ * Implementation of the mycore_callback_serialize_f function for internal
* use that concatenats everything to a string
* @param data
* @param size
*/
-void myhtml_serialization_concatenate(const char* data, size_t length, void *ptr)
+mystatus_t myhtml_serialization_concatenate(const char* data, size_t length, void *ptr)
{
- // get the string back
- myhtml_string_raw_t* str = (myhtml_string_raw_t *)ptr;
+ mycore_string_raw_t *str = (mycore_string_raw_t*)ptr;
// do we still have enough size in the output buffer?
- if ((length + str->length) >= str->size) myhtml_serialization_reallocate(str, length + str->length + 4096);
+ if ((length + str->length) >= str->size) {
+ if(myhtml_serialization_reallocate(str, length + str->length + 4096))
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
+ }
// copy data
strncpy(&str->data[ str->length ], data, length);
@@ -383,6 +493,8 @@ void myhtml_serialization_concatenate(const char* data, size_t length, void *ptr
// update counters
str->length += length;
str->data[ str->length ] = '\0';
+
+ return MyCORE_STATUS_OK;
}
/**
@@ -392,7 +504,7 @@ void myhtml_serialization_concatenate(const char* data, size_t length, void *ptr
* @param str
* @return bool
*/
-bool myhtml_serialization_tree_buffer(myhtml_tree_node_t* scope_node, myhtml_string_raw_t* str) {
+mystatus_t myhtml_serialization_tree_buffer(myhtml_tree_node_t* scope_node, mycore_string_raw_t* str) {
// we need an output variable
if(str == NULL) return false;
@@ -401,25 +513,15 @@ bool myhtml_serialization_tree_buffer(myhtml_tree_node_t* scope_node, myhtml_str
if(str->data == NULL) {
str->size = 4098 * 5;
str->length = 0;
- str->data = (char*)myhtml_malloc(str->size * sizeof(char));
+ str->data = (char*)mycore_malloc(str->size * sizeof(char));
if(str->data == NULL) {
str->size = 0;
- return false;
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
}
}
- // if allocation halfway the algorithm fails, we want to leap back
- if (setjmp(leap) == 0)
- {
- // serialize the entire tree
- return myhtml_serialization_tree_callback(scope_node, myhtml_serialization_concatenate, str);
- }
- else
- {
- // the serialization algorithm failed because of a memory-allocation failure
- return false;
- }
+ return myhtml_serialization_tree_callback(scope_node, myhtml_serialization_concatenate, str);
}
/**
@@ -429,7 +531,7 @@ bool myhtml_serialization_tree_buffer(myhtml_tree_node_t* scope_node, myhtml_str
* @param str
* @return bool
*/
-bool myhtml_serialization_node_buffer(myhtml_tree_node_t* node, myhtml_string_raw_t* str) {
+mystatus_t myhtml_serialization_node_buffer(myhtml_tree_node_t* node, mycore_string_raw_t* str) {
// we need an output variable
if(str == NULL) return false;
@@ -438,24 +540,14 @@ bool myhtml_serialization_node_buffer(myhtml_tree_node_t* node, myhtml_string_ra
if(str->data == NULL) {
str->size = 2048;
str->length = 0;
- str->data = (char*)myhtml_malloc(str->size * sizeof(char));
+ str->data = (char*)mycore_malloc(str->size * sizeof(char));
if(str->data == NULL) {
str->size = 0;
return false;
}
}
-
- // if allocation halfway the algorithm fails, we want to leap back
- if (setjmp(leap) == 0)
- {
- // pass on
- return myhtml_serialization_node_callback(node, myhtml_serialization_concatenate, str);
- }
- else
- {
- // the serialization algorithm failed because of a memory-allocation failure
- return false;
- }
+
+ return myhtml_serialization_node_callback(node, myhtml_serialization_concatenate, str);
}
diff --git a/source/myhtml/serialization.h b/source/myhtml/serialization.h
index e651769..d21fd70 100644
--- a/source/myhtml/serialization.h
+++ b/source/myhtml/serialization.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2016 Alexander Borisov
+ Copyright (C) 2016-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -31,15 +31,15 @@ extern "C" {
#endif
// the serialization functions
-bool myhtml_serialization_tree_buffer(myhtml_tree_node_t* scope_node, myhtml_string_raw_t* str);
-bool myhtml_serialization_node_buffer(myhtml_tree_node_t* node, myhtml_string_raw_t* str);
-bool myhtml_serialization_tree_callback(myhtml_tree_node_t* scope_node, myhtml_callback_serialize_f callback, void* ptr);
-bool myhtml_serialization_node_callback(myhtml_tree_node_t* node, myhtml_callback_serialize_f callback, void* ptr);
+mystatus_t myhtml_serialization_tree_buffer(myhtml_tree_node_t* scope_node, mycore_string_raw_t* str);
+mystatus_t myhtml_serialization_node_buffer(myhtml_tree_node_t* node, mycore_string_raw_t* str);
+mystatus_t myhtml_serialization_tree_callback(myhtml_tree_node_t* scope_node, mycore_callback_serialize_f callback, void* ptr);
+mystatus_t myhtml_serialization_node_callback(myhtml_tree_node_t* node, mycore_callback_serialize_f callback, void* ptr);
// in versuon 1.0.3 this is in public api.
// Need to set deprecated?
-bool myhtml_serialization(myhtml_tree_node_t* scope_node, myhtml_string_raw_t* str);
-bool myhtml_serialization_node(myhtml_tree_node_t* node, myhtml_string_raw_t* str);
+mystatus_t myhtml_serialization(myhtml_tree_node_t* scope_node, mycore_string_raw_t* str);
+mystatus_t myhtml_serialization_node(myhtml_tree_node_t* node, mycore_string_raw_t* str);
#ifdef __cplusplus
} /* extern "C" */
diff --git a/source/myhtml/stream.c b/source/myhtml/stream.c
index b0779df..0090301 100644
--- a/source/myhtml/stream.c
+++ b/source/myhtml/stream.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -22,14 +22,14 @@
myhtml_stream_buffer_t * myhtml_stream_buffer_create(void)
{
- return myhtml_calloc(1, sizeof(myhtml_stream_buffer_t));
+ return mycore_calloc(1, sizeof(myhtml_stream_buffer_t));
}
-myhtml_status_t myhtml_stream_buffer_init(myhtml_stream_buffer_t* stream_buffer, size_t entries_size)
+mystatus_t myhtml_stream_buffer_init(myhtml_stream_buffer_t* stream_buffer, size_t entries_size)
{
stream_buffer->length = 0;
stream_buffer->size = entries_size;
- stream_buffer->entries = myhtml_calloc(entries_size, sizeof(myhtml_stream_buffer_entry_t));
+ stream_buffer->entries = mycore_calloc(entries_size, sizeof(myhtml_stream_buffer_entry_t));
if(stream_buffer->entries == NULL)
return MyHTML_STATUS_STREAM_BUFFER_ERROR_INIT;
@@ -37,18 +37,18 @@ myhtml_status_t myhtml_stream_buffer_init(myhtml_stream_buffer_t* stream_buffer,
return MyHTML_STATUS_OK;
}
-myhtml_status_t myhtml_stream_buffer_entry_init(myhtml_stream_buffer_entry_t* stream_buffer_entry, size_t size)
+mystatus_t myhtml_stream_buffer_entry_init(myhtml_stream_buffer_entry_t* stream_buffer_entry, size_t size)
{
if(stream_buffer_entry->data) {
if(size <= stream_buffer_entry->size)
return MyHTML_STATUS_OK;
else
- myhtml_free(stream_buffer_entry->data);
+ mycore_free(stream_buffer_entry->data);
}
stream_buffer_entry->length = 0;
stream_buffer_entry->size = size;
- stream_buffer_entry->data = myhtml_malloc(size * sizeof(char));
+ stream_buffer_entry->data = mycore_malloc(size * sizeof(char));
if(stream_buffer_entry->data == NULL)
return MyHTML_STATUS_STREAM_BUFFER_ENTRY_ERROR_INIT;
@@ -68,10 +68,10 @@ myhtml_stream_buffer_entry_t * myhtml_stream_buffer_entry_destroy(myhtml_stream_
return NULL;
if(stream_buffer_entry->data)
- myhtml_free(stream_buffer_entry->data);
+ mycore_free(stream_buffer_entry->data);
if(self_destroy) {
- myhtml_free(stream_buffer_entry);
+ mycore_free(stream_buffer_entry);
return NULL;
}
@@ -93,11 +93,11 @@ myhtml_stream_buffer_t * myhtml_stream_buffer_destroy(myhtml_stream_buffer_t* st
for(size_t i = 0; i < stream_buffer->length; i++)
myhtml_stream_buffer_entry_destroy(&stream_buffer->entries[i], false);
- myhtml_free(stream_buffer->entries);
+ mycore_free(stream_buffer->entries);
}
if(self_destroy) {
- myhtml_free(stream_buffer);
+ mycore_free(stream_buffer);
return NULL;
}
@@ -109,7 +109,7 @@ myhtml_stream_buffer_entry_t * myhtml_stream_buffer_add_entry(myhtml_stream_buff
if(stream_buffer->length >= stream_buffer->size) {
size_t new_size = stream_buffer->size << 1;
- myhtml_stream_buffer_entry_t *entries = myhtml_realloc(stream_buffer, sizeof(myhtml_stream_buffer_entry_t) * new_size);
+ myhtml_stream_buffer_entry_t *entries = mycore_realloc(stream_buffer, sizeof(myhtml_stream_buffer_entry_t) * new_size);
if(entries) {
memset(&entries[stream_buffer->size], 0, (new_size - stream_buffer->size));
@@ -122,7 +122,7 @@ myhtml_stream_buffer_entry_t * myhtml_stream_buffer_add_entry(myhtml_stream_buff
}
myhtml_stream_buffer_entry_t *entry = &stream_buffer->entries[ stream_buffer->length ];
- myhtml_status_t status = myhtml_stream_buffer_entry_init(entry, entry_data_size);
+ mystatus_t status = myhtml_stream_buffer_entry_init(entry, entry_data_size);
if(status != MyHTML_STATUS_OK)
return NULL;
diff --git a/source/myhtml/stream.h b/source/myhtml/stream.h
index e015438..94c4fc2 100644
--- a/source/myhtml/stream.h
+++ b/source/myhtml/stream.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -41,17 +41,17 @@ struct myhtml_stream_buffer {
size_t length;
size_t size;
- myhtml_encoding_result_t res;
+ myencoding_result_t res;
};
myhtml_stream_buffer_t * myhtml_stream_buffer_create(void);
-myhtml_status_t myhtml_stream_buffer_init(myhtml_stream_buffer_t* stream_buffer, size_t entries_size);
+mystatus_t myhtml_stream_buffer_init(myhtml_stream_buffer_t* stream_buffer, size_t entries_size);
void myhtml_stream_buffer_clean(myhtml_stream_buffer_t* stream_buffer);
myhtml_stream_buffer_t * myhtml_stream_buffer_destroy(myhtml_stream_buffer_t* stream_buffer, bool self_destroy);
myhtml_stream_buffer_entry_t * myhtml_stream_buffer_add_entry(myhtml_stream_buffer_t* stream_buffer, size_t entry_data_size);
myhtml_stream_buffer_entry_t * myhtml_stream_buffer_current_entry(myhtml_stream_buffer_t* stream_buffer);
-myhtml_status_t myhtml_stream_buffer_entry_init(myhtml_stream_buffer_entry_t* stream_buffer_entry, size_t size);
+mystatus_t myhtml_stream_buffer_entry_init(myhtml_stream_buffer_entry_t* stream_buffer_entry, size_t size);
void myhtml_stream_buffer_entry_clean(myhtml_stream_buffer_entry_t* stream_buffer_entry);
myhtml_stream_buffer_entry_t * myhtml_stream_buffer_entry_destroy(myhtml_stream_buffer_entry_t* stream_buffer_entry, bool self_destroy);
diff --git a/source/myhtml/tag.c b/source/myhtml/tag.c
index 65a8f56..4664bb1 100755
--- a/source/myhtml/tag.c
+++ b/source/myhtml/tag.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -23,11 +23,13 @@
myhtml_tag_t * myhtml_tag_create(void)
{
- return (myhtml_tag_t*)myhtml_malloc(sizeof(myhtml_tag_t));
+ return (myhtml_tag_t*)mycore_malloc(sizeof(myhtml_tag_t));
}
-myhtml_status_t myhtml_tag_init(myhtml_tree_t *tree, myhtml_tag_t *tags)
+mystatus_t myhtml_tag_init(myhtml_tree_t *tree, myhtml_tag_t *tags)
{
+ mystatus_t status;
+
tags->mcsimple_context = mcsimple_create();
if(tags->mcsimple_context == NULL)
@@ -35,10 +37,16 @@ myhtml_status_t myhtml_tag_init(myhtml_tree_t *tree, myhtml_tag_t *tags)
mcsimple_init(tags->mcsimple_context, 128, 1024, sizeof(myhtml_tag_context_t));
- tags->mchar_node = mchar_async_node_add(tree->mchar);
- tags->tree = mctree_create(2);
- tags->mchar = tree->mchar;
- tags->tags_count = MyHTML_TAG_LAST_ENTRY;
+ tags->mchar_node = mchar_async_node_add(tree->mchar, &status);
+ tags->tree = mctree_create(2);
+ tags->mchar = tree->mchar;
+ tags->tags_count = MyHTML_TAG_LAST_ENTRY;
+
+ if(status)
+ return status;
+
+ if(tags->tree == NULL)
+ return MyCORE_STATUS_ERROR_MEMORY_ALLOCATION;
myhtml_tag_clean(tags);
@@ -64,7 +72,7 @@ myhtml_tag_t * myhtml_tag_destroy(myhtml_tag_t* tags)
mchar_async_node_delete(tags->mchar, tags->mchar_node);
- myhtml_free(tags);
+ mycore_free(tags);
return NULL;
}
@@ -134,24 +142,3 @@ const myhtml_tag_context_t * myhtml_tag_get_by_name(myhtml_tag_t* tags, const ch
return (myhtml_tag_context_t*)tags->tree->nodes[idx].value;
}
-
-void myhtml_tag_print(myhtml_tag_t* tags, FILE* fh)
-{
- size_t i;
- for(i = MyHTML_TAG_FIRST_ENTRY; i < MyHTML_TAG_LAST_ENTRY; i++)
- {
- const myhtml_tag_context_t *ctx = myhtml_tag_get_by_id(tags, i);
-
- fprintf(fh, "<%s id=\"%zu\">\n", ctx->name, i);
- }
-
- for(i = (MyHTML_TAG_LAST_ENTRY + 1); i < tags->tags_count; i++)
- {
- const myhtml_tag_context_t *ctx = myhtml_tag_get_by_id(tags, i);
-
- fprintf(fh, "<%s id=\"%zu\">\n", ctx->name, i);
- }
-}
-
-
-
diff --git a/source/myhtml/tag.h b/source/myhtml/tag.h
index 3814ef9..945b65a 100644
--- a/source/myhtml/tag.h
+++ b/source/myhtml/tag.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -31,12 +31,12 @@ extern "C" {
#include "myhtml/tag_const.h"
#include "myhtml/tokenizer.h"
#include "myhtml/tree.h"
-#include "myhtml/utils.h"
-#include "myhtml/utils/mctree.h"
-#include "myhtml/utils/mchar_async.h"
-#include "myhtml/utils/mcobject.h"
-#include "myhtml/utils/mcobject_async.h"
-#include "myhtml/utils/mcsimple.h"
+#include "mycore/utils.h"
+#include "mycore/utils/mctree.h"
+#include "mycore/utils/mchar_async.h"
+#include "mycore/utils/mcobject.h"
+#include "mycore/utils/mcobject_async.h"
+#include "mycore/utils/mcsimple.h"
#define myhtml_tag_get(tags, idx, attr) tags->context[idx].attr
@@ -52,7 +52,7 @@ extern "C" {
tags->context_length++; \
if(tags->context_length == tags->context_size) { \
tags->context_size += 4096; \
- tags->context = (myhtml_tag_context_t*)myhtml_realloc(tags->context, \
+ tags->context = (myhtml_tag_context_t*)mycore_realloc(tags->context, \
sizeof(myhtml_tag_context_t) * tags->context_size); \
} \
myhtml_tag_context_clean(tags, tags->context_length)
@@ -89,7 +89,7 @@ struct myhtml_tag {
};
myhtml_tag_t * myhtml_tag_create(void);
-myhtml_status_t myhtml_tag_init(myhtml_tree_t *tree, myhtml_tag_t *tags);
+mystatus_t myhtml_tag_init(myhtml_tree_t *tree, myhtml_tag_t *tags);
void myhtml_tag_clean(myhtml_tag_t* tags);
myhtml_tag_t * myhtml_tag_destroy(myhtml_tag_t* tags);
@@ -105,8 +105,6 @@ const myhtml_tag_context_t * myhtml_tag_get_by_name(myhtml_tag_t* tags, const ch
const myhtml_tag_context_t * myhtml_tag_static_get_by_id(size_t idx);
const myhtml_tag_context_t * myhtml_tag_static_search(const char* name, size_t length);
-void myhtml_tag_print(myhtml_tag_t* tags, FILE* fh);
-
#ifdef __cplusplus
} /* extern "C" */
#endif
diff --git a/source/myhtml/tag_const.h b/source/myhtml/tag_const.h
index 0f5b389..1b29934 100644
--- a/source/myhtml/tag_const.h
+++ b/source/myhtml/tag_const.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
diff --git a/source/myhtml/tag_init.c b/source/myhtml/tag_init.c
index c66c266..d96e62f 100755
--- a/source/myhtml/tag_init.c
+++ b/source/myhtml/tag_init.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -18,8 +18,8 @@
Author: lex.borisov@gmail.com (Alexander Borisov)
*/
-#include "myhtml/utils/resources.h"
-#include "tag.h"
+#include "mycore/utils/resources.h"
+#include "myhtml/tag.h"
static const myhtml_tag_context_t myhtml_tag_base_list[MyHTML_TAG_LAST_ENTRY] =
{
@@ -2591,15 +2591,15 @@ static const myhtml_tag_static_list_t myhtml_tag_static_list_index[] =
const myhtml_tag_context_t * myhtml_tag_static_search(const char* name, size_t length)
{
- size_t idx = ((myhtml_string_chars_lowercase_map[ (const unsigned char)name[0] ] *
- myhtml_string_chars_lowercase_map[ (const unsigned char)name[(length - 1)] ] *
+ size_t idx = ((mycore_string_chars_lowercase_map[ (const unsigned char)name[0] ] *
+ mycore_string_chars_lowercase_map[ (const unsigned char)name[(length - 1)] ] *
length)
% MyHTML_BASE_STATIC_SIZE) + 1;
while (myhtml_tag_static_list_index[idx].ctx)
{
if(myhtml_tag_static_list_index[idx].ctx->name_length == length) {
- if(myhtml_strncasecmp(myhtml_tag_static_list_index[idx].ctx->name, name, length) == 0)
+ if(mycore_strncasecmp(myhtml_tag_static_list_index[idx].ctx->name, name, length) == 0)
return myhtml_tag_static_list_index[idx].ctx;
if(myhtml_tag_static_list_index[idx].next)
diff --git a/source/myhtml/thread.c b/source/myhtml/thread.c
deleted file mode 100644
index 94e277a..0000000
--- a/source/myhtml/thread.c
+++ /dev/null
@@ -1,1185 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#include "myhtml/thread.h"
-
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
-
-#if defined(IS_OS_WINDOWS)
-/***********************************************************************************
- *
- * For Windows
- *
- ***********************************************************************************/
-myhtml_status_t myhtml_thread_create(mythread_t *mythread, mythread_list_t *thr, void *work_func)
-{
- thr->pth = CreateThread(NULL, // default security attributes
- 0, // use default stack size
- work_func, // thread function name
- &thr->data, // argument to thread function
- 0, // use default creation flags
- NULL); // returns the thread identifier
-
-
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_thread_join(mythread_t *mythread, mythread_list_t *thr)
-{
- WaitForSingleObject(thr->pth, INFINITE);
-
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_thread_cancel(mythread_t *mythread, mythread_list_t *thr)
-{
- TerminateThread(thr->pth, 0);
-
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_thread_attr_init(mythread_t *mythread)
-{
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_thread_attr_clean(mythread_t *mythread)
-{
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_thread_attr_destroy(mythread_t *mythread)
-{
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_hread_mutex_create(mythread_t *mythread, mythread_context_t *ctx, size_t prefix_id)
-{
- ctx->mutex = CreateSemaphore(NULL, 0, 1, NULL);
-
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_hread_mutex_post(mythread_t *mythread, mythread_context_t *ctx)
-{
- ReleaseSemaphore(ctx->mutex, 1, NULL);
-
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_hread_mutex_wait(mythread_t *mythread, mythread_context_t *ctx)
-{
- WaitForSingleObject(ctx->mutex, INFINITE);
-
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_hread_mutex_try_wait(mythread_t *mythread, mythread_context_t *ctx)
-{
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_hread_mutex_close(mythread_t *mythread, mythread_context_t *ctx)
-{
- CloseHandle(ctx->mutex);
-
- return MyHTML_STATUS_OK;
-}
-
-void myhtml_thread_nanosleep(const struct timespec *tomeout)
-{
- Sleep(0);
-}
-
-#else /* defined(IS_OS_WINDOWS) */
-/***********************************************************************************
- *
- * For all unix system. POSIX pthread
- *
- ***********************************************************************************/
-
-myhtml_status_t myhtml_thread_create(mythread_t *mythread, mythread_list_t *thr, void *work_func)
-{
- pthread_create(&thr->pth, mythread->attr,
- work_func,
- (void*)(&thr->data));
-
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_thread_join(mythread_t *mythread, mythread_list_t *thr)
-{
- pthread_join(thr->pth, NULL);
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_thread_cancel(mythread_t *mythread, mythread_list_t *thr)
-{
- pthread_cancel(thr->pth);
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_thread_attr_init(mythread_t *mythread)
-{
- mythread->attr = (pthread_attr_t*)myhtml_calloc(1, sizeof(pthread_attr_t));
-
- if(mythread->attr == NULL)
- return MyHTML_STATUS_THREAD_ERROR_ATTR_MALLOC;
-
- mythread->sys_last_error = pthread_attr_init(mythread->attr);
- if(mythread->sys_last_error)
- return MyHTML_STATUS_THREAD_ERROR_ATTR_INIT;
-
- mythread->sys_last_error = pthread_attr_setdetachstate(mythread->attr, PTHREAD_CREATE_JOINABLE);
- if(mythread->sys_last_error)
- return MyHTML_STATUS_THREAD_ERROR_ATTR_SET;
-
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_thread_attr_clean(mythread_t *mythread)
-{
- mythread->attr = NULL;
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_thread_attr_destroy(mythread_t *mythread)
-{
- if(mythread->attr) {
- mythread->sys_last_error = pthread_attr_destroy(mythread->attr);
-
- myhtml_free(mythread->attr);
- mythread->attr = NULL;
-
- if(mythread->sys_last_error)
- return MyHTML_STATUS_THREAD_ERROR_ATTR_DESTROY;
- }
-
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_hread_mutex_create(mythread_t *mythread, mythread_context_t *ctx, size_t prefix_id)
-{
- ctx->mutex = (pthread_mutex_t*)myhtml_calloc(1, sizeof(pthread_mutex_t));
-
- if(ctx->mutex == NULL)
- return MyHTML_STATUS_THREAD_ERROR_MUTEX_MALLOC;
-
- if(pthread_mutex_init(ctx->mutex, NULL)) {
- mythread->sys_last_error = errno;
- return MyHTML_STATUS_THREAD_ERROR_MUTEX_INIT;
- }
-
- if(pthread_mutex_lock(ctx->mutex)) {
- mythread->sys_last_error = errno;
- return MyHTML_STATUS_THREAD_ERROR_MUTEX_LOCK;
- }
-
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_hread_mutex_post(mythread_t *mythread, mythread_context_t *ctx)
-{
- if(pthread_mutex_unlock(ctx->mutex)) {
- mythread->sys_last_error = errno;
- return MyHTML_STATUS_THREAD_ERROR_MUTEX_UNLOCK;
- }
-
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_hread_mutex_wait(mythread_t *mythread, mythread_context_t *ctx)
-{
- if(pthread_mutex_lock(ctx->mutex)) {
- mythread->sys_last_error = errno;
- return MyHTML_STATUS_THREAD_ERROR_MUTEX_LOCK;
- }
-
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_hread_mutex_try_wait(mythread_t *mythread, mythread_context_t *ctx)
-{
- if(pthread_mutex_trylock(ctx->mutex)) {
- mythread->sys_last_error = errno;
- return MyHTML_STATUS_THREAD_ERROR_MUTEX_LOCK;
- }
-
- return MyHTML_STATUS_OK;
-}
-
-myhtml_status_t myhtml_hread_mutex_close(mythread_t *mythread, mythread_context_t *ctx)
-{
- if(ctx->mutex) {
- pthread_mutex_destroy(ctx->mutex);
- myhtml_free(ctx->mutex);
-
- ctx->mutex = NULL;
- }
-
- return MyHTML_STATUS_OK;
-}
-
-void myhtml_thread_nanosleep(const struct timespec *tomeout)
-{
- nanosleep(tomeout, NULL);
-}
-
-#endif /* !defined(IS_OS_WINDOWS) */
-#endif /* MyHTML_BUILD_WITHOUT_THREADS */
-
-/*
- *
- * MyTHREAD logic
- *
- */
-
-mythread_t * mythread_create(void)
-{
- return myhtml_calloc(1, sizeof(mythread_t));
-}
-
-#ifdef MyHTML_BUILD_WITHOUT_THREADS
-
-myhtml_status_t mythread_init(mythread_t *mythread, const char *sem_prefix, size_t thread_count)
-{
- return MyHTML_STATUS_OK;
-}
-
-#else /* MyHTML_BUILD_WITHOUT_THREADS */
-
-myhtml_status_t mythread_init(mythread_t *mythread, const char *sem_prefix, size_t thread_count)
-{
- mythread->batch_count = 0;
- mythread->batch_first_id = 0;
- mythread->stream_opt = MyTHREAD_OPT_STOP;
- mythread->batch_opt = MyTHREAD_OPT_STOP;
-
- if(thread_count)
- {
- myhtml_status_t status = myhtml_thread_attr_init(mythread);
- if(status)
- return status;
-
- mythread->pth_list_root = 1;
- mythread->pth_list_length = 1;
- mythread->pth_list_size = thread_count + 1;
- mythread->pth_list = (mythread_list_t*)myhtml_calloc(mythread->pth_list_size, sizeof(mythread_list_t));
-
- if(mythread->pth_list == NULL)
- return MyHTML_STATUS_THREAD_ERROR_LIST_INIT;
- }
- else {
- myhtml_thread_attr_clean(mythread);
-
- mythread->sys_last_error = 0;
- mythread->pth_list_root = 1;
- mythread->pth_list_length = 1;
- mythread->pth_list_size = 0;
- mythread->pth_list = NULL;
- }
-
- if(sem_prefix)
- {
- mythread->sem_prefix_length = strlen(sem_prefix);
-
- if(mythread->sem_prefix_length) {
- mythread->sem_prefix = myhtml_calloc((mythread->sem_prefix_length + 1), sizeof(char));
-
- if(mythread->sem_prefix == NULL) {
- mythread->sem_prefix_length = 0;
- return MyHTML_STATUS_THREAD_ERROR_SEM_PREFIX_MALLOC;
- }
-
- myhtml_string_raw_copy(mythread->sem_prefix, sem_prefix, mythread->sem_prefix_length);
- }
- }
-
- return MyHTML_STATUS_OK;
-}
-
-#endif /* MyHTML_BUILD_WITHOUT_THREADS */
-
-void mythread_clean(mythread_t *mythread)
-{
- mythread->sys_last_error = 0;
-}
-
-mythread_t * mythread_destroy(mythread_t *mythread, mythread_callback_before_join_f before_join, bool self_destroy)
-{
- if(mythread == NULL)
- return NULL;
-
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
-
- myhtml_thread_attr_destroy(mythread);
-
- if(mythread->pth_list) {
- mythread_resume_all(mythread);
- mythread_stream_quit_all(mythread);
- mythread_batch_quit_all(mythread);
-
- if(before_join)
- before_join(mythread);
-
- for (size_t i = mythread->pth_list_root; i < mythread->pth_list_length; i++)
- {
- myhtml_thread_join(mythread, &mythread->pth_list[i]);
- }
-
- myhtml_free(mythread->pth_list);
- mythread->pth_list = NULL;
- }
-
- if(mythread->sem_prefix) {
- myhtml_free(mythread->sem_prefix);
-
- mythread->sem_prefix = NULL;
- mythread->sem_prefix_length = 0;
- }
-
-#endif /* MyHTML_BUILD_WITHOUT_THREADS */
-
- if(self_destroy) {
- myhtml_free(mythread);
- return NULL;
- }
-
- return mythread;
-}
-
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
-
-mythread_id_t _myhread_create_stream_raw(mythread_t *mythread, mythread_work_f work_func, void *process_func, mythread_thread_opt_t opt, myhtml_status_t *status, size_t total_count)
-{
- mythread->sys_last_error = 0;
-
- if(status)
- *status = MyHTML_STATUS_OK;
-
- if(mythread->pth_list_length >= mythread->pth_list_size) {
- if(status)
- *status = MyHTML_STATUS_THREAD_ERROR_NO_SLOTS;
-
- return 0;
- }
-
- mythread_list_t *thr = &mythread->pth_list[mythread->pth_list_length];
-
- thr->data.mythread = mythread;
- thr->data.func = work_func;
- thr->data.id = mythread->pth_list_length;
- thr->data.t_count = total_count;
- thr->data.opt = opt;
- thr->data.status = 0;
-
- myhtml_status_t m_status = myhtml_hread_mutex_create(mythread, &thr->data, 0);
-
- if(m_status != MyHTML_STATUS_OK && status) {
- *status = m_status;
- return 0;
- }
-
- m_status = myhtml_thread_create(mythread, thr, process_func);
- if(m_status != MyHTML_STATUS_OK)
- return 0;
-
- mythread->pth_list_length++;
- return thr->data.id;
-}
-
-mythread_id_t myhread_create_stream(mythread_t *mythread, mythread_process_f process_func, mythread_work_f work_func, mythread_thread_opt_t opt, myhtml_status_t *status)
-{
- return _myhread_create_stream_raw(mythread, work_func, process_func, opt, status, 0);
-}
-
-mythread_id_t myhread_create_batch(mythread_t *mythread, mythread_process_f process_func, mythread_work_f work_func, mythread_thread_opt_t opt, myhtml_status_t *status, size_t count)
-{
- if(mythread->batch_count) {
- *status = MyHTML_STATUS_THREAD_ERROR_BATCH_INIT;
- return 0;
- }
- else if((mythread->pth_list_length + count) > mythread->pth_list_size) {
- if(status)
- *status = MyHTML_STATUS_THREAD_ERROR_NO_SLOTS;
-
- return 0;
- }
-
- if(count == 0)
- count = 1;
-
- mythread->batch_first_id = 0;
- mythread->batch_count = count;
-
- size_t start = mythread->pth_list_length;
- *status = MyHTML_STATUS_OK;
-
- bool init_first = false;
-
- for (size_t i = 0; i < count; i++)
- {
- mythread_id_t curr_id = _myhread_create_stream_raw(mythread, work_func, process_func, opt, status, i);
-
- if(init_first == false) {
- mythread->batch_first_id = curr_id;
- init_first = true;
- }
-
- if(*status)
- {
- for (size_t n = start; n < (start + i); n++)
- {
- mythread_list_t *thr = &mythread->pth_list[n];
-
- myhtml_thread_cancel(mythread, thr);
-
- myhtml_hread_mutex_post(mythread, &thr->data);
- myhtml_hread_mutex_close(mythread, &thr->data);
- }
-
- mythread->batch_first_id = 0;
- mythread->batch_count = 0;
-
- break;
- }
- }
-
- return mythread->batch_first_id;
-}
-
-#endif /* MyHTML_BUILD_WITHOUT_THREADS */
-
-// mythread queue functions
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
-mythread_queue_list_t * mythread_queue_list_create(myhtml_status_t *status)
-{
- if(status)
- *status = MyHTML_STATUS_OK;
-
- mythread_queue_list_t* queue_list = (mythread_queue_list_t*)myhtml_calloc(1, sizeof(mythread_queue_list_t));
-
- if(queue_list == NULL) {
- if(status)
- *status = MyHTML_STATUS_THREAD_ERROR_QUEUE_MALLOC;
- return NULL;
- }
-
- return queue_list;
-}
-
-void mythread_queue_list_destroy(mythread_queue_list_t* queue_list)
-{
- if(queue_list == NULL)
- return;
-
- myhtml_free(queue_list);
-}
-
-size_t mythread_queue_list_get_count(mythread_queue_list_t* queue_list)
-{
- return queue_list->count;
-}
-
-mythread_queue_list_entry_t * mythread_queue_list_entry_push(mythread_t *mythread, mythread_queue_t *queue, myhtml_status_t *status)
-{
- mythread_queue_list_t *queue_list = (mythread_queue_list_t*)mythread->context;
-
- if(status)
- *status = MyHTML_STATUS_OK;
-
- mythread_queue_list_entry_t* entry = (mythread_queue_list_entry_t*)myhtml_calloc(1, sizeof(mythread_queue_list_entry_t));
-
- if(entry == NULL) {
- if(status)
- *status = MyHTML_STATUS_THREAD_ERROR_QUEUE_MALLOC;
- return NULL;
- }
-
- entry->thread_param = (mythread_queue_thread_param_t*)myhtml_calloc(mythread->pth_list_size, sizeof(mythread_queue_thread_param_t));
-
- if(entry->thread_param == NULL) {
- myhtml_free(entry);
-
- if(status)
- *status = MyHTML_STATUS_THREAD_ERROR_QUEUE_MALLOC;
- return NULL;
- }
-
- size_t idx;
- for (idx = mythread->batch_first_id; idx < (mythread->batch_first_id + mythread->batch_count); idx++) {
- entry->thread_param[idx].use = mythread->pth_list[idx].data.t_count;
- }
-
- entry->queue = queue;
-
- if(mythread->stream_opt == MyTHREAD_OPT_UNDEF) {
- mythread_suspend_all(mythread);
- }
- else if(mythread->stream_opt == MyTHREAD_OPT_STOP) {
- mythread_stop_all(mythread);
- }
-
- if(queue_list->first) {
- queue_list->last->next = entry;
- entry->prev = queue_list->last;
-
- queue_list->last = entry;
- }
- else {
- queue_list->first = entry;
- queue_list->last = entry;
- }
-
- queue_list->count++;
-
- if(mythread->stream_opt != MyTHREAD_OPT_STOP)
- mythread_resume_all(mythread);
-
- return entry;
-}
-
-mythread_queue_list_entry_t * mythread_queue_list_entry_delete(mythread_t *mythread, mythread_queue_list_entry_t *entry, bool destroy_queue)
-{
- mythread_queue_list_t *queue_list = (mythread_queue_list_t*)mythread->context;
-
- mythread_queue_list_entry_t *next = entry->next;
- mythread_queue_list_entry_t *prev = entry->prev;
-
- if(mythread->stream_opt == MyTHREAD_OPT_UNDEF) {
- mythread_suspend_all(mythread);
- }
- else if(mythread->stream_opt == MyTHREAD_OPT_STOP) {
- mythread_stop_all(mythread);
- }
-
- if(prev)
- prev->next = next;
-
- if(next)
- next->prev = prev;
-
- if(queue_list->first == entry)
- queue_list->first = next;
-
- if(queue_list->last == entry)
- queue_list->last = prev;
-
- if(mythread->stream_opt != MyTHREAD_OPT_STOP)
- mythread_resume_all(mythread);
-
- if(destroy_queue && entry->queue)
- mythread_queue_destroy(entry->queue);
-
- if(entry->thread_param)
- myhtml_free(entry->thread_param);
-
- myhtml_free(entry);
-
- queue_list->count--;
-
- return NULL;
-}
-
-void mythread_queue_list_entry_clean(mythread_t *mythread, mythread_queue_list_entry_t *entry)
-{
- if(entry == NULL)
- return;
-
- mythread_queue_clean(entry->queue);
-
- size_t idx;
- for (idx = mythread->pth_list_root; idx < mythread->batch_first_id; idx++) {
- entry->thread_param[idx].use = 0;
- }
-
- for (idx = mythread->batch_first_id; idx < (mythread->batch_first_id + mythread->batch_count); idx++) {
- entry->thread_param[idx].use = mythread->pth_list[idx].data.t_count;
- }
-}
-
-void mythread_queue_list_entry_wait_for_done(mythread_t *mythread, mythread_queue_list_entry_t *entry)
-{
- if(entry == NULL)
- return;
-
- size_t idx;
- const struct timespec tomeout = {0, 0};
-
- for (idx = mythread->pth_list_root; idx < mythread->pth_list_size; idx++) {
- mythread_queue_thread_param_t *thread_param = &entry->thread_param[ idx ];
- while(thread_param->use < entry->queue->nodes_uses) {
- myhtml_thread_nanosleep(&tomeout);
- }
- }
-}
-
-#endif /* MyHTML_BUILD_WITHOUT_THREADS */
-
-mythread_queue_t * mythread_queue_create(size_t size, myhtml_status_t *status)
-{
- if(status)
- *status = MyHTML_STATUS_OK;
-
- if(size < 4096)
- size = 4096;
-
- mythread_queue_t* queue = (mythread_queue_t*)myhtml_malloc(sizeof(mythread_queue_t));
-
- if(queue == NULL) {
- if(status)
- *status = MyHTML_STATUS_THREAD_ERROR_QUEUE_MALLOC;
- return NULL;
- }
-
- queue->nodes_pos_size = 512;
- queue->nodes_size = size;
- queue->nodes = (mythread_queue_node_t**)myhtml_calloc(queue->nodes_pos_size, sizeof(mythread_queue_node_t*));
-
- if(queue->nodes == NULL) {
- myhtml_free(queue);
-
- if(status)
- *status = MyHTML_STATUS_THREAD_ERROR_QUEUE_NODES_MALLOC;
- return NULL;
- }
-
- mythread_queue_clean(queue);
-
- queue->nodes[queue->nodes_pos] = (mythread_queue_node_t*)myhtml_malloc(sizeof(mythread_queue_node_t) * queue->nodes_size);
-
- if(queue->nodes[queue->nodes_pos] == NULL) {
- myhtml_free(queue->nodes);
- myhtml_free(queue);
-
- if(status)
- *status = MyHTML_STATUS_THREAD_ERROR_QUEUE_NODE_MALLOC;
- return NULL;
- }
-
- return queue;
-}
-
-void mythread_queue_clean(mythread_queue_t* queue)
-{
- queue->nodes_length = 0;
- queue->nodes_pos = 0;
- queue->nodes_root = 0;
- queue->nodes_uses = 0;
-
- if(queue->nodes[queue->nodes_pos])
- mythread_queue_node_clean(&queue->nodes[queue->nodes_pos][queue->nodes_length]);
-}
-
-mythread_queue_t * mythread_queue_destroy(mythread_queue_t* queue)
-{
- if(queue == NULL)
- return NULL;
-
- if(queue->nodes) {
- for (size_t i = 0; i <= queue->nodes_pos; i++) {
- myhtml_free(queue->nodes[i]);
- }
-
- myhtml_free(queue->nodes);
- }
-
- myhtml_free(queue);
-
- return NULL;
-}
-
-void mythread_queue_node_clean(mythread_queue_node_t* qnode)
-{
- memset(qnode, 0, sizeof(mythread_queue_node_t));
-}
-
-mythread_queue_node_t * mythread_queue_get_prev_node(mythread_queue_node_t* qnode)
-{
- return qnode->prev;
-}
-
-mythread_queue_node_t * mythread_queue_get_current_node(mythread_queue_t* queue)
-{
- return &queue->nodes[queue->nodes_pos][queue->nodes_length];
-}
-
-mythread_queue_node_t * mythread_queue_get_first_node(mythread_queue_t* queue)
-{
- return &queue->nodes[0][0];
-}
-
-size_t mythread_queue_count_used_node(mythread_queue_t* queue)
-{
- return queue->nodes_uses;
-}
-
-mythread_queue_node_t * mythread_queue_node_malloc(mythread_t *mythread, mythread_queue_t* queue, myhtml_status_t *status)
-{
- queue->nodes_length++;
-
- if(queue->nodes_length >= queue->nodes_size)
- {
- queue->nodes_pos++;
-
- if(queue->nodes_pos >= queue->nodes_pos_size)
- {
- mythread_queue_wait_all_for_done(mythread);
-
- queue->nodes_pos_size <<= 1;
- mythread_queue_node_t** tmp = myhtml_realloc(queue->nodes, sizeof(mythread_queue_node_t*) * queue->nodes_pos_size);
-
- if(tmp) {
- memset(&tmp[queue->nodes_pos], 0, sizeof(mythread_queue_node_t*) * (queue->nodes_pos_size - queue->nodes_pos));
-
- queue->nodes = tmp;
- }
- else {
- if(status)
- *status = MyHTML_STATUS_THREAD_ERROR_QUEUE_NODES_MALLOC;
-
- return NULL;
- }
- }
-
- if(queue->nodes[queue->nodes_pos] == NULL) {
- queue->nodes[queue->nodes_pos] = (mythread_queue_node_t*)myhtml_malloc(sizeof(mythread_queue_node_t) * queue->nodes_size);
-
- if(queue->nodes[queue->nodes_pos] == NULL) {
- if(status)
- *status = MyHTML_STATUS_THREAD_ERROR_QUEUE_NODE_MALLOC;
-
- return NULL;
- }
- }
-
- queue->nodes_length = 0;
- }
-
- queue->nodes_uses++;
-
- return &queue->nodes[queue->nodes_pos][queue->nodes_length];
-}
-
-mythread_queue_node_t * mythread_queue_node_malloc_limit(mythread_t *mythread, mythread_queue_t* queue, size_t limit, myhtml_status_t *status)
-{
- queue->nodes_length++;
-
- if(queue->nodes_uses >= limit) {
- queue->nodes_uses++;
- mythread_queue_wait_all_for_done(mythread);
-
- queue->nodes_length = 0;
- queue->nodes_pos = 0;
- queue->nodes_root = 0;
- queue->nodes_uses = 0;
- }
- else if(queue->nodes_length >= queue->nodes_size)
- {
- queue->nodes_pos++;
-
- if(queue->nodes_pos >= queue->nodes_pos_size)
- {
- mythread_queue_wait_all_for_done(mythread);
-
- queue->nodes_pos_size <<= 1;
- mythread_queue_node_t** tmp = myhtml_realloc(queue->nodes, sizeof(mythread_queue_node_t*) * queue->nodes_pos_size);
-
- if(tmp) {
- memset(&tmp[queue->nodes_pos], 0, sizeof(mythread_queue_node_t*) * (queue->nodes_pos_size - queue->nodes_pos));
-
- queue->nodes = tmp;
- }
- else {
- if(status)
- *status = MyHTML_STATUS_THREAD_ERROR_QUEUE_NODES_MALLOC;
-
- return NULL;
- }
- }
-
- if(queue->nodes[queue->nodes_pos] == NULL) {
- queue->nodes[queue->nodes_pos] = (mythread_queue_node_t*)myhtml_malloc(sizeof(mythread_queue_node_t) * queue->nodes_size);
-
- if(queue->nodes[queue->nodes_pos] == NULL) {
- if(status)
- *status = MyHTML_STATUS_THREAD_ERROR_QUEUE_NODE_MALLOC;
-
- return NULL;
- }
- }
-
- queue->nodes_length = 0;
- }
-
- queue->nodes_uses++;
-
- return &queue->nodes[queue->nodes_pos][queue->nodes_length];
-}
-
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
-
-mythread_queue_node_t * mythread_queue_node_malloc_round(mythread_t *mythread, mythread_queue_list_entry_t *entry, myhtml_status_t *status)
-{
- mythread_queue_t* queue = entry->queue;
-
- queue->nodes_length++;
-
- if(queue->nodes_length >= queue->nodes_size) {
- queue->nodes_uses++;
-
- mythread_queue_list_entry_wait_for_done(mythread, entry);
- mythread_queue_list_entry_clean(mythread, entry);
- }
- else
- queue->nodes_uses++;
-
- return &queue->nodes[queue->nodes_pos][queue->nodes_length];
-}
-
-void mythread_queue_wait_all_for_done(mythread_t *mythread)
-{
- const struct timespec tomeout = {0, 0};
-
- mythread_queue_list_t *queue_list = (mythread_queue_list_t*)mythread->context;
- mythread_queue_list_entry_t *entry = queue_list->first;
-
- while(entry)
- {
- for (size_t idx = mythread->pth_list_root; idx < mythread->pth_list_size; idx++) {
- while(entry->thread_param[idx].use < entry->queue->nodes_uses) {
- myhtml_thread_nanosleep(&tomeout);
- }
- }
-
- entry = entry->next;
- }
-}
-
-#else
-
-void mythread_queue_wait_all_for_done(mythread_t *mythread) {}
-
-#endif /* MyHTML_BUILD_WITHOUT_THREADS */
-
-#ifdef MyHTML_BUILD_WITHOUT_THREADS
-
-void mythread_stream_quit_all(mythread_t *mythread) {}
-void mythread_batch_quit_all(mythread_t *mythread) {}
-void mythread_stream_stop_all(mythread_t *mythread) {}
-void mythread_batch_stop_all(mythread_t *mythread) {}
-void mythread_stop_all(mythread_t *mythread) {}
-void mythread_resume_all(mythread_t *mythread) {}
-void mythread_suspend_all(mythread_t *mythread) {}
-
-#else /* MyHTML_BUILD_WITHOUT_THREADS */
-
-// mythread functions
-void mythread_stream_quit_all(mythread_t *mythread)
-{
- mythread->stream_opt = MyTHREAD_OPT_QUIT;
-}
-
-void mythread_batch_quit_all(mythread_t *mythread)
-{
- mythread->batch_opt = MyTHREAD_OPT_QUIT;
-}
-
-void mythread_stream_stop_all(mythread_t *mythread)
-{
- if(mythread->stream_opt != MyTHREAD_OPT_STOP)
- mythread->stream_opt = MyTHREAD_OPT_STOP;
-
- size_t idx;
- const struct timespec tomeout = {0, 0};
-
- for (idx = mythread->pth_list_root; idx < mythread->batch_first_id; idx++) {
- while(mythread->pth_list[idx].data.opt != MyTHREAD_OPT_STOP) {
- myhtml_thread_nanosleep(&tomeout);
- }
- }
-}
-
-void mythread_batch_stop_all(mythread_t *mythread)
-{
- if(mythread->batch_opt != MyTHREAD_OPT_STOP)
- mythread->batch_opt = MyTHREAD_OPT_STOP;
-
- size_t idx;
- const struct timespec tomeout = {0, 0};
-
- for (idx = mythread->batch_first_id; idx < (mythread->batch_first_id + mythread->batch_count); idx++) {
- while(mythread->pth_list[idx].data.opt != MyTHREAD_OPT_STOP) {
- myhtml_thread_nanosleep(&tomeout);
- }
- }
-}
-
-void mythread_stop_all(mythread_t *mythread)
-{
- mythread_stream_stop_all(mythread);
- mythread_batch_stop_all(mythread);
-}
-
-void mythread_resume_all(mythread_t *mythread)
-{
- if(mythread->stream_opt == MyTHREAD_OPT_UNDEF &&
- mythread->batch_opt == MyTHREAD_OPT_UNDEF)
- return;
-
- if(mythread->stream_opt == MyTHREAD_OPT_WAIT ||
- mythread->batch_opt == MyTHREAD_OPT_WAIT)
- {
- mythread->stream_opt = MyTHREAD_OPT_UNDEF;
- mythread->batch_opt = MyTHREAD_OPT_UNDEF;
- }
- else {
- mythread->stream_opt = MyTHREAD_OPT_UNDEF;
- mythread->batch_opt = MyTHREAD_OPT_UNDEF;
-
- for (size_t idx = mythread->pth_list_root; idx < mythread->pth_list_size; idx++) {
- myhtml_hread_mutex_post(mythread, &mythread->pth_list[idx].data);
- }
- }
-}
-
-void mythread_suspend_all(mythread_t *mythread)
-{
- if(mythread->stream_opt != MyTHREAD_OPT_WAIT)
- mythread->stream_opt = MyTHREAD_OPT_WAIT;
-
- if(mythread->batch_opt != MyTHREAD_OPT_WAIT)
- mythread->batch_opt = MyTHREAD_OPT_WAIT;
-
- const struct timespec tomeout = {0, 0};
-
- for (size_t idx = mythread->pth_list_root; idx < mythread->pth_list_size; idx++) {
- myhtml_hread_mutex_try_wait(mythread, &mythread->pth_list[idx].data);
-
- while(mythread->pth_list[idx].data.opt != MyTHREAD_OPT_WAIT) {
- myhtml_thread_nanosleep(&tomeout);
- }
- }
-}
-
-unsigned int mythread_check_status(mythread_t *mythread)
-{
- for (size_t idx = mythread->pth_list_root; idx < mythread->pth_list_size; idx++) {
- if(mythread->pth_list[idx].data.status) {
- return mythread->pth_list[idx].data.status;
- }
- }
-
- return MyHTML_STATUS_OK;
-}
-
-bool mythread_function_see_for_all_done(mythread_queue_list_t *queue_list, size_t thread_id)
-{
- size_t done_count = 0;
-
- mythread_queue_list_entry_t *entry = queue_list->first;
- while(entry)
- {
- if(entry->thread_param[ thread_id ].use >= entry->queue->nodes_uses) {
- done_count++;
- entry = entry->next;
- }
- else
- break;
- }
-
- return done_count == queue_list->count;
-}
-
-bool mythread_function_see_opt(mythread_context_t *ctx, volatile mythread_thread_opt_t opt, size_t done_count, const struct timespec *timeout)
-{
- mythread_t * mythread = ctx->mythread;
- mythread_queue_list_t *queue_list = (mythread_queue_list_t*)mythread->context;
-
- if(done_count != queue_list->count)
- return false;
-
- if(opt & MyTHREAD_OPT_STOP)
- {
- if(mythread_function_see_for_all_done(queue_list, ctx->id))
- {
- ctx->opt = MyTHREAD_OPT_STOP;
- myhtml_hread_mutex_wait(mythread, ctx);
- ctx->opt = MyTHREAD_OPT_UNDEF;
-
- return false;
- }
- }
- else if(opt & MyTHREAD_OPT_QUIT)
- {
- if(mythread_function_see_for_all_done(queue_list, ctx->id))
- {
- myhtml_hread_mutex_close(mythread, ctx);
- ctx->opt = MyTHREAD_OPT_QUIT;
- return true;
- }
- }
-
- myhtml_thread_nanosleep(timeout);
-
- return false;
-}
-
-void mythread_function_queue_batch(void *arg)
-{
- mythread_context_t *ctx = (mythread_context_t*)arg;
- mythread_t * mythread = ctx->mythread;
- mythread_queue_list_t *queue_list = (mythread_queue_list_t*)mythread->context;
-
- const struct timespec timeout = {0, 0};
- myhtml_hread_mutex_wait(mythread, ctx);
-
- do {
- if(mythread->batch_opt & MyTHREAD_OPT_WAIT) {
- ctx->opt = MyTHREAD_OPT_WAIT;
-
- while (mythread->batch_opt & MyTHREAD_OPT_WAIT) {
- myhtml_thread_nanosleep(&timeout);
- }
-
- ctx->opt = MyTHREAD_OPT_UNDEF;
- }
-
- mythread_queue_list_entry_t *entry = queue_list->first;
- size_t done_count = 0;
-
- while(entry)
- {
- mythread_queue_thread_param_t *thread_param = &entry->thread_param[ ctx->id ];
-
- if(thread_param->use < entry->queue->nodes_uses)
- {
- size_t pos = thread_param->use / entry->queue->nodes_size;
- size_t len = thread_param->use % entry->queue->nodes_size;
-
- mythread_queue_node_t *qnode = &entry->queue->nodes[pos][len];
-
- if((qnode->tree->flags & MyHTML_TREE_FLAGS_SINGLE_MODE) == 0)
- ctx->func(ctx->id, (void*)qnode);
-
- thread_param->use += mythread->batch_count;
- }
- else
- done_count++;
-
- entry = entry->next;
- }
-
- if(done_count == queue_list->count &&
- mythread_function_see_opt(ctx, mythread->batch_opt, done_count, &timeout))
- break;
- }
- while (1);
-}
-
-void mythread_function_queue_stream(void *arg)
-{
- mythread_context_t *ctx = (mythread_context_t*)arg;
- mythread_t * mythread = ctx->mythread;
- mythread_queue_list_t *queue_list = (mythread_queue_list_t*)mythread->context;
-
- const struct timespec timeout = {0, 0};
- myhtml_hread_mutex_wait(mythread, ctx);
-
- do {
- if(mythread->stream_opt & MyTHREAD_OPT_WAIT) {
- ctx->opt = MyTHREAD_OPT_WAIT;
-
- while (mythread->stream_opt & MyTHREAD_OPT_WAIT) {
- myhtml_thread_nanosleep(&timeout);
- }
-
- ctx->opt = MyTHREAD_OPT_UNDEF;
- }
-
- mythread_queue_list_entry_t *entry = queue_list->first;
- size_t done_count = 0;
-
- while(entry)
- {
- mythread_queue_thread_param_t *thread_param = &entry->thread_param[ ctx->id ];
-
- if(thread_param->use < entry->queue->nodes_uses)
- {
- size_t pos = thread_param->use / entry->queue->nodes_size;
- size_t len = thread_param->use % entry->queue->nodes_size;
-
- mythread_queue_node_t *qnode = &entry->queue->nodes[pos][len];
-
- if((qnode->tree->flags & MyHTML_TREE_FLAGS_SINGLE_MODE) == 0)
- ctx->func(ctx->id, (void*)qnode);
-
- thread_param->use++;
- }
- else
- done_count++;
-
- entry = entry->next;
- }
-
- if(done_count == queue_list->count &&
- mythread_function_see_opt(ctx, mythread->stream_opt, done_count, &timeout))
- break;
- }
- while (1);
-}
-
-void mythread_function(void *arg)
-{
- mythread_context_t *ctx = (mythread_context_t*)arg;
- mythread_t * mythread = ctx->mythread;
-
- myhtml_hread_mutex_wait(mythread, ctx);
-
- do {
- if(mythread->stream_opt & MyTHREAD_OPT_STOP || ctx->opt & MyTHREAD_OPT_STOP)
- {
- ctx->opt |= MyTHREAD_OPT_DONE;
- myhtml_hread_mutex_wait(mythread, ctx);
-
- if(mythread->stream_opt & MyTHREAD_OPT_QUIT || ctx->opt & MyTHREAD_OPT_QUIT)
- {
- myhtml_hread_mutex_close(mythread, ctx);
- ctx->opt = MyTHREAD_OPT_QUIT;
- break;
- }
-
- ctx->opt = MyTHREAD_OPT_UNDEF;
- }
- else if(mythread->stream_opt & MyTHREAD_OPT_QUIT || ctx->opt & MyTHREAD_OPT_QUIT)
- {
- myhtml_hread_mutex_close(mythread, ctx);
- ctx->opt = MyTHREAD_OPT_QUIT;
- break;
- }
-
- ctx->func(ctx->id, ctx);
- }
- while (1);
-}
-
-#endif /* MyHTML_BUILD_WITHOUT_THREADS */
-
-
diff --git a/source/myhtml/thread.h b/source/myhtml/thread.h
deleted file mode 100644
index 208f6df..0000000
--- a/source/myhtml/thread.h
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#ifndef MyHTML_THREAD_H
-#define MyHTML_THREAD_H
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "myhtml/myosi.h"
-
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
-
-#if !defined(IS_OS_WINDOWS)
-# include <pthread.h>
-# include <semaphore.h>
-#endif
-
-#include <time.h>
-#include <sys/stat.h>
-
-#include <fcntl.h>
-#include <errno.h>
-
-#include "myhtml/myhtml.h"
-#include "myhtml/tree.h"
-#include "myhtml/mystring.h"
-
-#endif /* MyHTML_BUILD_WITHOUT_THREADS */
-
-#define MyTHREAD_SEM_NAME "myhtml"
-
-/* functions */
-typedef void (*mythread_callback_before_join_f)(mythread_t* mythread);
-typedef void (*mythread_process_f)(void* arg);
-typedef void (*mythread_work_f)(mythread_id_t thread_id, void* arg);
-
-#ifdef MyHTML_BUILD_WITHOUT_THREADS
-
-struct mythread {
- int sys_last_error;
-};
-
-#else /* MyHTML_BUILD_WITHOUT_THREADS */
-
-void mythread_function_queue_stream(void *arg);
-void mythread_function_queue_batch(void *arg);
-void mythread_function(void *arg);
-
-// thread
-struct mythread_context {
- mythread_id_t id;
-
-#if defined(IS_OS_WINDOWS)
- HANDLE mutex;
-#else
- pthread_mutex_t *mutex;
-#endif
-
- size_t sem_name_size;
-
- mythread_work_f func;
-
- volatile size_t t_count;
- volatile mythread_thread_opt_t opt;
-
- mythread_t *mythread;
- unsigned int status;
-};
-
-struct mythread_list {
-#if defined(IS_OS_WINDOWS)
- HANDLE pth;
-#else
- pthread_t pth;
-#endif
- mythread_context_t data;
- mythread_process_f process_func;
-};
-
-struct mythread_workers_list {
- mythread_list_t *list;
- size_t count;
-};
-
-struct mythread {
- mythread_list_t *pth_list;
- size_t pth_list_length;
- size_t pth_list_size;
- size_t pth_list_root;
-
- void *context;
-
- char *sem_prefix;
- size_t sem_prefix_length;
-
-#if !defined(IS_OS_WINDOWS)
- pthread_attr_t *attr;
-#endif
-
- int sys_last_error;
-
- mythread_id_t batch_first_id;
- mythread_id_t batch_count;
-
- volatile mythread_thread_opt_t stream_opt;
- volatile mythread_thread_opt_t batch_opt;
-};
-
-mythread_id_t myhread_create_stream(mythread_t *mythread, mythread_process_f process_func, mythread_work_f func, mythread_thread_opt_t opt, myhtml_status_t *status);
-mythread_id_t myhread_create_batch(mythread_t *mythread, mythread_process_f process_func, mythread_work_f func, mythread_thread_opt_t opt, myhtml_status_t *status, size_t count);
-
-void myhtml_thread_nanosleep(const struct timespec *tomeout);
-
-#endif /* MyHTML_BUILD_WITHOUT_THREADS */
-
-mythread_t * mythread_create(void);
-myhtml_status_t mythread_init(mythread_t *mythread, const char *sem_prefix, size_t thread_count);
-void mythread_clean(mythread_t *mythread);
-mythread_t * mythread_destroy(mythread_t *mythread, mythread_callback_before_join_f before_join, bool self_destroy);
-
-void mythread_stream_quit_all(mythread_t *mythread);
-void mythread_batch_quit_all(mythread_t *mythread);
-
-void mythread_stream_stop_all(mythread_t *mythread);
-void mythread_batch_stop_all(mythread_t *mythread);
-
-void mythread_stop_all(mythread_t *mythread);
-void mythread_queue_wait_all_for_done(mythread_t *mythread);
-void mythread_resume_all(mythread_t *mythread);
-void mythread_suspend_all(mythread_t *mythread);
-unsigned int mythread_check_status(mythread_t *mythread);
-
-// queue
-struct mythread_queue_node {
- mythread_queue_node_t *prev;
- myhtml_token_node_t *token;
- myhtml_tree_t *tree;
-};
-
-struct mythread_queue_thread_param {
- volatile size_t use;
-};
-
-struct mythread_queue_list_entry {
- mythread_queue_list_entry_t *next;
- mythread_queue_list_entry_t *prev;
- mythread_queue_t *queue;
- mythread_queue_thread_param_t *thread_param;
-};
-
-struct mythread_queue_list {
- mythread_queue_list_entry_t *first;
- mythread_queue_list_entry_t *last;
-
- volatile size_t count;
-};
-
-struct mythread_queue {
- mythread_queue_node_t **nodes;
-
- size_t nodes_pos;
- size_t nodes_pos_size;
- size_t nodes_length;
-
- volatile size_t nodes_uses;
- volatile size_t nodes_size;
- volatile size_t nodes_root;
-};
-
-mythread_queue_t * mythread_queue_create(size_t size, myhtml_status_t *status);
-void mythread_queue_clean(mythread_queue_t* queue);
-mythread_queue_t * mythread_queue_destroy(mythread_queue_t* token);
-
-void mythread_queue_node_clean(mythread_queue_node_t* qnode);
-
-size_t mythread_queue_count_used_node(mythread_queue_t* queue);
-mythread_queue_node_t * mythread_queue_get_first_node(mythread_queue_t* queue);
-mythread_queue_node_t * mythread_queue_get_prev_node(mythread_queue_node_t* qnode);
-mythread_queue_node_t * mythread_queue_get_current_node(mythread_queue_t* queue);
-mythread_queue_node_t * mythread_queue_node_malloc(mythread_t *mythread, mythread_queue_t* queue, myhtml_status_t *status);
-mythread_queue_node_t * mythread_queue_node_malloc_limit(mythread_t *mythread, mythread_queue_t* queue, size_t limit, myhtml_status_t *status);
-
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
-
-mythread_queue_list_t * mythread_queue_list_create(myhtml_status_t *status);
-void mythread_queue_list_destroy(mythread_queue_list_t* queue_list);
-
-size_t mythread_queue_list_get_count(mythread_queue_list_t* queue_list);
-
-mythread_queue_list_entry_t * mythread_queue_list_entry_push(mythread_t *mythread, mythread_queue_t *queue, myhtml_status_t *status);
-mythread_queue_list_entry_t * mythread_queue_list_entry_delete(mythread_t *mythread, mythread_queue_list_entry_t *entry, bool destroy_queue);
-void mythread_queue_list_entry_clean(mythread_t *mythread, mythread_queue_list_entry_t *entry);
-void mythread_queue_list_entry_wait_for_done(mythread_t *mythread, mythread_queue_list_entry_t *entry);
-
-mythread_queue_node_t * mythread_queue_node_malloc_round(mythread_t *mythread, mythread_queue_list_entry_t *entry, myhtml_status_t *status);
-
-#endif /* MyHTML_BUILD_WITHOUT_THREADS */
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* defined(__myhtml__myhtml_thread__) */
-
diff --git a/source/myhtml/token.c b/source/myhtml/token.c
index 1536764..0828dfc 100644
--- a/source/myhtml/token.c
+++ b/source/myhtml/token.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -102,7 +102,7 @@ myhtml_token_t * myhtml_token_create(myhtml_tree_t* tree, size_t size)
if(size == 0)
size = 4096;
- myhtml_token_t* token = (myhtml_token_t*)myhtml_malloc(sizeof(myhtml_token_t));
+ myhtml_token_t* token = (myhtml_token_t*)mycore_malloc(sizeof(myhtml_token_t));
if(token == NULL)
return NULL;
@@ -110,15 +110,15 @@ myhtml_token_t * myhtml_token_create(myhtml_tree_t* tree, size_t size)
token->nodes_obj = mcobject_async_create();
if(token->nodes_obj == NULL) {
- free(token);
+ mycore_free(token);
return NULL;
}
token->attr_obj = mcobject_async_create();
if(token->attr_obj == NULL) {
- free(token->nodes_obj);
- free(token);
+ mycore_free(token->nodes_obj);
+ mycore_free(token);
return NULL;
}
@@ -157,7 +157,7 @@ myhtml_token_t * myhtml_token_destroy(myhtml_token_t* token)
if(token->attr_obj)
token->attr_obj = mcobject_async_destroy(token->attr_obj, 1);
- myhtml_free(token);
+ mycore_free(token);
return NULL;
}
@@ -177,7 +177,7 @@ void myhtml_token_node_clean(myhtml_token_node_t* node)
memset(node, 0, sizeof(myhtml_token_node_t));
node->type = MyHTML_TOKEN_TYPE_OPEN|MyHTML_TOKEN_TYPE_WHITESPACE;
- myhtml_string_clean_all(&node->str);
+ mycore_string_clean_all(&node->str);
}
myhtml_token_attr_t * myhtml_token_attr_create(myhtml_token_t* token, size_t async_node_id)
@@ -195,8 +195,8 @@ void myhtml_token_attr_clean(myhtml_token_attr_t* attr)
memset(attr, 0, sizeof(myhtml_token_attr_t));
attr->ns = MyHTML_NAMESPACE_HTML;
- myhtml_string_clean_all(&attr->key);
- myhtml_string_clean_all(&attr->value);
+ mycore_string_clean_all(&attr->key);
+ mycore_string_clean_all(&attr->value);
}
myhtml_tag_id_t myhtml_token_node_tag_id(myhtml_token_node_t *token_node)
@@ -238,7 +238,7 @@ const char * myhtml_token_node_text(myhtml_token_node_t *token_node, size_t *len
return token_node->str.data;
}
-myhtml_string_t * myhtml_token_node_string(myhtml_token_node_t *token_node)
+mycore_string_t * myhtml_token_node_string(myhtml_token_node_t *token_node)
{
return &token_node->str;
}
@@ -253,16 +253,18 @@ bool myhtml_token_node_is_close_self(myhtml_token_node_t *token_node)
return (token_node->type & MyHTML_TOKEN_TYPE_CLOSE_SELF);
}
-void myhtml_token_node_wait_for_done(myhtml_token_node_t* node)
+void myhtml_token_node_wait_for_done(myhtml_token_t* token, myhtml_token_node_t* node)
{
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
-
- const struct timespec timeout = {0, 0};
- while((node->type & MyHTML_TOKEN_TYPE_DONE) == 0) {myhtml_thread_nanosleep(&timeout);}
-
+#ifndef MyCORE_BUILD_WITHOUT_THREADS
+ while((node->type & MyHTML_TOKEN_TYPE_DONE) == 0) {mythread_nanosleep_sleep(token->tree->myhtml->thread_stream->timespec);}
#endif
}
+void myhtml_token_set_done(myhtml_token_node_t* node)
+{
+ node->type |= MyHTML_TOKEN_TYPE_DONE;
+}
+
myhtml_token_node_t * myhtml_token_node_clone(myhtml_token_t* token, myhtml_token_node_t* node, size_t token_thread_idx, size_t attr_thread_idx)
{
if(node == NULL)
@@ -283,7 +285,7 @@ myhtml_token_node_t * myhtml_token_node_clone(myhtml_token_t* token, myhtml_toke
new_node->element_begin = node->element_begin;
new_node->element_length = node->element_length;
- myhtml_string_init(tree->mchar, tree->mchar_node_id, &new_node->str, node->str.size);
+ mycore_string_init(tree->mchar, tree->mchar_node_id, &new_node->str, node->str.size);
myhtml_token_node_attr_copy(token, node, new_node, attr_thread_idx);
return new_node;
@@ -291,10 +293,10 @@ myhtml_token_node_t * myhtml_token_node_clone(myhtml_token_t* token, myhtml_toke
void myhtml_token_node_text_append(myhtml_token_t* token, myhtml_token_node_t* dest, const char* text, size_t text_len)
{
- myhtml_string_init(token->tree->mchar, token->tree->mchar_node_id, &dest->str, (text_len + 2));
+ mycore_string_init(token->tree->mchar, token->tree->mchar_node_id, &dest->str, (text_len + 2));
- myhtml_string_t* string = &dest->str;
- myhtml_string_append(string, text, text_len);
+ mycore_string_t* string = &dest->str;
+ mycore_string_append(string, text, text_len);
}
myhtml_token_attr_t * myhtml_token_node_attr_append(myhtml_token_t* token, myhtml_token_node_t* dest,
@@ -305,18 +307,18 @@ myhtml_token_attr_t * myhtml_token_node_attr_append(myhtml_token_t* token, myhtm
new_attr->next = 0;
if(key_len) {
- myhtml_string_init(token->tree->mchar, token->tree->mchar_node_id, &new_attr->key, (key_len + 1));
- myhtml_string_append_lowercase(&new_attr->key, key, key_len);
+ mycore_string_init(token->tree->mchar, token->tree->mchar_node_id, &new_attr->key, (key_len + 1));
+ mycore_string_append_lowercase(&new_attr->key, key, key_len);
}
else
- myhtml_string_clean_all(&new_attr->key);
+ mycore_string_clean_all(&new_attr->key);
if(value_len) {
- myhtml_string_init(token->tree->mchar, token->tree->mchar_node_id, &new_attr->value, (value_len + 1));
- myhtml_string_append(&new_attr->value, value, value_len);
+ mycore_string_init(token->tree->mchar, token->tree->mchar_node_id, &new_attr->value, (value_len + 1));
+ mycore_string_append(&new_attr->value, value, value_len);
}
else
- myhtml_string_clean_all(&new_attr->value);
+ mycore_string_clean_all(&new_attr->value);
if(dest->attr_first == NULL) {
new_attr->prev = 0;
@@ -339,32 +341,32 @@ myhtml_token_attr_t * myhtml_token_node_attr_append(myhtml_token_t* token, myhtm
myhtml_token_attr_t * myhtml_token_node_attr_append_with_convert_encoding(myhtml_token_t* token, myhtml_token_node_t* dest,
const char* key, size_t key_len,
const char* value, size_t value_len,
- size_t thread_idx, myhtml_encoding_t encoding)
+ size_t thread_idx, myencoding_t encoding)
{
myhtml_token_attr_t* new_attr = mcobject_async_malloc(token->attr_obj, thread_idx, NULL);
new_attr->next = 0;
if(key_len) {
- myhtml_string_init(token->tree->mchar, token->tree->mchar_node_id, &new_attr->key, (key_len + 1));
+ mycore_string_init(token->tree->mchar, token->tree->mchar_node_id, &new_attr->key, (key_len + 1));
- if(encoding == MyHTML_ENCODING_UTF_8)
- myhtml_string_append_lowercase(&new_attr->key, key, key_len);
+ if(encoding == MyENCODING_UTF_8)
+ mycore_string_append_lowercase(&new_attr->key, key, key_len);
else
- myhtml_string_append_lowercase_ascii_with_convert_encoding(&new_attr->key, key, key_len, encoding);
+ myencoding_string_append_lowercase_ascii(&new_attr->key, key, key_len, encoding);
}
else
- myhtml_string_clean_all(&new_attr->key);
+ mycore_string_clean_all(&new_attr->key);
if(value_len) {
- myhtml_string_init(token->tree->mchar, token->tree->mchar_node_id, &new_attr->value, (value_len + 1));
+ mycore_string_init(token->tree->mchar, token->tree->mchar_node_id, &new_attr->value, (value_len + 1));
- if(encoding == MyHTML_ENCODING_UTF_8)
- myhtml_string_append(&new_attr->value, value, value_len);
+ if(encoding == MyENCODING_UTF_8)
+ mycore_string_append(&new_attr->value, value, value_len);
else
- myhtml_string_append_with_convert_encoding(&new_attr->value, value, value_len, encoding);
+ myencoding_string_append(&new_attr->value, value, value_len, encoding);
}
else
- myhtml_string_clean_all(&new_attr->value);
+ mycore_string_clean_all(&new_attr->value);
if(dest->attr_first == NULL) {
new_attr->prev = 0;
@@ -415,18 +417,18 @@ bool myhtml_token_attr_copy(myhtml_token_t* token, myhtml_token_attr_t* attr, my
new_attr->next = 0;
if(attr->key.length) {
- myhtml_string_init(token->tree->mchar, token->tree->mchar_node_id, &new_attr->key, (attr->key.length + 1));
- myhtml_string_append_lowercase(&new_attr->key, attr->key.data, attr->key.length);
+ mycore_string_init(token->tree->mchar, token->tree->mchar_node_id, &new_attr->key, (attr->key.length + 1));
+ mycore_string_append_lowercase(&new_attr->key, attr->key.data, attr->key.length);
}
else
- myhtml_string_clean_all(&new_attr->key);
+ mycore_string_clean_all(&new_attr->key);
if(attr->value.length) {
- myhtml_string_init(token->tree->mchar, token->tree->mchar_node_id, &new_attr->value, (attr->value.length + 1));
- myhtml_string_append(&new_attr->value, attr->value.data, attr->value.length);
+ mycore_string_init(token->tree->mchar, token->tree->mchar_node_id, &new_attr->value, (attr->value.length + 1));
+ mycore_string_append(&new_attr->value, attr->value.data, attr->value.length);
}
else
- myhtml_string_clean_all(&new_attr->value);
+ mycore_string_clean_all(&new_attr->value);
if(dest->attr_first == NULL) {
new_attr->prev = 0;
@@ -455,8 +457,8 @@ myhtml_token_attr_t * myhtml_token_attr_match(myhtml_token_t* token, myhtml_toke
{
if(attr->key.length == key_size && attr->value.length == value_size)
{
- if((myhtml_strcmp(attr->key.data, key) == 0)) {
- if((myhtml_strcmp(attr->value.data, value) == 0))
+ if((mycore_strcmp(attr->key.data, key) == 0)) {
+ if((mycore_strcmp(attr->value.data, value) == 0))
return attr;
else
return NULL;
@@ -478,8 +480,8 @@ myhtml_token_attr_t * myhtml_token_attr_match_case(myhtml_token_t* token, myhtml
{
if(attr->key.length == key_size && attr->value.length == value_size)
{
- if((myhtml_strcmp(attr->key.data, key) == 0)) {
- if((myhtml_strcasecmp(attr->value.data, value) == 0))
+ if((mycore_strcmp(attr->key.data, key) == 0)) {
+ if((mycore_strcasecmp(attr->value.data, value) == 0))
return attr;
else
return NULL;
@@ -504,7 +506,7 @@ void myhtml_token_adjust_mathml_attributes(myhtml_token_node_t* target)
void _myhtml_token_create_copy_srt(myhtml_token_t* token, const char* from, size_t from_size, char** to)
{
*to = mchar_async_malloc(token->tree->mchar, token->tree->mchar_node_id, (from_size + 2));
- myhtml_string_raw_copy(*to, from, from_size);
+ mycore_string_raw_copy(*to, from, from_size);
}
void myhtml_token_strict_doctype_by_token(myhtml_token_t* token, myhtml_token_node_t* target, myhtml_tree_doctype_t* return_doctype)
@@ -514,7 +516,7 @@ void myhtml_token_strict_doctype_by_token(myhtml_token_t* token, myhtml_token_no
if(attr && attr->key.length) {
_myhtml_token_create_copy_srt(token, attr->key.data, attr->key.length, &return_doctype->attr_name);
- if(myhtml_strcmp("html", return_doctype->attr_name))
+ if(mycore_strcmp("html", return_doctype->attr_name))
return_doctype->is_html = false;
else
return_doctype->is_html = true;
@@ -525,11 +527,11 @@ void myhtml_token_strict_doctype_by_token(myhtml_token_t* token, myhtml_token_no
_myhtml_token_create_copy_srt(token, "\0", 1, &return_doctype->attr_name);
if(return_doctype->attr_public)
- myhtml_free(return_doctype->attr_public);
+ mycore_free(return_doctype->attr_public);
return_doctype->attr_public = NULL;
if(return_doctype->attr_system)
- myhtml_free(return_doctype->attr_system);
+ mycore_free(return_doctype->attr_system);
return_doctype->attr_system = NULL;
return;
@@ -539,7 +541,7 @@ void myhtml_token_strict_doctype_by_token(myhtml_token_t* token, myhtml_token_no
if(attr && attr->value.length)
{
- if(myhtml_strcasecmp(attr->value.data, "PUBLIC") == 0)
+ if(mycore_strcasecmp(attr->value.data, "PUBLIC") == 0)
{
// try see public
attr = attr->next;
@@ -554,22 +556,22 @@ void myhtml_token_strict_doctype_by_token(myhtml_token_t* token, myhtml_token_no
_myhtml_token_create_copy_srt(token, attr->value.data, attr->value.length, &return_doctype->attr_system);
else {
if(return_doctype->attr_system)
- myhtml_free(return_doctype->attr_system);
+ mycore_free(return_doctype->attr_system);
_myhtml_token_create_copy_srt(token, "\0", 1, &return_doctype->attr_system);
}
}
else {
if(return_doctype->attr_public)
- myhtml_free(return_doctype->attr_public);
+ mycore_free(return_doctype->attr_public);
return_doctype->attr_public = NULL;
if(return_doctype->attr_system)
- myhtml_free(return_doctype->attr_system);
+ mycore_free(return_doctype->attr_system);
return_doctype->attr_system = NULL;
}
}
- else if(myhtml_strncasecmp(attr->value.data, "SYSTEM", attr->value.length) == 0)
+ else if(mycore_strncasecmp(attr->value.data, "SYSTEM", attr->value.length) == 0)
{
attr = attr->next;
@@ -579,21 +581,21 @@ void myhtml_token_strict_doctype_by_token(myhtml_token_t* token, myhtml_token_no
}
else {
if(return_doctype->attr_public)
- myhtml_free(return_doctype->attr_public);
+ mycore_free(return_doctype->attr_public);
return_doctype->attr_public = NULL;
if(return_doctype->attr_system)
- myhtml_free(return_doctype->attr_system);
+ mycore_free(return_doctype->attr_system);
return_doctype->attr_system = NULL;
}
}
else {
if(return_doctype->attr_public)
- myhtml_free(return_doctype->attr_public);
+ mycore_free(return_doctype->attr_public);
return_doctype->attr_public = NULL;
if(return_doctype->attr_system)
- myhtml_free(return_doctype->attr_system);
+ mycore_free(return_doctype->attr_system);
return_doctype->attr_system = NULL;
}
}
@@ -601,14 +603,14 @@ void myhtml_token_strict_doctype_by_token(myhtml_token_t* token, myhtml_token_no
bool myhtml_token_doctype_check_html_4_0(myhtml_tree_doctype_t* return_doctype)
{
- return myhtml_strcmp(return_doctype->attr_public, "-//W3C//DTD HTML 4.0//EN") &&
- (return_doctype->attr_system == NULL || myhtml_strcmp(return_doctype->attr_system, "http://www.w3.org/TR/REC-html40/strict.dtd"));
+ return mycore_strcmp(return_doctype->attr_public, "-//W3C//DTD HTML 4.0//EN") &&
+ (return_doctype->attr_system == NULL || mycore_strcmp(return_doctype->attr_system, "http://www.w3.org/TR/REC-html40/strict.dtd"));
}
bool myhtml_token_doctype_check_html_4_01(myhtml_tree_doctype_t* return_doctype)
{
- return myhtml_strcmp(return_doctype->attr_public, "-//W3C//DTD HTML 4.01//EN") &&
- (return_doctype->attr_system == NULL || myhtml_strcmp(return_doctype->attr_system, "http://www.w3.org/TR/html4/strict.dtd"));
+ return mycore_strcmp(return_doctype->attr_public, "-//W3C//DTD HTML 4.01//EN") &&
+ (return_doctype->attr_system == NULL || mycore_strcmp(return_doctype->attr_system, "http://www.w3.org/TR/html4/strict.dtd"));
}
bool myhtml_token_doctype_check_xhtml_1_0(myhtml_tree_doctype_t* return_doctype)
@@ -616,8 +618,8 @@ bool myhtml_token_doctype_check_xhtml_1_0(myhtml_tree_doctype_t* return_doctype)
if(return_doctype->attr_system == NULL)
return true;
- return myhtml_strcmp(return_doctype->attr_public, "-//W3C//DTD XHTML 1.0 Strict//EN") &&
- myhtml_strcmp(return_doctype->attr_system, "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd");
+ return mycore_strcmp(return_doctype->attr_public, "-//W3C//DTD XHTML 1.0 Strict//EN") &&
+ mycore_strcmp(return_doctype->attr_system, "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd");
}
bool myhtml_token_doctype_check_xhtml_1_1(myhtml_tree_doctype_t* return_doctype)
@@ -625,8 +627,8 @@ bool myhtml_token_doctype_check_xhtml_1_1(myhtml_tree_doctype_t* return_doctype)
if(return_doctype->attr_system == NULL)
return true;
- return myhtml_strcmp(return_doctype->attr_public, "-//W3C//DTD XHTML 1.1//EN") &&
- myhtml_strcmp(return_doctype->attr_system, "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd");
+ return mycore_strcmp(return_doctype->attr_public, "-//W3C//DTD XHTML 1.1//EN") &&
+ mycore_strcmp(return_doctype->attr_system, "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd");
}
bool myhtml_token_release_and_check_doctype_attributes(myhtml_token_t* token, myhtml_token_node_t* target, myhtml_tree_doctype_t* return_doctype)
@@ -641,7 +643,7 @@ bool myhtml_token_release_and_check_doctype_attributes(myhtml_token_t* token, my
if((return_doctype->is_html ||
return_doctype->attr_public ||
- (return_doctype->attr_system && myhtml_strcmp(return_doctype->attr_system, "about:legacy-compat"))))
+ (return_doctype->attr_system && mycore_strcmp(return_doctype->attr_system, "about:legacy-compat"))))
{
if(return_doctype->attr_public == NULL)
return false;
@@ -669,8 +671,8 @@ void myhtml_token_adjust_svg_attributes(myhtml_token_node_t* target)
myhtml_token_attr_svg_replacement[i].from_size);
if(attr) {
- myhtml_string_clean(&attr->key);
- myhtml_string_append(&attr->key, myhtml_token_attr_svg_replacement[i].to,
+ mycore_string_clean(&attr->key);
+ mycore_string_append(&attr->key, myhtml_token_attr_svg_replacement[i].to,
myhtml_token_attr_svg_replacement[i].to_size);
}
}
@@ -686,8 +688,8 @@ void myhtml_token_adjust_foreign_attributes(myhtml_token_node_t* target)
myhtml_token_attr_namespace_replacement[i].from_size);
if(attr) {
- myhtml_string_clean(&attr->key);
- myhtml_string_append(&attr->key, myhtml_token_attr_namespace_replacement[i].to,
+ mycore_string_clean(&attr->key);
+ mycore_string_append(&attr->key, myhtml_token_attr_namespace_replacement[i].to,
myhtml_token_attr_namespace_replacement[i].to_size);
attr->ns = myhtml_token_attr_namespace_replacement[i].ns;
@@ -708,10 +710,10 @@ bool myhtml_token_attr_compare(myhtml_token_node_t* target, myhtml_token_node_t*
if(target_attr->key.length == dest_attr->key.length &&
target_attr->value.length == dest_attr->value.length)
{
- if(myhtml_strcmp(target_attr->key.data, dest_attr->key.data) != 0)
+ if(mycore_strcmp(target_attr->key.data, dest_attr->key.data) != 0)
break;
- if(myhtml_strcasecmp(target_attr->value.data, dest_attr->value.data) != 0)
+ if(mycore_strcasecmp(target_attr->value.data, dest_attr->value.data) != 0)
break;
}
else
@@ -734,7 +736,7 @@ myhtml_token_attr_t * myhtml_token_attr_by_name(myhtml_token_node_t* node, const
while (attr)
{
if(name_length == attr->key.length) {
- if(myhtml_strcmp(attr->key.data, name) == 0)
+ if(mycore_strcmp(attr->key.data, name) == 0)
break;
}
@@ -803,11 +805,11 @@ myhtml_token_attr_t * myhtml_token_attr_remove_by_name(myhtml_token_node_t* node
myhtml_token_node_t * myhtml_token_merged_two_token_string(myhtml_tree_t* tree, myhtml_token_node_t* token_to, myhtml_token_node_t* token_from, bool cp_reverse)
{
- myhtml_token_node_wait_for_done(token_to);
- myhtml_token_node_wait_for_done(token_from);
+ myhtml_token_node_wait_for_done(tree->token, token_to);
+ myhtml_token_node_wait_for_done(tree->token, token_from);
- myhtml_string_t *string1 = &token_to->str;
- myhtml_string_t *string2 = &token_from->str;
+ mycore_string_t *string1 = &token_to->str;
+ mycore_string_t *string2 = &token_from->str;
token_to->raw_begin = 0;
token_to->raw_length = 0;
@@ -815,10 +817,10 @@ myhtml_token_node_t * myhtml_token_merged_two_token_string(myhtml_tree_t* tree,
if(token_to->str.node_idx == tree->mchar_node_id)
{
if(cp_reverse) {
- //myhtml_string_copy(string2, &string_base);
+ //mycore_string_copy(string2, &string_base);
}
else {
- myhtml_string_copy(string1, string2);
+ mycore_string_copy(string1, string2);
}
return token_to;
@@ -826,25 +828,25 @@ myhtml_token_node_t * myhtml_token_merged_two_token_string(myhtml_tree_t* tree,
if(token_from->str.node_idx == tree->mchar_node_id)
{
if(cp_reverse) {
- myhtml_string_copy(string2, string1);
+ mycore_string_copy(string2, string1);
}
else {
- myhtml_string_copy(string1, string2);
+ mycore_string_copy(string1, string2);
}
return token_from;
}
else {
- myhtml_string_t string_base;
- myhtml_string_init(tree->mchar, tree->mchar_node_id, &string_base, (string1->length + string2->length + 2));
+ mycore_string_t string_base;
+ mycore_string_init(tree->mchar, tree->mchar_node_id, &string_base, (string1->length + string2->length + 2));
if(cp_reverse) {
- myhtml_string_copy(&string_base, string2);
- myhtml_string_copy(&string_base, string1);
+ mycore_string_copy(&string_base, string2);
+ mycore_string_copy(&string_base, string1);
}
else {
- myhtml_string_copy(&string_base, string1);
- myhtml_string_copy(&string_base, string2);
+ mycore_string_copy(&string_base, string1);
+ mycore_string_copy(&string_base, string2);
}
token_to->str = string_base;
@@ -855,117 +857,13 @@ myhtml_token_node_t * myhtml_token_merged_two_token_string(myhtml_tree_t* tree,
void myhtml_token_set_replacement_character_for_null_token(myhtml_tree_t* tree, myhtml_token_node_t* node)
{
- myhtml_token_node_wait_for_done(node);
+ myhtml_token_node_wait_for_done(tree->token, node);
- myhtml_string_t new_str;
- myhtml_string_init(tree->mchar, tree->mchar_node_id, &new_str, (node->str.length + 2));
+ mycore_string_t new_str;
+ mycore_string_init(tree->mchar, tree->mchar_node_id, &new_str, (node->str.length + 2));
- myhtml_string_append_with_replacement_null_characters_only(&new_str, node->str.data, node->str.length);
+ mycore_string_append_with_replacement_null_characters(&new_str, node->str.data, node->str.length);
node->str = new_str;
}
-void myhtml_token_set_done(myhtml_token_node_t* node)
-{
- node->type |= MyHTML_TOKEN_TYPE_DONE;
-}
-
-void myhtml_token_print_param_by_idx(myhtml_tree_t* myhtml_tree, myhtml_token_node_t* node, FILE* out)
-{
- if(node->type & MyHTML_TOKEN_TYPE_CLOSE) {
- fprintf(out, "</");
- }
- else {
- fprintf(out, "<");
- }
-
- fprintf(out, "tag_id=%zu; body_begin=%zu; body_length=%zu; attr_first=%zu; attr_last=%zu",
- node->tag_id, node->raw_begin, node->raw_length,
- (size_t)node->attr_first, (size_t)node->attr_last);
-
- if(node->type & MyHTML_TOKEN_TYPE_CLOSE_SELF) {
- fprintf(out, " />\n");
- }
- else {
- fprintf(out, ">\n");
- }
-}
-
-void myhtml_token_print_by_idx(myhtml_tree_t* tree, myhtml_token_node_t* node, FILE* out)
-{
- const myhtml_tag_context_t *ctx = myhtml_tag_get_by_id(tree->tags, node->tag_id);
-
- if(node->tag_id == MyHTML_TAG__TEXT ||
- node->tag_id == MyHTML_TAG__COMMENT)
- {
- if(node->str.length) {
- fprintf(out, "%.*s: %.*s\n", (int)ctx->name_length, ctx->name,
- (int)node->str.length, node->str.data);
- }
- else {
- fprintf(out, "%.*s is empty\n", (int)ctx->name_length, ctx->name);
- }
- }
- else
- {
- if(node->type & MyHTML_TOKEN_TYPE_CLOSE) {
- fprintf(out, "</");
- }
- else {
- fprintf(out, "<");
- }
-
- fprintf(out, "%.*s tagid=\"%zu\"", (int)ctx->name_length, ctx->name, node->tag_id);
-
- myhtml_token_print_attr(tree, node, out);
-
- if(node->type & MyHTML_TOKEN_TYPE_CLOSE_SELF) {
- fprintf(out, " />\n");
- }
- else {
- fprintf(out, ">\n");
- }
- }
-}
-
-void myhtml_token_print_attr(myhtml_tree_t* tree, myhtml_token_node_t* node, FILE* out)
-{
- myhtml_token_attr_t* attr = node->attr_first;
-
- while(attr)
- {
- fprintf(out, " %s", attr->key.data);
-
- if(attr->ns != MyHTML_NAMESPACE_HTML)
- {
- switch (attr->ns) {
- case MyHTML_NAMESPACE_SVG:
- fprintf(out, ":svg");
- break;
- case MyHTML_NAMESPACE_MATHML:
- fprintf(out, ":math");
- break;
- case MyHTML_NAMESPACE_XLINK:
- fprintf(out, ":xlink");
- break;
- case MyHTML_NAMESPACE_XML:
- fprintf(out, ":xml");
- break;
- case MyHTML_NAMESPACE_XMLNS:
- fprintf(out, ":xmlns");
- break;
- default:
- fprintf(out, ":UNDEF");
- break;
- }
- }
-
- if(attr->value.length) {
- fprintf(out, "=\"%s\"", attr->value.data);
- }
-
- attr = attr->next;
- }
-}
-
-
diff --git a/source/myhtml/token.h b/source/myhtml/token.h
index 0f3de04..3936f4a 100644
--- a/source/myhtml/token.h
+++ b/source/myhtml/token.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -29,13 +29,13 @@ extern "C" {
#include <string.h>
#include "myhtml/myosi.h"
-#include "myhtml/utils.h"
+#include "mycore/utils.h"
#include "myhtml/tag.h"
#include "myhtml/myhtml.h"
#include "myhtml/mystring.h"
-#include "myhtml/utils/mcobject_async.h"
-#include "myhtml/utils/mchar_async.h"
-#include "myhtml/utils/mcsync.h"
+#include "mycore/utils/mcobject_async.h"
+#include "mycore/utils/mchar_async.h"
+#include "mycore/utils/mcsync.h"
#define myhtml_token_node_set_done(token_node) token_node->type |= MyHTML_TOKEN_TYPE_DONE
@@ -61,8 +61,8 @@ struct myhtml_token_attr {
myhtml_token_attr_t* next;
myhtml_token_attr_t* prev;
- myhtml_string_t key;
- myhtml_string_t value;
+ mycore_string_t key;
+ mycore_string_t value;
size_t raw_key_begin;
size_t raw_key_length;
@@ -75,7 +75,7 @@ struct myhtml_token_attr {
struct myhtml_token_node {
myhtml_tag_id_t tag_id;
- myhtml_string_t str;
+ mycore_string_t str;
size_t raw_begin;
size_t raw_length;
@@ -115,7 +115,7 @@ myhtml_tree_attr_t * myhtml_token_node_attribute_first(myhtml_token_node_t *toke
myhtml_tree_attr_t * myhtml_token_node_attribute_last(myhtml_token_node_t *token_node);
const char * myhtml_token_node_text(myhtml_token_node_t *token_node, size_t *length);
-myhtml_string_t * myhtml_token_node_string(myhtml_token_node_t *token_node);
+mycore_string_t * myhtml_token_node_string(myhtml_token_node_t *token_node);
bool myhtml_token_node_is_close(myhtml_token_node_t *token_node);
bool myhtml_token_node_is_close_self(myhtml_token_node_t *token_node);
@@ -130,7 +130,7 @@ myhtml_token_attr_t * myhtml_token_attr_remove_by_name(myhtml_token_node_t* node
void myhtml_token_attr_delete_all(myhtml_token_t* token, myhtml_token_node_t* node);
void myhtml_token_delete(myhtml_token_t* token, myhtml_token_node_t* node);
-void myhtml_token_node_wait_for_done(myhtml_token_node_t* node);
+void myhtml_token_node_wait_for_done(myhtml_token_t* token, myhtml_token_node_t* node);
void myhtml_token_set_done(myhtml_token_node_t* node);
myhtml_token_attr_t * myhtml_token_attr_match(myhtml_token_t* token, myhtml_token_node_t* target, const char* key, size_t key_size, const char* value, size_t value_size);
@@ -143,7 +143,7 @@ void myhtml_token_adjust_svg_attributes(myhtml_token_node_t* target);
void myhtml_token_adjust_foreign_attributes(myhtml_token_node_t* target);
myhtml_token_attr_t * myhtml_token_node_attr_append(myhtml_token_t* token, myhtml_token_node_t* dest, const char* key, size_t key_len, const char* value, size_t value_len, size_t thread_idx);
-myhtml_token_attr_t * myhtml_token_node_attr_append_with_convert_encoding(myhtml_token_t* token, myhtml_token_node_t* dest, const char* key, size_t key_len, const char* value, size_t value_len, size_t thread_idx, myhtml_encoding_t encoding);
+myhtml_token_attr_t * myhtml_token_node_attr_append_with_convert_encoding(myhtml_token_t* token, myhtml_token_node_t* dest, const char* key, size_t key_len, const char* value, size_t value_len, size_t thread_idx, myencoding_t encoding);
void myhtml_token_node_text_append(myhtml_token_t* token, myhtml_token_node_t* dest, const char* text, size_t text_len);
void myhtml_token_node_attr_copy(myhtml_token_t* token, myhtml_token_node_t* target, myhtml_token_node_t* dest, size_t thread_idx);
void myhtml_token_node_attr_copy_with_check(myhtml_token_t* token, myhtml_token_node_t* target, myhtml_token_node_t* dest, size_t thread_idx);
@@ -154,10 +154,6 @@ bool myhtml_token_attr_compare(myhtml_token_node_t* target, myhtml_token_node_t*
myhtml_token_node_t * myhtml_token_merged_two_token_string(myhtml_tree_t* tree, myhtml_token_node_t* token_to, myhtml_token_node_t* token_from, bool cp_reverse);
void myhtml_token_set_replacement_character_for_null_token(myhtml_tree_t* tree, myhtml_token_node_t* node);
-void myhtml_token_print_param_by_idx(myhtml_tree_t* myhtml_tree, myhtml_token_node_t* node, FILE* out);
-void myhtml_token_print_by_idx(myhtml_tree_t* myhtml_tree, myhtml_token_node_t* node, FILE* out);
-void myhtml_token_print_attr(myhtml_tree_t* myhtml_tree, myhtml_token_node_t* node, FILE* out);
-
#ifdef __cplusplus
} /* extern "C" */
#endif
diff --git a/source/myhtml/tokenizer.c b/source/myhtml/tokenizer.c
index 1740a71..1dca519 100644
--- a/source/myhtml/tokenizer.c
+++ b/source/myhtml/tokenizer.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -19,14 +19,14 @@
*/
#include "myhtml/tokenizer.h"
-#include "myhtml/utils/resources.h"
+#include "mycore/utils/resources.h"
-myhtml_status_t myhtml_tokenizer_set_first_settings(myhtml_tree_t* tree, const char* html, size_t html_length)
+mystatus_t myhtml_tokenizer_set_first_settings(myhtml_tree_t* tree, const char* html, size_t html_length)
{
tree->current_qnode = mythread_queue_get_current_node(tree->queue);
mythread_queue_node_clean(tree->current_qnode);
- tree->current_qnode->tree = tree;
+ tree->current_qnode->context = tree;
tree->current_token_node = myhtml_token_node_create(tree->token, tree->token->mcasync_token_id);
if(tree->current_token_node == NULL)
@@ -37,20 +37,20 @@ myhtml_status_t myhtml_tokenizer_set_first_settings(myhtml_tree_t* tree, const c
return MyHTML_STATUS_OK;
}
-myhtml_status_t myhtml_tokenizer_begin(myhtml_tree_t* tree, const char* html, size_t html_length)
+mystatus_t myhtml_tokenizer_begin(myhtml_tree_t* tree, const char* html, size_t html_length)
{
return myhtml_tokenizer_chunk(tree, html, html_length);
}
-myhtml_status_t myhtml_tokenizer_chunk_process(myhtml_tree_t* tree, const char* html, size_t html_length)
+mystatus_t myhtml_tokenizer_chunk_process(myhtml_tree_t* tree, const char* html, size_t html_length)
{
myhtml_t* myhtml = tree->myhtml;
myhtml_tokenizer_state_f* state_f = myhtml->parse_state_func;
// add for a chunk
- tree->incoming_buf = myhtml_incoming_buffer_add(tree->incoming_buf, tree->mcobject_incoming_buf, html, html_length);
+ tree->incoming_buf = mycore_incoming_buffer_add(tree->incoming_buf, tree->mcobject_incoming_buf, html, html_length);
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
+#ifndef MyCORE_BUILD_WITHOUT_THREADS
if(myhtml->opt & MyHTML_OPTIONS_PARSE_MODE_SINGLE)
tree->flags |= MyHTML_TREE_FLAGS_SINGLE_MODE;
@@ -58,8 +58,10 @@ myhtml_status_t myhtml_tokenizer_chunk_process(myhtml_tree_t* tree, const char*
if((tree->flags & MyHTML_TREE_FLAGS_SINGLE_MODE) == 0)
{
if(tree->queue_entry == NULL) {
- myhtml_status_t status = MyHTML_STATUS_OK;
- tree->queue_entry = mythread_queue_list_entry_push(myhtml->thread, tree->queue, &status);
+ mystatus_t status = MyHTML_STATUS_OK;
+ tree->queue_entry = mythread_queue_list_entry_push(myhtml->thread_list, 2,
+ myhtml->thread_stream->context, tree->queue,
+ myhtml->thread_total, &status);
if(status)
return status;
@@ -89,10 +91,10 @@ myhtml_status_t myhtml_tokenizer_chunk_process(myhtml_tree_t* tree, const char*
return MyHTML_STATUS_OK;
}
-myhtml_status_t myhtml_tokenizer_chunk(myhtml_tree_t* tree, const char* html, size_t html_length)
+mystatus_t myhtml_tokenizer_chunk(myhtml_tree_t* tree, const char* html, size_t html_length)
{
- if(tree->encoding_usereq == MyHTML_ENCODING_UTF_16LE ||
- tree->encoding_usereq == MyHTML_ENCODING_UTF_16BE)
+ if(tree->encoding_usereq == MyENCODING_UTF_16LE ||
+ tree->encoding_usereq == MyENCODING_UTF_16BE)
{
return myhtml_tokenizer_chunk_with_stream_buffer(tree, html, html_length);
}
@@ -100,10 +102,10 @@ myhtml_status_t myhtml_tokenizer_chunk(myhtml_tree_t* tree, const char* html, si
return myhtml_tokenizer_chunk_process(tree, html, html_length);
}
-myhtml_status_t myhtml_tokenizer_chunk_with_stream_buffer(myhtml_tree_t* tree, const char* html, size_t html_length)
+mystatus_t myhtml_tokenizer_chunk_with_stream_buffer(myhtml_tree_t* tree, const char* html, size_t html_length)
{
unsigned const char* u_html = (unsigned const char*)html;
- const myhtml_encoding_custom_f func = myhtml_encoding_get_function_by_id(tree->encoding);
+ const myencoding_custom_f func = myencoding_get_function_by_id(tree->encoding);
if(tree->stream_buffer == NULL) {
tree->stream_buffer = myhtml_stream_buffer_create();
@@ -111,7 +113,7 @@ myhtml_status_t myhtml_tokenizer_chunk_with_stream_buffer(myhtml_tree_t* tree, c
if(tree->stream_buffer == NULL)
return MyHTML_STATUS_STREAM_BUFFER_ERROR_CREATE;
- myhtml_status_t status = myhtml_stream_buffer_init(tree->stream_buffer, 1024);
+ mystatus_t status = myhtml_stream_buffer_init(tree->stream_buffer, 1024);
if(status)
return status;
@@ -127,11 +129,11 @@ myhtml_status_t myhtml_tokenizer_chunk_with_stream_buffer(myhtml_tree_t* tree, c
for (size_t i = 0; i < html_length; i++)
{
- if(func(u_html[i], &stream_buffer->res) == MyHTML_ENCODING_STATUS_OK)
+ if(func(u_html[i], &stream_buffer->res) == MyENCODING_STATUS_OK)
{
if((stream_entry->length + 4) >= stream_entry->size)
{
- tree->encoding = MyHTML_ENCODING_UTF_8;
+ tree->encoding = MyENCODING_UTF_8;
myhtml_tokenizer_chunk_process(tree, &stream_entry->data[temp_curr_pos], (stream_entry->length - temp_curr_pos));
stream_entry = myhtml_stream_buffer_add_entry(stream_buffer, (4096 * 4));
@@ -142,19 +144,19 @@ myhtml_status_t myhtml_tokenizer_chunk_with_stream_buffer(myhtml_tree_t* tree, c
temp_curr_pos = stream_entry->length;
}
- stream_entry->length += myhtml_encoding_codepoint_to_ascii_utf_8(stream_buffer->res.result, &stream_entry->data[ stream_entry->length ]);
+ stream_entry->length += myencoding_codepoint_to_ascii_utf_8(stream_buffer->res.result, &stream_entry->data[ stream_entry->length ]);
}
}
if((stream_entry->length - temp_curr_pos)) {
- tree->encoding = MyHTML_ENCODING_UTF_8;
+ tree->encoding = MyENCODING_UTF_8;
myhtml_tokenizer_chunk_process(tree, &stream_entry->data[temp_curr_pos], (stream_entry->length - temp_curr_pos));
}
return MyHTML_STATUS_OK;
}
-myhtml_status_t myhtml_tokenizer_end(myhtml_tree_t* tree)
+mystatus_t myhtml_tokenizer_end(myhtml_tree_t* tree)
{
if(tree->incoming_buf)
{
@@ -170,21 +172,24 @@ myhtml_status_t myhtml_tokenizer_end(myhtml_tree_t* tree)
tree->tokenizer_status = MyHTML_STATUS_ERROR_MEMORY_ALLOCATION;
}
- myhtml_status_t status = tree->tokenizer_status;
+ mystatus_t status = tree->tokenizer_status;
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
+#ifndef MyCORE_BUILD_WITHOUT_THREADS
if((tree->flags & MyHTML_TREE_FLAGS_SINGLE_MODE) == 0)
{
- mythread_queue_list_entry_wait_for_done(tree->myhtml->thread, tree->queue_entry);
- tree->queue_entry = mythread_queue_list_entry_delete(tree->myhtml->thread, tree->queue_entry, false);
+ mythread_queue_list_entry_wait_for_done(tree->myhtml->thread_stream, tree->queue_entry);
- if(mythread_queue_list_get_count(tree->myhtml->thread->context) == 0) {
+ tree->queue_entry = mythread_queue_list_entry_delete(tree->myhtml->thread_list, 2,
+ tree->myhtml->thread_stream->context,
+ tree->queue_entry, false);
+
+ /* Further, any work with tree... */
+ if(mythread_queue_list_get_count(tree->myhtml->thread_stream->context) == 0)
myhtml_tokenizer_pause(tree);
- }
if(status == MyHTML_STATUS_OK)
- status = mythread_check_status(tree->myhtml->thread);
+ status = mythread_check_status(tree->myhtml->thread_stream);
}
#endif
@@ -238,17 +243,32 @@ myhtml_tree_node_t * myhtml_tokenizer_fragment_init(myhtml_tree_t* tree, myhtml_
void myhtml_tokenizer_wait(myhtml_tree_t* tree)
{
- mythread_queue_wait_all_for_done(tree->myhtml->thread);
+#ifndef MyCORE_BUILD_WITHOUT_THREADS
+ if(tree->myhtml->thread_stream)
+ mythread_queue_list_entry_wait_for_done(tree->myhtml->thread_stream, tree->queue_entry);
+#endif
}
void myhtml_tokenizer_post(myhtml_tree_t* tree)
{
- mythread_resume_all(tree->myhtml->thread);
+#ifndef MyCORE_BUILD_WITHOUT_THREADS
+ if(tree->myhtml->thread_stream)
+ mythread_resume(tree->myhtml->thread_stream, MyTHREAD_OPT_UNDEF);
+
+ if(tree->myhtml->thread_batch)
+ mythread_resume(tree->myhtml->thread_batch, MyTHREAD_OPT_UNDEF);
+#endif
}
void myhtml_tokenizer_pause(myhtml_tree_t* tree)
{
- mythread_stop_all(tree->myhtml->thread);
+#ifndef MyCORE_BUILD_WITHOUT_THREADS
+ if(tree->myhtml->thread_stream)
+ mythread_stop(tree->myhtml->thread_stream);
+
+ if(tree->myhtml->thread_batch)
+ mythread_stop(tree->myhtml->thread_batch);
+#endif
}
void myhtml_tokenizer_calc_current_namespace(myhtml_tree_t* tree, myhtml_token_node_t* token_node)
@@ -362,8 +382,8 @@ size_t myhtml_tokenizer_state_rcdata(myhtml_tree_t* tree, myhtml_token_node_t* t
mythread_queue_node_t* prev_qnode = mythread_queue_get_prev_node(tree->current_qnode);
- if(prev_qnode && prev_qnode->token) {
- tree->tmp_tag_id = prev_qnode->token->tag_id;
+ if(prev_qnode && prev_qnode->args) {
+ tree->tmp_tag_id = ((myhtml_token_node_t*)(prev_qnode->args))->tag_id;
}
else if(tree->fragment) {
tree->tmp_tag_id = tree->fragment->tag_id;
@@ -404,7 +424,7 @@ size_t myhtml_tokenizer_state_rcdata_less_than_sign(myhtml_tree_t* tree, myhtml_
size_t myhtml_tokenizer_state_rcdata_end_tag_open(myhtml_tree_t* tree, myhtml_token_node_t* token_node, const char* html, size_t html_offset, size_t html_size)
{
- if(myhtml_tokenizer_chars_map[ (unsigned char)html[html_offset] ] == MyHTML_TOKENIZER_CHAR_A_Z_a_z)
+ if(mycore_tokenizer_chars_map[ (unsigned char)html[html_offset] ] == MyCORE_STRING_MAP_CHAR_A_Z_a_z)
{
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_RCDATA_END_TAG_NAME;
}
@@ -467,7 +487,7 @@ size_t myhtml_tokenizer_state_rcdata_end_tag_name(myhtml_tree_t* tree, myhtml_to
while(html_offset < html_size)
{
- if(myhtml_tokenizer_chars_map[ (unsigned char)html[html_offset] ] == MyHTML_TOKENIZER_CHAR_WHITESPACE)
+ if(mycore_tokenizer_chars_map[ (unsigned char)html[html_offset] ] == MyCORE_STRING_MAP_CHAR_WHITESPACE)
{
if(_myhtml_tokenizer_state_andata_end_tag_name(tree, token_node, html, &html_offset, tmp_begin, MyHTML_TOKEN_TYPE_RCDATA)) {
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_BEFORE_ATTRIBUTE_NAME;
@@ -515,7 +535,7 @@ size_t myhtml_tokenizer_state_rcdata_end_tag_name(myhtml_tree_t* tree, myhtml_to
break;
}
- else if (myhtml_tokenizer_chars_map[ (unsigned char)html[html_offset] ] != MyHTML_TOKENIZER_CHAR_A_Z_a_z) {
+ else if (mycore_tokenizer_chars_map[ (unsigned char)html[html_offset] ] != MyCORE_STRING_MAP_CHAR_A_Z_a_z) {
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_RCDATA;
break;
}
@@ -538,8 +558,8 @@ size_t myhtml_tokenizer_state_rawtext(myhtml_tree_t* tree, myhtml_token_node_t*
mythread_queue_node_t* prev_qnode = mythread_queue_get_prev_node(tree->current_qnode);
- if(prev_qnode && prev_qnode->token) {
- tree->tmp_tag_id = prev_qnode->token->tag_id;
+ if(prev_qnode && prev_qnode->args) {
+ tree->tmp_tag_id = ((myhtml_token_node_t*)prev_qnode->args)->tag_id;
}
else if(tree->fragment) {
tree->tmp_tag_id = tree->fragment->tag_id;
@@ -581,7 +601,7 @@ size_t myhtml_tokenizer_state_rawtext_less_than_sign(myhtml_tree_t* tree, myhtml
size_t myhtml_tokenizer_state_rawtext_end_tag_open(myhtml_tree_t* tree, myhtml_token_node_t* token_node, const char* html, size_t html_offset, size_t html_size)
{
- if(myhtml_tokenizer_chars_map[ (unsigned char)html[html_offset] ] == MyHTML_TOKENIZER_CHAR_A_Z_a_z)
+ if(mycore_tokenizer_chars_map[ (unsigned char)html[html_offset] ] == MyCORE_STRING_MAP_CHAR_A_Z_a_z)
{
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_RAWTEXT_END_TAG_NAME;
}
@@ -599,7 +619,7 @@ size_t myhtml_tokenizer_state_rawtext_end_tag_name(myhtml_tree_t* tree, myhtml_t
while(html_offset < html_size)
{
- if(myhtml_tokenizer_chars_map[ (unsigned char)html[html_offset] ] == MyHTML_TOKENIZER_CHAR_WHITESPACE)
+ if(mycore_tokenizer_chars_map[ (unsigned char)html[html_offset] ] == MyCORE_STRING_MAP_CHAR_WHITESPACE)
{
if(_myhtml_tokenizer_state_andata_end_tag_name(tree, token_node, html, &html_offset, tmp_begin, MyHTML_TOKEN_TYPE_RAWTEXT)) {
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_BEFORE_ATTRIBUTE_NAME;
@@ -641,7 +661,7 @@ size_t myhtml_tokenizer_state_rawtext_end_tag_name(myhtml_tree_t* tree, myhtml_t
return html_offset;
}
- else if (myhtml_tokenizer_chars_map[ (unsigned char)html[html_offset] ] != MyHTML_TOKENIZER_CHAR_A_Z_a_z) {
+ else if (mycore_tokenizer_chars_map[ (unsigned char)html[html_offset] ] != MyCORE_STRING_MAP_CHAR_A_Z_a_z) {
token_node->raw_begin = tmp_begin;
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_RAWTEXT;
@@ -751,7 +771,7 @@ size_t myhtml_tokenizer_state_data(myhtml_tree_t* tree, myhtml_token_node_t* tok
token_node->type |= MyHTML_TOKEN_TYPE_NULL;
}
else if(token_node->type & MyHTML_TOKEN_TYPE_WHITESPACE &&
- myhtml_tokenizer_chars_map[ (unsigned char)html[html_offset] ] != MyHTML_TOKENIZER_CHAR_WHITESPACE) {
+ mycore_tokenizer_chars_map[ (unsigned char)html[html_offset] ] != MyCORE_STRING_MAP_CHAR_WHITESPACE) {
token_node->type ^= (token_node->type & MyHTML_TOKEN_TYPE_WHITESPACE);
token_node->type |= MyHTML_TOKEN_TYPE_DATA;
}
@@ -768,7 +788,7 @@ size_t myhtml_tokenizer_state_data(myhtml_tree_t* tree, myhtml_token_node_t* tok
/////////////////////////////////////////////////////////
size_t myhtml_tokenizer_state_tag_open(myhtml_tree_t* tree, myhtml_token_node_t* token_node, const char* html, size_t html_offset, size_t html_size)
{
- if(myhtml_tokenizer_chars_map[ (unsigned char)html[html_offset] ] == MyHTML_TOKENIZER_CHAR_A_Z_a_z)
+ if(mycore_tokenizer_chars_map[ (unsigned char)html[html_offset] ] == MyCORE_STRING_MAP_CHAR_A_Z_a_z)
{
token_node = myhtml_tokenizer_queue_create_text_node_if_need(tree, token_node, html, ((tree->global_offset + html_offset) - 1), MyHTML_TOKEN_TYPE_DATA);
if(token_node == NULL) {
@@ -830,7 +850,7 @@ size_t myhtml_tokenizer_state_tag_open(myhtml_tree_t* tree, myhtml_token_node_t*
/////////////////////////////////////////////////////////
size_t myhtml_tokenizer_state_end_tag_open(myhtml_tree_t* tree, myhtml_token_node_t* token_node, const char* html, size_t html_offset, size_t html_size)
{
- if(myhtml_tokenizer_chars_map[ (unsigned char)html[html_offset] ] == MyHTML_TOKENIZER_CHAR_A_Z_a_z)
+ if(mycore_tokenizer_chars_map[ (unsigned char)html[html_offset] ] == MyCORE_STRING_MAP_CHAR_A_Z_a_z)
{
token_node = myhtml_tokenizer_queue_create_text_node_if_need(tree, token_node, html, ((tree->global_offset + html_offset) - 2), MyHTML_TOKEN_TYPE_DATA);
if(token_node == NULL) {
@@ -902,7 +922,7 @@ size_t myhtml_tokenizer_state_markup_declaration_open(myhtml_tree_t* tree, myhtm
tagname = myhtml_tree_incomming_buffer_make_data(tree, token_node->raw_begin, 7);
- if(myhtml_strncasecmp(tagname, "DOCTYPE", 7) == 0)
+ if(mycore_strncasecmp(tagname, "DOCTYPE", 7) == 0)
{
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_DOCTYPE;
@@ -916,9 +936,9 @@ size_t myhtml_tokenizer_state_markup_declaration_open(myhtml_tree_t* tree, myhtm
// CDATA sections can only be used in foreign content (MathML or SVG)
if(strncmp(tagname, "[CDATA[", 7) == 0) {
- if(tree->current_qnode->prev && tree->current_qnode->prev->token)
+ if(tree->current_qnode->prev && tree->current_qnode->prev->args)
{
- myhtml_tree_wait_for_last_done_token(tree, tree->current_qnode->prev->token);
+ myhtml_tree_wait_for_last_done_token(tree, tree->current_qnode->prev->args);
myhtml_tree_node_t *adjusted_current_node = myhtml_tree_adjusted_current_node(tree);
if(adjusted_current_node &&
@@ -952,7 +972,7 @@ size_t myhtml_tokenizer_state_tag_name(myhtml_tree_t* tree, myhtml_token_node_t*
{
while(html_offset < html_size)
{
- if(myhtml_tokenizer_chars_map[ (unsigned char)html[html_offset] ] == MyHTML_TOKENIZER_CHAR_WHITESPACE)
+ if(mycore_tokenizer_chars_map[ (unsigned char)html[html_offset] ] == MyCORE_STRING_MAP_CHAR_WHITESPACE)
{
token_node->raw_length = (tree->global_offset + html_offset) - token_node->raw_begin;
myhtml_check_tag_parser(tree, token_node, html, html_offset);
@@ -1655,9 +1675,9 @@ size_t myhtml_tokenizer_state_parse_error_stop(myhtml_tree_t* tree, myhtml_token
return html_size;
}
-myhtml_status_t myhtml_tokenizer_state_init(myhtml_t* myhtml)
+mystatus_t myhtml_tokenizer_state_init(myhtml_t* myhtml)
{
- myhtml->parse_state_func = (myhtml_tokenizer_state_f*)myhtml_malloc(sizeof(myhtml_tokenizer_state_f) *
+ myhtml->parse_state_func = (myhtml_tokenizer_state_f*)mycore_malloc(sizeof(myhtml_tokenizer_state_f) *
((MyHTML_TOKENIZER_STATE_LAST_ENTRY *
MyHTML_TOKENIZER_STATE_LAST_ENTRY) + 1));
@@ -1896,7 +1916,7 @@ myhtml_status_t myhtml_tokenizer_state_init(myhtml_t* myhtml)
void myhtml_tokenizer_state_destroy(myhtml_t* myhtml)
{
if(myhtml->parse_state_func)
- myhtml_free(myhtml->parse_state_func);
+ mycore_free(myhtml->parse_state_func);
}
diff --git a/source/myhtml/tokenizer.h b/source/myhtml/tokenizer.h
index be1e15f..84cc823 100644
--- a/source/myhtml/tokenizer.h
+++ b/source/myhtml/tokenizer.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -27,23 +27,23 @@ extern "C" {
#endif
#include "myhtml/myosi.h"
-#include "myhtml/utils.h"
+#include "mycore/utils.h"
+#include "mycore/mythread.h"
#include "myhtml/myhtml.h"
#include "myhtml/tag.h"
-#include "myhtml/thread.h"
#include "myhtml/tokenizer_doctype.h"
#include "myhtml/tokenizer_script.h"
#include "myhtml/tokenizer_end.h"
-
+
#define myhtml_tokenizer_inc_html_offset(offset, size) \
offset++; \
if(offset >= size) \
return offset
-myhtml_status_t myhtml_tokenizer_begin(myhtml_tree_t* tree, const char* html, size_t html_length);
-myhtml_status_t myhtml_tokenizer_chunk(myhtml_tree_t* tree, const char* html, size_t html_length);
-myhtml_status_t myhtml_tokenizer_chunk_with_stream_buffer(myhtml_tree_t* tree, const char* html, size_t html_length);
-myhtml_status_t myhtml_tokenizer_end(myhtml_tree_t* tree);
+mystatus_t myhtml_tokenizer_begin(myhtml_tree_t* tree, const char* html, size_t html_length);
+mystatus_t myhtml_tokenizer_chunk(myhtml_tree_t* tree, const char* html, size_t html_length);
+mystatus_t myhtml_tokenizer_chunk_with_stream_buffer(myhtml_tree_t* tree, const char* html, size_t html_length);
+mystatus_t myhtml_tokenizer_end(myhtml_tree_t* tree);
void myhtml_tokenizer_set_state(myhtml_tree_t* tree, myhtml_token_node_t* token_node);
void myhtml_tokenizer_calc_current_namespace(myhtml_tree_t* tree, myhtml_token_node_t* token_node);
@@ -54,7 +54,7 @@ void myhtml_tokenizer_wait(myhtml_tree_t* tree);
void myhtml_tokenizer_post(myhtml_tree_t* tree);
void myhtml_tokenizer_pause(myhtml_tree_t* tree);
-myhtml_status_t myhtml_tokenizer_state_init(myhtml_t* myhtml);
+mystatus_t myhtml_tokenizer_state_init(myhtml_t* myhtml);
void myhtml_tokenizer_state_destroy(myhtml_t* myhtml);
myhtml_token_node_t * myhtml_tokenizer_queue_create_text_node_if_need(myhtml_tree_t* tree, myhtml_token_node_t* token_node, const char* html, size_t absolute_html_offset, enum myhtml_token_type type);
diff --git a/source/myhtml/tokenizer_doctype.c b/source/myhtml/tokenizer_doctype.c
index d63036f..cb649a1 100644
--- a/source/myhtml/tokenizer_doctype.c
+++ b/source/myhtml/tokenizer_doctype.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -169,7 +169,7 @@ size_t myhtml_tokenizer_state_custom_after_doctype_name_a_z(myhtml_tree_t* tree,
const char *param = myhtml_tree_incomming_buffer_make_data(tree, token_node->str.length, 6);
- if(myhtml_strncasecmp(param, "PUBLIC", 6) == 0) {
+ if(mycore_strncasecmp(param, "PUBLIC", 6) == 0) {
myhtml_parser_queue_set_attr(tree, token_node);
tree->attr_current->raw_value_begin = token_node->str.length;
@@ -185,7 +185,7 @@ size_t myhtml_tokenizer_state_custom_after_doctype_name_a_z(myhtml_tree_t* tree,
html_offset = (token_node->str.length + 6) - tree->incoming_buf->offset;
}
- else if(myhtml_strncasecmp(param, "SYSTEM", 6) == 0) {
+ else if(mycore_strncasecmp(param, "SYSTEM", 6) == 0) {
myhtml_parser_queue_set_attr(tree, token_node);
tree->attr_current->raw_value_begin = token_node->str.length;
diff --git a/source/myhtml/tokenizer_doctype.h b/source/myhtml/tokenizer_doctype.h
index a773d10..aedec57 100644
--- a/source/myhtml/tokenizer_doctype.h
+++ b/source/myhtml/tokenizer_doctype.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -27,7 +27,7 @@ extern "C" {
#endif
#include "myhtml/myosi.h"
-#include "myhtml/utils.h"
+#include "mycore/utils.h"
#include "myhtml/myhtml.h"
size_t myhtml_tokenizer_state_doctype(myhtml_tree_t* tree, myhtml_token_node_t* token_node, const char* html, size_t html_offset, size_t html_size);
diff --git a/source/myhtml/tokenizer_end.c b/source/myhtml/tokenizer_end.c
index cca56fc..a80975f 100644
--- a/source/myhtml/tokenizer_end.c
+++ b/source/myhtml/tokenizer_end.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
diff --git a/source/myhtml/tokenizer_end.h b/source/myhtml/tokenizer_end.h
index 3d78807..8b4d953 100644
--- a/source/myhtml/tokenizer_end.h
+++ b/source/myhtml/tokenizer_end.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
diff --git a/source/myhtml/tokenizer_script.c b/source/myhtml/tokenizer_script.c
index f5f473b..2c69cf7 100644
--- a/source/myhtml/tokenizer_script.c
+++ b/source/myhtml/tokenizer_script.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -113,7 +113,7 @@ size_t myhtml_tokenizer_state_script_data_end_tag_name(myhtml_tree_t* tree, myht
size_t tmp_size = token_node->str.length;
const char *tem_name = myhtml_tree_incomming_buffer_make_data(tree, tmp_size, 6);
- if(myhtml_strncasecmp(tem_name, "script", 6) == 0)
+ if(mycore_strncasecmp(tem_name, "script", 6) == 0)
{
token_node = myhtml_tokenizer_queue_create_text_node_if_need(tree, token_node, html, ((html_offset + tree->global_offset) - 8), MyHTML_TOKEN_TYPE_SCRIPT);
if(token_node == NULL) {
@@ -146,7 +146,7 @@ size_t myhtml_tokenizer_state_script_data_end_tag_name(myhtml_tree_t* tree, myht
size_t tmp_size = token_node->str.length;
const char *tem_name = myhtml_tree_incomming_buffer_make_data(tree, tmp_size, 6);
- if(myhtml_strncasecmp(tem_name, "script", 6) == 0)
+ if(mycore_strncasecmp(tem_name, "script", 6) == 0)
{
token_node = myhtml_tokenizer_queue_create_text_node_if_need(tree, token_node, html, ((html_offset + tree->global_offset) - 8), MyHTML_TOKEN_TYPE_SCRIPT);
if(token_node == NULL) {
@@ -179,7 +179,7 @@ size_t myhtml_tokenizer_state_script_data_end_tag_name(myhtml_tree_t* tree, myht
size_t tmp_size = token_node->str.length;
const char *tem_name = myhtml_tree_incomming_buffer_make_data(tree, tmp_size, 6);
- if(myhtml_strncasecmp(tem_name, "script", 6) == 0)
+ if(mycore_strncasecmp(tem_name, "script", 6) == 0)
{
token_node = myhtml_tokenizer_queue_create_text_node_if_need(tree, token_node, html, ((html_offset + tree->global_offset) - 8), MyHTML_TOKEN_TYPE_SCRIPT);
if(token_node == NULL) {
@@ -289,7 +289,7 @@ size_t myhtml_tokenizer_state_script_data_escaped_end_tag_name(myhtml_tree_t* tr
size_t tmp_size = token_node->str.length;
const char *tem_name = myhtml_tree_incomming_buffer_make_data(tree, tmp_size, 6);
- if(myhtml_strncasecmp(tem_name, "script", 6) == 0)
+ if(mycore_strncasecmp(tem_name, "script", 6) == 0)
{
token_node = myhtml_tokenizer_queue_create_text_node_if_need(tree, token_node, html, ((html_offset + tree->global_offset) - 8), MyHTML_TOKEN_TYPE_SCRIPT);
if(token_node == NULL) {
@@ -322,7 +322,7 @@ size_t myhtml_tokenizer_state_script_data_escaped_end_tag_name(myhtml_tree_t* tr
size_t tmp_size = token_node->str.length;
const char *tem_name = myhtml_tree_incomming_buffer_make_data(tree, tmp_size, 6);
- if(myhtml_strncasecmp(tem_name, "script", 6) == 0)
+ if(mycore_strncasecmp(tem_name, "script", 6) == 0)
{
token_node = myhtml_tokenizer_queue_create_text_node_if_need(tree, token_node, html, ((html_offset + tree->global_offset) - 8), MyHTML_TOKEN_TYPE_SCRIPT);
if(token_node == NULL) {
@@ -355,7 +355,7 @@ size_t myhtml_tokenizer_state_script_data_escaped_end_tag_name(myhtml_tree_t* tr
size_t tmp_size = token_node->str.length;
const char *tem_name = myhtml_tree_incomming_buffer_make_data(tree, tmp_size, 6);
- if(myhtml_strncasecmp(tem_name, "script", 6) == 0)
+ if(mycore_strncasecmp(tem_name, "script", 6) == 0)
{
token_node = myhtml_tokenizer_queue_create_text_node_if_need(tree, token_node, html, ((html_offset + tree->global_offset) - 8), MyHTML_TOKEN_TYPE_SCRIPT);
if(token_node == NULL) {
@@ -455,7 +455,7 @@ size_t myhtml_tokenizer_state_script_data_double_escape_start(myhtml_tree_t* tre
size_t tmp_size = token_node->str.length;
const char *tem_name = myhtml_tree_incomming_buffer_make_data(tree, tmp_size, 6);
- if(myhtml_strncasecmp(tem_name, "script", 6) == 0) {
+ if(mycore_strncasecmp(tem_name, "script", 6) == 0) {
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_SCRIPT_DATA_DOUBLE_ESCAPED;
}
else {
@@ -573,7 +573,7 @@ size_t myhtml_tokenizer_state_script_data_double_escape_end(myhtml_tree_t* tree,
size_t tmp_size = token_node->str.length;
const char *tem_name = myhtml_tree_incomming_buffer_make_data(tree, tmp_size, 6);
- if(myhtml_strncasecmp(tem_name, "script", 6) == 0) {
+ if(mycore_strncasecmp(tem_name, "script", 6) == 0) {
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED;
}
else {
diff --git a/source/myhtml/tokenizer_script.h b/source/myhtml/tokenizer_script.h
index 65cb934..6bbf86b 100644
--- a/source/myhtml/tokenizer_script.h
+++ b/source/myhtml/tokenizer_script.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -27,7 +27,7 @@ extern "C" {
#endif
#include "myhtml/myosi.h"
-#include "myhtml/utils.h"
+#include "mycore/utils.h"
#include "myhtml/myhtml.h"
#include "myhtml/tokenizer.h"
diff --git a/source/myhtml/tree.c b/source/myhtml/tree.c
index 618801e..533c307 100644
--- a/source/myhtml/tree.c
+++ b/source/myhtml/tree.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -22,12 +22,12 @@
myhtml_tree_t * myhtml_tree_create(void)
{
- return (myhtml_tree_t*)myhtml_calloc(1, sizeof(myhtml_tree_t));
+ return (myhtml_tree_t*)mycore_calloc(1, sizeof(myhtml_tree_t));
}
-myhtml_status_t myhtml_tree_init(myhtml_tree_t* tree, myhtml_t* myhtml)
+mystatus_t myhtml_tree_init(myhtml_tree_t* tree, myhtml_t* myhtml)
{
- myhtml_status_t status = MyHTML_STATUS_OK;
+ mystatus_t status = MyHTML_STATUS_OK;
tree->myhtml = myhtml;
tree->token = myhtml_token_create(tree, 512);
@@ -38,7 +38,6 @@ myhtml_status_t myhtml_tree_init(myhtml_tree_t* tree, myhtml_t* myhtml)
tree->temp_tag_name.data = NULL;
tree->stream_buffer = NULL;
tree->parse_flags = MyHTML_TREE_PARSE_FLAGS_CLEAN;
- tree->queue = mythread_queue_create(9182, &status);
tree->context = NULL;
tree->callback_before_token = NULL;
@@ -54,12 +53,21 @@ myhtml_status_t myhtml_tree_init(myhtml_tree_t* tree, myhtml_t* myhtml)
if(status)
return status;
- /* init Incoming Buffer objects */
+ /* Thread Queue */
+ tree->queue = mythread_queue_create();
+ if(tree->queue == NULL)
+ return MyHTML_STATUS_ERROR_MEMORY_ALLOCATION;
+
+ status = mythread_queue_init(tree->queue, 9182);
+ if(status)
+ return status;
+
+ /* Init Incoming Buffer objects */
tree->mcobject_incoming_buf = mcobject_create();
if(tree->mcobject_incoming_buf == NULL)
return MyHTML_STATUS_TREE_ERROR_INCOMING_BUFFER_CREATE;
- status = mcobject_init(tree->mcobject_incoming_buf, 256, sizeof(myhtml_incoming_buffer_t));
+ status = mcobject_init(tree->mcobject_incoming_buf, 256, sizeof(mycore_incoming_buffer_t));
if(status)
return status;
@@ -72,13 +80,19 @@ myhtml_status_t myhtml_tree_init(myhtml_tree_t* tree, myhtml_t* myhtml)
if(mcstatus)
return MyHTML_STATUS_TREE_ERROR_MCOBJECT_INIT;
- tree->mchar = mchar_async_create(128, (4096 * 5));
+ tree->mchar = mchar_async_create();
tree->active_formatting = myhtml_tree_active_formatting_init(tree);
tree->open_elements = myhtml_tree_open_elements_init(tree);
tree->other_elements = myhtml_tree_list_init();
tree->token_list = myhtml_tree_token_list_init();
tree->template_insertion = myhtml_tree_template_insertion_init(tree);
+ if(tree->mchar == NULL)
+ return MyHTML_STATUS_ERROR_MEMORY_ALLOCATION;
+
+ if((status = mchar_async_init(tree->mchar, 128, (4096 * 5))))
+ return status;
+
tree->mcasync_tree_id = mcobject_async_node_add(tree->tree_obj, &mcstatus);
if(mcstatus)
return MyHTML_STATUS_TREE_ERROR_MCOBJECT_CREATE_NODE;
@@ -91,36 +105,40 @@ myhtml_status_t myhtml_tree_init(myhtml_tree_t* tree, myhtml_t* myhtml)
if(mcstatus)
return MyHTML_STATUS_TREE_ERROR_MCOBJECT_CREATE_NODE;
- tree->mchar_node_id = mchar_async_node_add(tree->mchar);
-
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
-
- tree->async_args = (myhtml_async_args_t*)myhtml_calloc(myhtml->thread->pth_list_length, sizeof(myhtml_async_args_t));
-
+#ifndef MyCORE_BUILD_WITHOUT_THREADS
+ tree->async_args = (myhtml_async_args_t*)mycore_calloc(myhtml->thread_total, sizeof(myhtml_async_args_t));
if(tree->async_args == NULL)
- return MyHTML_STATUS_TREE_ERROR_MEMORY_ALLOCATION;
-
- // for single mode in main thread
- tree->async_args[0].mchar_node_id = tree->mchar_node_id;
+ return MyHTML_STATUS_ERROR_MEMORY_ALLOCATION;
// for batch thread
- for(size_t i = 0; i < myhtml->thread->batch_count; i++) {
- tree->async_args[(myhtml->thread->batch_first_id + i)].mchar_node_id = mchar_async_node_add(tree->mchar);
+ for(size_t i = 0; i < myhtml->thread_total; i++) {
+ tree->async_args[i].mchar_node_id = mchar_async_node_add(tree->mchar, &status);
+
+ if(status)
+ return status;
}
-
-#else /* MyHTML_BUILD_WITHOUT_THREADS */
-
- tree->async_args = (myhtml_async_args_t*)myhtml_calloc(1, sizeof(myhtml_async_args_t));
+#else /* MyCORE_BUILD_WITHOUT_THREADS */
+ tree->async_args = (myhtml_async_args_t*)mycore_calloc(1, sizeof(myhtml_async_args_t));
if(tree->async_args == NULL)
return MyHTML_STATUS_TREE_ERROR_MEMORY_ALLOCATION;
- tree->async_args->mchar_node_id = tree->mchar_node_id;
+ tree->async_args->mchar_node_id = mchar_async_node_add(tree->mchar, &status);
-#endif /* MyHTML_BUILD_WITHOUT_THREADS */
+ if(status)
+ return status;
+
+#endif /* MyCORE_BUILD_WITHOUT_THREADS */
+
+ /* for main thread only after parsing */
+ tree->mchar_node_id = tree->async_args->mchar_node_id;
tree->sync = mcsync_create();
- mcsync_init(tree->sync);
+ if(tree->sync == NULL)
+ return MyHTML_STATUS_ERROR_MEMORY_ALLOCATION;
+
+ if(mcsync_init(tree->sync))
+ return MyHTML_STATUS_ERROR_MEMORY_ALLOCATION;
/* init Tags after create and init mchar */
tree->tags = myhtml_tag_create();
@@ -133,22 +151,23 @@ myhtml_status_t myhtml_tree_init(myhtml_tree_t* tree, myhtml_t* myhtml)
void myhtml_tree_clean(myhtml_tree_t* tree)
{
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
+#ifndef MyCORE_BUILD_WITHOUT_THREADS
myhtml_t* myhtml = tree->myhtml;
- for(size_t i = 0; i < myhtml->thread->batch_count; i++) {
- mchar_async_node_clean(tree->mchar, tree->async_args[(myhtml->thread->batch_first_id + i)].mchar_node_id);
+ for(size_t i = 0; i < myhtml->thread_total; i++) {
+ mchar_async_node_clean(tree->mchar, tree->async_args[i].mchar_node_id);
}
-#endif /* MyHTML_BUILD_WITHOUT_THREADS */
+#else
+ mchar_async_node_clean(tree->mchar, tree->mchar_node_id);
+#endif
mcobject_async_node_clean(tree->tree_obj, tree->mcasync_tree_id);
mcobject_async_node_clean(tree->token->nodes_obj, tree->mcasync_rules_token_id);
mcobject_async_node_clean(tree->token->attr_obj, tree->mcasync_rules_attr_id);
- mchar_async_node_clean(tree->mchar, tree->mchar_node_id);
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
- mythread_queue_list_entry_clean(tree->myhtml->thread, tree->queue_entry);
-#endif /* MyHTML_BUILD_WITHOUT_THREADS */
+#ifndef MyCORE_BUILD_WITHOUT_THREADS
+ mythread_queue_list_entry_clean(tree->queue_entry);
+#endif /* MyCORE_BUILD_WITHOUT_THREADS */
myhtml_token_clean(tree->token);
@@ -184,8 +203,8 @@ void myhtml_tree_clean(myhtml_tree_t* tree)
tree->token_last_done = NULL;
tree->tokenizer_status = MyHTML_STATUS_OK;
- tree->encoding = MyHTML_ENCODING_UTF_8;
- tree->encoding_usereq = MyHTML_ENCODING_DEFAULT;
+ tree->encoding = MyENCODING_UTF_8;
+ tree->encoding_usereq = MyENCODING_DEFAULT;
myhtml_stream_buffer_clean(tree->stream_buffer);
@@ -239,8 +258,8 @@ void myhtml_tree_clean_all(myhtml_tree_t* tree)
tree->token_last_done = NULL;
tree->tokenizer_status = MyHTML_STATUS_OK;
- tree->encoding = MyHTML_ENCODING_UTF_8;
- tree->encoding_usereq = MyHTML_ENCODING_DEFAULT;
+ tree->encoding = MyENCODING_UTF_8;
+ tree->encoding_usereq = MyENCODING_DEFAULT;
myhtml_stream_buffer_clean(tree->stream_buffer);
@@ -252,9 +271,9 @@ void myhtml_tree_clean_all(myhtml_tree_t* tree)
mcobject_clean(tree->mcobject_incoming_buf);
myhtml_tag_clean(tree->tags);
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
- mythread_queue_list_entry_clean(tree->myhtml->thread, tree->queue_entry);
-#endif /* MyHTML_BUILD_WITHOUT_THREADS */
+#ifndef MyCORE_BUILD_WITHOUT_THREADS
+ mythread_queue_list_entry_clean(tree->queue_entry);
+#endif
tree->attr_current = myhtml_token_attr_create(tree->token, tree->token->mcasync_attr_id);
}
@@ -281,8 +300,8 @@ myhtml_tree_t * myhtml_tree_destroy(myhtml_tree_t* tree)
myhtml_tree_temp_tag_name_destroy(&tree->temp_tag_name, false);
- myhtml_free(tree->async_args);
- myhtml_free(tree);
+ mycore_free(tree->async_args);
+ mycore_free(tree);
return NULL;
}
@@ -493,7 +512,7 @@ myhtml_tree_node_t * myhtml_tree_node_clone(myhtml_tree_node_t* node)
{
myhtml_tree_node_t* new_node = myhtml_tree_node_create(node->tree);
- myhtml_token_node_wait_for_done(node->token);
+ myhtml_token_node_wait_for_done(node->tree->token, node->token);
new_node->token = myhtml_token_node_clone(node->tree->token, node->token,
node->tree->mcasync_rules_token_id,
@@ -735,11 +754,11 @@ bool myhtml_tree_element_in_scope_by_node(myhtml_tree_node_t* node, enum myhtml_
// list
myhtml_tree_list_t * myhtml_tree_list_init(void)
{
- myhtml_tree_list_t* list = myhtml_malloc(sizeof(myhtml_tree_list_t));
+ myhtml_tree_list_t* list = mycore_malloc(sizeof(myhtml_tree_list_t));
list->length = 0;
list->size = 4096;
- list->list = (myhtml_tree_node_t**)myhtml_malloc(sizeof(myhtml_tree_node_t*) * list->size);
+ list->list = (myhtml_tree_node_t**)mycore_malloc(sizeof(myhtml_tree_node_t*) * list->size);
return list;
}
@@ -755,10 +774,10 @@ myhtml_tree_list_t * myhtml_tree_list_destroy(myhtml_tree_list_t* list, bool des
return NULL;
if(list->list)
- myhtml_free(list->list);
+ mycore_free(list->list);
if(destroy_self && list) {
- myhtml_free(list);
+ mycore_free(list);
return NULL;
}
@@ -770,7 +789,7 @@ void myhtml_tree_list_append(myhtml_tree_list_t* list, myhtml_tree_node_t* node)
if(list->length >= list->size) {
list->size <<= 1;
- myhtml_tree_node_t** tmp = (myhtml_tree_node_t**)myhtml_realloc(list->list, sizeof(myhtml_tree_node_t*) * list->size);
+ myhtml_tree_node_t** tmp = (myhtml_tree_node_t**)mycore_realloc(list->list, sizeof(myhtml_tree_node_t*) * list->size);
if(tmp)
list->list = tmp;
@@ -790,7 +809,7 @@ void myhtml_tree_list_insert_by_index(myhtml_tree_list_t* list, myhtml_tree_node
if(list->length >= list->size) {
list->size <<= 1;
- myhtml_tree_node_t** tmp = (myhtml_tree_node_t**)myhtml_realloc(list->list, sizeof(myhtml_tree_node_t*) * list->size);
+ myhtml_tree_node_t** tmp = (myhtml_tree_node_t**)mycore_realloc(list->list, sizeof(myhtml_tree_node_t*) * list->size);
if(tmp)
list->list = tmp;
@@ -831,7 +850,7 @@ myhtml_tree_list_t * myhtml_tree_open_elements_destroy(myhtml_tree_t* tree)
myhtml_tree_node_t * myhtml_tree_current_node(myhtml_tree_t* tree)
{
if(tree->open_elements->length == 0) {
- MyHTML_DEBUG("Current node; Open elements is 0");
+ MyCORE_DEBUG("Current node; Open elements is 0");
return 0;
}
@@ -861,9 +880,9 @@ void myhtml_tree_open_elements_pop(myhtml_tree_t* tree)
if(tree->open_elements->length)
tree->open_elements->length--;
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(tree->open_elements->length == 0) {
- MyHTML_DEBUG("Pop open elements; Now, Open Elements set 0; Good, if the end of parsing, otherwise is very bad");
+ MyCORE_DEBUG("Pop open elements; Now, Open Elements set 0; Good, if the end of parsing, otherwise is very bad");
}
#endif
}
@@ -886,9 +905,9 @@ void myhtml_tree_open_elements_remove(myhtml_tree_t* tree, myhtml_tree_node_t* n
}
}
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(tree->open_elements->length == 0) {
- MyHTML_DEBUG("Remove open elements; Now, Open Elements set 0; Good, if the end of parsing, otherwise is very bad");
+ MyCORE_DEBUG("Remove open elements; Now, Open Elements set 0; Good, if the end of parsing, otherwise is very bad");
}
#endif
}
@@ -913,9 +932,9 @@ void myhtml_tree_open_elements_pop_until(myhtml_tree_t* tree, myhtml_tag_id_t ta
}
}
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(tree->open_elements->length == 0) {
- MyHTML_DEBUG("Until open elements; Now, Open Elements set 0; Good, if the end of parsing, otherwise is very bad");
+ MyCORE_DEBUG("Until open elements; Now, Open Elements set 0; Good, if the end of parsing, otherwise is very bad");
}
#endif
}
@@ -936,9 +955,9 @@ void myhtml_tree_open_elements_pop_until_by_node(myhtml_tree_t* tree, myhtml_tre
}
}
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(tree->open_elements->length == 0) {
- MyHTML_DEBUG("Until by node open elements; Now, Open Elements set 0; Good, if the end of parsing, otherwise is very bad");
+ MyCORE_DEBUG("Until by node open elements; Now, Open Elements set 0; Good, if the end of parsing, otherwise is very bad");
}
#endif
}
@@ -957,9 +976,9 @@ void myhtml_tree_open_elements_pop_until_by_index(myhtml_tree_t* tree, size_t id
}
}
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(tree->open_elements->length == 0) {
- MyHTML_DEBUG("Until by index open elements; Now, Open Elements set 0; Good, if the end of parsing, otherwise is very bad");
+ MyCORE_DEBUG("Until by index open elements; Now, Open Elements set 0; Good, if the end of parsing, otherwise is very bad");
}
#endif
}
@@ -1045,7 +1064,7 @@ myhtml_tree_node_t * myhtml_tree_open_elements_find_by_tag_idx(myhtml_tree_t* tr
void myhtml_tree_generate_implied_end_tags(myhtml_tree_t* tree, myhtml_tag_id_t exclude_tag_idx, myhtml_namespace_t mynamespace)
{
if(tree->open_elements->length == 0) {
- MyHTML_DEBUG("Generate implied end tags; Open elements is 0");
+ MyCORE_DEBUG("Generate implied end tags; Open elements is 0");
return;
}
@@ -1053,9 +1072,9 @@ void myhtml_tree_generate_implied_end_tags(myhtml_tree_t* tree, myhtml_tag_id_t
{
myhtml_tree_node_t* current_node = myhtml_tree_current_node(tree);
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(current_node == NULL) {
- MyHTML_DEBUG_ERROR("Generate implied end tags; Current node is NULL! This is very bad");
+ MyCORE_DEBUG_ERROR("Generate implied end tags; Current node is NULL! This is very bad");
}
#endif
@@ -1087,7 +1106,7 @@ void myhtml_tree_generate_implied_end_tags(myhtml_tree_t* tree, myhtml_tag_id_t
void myhtml_tree_generate_all_implied_end_tags(myhtml_tree_t* tree, myhtml_tag_id_t exclude_tag_idx, myhtml_namespace_t mynamespace)
{
if(tree->open_elements->length == 0) {
- MyHTML_DEBUG("Generate all implied end tags; Open elements is 0");
+ MyCORE_DEBUG("Generate all implied end tags; Open elements is 0");
return;
}
@@ -1095,9 +1114,9 @@ void myhtml_tree_generate_all_implied_end_tags(myhtml_tree_t* tree, myhtml_tag_i
{
myhtml_tree_node_t* current_node = myhtml_tree_current_node(tree);
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(current_node == NULL) {
- MyHTML_DEBUG_ERROR("Generate all implied end tags; Current node is NULL! This is very bad");
+ MyCORE_DEBUG_ERROR("Generate all implied end tags; Current node is NULL! This is very bad");
}
#endif
@@ -1136,7 +1155,7 @@ void myhtml_tree_generate_all_implied_end_tags(myhtml_tree_t* tree, myhtml_tag_i
void myhtml_tree_reset_insertion_mode_appropriately(myhtml_tree_t* tree)
{
if(tree->open_elements->length == 0) {
- MyHTML_DEBUG("Reset insertion mode appropriately; Open elements is 0");
+ MyCORE_DEBUG("Reset insertion mode appropriately; Open elements is 0");
return;
}
@@ -1154,9 +1173,9 @@ void myhtml_tree_reset_insertion_mode_appropriately(myhtml_tree_t* tree)
// step 2
myhtml_tree_node_t* node = list[i];
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(node == NULL) {
- MyHTML_DEBUG_ERROR("Reset insertion mode appropriately; node is NULL! This is very bad");
+ MyCORE_DEBUG_ERROR("Reset insertion mode appropriately; node is NULL! This is very bad");
}
#endif
@@ -1197,9 +1216,9 @@ void myhtml_tree_reset_insertion_mode_appropriately(myhtml_tree_t* tree)
return;
}
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(ancestor == 0) {
- MyHTML_DEBUG_ERROR("Reset insertion mode appropriately; Ancestor is 0! This is very, very bad");
+ MyCORE_DEBUG_ERROR("Reset insertion mode appropriately; Ancestor is 0! This is very, very bad");
}
#endif
@@ -1315,9 +1334,9 @@ myhtml_tree_list_t * myhtml_tree_active_formatting_destroy(myhtml_tree_t* tree)
bool myhtml_tree_active_formatting_is_marker(myhtml_tree_t* tree, myhtml_tree_node_t* node)
{
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(node == NULL) {
- MyHTML_DEBUG_ERROR("Active formatting is marker; node is NULL!");
+ MyCORE_DEBUG_ERROR("Active formatting is marker; node is NULL!");
}
#endif
@@ -1351,9 +1370,9 @@ void myhtml_tree_active_formatting_pop(myhtml_tree_t* tree)
if(tree->active_formatting->length)
tree->active_formatting->length--;
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(tree->active_formatting->length == 0) {
- MyHTML_DEBUG("Pop active formatting; length is 0");
+ MyCORE_DEBUG("Pop active formatting; length is 0");
}
#endif
}
@@ -1376,9 +1395,9 @@ void myhtml_tree_active_formatting_remove(myhtml_tree_t* tree, myhtml_tree_node_
}
}
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(tree->active_formatting->length == 0) {
- // MyHTML_DEBUG("Remove active formatting; length is 0");
+ // MyCORE_DEBUG("Remove active formatting; length is 0");
}
#endif
}
@@ -1390,9 +1409,9 @@ void myhtml_tree_active_formatting_remove_by_index(myhtml_tree_t* tree, size_t i
memmove(&list[idx], &list[idx + 1], sizeof(myhtml_tree_node_t*) * (tree->active_formatting->length - idx));
tree->active_formatting->length--;
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(tree->active_formatting->length == 0) {
- MyHTML_DEBUG("Remove active formatting by index; length is 0");
+ MyCORE_DEBUG("Remove active formatting by index; length is 0");
}
#endif
}
@@ -1413,9 +1432,9 @@ void myhtml_tree_active_formatting_append_with_check(myhtml_tree_t* tree, myhtml
{
i--;
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(list[i] == NULL) {
- MyHTML_DEBUG("Appen active formatting with check; list[%zu] is NULL", i);
+ MyCORE_DEBUG("Appen active formatting with check; list[" MyCORE_FORMAT_Z "] is NULL", i);
}
#endif
@@ -1424,8 +1443,8 @@ void myhtml_tree_active_formatting_append_with_check(myhtml_tree_t* tree, myhtml
if(list[i]->token && node->token)
{
- myhtml_token_node_wait_for_done(list[i]->token);
- myhtml_token_node_wait_for_done(node->token);
+ myhtml_token_node_wait_for_done(tree->token, list[i]->token);
+ myhtml_token_node_wait_for_done(tree->token, node->token);
if(list[i]->ns == node->ns &&
list[i]->tag_id == node->tag_id &&
@@ -1446,7 +1465,7 @@ void myhtml_tree_active_formatting_append_with_check(myhtml_tree_t* tree, myhtml
myhtml_tree_node_t * myhtml_tree_active_formatting_current_node(myhtml_tree_t* tree)
{
if(tree->active_formatting->length == 0) {
- MyHTML_DEBUG("Current node active formatting; length is 0");
+ MyCORE_DEBUG("Current node active formatting; length is 0");
return 0;
}
@@ -1482,9 +1501,9 @@ void myhtml_tree_active_formatting_up_to_last_marker(myhtml_tree_t* tree)
if(tree->active_formatting->length == 0)
return;
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(list[ tree->active_formatting->length ] == NULL) {
- MyHTML_DEBUG("Up to last marker active formatting; list[%zu] is NULL", tree->active_formatting->length);
+ MyCORE_DEBUG("Up to last marker active formatting; list[" MyCORE_FORMAT_Z "] is NULL", tree->active_formatting->length);
}
#endif
@@ -1492,9 +1511,9 @@ void myhtml_tree_active_formatting_up_to_last_marker(myhtml_tree_t* tree)
{
tree->active_formatting->length--;
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(list[ tree->active_formatting->length ] == NULL) {
- MyHTML_DEBUG("Up to last marker active formatting; list[%zu] is NULL", tree->active_formatting->length);
+ MyCORE_DEBUG("Up to last marker active formatting; list[" MyCORE_FORMAT_Z "] is NULL", tree->active_formatting->length);
}
#endif
@@ -1515,9 +1534,9 @@ myhtml_tree_node_t * myhtml_tree_active_formatting_between_last_marker(myhtml_tr
{
i--;
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(list[i] == NULL) {
- MyHTML_DEBUG("Between last marker active formatting; list[%zu] is NULL", i);
+ MyCORE_DEBUG("Between last marker active formatting; list[" MyCORE_FORMAT_Z "] is NULL", i);
}
#endif
@@ -1554,9 +1573,9 @@ void myhtml_tree_active_formatting_reconstruction(myhtml_tree_t* tree)
{
af_idx--;
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(list[af_idx] == NULL) {
- MyHTML_DEBUG("Formatting reconstruction; Step 4--6; list[%zu] is NULL", af_idx);
+ MyCORE_DEBUG("Formatting reconstruction; Step 4--6; list[" MyCORE_FORMAT_Z "] is NULL", af_idx);
}
#endif
@@ -1570,9 +1589,9 @@ void myhtml_tree_active_formatting_reconstruction(myhtml_tree_t* tree)
while (af_idx < af->length)
{
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(list[af_idx] == NULL) {
- MyHTML_DEBUG("Formatting reconstruction; Next steps; list[%zu] is NULL", af_idx);
+ MyCORE_DEBUG("Formatting reconstruction; Next steps; list[" MyCORE_FORMAT_Z "] is NULL", af_idx);
}
#endif
@@ -1596,9 +1615,9 @@ bool myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_token_nod
myhtml_tree_node_t** afe_list = tree->active_formatting->list;
myhtml_tree_node_t* current_node = oel_list[oel_curr_index];
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(current_node == NULL) {
- MyHTML_DEBUG_ERROR("Adoption agency algorithm; Current node is NULL");
+ MyCORE_DEBUG_ERROR("Adoption agency algorithm; Current node is NULL");
}
#endif
@@ -1707,18 +1726,18 @@ bool myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_token_nod
/* %EXTERNAL% VALIDATOR:RULES TOKEN STATUS:AAA_BEGIN LEVEL:INFO */
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(oel_format_el_idx == 0) {
- MyHTML_DEBUG_ERROR("Adoption agency algorithm; Step 11; oel_format_el_idx is 0; Bad!");
+ MyCORE_DEBUG_ERROR("Adoption agency algorithm; Step 11; oel_format_el_idx is 0; Bad!");
}
#endif
// step 12
myhtml_tree_node_t* common_ancestor = oel_list[oel_format_el_idx - 1];
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(common_ancestor == NULL) {
- MyHTML_DEBUG_ERROR("Adoption agency algorithm; Step 11; common_ancestor is NULL");
+ MyCORE_DEBUG_ERROR("Adoption agency algorithm; Step 11; common_ancestor is NULL");
}
#endif
@@ -1744,7 +1763,7 @@ bool myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_token_nod
if(node_index > 0)
node_index--;
else {
- fprintf(stderr, "ERROR: adoption agency algorithm; decrement node_index, node_index is null");
+ MyCORE_DEBUG_ERROR("Adoption agency algorithm; decrement node_index, node_index is null");
return false;
}
@@ -1752,9 +1771,9 @@ bool myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_token_nod
node = oel_list[node_index];
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(node == NULL) {
- MyHTML_DEBUG_ERROR("Adoption agency algorithm; Step 13.3; node is NULL");
+ MyCORE_DEBUG_ERROR("Adoption agency algorithm; Step 13.3; node is NULL");
}
#endif
// step 14.4
@@ -1795,9 +1814,9 @@ bool myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_token_nod
if(last == furthest_block) {
bookmark = afe_node_index + 1;
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(bookmark >= tree->active_formatting->length) {
- MyHTML_DEBUG_ERROR("Adoption agency algorithm; Step 13.8; bookmark >= open_elements length");
+ MyCORE_DEBUG_ERROR("Adoption agency algorithm; Step 13.8; bookmark >= open_elements length");
}
#endif
}
@@ -1846,9 +1865,9 @@ bool myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_token_nod
if(afe_index < bookmark)
bookmark--;
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(bookmark >= tree->active_formatting->length) {
- MyHTML_DEBUG_ERROR("Adoption agency algorithm; Before Step 18; bookmark (%zu) >= open_elements length", bookmark);
+ MyCORE_DEBUG_ERROR("Adoption agency algorithm; Before Step 18; bookmark (" MyCORE_FORMAT_Z ") >= open_elements length", bookmark);
}
#endif
@@ -1862,7 +1881,7 @@ bool myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_token_nod
myhtml_tree_list_insert_by_index(tree->open_elements, new_formatting_element, idx_furthest_block + 1);
}
else {
- MyHTML_DEBUG_ERROR("Adoption agency algorithm; Step 19; can't find furthest_block in open elements");
+ MyCORE_DEBUG_ERROR("Adoption agency algorithm; Step 19; can't find furthest_block in open elements");
}
}
@@ -1881,9 +1900,9 @@ myhtml_tree_node_t * myhtml_tree_appropriate_place_inserting(myhtml_tree_t* tree
myhtml_tree_node_t* adjusted_location;
if(tree->foster_parenting) {
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(target == NULL) {
- MyHTML_DEBUG_ERROR("Appropriate place inserting; Step 2; target is NULL in return value! This IS very bad");
+ MyCORE_DEBUG_ERROR("Appropriate place inserting; Step 2; target is NULL in return value! This IS very bad");
}
#endif
if(target->ns != MyHTML_NAMESPACE_HTML)
@@ -1932,9 +1951,9 @@ myhtml_tree_node_t * myhtml_tree_appropriate_place_inserting(myhtml_tree_t* tree
break;
}
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(idx_table == 0) {
- MyHTML_DEBUG_ERROR("Appropriate place inserting; Step 2.5; idx_table is 0");
+ MyCORE_DEBUG_ERROR("Appropriate place inserting; Step 2.5; idx_table is 0");
}
#endif
@@ -1950,9 +1969,9 @@ myhtml_tree_node_t * myhtml_tree_appropriate_place_inserting(myhtml_tree_t* tree
}
}
else {
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(target == NULL) {
- MyHTML_DEBUG_ERROR("Appropriate place inserting; Step 3-5; target is NULL in return value! This IS very bad");
+ MyCORE_DEBUG_ERROR("Appropriate place inserting; Step 3-5; target is NULL in return value! This IS very bad");
}
#endif
@@ -1972,9 +1991,9 @@ myhtml_tree_node_t * myhtml_tree_appropriate_place_inserting_in_tree(myhtml_tree
myhtml_tree_node_t* adjusted_location;
if(target->tree->foster_parenting) {
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(target == NULL) {
- MyHTML_DEBUG_ERROR("Appropriate place inserting; Step 2; target is NULL in return value! This IS very bad");
+ MyCORE_DEBUG_ERROR("Appropriate place inserting; Step 2; target is NULL in return value! This IS very bad");
}
#endif
@@ -2028,12 +2047,6 @@ myhtml_tree_node_t * myhtml_tree_appropriate_place_inserting_in_tree(myhtml_tree
break;
}
-#ifdef DEBUG_MODE
- if(idx_table == 0) {
- MyHTML_DEBUG_ERROR("Appropriate place inserting; Step 2.5; idx_table is 0");
- }
-#endif
-
// step 2.6-7
adjusted_location = target;
@@ -2047,9 +2060,9 @@ myhtml_tree_node_t * myhtml_tree_appropriate_place_inserting_in_tree(myhtml_tree
}
}
else {
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(target == NULL) {
- MyHTML_DEBUG_ERROR("Appropriate place inserting; Step 3-5; target is NULL in return value! This IS very bad");
+ MyCORE_DEBUG_ERROR("Appropriate place inserting; Step 3-5; target is NULL in return value! This IS very bad");
}
#endif
@@ -2066,11 +2079,11 @@ myhtml_tree_node_t * myhtml_tree_appropriate_place_inserting_in_tree(myhtml_tree
// stack of template insertion modes
myhtml_tree_insertion_list_t * myhtml_tree_template_insertion_init(myhtml_tree_t* tree)
{
- myhtml_tree_insertion_list_t* list = myhtml_malloc(sizeof(myhtml_tree_insertion_list_t));
+ myhtml_tree_insertion_list_t* list = mycore_malloc(sizeof(myhtml_tree_insertion_list_t));
list->length = 0;
list->size = 1024;
- list->list = (enum myhtml_insertion_mode*)myhtml_malloc(sizeof(enum myhtml_insertion_mode) * list->size);
+ list->list = (enum myhtml_insertion_mode*)mycore_malloc(sizeof(enum myhtml_insertion_mode) * list->size);
tree->template_insertion = list;
@@ -2088,10 +2101,10 @@ myhtml_tree_insertion_list_t * myhtml_tree_template_insertion_destroy(myhtml_tre
return NULL;
if(tree->template_insertion->list)
- myhtml_free(tree->template_insertion->list);
+ mycore_free(tree->template_insertion->list);
if(tree->template_insertion)
- myhtml_free(tree->template_insertion);
+ mycore_free(tree->template_insertion);
return NULL;
}
@@ -2103,7 +2116,7 @@ void myhtml_tree_template_insertion_append(myhtml_tree_t* tree, enum myhtml_inse
if(list->length >= list->size) {
list->size <<= 1;
- enum myhtml_insertion_mode* tmp = (enum myhtml_insertion_mode*)myhtml_realloc(list->list,
+ enum myhtml_insertion_mode* tmp = (enum myhtml_insertion_mode*)mycore_realloc(list->list,
sizeof(enum myhtml_insertion_mode) * list->size);
if(tmp)
@@ -2119,9 +2132,9 @@ void myhtml_tree_template_insertion_pop(myhtml_tree_t* tree)
if(tree->template_insertion->length)
tree->template_insertion->length--;
-#ifdef DEBUG_MODE
+#ifdef MyCORE_BUILD_DEBUG
if(tree->template_insertion->length == 0) {
- MyHTML_DEBUG("Pop template insertion; length is 0");
+ MyCORE_DEBUG("Pop template insertion; length is 0");
}
#endif
}
@@ -2131,122 +2144,14 @@ size_t myhtml_tree_template_insertion_length(myhtml_tree_t* tree)
return tree->template_insertion->length;
}
-void myhtml_tree_print_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, FILE* out)
-{
- if(node == NULL)
- return;
-
- const myhtml_tag_context_t *ctx = myhtml_tag_get_by_id(tree->tags, node->tag_id);
-
- if(node->tag_id == MyHTML_TAG__TEXT ||
- node->tag_id == MyHTML_TAG__COMMENT)
- {
- if(node->token)
- fprintf(out, "<%.*s>: %.*s\n", (int)ctx->name_length, ctx->name,
- (int)node->token->str.length, node->token->str.data);
- else
- fprintf(out, "<%.*s>\n", (int)ctx->name_length, ctx->name);
- }
- else if(node->tag_id == MyHTML_TAG__DOCTYPE)
- {
- fprintf(out, "<!DOCTYPE");
-
- if(tree->doctype.attr_name) {
- fprintf(out, " %s", tree->doctype.attr_name);
- }
-
- if(tree->doctype.attr_public) {
- fprintf(out, " %s", tree->doctype.attr_public);
- }
-
- if(tree->doctype.attr_system) {
- fprintf(out, " %s", tree->doctype.attr_system);
- }
-
- fprintf(out, ">\n");
- }
- else
- {
- if(node->token && node->token->type & MyHTML_TOKEN_TYPE_CLOSE) {
- fprintf(out, "</%.*s", (int)ctx->name_length, ctx->name);
- }
- else {
- fprintf(out, "<%.*s", (int)ctx->name_length, ctx->name);
- }
-
- if(node->ns != MyHTML_NAMESPACE_HTML) {
- switch (node->ns) {
- case MyHTML_NAMESPACE_SVG:
- fprintf(out, ":svg");
- break;
- case MyHTML_NAMESPACE_MATHML:
- fprintf(out, ":math");
- break;
- case MyHTML_NAMESPACE_XLINK:
- fprintf(out, ":xlink");
- break;
- case MyHTML_NAMESPACE_XML:
- fprintf(out, ":xml");
- break;
- case MyHTML_NAMESPACE_XMLNS:
- fprintf(out, ":xmlns");
- break;
- default:
- break;
- }
- }
-
- if(node->token)
- myhtml_token_print_attr(tree, node->token, out);
-
- fprintf(out, ">\n");
- }
-}
-
-void _myhtml_tree_print_node_children(myhtml_tree_t* tree, myhtml_tree_node_t* node, FILE* out, size_t inc)
-{
- if(node == NULL)
- return;
-
- size_t i;
-
- while(node)
- {
- for(i = 0; i < inc; i++)
- fprintf(out, "\t");
-
- myhtml_tree_print_node(tree, node, out);
- _myhtml_tree_print_node_children(tree, node->child, out, (inc + 1));
-
- node = node->next;
- }
-}
-
-void myhtml_tree_print_node_children(myhtml_tree_t* tree, myhtml_tree_node_t* node, FILE* out, size_t inc)
-{
- if(node == NULL)
- return;
-
- _myhtml_tree_print_node_children(tree, node->child, out, inc);
-}
-
-void myhtml_tree_print_by_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, FILE* out, size_t inc)
-{
- if(node == NULL)
- return;
-
- myhtml_tree_print_node(tree, node, out);
- myhtml_tree_print_node_children(tree, node, out, (inc + 1));
-}
-
// token list
myhtml_tree_token_list_t * myhtml_tree_token_list_init(void)
{
- myhtml_tree_token_list_t* list = myhtml_malloc(sizeof(myhtml_tree_token_list_t));
+ myhtml_tree_token_list_t* list = mycore_malloc(sizeof(myhtml_tree_token_list_t));
list->length = 0;
list->size = 4096;
- list->list = (myhtml_token_node_t**)myhtml_malloc(sizeof(myhtml_token_node_t*) * list->size);
+ list->list = (myhtml_token_node_t**)mycore_malloc(sizeof(myhtml_token_node_t*) * list->size);
return list;
}
@@ -2262,10 +2167,10 @@ myhtml_tree_token_list_t * myhtml_tree_token_list_destroy(myhtml_tree_token_list
return NULL;
if(list->list)
- myhtml_free(list->list);
+ mycore_free(list->list);
if(destroy_self && list) {
- myhtml_free(list);
+ mycore_free(list);
return NULL;
}
@@ -2277,7 +2182,7 @@ void myhtml_tree_token_list_append(myhtml_tree_token_list_t* list, myhtml_token_
if(list->length >= list->size) {
list->size <<= 1;
- myhtml_token_node_t** tmp = (myhtml_token_node_t**)myhtml_realloc(list->list, sizeof(myhtml_token_node_t*) * list->size);
+ myhtml_token_node_t** tmp = (myhtml_token_node_t**)mycore_realloc(list->list, sizeof(myhtml_token_node_t*) * list->size);
if(tmp)
list->list = tmp;
@@ -2292,7 +2197,7 @@ void myhtml_tree_token_list_append_after_index(myhtml_tree_token_list_t* list, m
if(list->length >= list->size) {
list->size <<= 1;
- myhtml_token_node_t** tmp = (myhtml_token_node_t**)myhtml_realloc(list->list, sizeof(myhtml_token_node_t*) * list->size);
+ myhtml_token_node_t** tmp = (myhtml_token_node_t**)mycore_realloc(list->list, sizeof(myhtml_token_node_t*) * list->size);
if(tmp)
list->list = tmp;
@@ -2313,7 +2218,7 @@ void myhtml_tree_token_list_append_after_index(myhtml_tree_token_list_t* list, m
myhtml_token_node_t * myhtml_tree_token_list_current_node(myhtml_tree_token_list_t* list)
{
if(list->length == 0) {
- MyHTML_DEBUG("Token list current node; length is 0");
+ MyCORE_DEBUG("Token list current node; length is 0");
return NULL;
}
@@ -2443,7 +2348,7 @@ bool myhtml_tree_is_html_integration_point(myhtml_tree_t* tree, myhtml_tree_node
node->tag_id == MyHTML_TAG_ANNOTATION_XML && node->token &&
(node->token->type & MyHTML_TOKEN_TYPE_CLOSE) == 0)
{
- myhtml_token_node_wait_for_done(node->token);
+ myhtml_token_node_wait_for_done(tree->token, node->token);
myhtml_token_attr_t* attr = myhtml_token_attr_match_case(tree->token, node->token,
"encoding", 8, "text/html", 9);
@@ -2460,11 +2365,11 @@ bool myhtml_tree_is_html_integration_point(myhtml_tree_t* tree, myhtml_tree_node
}
// temp tag name
-myhtml_status_t myhtml_tree_temp_tag_name_init(myhtml_tree_temp_tag_name_t* temp_tag_name)
+mystatus_t myhtml_tree_temp_tag_name_init(myhtml_tree_temp_tag_name_t* temp_tag_name)
{
temp_tag_name->size = 1024;
temp_tag_name->length = 0;
- temp_tag_name->data = (char *)myhtml_malloc(temp_tag_name->size * sizeof(char));
+ temp_tag_name->data = (char *)mycore_malloc(temp_tag_name->size * sizeof(char));
if(temp_tag_name->data == NULL)
return MyHTML_STATUS_ERROR_MEMORY_ALLOCATION;
@@ -2483,23 +2388,23 @@ myhtml_tree_temp_tag_name_t * myhtml_tree_temp_tag_name_destroy(myhtml_tree_temp
return NULL;
if(temp_tag_name->data) {
- myhtml_free(temp_tag_name->data);
+ mycore_free(temp_tag_name->data);
temp_tag_name->data = NULL;
}
if(self_destroy) {
- myhtml_free(temp_tag_name);
+ mycore_free(temp_tag_name);
return NULL;
}
return temp_tag_name;
}
-myhtml_status_t myhtml_tree_temp_tag_name_append_one(myhtml_tree_temp_tag_name_t* temp_tag_name, const char name)
+mystatus_t myhtml_tree_temp_tag_name_append_one(myhtml_tree_temp_tag_name_t* temp_tag_name, const char name)
{
if(temp_tag_name->length >= temp_tag_name->size) {
size_t nsize = temp_tag_name->size << 1;
- char *tmp = (char *)myhtml_realloc(temp_tag_name->data, nsize * sizeof(char));
+ char *tmp = (char *)mycore_realloc(temp_tag_name->data, nsize * sizeof(char));
if(tmp) {
temp_tag_name->size = nsize;
@@ -2515,14 +2420,14 @@ myhtml_status_t myhtml_tree_temp_tag_name_append_one(myhtml_tree_temp_tag_name_t
return MyHTML_STATUS_OK;
}
-myhtml_status_t myhtml_tree_temp_tag_name_append(myhtml_tree_temp_tag_name_t* temp_tag_name, const char* name, size_t name_len)
+mystatus_t myhtml_tree_temp_tag_name_append(myhtml_tree_temp_tag_name_t* temp_tag_name, const char* name, size_t name_len)
{
if(temp_tag_name->data == NULL || name_len == 0)
return MyHTML_STATUS_OK;
if((temp_tag_name->length + name_len) >= temp_tag_name->size) {
size_t nsize = (temp_tag_name->size << 1) + name_len;
- char *tmp = (char *)myhtml_realloc(temp_tag_name->data, nsize * sizeof(char));
+ char *tmp = (char *)mycore_realloc(temp_tag_name->data, nsize * sizeof(char));
if(tmp) {
temp_tag_name->size = nsize;
@@ -2540,20 +2445,19 @@ myhtml_status_t myhtml_tree_temp_tag_name_append(myhtml_tree_temp_tag_name_t* te
void myhtml_tree_wait_for_last_done_token(myhtml_tree_t* tree, myhtml_token_node_t* token_for_wait)
{
-#ifndef MyHTML_BUILD_WITHOUT_THREADS
+#ifndef MyCORE_BUILD_WITHOUT_THREADS
- const struct timespec timeout = {0, 0};
- while(tree->token_last_done != token_for_wait) {myhtml_thread_nanosleep(&timeout);}
+ while(tree->token_last_done != token_for_wait) {mythread_nanosleep_sleep(tree->myhtml->thread_stream->timespec);}
#endif
}
/* special tonek list */
-myhtml_status_t myhtml_tree_special_list_init(myhtml_tree_special_token_list_t* special)
+mystatus_t myhtml_tree_special_list_init(myhtml_tree_special_token_list_t* special)
{
special->size = 1024;
special->length = 0;
- special->list = (myhtml_tree_special_token_t *)myhtml_malloc(special->size * sizeof(myhtml_tree_special_token_t));
+ special->list = (myhtml_tree_special_token_t *)mycore_malloc(special->size * sizeof(myhtml_tree_special_token_t));
if(special->list == NULL)
return MyHTML_STATUS_ERROR_MEMORY_ALLOCATION;
@@ -2572,23 +2476,23 @@ myhtml_tree_special_token_list_t * myhtml_tree_special_list_destroy(myhtml_tree_
return NULL;
if(special->list) {
- myhtml_free(special->list);
+ mycore_free(special->list);
special->list = NULL;
}
if(self_destroy) {
- myhtml_free(special);
+ mycore_free(special);
return NULL;
}
return special;
}
-myhtml_status_t myhtml_tree_special_list_append(myhtml_tree_special_token_list_t* special, myhtml_token_node_t *token, myhtml_namespace_t ns)
+mystatus_t myhtml_tree_special_list_append(myhtml_tree_special_token_list_t* special, myhtml_token_node_t *token, myhtml_namespace_t ns)
{
if(special->length >= special->size) {
size_t nsize = special->size << 1;
- myhtml_tree_special_token_t *tmp = (myhtml_tree_special_token_t *)myhtml_realloc(special->list, nsize * sizeof(myhtml_tree_special_token_t));
+ myhtml_tree_special_token_t *tmp = (myhtml_tree_special_token_t *)mycore_realloc(special->list, nsize * sizeof(myhtml_tree_special_token_t));
if(tmp) {
special->size = nsize;
@@ -2628,14 +2532,14 @@ myhtml_tree_special_token_t * myhtml_tree_special_list_get_last(myhtml_tree_spec
}
/* incoming buffer */
-myhtml_incoming_buffer_t * myhtml_tree_incoming_buffer_first(myhtml_tree_t *tree)
+mycore_incoming_buffer_t * myhtml_tree_incoming_buffer_first(myhtml_tree_t *tree)
{
return tree->incoming_buf_first;
}
const char * myhtml_tree_incomming_buffer_make_data(myhtml_tree_t *tree, size_t begin, size_t length)
{
- myhtml_incoming_buffer_t *buffer = myhtml_incoming_buffer_find_by_position(tree->incoming_buf_first, begin);
+ mycore_incoming_buffer_t *buffer = mycore_incoming_buffer_find_by_position(tree->incoming_buf_first, begin);
size_t relative_begin = begin - buffer->offset;
if((relative_begin + length) <= buffer->size) {
diff --git a/source/myhtml/tree.h b/source/myhtml/tree.h
index 1e126f6..c3299de 100644
--- a/source/myhtml/tree.h
+++ b/source/myhtml/tree.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2016 Alexander Borisov
+ Copyright (C) 2015-2017 Alexander Borisov
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -31,10 +31,11 @@ extern "C" {
#include "myhtml/mystring.h"
#include "myhtml/token.h"
#include "myhtml/stream.h"
-#include "myhtml/utils/mcsync.h"
-#include "myhtml/utils/mchar_async.h"
-#include "myhtml/utils/mcobject.h"
-#include "myhtml/utils/mcobject_async.h"
+#include "mycore/thread_queue.h"
+#include "mycore/utils/mcsync.h"
+#include "mycore/utils/mchar_async.h"
+#include "mycore/utils/mcobject.h"
+#include "mycore/utils/mcobject_async.h"
#define myhtml_tree_get(tree, attr) tree->attr
#define myhtml_tree_set(tree, attr) tree->attr
@@ -164,7 +165,7 @@ struct myhtml_tree_temp_stream {
size_t length;
size_t size;
- myhtml_encoding_result_t res;
+ myencoding_result_t res;
struct myhtml_tree_temp_tag_name* current;
};
@@ -185,6 +186,11 @@ struct myhtml_tree {
size_t mcasync_rules_token_id;
size_t mcasync_rules_attr_id;
size_t mcasync_tree_id;
+ /*
+ * mchar_node_id
+ * for rules, or if single mode,
+ * or for main thread only after parsing
+ */
size_t mchar_node_id;
myhtml_token_attr_t* attr_current;
myhtml_tag_id_t tmp_tag_id;
@@ -192,8 +198,8 @@ struct myhtml_tree {
mythread_queue_node_t* current_qnode;
mcobject_t* mcobject_incoming_buf;
- myhtml_incoming_buffer_t* incoming_buf;
- myhtml_incoming_buffer_t* incoming_buf_first;
+ mycore_incoming_buffer_t* incoming_buf;
+ mycore_incoming_buffer_t* incoming_buf_first;
// ref for nodes
myhtml_tree_node_t* document;
@@ -227,10 +233,10 @@ struct myhtml_tree {
volatile myhtml_tree_parse_flags_t parse_flags;
bool foster_parenting;
size_t global_offset;
- myhtml_status_t tokenizer_status;
+ mystatus_t tokenizer_status;
- myhtml_encoding_t encoding;
- myhtml_encoding_t encoding_usereq;
+ myencoding_t encoding;
+ myencoding_t encoding_usereq;
myhtml_tree_temp_tag_name_t temp_tag_name;
/* callback */
@@ -249,7 +255,7 @@ struct myhtml_tree {
// base
myhtml_tree_t * myhtml_tree_create(void);
-myhtml_status_t myhtml_tree_init(myhtml_tree_t* tree, myhtml_t* myhtml);
+mystatus_t myhtml_tree_init(myhtml_tree_t* tree, myhtml_t* myhtml);
void myhtml_tree_clean(myhtml_tree_t* tree);
void myhtml_tree_clean_all(myhtml_tree_t* tree);
myhtml_tree_t * myhtml_tree_destroy(myhtml_tree_t* tree);
@@ -355,10 +361,6 @@ void myhtml_tree_node_clean(myhtml_tree_node_t* tree_node);
void myhtml_tree_node_free(myhtml_tree_node_t* node);
myhtml_tree_node_t * myhtml_tree_node_clone(myhtml_tree_node_t* node);
-void myhtml_tree_print_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, FILE* out);
-void myhtml_tree_print_node_children(myhtml_tree_t* tree, myhtml_tree_node_t* node, FILE* out, size_t inc);
-void myhtml_tree_print_by_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, FILE* out, size_t inc);
-
void myhtml_tree_node_add_child(myhtml_tree_node_t* root, myhtml_tree_node_t* node);
void myhtml_tree_node_insert_before(myhtml_tree_node_t* root, myhtml_tree_node_t* node);
void myhtml_tree_node_insert_after(myhtml_tree_node_t* root, myhtml_tree_node_t* node);
@@ -390,21 +392,21 @@ bool myhtml_tree_is_mathml_integration_point(myhtml_tree_t* tree, myhtml_tree_no
bool myhtml_tree_is_html_integration_point(myhtml_tree_t* tree, myhtml_tree_node_t* node);
// temp tag name
-myhtml_status_t myhtml_tree_temp_tag_name_init(myhtml_tree_temp_tag_name_t* temp_tag_name);
+mystatus_t myhtml_tree_temp_tag_name_init(myhtml_tree_temp_tag_name_t* temp_tag_name);
void myhtml_tree_temp_tag_name_clean(myhtml_tree_temp_tag_name_t* temp_tag_name);
myhtml_tree_temp_tag_name_t * myhtml_tree_temp_tag_name_destroy(myhtml_tree_temp_tag_name_t* temp_tag_name, bool self_destroy);
-myhtml_status_t myhtml_tree_temp_tag_name_append(myhtml_tree_temp_tag_name_t* temp_tag_name, const char* name, size_t name_len);
-myhtml_status_t myhtml_tree_temp_tag_name_append_one(myhtml_tree_temp_tag_name_t* temp_tag_name, const char name);
+mystatus_t myhtml_tree_temp_tag_name_append(myhtml_tree_temp_tag_name_t* temp_tag_name, const char* name, size_t name_len);
+mystatus_t myhtml_tree_temp_tag_name_append_one(myhtml_tree_temp_tag_name_t* temp_tag_name, const char name);
/* special tonek list */
-myhtml_status_t myhtml_tree_special_list_init(myhtml_tree_special_token_list_t* special);
-myhtml_status_t myhtml_tree_special_list_append(myhtml_tree_special_token_list_t* special, myhtml_token_node_t *token, myhtml_namespace_t ns);
+mystatus_t myhtml_tree_special_list_init(myhtml_tree_special_token_list_t* special);
+mystatus_t myhtml_tree_special_list_append(myhtml_tree_special_token_list_t* special, myhtml_token_node_t *token, myhtml_namespace_t ns);
size_t myhtml_tree_special_list_length(myhtml_tree_special_token_list_t* special);
myhtml_tree_special_token_t * myhtml_tree_special_list_get_last(myhtml_tree_special_token_list_t* special);
size_t myhtml_tree_special_list_pop(myhtml_tree_special_token_list_t* special);
/* incoming buffer */
-myhtml_incoming_buffer_t * myhtml_tree_incoming_buffer_first(myhtml_tree_t *tree);
+mycore_incoming_buffer_t * myhtml_tree_incoming_buffer_first(myhtml_tree_t *tree);
const char * myhtml_tree_incomming_buffer_make_data(myhtml_tree_t *tree, size_t begin, size_t length);
#ifdef __cplusplus
diff --git a/source/myhtml/utils.c b/source/myhtml/utils.c
deleted file mode 100644
index 52a99da..0000000
--- a/source/myhtml/utils.c
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#include "myhtml/utils.h"
-
-static const unsigned char myhtml_utils_chars_map[] = {
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
- 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11,
- 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a,
- 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23,
- 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c,
- 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e,
- 0x3f, 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
- 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
- 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,
- 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62,
- 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b,
- 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74,
- 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d,
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86,
- 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
- 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
- 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1,
- 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa,
- 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3,
- 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc,
- 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5,
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce,
- 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0,
- 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
- 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2,
- 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb,
- 0xfc, 0xfd, 0xfe, 0xff
-};
-
-size_t myhtml_strncasecmp(const char* str1, const char* str2, size_t size)
-{
- if(str1 == NULL || str2 == NULL) {
- if(str1 == str2)
- return 0;
-
- return 1;
- }
-
- const unsigned char *ustr1 = (const unsigned char *)str1;
- const unsigned char *ustr2 = (const unsigned char *)str2;
-
- size_t i = 0;
- while (i < size) {
- if(myhtml_utils_chars_map[*ustr1] != myhtml_utils_chars_map[*ustr2])
- return (size - i);
-
- ustr1++;
- ustr2++;
-
- i++;
- }
-
- return 0;
-}
-
-size_t myhtml_strcasecmp(const char* str1, const char* str2)
-{
- if(str1 == NULL || str2 == NULL) {
- if(str1 == str2)
- return 0;
-
- return 1;
- }
-
- const unsigned char *ustr1 = (const unsigned char *)str1;
- const unsigned char *ustr2 = (const unsigned char *)str2;
-
- for (size_t i = 0;;)
- {
- if(myhtml_utils_chars_map[*ustr1] != myhtml_utils_chars_map[*ustr2])
- return (i + 1);
-
- if(*ustr1 == '\0')
- return 0;
-
- ustr1++;
- ustr2++;
-
- i++;
- }
-}
-
-size_t myhtml_strncmp(const char* str1, const char* str2, size_t size)
-{
- if(str1 == NULL || str2 == NULL) {
- if(str1 == str2)
- return 0;
-
- return 1;
- }
-
- const unsigned char *ustr1 = (const unsigned char *)str1;
- const unsigned char *ustr2 = (const unsigned char *)str2;
-
- size_t i = 0;
- while (i < size) {
- if(*ustr1 != *ustr2)
- return (size - i);
-
- ustr1++;
- ustr2++;
-
- i++;
- }
-
- return 0;
-}
-
-size_t myhtml_strcmp(const char* str1, const char* str2)
-{
- if(str1 == NULL || str2 == NULL) {
- if(str1 == str2)
- return 0;
-
- return 1;
- }
-
- const unsigned char *ustr1 = (const unsigned char *)str1;
- const unsigned char *ustr2 = (const unsigned char *)str2;
-
- for (size_t i = 0;;)
- {
- if(*ustr1 != *ustr2)
- return (i + 1);
-
- if(*ustr1 == '\0')
- return 0;
-
- ustr1++;
- ustr2++;
-
- i++;
- }
-}
-
-size_t myhtml_strcmp_ws(const char* str1, const char* str2)
-{
- if(str1 == NULL || str2 == NULL) {
- if(str1 == str2)
- return 0;
-
- return 1;
- }
-
- const unsigned char *ustr1 = (const unsigned char *)str1;
- const unsigned char *ustr2 = (const unsigned char *)str2;
-
- for (size_t i = 0;;)
- {
- if(*ustr1 != *ustr2)
- return (i + 1);
-
- if(myhtml_utils_whithspace(*ustr1, ==, ||) || *ustr1 == '\0')
- return 0;
-
- ustr1++;
- ustr2++;
-
- i++;
- }
-}
-
-bool myhtml_ustrcasecmp_without_checks_by_secondary(const unsigned char* ustr1, const unsigned char* ustr2)
-{
- while (*ustr1 != '\0') {
- if(myhtml_utils_chars_map[*ustr1] != myhtml_utils_chars_map[*ustr2])
- return false;
-
- ustr1++;
- ustr2++;
- }
-
- return true;
-}
-
-
diff --git a/source/myhtml/utils.h b/source/myhtml/utils.h
deleted file mode 100644
index bca879c..0000000
--- a/source/myhtml/utils.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#ifndef MyHTML_UTILS_H
-#define MyHTML_UTILS_H
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "myhtml/myosi.h"
-
-#define myhtml_utils_whithspace(onechar, action, logic) \
- (onechar action ' ' logic \
- onechar action '\t' logic \
- onechar action '\n' logic \
- onechar action '\f' logic \
- onechar action '\r')
-
-size_t myhtml_strncasecmp(const char* str1, const char* str2, size_t size);
-size_t myhtml_strcasecmp(const char* str1, const char* str2);
-size_t myhtml_strncmp(const char* str1, const char* str2, size_t size);
-size_t myhtml_strcmp(const char* str1, const char* str2);
-size_t myhtml_strcmp_ws(const char* str1, const char* str2);
-bool myhtml_ustrcasecmp_without_checks_by_secondary(const unsigned char* ustr1, const unsigned char* ustr2);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* utils_h */
diff --git a/source/myhtml/utils/avl_tree.c b/source/myhtml/utils/avl_tree.c
deleted file mode 100644
index b8da055..0000000
--- a/source/myhtml/utils/avl_tree.c
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
- Copyright (C) 2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin avl_treet, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#include "myhtml/utils/avl_tree.h"
-
-myhtml_utils_avl_tree_t * myhtml_utils_avl_tree_create(void)
-{
- return (myhtml_utils_avl_tree_t*)myhtml_calloc(1, sizeof(myhtml_utils_avl_tree_t));
-}
-
-myhtml_status_t myhtml_utils_avl_tree_init(myhtml_utils_avl_tree_t* avl_tree)
-{
- /* for raw declaration style */
- avl_tree->mc_nodes = mcobject_create();
- if(avl_tree->mc_nodes == NULL)
- return MyHTML_STATUS_ERROR_MEMORY_ALLOCATION;
-
- myhtml_status_t myhtml_status = mcobject_init(avl_tree->mc_nodes, 256, sizeof(myhtml_utils_avl_tree_node_t));
- if(myhtml_status)
- return MyHTML_STATUS_ERROR;
-
- return MyHTML_STATUS_OK;
-}
-
-void myhtml_utils_avl_tree_clean(myhtml_utils_avl_tree_t* avl_tree)
-{
- mcobject_clean(avl_tree->mc_nodes);
-}
-
-myhtml_utils_avl_tree_t * myhtml_utils_avl_tree_destroy(myhtml_utils_avl_tree_t* avl_tree, bool self_destroy)
-{
- if(avl_tree == NULL)
- return NULL;
-
- mcobject_destroy(avl_tree->mc_nodes, true);
-
- if(self_destroy) {
- myhtml_free(avl_tree);
- return NULL;
- }
-
- return avl_tree;
-}
-
-myhtml_utils_avl_tree_node_t * myhtml_utils_avl_tree_node_create_root(myhtml_utils_avl_tree_t* avl_tree, size_t type, void* value)
-{
- myhtml_utils_avl_tree_node_t *node = mcobject_malloc(avl_tree->mc_nodes, NULL);
- memset(node, 0, sizeof(myhtml_utils_avl_tree_node_t));
-
- node->type = type;
- node->value = value;
-
- return node;
-}
-
-void myhtml_utils_avl_tree_node_clean(myhtml_utils_avl_tree_node_t* node)
-{
- memset(node, 0, sizeof(myhtml_utils_avl_tree_node_t));
-}
-
-short myhtml_utils_avl_tree_node_height(myhtml_utils_avl_tree_node_t* node)
-{
- return (node ? node->height : 0);
-}
-
-short myhtml_utils_avl_tree_node_balance_factor(myhtml_utils_avl_tree_node_t* node)
-{
- return (myhtml_utils_avl_tree_node_height(node->right) - myhtml_utils_avl_tree_node_height(node->left));
-}
-
-void myhtml_utils_avl_tree_node_set_height(myhtml_utils_avl_tree_node_t* node)
-{
- short left_height = myhtml_utils_avl_tree_node_height(node->left);
- short right_height = myhtml_utils_avl_tree_node_height(node->right);
-
- node->height = (left_height > right_height ? left_height : right_height) + 1;
-}
-
-myhtml_utils_avl_tree_node_t * myhtml_utils_avl_tree_node_rotate_right(myhtml_utils_avl_tree_node_t* pos)
-{
- myhtml_utils_avl_tree_node_t* node = pos->left;
-
- node->parent = pos->parent;
-
- if(node->right)
- node->right->parent = pos;
-
- pos->left = node->right;
- pos->parent = node;
-
- node->right = pos;
-
- myhtml_utils_avl_tree_node_set_height(pos);
- myhtml_utils_avl_tree_node_set_height(node);
-
- return node;
-}
-
-myhtml_utils_avl_tree_node_t * myhtml_utils_avl_tree_node_rotate_left(myhtml_utils_avl_tree_node_t* pos)
-{
- myhtml_utils_avl_tree_node_t* node = pos->right;
-
- node->parent = pos->parent;
-
- if(node->left)
- node->left->parent = pos;
-
- pos->right = node->left;
- pos->parent = node;
-
- node->left = pos;
-
- myhtml_utils_avl_tree_node_set_height(pos);
- myhtml_utils_avl_tree_node_set_height(node);
-
- return node;
-}
-
-myhtml_utils_avl_tree_node_t * myhtml_utils_avl_tree_node_balance(myhtml_utils_avl_tree_node_t* node, myhtml_utils_avl_tree_node_t** root)
-{
- /* set height */
- short left_height = myhtml_utils_avl_tree_node_height(node->left);
- short right_height = myhtml_utils_avl_tree_node_height(node->right);
-
- node->height = (left_height > right_height ? left_height : right_height) + 1;
-
- /* check balance */
- switch ((right_height - left_height))
- {
- case 2: {
- if(myhtml_utils_avl_tree_node_balance_factor(node->right) < 0)
- node->right = myhtml_utils_avl_tree_node_rotate_right(node->right);
-
- myhtml_utils_avl_tree_node_t* parent = node->parent;
-
- if(parent) {
- if(parent->right == node)
- return parent->right = myhtml_utils_avl_tree_node_rotate_left(node);
- else
- return parent->left = myhtml_utils_avl_tree_node_rotate_left(node);
- }
-
- return myhtml_utils_avl_tree_node_rotate_left(node);
- }
- case -2: {
- if(myhtml_utils_avl_tree_node_balance_factor(node->left) > 0)
- node->left = myhtml_utils_avl_tree_node_rotate_left(node->left);
-
- myhtml_utils_avl_tree_node_t* parent = node->parent;
-
- if(parent) {
- if(parent->right == node)
- return parent->right = myhtml_utils_avl_tree_node_rotate_right(node);
- else
- return parent->left = myhtml_utils_avl_tree_node_rotate_right(node);
- }
-
- return myhtml_utils_avl_tree_node_rotate_right(node);
- }
- default:
- break;
- }
-
- if(node->parent == NULL)
- *root = node;
-
- return node->parent;
-}
-
-void myhtml_utils_avl_tree_add(myhtml_utils_avl_tree_t* avl_tree, myhtml_utils_avl_tree_node_t** root, size_t type, void* value)
-{
- if(*root == NULL) {
- *root = myhtml_utils_avl_tree_node_create_root(avl_tree, type, value);
- return;
- }
-
- myhtml_utils_avl_tree_node_t* node = *root;
- myhtml_utils_avl_tree_node_t* new_node = mcobject_malloc(avl_tree->mc_nodes, NULL);
- myhtml_utils_avl_tree_node_clean(new_node);
-
- while(1)
- {
- if(type == node->type) {
- node->value = value;
- return;
- }
- else if(type < node->type) {
- if(node->left == NULL) {
- node->left = new_node;
-
- new_node->parent = node;
- new_node->type = type;
- new_node->value = value;
-
- node = new_node;
- break;
- }
-
- node = node->left;
- }
- else {
- if(node->right == NULL) {
- node->right = new_node;
-
- new_node->parent = node;
- new_node->type = type;
- new_node->value = value;
-
- node = new_node;
- break;
- }
-
- node = node->right;
- }
- }
-
- while(node) {
- node = myhtml_utils_avl_tree_node_balance(node, root);
- }
-}
-
-myhtml_utils_avl_tree_node_t * myhtml_utils_avl_tree_find_min(myhtml_utils_avl_tree_node_t* node)
-{
- if(node == NULL)
- return NULL;
-
- while(node->right) {
- node = node->right;
- }
-
- return node;
-}
-
-void myhtml_utils_avl_tree_rotate_for_delete(myhtml_utils_avl_tree_node_t* delete_node, myhtml_utils_avl_tree_node_t* node, myhtml_utils_avl_tree_node_t** root)
-{
- myhtml_utils_avl_tree_node_t* balance_node;
-
- if(node) {
- if(delete_node->left == node) {
- balance_node = node->left ? node->left : node;
-
- node->parent = delete_node->parent;
- node->right = delete_node->right;
-
- if(delete_node->right)
- delete_node->right->parent = node;
- }
- else {
- balance_node = node;
-
- node->parent->right = NULL;
- node->parent = delete_node->parent;
- node->right = delete_node->right;
- node->left = delete_node->left;
-
- if(delete_node->left)
- delete_node->left->parent = node;
- if(delete_node->right)
- delete_node->right->parent = node;
- }
-
- if(delete_node->parent) {
- if(delete_node->parent->left == delete_node) { delete_node->parent->left = node; }
- else { delete_node->parent->right = node; }
- }
- else {
- *root = node;
- }
- }
- else {
- balance_node = delete_node->parent;
-
- if(delete_node->parent) {
- if(delete_node->parent->left == delete_node) { delete_node->parent->left = delete_node->right; }
- else { delete_node->parent->right = delete_node->right; }
- }
- else {
- *root = delete_node->right;
- }
- }
-
- while(balance_node) {
- balance_node = myhtml_utils_avl_tree_node_balance(balance_node, root);
- }
-}
-
-void * myhtml_utils_avl_tree_delete(myhtml_utils_avl_tree_t *avl_tree, myhtml_utils_avl_tree_node_t** root, size_t type)
-{
- myhtml_utils_avl_tree_node_t* node = *root;
-
- while(node)
- {
- if(type == node->type) {
- myhtml_utils_avl_tree_rotate_for_delete(node, myhtml_utils_avl_tree_find_min(node->left), root);
-
- void *value = node->value;
- mcobject_free(avl_tree->mc_nodes, node);
-
- return value;
- }
- else if(type < node->type)
- node = node->left;
- else
- node = node->right;
- }
-
- return NULL;
-}
-
-myhtml_utils_avl_tree_node_t * myhtml_utils_avl_tree_search_by_type(myhtml_utils_avl_tree_t *avl_tree, myhtml_utils_avl_tree_node_t* node, size_t type)
-{
- while(node)
- {
- if(type == node->type)
- return node;
- else if(type < node->type)
- node = node->left;
- else
- node = node->right;
- }
-
- return NULL;
-}
-
-void myhtml_utils_avl_tree_list_all_nodes(myhtml_utils_avl_tree_t *avl_tree, myhtml_utils_avl_tree_node_t* root, myhtml_utils_avl_tree_node_callback_f callback, void* ctx)
-{
- if(root == NULL)
- return;
-
- callback(root, ctx);
-
- myhtml_utils_avl_tree_list_all_nodes(avl_tree, root->left, callback, ctx);
- myhtml_utils_avl_tree_list_all_nodes(avl_tree, root->right, callback, ctx);
-}
-
-
diff --git a/source/myhtml/utils/avl_tree.h b/source/myhtml/utils/avl_tree.h
deleted file mode 100644
index f2c837e..0000000
--- a/source/myhtml/utils/avl_tree.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- Copyright (C) 2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin avl_treet, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#ifndef MyHTML_UTILS_AVL_TREE_H
-#define MyHTML_UTILS_AVL_TREE_H
-#pragma once
-
-#include "myhtml/myosi.h"
-#include "myhtml/utils/mcobject.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct myhtml_utils_avl_tree_node myhtml_utils_avl_tree_node_t;
-typedef void (*myhtml_utils_avl_tree_node_callback_f)(myhtml_utils_avl_tree_node_t* avl_tree_node, void* ctx);
-
-struct myhtml_utils_avl_tree_node {
- void *value;
- size_t type;
-
- myhtml_utils_avl_tree_node_t* left;
- myhtml_utils_avl_tree_node_t* right;
- myhtml_utils_avl_tree_node_t* parent;
-
- short height;
-};
-
-struct myhtml_utils_avl_tree {
- mcobject_t* mc_nodes;
-}
-typedef myhtml_utils_avl_tree_t;
-
-myhtml_utils_avl_tree_t * myhtml_utils_avl_tree_create(void);
-myhtml_status_t myhtml_utils_avl_tree_init(myhtml_utils_avl_tree_t* avl_tree);
-void myhtml_utils_avl_tree_clean(myhtml_utils_avl_tree_t* avl_tree);
-myhtml_utils_avl_tree_t * myhtml_utils_avl_tree_destroy(myhtml_utils_avl_tree_t* avl_tree, bool self_destroy);
-
-myhtml_utils_avl_tree_node_t * myhtml_utils_avl_tree_node_create_root(myhtml_utils_avl_tree_t* avl_tree, size_t type, void* value);
-
-void myhtml_utils_avl_tree_add(myhtml_utils_avl_tree_t* avl_tree, myhtml_utils_avl_tree_node_t** root, size_t type, void* value);
-void * myhtml_utils_avl_tree_delete(myhtml_utils_avl_tree_t *avl_tree, myhtml_utils_avl_tree_node_t** root, size_t type);
-myhtml_utils_avl_tree_node_t * myhtml_utils_avl_tree_search_by_type(myhtml_utils_avl_tree_t *avl_tree, myhtml_utils_avl_tree_node_t* node, size_t type);
-
-void myhtml_utils_avl_tree_list_all_nodes(myhtml_utils_avl_tree_t *avl_tree, myhtml_utils_avl_tree_node_t* root, myhtml_utils_avl_tree_node_callback_f callback, void* ctx);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* MyHTML_UTILS_AVL_TREE_H */
diff --git a/source/myhtml/utils/mchar_async.c b/source/myhtml/utils/mchar_async.c
deleted file mode 100644
index 37c8c57..0000000
--- a/source/myhtml/utils/mchar_async.c
+++ /dev/null
@@ -1,770 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#include "myhtml/utils/mchar_async.h"
-
-mchar_async_t * mchar_async_create(size_t pos_size, size_t size)
-{
- mchar_async_t *mcobj_async = (mchar_async_t*)myhtml_calloc(1, sizeof(mchar_async_t));
-
- mchar_async_init(mcobj_async, pos_size, size);
-
- return mcobj_async;
-}
-
-void mchar_async_init(mchar_async_t *mchar_async, size_t chunk_len, size_t char_size)
-{
- if(char_size < 4096)
- char_size = 4096;
-
- mchar_async->origin_size = char_size;
-
- mchar_async->chunks_size = chunk_len;
- mchar_async->chunks_pos_size = 1024;
- mchar_async->chunks = (mchar_async_chunk_t**)myhtml_calloc(mchar_async->chunks_pos_size, sizeof(mchar_async_chunk_t*));
- mchar_async->chunks[0] = (mchar_async_chunk_t*)myhtml_calloc(mchar_async->chunks_size, sizeof(mchar_async_chunk_t));
-
- mchar_async_cache_init(&mchar_async->chunk_cache);
-
- mchar_async->nodes_length = 0;
- mchar_async->nodes_size = 64;
- mchar_async->nodes = (mchar_async_node_t*)myhtml_calloc(mchar_async->nodes_size, sizeof(mchar_async_node_t));
-
- mchar_async->nodes_cache_length = 0;
- mchar_async->nodes_cache_size = mchar_async->nodes_size;
- mchar_async->nodes_cache = (size_t*)myhtml_malloc(mchar_async->nodes_cache_size * sizeof(size_t));
-
- mchar_async_clean(mchar_async);
-
- mchar_async->mcsync = mcsync_create();
-}
-
-void mchar_async_clean(mchar_async_t *mchar_async)
-{
- mchar_async->chunks_length = 0;
- mchar_async->chunks_pos_length = 1;
-
- mchar_async_cache_clean(&mchar_async->chunk_cache);
-
- for (size_t node_idx = 0; node_idx < mchar_async->nodes_length; node_idx++)
- {
- mchar_async_node_t *node = &mchar_async->nodes[node_idx];
- mchar_async_cache_clean(&node->cache);
-
- node->chunk = mchar_async_chunk_malloc(mchar_async, node, mchar_async->origin_size);
- node->chunk->prev = 0;
- }
-}
-
-mchar_async_t * mchar_async_destroy(mchar_async_t *mchar_async, int destroy_self)
-{
- if(mchar_async == NULL)
- return NULL;
-
- if(mchar_async->nodes)
- {
- for (size_t node_idx = 0; node_idx < mchar_async->nodes_length; node_idx++)
- {
- mchar_async_node_t *node = &mchar_async->nodes[node_idx];
- mchar_async_cache_destroy(&node->cache, false);
- }
-
- myhtml_free(mchar_async->nodes);
- mchar_async->nodes = NULL;
- }
-
- if(mchar_async->nodes_cache) {
- myhtml_free(mchar_async->nodes_cache);
- }
-
- if(mchar_async->chunks)
- {
- for (size_t pos_idx = 0; pos_idx < mchar_async->chunks_pos_length; pos_idx++) {
- if(mchar_async->chunks[pos_idx])
- {
- for (size_t idx = 0; idx < mchar_async->chunks_size; idx++) {
- if(mchar_async->chunks[pos_idx][idx].begin)
- myhtml_free(mchar_async->chunks[pos_idx][idx].begin);
- }
-
- myhtml_free(mchar_async->chunks[pos_idx]);
- }
- }
-
- myhtml_free(mchar_async->chunks);
- mchar_async->chunks = NULL;
- }
-
- mchar_async_cache_destroy(&mchar_async->chunk_cache, false);
-
- mchar_async->mcsync = mcsync_destroy(mchar_async->mcsync, 1);
-
- memset(mchar_async, 0, sizeof(mchar_async_t));
-
- if(destroy_self)
- myhtml_free(mchar_async);
- else
- return mchar_async;
-
- return NULL;
-}
-
-void mchar_async_mem_malloc(mchar_async_t *mchar_async, mchar_async_node_t *node, mchar_async_chunk_t *chunk, size_t length)
-{
- if(chunk == NULL)
- return;
-
- if(chunk->begin) {
- if(length > chunk->size) {
- myhtml_free(chunk->begin);
-
- chunk->size = length + mchar_async->origin_size;
- chunk->begin = (char*)myhtml_malloc(chunk->size * sizeof(char));
- }
- }
- else {
- chunk->size = mchar_async->origin_size;
-
- if(length > chunk->size)
- chunk->size = length;
-
- chunk->begin = (char*)myhtml_malloc(chunk->size * sizeof(char));
- }
-
- chunk->length = 0;
-}
-
-mchar_async_chunk_t * mchar_async_chunk_malloc_without_lock(mchar_async_t *mchar_async, mchar_async_node_t *node, size_t length)
-{
- if(mchar_async_cache_has_nodes(mchar_async->chunk_cache))
- {
- size_t index = mchar_async_cache_delete(&mchar_async->chunk_cache, length);
-
- if(index)
- return (mchar_async_chunk_t*)mchar_async->chunk_cache.nodes[index].value;
- }
-
- if(mchar_async->chunks_length >= mchar_async->chunks_size)
- {
- size_t current_idx = mchar_async->chunks_pos_length;
- mchar_async->chunks_pos_length++;
-
- if(mchar_async->chunks_pos_length >= mchar_async->chunks_pos_size)
- {
- mchar_async->chunks_pos_size <<= 1;
- mchar_async_chunk_t **tmp_pos = myhtml_realloc(mchar_async->chunks,
- sizeof(mchar_async_chunk_t*) * mchar_async->chunks_pos_size);
-
- if(tmp_pos) {
- memset(&tmp_pos[mchar_async->chunks_pos_length], 0, (mchar_async->chunks_pos_size - mchar_async->chunks_pos_length)
- * sizeof(mchar_async_chunk_t*));
-
- mchar_async->chunks = tmp_pos;
- }
- }
-
- if(mchar_async->chunks[current_idx] == NULL) {
- mchar_async_chunk_t *tmp = myhtml_calloc(mchar_async->chunks_size, sizeof(mchar_async_chunk_t));
-
- if(tmp)
- mchar_async->chunks[current_idx] = tmp;
- }
-
- mchar_async->chunks_length = 0;
- }
-
- mchar_async_chunk_t *chunk = &mchar_async->chunks[mchar_async->chunks_pos_length - 1][mchar_async->chunks_length];
- mchar_async->chunks_length++;
-
- mchar_async_mem_malloc(mchar_async, node, chunk, length);
-
- return chunk;
-}
-
-mchar_async_chunk_t * mchar_async_chunk_malloc(mchar_async_t *mchar_async, mchar_async_node_t *node, size_t length)
-{
- mcsync_lock(mchar_async->mcsync);
- mchar_async_chunk_t *chunk = mchar_async_chunk_malloc_without_lock(mchar_async, node, length);
- mcsync_unlock(mchar_async->mcsync);
-
- return chunk;
-}
-
-size_t mchar_async_node_add(mchar_async_t *mchar_async)
-{
- mcsync_lock(mchar_async->mcsync);
-
- size_t node_idx;
-
- if(mchar_async->nodes_cache_length) {
- mchar_async->nodes_cache_length--;
-
- node_idx = mchar_async->nodes_cache[ mchar_async->nodes_cache_length ];
- }
- else {
- if(mchar_async->nodes_length >= mchar_async->nodes_size) {
- mcsync_unlock(mchar_async->mcsync);
- return 0;
- }
-
- node_idx = mchar_async->nodes_length;
- mchar_async->nodes_length++;
- }
-
- mchar_async_node_t *node = &mchar_async->nodes[node_idx];
-
- mchar_async_cache_init(&node->cache);
-
- node->chunk = mchar_async_chunk_malloc_without_lock(mchar_async, node, mchar_async->origin_size);
-
- node->chunk->next = NULL;
- node->chunk->prev = NULL;
-
- mcsync_unlock(mchar_async->mcsync);
-
- return node_idx;
-}
-
-void mchar_async_node_clean(mchar_async_t *mchar_async, size_t node_idx)
-{
- if(mchar_async->nodes_length <= node_idx)
- return;
-
- mchar_async_node_t *node = &mchar_async->nodes[node_idx];
-
- while (node->chunk->prev)
- node->chunk = node->chunk->prev;
-
- node->chunk->length = 0;
- mchar_async_cache_clean(&node->cache);
-}
-
-void mchar_async_node_delete(mchar_async_t *mchar_async, size_t node_idx)
-{
- mcsync_lock(mchar_async->mcsync);
-
- if(mchar_async->nodes_length <= node_idx) {
- mcsync_unlock(mchar_async->mcsync);
- return;
- }
-
- mchar_async_node_t *node = &mchar_async->nodes[node_idx];
- mchar_async_chunk_t *chunk = node->chunk;
-
- while (chunk->next)
- chunk = chunk->next;
-
- while (chunk)
- {
- mchar_async_cache_add(&mchar_async->chunk_cache, (void*)chunk, chunk->size);
- chunk = chunk->prev;
- }
-
- if(node->cache.nodes)
- mchar_async_cache_destroy(&node->cache, false);
-
- memset(node, 0, sizeof(mchar_async_node_t));
-
- if(mchar_async->nodes_cache_length >= mchar_async->nodes_cache_size) {
- size_t new_size = mchar_async->nodes_cache_size << 1;
-
- size_t *tmp = (size_t*)myhtml_realloc(mchar_async->nodes_cache, sizeof(size_t) * mchar_async->nodes_cache_size);
-
- if(tmp) {
- mchar_async->nodes_cache = tmp;
- mchar_async->nodes_cache_size = new_size;
- }
- }
-
- mchar_async->nodes_cache[ mchar_async->nodes_cache_length ] = node_idx;
- mchar_async->nodes_cache_length++;
-
- mcsync_unlock(mchar_async->mcsync);
-}
-
-mchar_async_chunk_t * mchar_sync_chunk_find_by_size(mchar_async_node_t *node, size_t size)
-{
- mchar_async_chunk_t *chunk = node->chunk->next;
-
- while (chunk) {
- if(chunk->size >= size)
- return chunk;
-
- chunk = chunk->next;
- }
-
- return NULL;
-}
-
-void mchar_sync_chunk_insert_after(mchar_async_chunk_t *base, mchar_async_chunk_t *chunk)
-{
- if(base->next == chunk)
- return;
-
- if(chunk->prev)
- chunk->prev->next = chunk->next;
-
- if(chunk->next)
- chunk->next->prev = chunk->prev;
-
- if(base->next)
- base->next->prev = chunk;
-
- chunk->next = base->next;
- chunk->prev = base;
-
- base->next = chunk;
-}
-
-char * mchar_async_malloc(mchar_async_t *mchar_async, size_t node_idx, size_t size)
-{
- if(size == 0)
- return NULL;
-
- mchar_async_node_t *node = &mchar_async->nodes[node_idx];
- mchar_async_chunk_t *chunk = node->chunk;
-
- if(mchar_async_cache_has_nodes(node->cache)) {
- size_t index = mchar_async_cache_delete(&node->cache, size);
-
- if(index) {
- return (char *)(node->cache.nodes[index].value);
- }
- }
-
- size_t new_size = chunk->length + size + sizeof(size_t);
-
- if(new_size > chunk->size)
- {
- if((chunk->length + sizeof(size_t)) < chunk->size)
- {
- size_t calc_size = (chunk->size - chunk->length) - sizeof(size_t);
-
- if(calc_size) {
- char *tmp = &chunk->begin[(chunk->length + sizeof(size_t))];
- *(size_t*)(&chunk->begin[chunk->length]) = calc_size;
-
- chunk->length = chunk->size;
-
- mchar_async_cache_add(&node->cache, tmp, calc_size);
- }
- }
-
- chunk = mchar_sync_chunk_find_by_size(node, (size + sizeof(size_t)));
-
- if(chunk)
- chunk->length = 0;
- else {
- if((size + sizeof(size_t)) > mchar_async->origin_size)
- chunk = mchar_async_chunk_malloc(mchar_async, node, (size + sizeof(size_t) + mchar_async->origin_size));
- else
- chunk = mchar_async_chunk_malloc(mchar_async, node, mchar_async->origin_size);
- }
-
- mchar_sync_chunk_insert_after(node->chunk, chunk);
- node->chunk = chunk;
- }
-
- char *tmp = &chunk->begin[(chunk->length + sizeof(size_t))];
- *((size_t*)(&chunk->begin[chunk->length])) = size;
-
- chunk->length = chunk->length + size + sizeof(size_t);
-
- return tmp;
-}
-
-char * mchar_async_realloc(mchar_async_t *mchar_async, size_t node_idx, char *data, size_t data_len, size_t new_size)
-{
- if(data == NULL)
- return NULL;
-
- size_t curr_size = *((size_t*)(data - sizeof(size_t)));
-
- if(curr_size >= new_size)
- return data;
-
- mchar_async_node_t *node = &mchar_async->nodes[node_idx];
-
- if(node->chunk->length >= curr_size &&
- &node->chunk->begin[ (node->chunk->length - curr_size) ] == data)
- {
- size_t next_size = (node->chunk->length - curr_size) + new_size;
-
- if(next_size <= node->chunk->size) {
- /* it`s Magic */
- *((size_t*)(&node->chunk->begin[ ((node->chunk->length - curr_size) - sizeof(size_t)) ])) = new_size;
-
- node->chunk->length = next_size;
-
- return data;
- }
-// else {
-// size_t re_size = next_size - node->chunk->length;
-//
-// /* a little Magic ;) */
-// *((size_t*)(&node->chunk->begin[ ((node->chunk->length - curr_size) - sizeof(size_t)) ])) = re_size;
-//
-// curr_size = re_size;
-// }
- }
-
- char *tmp = mchar_async_malloc(mchar_async, node_idx, new_size);
-
- if(tmp) {
- memcpy(tmp, data, sizeof(char) * data_len);
-
- mchar_async_cache_add(&node->cache, data, curr_size);
- }
-
- return tmp;
-}
-
-char * mchar_async_crop_first_chars(mchar_async_t *mchar_async, size_t node_idx, char *data, size_t crop_len)
-{
- if(data == NULL)
- return NULL;
-
- size_t curr_size = *((size_t*)(data - sizeof(size_t)));
-
- char *tmp_old = data;
- data = &data[crop_len];
-
- *((size_t*)(data - sizeof(size_t))) = curr_size - crop_len;
-
- if((crop_len + 4) > sizeof(size_t)) {
- crop_len = crop_len - sizeof(size_t);
- *((size_t*)(tmp_old - sizeof(size_t))) = crop_len;
-
- mchar_async_node_t *node = &mchar_async->nodes[node_idx];
- mchar_async_cache_add(&node->cache, tmp_old, crop_len);
- }
-
- return data;
-}
-
-char * mchar_async_crop_first_chars_without_cache(char *data, size_t crop_len)
-{
- if(data == NULL)
- return NULL;
-
- size_t curr_size = *((size_t*)(data - sizeof(size_t)));
- data = &data[crop_len];
-
- *((size_t*)(data - sizeof(size_t))) = curr_size - crop_len;
-
- return data;
-}
-
-size_t mchar_async_get_size_by_data(const char *data)
-{
- if(data == NULL)
- return 0;
-
- return *((size_t*)(data - sizeof(size_t)));
-}
-
-void mchar_async_free(mchar_async_t *mchar_async, size_t node_idx, char *entry)
-{
- if(entry)
- mchar_async_cache_add(&mchar_async->nodes[node_idx].cache, entry, *(size_t*)(entry - sizeof(size_t)));
-}
-
-void mchar_async_cache_init(mchar_async_cache_t *cache)
-{
- cache->count = 0;
- cache->nodes_root = 0;
- cache->nodes_length = 1;
- cache->nodes_size = 1024;
- cache->nodes = (mchar_async_cache_node_t*)myhtml_malloc(sizeof(mchar_async_cache_node_t) * cache->nodes_size);
-
- cache->nodes[0].left = 0;
- cache->nodes[0].right = 0;
- cache->nodes[0].size = 0;
- cache->nodes[0].value = NULL;
-
- cache->index_length = 0;
- cache->index_size = cache->nodes_size;
- cache->index = (size_t*)myhtml_malloc(sizeof(size_t) * cache->index_size);
-}
-
-void mchar_async_cache_clean(mchar_async_cache_t *cache)
-{
- cache->count = 0;
- cache->nodes_root = 0;
- cache->nodes_length = 1;
- cache->index_length = 0;
-
- if(cache->nodes) {
- cache->nodes[0].left = 0;
- cache->nodes[0].right = 0;
- cache->nodes[0].size = 0;
- cache->nodes[0].value = NULL;
- }
-}
-
-mchar_async_cache_t * mchar_async_cache_destroy(mchar_async_cache_t *cache, bool self_destroy)
-{
- if(cache == NULL)
- return NULL;
-
- if(cache->nodes)
- myhtml_free(cache->nodes);
-
- if(cache->index)
- myhtml_free(cache->index);
-
- if(self_destroy) {
- myhtml_free(cache);
- return NULL;
- }
-
- return cache;
-}
-
-size_t mchar_async_cache_malloc(mchar_async_cache_t *cache)
-{
- if(cache->index_length) {
- cache->index_length--;
- return cache->index[cache->index_length];
- }
-
- cache->nodes_length++;
-
- if(cache->nodes_length >= cache->nodes_size) {
- cache->nodes_size <<= 1;
-
- mchar_async_cache_node_t *tmp = (mchar_async_cache_node_t*)myhtml_realloc(cache->nodes, sizeof(mchar_async_cache_node_t) * cache->nodes_size);
-
- if(tmp)
- cache->nodes = tmp;
- }
-
- return cache->nodes_length - 1;
-}
-
-size_t mchar_async_cache_delete(mchar_async_cache_t *cache, size_t size)
-{
- mchar_async_cache_node_t *list = cache->nodes;
- size_t idx = cache->nodes_root;
-
- while (idx)
- {
- if(size <= list[idx].size)
- {
- while( list[ list[idx].right ].size == size )
- idx = list[idx].right;
-
- size_t parent = list[idx].parent;
-
- if(parent) {
- if(list[parent].left == idx)
- {
- if(list[idx].right) {
- if(list[idx].left) {
- size_t last_left = list[ list[idx].right ].left;
-
- while( list[last_left].left )
- last_left = list[last_left].left;
-
- if(last_left) {
- list[last_left].left = list[idx].left;
- list[ list[idx].left ].parent = last_left;
- }
- else {
- list[ list[idx].right ].left = list[idx].left;
- }
- }
-
- list[parent].left = list[idx].right;
- list[ list[idx].right ].parent = parent;
- }
- else {
- list[parent].left = list[idx].left;
- list[ list[idx].left ].parent = parent;
- }
- }
- else {
- if(list[idx].left) {
- if(list[idx].right) {
- size_t last_right = list[ list[idx].left ].right;
-
- while( list[last_right].right )
- last_right = list[last_right].right;
-
- if(last_right) {
- list[last_right].right = list[idx].right;
- list[ list[idx].right ].parent = last_right;
- }
- else {
- list[ list[idx].left ].right = list[idx].right;
- }
- }
-
- list[parent].right = list[idx].left;
- list[ list[idx].left ].parent = parent;
- }
- else {
- list[parent].right = list[idx].right;
- list[ list[idx].right ].parent = parent;
- }
- }
- }
- else {
- if(list[idx].left) {
- if(list[idx].right) {
- size_t last_right = list[ list[idx].left ].right;
-
- while( list[last_right].right )
- last_right = list[last_right].right;
-
- if(last_right) {
- list[last_right].right = list[idx].right;
- list[ list[idx].right ].parent = last_right;
- }
- else {
- list[ list[idx].left ].right = list[idx].right;
- }
- }
-
- cache->nodes_root = list[idx].left;
- list[ list[idx].left ].parent = 0;
- }
- else {
- cache->nodes_root = list[idx].right;
- list[ list[idx].right ].parent = 0;
- }
- }
-
- cache->index[cache->index_length] = idx;
-
- cache->index_length++;
- if(cache->index_length >= cache->index_size)
- {
- size_t new_size = cache->index_size << 1;
- size_t *tmp = (size_t*)myhtml_realloc(cache->index, sizeof(size_t) * new_size);
-
- if(tmp) {
- cache->index = tmp;
- cache->index_size = new_size;
- }
- }
-
- cache->count--;
-
- return idx;
- }
- else {
- idx = list[idx].right;
- }
- }
-
- return 0;
-}
-
-void mchar_async_cache_add(mchar_async_cache_t *cache, void* value, size_t size)
-{
- cache->count++;
-
- if(cache->nodes_root == 0) {
- mchar_async_cache_node_t *list = cache->nodes;
-
- cache->nodes_root = mchar_async_cache_malloc(cache);
-
- list[cache->nodes_root].parent = 0;
- list[cache->nodes_root].left = 0;
- list[cache->nodes_root].right = 0;
- list[cache->nodes_root].size = size;
- list[cache->nodes_root].value = value;
-
- return;
- }
-
- size_t idx = cache->nodes_root;
- size_t new_idx = mchar_async_cache_malloc(cache);
-
- mchar_async_cache_node_t *list = cache->nodes;
-
- while(idx)
- {
- if(size == list[idx].size)
- {
- if(list[idx].right) {
- list[new_idx].right = list[idx].right;
- list[ list[idx].right ].parent = new_idx;
- }
- else {
- list[new_idx].right = 0;
- }
-
- list[idx].right = new_idx;
-
- list[new_idx].parent = idx;
- list[new_idx].left = 0;
- list[new_idx].size = size;
- list[new_idx].value = value;
-
- break;
- }
- else if(size < list[idx].size)
- {
- size_t parent = list[idx].parent;
-
- if(parent) {
- if(list[parent].left == idx)
- list[parent].left = new_idx;
- else
- list[parent].right = new_idx;
-
- list[new_idx].parent = parent;
- }
- else {
- cache->nodes_root = new_idx;
- list[new_idx].parent = 0;
- }
-
- list[idx].parent = new_idx;
-
- list[new_idx].right = idx;
- list[new_idx].left = 0;
- list[new_idx].size = size;
- list[new_idx].value = value;
-
- break;
- }
- else // size > list[idx].size
- {
- if(list[idx].right)
- idx = list[idx].right;
- else {
- list[idx].right = new_idx;
-
- list[new_idx].right = 0;
- list[new_idx].left = 0;
- list[new_idx].parent = idx;
- list[new_idx].size = size;
- list[new_idx].value = value;
-
- break;
- }
- }
- }
-}
-
-
diff --git a/source/myhtml/utils/mchar_async.h b/source/myhtml/utils/mchar_async.h
deleted file mode 100644
index dcba9c5..0000000
--- a/source/myhtml/utils/mchar_async.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#ifndef MyHTML_UTILS_MCHAR_ASYNC_H
-#define MyHTML_UTILS_MCHAR_ASYNC_H
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "myhtml/myosi.h"
-#include "myhtml/utils/mcsync.h"
-
-#define mchar_async_cache_has_nodes(cache) cache.count
-
-typedef struct mchar_async_node mchar_async_node_t;
-
-struct mchar_async_cache_node {
- void *value;
- size_t size;
-
- size_t left;
- size_t right;
- size_t parent;
-}
-typedef mchar_async_cache_node_t;
-
-struct mchar_async_chunk {
- char *begin;
- size_t length;
- size_t size;
-
- struct mchar_async_chunk *next;
- struct mchar_async_chunk *prev;
-}
-typedef mchar_async_chunk_t;
-
-struct mchar_async_cache {
- mchar_async_cache_node_t *nodes;
- size_t nodes_size;
- size_t nodes_length;
- size_t nodes_root;
-
- size_t count;
-
- size_t *index;
- size_t index_length;
- size_t index_size;
-}
-typedef mchar_async_cache_t;
-
-struct mchar_async_node {
- mchar_async_chunk_t *chunk;
- mchar_async_cache_t cache;
-};
-
-struct mchar_async {
- size_t origin_size;
-
- mchar_async_chunk_t **chunks;
- size_t chunks_pos_size;
- size_t chunks_pos_length;
- size_t chunks_size;
- size_t chunks_length;
-
- mchar_async_cache_t chunk_cache;
-
- mchar_async_node_t *nodes;
- size_t nodes_length;
- size_t nodes_size;
-
- size_t *nodes_cache;
- size_t nodes_cache_length;
- size_t nodes_cache_size;
-
- mcsync_t *mcsync;
-}
-typedef mchar_async_t;
-
-
-mchar_async_t * mchar_async_create(size_t pos_size, size_t size);
-void mchar_async_init(mchar_async_t *mchar_async, size_t chunk_len, size_t char_size);
-void mchar_async_clean(mchar_async_t *mchar_async);
-mchar_async_t * mchar_async_destroy(mchar_async_t *mchar_async, int destroy_self);
-
-char * mchar_async_malloc(mchar_async_t *mchar_async, size_t node_idx, size_t size);
-char * mchar_async_realloc(mchar_async_t *mchar_async, size_t node_idx, char *data, size_t data_len, size_t new_size);
-void mchar_async_free(mchar_async_t *mchar_async, size_t node_idx, char *entry);
-
-size_t mchar_async_node_add(mchar_async_t *mchar_async);
-void mchar_async_node_clean(mchar_async_t *mchar_async, size_t node_idx);
-void mchar_async_node_delete(mchar_async_t *mchar_async, size_t node_idx);
-
-mchar_async_chunk_t * mchar_async_chunk_malloc(mchar_async_t *mchar_async, mchar_async_node_t *node, size_t length);
-char * mchar_async_crop_first_chars(mchar_async_t *mchar_async, size_t node_idx, char *data, size_t crop_len);
-char * mchar_async_crop_first_chars_without_cache(char *data, size_t crop_len);
-
-size_t mchar_async_get_size_by_data(const char *data);
-
-// cache
-void mchar_async_cache_init(mchar_async_cache_t *cache);
-mchar_async_cache_t * mchar_async_cache_destroy(mchar_async_cache_t *cache, bool self_destroy);
-void mchar_async_cache_clean(mchar_async_cache_t *cache);
-
-void mchar_async_cache_add(mchar_async_cache_t *cache, void* value, size_t size);
-size_t mchar_async_cache_delete(mchar_async_cache_t *cache, size_t size);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* mchar_async_h */
-
diff --git a/source/myhtml/utils/mcobject.c b/source/myhtml/utils/mcobject.c
deleted file mode 100644
index 3353909..0000000
--- a/source/myhtml/utils/mcobject.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#include "myhtml/utils/mcobject.h"
-
-mcobject_t * mcobject_create(void)
-{
- return myhtml_calloc(1, sizeof(mcobject_t));
-}
-
-myhtml_status_t mcobject_init(mcobject_t *mcobject, size_t chunk_size, size_t struct_size)
-{
- mcobject->struct_size = struct_size;
- mcobject->chunk_size = chunk_size;
-
- mcobject->chunk = NULL;
-
- mcobject->cache_length = 0;
- mcobject->cache_size = chunk_size;
- mcobject->cache = (void**)myhtml_malloc(sizeof(void*) * mcobject->cache_size);
-
- if(mcobject->cache == NULL)
- return MyHTML_STATUS_MCOBJECT_ERROR_CACHE_CREATE;
-
- return MyHTML_STATUS_OK;
-}
-
-void mcobject_clean(mcobject_t *mcobject)
-{
- if(mcobject->chunk == NULL)
- return;
-
- mcobject_chunk_t* chunk = mcobject->chunk;
-
- while(chunk->next)
- chunk = chunk->next;
-
- while(chunk) {
- mcobject_chunk_t* tmp = chunk->prev;
-
- if(chunk->begin) {
- myhtml_free(chunk->begin);
- }
-
- myhtml_free(chunk);
-
- chunk = tmp;
- }
-
- mcobject->chunk = NULL;
- mcobject->cache_length = 0;
-}
-
-mcobject_t * mcobject_destroy(mcobject_t *mcobject, bool destroy_self)
-{
- if(mcobject == NULL)
- return NULL;
-
- mcobject_clean(mcobject);
-
- if(mcobject->cache) {
- myhtml_free(mcobject->cache);
- mcobject->cache = NULL;
- }
-
- if(destroy_self) {
- myhtml_free(mcobject);
- return NULL;
- }
-
- return mcobject;
-}
-
-void mcobject_chunk_malloc(mcobject_t* mcobject, myhtml_status_t* status)
-{
- if(status)
- *status = MyHTML_STATUS_OK;
-
- mcobject_chunk_t* chunk;
-
- if(mcobject->chunk && mcobject->chunk->next) {
- mcobject->chunk = mcobject->chunk->next;
-
- mcobject->chunk->length = 0;
-
- return;
- }
- else {
- chunk = myhtml_calloc(1, sizeof(mcobject_chunk_t));
-
- if(chunk == NULL) {
- if(status)
- *status = MyHTML_STATUS_MCOBJECT_ERROR_CHUNK_CREATE;
-
- return;
- }
-
- chunk->begin = myhtml_malloc(mcobject->struct_size * mcobject->chunk_size);
-
- if(chunk->begin == NULL) {
- if(status)
- *status = MyHTML_STATUS_MCOBJECT_ERROR_CHUNK_INIT;
-
- myhtml_free(chunk);
- return;
- }
-
- chunk->size = mcobject->chunk_size;
- }
-
- if(mcobject->chunk == NULL) {
- mcobject->chunk = chunk;
- return;
- }
-
- chunk->prev = mcobject->chunk;
- mcobject->chunk->next = chunk;
-
- mcobject->chunk = chunk;
-}
-
-void * mcobject_malloc(mcobject_t *mcobject, myhtml_status_t* status)
-{
- if(mcobject->cache_length) {
- if(status)
- *status = MyHTML_STATUS_OK;
-
- mcobject->cache_length--;
- return mcobject->cache[ mcobject->cache_length ];
- }
-
- mcobject_chunk_t* chunk = mcobject->chunk;
-
- if(chunk == NULL || chunk->length >= chunk->size)
- {
- myhtml_status_t ns_status;
- mcobject_chunk_malloc(mcobject, &ns_status);
-
- if(ns_status) {
- if(status)
- *status = ns_status;
-
- return NULL;
- }
-
- chunk = mcobject->chunk;
- }
-
- if(status)
- *status = MyHTML_STATUS_OK;
-
- chunk->length++;
- return &chunk->begin[((chunk->length - 1) * mcobject->struct_size)];
-}
-
-myhtml_status_t mcobject_free(mcobject_t *mcobject, void *entry)
-{
- if(mcobject->cache_length >= mcobject->cache_size) {
- size_t new_size = mcobject->cache_size << 1;
-
- void **tmp = (void**)myhtml_realloc(mcobject->cache, sizeof(void*) * new_size);
-
- if(tmp) {
- mcobject->cache = tmp;
- mcobject->cache_size = new_size;
- }
- else
- return MyHTML_STATUS_MCOBJECT_ERROR_CACHE_REALLOC;
- }
-
- mcobject->cache[ mcobject->cache_length ] = entry;
- mcobject->cache_length++;
-
- return MyHTML_STATUS_OK;
-}
-
-
diff --git a/source/myhtml/utils/mcobject.h b/source/myhtml/utils/mcobject.h
deleted file mode 100644
index b68935b..0000000
--- a/source/myhtml/utils/mcobject.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#ifndef MyHTML_UTILS_MCOBJECT_H
-#define MyHTML_UTILS_MCOBJECT_H
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "myhtml/myosi.h"
-
-struct mcobject_chunk {
- unsigned char *begin;
- size_t length;
- size_t size;
-
- struct mcobject_chunk *next;
- struct mcobject_chunk *prev;
-}
-typedef mcobject_chunk_t;
-
-struct mcobject {
- mcobject_chunk_t *chunk;
-
- void **cache;
- size_t cache_size;
- size_t cache_length;
-
- size_t struct_size;
- size_t chunk_size;
-}
-typedef mcobject_t;
-
-
-mcobject_t * mcobject_create(void);
-myhtml_status_t mcobject_init(mcobject_t *mcobject, size_t chunk_size, size_t struct_size);
-void mcobject_clean(mcobject_t *mcobject);
-mcobject_t * mcobject_destroy(mcobject_t *mcobject, bool destroy_self);
-
-void mcobject_chunk_malloc(mcobject_t* mcobject, myhtml_status_t* status);
-
-void * mcobject_malloc(mcobject_t *mcobject, myhtml_status_t* status);
-myhtml_status_t mcobject_free(mcobject_t *mcobject, void *entry);
-
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* MyHTML_UTILS_MCOBJECT_H */
-
diff --git a/source/myhtml/utils/mcobject_async.c b/source/myhtml/utils/mcobject_async.c
deleted file mode 100644
index 21e36e8..0000000
--- a/source/myhtml/utils/mcobject_async.c
+++ /dev/null
@@ -1,475 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#include "myhtml/utils/mcobject_async.h"
-
-mcobject_async_t * mcobject_async_create(void)
-{
- return (mcobject_async_t*)myhtml_calloc(1, sizeof(mcobject_async_t));
-}
-
-mcobject_async_status_t mcobject_async_chunk_up(mcobject_async_t *mcobj_async)
-{
- mcobj_async->chunks_length = 0;
-
- if(mcobj_async->chunks[ mcobj_async->chunks_pos_length ] == NULL) {
- mcobj_async->chunks[ mcobj_async->chunks_pos_length ] = (mcobject_async_chunk_t*)myhtml_calloc(mcobj_async->chunks_size, sizeof(mcobject_async_chunk_t));
-
- if(mcobj_async->chunks[ mcobj_async->chunks_pos_length ] == NULL)
- return MCOBJECT_ASYNC_STATUS_CHUNK_ERROR_MEMORY_ALLOCATION;
- }
-
- return MCOBJECT_ASYNC_STATUS_OK;
-}
-
-mcobject_async_status_t mcobject_async_init(mcobject_async_t *mcobj_async, size_t chunk_len, size_t obj_size_by_one_chunk, size_t struct_size)
-{
- mcobj_async->origin_size = obj_size_by_one_chunk;
- mcobj_async->struct_size = struct_size;
- mcobj_async->struct_size_sn = struct_size + sizeof(size_t);
-
- mcobj_async->chunks_pos_length = 0;
- mcobj_async->chunks_pos_size = 128;
- mcobj_async->chunks_size = chunk_len;
- mcobj_async->chunks = (mcobject_async_chunk_t**)myhtml_calloc(mcobj_async->chunks_pos_size, sizeof(mcobject_async_chunk_t*));
-
- if(mcobj_async->chunks == NULL)
- return MCOBJECT_ASYNC_STATUS_CHUNK_ERROR_MEMORY_ALLOCATION;
-
- mcobject_async_chunk_up(mcobj_async);
-
- mcobj_async->chunk_cache_size = mcobj_async->chunks_size;
- mcobj_async->chunk_cache = (mcobject_async_chunk_t**)myhtml_calloc(mcobj_async->chunk_cache_size, sizeof(mcobject_async_chunk_t*));
-
- if(mcobj_async->chunk_cache == NULL)
- return MCOBJECT_ASYNC_STATUS_CHUNK_CACHE_ERROR_MEMORY_ALLOCATION;
-
- mcobj_async->nodes_length = 0;
- mcobj_async->nodes_size = 64;
- mcobj_async->nodes = (mcobject_async_node_t*)myhtml_calloc(mcobj_async->nodes_size, sizeof(mcobject_async_node_t));
-
- if(mcobj_async->nodes == NULL)
- return MCOBJECT_ASYNC_STATUS_NODES_ERROR_MEMORY_ALLOCATION;
-
- mcobj_async->nodes_cache_length = 0;
- mcobj_async->nodes_cache_size = mcobj_async->nodes_size;
- mcobj_async->nodes_cache = (size_t*)myhtml_malloc(mcobj_async->nodes_cache_size * sizeof(size_t));
-
- if(mcobj_async->nodes_cache == NULL)
- return MCOBJECT_ASYNC_STATUS_NODES_ERROR_MEMORY_ALLOCATION;
-
- mcobject_async_clean(mcobj_async);
-
- mcobj_async->mcsync = mcsync_create();
-
- return MCOBJECT_ASYNC_STATUS_OK;
-}
-
-void mcobject_async_clean(mcobject_async_t *mcobj_async)
-{
- if(mcobj_async->chunks[0] != NULL)
- mcobj_async->chunks_pos_length = 1;
- else
- mcobj_async->chunks_pos_length = 0;
-
- mcobj_async->chunks_length = 0;
- mcobj_async->chunk_cache_length = 0;
-
- size_t node_idx;
- for (node_idx = 0; node_idx < mcobj_async->nodes_length; node_idx++)
- {
- mcobject_async_node_t *node = &mcobj_async->nodes[node_idx];
- node->cache_length = 0;
-
- if(node->chunk) {
- node->chunk = mcobject_async_chunk_malloc(mcobj_async, mcobj_async->origin_size, NULL);
- }
- }
-}
-
-mcobject_async_t * mcobject_async_destroy(mcobject_async_t *mcobj_async, int destroy_self)
-{
- if(mcobj_async == NULL)
- return NULL;
-
- if(mcobj_async->nodes)
- {
- for (size_t node_idx = 0; node_idx < mcobj_async->nodes_length; node_idx++)
- {
- mcobject_async_node_t *node = &mcobj_async->nodes[node_idx];
-
- if(node->cache)
- myhtml_free(node->cache);
- }
-
- myhtml_free(mcobj_async->nodes);
- }
-
- if(mcobj_async->nodes_cache) {
- myhtml_free(mcobj_async->nodes_cache);
- }
-
- if(mcobj_async->chunks) {
- for (size_t pos_idx = 0; pos_idx < mcobj_async->chunks_pos_length; pos_idx++) {
- if(mcobj_async->chunks[pos_idx])
- {
- for (size_t idx = 0; idx < mcobj_async->chunks_size; idx++) {
- if(mcobj_async->chunks[pos_idx][idx].begin)
- myhtml_free(mcobj_async->chunks[pos_idx][idx].begin);
- }
-
- myhtml_free(mcobj_async->chunks[pos_idx]);
- }
- }
-
- myhtml_free(mcobj_async->chunks);
- }
-
- if(mcobj_async->chunk_cache) {
- myhtml_free(mcobj_async->chunk_cache);
- }
-
- mcobj_async->mcsync = mcsync_destroy(mcobj_async->mcsync, 1);
-
- memset(mcobj_async, 0, sizeof(mcobject_async_t));
-
- if(destroy_self)
- myhtml_free(mcobj_async);
- else
- return mcobj_async;
-
- return NULL;
-}
-
-mcobject_async_status_t mcobject_async_mem_malloc(mcobject_async_t *mcobj_async, mcobject_async_chunk_t *chunk, size_t length)
-{
- if(chunk->begin) {
- if(length > chunk->size) {
- myhtml_free(chunk->begin);
-
- chunk->size = length + mcobj_async->origin_size;
- chunk->begin = (unsigned char*)myhtml_malloc(chunk->size * mcobj_async->struct_size_sn);
- }
- }
- else {
- chunk->size = mcobj_async->origin_size;
-
- if(length > chunk->size)
- chunk->size += length;
-
- chunk->begin = (unsigned char*)myhtml_malloc(chunk->size * mcobj_async->struct_size_sn);
- }
-
- chunk->length = 0;
-
- if(chunk->begin == NULL)
- return MCOBJECT_ASYNC_STATUS_CHUNK_ERROR_MEMORY_ALLOCATION;
-
- return MCOBJECT_ASYNC_STATUS_OK;
-}
-
-mcobject_async_chunk_t * mcobject_async_chunk_malloc_without_lock(mcobject_async_t *mcobj_async, size_t length, mcobject_async_status_t *status)
-{
- if(status)
- *status = MCOBJECT_ASYNC_STATUS_OK;
-
- if(mcobj_async->chunk_cache_length)
- {
- mcobj_async->chunk_cache_length--;
-
- mcobj_async->chunk_cache[ mcobj_async->chunk_cache_length ]->length = 0;
- mcobj_async->chunk_cache[ mcobj_async->chunk_cache_length ]->next = NULL;
- mcobj_async->chunk_cache[ mcobj_async->chunk_cache_length ]->prev = NULL;
-
- return mcobj_async->chunk_cache[ mcobj_async->chunk_cache_length ];
- }
-
- if(mcobj_async->chunks_length >= mcobj_async->chunks_size)
- {
- if(mcobj_async->chunks_pos_length >= mcobj_async->chunks_pos_size)
- {
- size_t tmp_pos_size = mcobj_async->chunks_pos_size << 1;
- mcobject_async_chunk_t **tmp_pos = myhtml_realloc(mcobj_async->chunks,
- sizeof(mcobject_async_chunk_t*) * tmp_pos_size);
-
- if(tmp_pos)
- {
- memset(&tmp_pos[mcobj_async->chunks_pos_length], 0, (tmp_pos_size - mcobj_async->chunks_pos_length)
- * sizeof(mcobject_async_chunk_t*));
-
- mcobj_async->chunks_pos_size = tmp_pos_size;
- mcobj_async->chunks = tmp_pos;
- }
- else {
- if(status)
- *status = MCOBJECT_ASYNC_STATUS_CHUNK_ERROR_MEMORY_ALLOCATION;
-
- return NULL;
- }
- }
-
- if(mcobject_async_chunk_up(mcobj_async)) {
- if(status)
- *status = MCOBJECT_ASYNC_STATUS_CHUNK_ERROR_MEMORY_ALLOCATION;
-
- return NULL;
- }
-
- mcobj_async->chunks_pos_length++;
- }
-
- mcobject_async_chunk_t* chunk = &mcobj_async->chunks[mcobj_async->chunks_pos_length - 1][mcobj_async->chunks_length];
- mcobj_async->chunks_length++;
-
- chunk->next = NULL;
- chunk->prev = NULL;
-
- if(status)
- *status = mcobject_async_mem_malloc(mcobj_async, chunk, length);
- else
- mcobject_async_mem_malloc(mcobj_async, chunk, length);
-
- return chunk;
-}
-
-mcobject_async_chunk_t * mcobject_async_chunk_malloc(mcobject_async_t *mcobj_async, size_t length, mcobject_async_status_t *status)
-{
- mcsync_lock(mcobj_async->mcsync);
- mcobject_async_chunk_t* chunk = mcobject_async_chunk_malloc_without_lock(mcobj_async, length, status);
- mcsync_unlock(mcobj_async->mcsync);
-
- return chunk;
-}
-
-size_t mcobject_async_node_add(mcobject_async_t *mcobj_async, mcobject_async_status_t *status)
-{
- mcsync_lock(mcobj_async->mcsync);
-
- if(status)
- *status = MCOBJECT_ASYNC_STATUS_OK;
-
- size_t node_idx;
-
- if(mcobj_async->nodes_cache_length) {
- mcobj_async->nodes_cache_length--;
-
- node_idx = mcobj_async->nodes_cache[ mcobj_async->nodes_cache_length ];
- }
- else {
- if(mcobj_async->nodes_length >= mcobj_async->nodes_size) {
- mcsync_unlock(mcobj_async->mcsync);
- return 0;
- }
-
- node_idx = mcobj_async->nodes_length;
- mcobj_async->nodes_length++;
- }
-
- mcobject_async_node_t *node = &mcobj_async->nodes[node_idx];
-
- node->chunk = mcobject_async_chunk_malloc_without_lock(mcobj_async, mcobj_async->origin_size, status);
-
- if(status && *status) {
- mcsync_unlock(mcobj_async->mcsync);
- return 0;
- }
-
- node->chunk->next = NULL;
- node->chunk->prev = NULL;
-
- node->cache_length = 0;
- node->cache_size = mcobj_async->origin_size;
- node->cache = (void**)myhtml_malloc(sizeof(void*) * node->cache_size);
-
- if(node->cache == NULL) {
- if(status)
- *status = MCOBJECT_ASYNC_STATUS_CHUNK_CACHE_ERROR_MEMORY_ALLOCATION;
-
- mcsync_unlock(mcobj_async->mcsync);
- return 0;
- }
-
- mcsync_unlock(mcobj_async->mcsync);
-
- return node_idx;
-}
-
-void mcobject_async_node_clean(mcobject_async_t *mcobj_async, size_t node_idx)
-{
- if(mcobj_async->nodes_length <= node_idx)
- return;
-
- mcobject_async_node_t *node = &mcobj_async->nodes[node_idx];
- node->cache_length = 0;
-
- if(node->chunk == NULL)
- return;
-
- while (node->chunk->prev)
- node->chunk = node->chunk->prev;
-
- node->chunk->length = 0;
- node->cache_length = 0;
-}
-
-void mcobject_async_node_all_clean(mcobject_async_t *mcobj_async)
-{
- for (size_t node_idx = 0; node_idx < mcobj_async->nodes_length; node_idx++) {
- mcobject_async_node_clean(mcobj_async, node_idx);
- }
-}
-
-void mcobject_async_node_delete(mcobject_async_t *mcobj_async, size_t node_idx)
-{
- mcsync_lock(mcobj_async->mcsync);
-
- if(mcobj_async->nodes_length <= node_idx) {
- mcsync_unlock(mcobj_async->mcsync);
- return;
- }
-
- mcobject_async_node_t *node = &mcobj_async->nodes[node_idx];
- mcobject_async_chunk_t *chunk = node->chunk;
-
- while (chunk->next)
- chunk = chunk->next;
-
- while (chunk)
- {
- if(mcobj_async->chunk_cache_length >= mcobj_async->chunk_cache_size) {
- size_t new_size = mcobj_async->chunk_cache_size << 1;
-
- mcobject_async_chunk_t **tmp = (mcobject_async_chunk_t**)myhtml_realloc(mcobj_async->chunk_cache,
- sizeof(mcobject_async_chunk_t*) * new_size);
-
- if(tmp) {
- mcobj_async->chunk_cache_size = new_size;
- mcobj_async->chunk_cache = tmp;
- }
- else {
- // TODO: add return status
- mcsync_unlock(mcobj_async->mcsync);
- return;
- }
- }
-
- mcobj_async->chunk_cache[ mcobj_async->chunk_cache_length ] = chunk;
- mcobj_async->chunk_cache_length++;
-
- chunk = chunk->prev;
- }
-
- if(node->cache)
- myhtml_free(node->cache);
-
- memset(node, 0, sizeof(mcobject_async_node_t));
-
- if(mcobj_async->nodes_cache_length >= mcobj_async->nodes_cache_size) {
- size_t new_size = mcobj_async->nodes_cache_size << 1;
-
- size_t *tmp = (size_t*)myhtml_realloc(mcobj_async->nodes_cache, sizeof(size_t) * mcobj_async->nodes_cache_size);
-
- if(tmp) {
- mcobj_async->nodes_cache = tmp;
- mcobj_async->nodes_cache_size = new_size;
- }
- }
-
- mcobj_async->nodes_cache[ mcobj_async->nodes_cache_length ] = node_idx;
- mcobj_async->nodes_cache_length++;
-
- mcsync_unlock(mcobj_async->mcsync);
-}
-
-void * mcobject_async_malloc(mcobject_async_t *mcobj_async, size_t node_idx, mcobject_async_status_t *status)
-{
- mcobject_async_node_t *node = &mcobj_async->nodes[node_idx];
-
- if(node->cache_length) {
- if(status)
- *status = MCOBJECT_ASYNC_STATUS_OK;
-
- node->cache_length--;
- return node->cache[ node->cache_length ];
- }
-
- if(node->chunk->length >= node->chunk->size)
- {
- if(node->chunk->next) {
- node->chunk = node->chunk->next;
- node->chunk->length = 0;
- }
- else {
- mcobject_async_status_t mystatus;
- mcobject_async_chunk_t *chunk = mcobject_async_chunk_malloc(mcobj_async, mcobj_async->origin_size, &mystatus);
-
- if(mystatus) {
- if(status)
- *status = mystatus;
-
- return NULL;
- }
-
- chunk->prev = node->chunk;
- node->chunk->next = chunk;
-
- node->chunk = chunk;
- }
- }
-
- if(status)
- *status = MCOBJECT_ASYNC_STATUS_OK;
-
- size_t offset = node->chunk->length * mcobj_async->struct_size_sn;
- *((size_t*)(&node->chunk->begin[offset])) = node_idx;
-
- node->chunk->length++;
- return &node->chunk->begin[(offset + sizeof(size_t))];
-}
-
-mcobject_async_status_t mcobject_async_free(mcobject_async_t *mcobj_async, void *entry)
-{
- size_t node_idx = *((size_t*)((unsigned char*)entry - sizeof(size_t)));
-
- if(node_idx >= mcobj_async->nodes_length)
- return MCOBJECT_ASYNC_STATUS_NODES_ERROR_BAD_NODE_ID;
-
- mcobject_async_node_t *node = &mcobj_async->nodes[node_idx];
-
- if(node->cache_length >= node->cache_size) {
- size_t new_size = node->cache_size << 1;
-
- void **tmp = (void**)myhtml_realloc(node->cache, sizeof(void*) * new_size);
-
- if(tmp) {
- node->cache = tmp;
- node->cache_size = new_size;
- }
- else
- return MCOBJECT_ASYNC_STATUS_CACHE_ERROR_MEMORY_REALLOC;
- }
-
- node->cache[ node->cache_length ] = entry;
- node->cache_length++;
-
- return MCOBJECT_ASYNC_STATUS_OK;
-}
-
-
diff --git a/source/myhtml/utils/mcobject_async.h b/source/myhtml/utils/mcobject_async.h
deleted file mode 100644
index 8ee1c78..0000000
--- a/source/myhtml/utils/mcobject_async.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#ifndef MyHTML_UTILS_MCOBJECT_ASYNC_H
-#define MyHTML_UTILS_MCOBJECT_ASYNC_H
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "myhtml/myosi.h"
-#include "myhtml/utils/mcsync.h"
-
-enum mcobject_async_status {
- MCOBJECT_ASYNC_STATUS_OK = 0,
- MCOBJECT_ASYNC_STATUS_ERROR_MEMORY_ALLOCATION = 1,
- MCOBJECT_ASYNC_STATUS_CHUNK_ERROR_MEMORY_ALLOCATION = 2,
- MCOBJECT_ASYNC_STATUS_CHUNK_CACHE_ERROR_MEMORY_ALLOCATION = 3,
- MCOBJECT_ASYNC_STATUS_NODES_ERROR_MEMORY_ALLOCATION = 4,
- MCOBJECT_ASYNC_STATUS_NODES_ERROR_BAD_NODE_ID = 5,
- MCOBJECT_ASYNC_STATUS_CACHE_ERROR_MEMORY_REALLOC = 6
-}
-typedef mcobject_async_status_t;
-
-struct mcobject_async_chunk {
- unsigned char *begin;
- size_t length;
- size_t size;
-
- struct mcobject_async_chunk *next;
- struct mcobject_async_chunk *prev;
-}
-typedef mcobject_async_chunk_t;
-
-struct mcobject_async_node {
- mcobject_async_chunk_t *chunk;
-
- void **cache;
- size_t cache_size;
- size_t cache_length;
-}
-typedef mcobject_async_node_t;
-
-struct mcobject_async {
- size_t origin_size;
- size_t struct_size;
- size_t struct_size_sn;
-
- mcobject_async_chunk_t **chunk_cache;
- size_t chunk_cache_size;
- size_t chunk_cache_length;
-
- mcobject_async_chunk_t **chunks;
- size_t chunks_pos_size;
- size_t chunks_pos_length;
- size_t chunks_size;
- size_t chunks_length;
-
- mcobject_async_node_t *nodes;
- size_t nodes_length;
- size_t nodes_size;
-
- size_t *nodes_cache;
- size_t nodes_cache_length;
- size_t nodes_cache_size;
-
- mcsync_t *mcsync;
-}
-typedef mcobject_async_t;
-
-mcobject_async_t * mcobject_async_create(void);
-mcobject_async_status_t mcobject_async_init(mcobject_async_t *mcobj_async, size_t chunk_len, size_t obj_size_by_one_chunk, size_t struct_size);
-
-void mcobject_async_clean(mcobject_async_t *mcobj_async);
-mcobject_async_t * mcobject_async_destroy(mcobject_async_t *mcobj_async, int destroy_self);
-
-size_t mcobject_async_node_add(mcobject_async_t *mcobj_async, mcobject_async_status_t *status);
-void mcobject_async_node_clean(mcobject_async_t *mcobj_async, size_t node_idx);
-void mcobject_async_node_all_clean(mcobject_async_t *mcobj_async);
-void mcobject_async_node_delete(mcobject_async_t *mcobj_async, size_t node_idx);
-
-void * mcobject_async_malloc(mcobject_async_t *mcobj_async, size_t node_idx, mcobject_async_status_t *status);
-mcobject_async_status_t mcobject_async_free(mcobject_async_t *mcobj_async, void *entry);
-
-mcobject_async_chunk_t * mcobject_async_chunk_malloc(mcobject_async_t *mcobj_async, size_t length, mcobject_async_status_t *status);
-mcobject_async_chunk_t * mcobject_async_chunk_malloc_without_lock(mcobject_async_t *mcobj_async, size_t length, mcobject_async_status_t *status);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* mcobject_async_h */
-
-
-
-
diff --git a/source/myhtml/utils/mcsimple.c b/source/myhtml/utils/mcsimple.c
deleted file mode 100644
index 8103b21..0000000
--- a/source/myhtml/utils/mcsimple.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
- */
-
-#include "myhtml/utils/mcsimple.h"
-
-mcsimple_t * mcsimple_create(void)
-{
- return myhtml_calloc(1, sizeof(mcsimple_t));
-}
-
-void mcsimple_init(mcsimple_t *mcsimple, size_t pos_size, size_t list_size, size_t struct_size)
-{
- mcsimple->struct_size = struct_size;
-
- mcsimple->list_pos_length_used = 0;
- mcsimple->list_pos_length = 0;
- mcsimple->list_pos_size = pos_size;
- mcsimple->list = (uint8_t**)myhtml_calloc(pos_size, sizeof(uint8_t*));
-
- if(mcsimple->list == NULL) {
- return;
- }
-
- mcsimple->list_size = list_size * struct_size;
-
- if((mcsimple_init_list_entries(mcsimple, mcsimple->list_pos_length) == NULL)) {
- return;
- }
-}
-
-void mcsimple_clean(mcsimple_t *mcsimple)
-{
- mcsimple->list_length = 0;
- mcsimple->list_pos_length = 0;
-}
-
-mcsimple_t * mcsimple_destroy(mcsimple_t *mcsimple, bool destroy_self)
-{
- if(mcsimple == NULL)
- return NULL;
-
- if(mcsimple->list) {
- for(size_t i = 0; i < mcsimple->list_pos_length_used; i++) {
- if(mcsimple->list[i])
- free(mcsimple->list[i]);
- }
-
- free(mcsimple->list);
- }
-
- if(destroy_self) {
- free(mcsimple);
- return NULL;
- }
-
- return mcsimple;
-}
-
-uint8_t * mcsimple_init_list_entries(mcsimple_t *mcsimple, size_t pos)
-{
- if(mcsimple->list_pos_length >= mcsimple->list_pos_size)
- {
- size_t new_size = mcsimple->list_pos_size + 128;
- uint8_t **list = (uint8_t**)myhtml_realloc(mcsimple->list, mcsimple->list_pos_size * sizeof(uint8_t*));
-
- if(list) {
- mcsimple->list = list;
- memset(&mcsimple->list[pos], 0, (new_size - mcsimple->list_pos_size) * sizeof(uint8_t*));
-
- mcsimple->list_pos_size = new_size;
- }
- else
- return NULL;
- }
-
- mcsimple->list_length = 0;
-
- if(mcsimple->list[pos] == NULL) {
- mcsimple->list_pos_length_used++;
- mcsimple->list[pos] = (uint8_t*)myhtml_malloc(mcsimple->list_size * sizeof(uint8_t));
- }
-
- return mcsimple->list[pos];
-}
-
-void * mcsimple_malloc(mcsimple_t *mcsimple)
-{
- if(mcsimple->list_length >= mcsimple->list_size)
- {
- mcsimple->list_pos_length++;
- if((mcsimple_init_list_entries(mcsimple, mcsimple->list_pos_length) == NULL)) {
- return NULL;
- }
- }
-
- size_t current = mcsimple->list_length;
- mcsimple->list_length += mcsimple->struct_size;
-
- return &mcsimple->list[mcsimple->list_pos_length][current];
-}
-
-void * mcsimple_get_by_absolute_position(mcsimple_t *mcsimple, size_t pos)
-{
- pos *= mcsimple->struct_size;
- return &mcsimple->list[ (pos / mcsimple->list_size) ][ (pos % mcsimple->list_size) ];
-}
-
-
diff --git a/source/myhtml/utils/mcsimple.h b/source/myhtml/utils/mcsimple.h
deleted file mode 100644
index be972d9..0000000
--- a/source/myhtml/utils/mcsimple.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#ifndef MyHTML_UTILS_MCSIMPLE_H
-#define MyHTML_UTILS_MCSIMPLE_H
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "myhtml/myosi.h"
-
-struct mcsimple {
- size_t struct_size;
-
- uint8_t **list;
-
- size_t list_pos_size;
- size_t list_pos_length;
- size_t list_pos_length_used;
- size_t list_size;
- size_t list_length;
-}
-typedef mcsimple_t;
-
-
-mcsimple_t * mcsimple_create(void);
-void mcsimple_init(mcsimple_t *mcsimple, size_t pos_size, size_t list_size, size_t struct_size);
-void mcsimple_clean(mcsimple_t *mcsimple);
-mcsimple_t * mcsimple_destroy(mcsimple_t *mcsimple, bool destroy_self);
-
-uint8_t * mcsimple_init_list_entries(mcsimple_t *mcsimple, size_t pos);
-
-void * mcsimple_malloc(mcsimple_t *mcsimple);
-void * mcsimple_get_by_absolute_position(mcsimple_t *mcsimple, size_t pos);
-
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* MyHTML_UTILS_MCSIMPLE_H */
-
diff --git a/source/myhtml/utils/mcsync.c b/source/myhtml/utils/mcsync.c
deleted file mode 100644
index 58b263b..0000000
--- a/source/myhtml/utils/mcsync.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#include "myhtml/utils/mcsync.h"
-
-#if !defined(MyHTML_BUILD_WITHOUT_THREADS) && ((defined(__GNUC__) && __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) || \
- defined(__ATOMIC_SEQ_CST))
-#define MyHTML_FORCE_SPINLOCK
-#endif
-
-#if defined(MyHTML_FORCE_SPINLOCK)
-static int mcsync_atomic_compare_exchange(int* ptr, int compare, int exchange)
-{
- return __atomic_compare_exchange_n(ptr, &compare, exchange, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
-}
-
-static void mcsync_atomic_store(int* ptr, int value)
-{
- __atomic_store_n(ptr, 0, __ATOMIC_SEQ_CST);
-}
-#endif
-
-#if !defined(MyHTML_BUILD_WITHOUT_THREADS) && defined(IS_OS_WINDOWS)
-static int pthread_mutex_lock(pthread_mutex_t *mutex)
-{
- EnterCriticalSection(mutex);
- return 0;
-}
-
-static int pthread_mutex_unlock(pthread_mutex_t *mutex)
-{
- LeaveCriticalSection(mutex);
- return 0;
-}
-
-static int pthread_mutex_init(pthread_mutex_t *mutex, pthread_mutexattr_t *attr)
-{
- (void)attr;
- InitializeCriticalSection(mutex);
- return 0;
-}
-
-static int pthread_mutex_destroy(pthread_mutex_t *mutex)
-{
- DeleteCriticalSection(mutex);
- return 0;
-}
-#endif
-
-mcsync_t * mcsync_create(void)
-{
- return calloc(1, sizeof(mcsync_t));
-}
-
-mcsync_status_t mcsync_init(mcsync_t* mcsync)
-{
- mcsync_clean(mcsync);
- return MCSYNC_STATUS_OK;
-}
-
-mcsync_t * mcsync_destroy(mcsync_t* mcsync, int destroy_self)
-{
- if(mcsync == NULL)
- return NULL;
-
-#if !defined(MyHTML_BUILD_WITHOUT_THREADS) && !defined(MyHTML_FORCE_SPINLOCK)
- if(mcsync->mutex) {
- pthread_mutex_destroy(mcsync->mutex);
- myhtml_free(mcsync->mutex);
- }
-#endif
-
- if(destroy_self)
- myhtml_free(mcsync);
-
- return NULL;
-}
-
-void mcsync_clean(mcsync_t* mcsync)
-{
- mcsync->spinlock = 0;
-}
-
-mcsync_status_t mcsync_lock(mcsync_t* mcsync)
-{
-#if defined(MyHTML_FORCE_SPINLOCK)
- while (!mcsync_atomic_compare_exchange(&mcsync->spinlock, 0, 1)) {}
-#elif !defined(MyHTML_BUILD_WITHOUT_THREADS)
- mcsync_mutex_lock(mcsync);
-#endif
-
- return MCSYNC_STATUS_OK;
-}
-
-mcsync_status_t mcsync_unlock(mcsync_t* mcsync)
-{
-#if defined(MyHTML_FORCE_SPINLOCK)
- mcsync_atomic_store(&mcsync->spinlock, 0);
-#elif !defined(MyHTML_BUILD_WITHOUT_THREADS)
- mcsync_mutex_unlock(mcsync);
-#endif
-
- return MCSYNC_STATUS_OK;
-}
-
-mcsync_status_t mcsync_mutex_lock(mcsync_t* mcsync)
-{
-#if !defined(MyHTML_BUILD_WITHOUT_THREADS) && !defined(MyHTML_FORCE_SPINLOCK)
- if(mcsync->mutex == NULL) {
- mcsync->mutex = (pthread_mutex_t*)myhtml_malloc(sizeof(pthread_mutex_t));
-
- if(mcsync->mutex == NULL)
- return MCSYNC_STATUS_ERROR_MEM_ALLOCATE;
-
- pthread_mutex_init(mcsync->mutex, NULL);
- }
-
- if(pthread_mutex_lock(mcsync->mutex) == 0)
- return MCSYNC_STATUS_OK;
- else
- return MCSYNC_STATUS_NOT_OK;
-#else
- return MCSYNC_STATUS_NOT_OK;
-#endif
-}
-
-mcsync_status_t mcsync_mutex_unlock(mcsync_t* mcsync)
-{
-#if !defined(MyHTML_BUILD_WITHOUT_THREADS) && !defined(MyHTML_FORCE_SPINLOCK)
- if(pthread_mutex_unlock(mcsync->mutex) == 0)
- return MCSYNC_STATUS_OK;
- else
- return MCSYNC_STATUS_NOT_OK;
-#else
- return MCSYNC_STATUS_NOT_OK;
-#endif
-}
-
diff --git a/source/myhtml/utils/mcsync.h b/source/myhtml/utils/mcsync.h
deleted file mode 100644
index 671aa1a..0000000
--- a/source/myhtml/utils/mcsync.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#ifndef MyHTML_UTILS_MCSYNC_H
-#define MyHTML_UTILS_MCSYNC_H
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <memory.h>
-
-#include "myhtml/myosi.h"
-
-#if !defined(MyHTML_BUILD_WITHOUT_THREADS)
-#if defined(IS_OS_WINDOWS)
- typedef CRITICAL_SECTION pthread_mutex_t;
- typedef unsigned long pthread_mutexattr_t;
-#else
-# include <pthread.h>
-#endif
-#endif
-
-enum mcsync_status {
- MCSYNC_STATUS_OK = 0,
- MCSYNC_STATUS_NOT_OK = 1,
- MCSYNC_STATUS_ERROR_MEM_ALLOCATE = 2
-}
-typedef mcsync_status_t;
-
-struct mcsync {
- int spinlock;
-#if !defined(MyHTML_BUILD_WITHOUT_THREADS)
- pthread_mutex_t *mutex;
-#endif
-}
-typedef mcsync_t;
-
-mcsync_t * mcsync_create(void);
-mcsync_status_t mcsync_init(mcsync_t* mcsync);
-void mcsync_clean(mcsync_t* mcsync);
-mcsync_t * mcsync_destroy(mcsync_t* mcsync, int destroy_self);
-
-mcsync_status_t mcsync_lock(mcsync_t* mclock);
-mcsync_status_t mcsync_unlock(mcsync_t* mclock);
-
-mcsync_status_t mcsync_mutex_lock(mcsync_t* mclock);
-mcsync_status_t mcsync_mutex_unlock(mcsync_t* mclock);
-
-#if !defined(MyHTML_BUILD_WITHOUT_THREADS) && defined(IS_OS_WINDOWS)
- static int pthread_mutex_lock(pthread_mutex_t *mutex);
- static int pthread_mutex_unlock(pthread_mutex_t *mutex);
- static int pthread_mutex_init(pthread_mutex_t *m, pthread_mutexattr_t *a);
- static int pthread_mutex_destroy(pthread_mutex_t *m);
-#endif
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* mcsync_h */
diff --git a/source/myhtml/utils/mctree.c b/source/myhtml/utils/mctree.c
deleted file mode 100644
index 526560c..0000000
--- a/source/myhtml/utils/mctree.c
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#include "myhtml/utils/resources.h"
-#include "myhtml/utils/mctree.h"
-
-
-mctree_t * mctree_create(size_t start_size)
-{
- mctree_t* mctree = (mctree_t*)myhtml_malloc(sizeof(mctree_t));
-
- mctree->nodes_size = start_size + 512;
- mctree->nodes_length = start_size + 1;
- mctree->nodes = (mctree_node_t*)myhtml_calloc(mctree->nodes_size, sizeof(mctree_node_t));
-
- mctree->start_size = start_size;
-
- return mctree;
-}
-
-void mctree_clean(mctree_t* mctree)
-{
- mctree->nodes_length = mctree->start_size + 1;
- memset(mctree->nodes, 0, sizeof(mctree_node_t) * mctree->nodes_size);
-}
-
-mctree_t * mctree_destroy(mctree_t* mctree)
-{
- if(mctree == NULL)
- return NULL;
-
- if(mctree->nodes)
- myhtml_free(mctree->nodes);
-
- myhtml_free(mctree);
-
- return NULL;
-}
-
-mctree_index_t __mtree_search_lowercase_to_start(mctree_t* mctree, mctree_index_t idx, const char* key, size_t key_size)
-{
- mctree_node_t* nodes = mctree->nodes;
-
- while (idx)
- {
- if(key_size == nodes[idx].str_size) {
- if(myhtml_strncasecmp(key, nodes[idx].str, key_size) == 0) {
- return idx;
- }
-
- idx = nodes[idx].child;
- }
- else if(key_size > nodes[idx].str_size)
- {
- if(key_size < nodes[ nodes[idx].next ].str_size) {
- return 0;
- }
-
- idx = nodes[idx].next;
- }
- else {
- if(key_size > nodes[ nodes[idx].prev ].str_size) {
- return 0;
- }
-
- idx = nodes[idx].prev;
- }
- }
-
- return 0;
-}
-
-mctree_index_t __mtree_search_to_start(mctree_t* mctree, mctree_index_t idx, const char* key, size_t key_size)
-{
- mctree_node_t* nodes = mctree->nodes;
-
- while (idx)
- {
- if(key_size == nodes[idx].str_size) {
- if(memcmp((const void *)key, (const void *)(nodes[idx].str), key_size) == 0) {
- return idx;
- }
-
- idx = nodes[idx].child;
- }
- else if(key_size > nodes[idx].str_size)
- {
- if(key_size < nodes[ nodes[idx].next ].str_size) {
- return 0;
- }
-
- idx = nodes[idx].next;
- }
- else {
- if(key_size > nodes[ nodes[idx].prev ].str_size) {
- return 0;
- }
-
- idx = nodes[idx].prev;
- }
- }
-
- return 0;
-}
-
-mctree_index_t mctree_insert_child(mctree_t* mctree, mctree_index_t idx, const char* key, size_t key_size, void* value)
-{
- mctree_node_t* nodes = mctree->nodes;
- mctree_index_t new_idx = mctree_node_get_free_id(mctree);
-
- nodes[idx].child = new_idx;
-
- nodes[new_idx].str = key;
- nodes[new_idx].str_size = key_size;
- nodes[new_idx].value = value;
-
- mctree_node_add(mctree);
-
- return new_idx;
-}
-
-mctree_index_t mctree_insert_after(mctree_t* mctree, mctree_index_t idx, const char* key, size_t key_size, void* value)
-{
- mctree_node_t* nodes = mctree->nodes;
- mctree_index_t new_idx = mctree_node_get_free_id(mctree);
-
- if(nodes[idx].next) {
- nodes[ nodes[idx].next ].prev = new_idx;
- nodes[new_idx].next = nodes[idx].next;
- }
-
- nodes[idx].next = new_idx;
- nodes[new_idx].prev = idx;
-
- nodes[new_idx].str = key;
- nodes[new_idx].str_size = key_size;
- nodes[new_idx].value = value;
-
- mctree_node_add(mctree);
-
- return new_idx;
-}
-
-mctree_index_t mctree_insert_before(mctree_t* mctree, mctree_index_t idx, const char* key, size_t key_size, void* value)
-{
- mctree_node_t* nodes = mctree->nodes;
- mctree_index_t new_idx = mctree_node_get_free_id(mctree);
-
- if(nodes[idx].prev) {
- nodes[ nodes[idx].prev ].next = new_idx;
- nodes[new_idx].prev = nodes[idx].prev;
- }
-
- nodes[idx].prev = new_idx;
- nodes[new_idx].next = idx;
-
- nodes[new_idx].str = key;
- nodes[new_idx].str_size = key_size;
- nodes[new_idx].value = value;
-
- mctree_node_add(mctree);
-
- return new_idx;
-}
-
-mctree_index_t __mtree_insert_to_start(mctree_t* mctree, mctree_index_t idx, const char* key, size_t key_size, void* value, mctree_before_insert_f b_insert)
-{
- mctree_node_t* nodes = mctree->nodes;
-
- while (idx)
- {
- if(key_size == nodes[idx].str_size) {
- if(memcmp((const void *)key, (const void *)nodes[idx].str, key_size) == 0)
- {
- if(value)
- nodes[idx].value = value;
-
- return idx;
- }
-
- if(nodes[idx].child == 0) {
- if(b_insert)
- b_insert(key, key_size, &value);
-
- return mctree_insert_child(mctree, idx, key, key_size, value);
- }
-
- idx = nodes[idx].child;
- }
- else if(key_size > nodes[idx].str_size)
- {
- if(nodes[idx].next == 0 || key_size < nodes[ nodes[idx].next ].str_size) {
- if(b_insert)
- b_insert(key, key_size, &value);
-
- return mctree_insert_after(mctree, idx, key, key_size, value);
- }
-
- idx = nodes[idx].next;
- }
- else {
- if(nodes[idx].prev == 0 || key_size > nodes[ nodes[idx].prev ].str_size) {
- if(b_insert)
- b_insert(key, key_size, &value);
-
- return mctree_insert_before(mctree, idx, key, key_size, value);
- }
-
- idx = nodes[idx].prev;
- }
- }
-
- return 0;
-}
-
-mctree_index_t mctree_insert(mctree_t* mctree, const char* key, size_t key_size, void* value, mctree_before_insert_f b_insert)
-{
- mctree_node_t* start = mctree->nodes;
-
- if(key_size > 0) {
- mctree_index_t idx = mctree_make_first_idx(mctree, key, key_size);
-
- if(start[idx].child) {
- return __mtree_insert_to_start(mctree, start[idx].child, key, key_size, value, b_insert);
- }
- else {
- if(b_insert)
- b_insert(key, key_size, &value);
-
- return mctree_insert_child(mctree, idx, key, key_size, value);
- }
- }
-
- return 0;
-}
-
-mctree_index_t mctree_search(mctree_t* mctree, const char* key, size_t key_size)
-{
- mctree_node_t* start = mctree->nodes;
-
- if(key_size > 0) {
- mctree_index_t idx = mctree_make_first_idx(mctree, key, key_size);
-
- if(start[idx].child) {
- return __mtree_search_to_start(mctree, start[idx].child, key, key_size);
- }
- }
-
- return 0;
-}
-
-mctree_index_t mctree_search_lowercase(mctree_t* mctree, const char* key, size_t key_size)
-{
- mctree_node_t* start = mctree->nodes;
-
- if(key_size > 0) {
- mctree_index_t idx = mctree_make_first_idx(mctree, key, key_size);
-
- if(start[idx].child) {
- return __mtree_search_lowercase_to_start(mctree, start[idx].child, key, key_size);
- }
- }
-
- return 0;
-}
-
-
-
diff --git a/source/myhtml/utils/mctree.h b/source/myhtml/utils/mctree.h
deleted file mode 100644
index bd3054f..0000000
--- a/source/myhtml/utils/mctree.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#ifndef MyHTML_UTILS_MCTREE_H
-#define MyHTML_UTILS_MCTREE_H
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "myhtml/myosi.h"
-#include "myhtml/utils.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <memory.h>
-
-#define mctree_node_get_free_id(mctree) mctree->nodes_length
-
-#define mctree_node_clean(mctree, idx) \
- mctree->nodes[idx].str = NULL; \
- mctree->nodes[idx].value = NULL; \
- mctree->nodes[idx].child_count = 0; \
- mctree->nodes[idx].prev = 0; \
- mctree->nodes[idx].next = 0; \
- mctree->nodes[idx].child = 0
-
-#define mctree_node_add(mctree) \
- mctree->nodes_length++; \
- if(mctree->nodes_length >= mctree->nodes_size) { \
- mctree->nodes_size = mctree->nodes_length + 4096; \
- mctree->nodes = (mctree_node_t*)myhtml_realloc(mctree->nodes, \
- sizeof(mctree_node_t) * mctree->nodes_size); \
- } \
- mctree_node_clean(mctree, mctree->nodes_length)
-
-#define mctree_make_first_idx(mctree, key, size) \
- ((myhtml_string_chars_lowercase_map[ (const unsigned char)(key[0]) ] + myhtml_string_chars_lowercase_map[ (const unsigned char)(key[size - 1]) ]) % mctree->start_size) + 1
-
-
-typedef size_t mctree_index_t;
-
-struct mctree_node {
- const char* str;
- size_t str_size;
- void* value;
-
- size_t child_count;
- mctree_index_t prev;
- mctree_index_t next;
- mctree_index_t child;
-}
-typedef mctree_node_t;
-
-struct mctree_tree {
- mctree_node_t* nodes;
- size_t nodes_length;
- size_t nodes_size;
-
- size_t start_size;
-}
-typedef mctree_t;
-
-typedef void (*mctree_before_insert_f)(const char* key, size_t key_size, void **value);
-
-
-mctree_t * mctree_create(size_t start_size);
-void mctree_clean(mctree_t* mctree);
-mctree_t * mctree_destroy(mctree_t* mctree);
-
-mctree_index_t mctree_insert(mctree_t* mctree, const char* key, size_t key_size, void* value, mctree_before_insert_f b_insert);
-mctree_index_t mctree_search(mctree_t* mctree, const char* key, size_t key_size);
-mctree_index_t mctree_search_lowercase(mctree_t* mctree, const char* key, size_t key_size);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* defined(__mhtml__mtree__) */
diff --git a/source/myhtml/utils/mhash.c b/source/myhtml/utils/mhash.c
deleted file mode 100644
index 1929f26..0000000
--- a/source/myhtml/utils/mhash.c
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- Copyright (C) 2017 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin avl_treet, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#include "myhtml/utils/mhash.h"
-
-size_t myhtml_utils_mhash_hash(const char* key, size_t key_size, size_t table_size)
-{
- size_t hash, i;
-
- for(hash = i = 0; i < key_size; i++)
- {
- hash += key[i];
- hash += (hash << 10);
- hash ^= (hash >> 6);
- }
-
- hash += (hash << 3);
- hash ^= (hash >> 11);
- hash += (hash << 15);
-
- return hash % table_size;
-}
-
-myhtml_utils_mhash_t * myhtml_utils_mhash_create(void)
-{
- return myhtml_calloc(1, sizeof(myhtml_utils_mhash_t));
-};
-
-myhtml_status_t myhtml_utils_mhash_init(myhtml_utils_mhash_t* mhash, size_t table_size, size_t max_depth)
-{
- mhash->mchar_obj = mchar_async_create(128, 4096);
- if(mhash->mchar_obj == NULL)
- return MyHTML_STATUS_ATTR_ERROR_ALLOCATION;
-
- mhash->mchar_node = mchar_async_node_add(mhash->mchar_obj);
-
- if(table_size < 128)
- table_size = 128;
-
- mhash->table = myhtml_calloc(table_size, sizeof(myhtml_utils_mhash_entry_t*));
- if(mhash->table == NULL)
- return MyHTML_STATUS_ATTR_ERROR_ALLOCATION;
-
- if(max_depth < 1)
- max_depth = 1;
-
- mhash->table_max_depth = max_depth;
- mhash->table_size = table_size;
-
- return MyHTML_STATUS_OK;
-};
-
-void myhtml_utils_mhash_clean(myhtml_utils_mhash_t* mhash)
-{
- mchar_async_clean(mhash->mchar_obj);
- memset(mhash->table, 0, (sizeof(myhtml_utils_mhash_entry_t*) * mhash->table_size));
-}
-
-myhtml_utils_mhash_t * myhtml_utils_mhash_destroy(myhtml_utils_mhash_t* mhash, bool self_destroy)
-{
- if(mhash == NULL)
- return NULL;
-
- if(mhash->table) {
- myhtml_free(mhash->table);
- mhash->table = NULL;
- }
-
- if(self_destroy) {
- myhtml_free(mhash->table);
- return NULL;
- }
-
- return mhash;
-}
-
-myhtml_utils_mhash_entry_t * myhtml_utils_mhash_create_entry(myhtml_utils_mhash_t* mhash, const char* key, size_t key_size, void* value)
-{
- myhtml_utils_mhash_entry_t *entry = (myhtml_utils_mhash_entry_t*)
- mchar_async_malloc(mhash->mchar_obj, mhash->mchar_node, sizeof(myhtml_utils_mhash_entry_t));
-
- entry->key = mchar_async_malloc(mhash->mchar_obj, mhash->mchar_node, (sizeof(char) * key_size) + 1);
-
- if(entry->key == NULL) {
- mchar_async_free(mhash->mchar_obj, mhash->mchar_node, (char*)entry);
- return NULL;
- }
-
- memcpy(entry->key, key, (sizeof(char) * key_size));
- entry->key[key_size] = '\0';
-
- entry->key_length = key_size;
- entry->value = value;
- entry->next = NULL;
-
- return entry;
-}
-
-myhtml_utils_mhash_entry_t * myhtml_utils_mhash_add_with_choice(myhtml_utils_mhash_t* mhash, const char* key, size_t key_size)
-{
- if(key == NULL || key_size == 0)
- return NULL;
-
- size_t hash_id = myhtml_utils_mhash_hash(key, key_size, mhash->table_size);
-
-
- myhtml_utils_mhash_entry_t *entry;
-
- if(mhash->table[hash_id] == NULL) {
- /* rebuild table if need */
- if(mhash->table_length >= (mhash->table_size - (mhash->table_size / 4))) {
- myhtml_utils_mhash_rebuld(mhash);
- }
-
- mhash->table[hash_id] = myhtml_utils_mhash_create_entry(mhash, key, key_size, NULL);
- return mhash->table[hash_id];
- }
-
- size_t depth = 0;
- entry = mhash->table[hash_id];
-
- do {
- if(entry->key_length == key_size) {
- if(strncmp(entry->key, key, key_size) == 0)
- return entry;
- }
-
- if(entry->next == NULL) {
- entry->next = myhtml_utils_mhash_create_entry(mhash, key, key_size, NULL);
-
- if(depth > mhash->table_max_depth) {
- myhtml_utils_mhash_entry_t *entry_new = entry->next;
- myhtml_utils_mhash_rebuld(mhash);
-
- return entry_new;
- }
-
- return entry->next;
- }
-
- depth++;
- entry = entry->next;
- }
- while(1);
-}
-
-myhtml_utils_mhash_entry_t * myhtml_utils_mhash_add(myhtml_utils_mhash_t* mhash, const char* key, size_t key_size, void* value)
-{
- myhtml_utils_mhash_entry_t *entry = myhtml_utils_mhash_add_with_choice(mhash, key, key_size);
-
- if(entry)
- entry->value = value;
-
- return entry;
-}
-
-myhtml_utils_mhash_entry_t * myhtml_utils_mhash_search(myhtml_utils_mhash_t* mhash, const char* key, size_t key_size, void* value)
-{
- if(key == NULL || key_size == 0)
- return NULL;
-
- size_t hash_id = myhtml_utils_mhash_hash(key, key_size, mhash->table_size);
-
- myhtml_utils_mhash_entry_t *entry = mhash->table[hash_id];
-
- while(entry) {
- if(entry->key_length == key_size) {
- if(strncmp(entry->key, key, key_size) == 0)
- return entry;
- }
-
- entry = entry->next;
- }
-
- return NULL;
-}
-
-myhtml_utils_mhash_entry_t * myhtml_utils_mhash_entry_by_id(myhtml_utils_mhash_t* mhash, size_t id)
-{
- if(mhash->table_size > id)
- return mhash->table[id];
-
- return NULL;
-}
-
-size_t myhtml_utils_mhash_get_table_size(myhtml_utils_mhash_t* mhash)
-{
- return mhash->table_size;
-}
-
-myhtml_utils_mhash_entry_t * myhtml_utils_mhash_rebuild_add_entry(myhtml_utils_mhash_t* mhash, const char* key, size_t key_size, myhtml_utils_mhash_entry_t *ext_entry)
-{
- if(key == NULL || key_size == 0)
- return NULL;
-
- ext_entry->next = NULL;
-
- size_t hash_id = myhtml_utils_mhash_hash(key, key_size, mhash->table_size);
-
- if(mhash->table[hash_id] == NULL) {
- mhash->table[hash_id] = ext_entry;
- return ext_entry;
- }
-
- myhtml_utils_mhash_entry_t *entry = mhash->table[hash_id];
-
- do {
- if(entry->next == NULL) {
- entry->next = ext_entry;
- break;
- }
-
- entry = entry->next;
- }
- while(1);
-
- return ext_entry;
-}
-
-myhtml_utils_mhash_entry_t ** myhtml_utils_mhash_rebuld(myhtml_utils_mhash_t* mhash)
-{
- myhtml_utils_mhash_entry_t **table = mhash->table;
- size_t size = mhash->table_size;
-
- mhash->table_size = mhash->table_size << 1;
- mhash->table = myhtml_calloc(mhash->table_size, sizeof(myhtml_utils_mhash_entry_t*));
-
- if(mhash->table == NULL) {
- mhash->table = table;
- mhash->table_size = size;
-
- return NULL;
- }
-
- for(size_t i = 0; i < mhash->table_size; i++) {
- myhtml_utils_mhash_entry_t *entry = table[i];
-
- while(entry) {
- myhtml_utils_mhash_rebuild_add_entry(mhash, entry->key, entry->key_length, entry);
-
- entry = entry->next;
- }
- }
-
- myhtml_free(table);
-
- return mhash->table;
-}
-
-
diff --git a/source/myhtml/utils/mhash.h b/source/myhtml/utils/mhash.h
deleted file mode 100644
index c3c8aec..0000000
--- a/source/myhtml/utils/mhash.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- Copyright (C) 2017 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin avl_treet, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#ifndef html_mhash_h
-#define html_mhash_h
-
-#include "myhtml/myosi.h"
-#include "myhtml/utils/mchar_async.h"
-
-typedef struct myhtml_utils_mhash_entry myhtml_utils_mhash_entry_t;
-
-struct myhtml_utils_mhash_entry {
- char* key;
- size_t key_length;
-
- void *value;
-
- myhtml_utils_mhash_entry_t* next;
-};
-
-struct myhtml_utils_mhash {
- mchar_async_t* mchar_obj;
- size_t mchar_node;
-
- myhtml_utils_mhash_entry_t** table;
- size_t table_size;
- size_t table_length;
-
- size_t table_max_depth;
-}
-typedef myhtml_utils_mhash_t;
-
-myhtml_utils_mhash_t * myhtml_utils_mhash_create(void);
-myhtml_status_t myhtml_utils_mhash_init(myhtml_utils_mhash_t* mhash, size_t table_size, size_t depth);
-void myhtml_utils_mhash_clean(myhtml_utils_mhash_t* mhash);
-myhtml_utils_mhash_t * myhtml_utils_mhash_destroy(myhtml_utils_mhash_t* mhash, bool self_destroy);
-myhtml_utils_mhash_entry_t * myhtml_utils_mhash_create_entry(myhtml_utils_mhash_t* mhash, const char* key, size_t key_size, void* value);
-
-myhtml_utils_mhash_entry_t * myhtml_utils_mhash_add(myhtml_utils_mhash_t* mhash, const char* key, size_t key_size, void* value);
-myhtml_utils_mhash_entry_t * myhtml_utils_mhash_search(myhtml_utils_mhash_t* mhash, const char* key, size_t key_size, void* value);
-myhtml_utils_mhash_entry_t * myhtml_utils_mhash_add_with_choice(myhtml_utils_mhash_t* mhash, const char* key, size_t key_size);
-
-myhtml_utils_mhash_entry_t * myhtml_utils_mhash_entry_by_id(myhtml_utils_mhash_t* mhash, size_t id);
-size_t myhtml_utils_mhash_get_table_size(myhtml_utils_mhash_t* mhash);
-
-myhtml_utils_mhash_entry_t ** myhtml_utils_mhash_rebuld(myhtml_utils_mhash_t* mhash);
-
-#endif
diff --git a/source/myhtml/utils/resources.h b/source/myhtml/utils/resources.h
deleted file mode 100644
index beee061..0000000
--- a/source/myhtml/utils/resources.h
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- Copyright (C) 2015-2016 Alexander Borisov
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- Author: lex.borisov@gmail.com (Alexander Borisov)
-*/
-
-#ifndef MyHTML_UTILS_RESOURCES_H
-#define MyHTML_UTILS_RESOURCES_H
-#pragma once
-
-#include <stddef.h>
-
-#define MyHTML_TOKENIZER_CHAR_OTHER '\000'
-#define MyHTML_TOKENIZER_CHAR_A_Z_a_z '\001'
-#define MyHTML_TOKENIZER_CHAR_WHITESPACE '\002'
-
-static const unsigned char myhtml_string_chars_num_map[] = {
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
- 0x06, 0x07, 0x08, 0x09, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff
-};
-
-static const unsigned char myhtml_string_chars_hex_map[] = {
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
- 0x06, 0x07, 0x08, 0x09, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0a, 0x0b,
- 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff
-};
-
-static const unsigned char myhtml_string_chars_lowercase_map[] = {
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
- 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11,
- 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a,
- 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23,
- 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c,
- 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e,
- 0x3f, 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
- 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
- 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,
- 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62,
- 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b,
- 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74,
- 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d,
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86,
- 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
- 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
- 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1,
- 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa,
- 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3,
- 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc,
- 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5,
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce,
- 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0,
- 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
- 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2,
- 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb,
- 0xfc, 0xfd, 0xfe, 0xff
-};
-
-static const size_t replacement_character[] = {
- 65533, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 8364, 129, 8218, 402, 8222, 8230, 8224,
- 8225, 710, 8240, 352, 8249, 338, 141, 381, 143,
- 144, 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732,
- 8482, 353, 8250, 339, 157, 382, 376
-};
-
-static const size_t myhtml_string_alphanumeric_character[] = {
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
- 0x06, 0x07, 0x08, 0x09, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0a,
- 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0a, 0x0b, 0x0c, 0x0d,
- 0x0e, 0x0f, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0a,
- 0x0b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0c, 0x0d,
- 0x0e, 0x0f, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0a,
- 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0a, 0x0b, 0x0c, 0x0d,
- 0x0e, 0x0f, 0x0a, 0x0b, 0x0c, 0x0d, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff
-};
-
-static const unsigned char myhtml_tokenizer_chars_map[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00
-};
-
-static const unsigned char myhtml_string_hex_to_char_map[] = {
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
- 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x00
-};
-
-#endif /* MyHTML_UTILS_RESOURCES_H */