summaryrefslogtreecommitdiffstats
path: root/intl/unicharutil
diff options
context:
space:
mode:
Diffstat (limited to 'intl/unicharutil')
-rw-r--r--intl/unicharutil/moz.build44
-rw-r--r--intl/unicharutil/normalization_data.h5247
-rw-r--r--intl/unicharutil/nsCaseConversionImp2.cpp62
-rw-r--r--intl/unicharutil/nsCaseConversionImp2.h35
-rw-r--r--intl/unicharutil/nsCategoryImp.cpp32
-rw-r--r--intl/unicharutil/nsCategoryImp.h22
-rw-r--r--intl/unicharutil/nsEntityConverter.cpp173
-rw-r--r--intl/unicharutil/nsEntityConverter.h49
-rw-r--r--intl/unicharutil/nsICaseConversion.h45
-rw-r--r--intl/unicharutil/nsIEntityConverter.idl31
-rw-r--r--intl/unicharutil/nsISaveAsCharset.idl50
-rw-r--r--intl/unicharutil/nsIUGenCategory.h47
-rw-r--r--intl/unicharutil/nsIUnicodeNormalizer.idl33
-rw-r--r--intl/unicharutil/nsSaveAsCharset.cpp56
-rw-r--r--intl/unicharutil/nsSaveAsCharset.h37
-rw-r--r--intl/unicharutil/nsUnicharUtilCIID.h24
-rw-r--r--intl/unicharutil/nsUnicodeNormalizer.cpp704
-rw-r--r--intl/unicharutil/nsUnicodeNormalizer.h40
-rw-r--r--intl/unicharutil/nsUnicodeNormalizer_ICU.cpp98
-rw-r--r--intl/unicharutil/tables/html40Latin1.properties114
-rw-r--r--intl/unicharutil/tables/html40Special.properties37
-rw-r--r--intl/unicharutil/tables/html40Symbols.properties132
-rw-r--r--intl/unicharutil/tables/mathml20.properties1253
-rw-r--r--intl/unicharutil/tables/moz.build12
-rw-r--r--intl/unicharutil/tests/NormalizationData.h12
-rw-r--r--intl/unicharutil/tests/NormalizationTest.cpp282
-rw-r--r--intl/unicharutil/tests/genNormalizationData.pl93
-rwxr-xr-xintl/unicharutil/tests/moz.build11
-rwxr-xr-xintl/unicharutil/tests/unit/xpcshell.ini3
-rw-r--r--intl/unicharutil/tools/MUTTUCData.txt208
-rw-r--r--intl/unicharutil/tools/README.txt3
-rw-r--r--intl/unicharutil/tools/UCDATAREADME.txt207
-rw-r--r--intl/unicharutil/tools/data/case.datbin0 -> 16592 bytes
-rw-r--r--intl/unicharutil/tools/data/cmbcl.datbin0 -> 1388 bytes
-rw-r--r--intl/unicharutil/tools/data/ctype.datbin0 -> 19196 bytes
-rw-r--r--intl/unicharutil/tools/data/decomp.datbin0 -> 16272 bytes
-rw-r--r--intl/unicharutil/tools/data/num.datbin0 -> 2976 bytes
-rw-r--r--intl/unicharutil/tools/format.txt243
-rwxr-xr-xintl/unicharutil/tools/genSpecialCasingData.pl287
-rwxr-xr-xintl/unicharutil/tools/genUnicodePropertyData.pl943
-rw-r--r--intl/unicharutil/tools/moz.build12
-rw-r--r--intl/unicharutil/tools/ucgendat.c1457
-rw-r--r--intl/unicharutil/ucdata.c1162
-rw-r--r--intl/unicharutil/ucdata.h306
-rw-r--r--intl/unicharutil/util/GreekCasing.cpp268
-rw-r--r--intl/unicharutil/util/GreekCasing.h73
-rw-r--r--intl/unicharutil/util/ICUUtils.cpp284
-rw-r--r--intl/unicharutil/util/ICUUtils.h114
-rw-r--r--intl/unicharutil/util/IrishCasing.cpp249
-rw-r--r--intl/unicharutil/util/IrishCasing.h117
-rw-r--r--intl/unicharutil/util/internal/moz.build21
-rw-r--r--intl/unicharutil/util/moz.build45
-rw-r--r--intl/unicharutil/util/nsBidiUtils.cpp99
-rw-r--r--intl/unicharutil/util/nsBidiUtils.h265
-rw-r--r--intl/unicharutil/util/nsSpecialCasingData.cpp202
-rw-r--r--intl/unicharutil/util/nsSpecialCasingData.h26
-rw-r--r--intl/unicharutil/util/nsUnicharUtils.cpp435
-rw-r--r--intl/unicharutil/util/nsUnicharUtils.h152
-rw-r--r--intl/unicharutil/util/nsUnicodeProperties.cpp479
-rw-r--r--intl/unicharutil/util/nsUnicodeProperties.h303
-rw-r--r--intl/unicharutil/util/nsUnicodePropertyData.cpp1854
-rw-r--r--intl/unicharutil/util/nsUnicodeScriptCodes.h293
-rw-r--r--intl/unicharutil/util/objs.mozbuild27
63 files changed, 18912 insertions, 0 deletions
diff --git a/intl/unicharutil/moz.build b/intl/unicharutil/moz.build
new file mode 100644
index 000000000..461fd255e
--- /dev/null
+++ b/intl/unicharutil/moz.build
@@ -0,0 +1,44 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['util', 'tables']
+TEST_DIRS += ['tests']
+
+XPIDL_SOURCES += [
+ 'nsIEntityConverter.idl',
+ 'nsISaveAsCharset.idl',
+ 'nsIUnicodeNormalizer.idl',
+]
+
+XPIDL_MODULE = 'unicharutil'
+
+EXPORTS += [
+ 'nsICaseConversion.h',
+ 'nsIUGenCategory.h',
+ 'nsUnicharUtilCIID.h',
+ 'nsUnicodeNormalizer.h',
+]
+
+UNIFIED_SOURCES += [
+ 'nsCaseConversionImp2.cpp',
+ 'nsCategoryImp.cpp',
+ 'nsEntityConverter.cpp',
+ 'nsSaveAsCharset.cpp',
+]
+
+if CONFIG['ENABLE_INTL_API']:
+ UNIFIED_SOURCES += [
+ 'nsUnicodeNormalizer_ICU.cpp',
+ ]
+else:
+ UNIFIED_SOURCES += [
+ 'nsUnicodeNormalizer.cpp',
+ ]
+
+FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+ CXXFLAGS += ['-Wno-error=shadow']
diff --git a/intl/unicharutil/normalization_data.h b/intl/unicharutil/normalization_data.h
new file mode 100644
index 000000000..90dcd9f4e
--- /dev/null
+++ b/intl/unicharutil/normalization_data.h
@@ -0,0 +1,5247 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+
+/* This file is modified from JPNIC's mDNKit, it is under both MPL and
+ * JPNIC's license.
+ */
+
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/*
+ * Copyright (c) 2000,2002 Japan Network Information Center.
+ * All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set forth bellow.
+ *
+ * LICENSE TERMS AND CONDITIONS
+ *
+ * The following License Terms and Conditions apply, unless a different
+ * license is obtained from Japan Network Information Center ("JPNIC"),
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
+ *
+ * 1. Use, Modification and Redistribution (including distribution of any
+ * modified or derived work) in source and/or binary forms is permitted
+ * under this License Terms and Conditions.
+ *
+ * 2. Redistribution of source code must retain the copyright notices as they
+ * appear in each source code file, this License Terms and Conditions.
+ *
+ * 3. Redistribution in binary form must reproduce the Copyright Notice,
+ * this License Terms and Conditions, in the documentation and/or other
+ * materials provided with the distribution. For the purposes of binary
+ * distribution the "Copyright Notice" refers to the following language:
+ * "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved."
+ *
+ * 4. The name of JPNIC may not be used to endorse or promote products
+ * derived from this Software without specific prior written approval of
+ * JPNIC.
+ *
+ * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ */
+
+/* $Id: normalization_data.h,v 1.1 2005/04/05 23:00:13 jshin%mailaps.org Exp $ */
+/* $-Id: generate_normalize_data.pl,v 1.9 2002/11/29 09:08:13 ishisone Exp -$ */
+/*
+ * Do not edit this file!
+ * This file is generated from UnicodeData.txt, CompositionExclusions-1.txt,
+ * SpecialCasing.txt and CaseFolding.txt.
+ */
+
+
+/*
+ * Canonical Class
+ */
+
+#define CANON_CLASS_BITS_0 9
+#define CANON_CLASS_BITS_1 7
+#define CANON_CLASS_BITS_2 5
+
+static const char16_t canon_class_imap[] = {
+ 272, 400, 528, 656, 784, 784, 784, 784,
+ 784, 784, 912, 784, 784, 784, 784, 1040,
+ 1168, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 1296, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 2, 3, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0,
+ 0, 0, 0, 0, 6, 7, 8, 0,
+ 9, 0, 10, 11, 0, 0, 12, 13,
+ 14, 15, 16, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 17, 18, 0, 0, 17, 19, 0,
+ 0, 17, 19, 0, 0, 17, 19, 0,
+ 0, 17, 19, 0, 0, 0, 19, 0,
+ 0, 0, 20, 0, 0, 17, 19, 0,
+ 0, 0, 19, 0, 0, 0, 21, 0,
+ 0, 22, 23, 0, 0, 24, 25, 0,
+ 26, 27, 0, 28, 29, 0, 30, 0,
+ 0, 31, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 32, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 33, 33, 0, 0, 0, 0, 34, 0,
+ 0, 0, 0, 0, 0, 35, 0, 0,
+ 0, 36, 0, 0, 0, 0, 0, 0,
+ 37, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 38, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 39, 40,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 41, 0, 0, 42, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 43, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 44, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 45, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 46, 47, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 48, 49, 50, 0, 0,
+ 0, 0, 51, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const struct {
+ unsigned char tbl[32];
+} canon_class_table[] = {
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232,
+ 220, 220, 220, 220, 232, 216, 220, 220, 220, 220,
+ }},
+ {{
+ 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220,
+ 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 1,
+ 1, 1, 1, 220, 220, 220, 220, 230, 230, 230,
+ }},
+ {{
+ 230, 230, 230, 230, 230, 240, 230, 220, 220, 220, 230,
+ 230, 230, 220, 220, 0, 230, 230, 230, 220, 220, 220,
+ 220, 230, 232, 220, 220, 230, 233, 234, 234, 233,
+ }},
+ {{
+ 234, 234, 233, 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 220, 230, 230, 230, 230,
+ 220, 230, 230, 230, 222, 220, 230, 230, 230, 230,
+ }},
+ {{
+ 230, 230, 220, 220, 220, 220, 220, 220, 230, 230, 220,
+ 230, 230, 222, 228, 230, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 0, 20, 21, 22, 0, 23,
+ }},
+ {{
+ 0, 24, 25, 0, 230, 220, 0, 18, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220,
+ 220, 230, 230, 230, 230, 230, 220, 230, 230, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 230, 230, 230, 230, 230, 230, 230, 0, 0, 230,
+ }},
+ {{
+ 230, 230, 230, 220, 230, 0, 0, 230, 230, 0, 220,
+ 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 230, 220, 230, 230, 220, 230,
+ 230, 220, 220, 220, 230, 220, 220, 230, 220, 230,
+ }},
+ {{
+ 230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84,
+ 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 103, 103, 9, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107,
+ 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 118, 118, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122,
+ 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 220, 220, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220,
+ 0, 220, 0, 216, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 129, 130, 0, 132, 0,
+ 0, 0, 0, 0, 130, 130, 130, 130, 0, 0,
+ }},
+ {{
+ 130, 0, 230, 230, 9, 0, 230, 230, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 7, 0, 9, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 230,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 230, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 222, 230, 220, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 230, 220, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 230, 230, 220, 230, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230,
+ 230, 230, 1, 1, 1, 230, 230, 0, 0, 0,
+ }},
+ {{
+ 0, 230, 0, 0, 0, 1, 1, 230, 220, 230, 1,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218,
+ 228, 232, 222, 224, 224, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 26, 0,
+ }},
+ {{
+ 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 220, 0, 230, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 230, 1, 220, 0, 0, 0, 0, 9,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 216, 216, 1, 1, 1, 0,
+ 0, 0, 226, 216, 216, 216, 216, 216, 0, 0, 0,
+ 0, 0, 0, 0, 0, 220, 220, 220, 220, 220,
+ }},
+ {{
+ 220, 220, 220, 0, 0, 230, 230, 230, 230, 230, 220,
+ 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230,
+ 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 230, 230, 230, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+};
+
+/*
+ * Canonical Composition
+ */
+
+#define CANON_COMPOSE_BITS_0 9
+#define CANON_COMPOSE_BITS_1 7
+#define CANON_COMPOSE_BITS_2 5
+
+static const char16_t compose_imap[] = {
+ 272, 400, 528, 656, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 0, 1, 2, 3, 0, 4, 5, 6,
+ 7, 0, 8, 9, 0, 10, 0, 11,
+ 0, 12, 0, 0, 13, 0, 0, 0,
+ 0, 0, 0, 0, 14, 15, 16, 0,
+ 17, 18, 19, 20, 0, 0, 21, 22,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 23, 24, 0, 0, 0, 25, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 26, 0, 0, 0, 0, 27, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 28, 0, 29, 0, 30, 0,
+ 0, 0, 31, 0, 0, 32, 33, 0,
+ 0, 0, 34, 0, 0, 0, 35, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 36, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 37, 38, 39, 0, 40, 41, 0,
+ 42, 43, 44, 45, 0, 46, 47, 48,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 49, 0, 50, 0,
+ 51, 52, 53, 54, 55, 56, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 57, 58, 59, 60, 61, 62,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const struct {
+ uint32_t tbl[32];
+} compose_table[] = {
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 65537, 65538, 65539, 0,
+ }},
+ {{
+ 0, 1048580, 196628, 327703, 393244, 1114146, 65587,
+ 458804, 458811, 983106, 65617, 327762, 393303, 196701,
+ 589920, 1048681, 131193, 0, 524411, 458883, 458890,
+ 1245329, 131236, 393382, 131244, 589998, 393399, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 1048765, 196813, 327888, 393429, 1114331, 65772,
+ 458989, 524532, 917756, 131338, 327948, 393489, 196887,
+ 590106, 1048867, 131379, 0, 524597, 459069, 524612,
+ 1245516, 131423, 459105, 131432, 655722, 393588, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 196986, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 262525, 0, 65921, 65922, 131459,
+ 65925, 0, 0, 262534, 0, 0, 0,
+ 0, 65930, 0, 0, 0, 0, 262539,
+ 197007, 65938, 0, 65939, 0, 0, 0,
+ 262548, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 262552, 0, 65948, 65949, 131486,
+ 65952, 0, 0, 262561, 0, 0, 0,
+ 0, 65957, 0, 0, 0, 0, 262566,
+ 197034, 65965, 0, 65966, 0, 0, 0,
+ 262575, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 262579, 262583, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 131515, 131517, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 131519, 131521,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 65987, 65988,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 65989, 65990, 0, 0, 0, 0, 0,
+ 0, 65991, 65992, 65993, 65994, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 65995,
+ }},
+ {{
+ 328140, 328145, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 328150, 328155, 0, 0, 0, 0,
+ 0, 0, 66016, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 66017, 66018, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 66019,
+ 66020, 66021, 66022, 0, 0, 0, 0,
+ 66023, 66024, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66025, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 459242, 0, 0, 0,
+ 262641, 0, 328181, 0, 459258, 0, 0,
+ 0, 0, 0, 262657,
+ }},
+ {{
+ 0, 66053, 0, 0, 0, 393734, 0,
+ 0, 0, 328204, 0, 0, 66065, 0,
+ 66066, 0, 0, 524819, 0, 0, 0,
+ 262683, 0, 393759, 0, 524837, 0, 0,
+ 0, 0, 0, 262701,
+ }},
+ {{
+ 0, 131633, 0, 0, 0, 524851, 0,
+ 0, 0, 393787, 197185, 197188, 0, 0,
+ 66119, 0, 0, 0, 131656, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 66122,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 131659, 0, 0, 66125, 0,
+ 197198, 131665, 66131, 262740, 0, 66136, 0,
+ 0, 0, 66137, 0,
+ }},
+ {{
+ 0, 0, 0, 262746, 0, 0, 0,
+ 66142, 0, 0, 0, 66143, 0, 66144,
+ 0, 0, 131681, 0, 0, 66147, 0,
+ 197220, 131687, 66153, 262762, 0, 66158, 0,
+ 0, 0, 66159, 0,
+ }},
+ {{
+ 0, 0, 0, 262768, 0, 0, 0,
+ 66164, 0, 0, 0, 66165, 0, 66166,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 66167, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 66168,
+ 66169, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 66170, 66171, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 66172, 66173, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 197246, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 66177, 0, 66178, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 66179, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66180, 0, 0,
+ 66181, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 66182, 0, 0, 0, 0, 0,
+ 0, 0, 66183, 0, 0, 66184, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 131721, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 197259, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66190, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 131727,
+ 66193, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 66194,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 66195,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 197268,
+ 0, 0, 0, 66199, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 131736,
+ 66202, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 197275, 0, 0,
+ 66206, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 66207, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 66208, 66209, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 66210, 66211,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 66212, 66213, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 131750, 131752, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 66218, 66219, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 66220, 66221,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 262830, 262834, 66230, 66231, 66232, 66233, 66234,
+ 66235, 262844, 262848, 66244, 66245, 66246, 66247,
+ 66248, 66249, 131786, 131788, 0, 0, 0,
+ 0, 0, 0, 131790, 131792, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 262866, 262870, 66266, 66267, 66268, 66269, 66270,
+ 66271, 262880, 262884, 66280, 66281, 66282, 66283,
+ 66284, 66285, 197358, 197361, 0, 0, 0,
+ 0, 0, 0, 197364, 197367, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 131834, 131836, 0, 0, 0, 0, 0,
+ 0, 131838, 131840, 0, 0, 0, 0,
+ 0, 0, 197378, 197381, 0, 0, 0,
+ 0, 0, 0, 0, 197384, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 262923, 262927, 66323, 66324, 66325, 66326, 66327,
+ 66328, 262937, 262941, 66337, 66338, 66339, 66340,
+ 66341, 66342, 66343, 0, 0, 0, 66344,
+ 0, 0, 0, 0, 0, 0, 0,
+ 66345, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 66346, 0, 0, 0, 0, 0,
+ 0, 0, 0, 197419,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 66350,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 66351, 0, 0, 0, 0, 0,
+ 0, 0, 197424, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 66355, 0, 66356, 0, 66357,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 66358, 0, 66359, 0, 66360,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 66361, 0, 0, 0,
+ 0, 66362, 0, 0, 66363, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 66364, 0, 66365, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 66366, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 66367, 0, 66368, 0,
+ 0, 66369, 0, 0, 0, 0, 66370,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 66371, 0, 0, 66372, 66373, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66374, 66375, 0,
+ 0, 66376, 66377, 0, 0, 66378, 66379,
+ 66380, 66381, 0, 0,
+ }},
+ {{
+ 0, 0, 66382, 66383, 0, 0, 66384,
+ 66385, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 66386, 66387, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 66388, 0, 0, 0, 0,
+ 0, 66389, 66390, 0, 66391, 0, 0,
+ 0, 0, 0, 0, 66392, 66393, 66394,
+ 66395, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 66396,
+ 0, 0, 0, 0, 66397, 0, 66398,
+ 0, 66399, 0, 66400, 0, 66401, 0,
+ 66402, 0, 66403, 0, 66404, 0, 66405,
+ 0, 66406, 0, 66407,
+ }},
+ {{
+ 0, 66408, 0, 0, 66409, 0, 66410,
+ 0, 66411, 0, 0, 0, 0, 0,
+ 0, 131948, 0, 0, 131950, 0, 0,
+ 131952, 0, 0, 131954, 0, 0, 131956,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 66422, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 66423,
+ 0, 0, 0, 0, 66424, 0, 66425,
+ 0, 66426, 0, 66427, 0, 66428, 0,
+ 66429, 0, 66430, 0, 66431, 0, 66432,
+ 0, 66433, 0, 66434,
+ }},
+ {{
+ 0, 66435, 0, 0, 66436, 0, 66437,
+ 0, 66438, 0, 0, 0, 0, 0,
+ 0, 131975, 0, 0, 131977, 0, 0,
+ 131979, 0, 0, 131981, 0, 0, 131983,
+ 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 66449, 66450, 66451, 66452, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 66453, 0, 0,
+ }},
+};
+
+static const struct composition compose_seq[] = {
+ { 0x00000000, 0x00000000 }, { 0x00000338, 0x0000226e },
+ { 0x00000338, 0x00002260 }, { 0x00000338, 0x0000226f },
+ { 0x00000300, 0x000000c0 }, { 0x00000301, 0x000000c1 },
+ { 0x00000302, 0x000000c2 }, { 0x00000303, 0x000000c3 },
+ { 0x00000304, 0x00000100 }, { 0x00000306, 0x00000102 },
+ { 0x00000307, 0x00000226 }, { 0x00000308, 0x000000c4 },
+ { 0x00000309, 0x00001ea2 }, { 0x0000030a, 0x000000c5 },
+ { 0x0000030c, 0x000001cd }, { 0x0000030f, 0x00000200 },
+ { 0x00000311, 0x00000202 }, { 0x00000323, 0x00001ea0 },
+ { 0x00000325, 0x00001e00 }, { 0x00000328, 0x00000104 },
+ { 0x00000307, 0x00001e02 }, { 0x00000323, 0x00001e04 },
+ { 0x00000331, 0x00001e06 }, { 0x00000301, 0x00000106 },
+ { 0x00000302, 0x00000108 }, { 0x00000307, 0x0000010a },
+ { 0x0000030c, 0x0000010c }, { 0x00000327, 0x000000c7 },
+ { 0x00000307, 0x00001e0a }, { 0x0000030c, 0x0000010e },
+ { 0x00000323, 0x00001e0c }, { 0x00000327, 0x00001e10 },
+ { 0x0000032d, 0x00001e12 }, { 0x00000331, 0x00001e0e },
+ { 0x00000300, 0x000000c8 }, { 0x00000301, 0x000000c9 },
+ { 0x00000302, 0x000000ca }, { 0x00000303, 0x00001ebc },
+ { 0x00000304, 0x00000112 }, { 0x00000306, 0x00000114 },
+ { 0x00000307, 0x00000116 }, { 0x00000308, 0x000000cb },
+ { 0x00000309, 0x00001eba }, { 0x0000030c, 0x0000011a },
+ { 0x0000030f, 0x00000204 }, { 0x00000311, 0x00000206 },
+ { 0x00000323, 0x00001eb8 }, { 0x00000327, 0x00000228 },
+ { 0x00000328, 0x00000118 }, { 0x0000032d, 0x00001e18 },
+ { 0x00000330, 0x00001e1a }, { 0x00000307, 0x00001e1e },
+ { 0x00000301, 0x000001f4 }, { 0x00000302, 0x0000011c },
+ { 0x00000304, 0x00001e20 }, { 0x00000306, 0x0000011e },
+ { 0x00000307, 0x00000120 }, { 0x0000030c, 0x000001e6 },
+ { 0x00000327, 0x00000122 }, { 0x00000302, 0x00000124 },
+ { 0x00000307, 0x00001e22 }, { 0x00000308, 0x00001e26 },
+ { 0x0000030c, 0x0000021e }, { 0x00000323, 0x00001e24 },
+ { 0x00000327, 0x00001e28 }, { 0x0000032e, 0x00001e2a },
+ { 0x00000300, 0x000000cc }, { 0x00000301, 0x000000cd },
+ { 0x00000302, 0x000000ce }, { 0x00000303, 0x00000128 },
+ { 0x00000304, 0x0000012a }, { 0x00000306, 0x0000012c },
+ { 0x00000307, 0x00000130 }, { 0x00000308, 0x000000cf },
+ { 0x00000309, 0x00001ec8 }, { 0x0000030c, 0x000001cf },
+ { 0x0000030f, 0x00000208 }, { 0x00000311, 0x0000020a },
+ { 0x00000323, 0x00001eca }, { 0x00000328, 0x0000012e },
+ { 0x00000330, 0x00001e2c }, { 0x00000302, 0x00000134 },
+ { 0x00000301, 0x00001e30 }, { 0x0000030c, 0x000001e8 },
+ { 0x00000323, 0x00001e32 }, { 0x00000327, 0x00000136 },
+ { 0x00000331, 0x00001e34 }, { 0x00000301, 0x00000139 },
+ { 0x0000030c, 0x0000013d }, { 0x00000323, 0x00001e36 },
+ { 0x00000327, 0x0000013b }, { 0x0000032d, 0x00001e3c },
+ { 0x00000331, 0x00001e3a }, { 0x00000301, 0x00001e3e },
+ { 0x00000307, 0x00001e40 }, { 0x00000323, 0x00001e42 },
+ { 0x00000300, 0x000001f8 }, { 0x00000301, 0x00000143 },
+ { 0x00000303, 0x000000d1 }, { 0x00000307, 0x00001e44 },
+ { 0x0000030c, 0x00000147 }, { 0x00000323, 0x00001e46 },
+ { 0x00000327, 0x00000145 }, { 0x0000032d, 0x00001e4a },
+ { 0x00000331, 0x00001e48 }, { 0x00000300, 0x000000d2 },
+ { 0x00000301, 0x000000d3 }, { 0x00000302, 0x000000d4 },
+ { 0x00000303, 0x000000d5 }, { 0x00000304, 0x0000014c },
+ { 0x00000306, 0x0000014e }, { 0x00000307, 0x0000022e },
+ { 0x00000308, 0x000000d6 }, { 0x00000309, 0x00001ece },
+ { 0x0000030b, 0x00000150 }, { 0x0000030c, 0x000001d1 },
+ { 0x0000030f, 0x0000020c }, { 0x00000311, 0x0000020e },
+ { 0x0000031b, 0x000001a0 }, { 0x00000323, 0x00001ecc },
+ { 0x00000328, 0x000001ea }, { 0x00000301, 0x00001e54 },
+ { 0x00000307, 0x00001e56 }, { 0x00000301, 0x00000154 },
+ { 0x00000307, 0x00001e58 }, { 0x0000030c, 0x00000158 },
+ { 0x0000030f, 0x00000210 }, { 0x00000311, 0x00000212 },
+ { 0x00000323, 0x00001e5a }, { 0x00000327, 0x00000156 },
+ { 0x00000331, 0x00001e5e }, { 0x00000301, 0x0000015a },
+ { 0x00000302, 0x0000015c }, { 0x00000307, 0x00001e60 },
+ { 0x0000030c, 0x00000160 }, { 0x00000323, 0x00001e62 },
+ { 0x00000326, 0x00000218 }, { 0x00000327, 0x0000015e },
+ { 0x00000307, 0x00001e6a }, { 0x0000030c, 0x00000164 },
+ { 0x00000323, 0x00001e6c }, { 0x00000326, 0x0000021a },
+ { 0x00000327, 0x00000162 }, { 0x0000032d, 0x00001e70 },
+ { 0x00000331, 0x00001e6e }, { 0x00000300, 0x000000d9 },
+ { 0x00000301, 0x000000da }, { 0x00000302, 0x000000db },
+ { 0x00000303, 0x00000168 }, { 0x00000304, 0x0000016a },
+ { 0x00000306, 0x0000016c }, { 0x00000308, 0x000000dc },
+ { 0x00000309, 0x00001ee6 }, { 0x0000030a, 0x0000016e },
+ { 0x0000030b, 0x00000170 }, { 0x0000030c, 0x000001d3 },
+ { 0x0000030f, 0x00000214 }, { 0x00000311, 0x00000216 },
+ { 0x0000031b, 0x000001af }, { 0x00000323, 0x00001ee4 },
+ { 0x00000324, 0x00001e72 }, { 0x00000328, 0x00000172 },
+ { 0x0000032d, 0x00001e76 }, { 0x00000330, 0x00001e74 },
+ { 0x00000303, 0x00001e7c }, { 0x00000323, 0x00001e7e },
+ { 0x00000300, 0x00001e80 }, { 0x00000301, 0x00001e82 },
+ { 0x00000302, 0x00000174 }, { 0x00000307, 0x00001e86 },
+ { 0x00000308, 0x00001e84 }, { 0x00000323, 0x00001e88 },
+ { 0x00000307, 0x00001e8a }, { 0x00000308, 0x00001e8c },
+ { 0x00000300, 0x00001ef2 }, { 0x00000301, 0x000000dd },
+ { 0x00000302, 0x00000176 }, { 0x00000303, 0x00001ef8 },
+ { 0x00000304, 0x00000232 }, { 0x00000307, 0x00001e8e },
+ { 0x00000308, 0x00000178 }, { 0x00000309, 0x00001ef6 },
+ { 0x00000323, 0x00001ef4 }, { 0x00000301, 0x00000179 },
+ { 0x00000302, 0x00001e90 }, { 0x00000307, 0x0000017b },
+ { 0x0000030c, 0x0000017d }, { 0x00000323, 0x00001e92 },
+ { 0x00000331, 0x00001e94 }, { 0x00000300, 0x000000e0 },
+ { 0x00000301, 0x000000e1 }, { 0x00000302, 0x000000e2 },
+ { 0x00000303, 0x000000e3 }, { 0x00000304, 0x00000101 },
+ { 0x00000306, 0x00000103 }, { 0x00000307, 0x00000227 },
+ { 0x00000308, 0x000000e4 }, { 0x00000309, 0x00001ea3 },
+ { 0x0000030a, 0x000000e5 }, { 0x0000030c, 0x000001ce },
+ { 0x0000030f, 0x00000201 }, { 0x00000311, 0x00000203 },
+ { 0x00000323, 0x00001ea1 }, { 0x00000325, 0x00001e01 },
+ { 0x00000328, 0x00000105 }, { 0x00000307, 0x00001e03 },
+ { 0x00000323, 0x00001e05 }, { 0x00000331, 0x00001e07 },
+ { 0x00000301, 0x00000107 }, { 0x00000302, 0x00000109 },
+ { 0x00000307, 0x0000010b }, { 0x0000030c, 0x0000010d },
+ { 0x00000327, 0x000000e7 }, { 0x00000307, 0x00001e0b },
+ { 0x0000030c, 0x0000010f }, { 0x00000323, 0x00001e0d },
+ { 0x00000327, 0x00001e11 }, { 0x0000032d, 0x00001e13 },
+ { 0x00000331, 0x00001e0f }, { 0x00000300, 0x000000e8 },
+ { 0x00000301, 0x000000e9 }, { 0x00000302, 0x000000ea },
+ { 0x00000303, 0x00001ebd }, { 0x00000304, 0x00000113 },
+ { 0x00000306, 0x00000115 }, { 0x00000307, 0x00000117 },
+ { 0x00000308, 0x000000eb }, { 0x00000309, 0x00001ebb },
+ { 0x0000030c, 0x0000011b }, { 0x0000030f, 0x00000205 },
+ { 0x00000311, 0x00000207 }, { 0x00000323, 0x00001eb9 },
+ { 0x00000327, 0x00000229 }, { 0x00000328, 0x00000119 },
+ { 0x0000032d, 0x00001e19 }, { 0x00000330, 0x00001e1b },
+ { 0x00000307, 0x00001e1f }, { 0x00000301, 0x000001f5 },
+ { 0x00000302, 0x0000011d }, { 0x00000304, 0x00001e21 },
+ { 0x00000306, 0x0000011f }, { 0x00000307, 0x00000121 },
+ { 0x0000030c, 0x000001e7 }, { 0x00000327, 0x00000123 },
+ { 0x00000302, 0x00000125 }, { 0x00000307, 0x00001e23 },
+ { 0x00000308, 0x00001e27 }, { 0x0000030c, 0x0000021f },
+ { 0x00000323, 0x00001e25 }, { 0x00000327, 0x00001e29 },
+ { 0x0000032e, 0x00001e2b }, { 0x00000331, 0x00001e96 },
+ { 0x00000300, 0x000000ec }, { 0x00000301, 0x000000ed },
+ { 0x00000302, 0x000000ee }, { 0x00000303, 0x00000129 },
+ { 0x00000304, 0x0000012b }, { 0x00000306, 0x0000012d },
+ { 0x00000308, 0x000000ef }, { 0x00000309, 0x00001ec9 },
+ { 0x0000030c, 0x000001d0 }, { 0x0000030f, 0x00000209 },
+ { 0x00000311, 0x0000020b }, { 0x00000323, 0x00001ecb },
+ { 0x00000328, 0x0000012f }, { 0x00000330, 0x00001e2d },
+ { 0x00000302, 0x00000135 }, { 0x0000030c, 0x000001f0 },
+ { 0x00000301, 0x00001e31 }, { 0x0000030c, 0x000001e9 },
+ { 0x00000323, 0x00001e33 }, { 0x00000327, 0x00000137 },
+ { 0x00000331, 0x00001e35 }, { 0x00000301, 0x0000013a },
+ { 0x0000030c, 0x0000013e }, { 0x00000323, 0x00001e37 },
+ { 0x00000327, 0x0000013c }, { 0x0000032d, 0x00001e3d },
+ { 0x00000331, 0x00001e3b }, { 0x00000301, 0x00001e3f },
+ { 0x00000307, 0x00001e41 }, { 0x00000323, 0x00001e43 },
+ { 0x00000300, 0x000001f9 }, { 0x00000301, 0x00000144 },
+ { 0x00000303, 0x000000f1 }, { 0x00000307, 0x00001e45 },
+ { 0x0000030c, 0x00000148 }, { 0x00000323, 0x00001e47 },
+ { 0x00000327, 0x00000146 }, { 0x0000032d, 0x00001e4b },
+ { 0x00000331, 0x00001e49 }, { 0x00000300, 0x000000f2 },
+ { 0x00000301, 0x000000f3 }, { 0x00000302, 0x000000f4 },
+ { 0x00000303, 0x000000f5 }, { 0x00000304, 0x0000014d },
+ { 0x00000306, 0x0000014f }, { 0x00000307, 0x0000022f },
+ { 0x00000308, 0x000000f6 }, { 0x00000309, 0x00001ecf },
+ { 0x0000030b, 0x00000151 }, { 0x0000030c, 0x000001d2 },
+ { 0x0000030f, 0x0000020d }, { 0x00000311, 0x0000020f },
+ { 0x0000031b, 0x000001a1 }, { 0x00000323, 0x00001ecd },
+ { 0x00000328, 0x000001eb }, { 0x00000301, 0x00001e55 },
+ { 0x00000307, 0x00001e57 }, { 0x00000301, 0x00000155 },
+ { 0x00000307, 0x00001e59 }, { 0x0000030c, 0x00000159 },
+ { 0x0000030f, 0x00000211 }, { 0x00000311, 0x00000213 },
+ { 0x00000323, 0x00001e5b }, { 0x00000327, 0x00000157 },
+ { 0x00000331, 0x00001e5f }, { 0x00000301, 0x0000015b },
+ { 0x00000302, 0x0000015d }, { 0x00000307, 0x00001e61 },
+ { 0x0000030c, 0x00000161 }, { 0x00000323, 0x00001e63 },
+ { 0x00000326, 0x00000219 }, { 0x00000327, 0x0000015f },
+ { 0x00000307, 0x00001e6b }, { 0x00000308, 0x00001e97 },
+ { 0x0000030c, 0x00000165 }, { 0x00000323, 0x00001e6d },
+ { 0x00000326, 0x0000021b }, { 0x00000327, 0x00000163 },
+ { 0x0000032d, 0x00001e71 }, { 0x00000331, 0x00001e6f },
+ { 0x00000300, 0x000000f9 }, { 0x00000301, 0x000000fa },
+ { 0x00000302, 0x000000fb }, { 0x00000303, 0x00000169 },
+ { 0x00000304, 0x0000016b }, { 0x00000306, 0x0000016d },
+ { 0x00000308, 0x000000fc }, { 0x00000309, 0x00001ee7 },
+ { 0x0000030a, 0x0000016f }, { 0x0000030b, 0x00000171 },
+ { 0x0000030c, 0x000001d4 }, { 0x0000030f, 0x00000215 },
+ { 0x00000311, 0x00000217 }, { 0x0000031b, 0x000001b0 },
+ { 0x00000323, 0x00001ee5 }, { 0x00000324, 0x00001e73 },
+ { 0x00000328, 0x00000173 }, { 0x0000032d, 0x00001e77 },
+ { 0x00000330, 0x00001e75 }, { 0x00000303, 0x00001e7d },
+ { 0x00000323, 0x00001e7f }, { 0x00000300, 0x00001e81 },
+ { 0x00000301, 0x00001e83 }, { 0x00000302, 0x00000175 },
+ { 0x00000307, 0x00001e87 }, { 0x00000308, 0x00001e85 },
+ { 0x0000030a, 0x00001e98 }, { 0x00000323, 0x00001e89 },
+ { 0x00000307, 0x00001e8b }, { 0x00000308, 0x00001e8d },
+ { 0x00000300, 0x00001ef3 }, { 0x00000301, 0x000000fd },
+ { 0x00000302, 0x00000177 }, { 0x00000303, 0x00001ef9 },
+ { 0x00000304, 0x00000233 }, { 0x00000307, 0x00001e8f },
+ { 0x00000308, 0x000000ff }, { 0x00000309, 0x00001ef7 },
+ { 0x0000030a, 0x00001e99 }, { 0x00000323, 0x00001ef5 },
+ { 0x00000301, 0x0000017a }, { 0x00000302, 0x00001e91 },
+ { 0x00000307, 0x0000017c }, { 0x0000030c, 0x0000017e },
+ { 0x00000323, 0x00001e93 }, { 0x00000331, 0x00001e95 },
+ { 0x00000300, 0x00001fed }, { 0x00000301, 0x00000385 },
+ { 0x00000342, 0x00001fc1 }, { 0x00000300, 0x00001ea6 },
+ { 0x00000301, 0x00001ea4 }, { 0x00000303, 0x00001eaa },
+ { 0x00000309, 0x00001ea8 }, { 0x00000304, 0x000001de },
+ { 0x00000301, 0x000001fa }, { 0x00000301, 0x000001fc },
+ { 0x00000304, 0x000001e2 }, { 0x00000301, 0x00001e08 },
+ { 0x00000300, 0x00001ec0 }, { 0x00000301, 0x00001ebe },
+ { 0x00000303, 0x00001ec4 }, { 0x00000309, 0x00001ec2 },
+ { 0x00000301, 0x00001e2e }, { 0x00000300, 0x00001ed2 },
+ { 0x00000301, 0x00001ed0 }, { 0x00000303, 0x00001ed6 },
+ { 0x00000309, 0x00001ed4 }, { 0x00000301, 0x00001e4c },
+ { 0x00000304, 0x0000022c }, { 0x00000308, 0x00001e4e },
+ { 0x00000304, 0x0000022a }, { 0x00000301, 0x000001fe },
+ { 0x00000300, 0x000001db }, { 0x00000301, 0x000001d7 },
+ { 0x00000304, 0x000001d5 }, { 0x0000030c, 0x000001d9 },
+ { 0x00000300, 0x00001ea7 }, { 0x00000301, 0x00001ea5 },
+ { 0x00000303, 0x00001eab }, { 0x00000309, 0x00001ea9 },
+ { 0x00000304, 0x000001df }, { 0x00000301, 0x000001fb },
+ { 0x00000301, 0x000001fd }, { 0x00000304, 0x000001e3 },
+ { 0x00000301, 0x00001e09 }, { 0x00000300, 0x00001ec1 },
+ { 0x00000301, 0x00001ebf }, { 0x00000303, 0x00001ec5 },
+ { 0x00000309, 0x00001ec3 }, { 0x00000301, 0x00001e2f },
+ { 0x00000300, 0x00001ed3 }, { 0x00000301, 0x00001ed1 },
+ { 0x00000303, 0x00001ed7 }, { 0x00000309, 0x00001ed5 },
+ { 0x00000301, 0x00001e4d }, { 0x00000304, 0x0000022d },
+ { 0x00000308, 0x00001e4f }, { 0x00000304, 0x0000022b },
+ { 0x00000301, 0x000001ff }, { 0x00000300, 0x000001dc },
+ { 0x00000301, 0x000001d8 }, { 0x00000304, 0x000001d6 },
+ { 0x0000030c, 0x000001da }, { 0x00000300, 0x00001eb0 },
+ { 0x00000301, 0x00001eae }, { 0x00000303, 0x00001eb4 },
+ { 0x00000309, 0x00001eb2 }, { 0x00000300, 0x00001eb1 },
+ { 0x00000301, 0x00001eaf }, { 0x00000303, 0x00001eb5 },
+ { 0x00000309, 0x00001eb3 }, { 0x00000300, 0x00001e14 },
+ { 0x00000301, 0x00001e16 }, { 0x00000300, 0x00001e15 },
+ { 0x00000301, 0x00001e17 }, { 0x00000300, 0x00001e50 },
+ { 0x00000301, 0x00001e52 }, { 0x00000300, 0x00001e51 },
+ { 0x00000301, 0x00001e53 }, { 0x00000307, 0x00001e64 },
+ { 0x00000307, 0x00001e65 }, { 0x00000307, 0x00001e66 },
+ { 0x00000307, 0x00001e67 }, { 0x00000301, 0x00001e78 },
+ { 0x00000301, 0x00001e79 }, { 0x00000308, 0x00001e7a },
+ { 0x00000308, 0x00001e7b }, { 0x00000307, 0x00001e9b },
+ { 0x00000300, 0x00001edc }, { 0x00000301, 0x00001eda },
+ { 0x00000303, 0x00001ee0 }, { 0x00000309, 0x00001ede },
+ { 0x00000323, 0x00001ee2 }, { 0x00000300, 0x00001edd },
+ { 0x00000301, 0x00001edb }, { 0x00000303, 0x00001ee1 },
+ { 0x00000309, 0x00001edf }, { 0x00000323, 0x00001ee3 },
+ { 0x00000300, 0x00001eea }, { 0x00000301, 0x00001ee8 },
+ { 0x00000303, 0x00001eee }, { 0x00000309, 0x00001eec },
+ { 0x00000323, 0x00001ef0 }, { 0x00000300, 0x00001eeb },
+ { 0x00000301, 0x00001ee9 }, { 0x00000303, 0x00001eef },
+ { 0x00000309, 0x00001eed }, { 0x00000323, 0x00001ef1 },
+ { 0x0000030c, 0x000001ee }, { 0x00000304, 0x000001ec },
+ { 0x00000304, 0x000001ed }, { 0x00000304, 0x000001e0 },
+ { 0x00000304, 0x000001e1 }, { 0x00000306, 0x00001e1c },
+ { 0x00000306, 0x00001e1d }, { 0x00000304, 0x00000230 },
+ { 0x00000304, 0x00000231 }, { 0x0000030c, 0x000001ef },
+ { 0x00000300, 0x00001fba }, { 0x00000301, 0x00000386 },
+ { 0x00000304, 0x00001fb9 }, { 0x00000306, 0x00001fb8 },
+ { 0x00000313, 0x00001f08 }, { 0x00000314, 0x00001f09 },
+ { 0x00000345, 0x00001fbc }, { 0x00000300, 0x00001fc8 },
+ { 0x00000301, 0x00000388 }, { 0x00000313, 0x00001f18 },
+ { 0x00000314, 0x00001f19 }, { 0x00000300, 0x00001fca },
+ { 0x00000301, 0x00000389 }, { 0x00000313, 0x00001f28 },
+ { 0x00000314, 0x00001f29 }, { 0x00000345, 0x00001fcc },
+ { 0x00000300, 0x00001fda }, { 0x00000301, 0x0000038a },
+ { 0x00000304, 0x00001fd9 }, { 0x00000306, 0x00001fd8 },
+ { 0x00000308, 0x000003aa }, { 0x00000313, 0x00001f38 },
+ { 0x00000314, 0x00001f39 }, { 0x00000300, 0x00001ff8 },
+ { 0x00000301, 0x0000038c }, { 0x00000313, 0x00001f48 },
+ { 0x00000314, 0x00001f49 }, { 0x00000314, 0x00001fec },
+ { 0x00000300, 0x00001fea }, { 0x00000301, 0x0000038e },
+ { 0x00000304, 0x00001fe9 }, { 0x00000306, 0x00001fe8 },
+ { 0x00000308, 0x000003ab }, { 0x00000314, 0x00001f59 },
+ { 0x00000300, 0x00001ffa }, { 0x00000301, 0x0000038f },
+ { 0x00000313, 0x00001f68 }, { 0x00000314, 0x00001f69 },
+ { 0x00000345, 0x00001ffc }, { 0x00000345, 0x00001fb4 },
+ { 0x00000345, 0x00001fc4 }, { 0x00000300, 0x00001f70 },
+ { 0x00000301, 0x000003ac }, { 0x00000304, 0x00001fb1 },
+ { 0x00000306, 0x00001fb0 }, { 0x00000313, 0x00001f00 },
+ { 0x00000314, 0x00001f01 }, { 0x00000342, 0x00001fb6 },
+ { 0x00000345, 0x00001fb3 }, { 0x00000300, 0x00001f72 },
+ { 0x00000301, 0x000003ad }, { 0x00000313, 0x00001f10 },
+ { 0x00000314, 0x00001f11 }, { 0x00000300, 0x00001f74 },
+ { 0x00000301, 0x000003ae }, { 0x00000313, 0x00001f20 },
+ { 0x00000314, 0x00001f21 }, { 0x00000342, 0x00001fc6 },
+ { 0x00000345, 0x00001fc3 }, { 0x00000300, 0x00001f76 },
+ { 0x00000301, 0x000003af }, { 0x00000304, 0x00001fd1 },
+ { 0x00000306, 0x00001fd0 }, { 0x00000308, 0x000003ca },
+ { 0x00000313, 0x00001f30 }, { 0x00000314, 0x00001f31 },
+ { 0x00000342, 0x00001fd6 }, { 0x00000300, 0x00001f78 },
+ { 0x00000301, 0x000003cc }, { 0x00000313, 0x00001f40 },
+ { 0x00000314, 0x00001f41 }, { 0x00000313, 0x00001fe4 },
+ { 0x00000314, 0x00001fe5 }, { 0x00000300, 0x00001f7a },
+ { 0x00000301, 0x000003cd }, { 0x00000304, 0x00001fe1 },
+ { 0x00000306, 0x00001fe0 }, { 0x00000308, 0x000003cb },
+ { 0x00000313, 0x00001f50 }, { 0x00000314, 0x00001f51 },
+ { 0x00000342, 0x00001fe6 }, { 0x00000300, 0x00001f7c },
+ { 0x00000301, 0x000003ce }, { 0x00000313, 0x00001f60 },
+ { 0x00000314, 0x00001f61 }, { 0x00000342, 0x00001ff6 },
+ { 0x00000345, 0x00001ff3 }, { 0x00000300, 0x00001fd2 },
+ { 0x00000301, 0x00000390 }, { 0x00000342, 0x00001fd7 },
+ { 0x00000300, 0x00001fe2 }, { 0x00000301, 0x000003b0 },
+ { 0x00000342, 0x00001fe7 }, { 0x00000345, 0x00001ff4 },
+ { 0x00000301, 0x000003d3 }, { 0x00000308, 0x000003d4 },
+ { 0x00000308, 0x00000407 }, { 0x00000306, 0x000004d0 },
+ { 0x00000308, 0x000004d2 }, { 0x00000301, 0x00000403 },
+ { 0x00000300, 0x00000400 }, { 0x00000306, 0x000004d6 },
+ { 0x00000308, 0x00000401 }, { 0x00000306, 0x000004c1 },
+ { 0x00000308, 0x000004dc }, { 0x00000308, 0x000004de },
+ { 0x00000300, 0x0000040d }, { 0x00000304, 0x000004e2 },
+ { 0x00000306, 0x00000419 }, { 0x00000308, 0x000004e4 },
+ { 0x00000301, 0x0000040c }, { 0x00000308, 0x000004e6 },
+ { 0x00000304, 0x000004ee }, { 0x00000306, 0x0000040e },
+ { 0x00000308, 0x000004f0 }, { 0x0000030b, 0x000004f2 },
+ { 0x00000308, 0x000004f4 }, { 0x00000308, 0x000004f8 },
+ { 0x00000308, 0x000004ec }, { 0x00000306, 0x000004d1 },
+ { 0x00000308, 0x000004d3 }, { 0x00000301, 0x00000453 },
+ { 0x00000300, 0x00000450 }, { 0x00000306, 0x000004d7 },
+ { 0x00000308, 0x00000451 }, { 0x00000306, 0x000004c2 },
+ { 0x00000308, 0x000004dd }, { 0x00000308, 0x000004df },
+ { 0x00000300, 0x0000045d }, { 0x00000304, 0x000004e3 },
+ { 0x00000306, 0x00000439 }, { 0x00000308, 0x000004e5 },
+ { 0x00000301, 0x0000045c }, { 0x00000308, 0x000004e7 },
+ { 0x00000304, 0x000004ef }, { 0x00000306, 0x0000045e },
+ { 0x00000308, 0x000004f1 }, { 0x0000030b, 0x000004f3 },
+ { 0x00000308, 0x000004f5 }, { 0x00000308, 0x000004f9 },
+ { 0x00000308, 0x000004ed }, { 0x00000308, 0x00000457 },
+ { 0x0000030f, 0x00000476 }, { 0x0000030f, 0x00000477 },
+ { 0x00000308, 0x000004da }, { 0x00000308, 0x000004db },
+ { 0x00000308, 0x000004ea }, { 0x00000308, 0x000004eb },
+ { 0x00000653, 0x00000622 }, { 0x00000654, 0x00000623 },
+ { 0x00000655, 0x00000625 }, { 0x00000654, 0x00000624 },
+ { 0x00000654, 0x00000626 }, { 0x00000654, 0x000006c2 },
+ { 0x00000654, 0x000006d3 }, { 0x00000654, 0x000006c0 },
+ { 0x0000093c, 0x00000929 }, { 0x0000093c, 0x00000931 },
+ { 0x0000093c, 0x00000934 }, { 0x000009be, 0x000009cb },
+ { 0x000009d7, 0x000009cc }, { 0x00000b3e, 0x00000b4b },
+ { 0x00000b56, 0x00000b48 }, { 0x00000b57, 0x00000b4c },
+ { 0x00000bd7, 0x00000b94 }, { 0x00000bbe, 0x00000bca },
+ { 0x00000bd7, 0x00000bcc }, { 0x00000bbe, 0x00000bcb },
+ { 0x00000c56, 0x00000c48 }, { 0x00000cd5, 0x00000cc0 },
+ { 0x00000cc2, 0x00000cca }, { 0x00000cd5, 0x00000cc7 },
+ { 0x00000cd6, 0x00000cc8 }, { 0x00000cd5, 0x00000ccb },
+ { 0x00000d3e, 0x00000d4a }, { 0x00000d57, 0x00000d4c },
+ { 0x00000d3e, 0x00000d4b }, { 0x00000dca, 0x00000dda },
+ { 0x00000dcf, 0x00000ddc }, { 0x00000ddf, 0x00000dde },
+ { 0x00000dca, 0x00000ddd }, { 0x0000102e, 0x00001026 },
+ { 0x00000304, 0x00001e38 }, { 0x00000304, 0x00001e39 },
+ { 0x00000304, 0x00001e5c }, { 0x00000304, 0x00001e5d },
+ { 0x00000307, 0x00001e68 }, { 0x00000307, 0x00001e69 },
+ { 0x00000302, 0x00001eac }, { 0x00000306, 0x00001eb6 },
+ { 0x00000302, 0x00001ead }, { 0x00000306, 0x00001eb7 },
+ { 0x00000302, 0x00001ec6 }, { 0x00000302, 0x00001ec7 },
+ { 0x00000302, 0x00001ed8 }, { 0x00000302, 0x00001ed9 },
+ { 0x00000300, 0x00001f02 }, { 0x00000301, 0x00001f04 },
+ { 0x00000342, 0x00001f06 }, { 0x00000345, 0x00001f80 },
+ { 0x00000300, 0x00001f03 }, { 0x00000301, 0x00001f05 },
+ { 0x00000342, 0x00001f07 }, { 0x00000345, 0x00001f81 },
+ { 0x00000345, 0x00001f82 }, { 0x00000345, 0x00001f83 },
+ { 0x00000345, 0x00001f84 }, { 0x00000345, 0x00001f85 },
+ { 0x00000345, 0x00001f86 }, { 0x00000345, 0x00001f87 },
+ { 0x00000300, 0x00001f0a }, { 0x00000301, 0x00001f0c },
+ { 0x00000342, 0x00001f0e }, { 0x00000345, 0x00001f88 },
+ { 0x00000300, 0x00001f0b }, { 0x00000301, 0x00001f0d },
+ { 0x00000342, 0x00001f0f }, { 0x00000345, 0x00001f89 },
+ { 0x00000345, 0x00001f8a }, { 0x00000345, 0x00001f8b },
+ { 0x00000345, 0x00001f8c }, { 0x00000345, 0x00001f8d },
+ { 0x00000345, 0x00001f8e }, { 0x00000345, 0x00001f8f },
+ { 0x00000300, 0x00001f12 }, { 0x00000301, 0x00001f14 },
+ { 0x00000300, 0x00001f13 }, { 0x00000301, 0x00001f15 },
+ { 0x00000300, 0x00001f1a }, { 0x00000301, 0x00001f1c },
+ { 0x00000300, 0x00001f1b }, { 0x00000301, 0x00001f1d },
+ { 0x00000300, 0x00001f22 }, { 0x00000301, 0x00001f24 },
+ { 0x00000342, 0x00001f26 }, { 0x00000345, 0x00001f90 },
+ { 0x00000300, 0x00001f23 }, { 0x00000301, 0x00001f25 },
+ { 0x00000342, 0x00001f27 }, { 0x00000345, 0x00001f91 },
+ { 0x00000345, 0x00001f92 }, { 0x00000345, 0x00001f93 },
+ { 0x00000345, 0x00001f94 }, { 0x00000345, 0x00001f95 },
+ { 0x00000345, 0x00001f96 }, { 0x00000345, 0x00001f97 },
+ { 0x00000300, 0x00001f2a }, { 0x00000301, 0x00001f2c },
+ { 0x00000342, 0x00001f2e }, { 0x00000345, 0x00001f98 },
+ { 0x00000300, 0x00001f2b }, { 0x00000301, 0x00001f2d },
+ { 0x00000342, 0x00001f2f }, { 0x00000345, 0x00001f99 },
+ { 0x00000345, 0x00001f9a }, { 0x00000345, 0x00001f9b },
+ { 0x00000345, 0x00001f9c }, { 0x00000345, 0x00001f9d },
+ { 0x00000345, 0x00001f9e }, { 0x00000345, 0x00001f9f },
+ { 0x00000300, 0x00001f32 }, { 0x00000301, 0x00001f34 },
+ { 0x00000342, 0x00001f36 }, { 0x00000300, 0x00001f33 },
+ { 0x00000301, 0x00001f35 }, { 0x00000342, 0x00001f37 },
+ { 0x00000300, 0x00001f3a }, { 0x00000301, 0x00001f3c },
+ { 0x00000342, 0x00001f3e }, { 0x00000300, 0x00001f3b },
+ { 0x00000301, 0x00001f3d }, { 0x00000342, 0x00001f3f },
+ { 0x00000300, 0x00001f42 }, { 0x00000301, 0x00001f44 },
+ { 0x00000300, 0x00001f43 }, { 0x00000301, 0x00001f45 },
+ { 0x00000300, 0x00001f4a }, { 0x00000301, 0x00001f4c },
+ { 0x00000300, 0x00001f4b }, { 0x00000301, 0x00001f4d },
+ { 0x00000300, 0x00001f52 }, { 0x00000301, 0x00001f54 },
+ { 0x00000342, 0x00001f56 }, { 0x00000300, 0x00001f53 },
+ { 0x00000301, 0x00001f55 }, { 0x00000342, 0x00001f57 },
+ { 0x00000300, 0x00001f5b }, { 0x00000301, 0x00001f5d },
+ { 0x00000342, 0x00001f5f }, { 0x00000300, 0x00001f62 },
+ { 0x00000301, 0x00001f64 }, { 0x00000342, 0x00001f66 },
+ { 0x00000345, 0x00001fa0 }, { 0x00000300, 0x00001f63 },
+ { 0x00000301, 0x00001f65 }, { 0x00000342, 0x00001f67 },
+ { 0x00000345, 0x00001fa1 }, { 0x00000345, 0x00001fa2 },
+ { 0x00000345, 0x00001fa3 }, { 0x00000345, 0x00001fa4 },
+ { 0x00000345, 0x00001fa5 }, { 0x00000345, 0x00001fa6 },
+ { 0x00000345, 0x00001fa7 }, { 0x00000300, 0x00001f6a },
+ { 0x00000301, 0x00001f6c }, { 0x00000342, 0x00001f6e },
+ { 0x00000345, 0x00001fa8 }, { 0x00000300, 0x00001f6b },
+ { 0x00000301, 0x00001f6d }, { 0x00000342, 0x00001f6f },
+ { 0x00000345, 0x00001fa9 }, { 0x00000345, 0x00001faa },
+ { 0x00000345, 0x00001fab }, { 0x00000345, 0x00001fac },
+ { 0x00000345, 0x00001fad }, { 0x00000345, 0x00001fae },
+ { 0x00000345, 0x00001faf }, { 0x00000345, 0x00001fb2 },
+ { 0x00000345, 0x00001fc2 }, { 0x00000345, 0x00001ff2 },
+ { 0x00000345, 0x00001fb7 }, { 0x00000300, 0x00001fcd },
+ { 0x00000301, 0x00001fce }, { 0x00000342, 0x00001fcf },
+ { 0x00000345, 0x00001fc7 }, { 0x00000345, 0x00001ff7 },
+ { 0x00000300, 0x00001fdd }, { 0x00000301, 0x00001fde },
+ { 0x00000342, 0x00001fdf }, { 0x00000338, 0x0000219a },
+ { 0x00000338, 0x0000219b }, { 0x00000338, 0x000021ae },
+ { 0x00000338, 0x000021cd }, { 0x00000338, 0x000021cf },
+ { 0x00000338, 0x000021ce }, { 0x00000338, 0x00002204 },
+ { 0x00000338, 0x00002209 }, { 0x00000338, 0x0000220c },
+ { 0x00000338, 0x00002224 }, { 0x00000338, 0x00002226 },
+ { 0x00000338, 0x00002241 }, { 0x00000338, 0x00002244 },
+ { 0x00000338, 0x00002247 }, { 0x00000338, 0x00002249 },
+ { 0x00000338, 0x0000226d }, { 0x00000338, 0x00002262 },
+ { 0x00000338, 0x00002270 }, { 0x00000338, 0x00002271 },
+ { 0x00000338, 0x00002274 }, { 0x00000338, 0x00002275 },
+ { 0x00000338, 0x00002278 }, { 0x00000338, 0x00002279 },
+ { 0x00000338, 0x00002280 }, { 0x00000338, 0x00002281 },
+ { 0x00000338, 0x000022e0 }, { 0x00000338, 0x000022e1 },
+ { 0x00000338, 0x00002284 }, { 0x00000338, 0x00002285 },
+ { 0x00000338, 0x00002288 }, { 0x00000338, 0x00002289 },
+ { 0x00000338, 0x000022e2 }, { 0x00000338, 0x000022e3 },
+ { 0x00000338, 0x000022ac }, { 0x00000338, 0x000022ad },
+ { 0x00000338, 0x000022ae }, { 0x00000338, 0x000022af },
+ { 0x00000338, 0x000022ea }, { 0x00000338, 0x000022eb },
+ { 0x00000338, 0x000022ec }, { 0x00000338, 0x000022ed },
+ { 0x00003099, 0x00003094 }, { 0x00003099, 0x0000304c },
+ { 0x00003099, 0x0000304e }, { 0x00003099, 0x00003050 },
+ { 0x00003099, 0x00003052 }, { 0x00003099, 0x00003054 },
+ { 0x00003099, 0x00003056 }, { 0x00003099, 0x00003058 },
+ { 0x00003099, 0x0000305a }, { 0x00003099, 0x0000305c },
+ { 0x00003099, 0x0000305e }, { 0x00003099, 0x00003060 },
+ { 0x00003099, 0x00003062 }, { 0x00003099, 0x00003065 },
+ { 0x00003099, 0x00003067 }, { 0x00003099, 0x00003069 },
+ { 0x00003099, 0x00003070 }, { 0x0000309a, 0x00003071 },
+ { 0x00003099, 0x00003073 }, { 0x0000309a, 0x00003074 },
+ { 0x00003099, 0x00003076 }, { 0x0000309a, 0x00003077 },
+ { 0x00003099, 0x00003079 }, { 0x0000309a, 0x0000307a },
+ { 0x00003099, 0x0000307c }, { 0x0000309a, 0x0000307d },
+ { 0x00003099, 0x0000309e }, { 0x00003099, 0x000030f4 },
+ { 0x00003099, 0x000030ac }, { 0x00003099, 0x000030ae },
+ { 0x00003099, 0x000030b0 }, { 0x00003099, 0x000030b2 },
+ { 0x00003099, 0x000030b4 }, { 0x00003099, 0x000030b6 },
+ { 0x00003099, 0x000030b8 }, { 0x00003099, 0x000030ba },
+ { 0x00003099, 0x000030bc }, { 0x00003099, 0x000030be },
+ { 0x00003099, 0x000030c0 }, { 0x00003099, 0x000030c2 },
+ { 0x00003099, 0x000030c5 }, { 0x00003099, 0x000030c7 },
+ { 0x00003099, 0x000030c9 }, { 0x00003099, 0x000030d0 },
+ { 0x0000309a, 0x000030d1 }, { 0x00003099, 0x000030d3 },
+ { 0x0000309a, 0x000030d4 }, { 0x00003099, 0x000030d6 },
+ { 0x0000309a, 0x000030d7 }, { 0x00003099, 0x000030d9 },
+ { 0x0000309a, 0x000030da }, { 0x00003099, 0x000030dc },
+ { 0x0000309a, 0x000030dd }, { 0x00003099, 0x000030f7 },
+ { 0x00003099, 0x000030f8 }, { 0x00003099, 0x000030f9 },
+ { 0x00003099, 0x000030fa }, { 0x00003099, 0x000030fe },
+};
+
+
+/*
+ * Canonical/Compatibility Decomposition
+ */
+
+#define DECOMP_BITS_0 9
+#define DECOMP_BITS_1 7
+#define DECOMP_BITS_2 5
+#define DECOMP_COMPAT 32768
+
+static const char16_t decompose_imap[] = {
+ 272, 400, 528, 656, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 912,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 1040, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 1168,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 784, 784, 784, 784, 784,
+ 0, 0, 0, 0, 0, 1, 2, 3,
+ 4, 5, 6, 7, 0, 8, 9, 10,
+ 11, 12, 0, 0, 0, 13, 14, 15,
+ 0, 0, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 0, 0, 26, 27,
+ 0, 0, 0, 0, 28, 0, 0, 0,
+ 0, 29, 0, 30, 0, 0, 31, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 32, 33, 0, 0, 0, 34, 0,
+ 0, 35, 36, 0, 0, 0, 0, 0,
+ 0, 0, 37, 0, 38, 0, 39, 0,
+ 0, 0, 40, 0, 0, 0, 41, 0,
+ 0, 0, 42, 0, 0, 0, 43, 0,
+ 0, 44, 0, 0, 0, 45, 46, 0,
+ 47, 0, 48, 49, 50, 51, 0, 0,
+ 0, 52, 0, 0, 0, 0, 0, 53,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 54, 55, 56, 57, 58, 0, 0,
+ 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 0, 0,
+ 81, 82, 83, 84, 85, 86, 87, 0,
+ 88, 89, 90, 91, 92, 93, 0, 94,
+ 0, 95, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 96, 97, 98, 99, 100,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 101, 0, 0, 102, 0, 0, 103, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 104, 0, 0, 0, 0,
+ 0, 0, 0, 0, 105, 0, 0, 106,
+ 107, 108, 109, 110, 111, 112, 113, 0,
+ 114, 115, 116, 117, 118, 119, 120, 121,
+ 0, 122, 123, 124, 125, 0, 0, 0,
+ 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 142, 143, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 0,
+ 157, 158, 159, 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,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 197, 198, 0, 199, 200, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 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,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const struct {
+ char16_t tbl[32];
+} decompose_table[] = {
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 32769, 0, 0, 0, 0, 0, 0, 0,
+ 32770, 0, 32772, 0, 0, 0, 0, 32773,
+ 0, 0, 32775, 32776, 32777, 32779, 0, 0,
+ 32780, 32782, 32783, 0, 32784, 32787, 32790, 0,
+ }},
+ {{
+ 25, 27, 29, 31, 33, 35, 0, 37,
+ 39, 41, 43, 45, 47, 49, 51, 53,
+ 0, 55, 57, 59, 61, 63, 65, 0,
+ 0, 67, 69, 71, 73, 75, 0, 0,
+ }},
+ {{
+ 77, 79, 81, 83, 85, 87, 0, 89,
+ 91, 93, 95, 97, 99, 101, 103, 105,
+ 0, 107, 109, 111, 113, 115, 117, 0,
+ 0, 119, 121, 123, 125, 127, 0, 129,
+ }},
+ {{
+ 131, 133, 135, 137, 139, 141, 143, 145,
+ 147, 149, 151, 153, 155, 157, 159, 161,
+ 0, 0, 163, 165, 167, 169, 171, 173,
+ 175, 177, 179, 181, 183, 185, 187, 189,
+ }},
+ {{
+ 191, 193, 195, 197, 199, 201, 0, 0,
+ 203, 205, 207, 209, 211, 213, 215, 217,
+ 219, 0, 32989, 32991, 225, 227, 229, 231,
+ 0, 233, 235, 237, 239, 241, 243, 33013,
+ }},
+ {{
+ 33015, 0, 0, 249, 251, 253, 255, 257,
+ 259, 33029, 0, 0, 263, 265, 267, 269,
+ 271, 273, 0, 0, 275, 277, 279, 281,
+ 283, 285, 287, 289, 291, 293, 295, 297,
+ }},
+ {{
+ 299, 301, 303, 305, 307, 309, 0, 0,
+ 311, 313, 315, 317, 319, 321, 323, 325,
+ 327, 329, 331, 333, 335, 337, 339, 341,
+ 343, 345, 347, 349, 351, 353, 355, 33125,
+ }},
+ {{
+ 358, 360, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 362,
+ 364, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 33134, 33136, 33138, 33140,
+ 33142, 33144, 33146, 33148, 33150, 384, 386, 388,
+ 390, 392, 394, 396, 398, 400, 402, 404,
+ 406, 408, 410, 412, 414, 0, 416, 418,
+ }},
+ {{
+ 420, 422, 424, 426, 0, 0, 428, 430,
+ 432, 434, 436, 438, 440, 442, 444, 446,
+ 448, 33218, 33220, 33222, 456, 458, 0, 0,
+ 460, 462, 464, 466, 468, 470, 472, 474,
+ }},
+ {{
+ 476, 478, 480, 482, 484, 486, 488, 490,
+ 492, 494, 496, 498, 500, 502, 504, 506,
+ 508, 510, 512, 514, 516, 518, 520, 522,
+ 524, 526, 528, 530, 0, 0, 532, 534,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 536, 538,
+ 540, 542, 544, 546, 548, 550, 552, 554,
+ 556, 558, 560, 562, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 33332, 33333, 33334, 33335, 33336, 33337, 33338, 33339,
+ 33340, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 33341, 33343, 33345, 33347, 33349, 33351, 0, 0,
+ }},
+ {{
+ 33353, 33354, 33355, 33356, 33357, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 590, 591, 0, 592, 593, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 595, 0, 0, 0,
+ 0, 0, 33364, 0, 0, 0, 598, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 33367, 601, 603, 605,
+ 606, 608, 610, 0, 612, 0, 614, 616,
+ 618, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 620, 622, 624, 626, 628, 630,
+ 632, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 634, 636, 638, 640, 642, 0,
+ 33412, 33413, 33414, 647, 649, 33419, 33420, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 33421, 33422, 33423, 0, 33424, 33425, 0, 0,
+ 0, 33426, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 659, 661, 0, 663, 0, 0, 0, 665,
+ 0, 0, 0, 0, 667, 669, 671, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 673, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 675, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 677, 679, 0, 681, 0, 0, 0, 683,
+ 0, 0, 0, 0, 685, 687, 689, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 691, 693,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 695, 697, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 699, 701, 703, 705, 0, 0, 707, 709,
+ 0, 0, 711, 713, 715, 717, 719, 721,
+ }},
+ {{
+ 0, 0, 723, 725, 727, 729, 731, 733,
+ 0, 0, 735, 737, 739, 741, 743, 745,
+ 747, 749, 751, 753, 755, 757, 0, 0,
+ 759, 761, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 33531,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 765, 767, 769, 771, 773, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 33543, 33545, 33547,
+ 33549, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 783, 0, 785, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 787, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 789, 0, 0, 0, 0, 0, 0,
+ 0, 791, 0, 0, 793, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 795, 797, 799, 801, 803, 805, 807, 809,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 811, 813, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 815, 817, 0, 819,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 821, 0, 0, 823, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 825, 827, 829, 0, 0, 831, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 833, 0, 0, 835, 837, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 839, 841, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 843, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 845, 847, 849, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 851, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 853, 0, 0, 0, 0, 0, 0, 855,
+ 857, 0, 859, 861, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 863, 865, 867, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 869, 0, 871, 873, 875, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 33645, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 33647, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 33649, 33651, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 33653, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 886, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 888, 0, 0,
+ 0, 0, 890, 0, 0, 0, 0, 892,
+ 0, 0, 0, 0, 894, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 896, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 898, 0, 900, 902, 33672,
+ 906, 33676, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 910, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 912, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 914, 0, 0,
+ }},
+ {{
+ 0, 0, 916, 0, 0, 0, 0, 918,
+ 0, 0, 0, 0, 920, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 922, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 924, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 33694, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 33695, 33696, 33697, 0,
+ 33698, 33699, 33700, 33701, 33702, 33703, 33704, 33705,
+ 33706, 33707, 33708, 0, 33709, 33710, 33711, 33712,
+ }},
+ {{
+ 33713, 33714, 33715, 33716, 33717, 33718, 33719, 33720,
+ 33721, 33722, 33723, 33724, 33725, 33726, 0, 33727,
+ 33728, 33729, 33730, 33731, 33732, 33733, 33734, 33735,
+ 33736, 33737, 33738, 33739, 33740, 33741, 33742, 33743,
+ }},
+ {{
+ 33744, 33745, 33746, 33747, 33748, 33749, 33750, 33751,
+ 33752, 33753, 33754, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 33755, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 33756, 33757, 33758, 33759, 33760,
+ }},
+ {{
+ 33761, 33762, 33763, 33764, 33765, 33766, 33767, 33768,
+ 33769, 33770, 33771, 33772, 33773, 33774, 33775, 33776,
+ 33777, 33778, 33779, 33780, 33781, 33782, 33783, 33784,
+ 33785, 33786, 33787, 33788, 33789, 33790, 33791, 33792,
+ }},
+ {{
+ 1025, 1027, 1029, 1031, 1033, 1035, 1037, 1039,
+ 1041, 1043, 1045, 1047, 1049, 1051, 1053, 1055,
+ 1057, 1059, 1061, 1063, 1065, 1067, 1069, 1071,
+ 1073, 1075, 1077, 1079, 1081, 1083, 1085, 1087,
+ }},
+ {{
+ 1089, 1091, 1093, 1095, 1097, 1099, 1101, 1103,
+ 1105, 1107, 1109, 1111, 1113, 1115, 1117, 1119,
+ 1121, 1123, 1125, 1127, 1129, 1131, 1133, 1135,
+ 1137, 1139, 1141, 1143, 1145, 1147, 1149, 1151,
+ }},
+ {{
+ 1153, 1155, 1157, 1159, 1161, 1163, 1165, 1167,
+ 1169, 1171, 1173, 1175, 1177, 1179, 1181, 1183,
+ 1185, 1187, 1189, 1191, 1193, 1195, 1197, 1199,
+ 1201, 1203, 1205, 1207, 1209, 1211, 1213, 1215,
+ }},
+ {{
+ 1217, 1219, 1221, 1223, 1225, 1227, 1229, 1231,
+ 1233, 1235, 1237, 1239, 1241, 1243, 1245, 1247,
+ 1249, 1251, 1253, 1255, 1257, 1259, 1261, 1263,
+ 1265, 1267, 1269, 1271, 1273, 1275, 1277, 1279,
+ }},
+ {{
+ 1281, 1283, 1285, 1287, 1289, 1291, 1293, 1295,
+ 1297, 1299, 1301, 1303, 1305, 1307, 1309, 1311,
+ 1313, 1315, 1317, 1319, 1321, 1323, 1325, 1327,
+ 1329, 1331, 34101, 1335, 0, 0, 0, 0,
+ }},
+ {{
+ 1337, 1339, 1341, 1343, 1345, 1347, 1349, 1351,
+ 1353, 1355, 1357, 1359, 1361, 1363, 1365, 1367,
+ 1369, 1371, 1373, 1375, 1377, 1379, 1381, 1383,
+ 1385, 1387, 1389, 1391, 1393, 1395, 1397, 1399,
+ }},
+ {{
+ 1401, 1403, 1405, 1407, 1409, 1411, 1413, 1415,
+ 1417, 1419, 1421, 1423, 1425, 1427, 1429, 1431,
+ 1433, 1435, 1437, 1439, 1441, 1443, 1445, 1447,
+ 1449, 1451, 1453, 1455, 1457, 1459, 1461, 1463,
+ }},
+ {{
+ 1465, 1467, 1469, 1471, 1473, 1475, 1477, 1479,
+ 1481, 1483, 1485, 1487, 1489, 1491, 1493, 1495,
+ 1497, 1499, 1501, 1503, 1505, 1507, 1509, 1511,
+ 1513, 1515, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 1517, 1519, 1521, 1523, 1525, 1527, 1529, 1531,
+ 1533, 1535, 1537, 1539, 1541, 1543, 1545, 1547,
+ 1549, 1551, 1553, 1555, 1557, 1559, 0, 0,
+ 1561, 1563, 1565, 1567, 1569, 1571, 0, 0,
+ }},
+ {{
+ 1573, 1575, 1577, 1579, 1581, 1583, 1585, 1587,
+ 1589, 1591, 1593, 1595, 1597, 1599, 1601, 1603,
+ 1605, 1607, 1609, 1611, 1613, 1615, 1617, 1619,
+ 1621, 1623, 1625, 1627, 1629, 1631, 1633, 1635,
+ }},
+ {{
+ 1637, 1639, 1641, 1643, 1645, 1647, 0, 0,
+ 1649, 1651, 1653, 1655, 1657, 1659, 0, 0,
+ 1661, 1663, 1665, 1667, 1669, 1671, 1673, 1675,
+ 0, 1677, 0, 1679, 0, 1681, 0, 1683,
+ }},
+ {{
+ 1685, 1687, 1689, 1691, 1693, 1695, 1697, 1699,
+ 1701, 1703, 1705, 1707, 1709, 1711, 1713, 1715,
+ 1717, 1719, 1720, 1722, 1723, 1725, 1726, 1728,
+ 1729, 1731, 1732, 1734, 1735, 1737, 0, 0,
+ }},
+ {{
+ 1738, 1740, 1742, 1744, 1746, 1748, 1750, 1752,
+ 1754, 1756, 1758, 1760, 1762, 1764, 1766, 1768,
+ 1770, 1772, 1774, 1776, 1778, 1780, 1782, 1784,
+ 1786, 1788, 1790, 1792, 1794, 1796, 1798, 1800,
+ }},
+ {{
+ 1802, 1804, 1806, 1808, 1810, 1812, 1814, 1816,
+ 1818, 1820, 1822, 1824, 1826, 1828, 1830, 1832,
+ 1834, 1836, 1838, 1840, 1842, 0, 1844, 1846,
+ 1848, 1850, 1852, 1854, 1855, 34625, 1859, 34628,
+ }},
+ {{
+ 34630, 1864, 1866, 1868, 1870, 0, 1872, 1874,
+ 1876, 1878, 1879, 1881, 1882, 1884, 1886, 1888,
+ 1890, 1892, 1894, 1896, 0, 0, 1897, 1899,
+ 1901, 1903, 1905, 1907, 0, 1908, 1910, 1912,
+ }},
+ {{
+ 1914, 1916, 1918, 1920, 1921, 1923, 1925, 1927,
+ 1929, 1931, 1933, 1935, 1936, 1938, 1940, 1941,
+ 0, 0, 1942, 1944, 1946, 0, 1948, 1950,
+ 1952, 1954, 1955, 1957, 1958, 1960, 34729, 0,
+ }},
+ {{
+ 1963, 1964, 34733, 34734, 34735, 34736, 34737, 34738,
+ 34739, 34740, 34741, 0, 0, 0, 0, 0,
+ 0, 34742, 0, 0, 0, 0, 0, 34743,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 34745, 34746, 34748, 0,
+ 0, 0, 0, 0, 0, 0, 0, 34751,
+ 0, 0, 0, 34752, 34754, 0, 34757, 34759,
+ 0, 0, 0, 0, 34762, 0, 34764, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 34766,
+ 34768, 34770, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 34772,
+ 0, 0, 0, 0, 0, 0, 0, 34776,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 34777, 34778, 0, 0, 34779, 34780, 34781, 34782,
+ 34783, 34784, 34785, 34786, 34787, 34788, 34789, 34790,
+ }},
+ {{
+ 34791, 34792, 34793, 34794, 34795, 34796, 34797, 34798,
+ 34799, 34800, 34801, 34802, 34803, 34804, 34805, 0,
+ 34806, 34807, 34808, 34809, 34810, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 34811, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 34813, 34816, 34819, 34820, 0, 34822, 34825, 34828,
+ 0, 34829, 34831, 34832, 34833, 34834, 34835, 34836,
+ 34837, 34838, 34839, 34840, 0, 34841, 34842, 0,
+ 0, 34844, 34845, 34846, 34847, 34848, 0, 0,
+ }},
+ {{
+ 34849, 34851, 34854, 0, 34856, 0, 2089, 0,
+ 34858, 0, 2091, 2092, 34861, 34862, 0, 34863,
+ 34864, 34865, 0, 34866, 34867, 34868, 34869, 34870,
+ 34871, 34872, 0, 34873, 34876, 34877, 34878, 34879,
+ }},
+ {{
+ 34880, 0, 0, 0, 0, 34881, 34882, 34883,
+ 34884, 34885, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 34886, 34889, 34892, 34895, 34898,
+ 34901, 34904, 34907, 34910, 34913, 34916, 34919, 34922,
+ }},
+ {{
+ 34924, 34925, 34927, 34930, 34932, 34933, 34935, 34938,
+ 34942, 34944, 34945, 34947, 34950, 34951, 34952, 34953,
+ 34954, 34955, 34957, 34960, 34962, 34963, 34965, 34968,
+ 34972, 34974, 34975, 34977, 34980, 34981, 34982, 34983,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2216, 2218, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2220, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2222, 2224, 2226,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 2228, 0, 0, 0,
+ 0, 2230, 0, 0, 2232, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 2234, 0, 2236, 0,
+ 0, 0, 0, 0, 35006, 35008, 0, 35011,
+ 35013, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 2248, 0, 0, 2250, 0, 0, 2252,
+ 0, 2254, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 2256, 0, 2258, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2260, 2262, 2264,
+ 2266, 2268, 0, 0, 2270, 2272, 0, 0,
+ 2274, 2276, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 2278, 2280, 0, 0, 2282, 2284, 0, 0,
+ 2286, 2288, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2290, 2292, 2294, 2296,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 2298, 2300, 2302, 2304, 0, 0, 0, 0,
+ 0, 0, 2306, 2308, 2310, 2312, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2314, 2315, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 35084, 35085, 35086, 35087, 35088, 35089, 35090, 35091,
+ 35092, 35093, 35095, 35097, 35099, 35101, 35103, 35105,
+ 35107, 35109, 35111, 35113, 35115, 35118, 35121, 35124,
+ 35127, 35130, 35133, 35136, 35139, 35142, 35146, 35150,
+ }},
+ {{
+ 35154, 35158, 35162, 35166, 35170, 35174, 35178, 35182,
+ 35186, 35188, 35190, 35192, 35194, 35196, 35198, 35200,
+ 35202, 35204, 35207, 35210, 35213, 35216, 35219, 35222,
+ 35225, 35228, 35231, 35234, 35237, 35240, 35243, 35246,
+ }},
+ {{
+ 35249, 35252, 35255, 35258, 35261, 35264, 35267, 35270,
+ 35273, 35276, 35279, 35282, 35285, 35288, 35291, 35294,
+ 35297, 35300, 35303, 35306, 35309, 35312, 35315, 35316,
+ 35317, 35318, 35319, 35320, 35321, 35322, 35323, 35324,
+ }},
+ {{
+ 35325, 35326, 35327, 35328, 35329, 35330, 35331, 35332,
+ 35333, 35334, 35335, 35336, 35337, 35338, 35339, 35340,
+ 35341, 35342, 35343, 35344, 35345, 35346, 35347, 35348,
+ 35349, 35350, 35351, 35352, 35353, 35354, 35355, 35356,
+ }},
+ {{
+ 35357, 35358, 35359, 35360, 35361, 35362, 35363, 35364,
+ 35365, 35366, 35367, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 35368, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 35372, 35375, 35377, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2612, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 35382,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 35383,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 35384, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 35385, 35386, 35387, 35388, 35389, 35390, 35391, 35392,
+ 35393, 35394, 35395, 35396, 35397, 35398, 35399, 35400,
+ 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,
+ }},
+ {{
+ 35449, 35450, 35451, 35452, 35453, 35454, 35455, 35456,
+ 35457, 35458, 35459, 35460, 35461, 35462, 35463, 35464,
+ 35465, 35466, 35467, 35468, 35469, 35470, 35471, 35472,
+ 35473, 35474, 35475, 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, 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, 35591, 35592,
+ 35593, 35594, 35595, 35596, 35597, 35598, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 35599, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 35600, 0,
+ 35601, 35602, 35603, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2836, 0, 2838, 0,
+ 2840, 0, 2842, 0, 2844, 0, 2846, 0,
+ 2848, 0, 2850, 0, 2852, 0, 2854, 0,
+ }},
+ {{
+ 2856, 0, 2858, 0, 0, 2860, 0, 2862,
+ 0, 2864, 0, 0, 0, 0, 0, 0,
+ 2866, 2868, 0, 2870, 2872, 0, 2874, 2876,
+ 0, 2878, 2880, 0, 2882, 2884, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2886, 0, 0, 0,
+ 0, 0, 0, 35656, 35658, 0, 2892, 35662,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2896, 0, 2898, 0,
+ 2900, 0, 2902, 0, 2904, 0, 2906, 0,
+ 2908, 0, 2910, 0, 2912, 0, 2914, 0,
+ }},
+ {{
+ 2916, 0, 2918, 0, 0, 2920, 0, 2922,
+ 0, 2924, 0, 0, 0, 0, 0, 0,
+ 2926, 2928, 0, 2930, 2932, 0, 2934, 2936,
+ 0, 2938, 2940, 0, 2942, 2944, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2946, 0, 0, 2948,
+ 2950, 2952, 2954, 0, 0, 0, 2956, 35726,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 35728, 35729, 35730, 35731, 35732, 35733, 35734,
+ 35735, 35736, 35737, 35738, 35739, 35740, 35741, 35742,
+ }},
+ {{
+ 35743, 35744, 35745, 35746, 35747, 35748, 35749, 35750,
+ 35751, 35752, 35753, 35754, 35755, 35756, 35757, 35758,
+ 35759, 35760, 35761, 35762, 35763, 35764, 35765, 35766,
+ 35767, 35768, 35769, 35770, 35771, 35772, 35773, 35774,
+ }},
+ {{
+ 35775, 35776, 35777, 35778, 35779, 35780, 35781, 35782,
+ 35783, 35784, 35785, 35786, 35787, 35788, 35789, 35790,
+ 35791, 35792, 35793, 35794, 35795, 35796, 35797, 35798,
+ 35799, 35800, 35801, 35802, 35803, 35804, 35805, 35806,
+ }},
+ {{
+ 35807, 35808, 35809, 35810, 35811, 35812, 35813, 35814,
+ 35815, 35816, 35817, 35818, 35819, 35820, 35821, 0,
+ 0, 0, 35822, 35823, 35824, 35825, 35826, 35827,
+ 35828, 35829, 35830, 35831, 35832, 35833, 35834, 35835,
+ }},
+ {{
+ 35836, 35839, 35842, 35845, 35848, 35851, 35854, 35857,
+ 35860, 35863, 35866, 35869, 35872, 35875, 35878, 35882,
+ 35886, 35890, 35894, 35898, 35902, 35906, 35910, 35914,
+ 35918, 35922, 35926, 35930, 35934, 35938, 35945, 0,
+ }},
+ {{
+ 35951, 35954, 35957, 35960, 35963, 35966, 35969, 35972,
+ 35975, 35978, 35981, 35984, 35987, 35990, 35993, 35996,
+ 35999, 36002, 36005, 36008, 36011, 36014, 36017, 36020,
+ 36023, 36026, 36029, 36032, 36035, 36038, 36041, 36044,
+ }},
+ {{
+ 36047, 36050, 36053, 36056, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 36059, 36062, 36064, 36066, 36068, 36070, 36072, 36074,
+ 36076, 36078, 36080, 36082, 36084, 36086, 36088, 36090,
+ }},
+ {{
+ 36092, 36093, 36094, 36095, 36096, 36097, 36098, 36099,
+ 36100, 36101, 36102, 36103, 36104, 36105, 36106, 36108,
+ 36110, 36112, 36114, 36116, 36118, 36120, 36122, 36124,
+ 36126, 36128, 36130, 36132, 36134, 36139, 36143, 0,
+ }},
+ {{
+ 36145, 36146, 36147, 36148, 36149, 36150, 36151, 36152,
+ 36153, 36154, 36155, 36156, 36157, 36158, 36159, 36160,
+ 36161, 36162, 36163, 36164, 36165, 36166, 36167, 36168,
+ 36169, 36170, 36171, 36172, 36173, 36174, 36175, 36176,
+ }},
+ {{
+ 36177, 36178, 36179, 36180, 36181, 36182, 36183, 36184,
+ 36185, 36186, 36187, 36188, 36189, 36190, 36191, 36192,
+ 36193, 36194, 36196, 36198, 36200, 36202, 36204, 36206,
+ 36208, 36210, 36212, 36214, 36216, 36218, 36220, 36222,
+ }},
+ {{
+ 36224, 36226, 36228, 36230, 36232, 36234, 36236, 36238,
+ 36240, 36242, 36245, 36248, 36251, 36253, 36256, 36258,
+ 36261, 36262, 36263, 36264, 36265, 36266, 36267, 36268,
+ 36269, 36270, 36271, 36272, 36273, 36274, 36275, 36276,
+ }},
+ {{
+ 36277, 36278, 36279, 36280, 36281, 36282, 36283, 36284,
+ 36285, 36286, 36287, 36288, 36289, 36290, 36291, 36292,
+ 36293, 36294, 36295, 36296, 36297, 36298, 36299, 36300,
+ 36301, 36302, 36303, 36304, 36305, 36306, 36307, 0,
+ }},
+ {{
+ 36308, 36312, 36316, 36320, 36323, 36327, 36330, 36333,
+ 36338, 36342, 36345, 36348, 36351, 36355, 36359, 36362,
+ 36365, 36367, 36370, 36374, 36378, 36380, 36385, 36391,
+ 36396, 36399, 36404, 36409, 36413, 36416, 36419, 36422,
+ }},
+ {{
+ 36426, 36431, 36435, 36438, 36441, 36444, 36446, 36448,
+ 36450, 36452, 36455, 36458, 36463, 36466, 36470, 36475,
+ 36478, 36480, 36482, 36487, 36491, 36496, 36499, 36504,
+ 36506, 36509, 36512, 36515, 36518, 36521, 36525, 36528,
+ }},
+ {{
+ 36530, 36533, 36536, 36539, 36543, 36546, 36549, 36552,
+ 36557, 36561, 36563, 36568, 36570, 36574, 36578, 36581,
+ 36584, 36587, 36591, 36593, 36596, 36600, 36602, 36607,
+ 36610, 36612, 36614, 36616, 36618, 36620, 36622, 36624,
+ }},
+ {{
+ 36626, 36628, 36630, 36633, 36636, 36639, 36642, 36645,
+ 36648, 36651, 36654, 36657, 36660, 36663, 36666, 36669,
+ 36672, 36675, 36678, 36680, 36682, 36685, 36687, 36689,
+ 36691, 36694, 36697, 36699, 36701, 36703, 36705, 36707,
+ }},
+ {{
+ 36711, 36713, 36715, 36717, 36719, 36721, 36723, 36725,
+ 36727, 36730, 36734, 36736, 36738, 36740, 36742, 36744,
+ 36746, 36748, 36751, 36754, 36757, 36760, 36762, 36764,
+ 36766, 36768, 36770, 36772, 36774, 36776, 36778, 36780,
+ }},
+ {{
+ 36783, 36786, 36788, 36791, 36794, 36797, 36799, 36802,
+ 36805, 36809, 36811, 36814, 36817, 36820, 36823, 36828,
+ 36834, 36836, 36838, 36840, 36842, 36844, 36846, 36848,
+ 36850, 36852, 36854, 36856, 36858, 36860, 36862, 36864,
+ }},
+ {{
+ 36866, 36868, 36870, 36874, 36876, 36878, 36880, 36884,
+ 36887, 36889, 36891, 36893, 36895, 36897, 36899, 36901,
+ 36903, 36905, 36907, 36910, 36912, 36914, 36917, 36920,
+ 36922, 36926, 36929, 36931, 36933, 36935, 36937, 36940,
+ }},
+ {{
+ 36943, 36945, 36947, 36949, 36951, 36953, 36955, 36957,
+ 36959, 36961, 36964, 36967, 36970, 36973, 36976, 36979,
+ 36982, 36985, 36988, 36991, 36994, 36997, 37000, 37003,
+ 37006, 37009, 37012, 37015, 37018, 37021, 37024, 37027,
+ }},
+ {{
+ 4262, 4263, 4264, 4265, 4266, 4267, 4268, 4269,
+ 4270, 4271, 4272, 4273, 4274, 4275, 4276, 4277,
+ 4278, 4279, 4280, 4281, 4282, 4283, 4284, 4285,
+ 4286, 4287, 4288, 4289, 4290, 4291, 4292, 4293,
+ }},
+ {{
+ 4294, 4295, 4296, 4297, 4298, 4299, 4300, 4301,
+ 4302, 4303, 4304, 4305, 4306, 4307, 4308, 4309,
+ 4310, 4311, 4312, 4313, 4314, 4315, 4316, 4317,
+ 4318, 4319, 4320, 4321, 4322, 4323, 4324, 4325,
+ }},
+ {{
+ 4326, 4327, 4328, 4329, 4330, 4331, 4332, 4333,
+ 4334, 4335, 4336, 4337, 4338, 4339, 4340, 4341,
+ 4342, 4343, 4344, 4345, 4346, 4347, 4348, 4349,
+ 4350, 4351, 4352, 4353, 4354, 4355, 4356, 4357,
+ }},
+ {{
+ 4358, 4359, 4360, 4361, 4362, 4363, 4364, 4365,
+ 4366, 4367, 4368, 4369, 4370, 4371, 4372, 4373,
+ 4374, 4375, 4376, 4377, 4378, 4379, 4380, 4381,
+ 4382, 4383, 4384, 4385, 4386, 4387, 4388, 4389,
+ }},
+ {{
+ 4390, 4391, 4392, 4393, 4394, 4395, 4396, 4397,
+ 4398, 4399, 4400, 4401, 4402, 4403, 4404, 4405,
+ 4406, 4407, 4408, 4409, 4410, 4411, 4412, 4413,
+ 4414, 4415, 4416, 4417, 4418, 4419, 4420, 4421,
+ }},
+ {{
+ 4422, 4423, 4424, 4425, 4426, 4427, 4428, 4429,
+ 4430, 4431, 4432, 4433, 4434, 4435, 4436, 4437,
+ 4438, 4439, 4440, 4441, 4442, 4443, 4444, 4445,
+ 4446, 4447, 4448, 4449, 4450, 4451, 4452, 4453,
+ }},
+ {{
+ 4454, 4455, 4456, 4457, 4458, 4459, 4460, 4461,
+ 4462, 4463, 4464, 4465, 4466, 4467, 4468, 4469,
+ 4470, 4471, 4472, 4473, 4474, 4475, 4476, 4477,
+ 4478, 4479, 4480, 4481, 4482, 4483, 4484, 4485,
+ }},
+ {{
+ 4486, 4487, 4488, 4489, 4490, 4491, 4492, 4493,
+ 4494, 4495, 4496, 4497, 4498, 4499, 4500, 4501,
+ 4502, 4503, 4504, 4505, 4506, 4507, 4508, 4509,
+ 4510, 4511, 4512, 4513, 4514, 4515, 4516, 4517,
+ }},
+ {{
+ 4518, 4519, 4520, 4521, 4522, 4523, 4524, 4525,
+ 4526, 4527, 4528, 4529, 4530, 4531, 0, 0,
+ 4532, 0, 4533, 0, 0, 4534, 4535, 4536,
+ 4537, 4538, 4539, 4540, 4541, 4542, 4543, 0,
+ }},
+ {{
+ 4544, 0, 4545, 0, 0, 4546, 4547, 0,
+ 0, 0, 4548, 4549, 4550, 4551, 0, 0,
+ 4552, 4553, 4554, 4555, 4556, 4557, 4558, 4559,
+ 4560, 4561, 4562, 4563, 4564, 4565, 4566, 4567,
+ }},
+ {{
+ 4568, 4569, 4570, 4571, 4572, 4573, 4574, 4575,
+ 4576, 4577, 4578, 4579, 4580, 4581, 4582, 4583,
+ 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4591,
+ 4592, 4593, 4594, 4595, 4596, 4597, 4598, 4599,
+ }},
+ {{
+ 4600, 4601, 4602, 4603, 4604, 4605, 4606, 4607,
+ 4608, 4609, 4610, 0, 0, 0, 0, 0,
+ 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618,
+ 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4626,
+ }},
+ {{
+ 4627, 4628, 4629, 4630, 4631, 4632, 4633, 4634,
+ 4635, 4636, 4637, 4638, 4639, 4640, 4641, 4642,
+ 4643, 4644, 4645, 4646, 4647, 4648, 4649, 4650,
+ 4651, 4652, 4653, 4654, 4655, 4656, 4657, 4658,
+ }},
+ {{
+ 4659, 4660, 4661, 4662, 4663, 4664, 4665, 4666,
+ 4667, 4668, 4669, 4670, 4671, 4672, 4673, 4674,
+ 4675, 4676, 4677, 4678, 4679, 4680, 4681, 4682,
+ 4683, 4684, 4685, 4686, 4687, 4688, 4689, 4690,
+ }},
+ {{
+ 4691, 4692, 4693, 4694, 4695, 4696, 4697, 4698,
+ 4699, 4700, 4701, 4702, 4703, 4704, 4705, 4706,
+ 4707, 4708, 4709, 4710, 4711, 4712, 4713, 4714,
+ 4715, 4716, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 37485, 37487, 37489, 37491, 37494, 37497, 37499, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 37501, 37503, 37505, 37507, 37509,
+ 0, 0, 0, 0, 0, 4743, 0, 4745,
+ }},
+ {{
+ 37515, 37516, 37517, 37518, 37519, 37520, 37521, 37522,
+ 37523, 37524, 4757, 4759, 4761, 4763, 4765, 4767,
+ 4769, 4771, 4773, 4775, 4777, 4779, 4781, 0,
+ 4783, 4785, 4787, 4789, 4791, 0, 4793, 0,
+ }},
+ {{
+ 4795, 4797, 0, 4799, 4801, 0, 4803, 4805,
+ 4807, 4809, 4811, 4813, 4815, 4817, 4819, 37589,
+ 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, 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, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 37689, 37690, 37691, 37692, 37693,
+ 37694, 37695, 37696, 37697, 37698, 37699, 37700, 37701,
+ }},
+ {{
+ 37702, 37703, 37704, 37705, 37706, 37707, 37708, 37709,
+ 37710, 37711, 37712, 37714, 37716, 37718, 37720, 37722,
+ 37724, 37726, 37728, 37730, 37732, 37734, 37736, 37738,
+ 37740, 37742, 37744, 37746, 37748, 37749, 37750, 37751,
+ }},
+ {{
+ 37752, 37754, 37756, 37758, 37760, 37762, 37764, 37766,
+ 37768, 37770, 37772, 37774, 37776, 37778, 37780, 37782,
+ 37784, 37786, 37788, 37790, 37792, 37794, 37796, 37798,
+ 37800, 37802, 37804, 37806, 37808, 37810, 37812, 37814,
+ }},
+ {{
+ 37816, 37818, 37820, 37822, 37824, 37826, 37828, 37830,
+ 37832, 37834, 37836, 37838, 37840, 37842, 37844, 37846,
+ 37848, 37850, 37852, 37854, 37856, 37858, 37860, 37862,
+ 37864, 37866, 37868, 37870, 37872, 37874, 37876, 37878,
+ }},
+ {{
+ 37880, 37882, 37884, 37886, 37888, 37890, 37892, 37894,
+ 37896, 37898, 37900, 37902, 37904, 37906, 37908, 37910,
+ 37912, 37914, 37916, 37918, 37920, 37922, 37924, 37926,
+ 37928, 37930, 37932, 37934, 37936, 37938, 37940, 37943,
+ }},
+ {{
+ 37946, 37949, 37952, 37955, 37958, 37960, 37962, 37964,
+ 37966, 37968, 37970, 37972, 37974, 37976, 37978, 37980,
+ 37982, 37984, 37986, 37988, 37990, 37992, 37994, 37996,
+ 37998, 38000, 38002, 38004, 38006, 38008, 38010, 38012,
+ }},
+ {{
+ 38014, 38016, 38018, 38020, 38022, 38024, 38026, 38028,
+ 38030, 38032, 38034, 38036, 38038, 38040, 38042, 38044,
+ 38046, 38048, 38050, 38052, 38054, 38056, 38058, 38060,
+ 38062, 38064, 38066, 38068, 38070, 38072, 38074, 38076,
+ }},
+ {{
+ 38078, 38080, 38082, 38084, 38086, 38088, 38090, 38092,
+ 38094, 38096, 38098, 38100, 38102, 38104, 38106, 38108,
+ 38110, 38112, 38114, 38116, 38118, 38120, 38122, 38124,
+ 38126, 38128, 38130, 38132, 38134, 38136, 38138, 38140,
+ }},
+ {{
+ 38142, 38144, 38146, 38148, 38150, 38152, 38154, 38156,
+ 38158, 38160, 38162, 38164, 38166, 38168, 38170, 38172,
+ 38174, 38176, 38178, 38180, 38182, 38184, 38186, 38188,
+ 38190, 38192, 38194, 38196, 38198, 38200, 38202, 38204,
+ }},
+ {{
+ 38206, 38208, 38210, 38212, 38214, 38216, 38218, 38220,
+ 38222, 38224, 38226, 38228, 38230, 38232, 38234, 38236,
+ 38238, 38240, 38242, 38245, 38248, 38251, 38253, 38255,
+ 38257, 38259, 38261, 38263, 38265, 38267, 38269, 38271,
+ }},
+ {{
+ 38273, 38275, 38277, 38279, 38281, 38283, 38285, 38287,
+ 38289, 38291, 38293, 38295, 38297, 38299, 38301, 38303,
+ 38305, 38307, 38309, 38311, 38313, 38315, 38317, 38319,
+ 38321, 38323, 38325, 38327, 38329, 38331, 38333, 38335,
+ }},
+ {{
+ 38337, 38339, 38341, 38343, 38345, 38347, 38349, 38351,
+ 38353, 38355, 38357, 38359, 38361, 38363, 38365, 38367,
+ 38369, 38371, 38373, 38375, 38377, 38379, 38381, 38383,
+ 38385, 38387, 38389, 38391, 38393, 38395, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 38397, 38400, 38403, 38406, 38409, 38412, 38415, 38418,
+ 38421, 38424, 38427, 38430, 38433, 38436, 38439, 38442,
+ }},
+ {{
+ 38445, 38448, 38451, 38454, 38457, 38460, 38463, 38466,
+ 38469, 38472, 38475, 38478, 38481, 38484, 38487, 38490,
+ 38493, 38496, 38499, 38502, 38505, 38508, 38511, 38514,
+ 38517, 38520, 38523, 38526, 38529, 38532, 38535, 38538,
+ }},
+ {{
+ 38541, 38544, 38547, 38550, 38553, 38556, 38559, 38562,
+ 38565, 38568, 38571, 38574, 38577, 38580, 38583, 38586,
+ 0, 0, 38589, 38592, 38595, 38598, 38601, 38604,
+ 38607, 38610, 38613, 38616, 38619, 38622, 38625, 38628,
+ }},
+ {{
+ 38631, 38634, 38637, 38640, 38643, 38646, 38649, 38652,
+ 38655, 38658, 38661, 38664, 38667, 38670, 38673, 38676,
+ 38679, 38682, 38685, 38688, 38691, 38694, 38697, 38700,
+ 38703, 38706, 38709, 38712, 38715, 38718, 38721, 38724,
+ }},
+ {{
+ 38727, 38730, 38733, 38736, 38739, 38742, 38745, 38748,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 38751, 38754, 38757, 38761, 38765, 38769, 38773, 38777,
+ 38781, 38785, 38788, 38806, 38814, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 38818, 38819, 38820, 38821, 38822, 38823, 38824, 38825,
+ 38826, 38827, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 38828, 38829, 38830, 38831, 38832, 38833, 38834, 38835,
+ 38836, 38837, 38838, 38839, 38840, 38841, 38842, 38843,
+ }},
+ {{
+ 38844, 38845, 38846, 38847, 38848, 0, 0, 38849,
+ 38850, 38851, 38852, 38853, 38854, 38855, 38856, 38857,
+ 38858, 38859, 38860, 0, 38861, 38862, 38863, 38864,
+ 38865, 38866, 38867, 38868, 38869, 38870, 38871, 38872,
+ }},
+ {{
+ 38873, 38874, 38875, 38876, 38877, 38878, 38879, 0,
+ 38880, 38881, 38882, 38883, 0, 0, 0, 0,
+ 38884, 38886, 38888, 0, 38890, 0, 38892, 38894,
+ 38896, 38898, 38900, 38902, 38904, 38906, 38908, 38910,
+ }},
+ {{
+ 38912, 38913, 38914, 38915, 38916, 38917, 38918, 38919,
+ 38920, 38921, 38922, 38923, 38924, 38925, 38926, 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, 39023,
+ 39024, 39025, 39026, 39027, 39028, 39029, 39031, 39033,
+ 39035, 39037, 39039, 39041, 39043, 0, 0, 0,
+ }},
+ {{
+ 0, 39045, 39046, 39047, 39048, 39049, 39050, 39051,
+ 39052, 39053, 39054, 39055, 39056, 39057, 39058, 39059,
+ 39060, 39061, 39062, 39063, 39064, 39065, 39066, 39067,
+ 39068, 39069, 39070, 39071, 39072, 39073, 39074, 39075,
+ }},
+ {{
+ 39076, 39077, 39078, 39079, 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, 39118, 39119, 39120, 39121, 39122, 39123,
+ 39124, 39125, 39126, 39127, 39128, 39129, 39130, 39131,
+ 39132, 39133, 39134, 39135, 39136, 39137, 39138, 39139,
+ }},
+ {{
+ 39140, 39141, 39142, 39143, 39144, 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, 39176, 39177, 39178, 39179,
+ 39180, 39181, 39182, 39183, 39184, 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, 39214, 39215, 39216, 39217, 39218, 39219,
+ 39220, 39221, 39222, 39223, 39224, 39225, 39226, 39227,
+ 39228, 39229, 39230, 39231, 39232, 39233, 39234, 0,
+ }},
+ {{
+ 0, 0, 39235, 39236, 39237, 39238, 39239, 39240,
+ 0, 0, 39241, 39242, 39243, 39244, 39245, 39246,
+ 0, 0, 39247, 39248, 39249, 39250, 39251, 39252,
+ 0, 0, 39253, 39254, 39255, 0, 0, 0,
+ }},
+ {{
+ 39256, 39257, 39258, 39259, 39260, 39261, 39262, 0,
+ 39263, 39264, 39265, 39266, 39267, 39268, 39269, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 6502, 6504,
+ }},
+ {{
+ 6506, 6508, 6510, 6512, 6514, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6516, 6518, 6520, 6522, 6524,
+ }},
+ {{
+ 6526, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }},
+ {{
+ 39296, 39297, 39298, 39299, 39300, 39301, 39302, 39303,
+ 39304, 39305, 39306, 39307, 39308, 39309, 39310, 39311,
+ 39312, 39313, 39314, 39315, 39316, 39317, 39318, 39319,
+ 39320, 39321, 39322, 39323, 39324, 39325, 39326, 39327,
+ }},
+ {{
+ 39328, 39329, 39330, 39331, 39332, 39333, 39334, 39335,
+ 39336, 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, 0, 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, 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, 0, 39452, 39453,
+ }},
+ {{
+ 0, 0, 39454, 0, 0, 39455, 39456, 0,
+ 0, 39457, 39458, 39459, 39460, 0, 39461, 39462,
+ 39463, 39464, 39465, 39466, 39467, 39468, 39469, 39470,
+ 39471, 39472, 0, 39473, 0, 39474, 39475, 39476,
+ }},
+ {{
+ 39477, 39478, 39479, 39480, 0, 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, 39514, 39515,
+ 39516, 39517, 39518, 39519, 39520, 39521, 39522, 39523,
+ 39524, 39525, 39526, 39527, 39528, 39529, 39530, 39531,
+ 39532, 39533, 39534, 39535, 39536, 39537, 39538, 39539,
+ }},
+ {{
+ 39540, 39541, 39542, 39543, 39544, 39545, 0, 39546,
+ 39547, 39548, 39549, 0, 0, 39550, 39551, 39552,
+ 39553, 39554, 39555, 39556, 39557, 0, 39558, 39559,
+ 39560, 39561, 39562, 39563, 39564, 0, 39565, 39566,
+ }},
+ {{
+ 39567, 39568, 39569, 39570, 39571, 39572, 39573, 39574,
+ 39575, 39576, 39577, 39578, 39579, 39580, 39581, 39582,
+ 39583, 39584, 39585, 39586, 39587, 39588, 39589, 39590,
+ 39591, 39592, 0, 39593, 39594, 39595, 39596, 0,
+ }},
+ {{
+ 39597, 39598, 39599, 39600, 39601, 0, 39602, 0,
+ 0, 0, 39603, 39604, 39605, 39606, 39607, 39608,
+ 39609, 0, 39610, 39611, 39612, 39613, 39614, 39615,
+ 39616, 39617, 39618, 39619, 39620, 39621, 39622, 39623,
+ }},
+ {{
+ 39624, 39625, 39626, 39627, 39628, 39629, 39630, 39631,
+ 39632, 39633, 39634, 39635, 39636, 39637, 39638, 39639,
+ 39640, 39641, 39642, 39643, 39644, 39645, 39646, 39647,
+ 39648, 39649, 39650, 39651, 39652, 39653, 39654, 39655,
+ }},
+ {{
+ 39656, 39657, 39658, 39659, 39660, 39661, 39662, 39663,
+ 39664, 39665, 39666, 39667, 39668, 39669, 39670, 39671,
+ 39672, 39673, 39674, 39675, 39676, 39677, 39678, 39679,
+ 39680, 39681, 39682, 39683, 39684, 39685, 39686, 39687,
+ }},
+ {{
+ 39688, 39689, 39690, 39691, 39692, 39693, 39694, 39695,
+ 39696, 39697, 39698, 39699, 39700, 39701, 39702, 39703,
+ 39704, 39705, 39706, 39707, 39708, 39709, 39710, 39711,
+ 39712, 39713, 39714, 39715, 39716, 39717, 39718, 39719,
+ }},
+ {{
+ 39720, 39721, 39722, 39723, 39724, 39725, 39726, 39727,
+ 39728, 39729, 39730, 39731, 39732, 39733, 39734, 39735,
+ 39736, 39737, 39738, 39739, 39740, 39741, 39742, 39743,
+ 39744, 39745, 39746, 39747, 39748, 39749, 39750, 39751,
+ }},
+ {{
+ 39752, 39753, 39754, 39755, 39756, 39757, 39758, 39759,
+ 39760, 39761, 39762, 39763, 39764, 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, 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, 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, 0, 0,
+ 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, 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, 40060, 40061,
+ 40062, 40063, 40064, 40065, 40066, 40067, 40068, 40069,
+ }},
+ {{
+ 40070, 40071, 40072, 40073, 40074, 40075, 40076, 40077,
+ 40078, 40079, 40080, 40081, 40082, 40083, 40084, 40085,
+ 40086, 40087, 40088, 40089, 40090, 40091, 40092, 40093,
+ 40094, 40095, 40096, 40097, 40098, 40099, 40100, 40101,
+ }},
+ {{
+ 40102, 40103, 40104, 40105, 40106, 40107, 40108, 40109,
+ 40110, 40111, 40112, 40113, 40114, 40115, 40116, 40117,
+ 40118, 40119, 40120, 40121, 40122, 40123, 40124, 40125,
+ 40126, 40127, 40128, 40129, 40130, 40131, 40132, 40133,
+ }},
+ {{
+ 40134, 40135, 40136, 40137, 40138, 40139, 40140, 40141,
+ 40142, 40143, 40144, 40145, 40146, 40147, 40148, 40149,
+ 40150, 40151, 40152, 40153, 40154, 40155, 40156, 40157,
+ 40158, 40159, 40160, 40161, 40162, 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, 0, 0, 0, 0, 40240, 40241,
+ 40242, 40243, 40244, 40245, 40246, 40247, 40248, 40249,
+ 40250, 40251, 40252, 40253, 40254, 40255, 40256, 40257,
+ }},
+ {{
+ 40258, 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,
+ }},
+ {{
+ 7522, 7523, 7524, 7525, 7526, 7527, 7528, 7529,
+ 7530, 7531, 7532, 7533, 7534, 7535, 7536, 7537,
+ 7538, 7539, 7540, 7541, 7542, 7543, 7544, 7545,
+ 7546, 7547, 7548, 7549, 7550, 7551, 7552, 7553,
+ }},
+ {{
+ 7554, 7555, 7556, 7557, 7558, 7559, 7560, 7561,
+ 7562, 7563, 7564, 7565, 7566, 7567, 7568, 7569,
+ 7570, 7571, 7572, 7573, 7574, 7575, 7576, 7577,
+ 7578, 7579, 7580, 7581, 7582, 7583, 7584, 7585,
+ }},
+ {{
+ 7586, 7587, 7588, 7589, 7590, 7591, 7592, 7593,
+ 7594, 7595, 7596, 7597, 7598, 7599, 7600, 7601,
+ 7602, 7603, 7604, 7605, 7606, 7607, 7608, 7609,
+ 7610, 7611, 7612, 7613, 7614, 7615, 7616, 7617,
+ }},
+ {{
+ 7618, 7619, 7620, 7621, 7622, 7623, 7624, 7625,
+ 7626, 7627, 7628, 7629, 7630, 7631, 7632, 7633,
+ 7634, 7635, 7636, 7637, 7638, 7639, 7640, 7641,
+ 7642, 7643, 7644, 7645, 7646, 7647, 7648, 7649,
+ }},
+ {{
+ 7650, 7651, 7652, 7653, 7654, 7655, 7656, 7657,
+ 7658, 7659, 7660, 7661, 7662, 7663, 7664, 7665,
+ 7666, 7667, 7668, 7669, 7670, 7671, 7672, 7673,
+ 7674, 7675, 7676, 7677, 7678, 7679, 7680, 7681,
+ }},
+ {{
+ 7682, 7683, 7684, 7685, 7686, 7687, 7688, 7689,
+ 7690, 7691, 7692, 7693, 7694, 7695, 7696, 7697,
+ 7698, 7699, 7700, 7701, 7702, 7703, 7704, 7705,
+ 7706, 7707, 7708, 7709, 7710, 7711, 7712, 7713,
+ }},
+ {{
+ 7714, 7715, 7716, 7717, 7718, 7719, 7720, 7721,
+ 7722, 7723, 7724, 7725, 7726, 7727, 7728, 7729,
+ 7730, 7731, 7732, 7733, 7734, 7735, 7736, 7737,
+ 7738, 7739, 7740, 7741, 7742, 7743, 7744, 7745,
+ }},
+ {{
+ 7746, 7747, 7748, 7749, 7750, 7751, 7752, 7753,
+ 7754, 7755, 7756, 7757, 7758, 7759, 7760, 7761,
+ 7762, 7763, 7764, 7765, 7766, 7767, 7768, 7769,
+ 7770, 7771, 7772, 7773, 7774, 7775, 7776, 7777,
+ }},
+ {{
+ 7778, 7779, 7780, 7781, 7782, 7783, 7784, 7785,
+ 7786, 7787, 7788, 7789, 7790, 7791, 7792, 7793,
+ 7794, 7795, 7796, 7797, 7798, 7799, 7800, 7801,
+ 7802, 7803, 7804, 7805, 7806, 7807, 7808, 7809,
+ }},
+ {{
+ 7810, 7811, 7812, 7813, 7814, 7815, 7816, 7817,
+ 7818, 7819, 7820, 7821, 7822, 7823, 7824, 7825,
+ 7826, 7827, 7828, 7829, 7830, 7831, 7832, 7833,
+ 7834, 7835, 7836, 7837, 7838, 7839, 7840, 7841,
+ }},
+ {{
+ 7842, 7843, 7844, 7845, 7846, 7847, 7848, 7849,
+ 7850, 7851, 7852, 7853, 7854, 7855, 7856, 7857,
+ 7858, 7859, 7860, 7861, 7862, 7863, 7864, 7865,
+ 7866, 7867, 7868, 7869, 7870, 7871, 7872, 7873,
+ }},
+ {{
+ 7874, 7875, 7876, 7877, 7878, 7879, 7880, 7881,
+ 7882, 7883, 7884, 7885, 7886, 7887, 7888, 7889,
+ 7890, 7891, 7892, 7893, 7894, 7895, 7896, 7897,
+ 7898, 7899, 7900, 7901, 7902, 7903, 7904, 7905,
+ }},
+ {{
+ 7906, 7907, 7908, 7909, 7910, 7911, 7912, 7913,
+ 7914, 7915, 7916, 7917, 7918, 7919, 7920, 7921,
+ 7922, 7923, 7924, 7925, 7926, 7927, 7928, 7929,
+ 7930, 7931, 7932, 7933, 7934, 7935, 7936, 7937,
+ }},
+ {{
+ 7938, 7939, 7940, 7941, 7942, 7943, 7944, 7945,
+ 7946, 7947, 7948, 7949, 7950, 7951, 7952, 7953,
+ 7954, 7955, 7956, 7957, 7958, 7959, 7960, 7961,
+ 7962, 7963, 7964, 7965, 7966, 7967, 7968, 7969,
+ }},
+ {{
+ 7970, 7971, 7972, 7973, 7974, 7975, 7976, 7977,
+ 7978, 7979, 7980, 7981, 7982, 7983, 7984, 7985,
+ 7986, 7987, 7988, 7989, 7990, 7991, 7992, 7993,
+ 7994, 7995, 7996, 7997, 7998, 7999, 8000, 8001,
+ }},
+ {{
+ 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009,
+ 8010, 8011, 8012, 8013, 8014, 8015, 8016, 8017,
+ 8018, 8019, 8020, 8021, 8022, 8023, 8024, 8025,
+ 8026, 8027, 8028, 8029, 8030, 8031, 8032, 8033,
+ }},
+ {{
+ 8034, 8035, 8036, 8037, 8038, 8039, 8040, 8041,
+ 8042, 8043, 8044, 8045, 8046, 8047, 8048, 8049,
+ 8050, 8051, 8052, 8053, 8054, 8055, 8056, 8057,
+ 8058, 8059, 8060, 8061, 8062, 8063, 0, 0,
+ }},
+};
+static const uint32_t decompose_seq[] = {
+ 0x00000000, 0x80000020, 0x00000020, 0x80000308,
+ 0x80000061, 0x00000020, 0x80000304, 0x80000032,
+ 0x80000033, 0x00000020, 0x80000301, 0x800003bc,
+ 0x00000020, 0x80000327, 0x80000031, 0x8000006f,
+ 0x00000031, 0x00002044, 0x80000034, 0x00000031,
+ 0x00002044, 0x80000032, 0x00000033, 0x00002044,
+ 0x80000034, 0x00000041, 0x80000300, 0x00000041,
+ 0x80000301, 0x00000041, 0x80000302, 0x00000041,
+ 0x80000303, 0x00000041, 0x80000308, 0x00000041,
+ 0x8000030a, 0x00000043, 0x80000327, 0x00000045,
+ 0x80000300, 0x00000045, 0x80000301, 0x00000045,
+ 0x80000302, 0x00000045, 0x80000308, 0x00000049,
+ 0x80000300, 0x00000049, 0x80000301, 0x00000049,
+ 0x80000302, 0x00000049, 0x80000308, 0x0000004e,
+ 0x80000303, 0x0000004f, 0x80000300, 0x0000004f,
+ 0x80000301, 0x0000004f, 0x80000302, 0x0000004f,
+ 0x80000303, 0x0000004f, 0x80000308, 0x00000055,
+ 0x80000300, 0x00000055, 0x80000301, 0x00000055,
+ 0x80000302, 0x00000055, 0x80000308, 0x00000059,
+ 0x80000301, 0x00000061, 0x80000300, 0x00000061,
+ 0x80000301, 0x00000061, 0x80000302, 0x00000061,
+ 0x80000303, 0x00000061, 0x80000308, 0x00000061,
+ 0x8000030a, 0x00000063, 0x80000327, 0x00000065,
+ 0x80000300, 0x00000065, 0x80000301, 0x00000065,
+ 0x80000302, 0x00000065, 0x80000308, 0x00000069,
+ 0x80000300, 0x00000069, 0x80000301, 0x00000069,
+ 0x80000302, 0x00000069, 0x80000308, 0x0000006e,
+ 0x80000303, 0x0000006f, 0x80000300, 0x0000006f,
+ 0x80000301, 0x0000006f, 0x80000302, 0x0000006f,
+ 0x80000303, 0x0000006f, 0x80000308, 0x00000075,
+ 0x80000300, 0x00000075, 0x80000301, 0x00000075,
+ 0x80000302, 0x00000075, 0x80000308, 0x00000079,
+ 0x80000301, 0x00000079, 0x80000308, 0x00000041,
+ 0x80000304, 0x00000061, 0x80000304, 0x00000041,
+ 0x80000306, 0x00000061, 0x80000306, 0x00000041,
+ 0x80000328, 0x00000061, 0x80000328, 0x00000043,
+ 0x80000301, 0x00000063, 0x80000301, 0x00000043,
+ 0x80000302, 0x00000063, 0x80000302, 0x00000043,
+ 0x80000307, 0x00000063, 0x80000307, 0x00000043,
+ 0x8000030c, 0x00000063, 0x8000030c, 0x00000044,
+ 0x8000030c, 0x00000064, 0x8000030c, 0x00000045,
+ 0x80000304, 0x00000065, 0x80000304, 0x00000045,
+ 0x80000306, 0x00000065, 0x80000306, 0x00000045,
+ 0x80000307, 0x00000065, 0x80000307, 0x00000045,
+ 0x80000328, 0x00000065, 0x80000328, 0x00000045,
+ 0x8000030c, 0x00000065, 0x8000030c, 0x00000047,
+ 0x80000302, 0x00000067, 0x80000302, 0x00000047,
+ 0x80000306, 0x00000067, 0x80000306, 0x00000047,
+ 0x80000307, 0x00000067, 0x80000307, 0x00000047,
+ 0x80000327, 0x00000067, 0x80000327, 0x00000048,
+ 0x80000302, 0x00000068, 0x80000302, 0x00000049,
+ 0x80000303, 0x00000069, 0x80000303, 0x00000049,
+ 0x80000304, 0x00000069, 0x80000304, 0x00000049,
+ 0x80000306, 0x00000069, 0x80000306, 0x00000049,
+ 0x80000328, 0x00000069, 0x80000328, 0x00000049,
+ 0x80000307, 0x00000049, 0x8000004a, 0x00000069,
+ 0x8000006a, 0x0000004a, 0x80000302, 0x0000006a,
+ 0x80000302, 0x0000004b, 0x80000327, 0x0000006b,
+ 0x80000327, 0x0000004c, 0x80000301, 0x0000006c,
+ 0x80000301, 0x0000004c, 0x80000327, 0x0000006c,
+ 0x80000327, 0x0000004c, 0x8000030c, 0x0000006c,
+ 0x8000030c, 0x0000004c, 0x800000b7, 0x0000006c,
+ 0x800000b7, 0x0000004e, 0x80000301, 0x0000006e,
+ 0x80000301, 0x0000004e, 0x80000327, 0x0000006e,
+ 0x80000327, 0x0000004e, 0x8000030c, 0x0000006e,
+ 0x8000030c, 0x000002bc, 0x8000006e, 0x0000004f,
+ 0x80000304, 0x0000006f, 0x80000304, 0x0000004f,
+ 0x80000306, 0x0000006f, 0x80000306, 0x0000004f,
+ 0x8000030b, 0x0000006f, 0x8000030b, 0x00000052,
+ 0x80000301, 0x00000072, 0x80000301, 0x00000052,
+ 0x80000327, 0x00000072, 0x80000327, 0x00000052,
+ 0x8000030c, 0x00000072, 0x8000030c, 0x00000053,
+ 0x80000301, 0x00000073, 0x80000301, 0x00000053,
+ 0x80000302, 0x00000073, 0x80000302, 0x00000053,
+ 0x80000327, 0x00000073, 0x80000327, 0x00000053,
+ 0x8000030c, 0x00000073, 0x8000030c, 0x00000054,
+ 0x80000327, 0x00000074, 0x80000327, 0x00000054,
+ 0x8000030c, 0x00000074, 0x8000030c, 0x00000055,
+ 0x80000303, 0x00000075, 0x80000303, 0x00000055,
+ 0x80000304, 0x00000075, 0x80000304, 0x00000055,
+ 0x80000306, 0x00000075, 0x80000306, 0x00000055,
+ 0x8000030a, 0x00000075, 0x8000030a, 0x00000055,
+ 0x8000030b, 0x00000075, 0x8000030b, 0x00000055,
+ 0x80000328, 0x00000075, 0x80000328, 0x00000057,
+ 0x80000302, 0x00000077, 0x80000302, 0x00000059,
+ 0x80000302, 0x00000079, 0x80000302, 0x00000059,
+ 0x80000308, 0x0000005a, 0x80000301, 0x0000007a,
+ 0x80000301, 0x0000005a, 0x80000307, 0x0000007a,
+ 0x80000307, 0x0000005a, 0x8000030c, 0x0000007a,
+ 0x8000030c, 0x80000073, 0x0000004f, 0x8000031b,
+ 0x0000006f, 0x8000031b, 0x00000055, 0x8000031b,
+ 0x00000075, 0x8000031b, 0x00000044, 0x8000017d,
+ 0x00000044, 0x8000017e, 0x00000064, 0x8000017e,
+ 0x0000004c, 0x8000004a, 0x0000004c, 0x8000006a,
+ 0x0000006c, 0x8000006a, 0x0000004e, 0x8000004a,
+ 0x0000004e, 0x8000006a, 0x0000006e, 0x8000006a,
+ 0x00000041, 0x8000030c, 0x00000061, 0x8000030c,
+ 0x00000049, 0x8000030c, 0x00000069, 0x8000030c,
+ 0x0000004f, 0x8000030c, 0x0000006f, 0x8000030c,
+ 0x00000055, 0x8000030c, 0x00000075, 0x8000030c,
+ 0x000000dc, 0x80000304, 0x000000fc, 0x80000304,
+ 0x000000dc, 0x80000301, 0x000000fc, 0x80000301,
+ 0x000000dc, 0x8000030c, 0x000000fc, 0x8000030c,
+ 0x000000dc, 0x80000300, 0x000000fc, 0x80000300,
+ 0x000000c4, 0x80000304, 0x000000e4, 0x80000304,
+ 0x00000226, 0x80000304, 0x00000227, 0x80000304,
+ 0x000000c6, 0x80000304, 0x000000e6, 0x80000304,
+ 0x00000047, 0x8000030c, 0x00000067, 0x8000030c,
+ 0x0000004b, 0x8000030c, 0x0000006b, 0x8000030c,
+ 0x0000004f, 0x80000328, 0x0000006f, 0x80000328,
+ 0x000001ea, 0x80000304, 0x000001eb, 0x80000304,
+ 0x000001b7, 0x8000030c, 0x00000292, 0x8000030c,
+ 0x0000006a, 0x8000030c, 0x00000044, 0x8000005a,
+ 0x00000044, 0x8000007a, 0x00000064, 0x8000007a,
+ 0x00000047, 0x80000301, 0x00000067, 0x80000301,
+ 0x0000004e, 0x80000300, 0x0000006e, 0x80000300,
+ 0x000000c5, 0x80000301, 0x000000e5, 0x80000301,
+ 0x000000c6, 0x80000301, 0x000000e6, 0x80000301,
+ 0x000000d8, 0x80000301, 0x000000f8, 0x80000301,
+ 0x00000041, 0x8000030f, 0x00000061, 0x8000030f,
+ 0x00000041, 0x80000311, 0x00000061, 0x80000311,
+ 0x00000045, 0x8000030f, 0x00000065, 0x8000030f,
+ 0x00000045, 0x80000311, 0x00000065, 0x80000311,
+ 0x00000049, 0x8000030f, 0x00000069, 0x8000030f,
+ 0x00000049, 0x80000311, 0x00000069, 0x80000311,
+ 0x0000004f, 0x8000030f, 0x0000006f, 0x8000030f,
+ 0x0000004f, 0x80000311, 0x0000006f, 0x80000311,
+ 0x00000052, 0x8000030f, 0x00000072, 0x8000030f,
+ 0x00000052, 0x80000311, 0x00000072, 0x80000311,
+ 0x00000055, 0x8000030f, 0x00000075, 0x8000030f,
+ 0x00000055, 0x80000311, 0x00000075, 0x80000311,
+ 0x00000053, 0x80000326, 0x00000073, 0x80000326,
+ 0x00000054, 0x80000326, 0x00000074, 0x80000326,
+ 0x00000048, 0x8000030c, 0x00000068, 0x8000030c,
+ 0x00000041, 0x80000307, 0x00000061, 0x80000307,
+ 0x00000045, 0x80000327, 0x00000065, 0x80000327,
+ 0x000000d6, 0x80000304, 0x000000f6, 0x80000304,
+ 0x000000d5, 0x80000304, 0x000000f5, 0x80000304,
+ 0x0000004f, 0x80000307, 0x0000006f, 0x80000307,
+ 0x0000022e, 0x80000304, 0x0000022f, 0x80000304,
+ 0x00000059, 0x80000304, 0x00000079, 0x80000304,
+ 0x80000068, 0x80000266, 0x8000006a, 0x80000072,
+ 0x80000279, 0x8000027b, 0x80000281, 0x80000077,
+ 0x80000079, 0x00000020, 0x80000306, 0x00000020,
+ 0x80000307, 0x00000020, 0x8000030a, 0x00000020,
+ 0x80000328, 0x00000020, 0x80000303, 0x00000020,
+ 0x8000030b, 0x80000263, 0x8000006c, 0x80000073,
+ 0x80000078, 0x80000295, 0x80000300, 0x80000301,
+ 0x80000313, 0x00000308, 0x80000301, 0x800002b9,
+ 0x00000020, 0x80000345, 0x8000003b, 0x00000020,
+ 0x80000301, 0x000000a8, 0x80000301, 0x00000391,
+ 0x80000301, 0x800000b7, 0x00000395, 0x80000301,
+ 0x00000397, 0x80000301, 0x00000399, 0x80000301,
+ 0x0000039f, 0x80000301, 0x000003a5, 0x80000301,
+ 0x000003a9, 0x80000301, 0x000003ca, 0x80000301,
+ 0x00000399, 0x80000308, 0x000003a5, 0x80000308,
+ 0x000003b1, 0x80000301, 0x000003b5, 0x80000301,
+ 0x000003b7, 0x80000301, 0x000003b9, 0x80000301,
+ 0x000003cb, 0x80000301, 0x000003b9, 0x80000308,
+ 0x000003c5, 0x80000308, 0x000003bf, 0x80000301,
+ 0x000003c5, 0x80000301, 0x000003c9, 0x80000301,
+ 0x800003b2, 0x800003b8, 0x800003a5, 0x000003d2,
+ 0x80000301, 0x000003d2, 0x80000308, 0x800003c6,
+ 0x800003c0, 0x800003ba, 0x800003c1, 0x800003c2,
+ 0x80000398, 0x800003b5, 0x800003a3, 0x00000415,
+ 0x80000300, 0x00000415, 0x80000308, 0x00000413,
+ 0x80000301, 0x00000406, 0x80000308, 0x0000041a,
+ 0x80000301, 0x00000418, 0x80000300, 0x00000423,
+ 0x80000306, 0x00000418, 0x80000306, 0x00000438,
+ 0x80000306, 0x00000435, 0x80000300, 0x00000435,
+ 0x80000308, 0x00000433, 0x80000301, 0x00000456,
+ 0x80000308, 0x0000043a, 0x80000301, 0x00000438,
+ 0x80000300, 0x00000443, 0x80000306, 0x00000474,
+ 0x8000030f, 0x00000475, 0x8000030f, 0x00000416,
+ 0x80000306, 0x00000436, 0x80000306, 0x00000410,
+ 0x80000306, 0x00000430, 0x80000306, 0x00000410,
+ 0x80000308, 0x00000430, 0x80000308, 0x00000415,
+ 0x80000306, 0x00000435, 0x80000306, 0x000004d8,
+ 0x80000308, 0x000004d9, 0x80000308, 0x00000416,
+ 0x80000308, 0x00000436, 0x80000308, 0x00000417,
+ 0x80000308, 0x00000437, 0x80000308, 0x00000418,
+ 0x80000304, 0x00000438, 0x80000304, 0x00000418,
+ 0x80000308, 0x00000438, 0x80000308, 0x0000041e,
+ 0x80000308, 0x0000043e, 0x80000308, 0x000004e8,
+ 0x80000308, 0x000004e9, 0x80000308, 0x0000042d,
+ 0x80000308, 0x0000044d, 0x80000308, 0x00000423,
+ 0x80000304, 0x00000443, 0x80000304, 0x00000423,
+ 0x80000308, 0x00000443, 0x80000308, 0x00000423,
+ 0x8000030b, 0x00000443, 0x8000030b, 0x00000427,
+ 0x80000308, 0x00000447, 0x80000308, 0x0000042b,
+ 0x80000308, 0x0000044b, 0x80000308, 0x00000565,
+ 0x80000582, 0x00000627, 0x80000653, 0x00000627,
+ 0x80000654, 0x00000648, 0x80000654, 0x00000627,
+ 0x80000655, 0x0000064a, 0x80000654, 0x00000627,
+ 0x80000674, 0x00000648, 0x80000674, 0x000006c7,
+ 0x80000674, 0x0000064a, 0x80000674, 0x000006d5,
+ 0x80000654, 0x000006c1, 0x80000654, 0x000006d2,
+ 0x80000654, 0x00000928, 0x8000093c, 0x00000930,
+ 0x8000093c, 0x00000933, 0x8000093c, 0x00000915,
+ 0x8000093c, 0x00000916, 0x8000093c, 0x00000917,
+ 0x8000093c, 0x0000091c, 0x8000093c, 0x00000921,
+ 0x8000093c, 0x00000922, 0x8000093c, 0x0000092b,
+ 0x8000093c, 0x0000092f, 0x8000093c, 0x000009c7,
+ 0x800009be, 0x000009c7, 0x800009d7, 0x000009a1,
+ 0x800009bc, 0x000009a2, 0x800009bc, 0x000009af,
+ 0x800009bc, 0x00000a32, 0x80000a3c, 0x00000a38,
+ 0x80000a3c, 0x00000a16, 0x80000a3c, 0x00000a17,
+ 0x80000a3c, 0x00000a1c, 0x80000a3c, 0x00000a2b,
+ 0x80000a3c, 0x00000b47, 0x80000b56, 0x00000b47,
+ 0x80000b3e, 0x00000b47, 0x80000b57, 0x00000b21,
+ 0x80000b3c, 0x00000b22, 0x80000b3c, 0x00000b92,
+ 0x80000bd7, 0x00000bc6, 0x80000bbe, 0x00000bc7,
+ 0x80000bbe, 0x00000bc6, 0x80000bd7, 0x00000c46,
+ 0x80000c56, 0x00000cbf, 0x80000cd5, 0x00000cc6,
+ 0x80000cd5, 0x00000cc6, 0x80000cd6, 0x00000cc6,
+ 0x80000cc2, 0x00000cca, 0x80000cd5, 0x00000d46,
+ 0x80000d3e, 0x00000d47, 0x80000d3e, 0x00000d46,
+ 0x80000d57, 0x00000dd9, 0x80000dca, 0x00000dd9,
+ 0x80000dcf, 0x00000ddc, 0x80000dca, 0x00000dd9,
+ 0x80000ddf, 0x00000e4d, 0x80000e32, 0x00000ecd,
+ 0x80000eb2, 0x00000eab, 0x80000e99, 0x00000eab,
+ 0x80000ea1, 0x80000f0b, 0x00000f42, 0x80000fb7,
+ 0x00000f4c, 0x80000fb7, 0x00000f51, 0x80000fb7,
+ 0x00000f56, 0x80000fb7, 0x00000f5b, 0x80000fb7,
+ 0x00000f40, 0x80000fb5, 0x00000f71, 0x80000f72,
+ 0x00000f71, 0x80000f74, 0x00000fb2, 0x80000f80,
+ 0x00000fb2, 0x80000f81, 0x00000fb3, 0x80000f80,
+ 0x00000fb3, 0x80000f81, 0x00000f71, 0x80000f80,
+ 0x00000f92, 0x80000fb7, 0x00000f9c, 0x80000fb7,
+ 0x00000fa1, 0x80000fb7, 0x00000fa6, 0x80000fb7,
+ 0x00000fab, 0x80000fb7, 0x00000f90, 0x80000fb5,
+ 0x00001025, 0x8000102e, 0x800010dc, 0x80000041,
+ 0x800000c6, 0x80000042, 0x80000044, 0x80000045,
+ 0x8000018e, 0x80000047, 0x80000048, 0x80000049,
+ 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d,
+ 0x8000004e, 0x8000004f, 0x80000222, 0x80000050,
+ 0x80000052, 0x80000054, 0x80000055, 0x80000057,
+ 0x80000061, 0x80000250, 0x80000251, 0x80001d02,
+ 0x80000062, 0x80000064, 0x80000065, 0x80000259,
+ 0x8000025b, 0x8000025c, 0x80000067, 0x8000006b,
+ 0x8000006d, 0x8000014b, 0x8000006f, 0x80000254,
+ 0x80001d16, 0x80001d17, 0x80000070, 0x80000074,
+ 0x80000075, 0x80001d1d, 0x8000026f, 0x80000076,
+ 0x80001d25, 0x800003b2, 0x800003b3, 0x800003b4,
+ 0x800003c6, 0x800003c7, 0x80000069, 0x80000072,
+ 0x80000075, 0x80000076, 0x800003b2, 0x800003b3,
+ 0x800003c1, 0x800003c6, 0x800003c7, 0x8000043d,
+ 0x80000252, 0x80000063, 0x80000255, 0x800000f0,
+ 0x8000025c, 0x80000066, 0x8000025f, 0x80000261,
+ 0x80000265, 0x80000268, 0x80000269, 0x8000026a,
+ 0x80001d7b, 0x8000029d, 0x8000026d, 0x80001d85,
+ 0x8000029f, 0x80000271, 0x80000270, 0x80000272,
+ 0x80000273, 0x80000274, 0x80000275, 0x80000278,
+ 0x80000282, 0x80000283, 0x800001ab, 0x80000289,
+ 0x8000028a, 0x80001d1c, 0x8000028b, 0x8000028c,
+ 0x8000007a, 0x80000290, 0x80000291, 0x80000292,
+ 0x800003b8, 0x00000041, 0x80000325, 0x00000061,
+ 0x80000325, 0x00000042, 0x80000307, 0x00000062,
+ 0x80000307, 0x00000042, 0x80000323, 0x00000062,
+ 0x80000323, 0x00000042, 0x80000331, 0x00000062,
+ 0x80000331, 0x000000c7, 0x80000301, 0x000000e7,
+ 0x80000301, 0x00000044, 0x80000307, 0x00000064,
+ 0x80000307, 0x00000044, 0x80000323, 0x00000064,
+ 0x80000323, 0x00000044, 0x80000331, 0x00000064,
+ 0x80000331, 0x00000044, 0x80000327, 0x00000064,
+ 0x80000327, 0x00000044, 0x8000032d, 0x00000064,
+ 0x8000032d, 0x00000112, 0x80000300, 0x00000113,
+ 0x80000300, 0x00000112, 0x80000301, 0x00000113,
+ 0x80000301, 0x00000045, 0x8000032d, 0x00000065,
+ 0x8000032d, 0x00000045, 0x80000330, 0x00000065,
+ 0x80000330, 0x00000228, 0x80000306, 0x00000229,
+ 0x80000306, 0x00000046, 0x80000307, 0x00000066,
+ 0x80000307, 0x00000047, 0x80000304, 0x00000067,
+ 0x80000304, 0x00000048, 0x80000307, 0x00000068,
+ 0x80000307, 0x00000048, 0x80000323, 0x00000068,
+ 0x80000323, 0x00000048, 0x80000308, 0x00000068,
+ 0x80000308, 0x00000048, 0x80000327, 0x00000068,
+ 0x80000327, 0x00000048, 0x8000032e, 0x00000068,
+ 0x8000032e, 0x00000049, 0x80000330, 0x00000069,
+ 0x80000330, 0x000000cf, 0x80000301, 0x000000ef,
+ 0x80000301, 0x0000004b, 0x80000301, 0x0000006b,
+ 0x80000301, 0x0000004b, 0x80000323, 0x0000006b,
+ 0x80000323, 0x0000004b, 0x80000331, 0x0000006b,
+ 0x80000331, 0x0000004c, 0x80000323, 0x0000006c,
+ 0x80000323, 0x00001e36, 0x80000304, 0x00001e37,
+ 0x80000304, 0x0000004c, 0x80000331, 0x0000006c,
+ 0x80000331, 0x0000004c, 0x8000032d, 0x0000006c,
+ 0x8000032d, 0x0000004d, 0x80000301, 0x0000006d,
+ 0x80000301, 0x0000004d, 0x80000307, 0x0000006d,
+ 0x80000307, 0x0000004d, 0x80000323, 0x0000006d,
+ 0x80000323, 0x0000004e, 0x80000307, 0x0000006e,
+ 0x80000307, 0x0000004e, 0x80000323, 0x0000006e,
+ 0x80000323, 0x0000004e, 0x80000331, 0x0000006e,
+ 0x80000331, 0x0000004e, 0x8000032d, 0x0000006e,
+ 0x8000032d, 0x000000d5, 0x80000301, 0x000000f5,
+ 0x80000301, 0x000000d5, 0x80000308, 0x000000f5,
+ 0x80000308, 0x0000014c, 0x80000300, 0x0000014d,
+ 0x80000300, 0x0000014c, 0x80000301, 0x0000014d,
+ 0x80000301, 0x00000050, 0x80000301, 0x00000070,
+ 0x80000301, 0x00000050, 0x80000307, 0x00000070,
+ 0x80000307, 0x00000052, 0x80000307, 0x00000072,
+ 0x80000307, 0x00000052, 0x80000323, 0x00000072,
+ 0x80000323, 0x00001e5a, 0x80000304, 0x00001e5b,
+ 0x80000304, 0x00000052, 0x80000331, 0x00000072,
+ 0x80000331, 0x00000053, 0x80000307, 0x00000073,
+ 0x80000307, 0x00000053, 0x80000323, 0x00000073,
+ 0x80000323, 0x0000015a, 0x80000307, 0x0000015b,
+ 0x80000307, 0x00000160, 0x80000307, 0x00000161,
+ 0x80000307, 0x00001e62, 0x80000307, 0x00001e63,
+ 0x80000307, 0x00000054, 0x80000307, 0x00000074,
+ 0x80000307, 0x00000054, 0x80000323, 0x00000074,
+ 0x80000323, 0x00000054, 0x80000331, 0x00000074,
+ 0x80000331, 0x00000054, 0x8000032d, 0x00000074,
+ 0x8000032d, 0x00000055, 0x80000324, 0x00000075,
+ 0x80000324, 0x00000055, 0x80000330, 0x00000075,
+ 0x80000330, 0x00000055, 0x8000032d, 0x00000075,
+ 0x8000032d, 0x00000168, 0x80000301, 0x00000169,
+ 0x80000301, 0x0000016a, 0x80000308, 0x0000016b,
+ 0x80000308, 0x00000056, 0x80000303, 0x00000076,
+ 0x80000303, 0x00000056, 0x80000323, 0x00000076,
+ 0x80000323, 0x00000057, 0x80000300, 0x00000077,
+ 0x80000300, 0x00000057, 0x80000301, 0x00000077,
+ 0x80000301, 0x00000057, 0x80000308, 0x00000077,
+ 0x80000308, 0x00000057, 0x80000307, 0x00000077,
+ 0x80000307, 0x00000057, 0x80000323, 0x00000077,
+ 0x80000323, 0x00000058, 0x80000307, 0x00000078,
+ 0x80000307, 0x00000058, 0x80000308, 0x00000078,
+ 0x80000308, 0x00000059, 0x80000307, 0x00000079,
+ 0x80000307, 0x0000005a, 0x80000302, 0x0000007a,
+ 0x80000302, 0x0000005a, 0x80000323, 0x0000007a,
+ 0x80000323, 0x0000005a, 0x80000331, 0x0000007a,
+ 0x80000331, 0x00000068, 0x80000331, 0x00000074,
+ 0x80000308, 0x00000077, 0x8000030a, 0x00000079,
+ 0x8000030a, 0x00000061, 0x800002be, 0x0000017f,
+ 0x80000307, 0x00000041, 0x80000323, 0x00000061,
+ 0x80000323, 0x00000041, 0x80000309, 0x00000061,
+ 0x80000309, 0x000000c2, 0x80000301, 0x000000e2,
+ 0x80000301, 0x000000c2, 0x80000300, 0x000000e2,
+ 0x80000300, 0x000000c2, 0x80000309, 0x000000e2,
+ 0x80000309, 0x000000c2, 0x80000303, 0x000000e2,
+ 0x80000303, 0x00001ea0, 0x80000302, 0x00001ea1,
+ 0x80000302, 0x00000102, 0x80000301, 0x00000103,
+ 0x80000301, 0x00000102, 0x80000300, 0x00000103,
+ 0x80000300, 0x00000102, 0x80000309, 0x00000103,
+ 0x80000309, 0x00000102, 0x80000303, 0x00000103,
+ 0x80000303, 0x00001ea0, 0x80000306, 0x00001ea1,
+ 0x80000306, 0x00000045, 0x80000323, 0x00000065,
+ 0x80000323, 0x00000045, 0x80000309, 0x00000065,
+ 0x80000309, 0x00000045, 0x80000303, 0x00000065,
+ 0x80000303, 0x000000ca, 0x80000301, 0x000000ea,
+ 0x80000301, 0x000000ca, 0x80000300, 0x000000ea,
+ 0x80000300, 0x000000ca, 0x80000309, 0x000000ea,
+ 0x80000309, 0x000000ca, 0x80000303, 0x000000ea,
+ 0x80000303, 0x00001eb8, 0x80000302, 0x00001eb9,
+ 0x80000302, 0x00000049, 0x80000309, 0x00000069,
+ 0x80000309, 0x00000049, 0x80000323, 0x00000069,
+ 0x80000323, 0x0000004f, 0x80000323, 0x0000006f,
+ 0x80000323, 0x0000004f, 0x80000309, 0x0000006f,
+ 0x80000309, 0x000000d4, 0x80000301, 0x000000f4,
+ 0x80000301, 0x000000d4, 0x80000300, 0x000000f4,
+ 0x80000300, 0x000000d4, 0x80000309, 0x000000f4,
+ 0x80000309, 0x000000d4, 0x80000303, 0x000000f4,
+ 0x80000303, 0x00001ecc, 0x80000302, 0x00001ecd,
+ 0x80000302, 0x000001a0, 0x80000301, 0x000001a1,
+ 0x80000301, 0x000001a0, 0x80000300, 0x000001a1,
+ 0x80000300, 0x000001a0, 0x80000309, 0x000001a1,
+ 0x80000309, 0x000001a0, 0x80000303, 0x000001a1,
+ 0x80000303, 0x000001a0, 0x80000323, 0x000001a1,
+ 0x80000323, 0x00000055, 0x80000323, 0x00000075,
+ 0x80000323, 0x00000055, 0x80000309, 0x00000075,
+ 0x80000309, 0x000001af, 0x80000301, 0x000001b0,
+ 0x80000301, 0x000001af, 0x80000300, 0x000001b0,
+ 0x80000300, 0x000001af, 0x80000309, 0x000001b0,
+ 0x80000309, 0x000001af, 0x80000303, 0x000001b0,
+ 0x80000303, 0x000001af, 0x80000323, 0x000001b0,
+ 0x80000323, 0x00000059, 0x80000300, 0x00000079,
+ 0x80000300, 0x00000059, 0x80000323, 0x00000079,
+ 0x80000323, 0x00000059, 0x80000309, 0x00000079,
+ 0x80000309, 0x00000059, 0x80000303, 0x00000079,
+ 0x80000303, 0x000003b1, 0x80000313, 0x000003b1,
+ 0x80000314, 0x00001f00, 0x80000300, 0x00001f01,
+ 0x80000300, 0x00001f00, 0x80000301, 0x00001f01,
+ 0x80000301, 0x00001f00, 0x80000342, 0x00001f01,
+ 0x80000342, 0x00000391, 0x80000313, 0x00000391,
+ 0x80000314, 0x00001f08, 0x80000300, 0x00001f09,
+ 0x80000300, 0x00001f08, 0x80000301, 0x00001f09,
+ 0x80000301, 0x00001f08, 0x80000342, 0x00001f09,
+ 0x80000342, 0x000003b5, 0x80000313, 0x000003b5,
+ 0x80000314, 0x00001f10, 0x80000300, 0x00001f11,
+ 0x80000300, 0x00001f10, 0x80000301, 0x00001f11,
+ 0x80000301, 0x00000395, 0x80000313, 0x00000395,
+ 0x80000314, 0x00001f18, 0x80000300, 0x00001f19,
+ 0x80000300, 0x00001f18, 0x80000301, 0x00001f19,
+ 0x80000301, 0x000003b7, 0x80000313, 0x000003b7,
+ 0x80000314, 0x00001f20, 0x80000300, 0x00001f21,
+ 0x80000300, 0x00001f20, 0x80000301, 0x00001f21,
+ 0x80000301, 0x00001f20, 0x80000342, 0x00001f21,
+ 0x80000342, 0x00000397, 0x80000313, 0x00000397,
+ 0x80000314, 0x00001f28, 0x80000300, 0x00001f29,
+ 0x80000300, 0x00001f28, 0x80000301, 0x00001f29,
+ 0x80000301, 0x00001f28, 0x80000342, 0x00001f29,
+ 0x80000342, 0x000003b9, 0x80000313, 0x000003b9,
+ 0x80000314, 0x00001f30, 0x80000300, 0x00001f31,
+ 0x80000300, 0x00001f30, 0x80000301, 0x00001f31,
+ 0x80000301, 0x00001f30, 0x80000342, 0x00001f31,
+ 0x80000342, 0x00000399, 0x80000313, 0x00000399,
+ 0x80000314, 0x00001f38, 0x80000300, 0x00001f39,
+ 0x80000300, 0x00001f38, 0x80000301, 0x00001f39,
+ 0x80000301, 0x00001f38, 0x80000342, 0x00001f39,
+ 0x80000342, 0x000003bf, 0x80000313, 0x000003bf,
+ 0x80000314, 0x00001f40, 0x80000300, 0x00001f41,
+ 0x80000300, 0x00001f40, 0x80000301, 0x00001f41,
+ 0x80000301, 0x0000039f, 0x80000313, 0x0000039f,
+ 0x80000314, 0x00001f48, 0x80000300, 0x00001f49,
+ 0x80000300, 0x00001f48, 0x80000301, 0x00001f49,
+ 0x80000301, 0x000003c5, 0x80000313, 0x000003c5,
+ 0x80000314, 0x00001f50, 0x80000300, 0x00001f51,
+ 0x80000300, 0x00001f50, 0x80000301, 0x00001f51,
+ 0x80000301, 0x00001f50, 0x80000342, 0x00001f51,
+ 0x80000342, 0x000003a5, 0x80000314, 0x00001f59,
+ 0x80000300, 0x00001f59, 0x80000301, 0x00001f59,
+ 0x80000342, 0x000003c9, 0x80000313, 0x000003c9,
+ 0x80000314, 0x00001f60, 0x80000300, 0x00001f61,
+ 0x80000300, 0x00001f60, 0x80000301, 0x00001f61,
+ 0x80000301, 0x00001f60, 0x80000342, 0x00001f61,
+ 0x80000342, 0x000003a9, 0x80000313, 0x000003a9,
+ 0x80000314, 0x00001f68, 0x80000300, 0x00001f69,
+ 0x80000300, 0x00001f68, 0x80000301, 0x00001f69,
+ 0x80000301, 0x00001f68, 0x80000342, 0x00001f69,
+ 0x80000342, 0x000003b1, 0x80000300, 0x800003ac,
+ 0x000003b5, 0x80000300, 0x800003ad, 0x000003b7,
+ 0x80000300, 0x800003ae, 0x000003b9, 0x80000300,
+ 0x800003af, 0x000003bf, 0x80000300, 0x800003cc,
+ 0x000003c5, 0x80000300, 0x800003cd, 0x000003c9,
+ 0x80000300, 0x800003ce, 0x00001f00, 0x80000345,
+ 0x00001f01, 0x80000345, 0x00001f02, 0x80000345,
+ 0x00001f03, 0x80000345, 0x00001f04, 0x80000345,
+ 0x00001f05, 0x80000345, 0x00001f06, 0x80000345,
+ 0x00001f07, 0x80000345, 0x00001f08, 0x80000345,
+ 0x00001f09, 0x80000345, 0x00001f0a, 0x80000345,
+ 0x00001f0b, 0x80000345, 0x00001f0c, 0x80000345,
+ 0x00001f0d, 0x80000345, 0x00001f0e, 0x80000345,
+ 0x00001f0f, 0x80000345, 0x00001f20, 0x80000345,
+ 0x00001f21, 0x80000345, 0x00001f22, 0x80000345,
+ 0x00001f23, 0x80000345, 0x00001f24, 0x80000345,
+ 0x00001f25, 0x80000345, 0x00001f26, 0x80000345,
+ 0x00001f27, 0x80000345, 0x00001f28, 0x80000345,
+ 0x00001f29, 0x80000345, 0x00001f2a, 0x80000345,
+ 0x00001f2b, 0x80000345, 0x00001f2c, 0x80000345,
+ 0x00001f2d, 0x80000345, 0x00001f2e, 0x80000345,
+ 0x00001f2f, 0x80000345, 0x00001f60, 0x80000345,
+ 0x00001f61, 0x80000345, 0x00001f62, 0x80000345,
+ 0x00001f63, 0x80000345, 0x00001f64, 0x80000345,
+ 0x00001f65, 0x80000345, 0x00001f66, 0x80000345,
+ 0x00001f67, 0x80000345, 0x00001f68, 0x80000345,
+ 0x00001f69, 0x80000345, 0x00001f6a, 0x80000345,
+ 0x00001f6b, 0x80000345, 0x00001f6c, 0x80000345,
+ 0x00001f6d, 0x80000345, 0x00001f6e, 0x80000345,
+ 0x00001f6f, 0x80000345, 0x000003b1, 0x80000306,
+ 0x000003b1, 0x80000304, 0x00001f70, 0x80000345,
+ 0x000003b1, 0x80000345, 0x000003ac, 0x80000345,
+ 0x000003b1, 0x80000342, 0x00001fb6, 0x80000345,
+ 0x00000391, 0x80000306, 0x00000391, 0x80000304,
+ 0x00000391, 0x80000300, 0x80000386, 0x00000391,
+ 0x80000345, 0x00000020, 0x80000313, 0x800003b9,
+ 0x00000020, 0x80000313, 0x00000020, 0x80000342,
+ 0x000000a8, 0x80000342, 0x00001f74, 0x80000345,
+ 0x000003b7, 0x80000345, 0x000003ae, 0x80000345,
+ 0x000003b7, 0x80000342, 0x00001fc6, 0x80000345,
+ 0x00000395, 0x80000300, 0x80000388, 0x00000397,
+ 0x80000300, 0x80000389, 0x00000397, 0x80000345,
+ 0x00001fbf, 0x80000300, 0x00001fbf, 0x80000301,
+ 0x00001fbf, 0x80000342, 0x000003b9, 0x80000306,
+ 0x000003b9, 0x80000304, 0x000003ca, 0x80000300,
+ 0x80000390, 0x000003b9, 0x80000342, 0x000003ca,
+ 0x80000342, 0x00000399, 0x80000306, 0x00000399,
+ 0x80000304, 0x00000399, 0x80000300, 0x8000038a,
+ 0x00001ffe, 0x80000300, 0x00001ffe, 0x80000301,
+ 0x00001ffe, 0x80000342, 0x000003c5, 0x80000306,
+ 0x000003c5, 0x80000304, 0x000003cb, 0x80000300,
+ 0x800003b0, 0x000003c1, 0x80000313, 0x000003c1,
+ 0x80000314, 0x000003c5, 0x80000342, 0x000003cb,
+ 0x80000342, 0x000003a5, 0x80000306, 0x000003a5,
+ 0x80000304, 0x000003a5, 0x80000300, 0x8000038e,
+ 0x000003a1, 0x80000314, 0x000000a8, 0x80000300,
+ 0x80000385, 0x80000060, 0x00001f7c, 0x80000345,
+ 0x000003c9, 0x80000345, 0x000003ce, 0x80000345,
+ 0x000003c9, 0x80000342, 0x00001ff6, 0x80000345,
+ 0x0000039f, 0x80000300, 0x8000038c, 0x000003a9,
+ 0x80000300, 0x8000038f, 0x000003a9, 0x80000345,
+ 0x800000b4, 0x00000020, 0x80000314, 0x80002002,
+ 0x80002003, 0x80000020, 0x80000020, 0x80000020,
+ 0x80000020, 0x80000020, 0x80000020, 0x80000020,
+ 0x80000020, 0x80000020, 0x80002010, 0x00000020,
+ 0x80000333, 0x8000002e, 0x0000002e, 0x8000002e,
+ 0x0000002e, 0x0000002e, 0x8000002e, 0x80000020,
+ 0x00002032, 0x80002032, 0x00002032, 0x00002032,
+ 0x80002032, 0x00002035, 0x80002035, 0x00002035,
+ 0x00002035, 0x80002035, 0x00000021, 0x80000021,
+ 0x00000020, 0x80000305, 0x0000003f, 0x8000003f,
+ 0x0000003f, 0x80000021, 0x00000021, 0x8000003f,
+ 0x00002032, 0x00002032, 0x00002032, 0x80002032,
+ 0x80000020, 0x80000030, 0x80000069, 0x80000034,
+ 0x80000035, 0x80000036, 0x80000037, 0x80000038,
+ 0x80000039, 0x8000002b, 0x80002212, 0x8000003d,
+ 0x80000028, 0x80000029, 0x8000006e, 0x80000030,
+ 0x80000031, 0x80000032, 0x80000033, 0x80000034,
+ 0x80000035, 0x80000036, 0x80000037, 0x80000038,
+ 0x80000039, 0x8000002b, 0x80002212, 0x8000003d,
+ 0x80000028, 0x80000029, 0x80000061, 0x80000065,
+ 0x8000006f, 0x80000078, 0x80000259, 0x00000052,
+ 0x80000073, 0x00000061, 0x0000002f, 0x80000063,
+ 0x00000061, 0x0000002f, 0x80000073, 0x80000043,
+ 0x000000b0, 0x80000043, 0x00000063, 0x0000002f,
+ 0x8000006f, 0x00000063, 0x0000002f, 0x80000075,
+ 0x80000190, 0x000000b0, 0x80000046, 0x80000067,
+ 0x80000048, 0x80000048, 0x80000048, 0x80000068,
+ 0x80000127, 0x80000049, 0x80000049, 0x8000004c,
+ 0x8000006c, 0x8000004e, 0x0000004e, 0x8000006f,
+ 0x80000050, 0x80000051, 0x80000052, 0x80000052,
+ 0x80000052, 0x00000053, 0x8000004d, 0x00000054,
+ 0x00000045, 0x8000004c, 0x00000054, 0x8000004d,
+ 0x8000005a, 0x800003a9, 0x8000005a, 0x8000004b,
+ 0x800000c5, 0x80000042, 0x80000043, 0x80000065,
+ 0x80000045, 0x80000046, 0x8000004d, 0x8000006f,
+ 0x800005d0, 0x800005d1, 0x800005d2, 0x800005d3,
+ 0x80000069, 0x00000046, 0x00000041, 0x80000058,
+ 0x800003c0, 0x800003b3, 0x80000393, 0x800003a0,
+ 0x80002211, 0x80000044, 0x80000064, 0x80000065,
+ 0x80000069, 0x8000006a, 0x00000031, 0x00002044,
+ 0x80000033, 0x00000032, 0x00002044, 0x80000033,
+ 0x00000031, 0x00002044, 0x80000035, 0x00000032,
+ 0x00002044, 0x80000035, 0x00000033, 0x00002044,
+ 0x80000035, 0x00000034, 0x00002044, 0x80000035,
+ 0x00000031, 0x00002044, 0x80000036, 0x00000035,
+ 0x00002044, 0x80000036, 0x00000031, 0x00002044,
+ 0x80000038, 0x00000033, 0x00002044, 0x80000038,
+ 0x00000035, 0x00002044, 0x80000038, 0x00000037,
+ 0x00002044, 0x80000038, 0x00000031, 0x80002044,
+ 0x80000049, 0x00000049, 0x80000049, 0x00000049,
+ 0x00000049, 0x80000049, 0x00000049, 0x80000056,
+ 0x80000056, 0x00000056, 0x80000049, 0x00000056,
+ 0x00000049, 0x80000049, 0x00000056, 0x00000049,
+ 0x00000049, 0x80000049, 0x00000049, 0x80000058,
+ 0x80000058, 0x00000058, 0x80000049, 0x00000058,
+ 0x00000049, 0x80000049, 0x8000004c, 0x80000043,
+ 0x80000044, 0x8000004d, 0x80000069, 0x00000069,
+ 0x80000069, 0x00000069, 0x00000069, 0x80000069,
+ 0x00000069, 0x80000076, 0x80000076, 0x00000076,
+ 0x80000069, 0x00000076, 0x00000069, 0x80000069,
+ 0x00000076, 0x00000069, 0x00000069, 0x80000069,
+ 0x00000069, 0x80000078, 0x80000078, 0x00000078,
+ 0x80000069, 0x00000078, 0x00000069, 0x80000069,
+ 0x8000006c, 0x80000063, 0x80000064, 0x8000006d,
+ 0x00002190, 0x80000338, 0x00002192, 0x80000338,
+ 0x00002194, 0x80000338, 0x000021d0, 0x80000338,
+ 0x000021d4, 0x80000338, 0x000021d2, 0x80000338,
+ 0x00002203, 0x80000338, 0x00002208, 0x80000338,
+ 0x0000220b, 0x80000338, 0x00002223, 0x80000338,
+ 0x00002225, 0x80000338, 0x0000222b, 0x8000222b,
+ 0x0000222b, 0x0000222b, 0x8000222b, 0x0000222e,
+ 0x8000222e, 0x0000222e, 0x0000222e, 0x8000222e,
+ 0x0000223c, 0x80000338, 0x00002243, 0x80000338,
+ 0x00002245, 0x80000338, 0x00002248, 0x80000338,
+ 0x0000003d, 0x80000338, 0x00002261, 0x80000338,
+ 0x0000224d, 0x80000338, 0x0000003c, 0x80000338,
+ 0x0000003e, 0x80000338, 0x00002264, 0x80000338,
+ 0x00002265, 0x80000338, 0x00002272, 0x80000338,
+ 0x00002273, 0x80000338, 0x00002276, 0x80000338,
+ 0x00002277, 0x80000338, 0x0000227a, 0x80000338,
+ 0x0000227b, 0x80000338, 0x00002282, 0x80000338,
+ 0x00002283, 0x80000338, 0x00002286, 0x80000338,
+ 0x00002287, 0x80000338, 0x000022a2, 0x80000338,
+ 0x000022a8, 0x80000338, 0x000022a9, 0x80000338,
+ 0x000022ab, 0x80000338, 0x0000227c, 0x80000338,
+ 0x0000227d, 0x80000338, 0x00002291, 0x80000338,
+ 0x00002292, 0x80000338, 0x000022b2, 0x80000338,
+ 0x000022b3, 0x80000338, 0x000022b4, 0x80000338,
+ 0x000022b5, 0x80000338, 0x80003008, 0x80003009,
+ 0x80000031, 0x80000032, 0x80000033, 0x80000034,
+ 0x80000035, 0x80000036, 0x80000037, 0x80000038,
+ 0x80000039, 0x00000031, 0x80000030, 0x00000031,
+ 0x80000031, 0x00000031, 0x80000032, 0x00000031,
+ 0x80000033, 0x00000031, 0x80000034, 0x00000031,
+ 0x80000035, 0x00000031, 0x80000036, 0x00000031,
+ 0x80000037, 0x00000031, 0x80000038, 0x00000031,
+ 0x80000039, 0x00000032, 0x80000030, 0x00000028,
+ 0x00000031, 0x80000029, 0x00000028, 0x00000032,
+ 0x80000029, 0x00000028, 0x00000033, 0x80000029,
+ 0x00000028, 0x00000034, 0x80000029, 0x00000028,
+ 0x00000035, 0x80000029, 0x00000028, 0x00000036,
+ 0x80000029, 0x00000028, 0x00000037, 0x80000029,
+ 0x00000028, 0x00000038, 0x80000029, 0x00000028,
+ 0x00000039, 0x80000029, 0x00000028, 0x00000031,
+ 0x00000030, 0x80000029, 0x00000028, 0x00000031,
+ 0x00000031, 0x80000029, 0x00000028, 0x00000031,
+ 0x00000032, 0x80000029, 0x00000028, 0x00000031,
+ 0x00000033, 0x80000029, 0x00000028, 0x00000031,
+ 0x00000034, 0x80000029, 0x00000028, 0x00000031,
+ 0x00000035, 0x80000029, 0x00000028, 0x00000031,
+ 0x00000036, 0x80000029, 0x00000028, 0x00000031,
+ 0x00000037, 0x80000029, 0x00000028, 0x00000031,
+ 0x00000038, 0x80000029, 0x00000028, 0x00000031,
+ 0x00000039, 0x80000029, 0x00000028, 0x00000032,
+ 0x00000030, 0x80000029, 0x00000031, 0x8000002e,
+ 0x00000032, 0x8000002e, 0x00000033, 0x8000002e,
+ 0x00000034, 0x8000002e, 0x00000035, 0x8000002e,
+ 0x00000036, 0x8000002e, 0x00000037, 0x8000002e,
+ 0x00000038, 0x8000002e, 0x00000039, 0x8000002e,
+ 0x00000031, 0x00000030, 0x8000002e, 0x00000031,
+ 0x00000031, 0x8000002e, 0x00000031, 0x00000032,
+ 0x8000002e, 0x00000031, 0x00000033, 0x8000002e,
+ 0x00000031, 0x00000034, 0x8000002e, 0x00000031,
+ 0x00000035, 0x8000002e, 0x00000031, 0x00000036,
+ 0x8000002e, 0x00000031, 0x00000037, 0x8000002e,
+ 0x00000031, 0x00000038, 0x8000002e, 0x00000031,
+ 0x00000039, 0x8000002e, 0x00000032, 0x00000030,
+ 0x8000002e, 0x00000028, 0x00000061, 0x80000029,
+ 0x00000028, 0x00000062, 0x80000029, 0x00000028,
+ 0x00000063, 0x80000029, 0x00000028, 0x00000064,
+ 0x80000029, 0x00000028, 0x00000065, 0x80000029,
+ 0x00000028, 0x00000066, 0x80000029, 0x00000028,
+ 0x00000067, 0x80000029, 0x00000028, 0x00000068,
+ 0x80000029, 0x00000028, 0x00000069, 0x80000029,
+ 0x00000028, 0x0000006a, 0x80000029, 0x00000028,
+ 0x0000006b, 0x80000029, 0x00000028, 0x0000006c,
+ 0x80000029, 0x00000028, 0x0000006d, 0x80000029,
+ 0x00000028, 0x0000006e, 0x80000029, 0x00000028,
+ 0x0000006f, 0x80000029, 0x00000028, 0x00000070,
+ 0x80000029, 0x00000028, 0x00000071, 0x80000029,
+ 0x00000028, 0x00000072, 0x80000029, 0x00000028,
+ 0x00000073, 0x80000029, 0x00000028, 0x00000074,
+ 0x80000029, 0x00000028, 0x00000075, 0x80000029,
+ 0x00000028, 0x00000076, 0x80000029, 0x00000028,
+ 0x00000077, 0x80000029, 0x00000028, 0x00000078,
+ 0x80000029, 0x00000028, 0x00000079, 0x80000029,
+ 0x00000028, 0x0000007a, 0x80000029, 0x80000041,
+ 0x80000042, 0x80000043, 0x80000044, 0x80000045,
+ 0x80000046, 0x80000047, 0x80000048, 0x80000049,
+ 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d,
+ 0x8000004e, 0x8000004f, 0x80000050, 0x80000051,
+ 0x80000052, 0x80000053, 0x80000054, 0x80000055,
+ 0x80000056, 0x80000057, 0x80000058, 0x80000059,
+ 0x8000005a, 0x80000061, 0x80000062, 0x80000063,
+ 0x80000064, 0x80000065, 0x80000066, 0x80000067,
+ 0x80000068, 0x80000069, 0x8000006a, 0x8000006b,
+ 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f,
+ 0x80000070, 0x80000071, 0x80000072, 0x80000073,
+ 0x80000074, 0x80000075, 0x80000076, 0x80000077,
+ 0x80000078, 0x80000079, 0x8000007a, 0x80000030,
+ 0x0000222b, 0x0000222b, 0x0000222b, 0x8000222b,
+ 0x0000003a, 0x0000003a, 0x8000003d, 0x0000003d,
+ 0x8000003d, 0x0000003d, 0x0000003d, 0x8000003d,
+ 0x00002add, 0x80000338, 0x80002d61, 0x80006bcd,
+ 0x80009f9f, 0x80004e00, 0x80004e28, 0x80004e36,
+ 0x80004e3f, 0x80004e59, 0x80004e85, 0x80004e8c,
+ 0x80004ea0, 0x80004eba, 0x8000513f, 0x80005165,
+ 0x8000516b, 0x80005182, 0x80005196, 0x800051ab,
+ 0x800051e0, 0x800051f5, 0x80005200, 0x8000529b,
+ 0x800052f9, 0x80005315, 0x8000531a, 0x80005338,
+ 0x80005341, 0x8000535c, 0x80005369, 0x80005382,
+ 0x800053b6, 0x800053c8, 0x800053e3, 0x800056d7,
+ 0x8000571f, 0x800058eb, 0x80005902, 0x8000590a,
+ 0x80005915, 0x80005927, 0x80005973, 0x80005b50,
+ 0x80005b80, 0x80005bf8, 0x80005c0f, 0x80005c22,
+ 0x80005c38, 0x80005c6e, 0x80005c71, 0x80005ddb,
+ 0x80005de5, 0x80005df1, 0x80005dfe, 0x80005e72,
+ 0x80005e7a, 0x80005e7f, 0x80005ef4, 0x80005efe,
+ 0x80005f0b, 0x80005f13, 0x80005f50, 0x80005f61,
+ 0x80005f73, 0x80005fc3, 0x80006208, 0x80006236,
+ 0x8000624b, 0x8000652f, 0x80006534, 0x80006587,
+ 0x80006597, 0x800065a4, 0x800065b9, 0x800065e0,
+ 0x800065e5, 0x800066f0, 0x80006708, 0x80006728,
+ 0x80006b20, 0x80006b62, 0x80006b79, 0x80006bb3,
+ 0x80006bcb, 0x80006bd4, 0x80006bdb, 0x80006c0f,
+ 0x80006c14, 0x80006c34, 0x8000706b, 0x8000722a,
+ 0x80007236, 0x8000723b, 0x8000723f, 0x80007247,
+ 0x80007259, 0x8000725b, 0x800072ac, 0x80007384,
+ 0x80007389, 0x800074dc, 0x800074e6, 0x80007518,
+ 0x8000751f, 0x80007528, 0x80007530, 0x8000758b,
+ 0x80007592, 0x80007676, 0x8000767d, 0x800076ae,
+ 0x800076bf, 0x800076ee, 0x800077db, 0x800077e2,
+ 0x800077f3, 0x8000793a, 0x800079b8, 0x800079be,
+ 0x80007a74, 0x80007acb, 0x80007af9, 0x80007c73,
+ 0x80007cf8, 0x80007f36, 0x80007f51, 0x80007f8a,
+ 0x80007fbd, 0x80008001, 0x8000800c, 0x80008012,
+ 0x80008033, 0x8000807f, 0x80008089, 0x800081e3,
+ 0x800081ea, 0x800081f3, 0x800081fc, 0x8000820c,
+ 0x8000821b, 0x8000821f, 0x8000826e, 0x80008272,
+ 0x80008278, 0x8000864d, 0x8000866b, 0x80008840,
+ 0x8000884c, 0x80008863, 0x8000897e, 0x8000898b,
+ 0x800089d2, 0x80008a00, 0x80008c37, 0x80008c46,
+ 0x80008c55, 0x80008c78, 0x80008c9d, 0x80008d64,
+ 0x80008d70, 0x80008db3, 0x80008eab, 0x80008eca,
+ 0x80008f9b, 0x80008fb0, 0x80008fb5, 0x80009091,
+ 0x80009149, 0x800091c6, 0x800091cc, 0x800091d1,
+ 0x80009577, 0x80009580, 0x8000961c, 0x800096b6,
+ 0x800096b9, 0x800096e8, 0x80009751, 0x8000975e,
+ 0x80009762, 0x80009769, 0x800097cb, 0x800097ed,
+ 0x800097f3, 0x80009801, 0x800098a8, 0x800098db,
+ 0x800098df, 0x80009996, 0x80009999, 0x800099ac,
+ 0x80009aa8, 0x80009ad8, 0x80009adf, 0x80009b25,
+ 0x80009b2f, 0x80009b32, 0x80009b3c, 0x80009b5a,
+ 0x80009ce5, 0x80009e75, 0x80009e7f, 0x80009ea5,
+ 0x80009ebb, 0x80009ec3, 0x80009ecd, 0x80009ed1,
+ 0x80009ef9, 0x80009efd, 0x80009f0e, 0x80009f13,
+ 0x80009f20, 0x80009f3b, 0x80009f4a, 0x80009f52,
+ 0x80009f8d, 0x80009f9c, 0x80009fa0, 0x80000020,
+ 0x80003012, 0x80005341, 0x80005344, 0x80005345,
+ 0x0000304b, 0x80003099, 0x0000304d, 0x80003099,
+ 0x0000304f, 0x80003099, 0x00003051, 0x80003099,
+ 0x00003053, 0x80003099, 0x00003055, 0x80003099,
+ 0x00003057, 0x80003099, 0x00003059, 0x80003099,
+ 0x0000305b, 0x80003099, 0x0000305d, 0x80003099,
+ 0x0000305f, 0x80003099, 0x00003061, 0x80003099,
+ 0x00003064, 0x80003099, 0x00003066, 0x80003099,
+ 0x00003068, 0x80003099, 0x0000306f, 0x80003099,
+ 0x0000306f, 0x8000309a, 0x00003072, 0x80003099,
+ 0x00003072, 0x8000309a, 0x00003075, 0x80003099,
+ 0x00003075, 0x8000309a, 0x00003078, 0x80003099,
+ 0x00003078, 0x8000309a, 0x0000307b, 0x80003099,
+ 0x0000307b, 0x8000309a, 0x00003046, 0x80003099,
+ 0x00000020, 0x80003099, 0x00000020, 0x8000309a,
+ 0x0000309d, 0x80003099, 0x00003088, 0x8000308a,
+ 0x000030ab, 0x80003099, 0x000030ad, 0x80003099,
+ 0x000030af, 0x80003099, 0x000030b1, 0x80003099,
+ 0x000030b3, 0x80003099, 0x000030b5, 0x80003099,
+ 0x000030b7, 0x80003099, 0x000030b9, 0x80003099,
+ 0x000030bb, 0x80003099, 0x000030bd, 0x80003099,
+ 0x000030bf, 0x80003099, 0x000030c1, 0x80003099,
+ 0x000030c4, 0x80003099, 0x000030c6, 0x80003099,
+ 0x000030c8, 0x80003099, 0x000030cf, 0x80003099,
+ 0x000030cf, 0x8000309a, 0x000030d2, 0x80003099,
+ 0x000030d2, 0x8000309a, 0x000030d5, 0x80003099,
+ 0x000030d5, 0x8000309a, 0x000030d8, 0x80003099,
+ 0x000030d8, 0x8000309a, 0x000030db, 0x80003099,
+ 0x000030db, 0x8000309a, 0x000030a6, 0x80003099,
+ 0x000030ef, 0x80003099, 0x000030f0, 0x80003099,
+ 0x000030f1, 0x80003099, 0x000030f2, 0x80003099,
+ 0x000030fd, 0x80003099, 0x000030b3, 0x800030c8,
+ 0x80001100, 0x80001101, 0x800011aa, 0x80001102,
+ 0x800011ac, 0x800011ad, 0x80001103, 0x80001104,
+ 0x80001105, 0x800011b0, 0x800011b1, 0x800011b2,
+ 0x800011b3, 0x800011b4, 0x800011b5, 0x8000111a,
+ 0x80001106, 0x80001107, 0x80001108, 0x80001121,
+ 0x80001109, 0x8000110a, 0x8000110b, 0x8000110c,
+ 0x8000110d, 0x8000110e, 0x8000110f, 0x80001110,
+ 0x80001111, 0x80001112, 0x80001161, 0x80001162,
+ 0x80001163, 0x80001164, 0x80001165, 0x80001166,
+ 0x80001167, 0x80001168, 0x80001169, 0x8000116a,
+ 0x8000116b, 0x8000116c, 0x8000116d, 0x8000116e,
+ 0x8000116f, 0x80001170, 0x80001171, 0x80001172,
+ 0x80001173, 0x80001174, 0x80001175, 0x80001160,
+ 0x80001114, 0x80001115, 0x800011c7, 0x800011c8,
+ 0x800011cc, 0x800011ce, 0x800011d3, 0x800011d7,
+ 0x800011d9, 0x8000111c, 0x800011dd, 0x800011df,
+ 0x8000111d, 0x8000111e, 0x80001120, 0x80001122,
+ 0x80001123, 0x80001127, 0x80001129, 0x8000112b,
+ 0x8000112c, 0x8000112d, 0x8000112e, 0x8000112f,
+ 0x80001132, 0x80001136, 0x80001140, 0x80001147,
+ 0x8000114c, 0x800011f1, 0x800011f2, 0x80001157,
+ 0x80001158, 0x80001159, 0x80001184, 0x80001185,
+ 0x80001188, 0x80001191, 0x80001192, 0x80001194,
+ 0x8000119e, 0x800011a1, 0x80004e00, 0x80004e8c,
+ 0x80004e09, 0x800056db, 0x80004e0a, 0x80004e2d,
+ 0x80004e0b, 0x80007532, 0x80004e59, 0x80004e19,
+ 0x80004e01, 0x80005929, 0x80005730, 0x80004eba,
+ 0x00000028, 0x00001100, 0x80000029, 0x00000028,
+ 0x00001102, 0x80000029, 0x00000028, 0x00001103,
+ 0x80000029, 0x00000028, 0x00001105, 0x80000029,
+ 0x00000028, 0x00001106, 0x80000029, 0x00000028,
+ 0x00001107, 0x80000029, 0x00000028, 0x00001109,
+ 0x80000029, 0x00000028, 0x0000110b, 0x80000029,
+ 0x00000028, 0x0000110c, 0x80000029, 0x00000028,
+ 0x0000110e, 0x80000029, 0x00000028, 0x0000110f,
+ 0x80000029, 0x00000028, 0x00001110, 0x80000029,
+ 0x00000028, 0x00001111, 0x80000029, 0x00000028,
+ 0x00001112, 0x80000029, 0x00000028, 0x00001100,
+ 0x00001161, 0x80000029, 0x00000028, 0x00001102,
+ 0x00001161, 0x80000029, 0x00000028, 0x00001103,
+ 0x00001161, 0x80000029, 0x00000028, 0x00001105,
+ 0x00001161, 0x80000029, 0x00000028, 0x00001106,
+ 0x00001161, 0x80000029, 0x00000028, 0x00001107,
+ 0x00001161, 0x80000029, 0x00000028, 0x00001109,
+ 0x00001161, 0x80000029, 0x00000028, 0x0000110b,
+ 0x00001161, 0x80000029, 0x00000028, 0x0000110c,
+ 0x00001161, 0x80000029, 0x00000028, 0x0000110e,
+ 0x00001161, 0x80000029, 0x00000028, 0x0000110f,
+ 0x00001161, 0x80000029, 0x00000028, 0x00001110,
+ 0x00001161, 0x80000029, 0x00000028, 0x00001111,
+ 0x00001161, 0x80000029, 0x00000028, 0x00001112,
+ 0x00001161, 0x80000029, 0x00000028, 0x0000110c,
+ 0x0000116e, 0x80000029, 0x00000028, 0x0000110b,
+ 0x00001169, 0x0000110c, 0x00001165, 0x000011ab,
+ 0x80000029, 0x00000028, 0x0000110b, 0x00001169,
+ 0x00001112, 0x0000116e, 0x80000029, 0x00000028,
+ 0x00004e00, 0x80000029, 0x00000028, 0x00004e8c,
+ 0x80000029, 0x00000028, 0x00004e09, 0x80000029,
+ 0x00000028, 0x000056db, 0x80000029, 0x00000028,
+ 0x00004e94, 0x80000029, 0x00000028, 0x0000516d,
+ 0x80000029, 0x00000028, 0x00004e03, 0x80000029,
+ 0x00000028, 0x0000516b, 0x80000029, 0x00000028,
+ 0x00004e5d, 0x80000029, 0x00000028, 0x00005341,
+ 0x80000029, 0x00000028, 0x00006708, 0x80000029,
+ 0x00000028, 0x0000706b, 0x80000029, 0x00000028,
+ 0x00006c34, 0x80000029, 0x00000028, 0x00006728,
+ 0x80000029, 0x00000028, 0x000091d1, 0x80000029,
+ 0x00000028, 0x0000571f, 0x80000029, 0x00000028,
+ 0x000065e5, 0x80000029, 0x00000028, 0x0000682a,
+ 0x80000029, 0x00000028, 0x00006709, 0x80000029,
+ 0x00000028, 0x0000793e, 0x80000029, 0x00000028,
+ 0x0000540d, 0x80000029, 0x00000028, 0x00007279,
+ 0x80000029, 0x00000028, 0x00008ca1, 0x80000029,
+ 0x00000028, 0x0000795d, 0x80000029, 0x00000028,
+ 0x000052b4, 0x80000029, 0x00000028, 0x00004ee3,
+ 0x80000029, 0x00000028, 0x0000547c, 0x80000029,
+ 0x00000028, 0x00005b66, 0x80000029, 0x00000028,
+ 0x000076e3, 0x80000029, 0x00000028, 0x00004f01,
+ 0x80000029, 0x00000028, 0x00008cc7, 0x80000029,
+ 0x00000028, 0x00005354, 0x80000029, 0x00000028,
+ 0x0000796d, 0x80000029, 0x00000028, 0x00004f11,
+ 0x80000029, 0x00000028, 0x000081ea, 0x80000029,
+ 0x00000028, 0x000081f3, 0x80000029, 0x00000050,
+ 0x00000054, 0x80000045, 0x00000032, 0x80000031,
+ 0x00000032, 0x80000032, 0x00000032, 0x80000033,
+ 0x00000032, 0x80000034, 0x00000032, 0x80000035,
+ 0x00000032, 0x80000036, 0x00000032, 0x80000037,
+ 0x00000032, 0x80000038, 0x00000032, 0x80000039,
+ 0x00000033, 0x80000030, 0x00000033, 0x80000031,
+ 0x00000033, 0x80000032, 0x00000033, 0x80000033,
+ 0x00000033, 0x80000034, 0x00000033, 0x80000035,
+ 0x80001100, 0x80001102, 0x80001103, 0x80001105,
+ 0x80001106, 0x80001107, 0x80001109, 0x8000110b,
+ 0x8000110c, 0x8000110e, 0x8000110f, 0x80001110,
+ 0x80001111, 0x80001112, 0x00001100, 0x80001161,
+ 0x00001102, 0x80001161, 0x00001103, 0x80001161,
+ 0x00001105, 0x80001161, 0x00001106, 0x80001161,
+ 0x00001107, 0x80001161, 0x00001109, 0x80001161,
+ 0x0000110b, 0x80001161, 0x0000110c, 0x80001161,
+ 0x0000110e, 0x80001161, 0x0000110f, 0x80001161,
+ 0x00001110, 0x80001161, 0x00001111, 0x80001161,
+ 0x00001112, 0x80001161, 0x0000110e, 0x00001161,
+ 0x000011b7, 0x00001100, 0x80001169, 0x0000110c,
+ 0x0000116e, 0x0000110b, 0x80001174, 0x0000110b,
+ 0x8000116e, 0x80004e00, 0x80004e8c, 0x80004e09,
+ 0x800056db, 0x80004e94, 0x8000516d, 0x80004e03,
+ 0x8000516b, 0x80004e5d, 0x80005341, 0x80006708,
+ 0x8000706b, 0x80006c34, 0x80006728, 0x800091d1,
+ 0x8000571f, 0x800065e5, 0x8000682a, 0x80006709,
+ 0x8000793e, 0x8000540d, 0x80007279, 0x80008ca1,
+ 0x8000795d, 0x800052b4, 0x800079d8, 0x80007537,
+ 0x80005973, 0x80009069, 0x8000512a, 0x80005370,
+ 0x80006ce8, 0x80009805, 0x80004f11, 0x80005199,
+ 0x80006b63, 0x80004e0a, 0x80004e2d, 0x80004e0b,
+ 0x80005de6, 0x800053f3, 0x8000533b, 0x80005b97,
+ 0x80005b66, 0x800076e3, 0x80004f01, 0x80008cc7,
+ 0x80005354, 0x8000591c, 0x00000033, 0x80000036,
+ 0x00000033, 0x80000037, 0x00000033, 0x80000038,
+ 0x00000033, 0x80000039, 0x00000034, 0x80000030,
+ 0x00000034, 0x80000031, 0x00000034, 0x80000032,
+ 0x00000034, 0x80000033, 0x00000034, 0x80000034,
+ 0x00000034, 0x80000035, 0x00000034, 0x80000036,
+ 0x00000034, 0x80000037, 0x00000034, 0x80000038,
+ 0x00000034, 0x80000039, 0x00000035, 0x80000030,
+ 0x00000031, 0x80006708, 0x00000032, 0x80006708,
+ 0x00000033, 0x80006708, 0x00000034, 0x80006708,
+ 0x00000035, 0x80006708, 0x00000036, 0x80006708,
+ 0x00000037, 0x80006708, 0x00000038, 0x80006708,
+ 0x00000039, 0x80006708, 0x00000031, 0x00000030,
+ 0x80006708, 0x00000031, 0x00000031, 0x80006708,
+ 0x00000031, 0x00000032, 0x80006708, 0x00000048,
+ 0x80000067, 0x00000065, 0x00000072, 0x80000067,
+ 0x00000065, 0x80000056, 0x0000004c, 0x00000054,
+ 0x80000044, 0x800030a2, 0x800030a4, 0x800030a6,
+ 0x800030a8, 0x800030aa, 0x800030ab, 0x800030ad,
+ 0x800030af, 0x800030b1, 0x800030b3, 0x800030b5,
+ 0x800030b7, 0x800030b9, 0x800030bb, 0x800030bd,
+ 0x800030bf, 0x800030c1, 0x800030c4, 0x800030c6,
+ 0x800030c8, 0x800030ca, 0x800030cb, 0x800030cc,
+ 0x800030cd, 0x800030ce, 0x800030cf, 0x800030d2,
+ 0x800030d5, 0x800030d8, 0x800030db, 0x800030de,
+ 0x800030df, 0x800030e0, 0x800030e1, 0x800030e2,
+ 0x800030e4, 0x800030e6, 0x800030e8, 0x800030e9,
+ 0x800030ea, 0x800030eb, 0x800030ec, 0x800030ed,
+ 0x800030ef, 0x800030f0, 0x800030f1, 0x800030f2,
+ 0x000030a2, 0x000030d1, 0x000030fc, 0x800030c8,
+ 0x000030a2, 0x000030eb, 0x000030d5, 0x800030a1,
+ 0x000030a2, 0x000030f3, 0x000030da, 0x800030a2,
+ 0x000030a2, 0x000030fc, 0x800030eb, 0x000030a4,
+ 0x000030cb, 0x000030f3, 0x800030b0, 0x000030a4,
+ 0x000030f3, 0x800030c1, 0x000030a6, 0x000030a9,
+ 0x800030f3, 0x000030a8, 0x000030b9, 0x000030af,
+ 0x000030fc, 0x800030c9, 0x000030a8, 0x000030fc,
+ 0x000030ab, 0x800030fc, 0x000030aa, 0x000030f3,
+ 0x800030b9, 0x000030aa, 0x000030fc, 0x800030e0,
+ 0x000030ab, 0x000030a4, 0x800030ea, 0x000030ab,
+ 0x000030e9, 0x000030c3, 0x800030c8, 0x000030ab,
+ 0x000030ed, 0x000030ea, 0x800030fc, 0x000030ac,
+ 0x000030ed, 0x800030f3, 0x000030ac, 0x000030f3,
+ 0x800030de, 0x000030ae, 0x800030ac, 0x000030ae,
+ 0x000030cb, 0x800030fc, 0x000030ad, 0x000030e5,
+ 0x000030ea, 0x800030fc, 0x000030ae, 0x000030eb,
+ 0x000030c0, 0x800030fc, 0x000030ad, 0x800030ed,
+ 0x000030ad, 0x000030ed, 0x000030b0, 0x000030e9,
+ 0x800030e0, 0x000030ad, 0x000030ed, 0x000030e1,
+ 0x000030fc, 0x000030c8, 0x800030eb, 0x000030ad,
+ 0x000030ed, 0x000030ef, 0x000030c3, 0x800030c8,
+ 0x000030b0, 0x000030e9, 0x800030e0, 0x000030b0,
+ 0x000030e9, 0x000030e0, 0x000030c8, 0x800030f3,
+ 0x000030af, 0x000030eb, 0x000030bc, 0x000030a4,
+ 0x800030ed, 0x000030af, 0x000030ed, 0x000030fc,
+ 0x800030cd, 0x000030b1, 0x000030fc, 0x800030b9,
+ 0x000030b3, 0x000030eb, 0x800030ca, 0x000030b3,
+ 0x000030fc, 0x800030dd, 0x000030b5, 0x000030a4,
+ 0x000030af, 0x800030eb, 0x000030b5, 0x000030f3,
+ 0x000030c1, 0x000030fc, 0x800030e0, 0x000030b7,
+ 0x000030ea, 0x000030f3, 0x800030b0, 0x000030bb,
+ 0x000030f3, 0x800030c1, 0x000030bb, 0x000030f3,
+ 0x800030c8, 0x000030c0, 0x000030fc, 0x800030b9,
+ 0x000030c7, 0x800030b7, 0x000030c9, 0x800030eb,
+ 0x000030c8, 0x800030f3, 0x000030ca, 0x800030ce,
+ 0x000030ce, 0x000030c3, 0x800030c8, 0x000030cf,
+ 0x000030a4, 0x800030c4, 0x000030d1, 0x000030fc,
+ 0x000030bb, 0x000030f3, 0x800030c8, 0x000030d1,
+ 0x000030fc, 0x800030c4, 0x000030d0, 0x000030fc,
+ 0x000030ec, 0x800030eb, 0x000030d4, 0x000030a2,
+ 0x000030b9, 0x000030c8, 0x800030eb, 0x000030d4,
+ 0x000030af, 0x800030eb, 0x000030d4, 0x800030b3,
+ 0x000030d3, 0x800030eb, 0x000030d5, 0x000030a1,
+ 0x000030e9, 0x000030c3, 0x800030c9, 0x000030d5,
+ 0x000030a3, 0x000030fc, 0x800030c8, 0x000030d6,
+ 0x000030c3, 0x000030b7, 0x000030a7, 0x800030eb,
+ 0x000030d5, 0x000030e9, 0x800030f3, 0x000030d8,
+ 0x000030af, 0x000030bf, 0x000030fc, 0x800030eb,
+ 0x000030da, 0x800030bd, 0x000030da, 0x000030cb,
+ 0x800030d2, 0x000030d8, 0x000030eb, 0x800030c4,
+ 0x000030da, 0x000030f3, 0x800030b9, 0x000030da,
+ 0x000030fc, 0x800030b8, 0x000030d9, 0x000030fc,
+ 0x800030bf, 0x000030dd, 0x000030a4, 0x000030f3,
+ 0x800030c8, 0x000030dc, 0x000030eb, 0x800030c8,
+ 0x000030db, 0x800030f3, 0x000030dd, 0x000030f3,
+ 0x800030c9, 0x000030db, 0x000030fc, 0x800030eb,
+ 0x000030db, 0x000030fc, 0x800030f3, 0x000030de,
+ 0x000030a4, 0x000030af, 0x800030ed, 0x000030de,
+ 0x000030a4, 0x800030eb, 0x000030de, 0x000030c3,
+ 0x800030cf, 0x000030de, 0x000030eb, 0x800030af,
+ 0x000030de, 0x000030f3, 0x000030b7, 0x000030e7,
+ 0x800030f3, 0x000030df, 0x000030af, 0x000030ed,
+ 0x800030f3, 0x000030df, 0x800030ea, 0x000030df,
+ 0x000030ea, 0x000030d0, 0x000030fc, 0x800030eb,
+ 0x000030e1, 0x800030ac, 0x000030e1, 0x000030ac,
+ 0x000030c8, 0x800030f3, 0x000030e1, 0x000030fc,
+ 0x000030c8, 0x800030eb, 0x000030e4, 0x000030fc,
+ 0x800030c9, 0x000030e4, 0x000030fc, 0x800030eb,
+ 0x000030e6, 0x000030a2, 0x800030f3, 0x000030ea,
+ 0x000030c3, 0x000030c8, 0x800030eb, 0x000030ea,
+ 0x800030e9, 0x000030eb, 0x000030d4, 0x800030fc,
+ 0x000030eb, 0x000030fc, 0x000030d6, 0x800030eb,
+ 0x000030ec, 0x800030e0, 0x000030ec, 0x000030f3,
+ 0x000030c8, 0x000030b2, 0x800030f3, 0x000030ef,
+ 0x000030c3, 0x800030c8, 0x00000030, 0x800070b9,
+ 0x00000031, 0x800070b9, 0x00000032, 0x800070b9,
+ 0x00000033, 0x800070b9, 0x00000034, 0x800070b9,
+ 0x00000035, 0x800070b9, 0x00000036, 0x800070b9,
+ 0x00000037, 0x800070b9, 0x00000038, 0x800070b9,
+ 0x00000039, 0x800070b9, 0x00000031, 0x00000030,
+ 0x800070b9, 0x00000031, 0x00000031, 0x800070b9,
+ 0x00000031, 0x00000032, 0x800070b9, 0x00000031,
+ 0x00000033, 0x800070b9, 0x00000031, 0x00000034,
+ 0x800070b9, 0x00000031, 0x00000035, 0x800070b9,
+ 0x00000031, 0x00000036, 0x800070b9, 0x00000031,
+ 0x00000037, 0x800070b9, 0x00000031, 0x00000038,
+ 0x800070b9, 0x00000031, 0x00000039, 0x800070b9,
+ 0x00000032, 0x00000030, 0x800070b9, 0x00000032,
+ 0x00000031, 0x800070b9, 0x00000032, 0x00000032,
+ 0x800070b9, 0x00000032, 0x00000033, 0x800070b9,
+ 0x00000032, 0x00000034, 0x800070b9, 0x00000068,
+ 0x00000050, 0x80000061, 0x00000064, 0x80000061,
+ 0x00000041, 0x80000055, 0x00000062, 0x00000061,
+ 0x80000072, 0x0000006f, 0x80000056, 0x00000070,
+ 0x80000063, 0x00000064, 0x8000006d, 0x00000064,
+ 0x0000006d, 0x800000b2, 0x00000064, 0x0000006d,
+ 0x800000b3, 0x00000049, 0x80000055, 0x00005e73,
+ 0x80006210, 0x0000662d, 0x8000548c, 0x00005927,
+ 0x80006b63, 0x0000660e, 0x80006cbb, 0x0000682a,
+ 0x00005f0f, 0x00004f1a, 0x8000793e, 0x00000070,
+ 0x80000041, 0x0000006e, 0x80000041, 0x000003bc,
+ 0x80000041, 0x0000006d, 0x80000041, 0x0000006b,
+ 0x80000041, 0x0000004b, 0x80000042, 0x0000004d,
+ 0x80000042, 0x00000047, 0x80000042, 0x00000063,
+ 0x00000061, 0x8000006c, 0x0000006b, 0x00000063,
+ 0x00000061, 0x8000006c, 0x00000070, 0x80000046,
+ 0x0000006e, 0x80000046, 0x000003bc, 0x80000046,
+ 0x000003bc, 0x80000067, 0x0000006d, 0x80000067,
+ 0x0000006b, 0x80000067, 0x00000048, 0x8000007a,
+ 0x0000006b, 0x00000048, 0x8000007a, 0x0000004d,
+ 0x00000048, 0x8000007a, 0x00000047, 0x00000048,
+ 0x8000007a, 0x00000054, 0x00000048, 0x8000007a,
+ 0x000003bc, 0x80002113, 0x0000006d, 0x80002113,
+ 0x00000064, 0x80002113, 0x0000006b, 0x80002113,
+ 0x00000066, 0x8000006d, 0x0000006e, 0x8000006d,
+ 0x000003bc, 0x8000006d, 0x0000006d, 0x8000006d,
+ 0x00000063, 0x8000006d, 0x0000006b, 0x8000006d,
+ 0x0000006d, 0x0000006d, 0x800000b2, 0x00000063,
+ 0x0000006d, 0x800000b2, 0x0000006d, 0x800000b2,
+ 0x0000006b, 0x0000006d, 0x800000b2, 0x0000006d,
+ 0x0000006d, 0x800000b3, 0x00000063, 0x0000006d,
+ 0x800000b3, 0x0000006d, 0x800000b3, 0x0000006b,
+ 0x0000006d, 0x800000b3, 0x0000006d, 0x00002215,
+ 0x80000073, 0x0000006d, 0x00002215, 0x00000073,
+ 0x800000b2, 0x00000050, 0x80000061, 0x0000006b,
+ 0x00000050, 0x80000061, 0x0000004d, 0x00000050,
+ 0x80000061, 0x00000047, 0x00000050, 0x80000061,
+ 0x00000072, 0x00000061, 0x80000064, 0x00000072,
+ 0x00000061, 0x00000064, 0x00002215, 0x80000073,
+ 0x00000072, 0x00000061, 0x00000064, 0x00002215,
+ 0x00000073, 0x800000b2, 0x00000070, 0x80000073,
+ 0x0000006e, 0x80000073, 0x000003bc, 0x80000073,
+ 0x0000006d, 0x80000073, 0x00000070, 0x80000056,
+ 0x0000006e, 0x80000056, 0x000003bc, 0x80000056,
+ 0x0000006d, 0x80000056, 0x0000006b, 0x80000056,
+ 0x0000004d, 0x80000056, 0x00000070, 0x80000057,
+ 0x0000006e, 0x80000057, 0x000003bc, 0x80000057,
+ 0x0000006d, 0x80000057, 0x0000006b, 0x80000057,
+ 0x0000004d, 0x80000057, 0x0000006b, 0x800003a9,
+ 0x0000004d, 0x800003a9, 0x00000061, 0x0000002e,
+ 0x0000006d, 0x8000002e, 0x00000042, 0x80000071,
+ 0x00000063, 0x80000063, 0x00000063, 0x80000064,
+ 0x00000043, 0x00002215, 0x0000006b, 0x80000067,
+ 0x00000043, 0x0000006f, 0x8000002e, 0x00000064,
+ 0x80000042, 0x00000047, 0x80000079, 0x00000068,
+ 0x80000061, 0x00000048, 0x80000050, 0x00000069,
+ 0x8000006e, 0x0000004b, 0x8000004b, 0x0000004b,
+ 0x8000004d, 0x0000006b, 0x80000074, 0x0000006c,
+ 0x8000006d, 0x0000006c, 0x8000006e, 0x0000006c,
+ 0x0000006f, 0x80000067, 0x0000006c, 0x80000078,
+ 0x0000006d, 0x80000062, 0x0000006d, 0x00000069,
+ 0x8000006c, 0x0000006d, 0x0000006f, 0x8000006c,
+ 0x00000050, 0x80000048, 0x00000070, 0x0000002e,
+ 0x0000006d, 0x8000002e, 0x00000050, 0x00000050,
+ 0x8000004d, 0x00000050, 0x80000052, 0x00000073,
+ 0x80000072, 0x00000053, 0x80000076, 0x00000057,
+ 0x80000062, 0x00000056, 0x00002215, 0x8000006d,
+ 0x00000041, 0x00002215, 0x8000006d, 0x00000031,
+ 0x800065e5, 0x00000032, 0x800065e5, 0x00000033,
+ 0x800065e5, 0x00000034, 0x800065e5, 0x00000035,
+ 0x800065e5, 0x00000036, 0x800065e5, 0x00000037,
+ 0x800065e5, 0x00000038, 0x800065e5, 0x00000039,
+ 0x800065e5, 0x00000031, 0x00000030, 0x800065e5,
+ 0x00000031, 0x00000031, 0x800065e5, 0x00000031,
+ 0x00000032, 0x800065e5, 0x00000031, 0x00000033,
+ 0x800065e5, 0x00000031, 0x00000034, 0x800065e5,
+ 0x00000031, 0x00000035, 0x800065e5, 0x00000031,
+ 0x00000036, 0x800065e5, 0x00000031, 0x00000037,
+ 0x800065e5, 0x00000031, 0x00000038, 0x800065e5,
+ 0x00000031, 0x00000039, 0x800065e5, 0x00000032,
+ 0x00000030, 0x800065e5, 0x00000032, 0x00000031,
+ 0x800065e5, 0x00000032, 0x00000032, 0x800065e5,
+ 0x00000032, 0x00000033, 0x800065e5, 0x00000032,
+ 0x00000034, 0x800065e5, 0x00000032, 0x00000035,
+ 0x800065e5, 0x00000032, 0x00000036, 0x800065e5,
+ 0x00000032, 0x00000037, 0x800065e5, 0x00000032,
+ 0x00000038, 0x800065e5, 0x00000032, 0x00000039,
+ 0x800065e5, 0x00000033, 0x00000030, 0x800065e5,
+ 0x00000033, 0x00000031, 0x800065e5, 0x00000067,
+ 0x00000061, 0x8000006c, 0x80008c48, 0x800066f4,
+ 0x80008eca, 0x80008cc8, 0x80006ed1, 0x80004e32,
+ 0x800053e5, 0x80009f9c, 0x80009f9c, 0x80005951,
+ 0x800091d1, 0x80005587, 0x80005948, 0x800061f6,
+ 0x80007669, 0x80007f85, 0x8000863f, 0x800087ba,
+ 0x800088f8, 0x8000908f, 0x80006a02, 0x80006d1b,
+ 0x800070d9, 0x800073de, 0x8000843d, 0x8000916a,
+ 0x800099f1, 0x80004e82, 0x80005375, 0x80006b04,
+ 0x8000721b, 0x8000862d, 0x80009e1e, 0x80005d50,
+ 0x80006feb, 0x800085cd, 0x80008964, 0x800062c9,
+ 0x800081d8, 0x8000881f, 0x80005eca, 0x80006717,
+ 0x80006d6a, 0x800072fc, 0x800090ce, 0x80004f86,
+ 0x800051b7, 0x800052de, 0x800064c4, 0x80006ad3,
+ 0x80007210, 0x800076e7, 0x80008001, 0x80008606,
+ 0x8000865c, 0x80008def, 0x80009732, 0x80009b6f,
+ 0x80009dfa, 0x8000788c, 0x8000797f, 0x80007da0,
+ 0x800083c9, 0x80009304, 0x80009e7f, 0x80008ad6,
+ 0x800058df, 0x80005f04, 0x80007c60, 0x8000807e,
+ 0x80007262, 0x800078ca, 0x80008cc2, 0x800096f7,
+ 0x800058d8, 0x80005c62, 0x80006a13, 0x80006dda,
+ 0x80006f0f, 0x80007d2f, 0x80007e37, 0x8000964b,
+ 0x800052d2, 0x8000808b, 0x800051dc, 0x800051cc,
+ 0x80007a1c, 0x80007dbe, 0x800083f1, 0x80009675,
+ 0x80008b80, 0x800062cf, 0x80006a02, 0x80008afe,
+ 0x80004e39, 0x80005be7, 0x80006012, 0x80007387,
+ 0x80007570, 0x80005317, 0x800078fb, 0x80004fbf,
+ 0x80005fa9, 0x80004e0d, 0x80006ccc, 0x80006578,
+ 0x80007d22, 0x800053c3, 0x8000585e, 0x80007701,
+ 0x80008449, 0x80008aaa, 0x80006bba, 0x80008fb0,
+ 0x80006c88, 0x800062fe, 0x800082e5, 0x800063a0,
+ 0x80007565, 0x80004eae, 0x80005169, 0x800051c9,
+ 0x80006881, 0x80007ce7, 0x8000826f, 0x80008ad2,
+ 0x800091cf, 0x800052f5, 0x80005442, 0x80005973,
+ 0x80005eec, 0x800065c5, 0x80006ffe, 0x8000792a,
+ 0x800095ad, 0x80009a6a, 0x80009e97, 0x80009ece,
+ 0x8000529b, 0x800066c6, 0x80006b77, 0x80008f62,
+ 0x80005e74, 0x80006190, 0x80006200, 0x8000649a,
+ 0x80006f23, 0x80007149, 0x80007489, 0x800079ca,
+ 0x80007df4, 0x8000806f, 0x80008f26, 0x800084ee,
+ 0x80009023, 0x8000934a, 0x80005217, 0x800052a3,
+ 0x800054bd, 0x800070c8, 0x800088c2, 0x80008aaa,
+ 0x80005ec9, 0x80005ff5, 0x8000637b, 0x80006bae,
+ 0x80007c3e, 0x80007375, 0x80004ee4, 0x800056f9,
+ 0x80005be7, 0x80005dba, 0x8000601c, 0x800073b2,
+ 0x80007469, 0x80007f9a, 0x80008046, 0x80009234,
+ 0x800096f6, 0x80009748, 0x80009818, 0x80004f8b,
+ 0x800079ae, 0x800091b4, 0x800096b8, 0x800060e1,
+ 0x80004e86, 0x800050da, 0x80005bee, 0x80005c3f,
+ 0x80006599, 0x80006a02, 0x800071ce, 0x80007642,
+ 0x800084fc, 0x8000907c, 0x80009f8d, 0x80006688,
+ 0x8000962e, 0x80005289, 0x8000677b, 0x800067f3,
+ 0x80006d41, 0x80006e9c, 0x80007409, 0x80007559,
+ 0x8000786b, 0x80007d10, 0x8000985e, 0x8000516d,
+ 0x8000622e, 0x80009678, 0x8000502b, 0x80005d19,
+ 0x80006dea, 0x80008f2a, 0x80005f8b, 0x80006144,
+ 0x80006817, 0x80007387, 0x80009686, 0x80005229,
+ 0x8000540f, 0x80005c65, 0x80006613, 0x8000674e,
+ 0x800068a8, 0x80006ce5, 0x80007406, 0x800075e2,
+ 0x80007f79, 0x800088cf, 0x800088e1, 0x800091cc,
+ 0x800096e2, 0x8000533f, 0x80006eba, 0x8000541d,
+ 0x800071d0, 0x80007498, 0x800085fa, 0x800096a3,
+ 0x80009c57, 0x80009e9f, 0x80006797, 0x80006dcb,
+ 0x800081e8, 0x80007acb, 0x80007b20, 0x80007c92,
+ 0x800072c0, 0x80007099, 0x80008b58, 0x80004ec0,
+ 0x80008336, 0x8000523a, 0x80005207, 0x80005ea6,
+ 0x800062d3, 0x80007cd6, 0x80005b85, 0x80006d1e,
+ 0x800066b4, 0x80008f3b, 0x8000884c, 0x8000964d,
+ 0x8000898b, 0x80005ed3, 0x80005140, 0x800055c0,
+ 0x8000585a, 0x80006674, 0x800051de, 0x8000732a,
+ 0x800076ca, 0x8000793c, 0x8000795e, 0x80007965,
+ 0x8000798f, 0x80009756, 0x80007cbe, 0x80007fbd,
+ 0x80008612, 0x80008af8, 0x80009038, 0x800090fd,
+ 0x800098ef, 0x800098fc, 0x80009928, 0x80009db4,
+ 0x80004fae, 0x800050e7, 0x8000514d, 0x800052c9,
+ 0x800052e4, 0x80005351, 0x8000559d, 0x80005606,
+ 0x80005668, 0x80005840, 0x800058a8, 0x80005c64,
+ 0x80005c6e, 0x80006094, 0x80006168, 0x8000618e,
+ 0x800061f2, 0x8000654f, 0x800065e2, 0x80006691,
+ 0x80006885, 0x80006d77, 0x80006e1a, 0x80006f22,
+ 0x8000716e, 0x8000722b, 0x80007422, 0x80007891,
+ 0x8000793e, 0x80007949, 0x80007948, 0x80007950,
+ 0x80007956, 0x8000795d, 0x8000798d, 0x8000798e,
+ 0x80007a40, 0x80007a81, 0x80007bc0, 0x80007df4,
+ 0x80007e09, 0x80007e41, 0x80007f72, 0x80008005,
+ 0x800081ed, 0x80008279, 0x80008279, 0x80008457,
+ 0x80008910, 0x80008996, 0x80008b01, 0x80008b39,
+ 0x80008cd3, 0x80008d08, 0x80008fb6, 0x80009038,
+ 0x800096e3, 0x800097ff, 0x8000983b, 0x80004e26,
+ 0x800051b5, 0x80005168, 0x80004f80, 0x80005145,
+ 0x80005180, 0x800052c7, 0x800052fa, 0x8000559d,
+ 0x80005555, 0x80005599, 0x800055e2, 0x8000585a,
+ 0x800058b3, 0x80005944, 0x80005954, 0x80005a62,
+ 0x80005b28, 0x80005ed2, 0x80005ed9, 0x80005f69,
+ 0x80005fad, 0x800060d8, 0x8000614e, 0x80006108,
+ 0x8000618e, 0x80006160, 0x800061f2, 0x80006234,
+ 0x800063c4, 0x8000641c, 0x80006452, 0x80006556,
+ 0x80006674, 0x80006717, 0x8000671b, 0x80006756,
+ 0x80006b79, 0x80006bba, 0x80006d41, 0x80006edb,
+ 0x80006ecb, 0x80006f22, 0x8000701e, 0x8000716e,
+ 0x800077a7, 0x80007235, 0x800072af, 0x8000732a,
+ 0x80007471, 0x80007506, 0x8000753b, 0x8000761d,
+ 0x8000761f, 0x800076ca, 0x800076db, 0x800076f4,
+ 0x8000774a, 0x80007740, 0x800078cc, 0x80007ab1,
+ 0x80007bc0, 0x80007c7b, 0x80007d5b, 0x80007df4,
+ 0x80007f3e, 0x80008005, 0x80008352, 0x800083ef,
+ 0x80008779, 0x80008941, 0x80008986, 0x80008996,
+ 0x80008abf, 0x80008af8, 0x80008acb, 0x80008b01,
+ 0x80008afe, 0x80008aed, 0x80008b39, 0x80008b8a,
+ 0x80008d08, 0x80008f38, 0x80009072, 0x80009199,
+ 0x80009276, 0x8000967c, 0x800096e3, 0x80009756,
+ 0x800097db, 0x800097ff, 0x8000980b, 0x8000983b,
+ 0x80009b12, 0x80009f9c, 0x8002284a, 0x80022844,
+ 0x800233d5, 0x80003b9d, 0x80004018, 0x80004039,
+ 0x80025249, 0x80025cd0, 0x80027ed3, 0x80009f43,
+ 0x80009f8e, 0x00000066, 0x80000066, 0x00000066,
+ 0x80000069, 0x00000066, 0x8000006c, 0x00000066,
+ 0x00000066, 0x80000069, 0x00000066, 0x00000066,
+ 0x8000006c, 0x0000017f, 0x80000074, 0x00000073,
+ 0x80000074, 0x00000574, 0x80000576, 0x00000574,
+ 0x80000565, 0x00000574, 0x8000056b, 0x0000057e,
+ 0x80000576, 0x00000574, 0x8000056d, 0x000005d9,
+ 0x800005b4, 0x000005f2, 0x800005b7, 0x800005e2,
+ 0x800005d0, 0x800005d3, 0x800005d4, 0x800005db,
+ 0x800005dc, 0x800005dd, 0x800005e8, 0x800005ea,
+ 0x8000002b, 0x000005e9, 0x800005c1, 0x000005e9,
+ 0x800005c2, 0x0000fb49, 0x800005c1, 0x0000fb49,
+ 0x800005c2, 0x000005d0, 0x800005b7, 0x000005d0,
+ 0x800005b8, 0x000005d0, 0x800005bc, 0x000005d1,
+ 0x800005bc, 0x000005d2, 0x800005bc, 0x000005d3,
+ 0x800005bc, 0x000005d4, 0x800005bc, 0x000005d5,
+ 0x800005bc, 0x000005d6, 0x800005bc, 0x000005d8,
+ 0x800005bc, 0x000005d9, 0x800005bc, 0x000005da,
+ 0x800005bc, 0x000005db, 0x800005bc, 0x000005dc,
+ 0x800005bc, 0x000005de, 0x800005bc, 0x000005e0,
+ 0x800005bc, 0x000005e1, 0x800005bc, 0x000005e3,
+ 0x800005bc, 0x000005e4, 0x800005bc, 0x000005e6,
+ 0x800005bc, 0x000005e7, 0x800005bc, 0x000005e8,
+ 0x800005bc, 0x000005e9, 0x800005bc, 0x000005ea,
+ 0x800005bc, 0x000005d5, 0x800005b9, 0x000005d1,
+ 0x800005bf, 0x000005db, 0x800005bf, 0x000005e4,
+ 0x800005bf, 0x000005d0, 0x800005dc, 0x80000671,
+ 0x80000671, 0x8000067b, 0x8000067b, 0x8000067b,
+ 0x8000067b, 0x8000067e, 0x8000067e, 0x8000067e,
+ 0x8000067e, 0x80000680, 0x80000680, 0x80000680,
+ 0x80000680, 0x8000067a, 0x8000067a, 0x8000067a,
+ 0x8000067a, 0x8000067f, 0x8000067f, 0x8000067f,
+ 0x8000067f, 0x80000679, 0x80000679, 0x80000679,
+ 0x80000679, 0x800006a4, 0x800006a4, 0x800006a4,
+ 0x800006a4, 0x800006a6, 0x800006a6, 0x800006a6,
+ 0x800006a6, 0x80000684, 0x80000684, 0x80000684,
+ 0x80000684, 0x80000683, 0x80000683, 0x80000683,
+ 0x80000683, 0x80000686, 0x80000686, 0x80000686,
+ 0x80000686, 0x80000687, 0x80000687, 0x80000687,
+ 0x80000687, 0x8000068d, 0x8000068d, 0x8000068c,
+ 0x8000068c, 0x8000068e, 0x8000068e, 0x80000688,
+ 0x80000688, 0x80000698, 0x80000698, 0x80000691,
+ 0x80000691, 0x800006a9, 0x800006a9, 0x800006a9,
+ 0x800006a9, 0x800006af, 0x800006af, 0x800006af,
+ 0x800006af, 0x800006b3, 0x800006b3, 0x800006b3,
+ 0x800006b3, 0x800006b1, 0x800006b1, 0x800006b1,
+ 0x800006b1, 0x800006ba, 0x800006ba, 0x800006bb,
+ 0x800006bb, 0x800006bb, 0x800006bb, 0x800006c0,
+ 0x800006c0, 0x800006c1, 0x800006c1, 0x800006c1,
+ 0x800006c1, 0x800006be, 0x800006be, 0x800006be,
+ 0x800006be, 0x800006d2, 0x800006d2, 0x800006d3,
+ 0x800006d3, 0x800006ad, 0x800006ad, 0x800006ad,
+ 0x800006ad, 0x800006c7, 0x800006c7, 0x800006c6,
+ 0x800006c6, 0x800006c8, 0x800006c8, 0x80000677,
+ 0x800006cb, 0x800006cb, 0x800006c5, 0x800006c5,
+ 0x800006c9, 0x800006c9, 0x800006d0, 0x800006d0,
+ 0x800006d0, 0x800006d0, 0x80000649, 0x80000649,
+ 0x00000626, 0x80000627, 0x00000626, 0x80000627,
+ 0x00000626, 0x800006d5, 0x00000626, 0x800006d5,
+ 0x00000626, 0x80000648, 0x00000626, 0x80000648,
+ 0x00000626, 0x800006c7, 0x00000626, 0x800006c7,
+ 0x00000626, 0x800006c6, 0x00000626, 0x800006c6,
+ 0x00000626, 0x800006c8, 0x00000626, 0x800006c8,
+ 0x00000626, 0x800006d0, 0x00000626, 0x800006d0,
+ 0x00000626, 0x800006d0, 0x00000626, 0x80000649,
+ 0x00000626, 0x80000649, 0x00000626, 0x80000649,
+ 0x800006cc, 0x800006cc, 0x800006cc, 0x800006cc,
+ 0x00000626, 0x8000062c, 0x00000626, 0x8000062d,
+ 0x00000626, 0x80000645, 0x00000626, 0x80000649,
+ 0x00000626, 0x8000064a, 0x00000628, 0x8000062c,
+ 0x00000628, 0x8000062d, 0x00000628, 0x8000062e,
+ 0x00000628, 0x80000645, 0x00000628, 0x80000649,
+ 0x00000628, 0x8000064a, 0x0000062a, 0x8000062c,
+ 0x0000062a, 0x8000062d, 0x0000062a, 0x8000062e,
+ 0x0000062a, 0x80000645, 0x0000062a, 0x80000649,
+ 0x0000062a, 0x8000064a, 0x0000062b, 0x8000062c,
+ 0x0000062b, 0x80000645, 0x0000062b, 0x80000649,
+ 0x0000062b, 0x8000064a, 0x0000062c, 0x8000062d,
+ 0x0000062c, 0x80000645, 0x0000062d, 0x8000062c,
+ 0x0000062d, 0x80000645, 0x0000062e, 0x8000062c,
+ 0x0000062e, 0x8000062d, 0x0000062e, 0x80000645,
+ 0x00000633, 0x8000062c, 0x00000633, 0x8000062d,
+ 0x00000633, 0x8000062e, 0x00000633, 0x80000645,
+ 0x00000635, 0x8000062d, 0x00000635, 0x80000645,
+ 0x00000636, 0x8000062c, 0x00000636, 0x8000062d,
+ 0x00000636, 0x8000062e, 0x00000636, 0x80000645,
+ 0x00000637, 0x8000062d, 0x00000637, 0x80000645,
+ 0x00000638, 0x80000645, 0x00000639, 0x8000062c,
+ 0x00000639, 0x80000645, 0x0000063a, 0x8000062c,
+ 0x0000063a, 0x80000645, 0x00000641, 0x8000062c,
+ 0x00000641, 0x8000062d, 0x00000641, 0x8000062e,
+ 0x00000641, 0x80000645, 0x00000641, 0x80000649,
+ 0x00000641, 0x8000064a, 0x00000642, 0x8000062d,
+ 0x00000642, 0x80000645, 0x00000642, 0x80000649,
+ 0x00000642, 0x8000064a, 0x00000643, 0x80000627,
+ 0x00000643, 0x8000062c, 0x00000643, 0x8000062d,
+ 0x00000643, 0x8000062e, 0x00000643, 0x80000644,
+ 0x00000643, 0x80000645, 0x00000643, 0x80000649,
+ 0x00000643, 0x8000064a, 0x00000644, 0x8000062c,
+ 0x00000644, 0x8000062d, 0x00000644, 0x8000062e,
+ 0x00000644, 0x80000645, 0x00000644, 0x80000649,
+ 0x00000644, 0x8000064a, 0x00000645, 0x8000062c,
+ 0x00000645, 0x8000062d, 0x00000645, 0x8000062e,
+ 0x00000645, 0x80000645, 0x00000645, 0x80000649,
+ 0x00000645, 0x8000064a, 0x00000646, 0x8000062c,
+ 0x00000646, 0x8000062d, 0x00000646, 0x8000062e,
+ 0x00000646, 0x80000645, 0x00000646, 0x80000649,
+ 0x00000646, 0x8000064a, 0x00000647, 0x8000062c,
+ 0x00000647, 0x80000645, 0x00000647, 0x80000649,
+ 0x00000647, 0x8000064a, 0x0000064a, 0x8000062c,
+ 0x0000064a, 0x8000062d, 0x0000064a, 0x8000062e,
+ 0x0000064a, 0x80000645, 0x0000064a, 0x80000649,
+ 0x0000064a, 0x8000064a, 0x00000630, 0x80000670,
+ 0x00000631, 0x80000670, 0x00000649, 0x80000670,
+ 0x00000020, 0x0000064c, 0x80000651, 0x00000020,
+ 0x0000064d, 0x80000651, 0x00000020, 0x0000064e,
+ 0x80000651, 0x00000020, 0x0000064f, 0x80000651,
+ 0x00000020, 0x00000650, 0x80000651, 0x00000020,
+ 0x00000651, 0x80000670, 0x00000626, 0x80000631,
+ 0x00000626, 0x80000632, 0x00000626, 0x80000645,
+ 0x00000626, 0x80000646, 0x00000626, 0x80000649,
+ 0x00000626, 0x8000064a, 0x00000628, 0x80000631,
+ 0x00000628, 0x80000632, 0x00000628, 0x80000645,
+ 0x00000628, 0x80000646, 0x00000628, 0x80000649,
+ 0x00000628, 0x8000064a, 0x0000062a, 0x80000631,
+ 0x0000062a, 0x80000632, 0x0000062a, 0x80000645,
+ 0x0000062a, 0x80000646, 0x0000062a, 0x80000649,
+ 0x0000062a, 0x8000064a, 0x0000062b, 0x80000631,
+ 0x0000062b, 0x80000632, 0x0000062b, 0x80000645,
+ 0x0000062b, 0x80000646, 0x0000062b, 0x80000649,
+ 0x0000062b, 0x8000064a, 0x00000641, 0x80000649,
+ 0x00000641, 0x8000064a, 0x00000642, 0x80000649,
+ 0x00000642, 0x8000064a, 0x00000643, 0x80000627,
+ 0x00000643, 0x80000644, 0x00000643, 0x80000645,
+ 0x00000643, 0x80000649, 0x00000643, 0x8000064a,
+ 0x00000644, 0x80000645, 0x00000644, 0x80000649,
+ 0x00000644, 0x8000064a, 0x00000645, 0x80000627,
+ 0x00000645, 0x80000645, 0x00000646, 0x80000631,
+ 0x00000646, 0x80000632, 0x00000646, 0x80000645,
+ 0x00000646, 0x80000646, 0x00000646, 0x80000649,
+ 0x00000646, 0x8000064a, 0x00000649, 0x80000670,
+ 0x0000064a, 0x80000631, 0x0000064a, 0x80000632,
+ 0x0000064a, 0x80000645, 0x0000064a, 0x80000646,
+ 0x0000064a, 0x80000649, 0x0000064a, 0x8000064a,
+ 0x00000626, 0x8000062c, 0x00000626, 0x8000062d,
+ 0x00000626, 0x8000062e, 0x00000626, 0x80000645,
+ 0x00000626, 0x80000647, 0x00000628, 0x8000062c,
+ 0x00000628, 0x8000062d, 0x00000628, 0x8000062e,
+ 0x00000628, 0x80000645, 0x00000628, 0x80000647,
+ 0x0000062a, 0x8000062c, 0x0000062a, 0x8000062d,
+ 0x0000062a, 0x8000062e, 0x0000062a, 0x80000645,
+ 0x0000062a, 0x80000647, 0x0000062b, 0x80000645,
+ 0x0000062c, 0x8000062d, 0x0000062c, 0x80000645,
+ 0x0000062d, 0x8000062c, 0x0000062d, 0x80000645,
+ 0x0000062e, 0x8000062c, 0x0000062e, 0x80000645,
+ 0x00000633, 0x8000062c, 0x00000633, 0x8000062d,
+ 0x00000633, 0x8000062e, 0x00000633, 0x80000645,
+ 0x00000635, 0x8000062d, 0x00000635, 0x8000062e,
+ 0x00000635, 0x80000645, 0x00000636, 0x8000062c,
+ 0x00000636, 0x8000062d, 0x00000636, 0x8000062e,
+ 0x00000636, 0x80000645, 0x00000637, 0x8000062d,
+ 0x00000638, 0x80000645, 0x00000639, 0x8000062c,
+ 0x00000639, 0x80000645, 0x0000063a, 0x8000062c,
+ 0x0000063a, 0x80000645, 0x00000641, 0x8000062c,
+ 0x00000641, 0x8000062d, 0x00000641, 0x8000062e,
+ 0x00000641, 0x80000645, 0x00000642, 0x8000062d,
+ 0x00000642, 0x80000645, 0x00000643, 0x8000062c,
+ 0x00000643, 0x8000062d, 0x00000643, 0x8000062e,
+ 0x00000643, 0x80000644, 0x00000643, 0x80000645,
+ 0x00000644, 0x8000062c, 0x00000644, 0x8000062d,
+ 0x00000644, 0x8000062e, 0x00000644, 0x80000645,
+ 0x00000644, 0x80000647, 0x00000645, 0x8000062c,
+ 0x00000645, 0x8000062d, 0x00000645, 0x8000062e,
+ 0x00000645, 0x80000645, 0x00000646, 0x8000062c,
+ 0x00000646, 0x8000062d, 0x00000646, 0x8000062e,
+ 0x00000646, 0x80000645, 0x00000646, 0x80000647,
+ 0x00000647, 0x8000062c, 0x00000647, 0x80000645,
+ 0x00000647, 0x80000670, 0x0000064a, 0x8000062c,
+ 0x0000064a, 0x8000062d, 0x0000064a, 0x8000062e,
+ 0x0000064a, 0x80000645, 0x0000064a, 0x80000647,
+ 0x00000626, 0x80000645, 0x00000626, 0x80000647,
+ 0x00000628, 0x80000645, 0x00000628, 0x80000647,
+ 0x0000062a, 0x80000645, 0x0000062a, 0x80000647,
+ 0x0000062b, 0x80000645, 0x0000062b, 0x80000647,
+ 0x00000633, 0x80000645, 0x00000633, 0x80000647,
+ 0x00000634, 0x80000645, 0x00000634, 0x80000647,
+ 0x00000643, 0x80000644, 0x00000643, 0x80000645,
+ 0x00000644, 0x80000645, 0x00000646, 0x80000645,
+ 0x00000646, 0x80000647, 0x0000064a, 0x80000645,
+ 0x0000064a, 0x80000647, 0x00000640, 0x0000064e,
+ 0x80000651, 0x00000640, 0x0000064f, 0x80000651,
+ 0x00000640, 0x00000650, 0x80000651, 0x00000637,
+ 0x80000649, 0x00000637, 0x8000064a, 0x00000639,
+ 0x80000649, 0x00000639, 0x8000064a, 0x0000063a,
+ 0x80000649, 0x0000063a, 0x8000064a, 0x00000633,
+ 0x80000649, 0x00000633, 0x8000064a, 0x00000634,
+ 0x80000649, 0x00000634, 0x8000064a, 0x0000062d,
+ 0x80000649, 0x0000062d, 0x8000064a, 0x0000062c,
+ 0x80000649, 0x0000062c, 0x8000064a, 0x0000062e,
+ 0x80000649, 0x0000062e, 0x8000064a, 0x00000635,
+ 0x80000649, 0x00000635, 0x8000064a, 0x00000636,
+ 0x80000649, 0x00000636, 0x8000064a, 0x00000634,
+ 0x8000062c, 0x00000634, 0x8000062d, 0x00000634,
+ 0x8000062e, 0x00000634, 0x80000645, 0x00000634,
+ 0x80000631, 0x00000633, 0x80000631, 0x00000635,
+ 0x80000631, 0x00000636, 0x80000631, 0x00000637,
+ 0x80000649, 0x00000637, 0x8000064a, 0x00000639,
+ 0x80000649, 0x00000639, 0x8000064a, 0x0000063a,
+ 0x80000649, 0x0000063a, 0x8000064a, 0x00000633,
+ 0x80000649, 0x00000633, 0x8000064a, 0x00000634,
+ 0x80000649, 0x00000634, 0x8000064a, 0x0000062d,
+ 0x80000649, 0x0000062d, 0x8000064a, 0x0000062c,
+ 0x80000649, 0x0000062c, 0x8000064a, 0x0000062e,
+ 0x80000649, 0x0000062e, 0x8000064a, 0x00000635,
+ 0x80000649, 0x00000635, 0x8000064a, 0x00000636,
+ 0x80000649, 0x00000636, 0x8000064a, 0x00000634,
+ 0x8000062c, 0x00000634, 0x8000062d, 0x00000634,
+ 0x8000062e, 0x00000634, 0x80000645, 0x00000634,
+ 0x80000631, 0x00000633, 0x80000631, 0x00000635,
+ 0x80000631, 0x00000636, 0x80000631, 0x00000634,
+ 0x8000062c, 0x00000634, 0x8000062d, 0x00000634,
+ 0x8000062e, 0x00000634, 0x80000645, 0x00000633,
+ 0x80000647, 0x00000634, 0x80000647, 0x00000637,
+ 0x80000645, 0x00000633, 0x8000062c, 0x00000633,
+ 0x8000062d, 0x00000633, 0x8000062e, 0x00000634,
+ 0x8000062c, 0x00000634, 0x8000062d, 0x00000634,
+ 0x8000062e, 0x00000637, 0x80000645, 0x00000638,
+ 0x80000645, 0x00000627, 0x8000064b, 0x00000627,
+ 0x8000064b, 0x0000062a, 0x0000062c, 0x80000645,
+ 0x0000062a, 0x0000062d, 0x8000062c, 0x0000062a,
+ 0x0000062d, 0x8000062c, 0x0000062a, 0x0000062d,
+ 0x80000645, 0x0000062a, 0x0000062e, 0x80000645,
+ 0x0000062a, 0x00000645, 0x8000062c, 0x0000062a,
+ 0x00000645, 0x8000062d, 0x0000062a, 0x00000645,
+ 0x8000062e, 0x0000062c, 0x00000645, 0x8000062d,
+ 0x0000062c, 0x00000645, 0x8000062d, 0x0000062d,
+ 0x00000645, 0x8000064a, 0x0000062d, 0x00000645,
+ 0x80000649, 0x00000633, 0x0000062d, 0x8000062c,
+ 0x00000633, 0x0000062c, 0x8000062d, 0x00000633,
+ 0x0000062c, 0x80000649, 0x00000633, 0x00000645,
+ 0x8000062d, 0x00000633, 0x00000645, 0x8000062d,
+ 0x00000633, 0x00000645, 0x8000062c, 0x00000633,
+ 0x00000645, 0x80000645, 0x00000633, 0x00000645,
+ 0x80000645, 0x00000635, 0x0000062d, 0x8000062d,
+ 0x00000635, 0x0000062d, 0x8000062d, 0x00000635,
+ 0x00000645, 0x80000645, 0x00000634, 0x0000062d,
+ 0x80000645, 0x00000634, 0x0000062d, 0x80000645,
+ 0x00000634, 0x0000062c, 0x8000064a, 0x00000634,
+ 0x00000645, 0x8000062e, 0x00000634, 0x00000645,
+ 0x8000062e, 0x00000634, 0x00000645, 0x80000645,
+ 0x00000634, 0x00000645, 0x80000645, 0x00000636,
+ 0x0000062d, 0x80000649, 0x00000636, 0x0000062e,
+ 0x80000645, 0x00000636, 0x0000062e, 0x80000645,
+ 0x00000637, 0x00000645, 0x8000062d, 0x00000637,
+ 0x00000645, 0x8000062d, 0x00000637, 0x00000645,
+ 0x80000645, 0x00000637, 0x00000645, 0x8000064a,
+ 0x00000639, 0x0000062c, 0x80000645, 0x00000639,
+ 0x00000645, 0x80000645, 0x00000639, 0x00000645,
+ 0x80000645, 0x00000639, 0x00000645, 0x80000649,
+ 0x0000063a, 0x00000645, 0x80000645, 0x0000063a,
+ 0x00000645, 0x8000064a, 0x0000063a, 0x00000645,
+ 0x80000649, 0x00000641, 0x0000062e, 0x80000645,
+ 0x00000641, 0x0000062e, 0x80000645, 0x00000642,
+ 0x00000645, 0x8000062d, 0x00000642, 0x00000645,
+ 0x80000645, 0x00000644, 0x0000062d, 0x80000645,
+ 0x00000644, 0x0000062d, 0x8000064a, 0x00000644,
+ 0x0000062d, 0x80000649, 0x00000644, 0x0000062c,
+ 0x8000062c, 0x00000644, 0x0000062c, 0x8000062c,
+ 0x00000644, 0x0000062e, 0x80000645, 0x00000644,
+ 0x0000062e, 0x80000645, 0x00000644, 0x00000645,
+ 0x8000062d, 0x00000644, 0x00000645, 0x8000062d,
+ 0x00000645, 0x0000062d, 0x8000062c, 0x00000645,
+ 0x0000062d, 0x80000645, 0x00000645, 0x0000062d,
+ 0x8000064a, 0x00000645, 0x0000062c, 0x8000062d,
+ 0x00000645, 0x0000062c, 0x80000645, 0x00000645,
+ 0x0000062e, 0x8000062c, 0x00000645, 0x0000062e,
+ 0x80000645, 0x00000645, 0x0000062c, 0x8000062e,
+ 0x00000647, 0x00000645, 0x8000062c, 0x00000647,
+ 0x00000645, 0x80000645, 0x00000646, 0x0000062d,
+ 0x80000645, 0x00000646, 0x0000062d, 0x80000649,
+ 0x00000646, 0x0000062c, 0x80000645, 0x00000646,
+ 0x0000062c, 0x80000645, 0x00000646, 0x0000062c,
+ 0x80000649, 0x00000646, 0x00000645, 0x8000064a,
+ 0x00000646, 0x00000645, 0x80000649, 0x0000064a,
+ 0x00000645, 0x80000645, 0x0000064a, 0x00000645,
+ 0x80000645, 0x00000628, 0x0000062e, 0x8000064a,
+ 0x0000062a, 0x0000062c, 0x8000064a, 0x0000062a,
+ 0x0000062c, 0x80000649, 0x0000062a, 0x0000062e,
+ 0x8000064a, 0x0000062a, 0x0000062e, 0x80000649,
+ 0x0000062a, 0x00000645, 0x8000064a, 0x0000062a,
+ 0x00000645, 0x80000649, 0x0000062c, 0x00000645,
+ 0x8000064a, 0x0000062c, 0x0000062d, 0x80000649,
+ 0x0000062c, 0x00000645, 0x80000649, 0x00000633,
+ 0x0000062e, 0x80000649, 0x00000635, 0x0000062d,
+ 0x8000064a, 0x00000634, 0x0000062d, 0x8000064a,
+ 0x00000636, 0x0000062d, 0x8000064a, 0x00000644,
+ 0x0000062c, 0x8000064a, 0x00000644, 0x00000645,
+ 0x8000064a, 0x0000064a, 0x0000062d, 0x8000064a,
+ 0x0000064a, 0x0000062c, 0x8000064a, 0x0000064a,
+ 0x00000645, 0x8000064a, 0x00000645, 0x00000645,
+ 0x8000064a, 0x00000642, 0x00000645, 0x8000064a,
+ 0x00000646, 0x0000062d, 0x8000064a, 0x00000642,
+ 0x00000645, 0x8000062d, 0x00000644, 0x0000062d,
+ 0x80000645, 0x00000639, 0x00000645, 0x8000064a,
+ 0x00000643, 0x00000645, 0x8000064a, 0x00000646,
+ 0x0000062c, 0x8000062d, 0x00000645, 0x0000062e,
+ 0x8000064a, 0x00000644, 0x0000062c, 0x80000645,
+ 0x00000643, 0x00000645, 0x80000645, 0x00000644,
+ 0x0000062c, 0x80000645, 0x00000646, 0x0000062c,
+ 0x8000062d, 0x0000062c, 0x0000062d, 0x8000064a,
+ 0x0000062d, 0x0000062c, 0x8000064a, 0x00000645,
+ 0x0000062c, 0x8000064a, 0x00000641, 0x00000645,
+ 0x8000064a, 0x00000628, 0x0000062d, 0x8000064a,
+ 0x00000643, 0x00000645, 0x80000645, 0x00000639,
+ 0x0000062c, 0x80000645, 0x00000635, 0x00000645,
+ 0x80000645, 0x00000633, 0x0000062e, 0x8000064a,
+ 0x00000646, 0x0000062c, 0x8000064a, 0x00000635,
+ 0x00000644, 0x800006d2, 0x00000642, 0x00000644,
+ 0x800006d2, 0x00000627, 0x00000644, 0x00000644,
+ 0x80000647, 0x00000627, 0x00000643, 0x00000628,
+ 0x80000631, 0x00000645, 0x0000062d, 0x00000645,
+ 0x8000062f, 0x00000635, 0x00000644, 0x00000639,
+ 0x80000645, 0x00000631, 0x00000633, 0x00000648,
+ 0x80000644, 0x00000639, 0x00000644, 0x0000064a,
+ 0x80000647, 0x00000648, 0x00000633, 0x00000644,
+ 0x80000645, 0x00000635, 0x00000644, 0x80000649,
+ 0x00000635, 0x00000644, 0x00000649, 0x00000020,
+ 0x00000627, 0x00000644, 0x00000644, 0x00000647,
+ 0x00000020, 0x00000639, 0x00000644, 0x0000064a,
+ 0x00000647, 0x00000020, 0x00000648, 0x00000633,
+ 0x00000644, 0x80000645, 0x0000062c, 0x00000644,
+ 0x00000020, 0x0000062c, 0x00000644, 0x00000627,
+ 0x00000644, 0x80000647, 0x00000631, 0x000006cc,
+ 0x00000627, 0x80000644, 0x8000002c, 0x80003001,
+ 0x80003002, 0x8000003a, 0x8000003b, 0x80000021,
+ 0x8000003f, 0x80003016, 0x80003017, 0x80002026,
+ 0x80002025, 0x80002014, 0x80002013, 0x8000005f,
+ 0x8000005f, 0x80000028, 0x80000029, 0x8000007b,
+ 0x8000007d, 0x80003014, 0x80003015, 0x80003010,
+ 0x80003011, 0x8000300a, 0x8000300b, 0x80003008,
+ 0x80003009, 0x8000300c, 0x8000300d, 0x8000300e,
+ 0x8000300f, 0x8000005b, 0x8000005d, 0x8000203e,
+ 0x8000203e, 0x8000203e, 0x8000203e, 0x8000005f,
+ 0x8000005f, 0x8000005f, 0x8000002c, 0x80003001,
+ 0x8000002e, 0x8000003b, 0x8000003a, 0x8000003f,
+ 0x80000021, 0x80002014, 0x80000028, 0x80000029,
+ 0x8000007b, 0x8000007d, 0x80003014, 0x80003015,
+ 0x80000023, 0x80000026, 0x8000002a, 0x8000002b,
+ 0x8000002d, 0x8000003c, 0x8000003e, 0x8000003d,
+ 0x8000005c, 0x80000024, 0x80000025, 0x80000040,
+ 0x00000020, 0x8000064b, 0x00000640, 0x8000064b,
+ 0x00000020, 0x8000064c, 0x00000020, 0x8000064d,
+ 0x00000020, 0x8000064e, 0x00000640, 0x8000064e,
+ 0x00000020, 0x8000064f, 0x00000640, 0x8000064f,
+ 0x00000020, 0x80000650, 0x00000640, 0x80000650,
+ 0x00000020, 0x80000651, 0x00000640, 0x80000651,
+ 0x00000020, 0x80000652, 0x00000640, 0x80000652,
+ 0x80000621, 0x80000622, 0x80000622, 0x80000623,
+ 0x80000623, 0x80000624, 0x80000624, 0x80000625,
+ 0x80000625, 0x80000626, 0x80000626, 0x80000626,
+ 0x80000626, 0x80000627, 0x80000627, 0x80000628,
+ 0x80000628, 0x80000628, 0x80000628, 0x80000629,
+ 0x80000629, 0x8000062a, 0x8000062a, 0x8000062a,
+ 0x8000062a, 0x8000062b, 0x8000062b, 0x8000062b,
+ 0x8000062b, 0x8000062c, 0x8000062c, 0x8000062c,
+ 0x8000062c, 0x8000062d, 0x8000062d, 0x8000062d,
+ 0x8000062d, 0x8000062e, 0x8000062e, 0x8000062e,
+ 0x8000062e, 0x8000062f, 0x8000062f, 0x80000630,
+ 0x80000630, 0x80000631, 0x80000631, 0x80000632,
+ 0x80000632, 0x80000633, 0x80000633, 0x80000633,
+ 0x80000633, 0x80000634, 0x80000634, 0x80000634,
+ 0x80000634, 0x80000635, 0x80000635, 0x80000635,
+ 0x80000635, 0x80000636, 0x80000636, 0x80000636,
+ 0x80000636, 0x80000637, 0x80000637, 0x80000637,
+ 0x80000637, 0x80000638, 0x80000638, 0x80000638,
+ 0x80000638, 0x80000639, 0x80000639, 0x80000639,
+ 0x80000639, 0x8000063a, 0x8000063a, 0x8000063a,
+ 0x8000063a, 0x80000641, 0x80000641, 0x80000641,
+ 0x80000641, 0x80000642, 0x80000642, 0x80000642,
+ 0x80000642, 0x80000643, 0x80000643, 0x80000643,
+ 0x80000643, 0x80000644, 0x80000644, 0x80000644,
+ 0x80000644, 0x80000645, 0x80000645, 0x80000645,
+ 0x80000645, 0x80000646, 0x80000646, 0x80000646,
+ 0x80000646, 0x80000647, 0x80000647, 0x80000647,
+ 0x80000647, 0x80000648, 0x80000648, 0x80000649,
+ 0x80000649, 0x8000064a, 0x8000064a, 0x8000064a,
+ 0x8000064a, 0x00000644, 0x80000622, 0x00000644,
+ 0x80000622, 0x00000644, 0x80000623, 0x00000644,
+ 0x80000623, 0x00000644, 0x80000625, 0x00000644,
+ 0x80000625, 0x00000644, 0x80000627, 0x00000644,
+ 0x80000627, 0x80000021, 0x80000022, 0x80000023,
+ 0x80000024, 0x80000025, 0x80000026, 0x80000027,
+ 0x80000028, 0x80000029, 0x8000002a, 0x8000002b,
+ 0x8000002c, 0x8000002d, 0x8000002e, 0x8000002f,
+ 0x80000030, 0x80000031, 0x80000032, 0x80000033,
+ 0x80000034, 0x80000035, 0x80000036, 0x80000037,
+ 0x80000038, 0x80000039, 0x8000003a, 0x8000003b,
+ 0x8000003c, 0x8000003d, 0x8000003e, 0x8000003f,
+ 0x80000040, 0x80000041, 0x80000042, 0x80000043,
+ 0x80000044, 0x80000045, 0x80000046, 0x80000047,
+ 0x80000048, 0x80000049, 0x8000004a, 0x8000004b,
+ 0x8000004c, 0x8000004d, 0x8000004e, 0x8000004f,
+ 0x80000050, 0x80000051, 0x80000052, 0x80000053,
+ 0x80000054, 0x80000055, 0x80000056, 0x80000057,
+ 0x80000058, 0x80000059, 0x8000005a, 0x8000005b,
+ 0x8000005c, 0x8000005d, 0x8000005e, 0x8000005f,
+ 0x80000060, 0x80000061, 0x80000062, 0x80000063,
+ 0x80000064, 0x80000065, 0x80000066, 0x80000067,
+ 0x80000068, 0x80000069, 0x8000006a, 0x8000006b,
+ 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f,
+ 0x80000070, 0x80000071, 0x80000072, 0x80000073,
+ 0x80000074, 0x80000075, 0x80000076, 0x80000077,
+ 0x80000078, 0x80000079, 0x8000007a, 0x8000007b,
+ 0x8000007c, 0x8000007d, 0x8000007e, 0x80002985,
+ 0x80002986, 0x80003002, 0x8000300c, 0x8000300d,
+ 0x80003001, 0x800030fb, 0x800030f2, 0x800030a1,
+ 0x800030a3, 0x800030a5, 0x800030a7, 0x800030a9,
+ 0x800030e3, 0x800030e5, 0x800030e7, 0x800030c3,
+ 0x800030fc, 0x800030a2, 0x800030a4, 0x800030a6,
+ 0x800030a8, 0x800030aa, 0x800030ab, 0x800030ad,
+ 0x800030af, 0x800030b1, 0x800030b3, 0x800030b5,
+ 0x800030b7, 0x800030b9, 0x800030bb, 0x800030bd,
+ 0x800030bf, 0x800030c1, 0x800030c4, 0x800030c6,
+ 0x800030c8, 0x800030ca, 0x800030cb, 0x800030cc,
+ 0x800030cd, 0x800030ce, 0x800030cf, 0x800030d2,
+ 0x800030d5, 0x800030d8, 0x800030db, 0x800030de,
+ 0x800030df, 0x800030e0, 0x800030e1, 0x800030e2,
+ 0x800030e4, 0x800030e6, 0x800030e8, 0x800030e9,
+ 0x800030ea, 0x800030eb, 0x800030ec, 0x800030ed,
+ 0x800030ef, 0x800030f3, 0x80003099, 0x8000309a,
+ 0x80003164, 0x80003131, 0x80003132, 0x80003133,
+ 0x80003134, 0x80003135, 0x80003136, 0x80003137,
+ 0x80003138, 0x80003139, 0x8000313a, 0x8000313b,
+ 0x8000313c, 0x8000313d, 0x8000313e, 0x8000313f,
+ 0x80003140, 0x80003141, 0x80003142, 0x80003143,
+ 0x80003144, 0x80003145, 0x80003146, 0x80003147,
+ 0x80003148, 0x80003149, 0x8000314a, 0x8000314b,
+ 0x8000314c, 0x8000314d, 0x8000314e, 0x8000314f,
+ 0x80003150, 0x80003151, 0x80003152, 0x80003153,
+ 0x80003154, 0x80003155, 0x80003156, 0x80003157,
+ 0x80003158, 0x80003159, 0x8000315a, 0x8000315b,
+ 0x8000315c, 0x8000315d, 0x8000315e, 0x8000315f,
+ 0x80003160, 0x80003161, 0x80003162, 0x80003163,
+ 0x800000a2, 0x800000a3, 0x800000ac, 0x800000af,
+ 0x800000a6, 0x800000a5, 0x800020a9, 0x80002502,
+ 0x80002190, 0x80002191, 0x80002192, 0x80002193,
+ 0x800025a0, 0x800025cb, 0x0001d157, 0x8001d165,
+ 0x0001d158, 0x8001d165, 0x0001d15f, 0x8001d16e,
+ 0x0001d15f, 0x8001d16f, 0x0001d15f, 0x8001d170,
+ 0x0001d15f, 0x8001d171, 0x0001d15f, 0x8001d172,
+ 0x0001d1b9, 0x8001d165, 0x0001d1ba, 0x8001d165,
+ 0x0001d1bb, 0x8001d16e, 0x0001d1bc, 0x8001d16e,
+ 0x0001d1bb, 0x8001d16f, 0x0001d1bc, 0x8001d16f,
+ 0x80000041, 0x80000042, 0x80000043, 0x80000044,
+ 0x80000045, 0x80000046, 0x80000047, 0x80000048,
+ 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c,
+ 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050,
+ 0x80000051, 0x80000052, 0x80000053, 0x80000054,
+ 0x80000055, 0x80000056, 0x80000057, 0x80000058,
+ 0x80000059, 0x8000005a, 0x80000061, 0x80000062,
+ 0x80000063, 0x80000064, 0x80000065, 0x80000066,
+ 0x80000067, 0x80000068, 0x80000069, 0x8000006a,
+ 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e,
+ 0x8000006f, 0x80000070, 0x80000071, 0x80000072,
+ 0x80000073, 0x80000074, 0x80000075, 0x80000076,
+ 0x80000077, 0x80000078, 0x80000079, 0x8000007a,
+ 0x80000041, 0x80000042, 0x80000043, 0x80000044,
+ 0x80000045, 0x80000046, 0x80000047, 0x80000048,
+ 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c,
+ 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050,
+ 0x80000051, 0x80000052, 0x80000053, 0x80000054,
+ 0x80000055, 0x80000056, 0x80000057, 0x80000058,
+ 0x80000059, 0x8000005a, 0x80000061, 0x80000062,
+ 0x80000063, 0x80000064, 0x80000065, 0x80000066,
+ 0x80000067, 0x80000069, 0x8000006a, 0x8000006b,
+ 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f,
+ 0x80000070, 0x80000071, 0x80000072, 0x80000073,
+ 0x80000074, 0x80000075, 0x80000076, 0x80000077,
+ 0x80000078, 0x80000079, 0x8000007a, 0x80000041,
+ 0x80000042, 0x80000043, 0x80000044, 0x80000045,
+ 0x80000046, 0x80000047, 0x80000048, 0x80000049,
+ 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d,
+ 0x8000004e, 0x8000004f, 0x80000050, 0x80000051,
+ 0x80000052, 0x80000053, 0x80000054, 0x80000055,
+ 0x80000056, 0x80000057, 0x80000058, 0x80000059,
+ 0x8000005a, 0x80000061, 0x80000062, 0x80000063,
+ 0x80000064, 0x80000065, 0x80000066, 0x80000067,
+ 0x80000068, 0x80000069, 0x8000006a, 0x8000006b,
+ 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f,
+ 0x80000070, 0x80000071, 0x80000072, 0x80000073,
+ 0x80000074, 0x80000075, 0x80000076, 0x80000077,
+ 0x80000078, 0x80000079, 0x8000007a, 0x80000041,
+ 0x80000043, 0x80000044, 0x80000047, 0x8000004a,
+ 0x8000004b, 0x8000004e, 0x8000004f, 0x80000050,
+ 0x80000051, 0x80000053, 0x80000054, 0x80000055,
+ 0x80000056, 0x80000057, 0x80000058, 0x80000059,
+ 0x8000005a, 0x80000061, 0x80000062, 0x80000063,
+ 0x80000064, 0x80000066, 0x80000068, 0x80000069,
+ 0x8000006a, 0x8000006b, 0x8000006c, 0x8000006d,
+ 0x8000006e, 0x80000070, 0x80000071, 0x80000072,
+ 0x80000073, 0x80000074, 0x80000075, 0x80000076,
+ 0x80000077, 0x80000078, 0x80000079, 0x8000007a,
+ 0x80000041, 0x80000042, 0x80000043, 0x80000044,
+ 0x80000045, 0x80000046, 0x80000047, 0x80000048,
+ 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c,
+ 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050,
+ 0x80000051, 0x80000052, 0x80000053, 0x80000054,
+ 0x80000055, 0x80000056, 0x80000057, 0x80000058,
+ 0x80000059, 0x8000005a, 0x80000061, 0x80000062,
+ 0x80000063, 0x80000064, 0x80000065, 0x80000066,
+ 0x80000067, 0x80000068, 0x80000069, 0x8000006a,
+ 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e,
+ 0x8000006f, 0x80000070, 0x80000071, 0x80000072,
+ 0x80000073, 0x80000074, 0x80000075, 0x80000076,
+ 0x80000077, 0x80000078, 0x80000079, 0x8000007a,
+ 0x80000041, 0x80000042, 0x80000044, 0x80000045,
+ 0x80000046, 0x80000047, 0x8000004a, 0x8000004b,
+ 0x8000004c, 0x8000004d, 0x8000004e, 0x8000004f,
+ 0x80000050, 0x80000051, 0x80000053, 0x80000054,
+ 0x80000055, 0x80000056, 0x80000057, 0x80000058,
+ 0x80000059, 0x80000061, 0x80000062, 0x80000063,
+ 0x80000064, 0x80000065, 0x80000066, 0x80000067,
+ 0x80000068, 0x80000069, 0x8000006a, 0x8000006b,
+ 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f,
+ 0x80000070, 0x80000071, 0x80000072, 0x80000073,
+ 0x80000074, 0x80000075, 0x80000076, 0x80000077,
+ 0x80000078, 0x80000079, 0x8000007a, 0x80000041,
+ 0x80000042, 0x80000044, 0x80000045, 0x80000046,
+ 0x80000047, 0x80000049, 0x8000004a, 0x8000004b,
+ 0x8000004c, 0x8000004d, 0x8000004f, 0x80000053,
+ 0x80000054, 0x80000055, 0x80000056, 0x80000057,
+ 0x80000058, 0x80000059, 0x80000061, 0x80000062,
+ 0x80000063, 0x80000064, 0x80000065, 0x80000066,
+ 0x80000067, 0x80000068, 0x80000069, 0x8000006a,
+ 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e,
+ 0x8000006f, 0x80000070, 0x80000071, 0x80000072,
+ 0x80000073, 0x80000074, 0x80000075, 0x80000076,
+ 0x80000077, 0x80000078, 0x80000079, 0x8000007a,
+ 0x80000041, 0x80000042, 0x80000043, 0x80000044,
+ 0x80000045, 0x80000046, 0x80000047, 0x80000048,
+ 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c,
+ 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050,
+ 0x80000051, 0x80000052, 0x80000053, 0x80000054,
+ 0x80000055, 0x80000056, 0x80000057, 0x80000058,
+ 0x80000059, 0x8000005a, 0x80000061, 0x80000062,
+ 0x80000063, 0x80000064, 0x80000065, 0x80000066,
+ 0x80000067, 0x80000068, 0x80000069, 0x8000006a,
+ 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e,
+ 0x8000006f, 0x80000070, 0x80000071, 0x80000072,
+ 0x80000073, 0x80000074, 0x80000075, 0x80000076,
+ 0x80000077, 0x80000078, 0x80000079, 0x8000007a,
+ 0x80000041, 0x80000042, 0x80000043, 0x80000044,
+ 0x80000045, 0x80000046, 0x80000047, 0x80000048,
+ 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c,
+ 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050,
+ 0x80000051, 0x80000052, 0x80000053, 0x80000054,
+ 0x80000055, 0x80000056, 0x80000057, 0x80000058,
+ 0x80000059, 0x8000005a, 0x80000061, 0x80000062,
+ 0x80000063, 0x80000064, 0x80000065, 0x80000066,
+ 0x80000067, 0x80000068, 0x80000069, 0x8000006a,
+ 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e,
+ 0x8000006f, 0x80000070, 0x80000071, 0x80000072,
+ 0x80000073, 0x80000074, 0x80000075, 0x80000076,
+ 0x80000077, 0x80000078, 0x80000079, 0x8000007a,
+ 0x80000041, 0x80000042, 0x80000043, 0x80000044,
+ 0x80000045, 0x80000046, 0x80000047, 0x80000048,
+ 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c,
+ 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050,
+ 0x80000051, 0x80000052, 0x80000053, 0x80000054,
+ 0x80000055, 0x80000056, 0x80000057, 0x80000058,
+ 0x80000059, 0x8000005a, 0x80000061, 0x80000062,
+ 0x80000063, 0x80000064, 0x80000065, 0x80000066,
+ 0x80000067, 0x80000068, 0x80000069, 0x8000006a,
+ 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e,
+ 0x8000006f, 0x80000070, 0x80000071, 0x80000072,
+ 0x80000073, 0x80000074, 0x80000075, 0x80000076,
+ 0x80000077, 0x80000078, 0x80000079, 0x8000007a,
+ 0x80000041, 0x80000042, 0x80000043, 0x80000044,
+ 0x80000045, 0x80000046, 0x80000047, 0x80000048,
+ 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c,
+ 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050,
+ 0x80000051, 0x80000052, 0x80000053, 0x80000054,
+ 0x80000055, 0x80000056, 0x80000057, 0x80000058,
+ 0x80000059, 0x8000005a, 0x80000061, 0x80000062,
+ 0x80000063, 0x80000064, 0x80000065, 0x80000066,
+ 0x80000067, 0x80000068, 0x80000069, 0x8000006a,
+ 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e,
+ 0x8000006f, 0x80000070, 0x80000071, 0x80000072,
+ 0x80000073, 0x80000074, 0x80000075, 0x80000076,
+ 0x80000077, 0x80000078, 0x80000079, 0x8000007a,
+ 0x80000041, 0x80000042, 0x80000043, 0x80000044,
+ 0x80000045, 0x80000046, 0x80000047, 0x80000048,
+ 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c,
+ 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050,
+ 0x80000051, 0x80000052, 0x80000053, 0x80000054,
+ 0x80000055, 0x80000056, 0x80000057, 0x80000058,
+ 0x80000059, 0x8000005a, 0x80000061, 0x80000062,
+ 0x80000063, 0x80000064, 0x80000065, 0x80000066,
+ 0x80000067, 0x80000068, 0x80000069, 0x8000006a,
+ 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e,
+ 0x8000006f, 0x80000070, 0x80000071, 0x80000072,
+ 0x80000073, 0x80000074, 0x80000075, 0x80000076,
+ 0x80000077, 0x80000078, 0x80000079, 0x8000007a,
+ 0x80000041, 0x80000042, 0x80000043, 0x80000044,
+ 0x80000045, 0x80000046, 0x80000047, 0x80000048,
+ 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c,
+ 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050,
+ 0x80000051, 0x80000052, 0x80000053, 0x80000054,
+ 0x80000055, 0x80000056, 0x80000057, 0x80000058,
+ 0x80000059, 0x8000005a, 0x80000061, 0x80000062,
+ 0x80000063, 0x80000064, 0x80000065, 0x80000066,
+ 0x80000067, 0x80000068, 0x80000069, 0x8000006a,
+ 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e,
+ 0x8000006f, 0x80000070, 0x80000071, 0x80000072,
+ 0x80000073, 0x80000074, 0x80000075, 0x80000076,
+ 0x80000077, 0x80000078, 0x80000079, 0x8000007a,
+ 0x80000131, 0x80000237, 0x80000391, 0x80000392,
+ 0x80000393, 0x80000394, 0x80000395, 0x80000396,
+ 0x80000397, 0x80000398, 0x80000399, 0x8000039a,
+ 0x8000039b, 0x8000039c, 0x8000039d, 0x8000039e,
+ 0x8000039f, 0x800003a0, 0x800003a1, 0x800003f4,
+ 0x800003a3, 0x800003a4, 0x800003a5, 0x800003a6,
+ 0x800003a7, 0x800003a8, 0x800003a9, 0x80002207,
+ 0x800003b1, 0x800003b2, 0x800003b3, 0x800003b4,
+ 0x800003b5, 0x800003b6, 0x800003b7, 0x800003b8,
+ 0x800003b9, 0x800003ba, 0x800003bb, 0x800003bc,
+ 0x800003bd, 0x800003be, 0x800003bf, 0x800003c0,
+ 0x800003c1, 0x800003c2, 0x800003c3, 0x800003c4,
+ 0x800003c5, 0x800003c6, 0x800003c7, 0x800003c8,
+ 0x800003c9, 0x80002202, 0x800003f5, 0x800003d1,
+ 0x800003f0, 0x800003d5, 0x800003f1, 0x800003d6,
+ 0x80000391, 0x80000392, 0x80000393, 0x80000394,
+ 0x80000395, 0x80000396, 0x80000397, 0x80000398,
+ 0x80000399, 0x8000039a, 0x8000039b, 0x8000039c,
+ 0x8000039d, 0x8000039e, 0x8000039f, 0x800003a0,
+ 0x800003a1, 0x800003f4, 0x800003a3, 0x800003a4,
+ 0x800003a5, 0x800003a6, 0x800003a7, 0x800003a8,
+ 0x800003a9, 0x80002207, 0x800003b1, 0x800003b2,
+ 0x800003b3, 0x800003b4, 0x800003b5, 0x800003b6,
+ 0x800003b7, 0x800003b8, 0x800003b9, 0x800003ba,
+ 0x800003bb, 0x800003bc, 0x800003bd, 0x800003be,
+ 0x800003bf, 0x800003c0, 0x800003c1, 0x800003c2,
+ 0x800003c3, 0x800003c4, 0x800003c5, 0x800003c6,
+ 0x800003c7, 0x800003c8, 0x800003c9, 0x80002202,
+ 0x800003f5, 0x800003d1, 0x800003f0, 0x800003d5,
+ 0x800003f1, 0x800003d6, 0x80000391, 0x80000392,
+ 0x80000393, 0x80000394, 0x80000395, 0x80000396,
+ 0x80000397, 0x80000398, 0x80000399, 0x8000039a,
+ 0x8000039b, 0x8000039c, 0x8000039d, 0x8000039e,
+ 0x8000039f, 0x800003a0, 0x800003a1, 0x800003f4,
+ 0x800003a3, 0x800003a4, 0x800003a5, 0x800003a6,
+ 0x800003a7, 0x800003a8, 0x800003a9, 0x80002207,
+ 0x800003b1, 0x800003b2, 0x800003b3, 0x800003b4,
+ 0x800003b5, 0x800003b6, 0x800003b7, 0x800003b8,
+ 0x800003b9, 0x800003ba, 0x800003bb, 0x800003bc,
+ 0x800003bd, 0x800003be, 0x800003bf, 0x800003c0,
+ 0x800003c1, 0x800003c2, 0x800003c3, 0x800003c4,
+ 0x800003c5, 0x800003c6, 0x800003c7, 0x800003c8,
+ 0x800003c9, 0x80002202, 0x800003f5, 0x800003d1,
+ 0x800003f0, 0x800003d5, 0x800003f1, 0x800003d6,
+ 0x80000391, 0x80000392, 0x80000393, 0x80000394,
+ 0x80000395, 0x80000396, 0x80000397, 0x80000398,
+ 0x80000399, 0x8000039a, 0x8000039b, 0x8000039c,
+ 0x8000039d, 0x8000039e, 0x8000039f, 0x800003a0,
+ 0x800003a1, 0x800003f4, 0x800003a3, 0x800003a4,
+ 0x800003a5, 0x800003a6, 0x800003a7, 0x800003a8,
+ 0x800003a9, 0x80002207, 0x800003b1, 0x800003b2,
+ 0x800003b3, 0x800003b4, 0x800003b5, 0x800003b6,
+ 0x800003b7, 0x800003b8, 0x800003b9, 0x800003ba,
+ 0x800003bb, 0x800003bc, 0x800003bd, 0x800003be,
+ 0x800003bf, 0x800003c0, 0x800003c1, 0x800003c2,
+ 0x800003c3, 0x800003c4, 0x800003c5, 0x800003c6,
+ 0x800003c7, 0x800003c8, 0x800003c9, 0x80002202,
+ 0x800003f5, 0x800003d1, 0x800003f0, 0x800003d5,
+ 0x800003f1, 0x800003d6, 0x80000391, 0x80000392,
+ 0x80000393, 0x80000394, 0x80000395, 0x80000396,
+ 0x80000397, 0x80000398, 0x80000399, 0x8000039a,
+ 0x8000039b, 0x8000039c, 0x8000039d, 0x8000039e,
+ 0x8000039f, 0x800003a0, 0x800003a1, 0x800003f4,
+ 0x800003a3, 0x800003a4, 0x800003a5, 0x800003a6,
+ 0x800003a7, 0x800003a8, 0x800003a9, 0x80002207,
+ 0x800003b1, 0x800003b2, 0x800003b3, 0x800003b4,
+ 0x800003b5, 0x800003b6, 0x800003b7, 0x800003b8,
+ 0x800003b9, 0x800003ba, 0x800003bb, 0x800003bc,
+ 0x800003bd, 0x800003be, 0x800003bf, 0x800003c0,
+ 0x800003c1, 0x800003c2, 0x800003c3, 0x800003c4,
+ 0x800003c5, 0x800003c6, 0x800003c7, 0x800003c8,
+ 0x800003c9, 0x80002202, 0x800003f5, 0x800003d1,
+ 0x800003f0, 0x800003d5, 0x800003f1, 0x800003d6,
+ 0x80000030, 0x80000031, 0x80000032, 0x80000033,
+ 0x80000034, 0x80000035, 0x80000036, 0x80000037,
+ 0x80000038, 0x80000039, 0x80000030, 0x80000031,
+ 0x80000032, 0x80000033, 0x80000034, 0x80000035,
+ 0x80000036, 0x80000037, 0x80000038, 0x80000039,
+ 0x80000030, 0x80000031, 0x80000032, 0x80000033,
+ 0x80000034, 0x80000035, 0x80000036, 0x80000037,
+ 0x80000038, 0x80000039, 0x80000030, 0x80000031,
+ 0x80000032, 0x80000033, 0x80000034, 0x80000035,
+ 0x80000036, 0x80000037, 0x80000038, 0x80000039,
+ 0x80000030, 0x80000031, 0x80000032, 0x80000033,
+ 0x80000034, 0x80000035, 0x80000036, 0x80000037,
+ 0x80000038, 0x80000039, 0x80004e3d, 0x80004e38,
+ 0x80004e41, 0x80020122, 0x80004f60, 0x80004fae,
+ 0x80004fbb, 0x80005002, 0x8000507a, 0x80005099,
+ 0x800050e7, 0x800050cf, 0x8000349e, 0x8002063a,
+ 0x8000514d, 0x80005154, 0x80005164, 0x80005177,
+ 0x8002051c, 0x800034b9, 0x80005167, 0x8000518d,
+ 0x8002054b, 0x80005197, 0x800051a4, 0x80004ecc,
+ 0x800051ac, 0x800051b5, 0x800291df, 0x800051f5,
+ 0x80005203, 0x800034df, 0x8000523b, 0x80005246,
+ 0x80005272, 0x80005277, 0x80003515, 0x800052c7,
+ 0x800052c9, 0x800052e4, 0x800052fa, 0x80005305,
+ 0x80005306, 0x80005317, 0x80005349, 0x80005351,
+ 0x8000535a, 0x80005373, 0x8000537d, 0x8000537f,
+ 0x8000537f, 0x8000537f, 0x80020a2c, 0x80007070,
+ 0x800053ca, 0x800053df, 0x80020b63, 0x800053eb,
+ 0x800053f1, 0x80005406, 0x8000549e, 0x80005438,
+ 0x80005448, 0x80005468, 0x800054a2, 0x800054f6,
+ 0x80005510, 0x80005553, 0x80005563, 0x80005584,
+ 0x80005584, 0x80005599, 0x800055ab, 0x800055b3,
+ 0x800055c2, 0x80005716, 0x80005606, 0x80005717,
+ 0x80005651, 0x80005674, 0x80005207, 0x800058ee,
+ 0x800057ce, 0x800057f4, 0x8000580d, 0x8000578b,
+ 0x80005832, 0x80005831, 0x800058ac, 0x800214e4,
+ 0x800058f2, 0x800058f7, 0x80005906, 0x8000591a,
+ 0x80005922, 0x80005962, 0x800216a8, 0x800216ea,
+ 0x800059ec, 0x80005a1b, 0x80005a27, 0x800059d8,
+ 0x80005a66, 0x800036ee, 0x800036fc, 0x80005b08,
+ 0x80005b3e, 0x80005b3e, 0x800219c8, 0x80005bc3,
+ 0x80005bd8, 0x80005be7, 0x80005bf3, 0x80021b18,
+ 0x80005bff, 0x80005c06, 0x80005f53, 0x80005c22,
+ 0x80003781, 0x80005c60, 0x80005c6e, 0x80005cc0,
+ 0x80005c8d, 0x80021de4, 0x80005d43, 0x80021de6,
+ 0x80005d6e, 0x80005d6b, 0x80005d7c, 0x80005de1,
+ 0x80005de2, 0x8000382f, 0x80005dfd, 0x80005e28,
+ 0x80005e3d, 0x80005e69, 0x80003862, 0x80022183,
+ 0x8000387c, 0x80005eb0, 0x80005eb3, 0x80005eb6,
+ 0x80005eca, 0x8002a392, 0x80005efe, 0x80022331,
+ 0x80022331, 0x80008201, 0x80005f22, 0x80005f22,
+ 0x800038c7, 0x800232b8, 0x800261da, 0x80005f62,
+ 0x80005f6b, 0x800038e3, 0x80005f9a, 0x80005fcd,
+ 0x80005fd7, 0x80005ff9, 0x80006081, 0x8000393a,
+ 0x8000391c, 0x80006094, 0x800226d4, 0x800060c7,
+ 0x80006148, 0x8000614c, 0x8000614e, 0x8000614c,
+ 0x8000617a, 0x8000618e, 0x800061b2, 0x800061a4,
+ 0x800061af, 0x800061de, 0x800061f2, 0x800061f6,
+ 0x80006210, 0x8000621b, 0x8000625d, 0x800062b1,
+ 0x800062d4, 0x80006350, 0x80022b0c, 0x8000633d,
+ 0x800062fc, 0x80006368, 0x80006383, 0x800063e4,
+ 0x80022bf1, 0x80006422, 0x800063c5, 0x800063a9,
+ 0x80003a2e, 0x80006469, 0x8000647e, 0x8000649d,
+ 0x80006477, 0x80003a6c, 0x8000654f, 0x8000656c,
+ 0x8002300a, 0x800065e3, 0x800066f8, 0x80006649,
+ 0x80003b19, 0x80006691, 0x80003b08, 0x80003ae4,
+ 0x80005192, 0x80005195, 0x80006700, 0x8000669c,
+ 0x800080ad, 0x800043d9, 0x80006717, 0x8000671b,
+ 0x80006721, 0x8000675e, 0x80006753, 0x800233c3,
+ 0x80003b49, 0x800067fa, 0x80006785, 0x80006852,
+ 0x80006885, 0x8002346d, 0x8000688e, 0x8000681f,
+ 0x80006914, 0x80003b9d, 0x80006942, 0x800069a3,
+ 0x800069ea, 0x80006aa8, 0x800236a3, 0x80006adb,
+ 0x80003c18, 0x80006b21, 0x800238a7, 0x80006b54,
+ 0x80003c4e, 0x80006b72, 0x80006b9f, 0x80006bba,
+ 0x80006bbb, 0x80023a8d, 0x80021d0b, 0x80023afa,
+ 0x80006c4e, 0x80023cbc, 0x80006cbf, 0x80006ccd,
+ 0x80006c67, 0x80006d16, 0x80006d3e, 0x80006d77,
+ 0x80006d41, 0x80006d69, 0x80006d78, 0x80006d85,
+ 0x80023d1e, 0x80006d34, 0x80006e2f, 0x80006e6e,
+ 0x80003d33, 0x80006ecb, 0x80006ec7, 0x80023ed1,
+ 0x80006df9, 0x80006f6e, 0x80023f5e, 0x80023f8e,
+ 0x80006fc6, 0x80007039, 0x8000701e, 0x8000701b,
+ 0x80003d96, 0x8000704a, 0x8000707d, 0x80007077,
+ 0x800070ad, 0x80020525, 0x80007145, 0x80024263,
+ 0x8000719c, 0x800243ab, 0x80007228, 0x80007235,
+ 0x80007250, 0x80024608, 0x80007280, 0x80007295,
+ 0x80024735, 0x80024814, 0x8000737a, 0x8000738b,
+ 0x80003eac, 0x800073a5, 0x80003eb8, 0x80003eb8,
+ 0x80007447, 0x8000745c, 0x80007471, 0x80007485,
+ 0x800074ca, 0x80003f1b, 0x80007524, 0x80024c36,
+ 0x8000753e, 0x80024c92, 0x80007570, 0x8002219f,
+ 0x80007610, 0x80024fa1, 0x80024fb8, 0x80025044,
+ 0x80003ffc, 0x80004008, 0x800076f4, 0x800250f3,
+ 0x800250f2, 0x80025119, 0x80025133, 0x8000771e,
+ 0x8000771f, 0x8000771f, 0x8000774a, 0x80004039,
+ 0x8000778b, 0x80004046, 0x80004096, 0x8002541d,
+ 0x8000784e, 0x8000788c, 0x800078cc, 0x800040e3,
+ 0x80025626, 0x80007956, 0x8002569a, 0x800256c5,
+ 0x8000798f, 0x800079eb, 0x8000412f, 0x80007a40,
+ 0x80007a4a, 0x80007a4f, 0x8002597c, 0x80025aa7,
+ 0x80025aa7, 0x80007aee, 0x80004202, 0x80025bab,
+ 0x80007bc6, 0x80007bc9, 0x80004227, 0x80025c80,
+ 0x80007cd2, 0x800042a0, 0x80007ce8, 0x80007ce3,
+ 0x80007d00, 0x80025f86, 0x80007d63, 0x80004301,
+ 0x80007dc7, 0x80007e02, 0x80007e45, 0x80004334,
+ 0x80026228, 0x80026247, 0x80004359, 0x800262d9,
+ 0x80007f7a, 0x8002633e, 0x80007f95, 0x80007ffa,
+ 0x80008005, 0x800264da, 0x80026523, 0x80008060,
+ 0x800265a8, 0x80008070, 0x8002335f, 0x800043d5,
+ 0x800080b2, 0x80008103, 0x8000440b, 0x8000813e,
+ 0x80005ab5, 0x800267a7, 0x800267b5, 0x80023393,
+ 0x8002339c, 0x80008201, 0x80008204, 0x80008f9e,
+ 0x8000446b, 0x80008291, 0x8000828b, 0x8000829d,
+ 0x800052b3, 0x800082b1, 0x800082b3, 0x800082bd,
+ 0x800082e6, 0x80026b3c, 0x800082e5, 0x8000831d,
+ 0x80008363, 0x800083ad, 0x80008323, 0x800083bd,
+ 0x800083e7, 0x80008457, 0x80008353, 0x800083ca,
+ 0x800083cc, 0x800083dc, 0x80026c36, 0x80026d6b,
+ 0x80026cd5, 0x8000452b, 0x800084f1, 0x800084f3,
+ 0x80008516, 0x800273ca, 0x80008564, 0x80026f2c,
+ 0x8000455d, 0x80004561, 0x80026fb1, 0x800270d2,
+ 0x8000456b, 0x80008650, 0x8000865c, 0x80008667,
+ 0x80008669, 0x800086a9, 0x80008688, 0x8000870e,
+ 0x800086e2, 0x80008779, 0x80008728, 0x8000876b,
+ 0x80008786, 0x800045d7, 0x800087e1, 0x80008801,
+ 0x800045f9, 0x80008860, 0x80008863, 0x80027667,
+ 0x800088d7, 0x800088de, 0x80004635, 0x800088fa,
+ 0x800034bb, 0x800278ae, 0x80027966, 0x800046be,
+ 0x800046c7, 0x80008aa0, 0x80008aed, 0x80008b8a,
+ 0x80008c55, 0x80027ca8, 0x80008cab, 0x80008cc1,
+ 0x80008d1b, 0x80008d77, 0x80027f2f, 0x80020804,
+ 0x80008dcb, 0x80008dbc, 0x80008df0, 0x800208de,
+ 0x80008ed4, 0x80008f38, 0x800285d2, 0x800285ed,
+ 0x80009094, 0x800090f1, 0x80009111, 0x8002872e,
+ 0x8000911b, 0x80009238, 0x800092d7, 0x800092d8,
+ 0x8000927c, 0x800093f9, 0x80009415, 0x80028bfa,
+ 0x8000958b, 0x80004995, 0x800095b7, 0x80028d77,
+ 0x800049e6, 0x800096c3, 0x80005db2, 0x80009723,
+ 0x80029145, 0x8002921a, 0x80004a6e, 0x80004a76,
+ 0x800097e0, 0x8002940a, 0x80004ab2, 0x80029496,
+ 0x8000980b, 0x8000980b, 0x80009829, 0x800295b6,
+ 0x800098e2, 0x80004b33, 0x80009929, 0x800099a7,
+ 0x800099c2, 0x800099fe, 0x80004bce, 0x80029b30,
+ 0x80009b12, 0x80009c40, 0x80009cfd, 0x80004cce,
+ 0x80004ced, 0x80009d67, 0x8002a0ce, 0x80004cf8,
+ 0x8002a105, 0x8002a20e, 0x8002a291, 0x80009ebb,
+ 0x80004d56, 0x80009ef9, 0x80009efe, 0x80009f05,
+ 0x80009f0f, 0x80009f16, 0x80009f3b, 0x8002a600,
+};
+
diff --git a/intl/unicharutil/nsCaseConversionImp2.cpp b/intl/unicharutil/nsCaseConversionImp2.cpp
new file mode 100644
index 000000000..617502137
--- /dev/null
+++ b/intl/unicharutil/nsCaseConversionImp2.cpp
@@ -0,0 +1,62 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsCaseConversionImp2.h"
+#include "nsUnicharUtils.h"
+
+NS_IMETHODIMP_(MozExternalRefCountType) nsCaseConversionImp2::AddRef(void)
+{
+ return (MozExternalRefCountType)1;
+}
+
+NS_IMETHODIMP_(MozExternalRefCountType) nsCaseConversionImp2::Release(void)
+{
+ return (MozExternalRefCountType)1;
+}
+
+NS_IMPL_QUERY_INTERFACE(nsCaseConversionImp2, nsICaseConversion)
+
+NS_IMETHODIMP nsCaseConversionImp2::ToUpper(char16_t aChar, char16_t* aReturn)
+{
+ *aReturn = ToUpperCase(aChar);
+ return NS_OK;
+}
+
+NS_IMETHODIMP nsCaseConversionImp2::ToLower(char16_t aChar, char16_t* aReturn)
+{
+ *aReturn = ToLowerCase(aChar);
+ return NS_OK;
+}
+
+NS_IMETHODIMP nsCaseConversionImp2::ToTitle(char16_t aChar, char16_t* aReturn)
+{
+ *aReturn = ToTitleCase(aChar);
+ return NS_OK;
+}
+
+NS_IMETHODIMP nsCaseConversionImp2::ToUpper(const char16_t* anArray,
+ char16_t* aReturn,
+ uint32_t aLen)
+{
+ ToUpperCase(anArray, aReturn, aLen);
+ return NS_OK;
+}
+
+NS_IMETHODIMP nsCaseConversionImp2::ToLower(const char16_t* anArray,
+ char16_t* aReturn,
+ uint32_t aLen)
+{
+ ToLowerCase(anArray, aReturn, aLen);
+ return NS_OK;
+}
+
+NS_IMETHODIMP
+nsCaseConversionImp2::CaseInsensitiveCompare(const char16_t *aLeft,
+ const char16_t *aRight,
+ uint32_t aCount, int32_t* aResult)
+{
+ *aResult = ::CaseInsensitiveCompare(aLeft, aRight, aCount);
+ return NS_OK;
+}
diff --git a/intl/unicharutil/nsCaseConversionImp2.h b/intl/unicharutil/nsCaseConversionImp2.h
new file mode 100644
index 000000000..6521ae832
--- /dev/null
+++ b/intl/unicharutil/nsCaseConversionImp2.h
@@ -0,0 +1,35 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef nsCaseConversionImp2_h__
+#define nsCaseConversionImp2_h__
+
+#include "nscore.h"
+#include "nsISupports.h"
+
+#include "nsICaseConversion.h"
+
+class nsCaseConversionImp2 : public nsICaseConversion {
+ NS_DECL_THREADSAFE_ISUPPORTS
+
+public:
+ virtual ~nsCaseConversionImp2() { }
+
+ static nsCaseConversionImp2* GetInstance();
+
+ NS_IMETHOD ToUpper(char16_t aChar, char16_t* aReturn) override;
+
+ NS_IMETHOD ToLower(char16_t aChar, char16_t* aReturn) override;
+
+ NS_IMETHOD ToTitle(char16_t aChar, char16_t* aReturn) override;
+
+ NS_IMETHOD ToUpper(const char16_t* anArray, char16_t* aReturn, uint32_t aLen) override;
+
+ NS_IMETHOD ToLower(const char16_t* anArray, char16_t* aReturn, uint32_t aLen) override;
+
+ NS_IMETHOD CaseInsensitiveCompare(const char16_t* aLeft, const char16_t* aRight, uint32_t aLength, int32_t *aResult) override;
+};
+
+#endif
diff --git a/intl/unicharutil/nsCategoryImp.cpp b/intl/unicharutil/nsCategoryImp.cpp
new file mode 100644
index 000000000..7d8c55140
--- /dev/null
+++ b/intl/unicharutil/nsCategoryImp.cpp
@@ -0,0 +1,32 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nscore.h"
+#include "nsISupports.h"
+#include "nsCategoryImp.h"
+#include "nsUnicodeProperties.h"
+
+NS_IMPL_QUERY_INTERFACE(nsCategoryImp, nsIUGenCategory)
+
+NS_IMETHODIMP_(MozExternalRefCountType) nsCategoryImp::AddRef(void)
+{
+ return MozExternalRefCountType(1);
+}
+
+NS_IMETHODIMP_(MozExternalRefCountType) nsCategoryImp::Release(void)
+{
+ return MozExternalRefCountType(1);
+}
+
+nsCategoryImp* nsCategoryImp::GetInstance()
+{
+ static nsCategoryImp categoryImp;
+ return &categoryImp;
+}
+
+nsIUGenCategory::nsUGenCategory nsCategoryImp::Get(uint32_t aChar)
+{
+ return mozilla::unicode::GetGenCategory(aChar);
+}
diff --git a/intl/unicharutil/nsCategoryImp.h b/intl/unicharutil/nsCategoryImp.h
new file mode 100644
index 000000000..6471fbdba
--- /dev/null
+++ b/intl/unicharutil/nsCategoryImp.h
@@ -0,0 +1,22 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+#ifndef nsCategoryImp_h__
+#define nsCategoryImp_h__
+
+#include "nsIUGenCategory.h"
+
+class nsCategoryImp : public nsIUGenCategory {
+ NS_DECL_THREADSAFE_ISUPPORTS
+
+public:
+ static nsCategoryImp* GetInstance();
+
+ /**
+ * Give a Unichar, return a nsUGenCategory
+ */
+ virtual nsUGenCategory Get(uint32_t aChar) override;
+};
+
+#endif /* nsCategoryImp_h__ */
diff --git a/intl/unicharutil/nsEntityConverter.cpp b/intl/unicharutil/nsEntityConverter.cpp
new file mode 100644
index 000000000..94853df74
--- /dev/null
+++ b/intl/unicharutil/nsEntityConverter.cpp
@@ -0,0 +1,173 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsEntityConverter.h"
+#include "nsLiteralString.h"
+#include "nsString.h"
+#include "mozilla/Services.h"
+#include "nsServiceManagerUtils.h"
+#include "nsCRT.h"
+
+//
+// implementation methods
+//
+nsEntityConverter::nsEntityConverter() { }
+
+nsEntityConverter::~nsEntityConverter() { }
+
+nsIStringBundle*
+nsEntityConverter:: GetVersionBundleInstance(uint32_t versionNumber)
+{
+ switch(versionNumber){
+ case nsIEntityConverter::html40Latin1:
+ if (!mHTML40Latin1Bundle) {
+ mHTML40Latin1Bundle = LoadEntityBundle(kHTML40LATIN1);
+ MOZ_ASSERT(mHTML40Latin1Bundle, "LoadEntityBundle failed");
+ }
+ return mHTML40Latin1Bundle;
+ case nsIEntityConverter::html40Symbols:
+ if (!mHTML40SymbolsBundle) {
+ mHTML40SymbolsBundle = LoadEntityBundle(kHTML40SYMBOLS);
+ MOZ_ASSERT(mHTML40SymbolsBundle, "LoadEntityBundle failed");
+ }
+ return mHTML40SymbolsBundle;
+ case nsIEntityConverter::html40Special:
+ if (!mHTML40SpecialBundle) {
+ mHTML40SpecialBundle = LoadEntityBundle(kHTML40SPECIAL);
+ MOZ_ASSERT(mHTML40SpecialBundle, "LoadEntityBundle failed");
+ }
+ return mHTML40SpecialBundle;
+ case nsIEntityConverter::mathml20:
+ if (!mMathML20Bundle) {
+ mMathML20Bundle = LoadEntityBundle(kMATHML20);
+ MOZ_ASSERT(mMathML20Bundle, "LoadEntityBundle failed");
+ }
+ return mMathML20Bundle;
+ default:
+ return nullptr;
+ }
+}
+
+already_AddRefed<nsIStringBundle>
+nsEntityConverter:: LoadEntityBundle(const char *fileName)
+{
+ NS_ENSURE_TRUE(fileName, nullptr);
+
+ nsAutoCString url("resource://gre/res/entityTables/");
+ nsresult rv;
+
+ nsCOMPtr<nsIStringBundleService> bundleService =
+ do_GetService(NS_STRINGBUNDLE_CONTRACTID, &rv);
+ NS_ENSURE_SUCCESS(rv, nullptr);
+
+ url.Append(fileName);
+
+ nsCOMPtr<nsIStringBundle> bundle;
+ rv = bundleService->CreateBundle(url.get(), getter_AddRefs(bundle));
+ NS_ENSURE_SUCCESS(rv, nullptr);
+
+ return bundle.forget();
+}
+
+//
+// nsISupports methods
+//
+NS_IMPL_ISUPPORTS(nsEntityConverter,nsIEntityConverter)
+
+//
+// nsIEntityConverter
+//
+NS_IMETHODIMP
+nsEntityConverter::ConvertToEntity(char16_t character, uint32_t entityVersion, char **_retval)
+{
+ return ConvertUTF32ToEntity((uint32_t)character, entityVersion, _retval);
+}
+
+NS_IMETHODIMP
+nsEntityConverter::ConvertUTF32ToEntity(uint32_t character, uint32_t entityVersion, char **_retval)
+{
+ NS_ASSERTION(_retval, "null ptr- _retval");
+ if (nullptr == _retval) {
+ return NS_ERROR_NULL_POINTER;
+ }
+ *_retval = nullptr;
+
+ for (uint32_t mask = 1, mask2 = 0xFFFFFFFFL; (0!=(entityVersion & mask2)); mask<<=1, mask2<<=1) {
+ if (0 == (entityVersion & mask)) {
+ continue;
+ }
+
+ nsIStringBundle* entities = GetVersionBundleInstance(entityVersion & mask);
+ NS_ASSERTION(entities, "Cannot get the entity");
+
+ if (!entities) {
+ continue;
+ }
+
+ nsAutoString key(NS_LITERAL_STRING("entity."));
+ key.AppendInt(character,10);
+
+ nsXPIDLString value;
+ nsresult rv = entities->GetStringFromName(key.get(), getter_Copies(value));
+ if (NS_SUCCEEDED(rv)) {
+ *_retval = ToNewCString(value);
+ return NS_OK;
+ }
+ }
+ return NS_ERROR_ILLEGAL_VALUE;
+}
+
+NS_IMETHODIMP
+nsEntityConverter::ConvertToEntities(const char16_t *inString, uint32_t entityVersion, char16_t **_retval)
+{
+ NS_ENSURE_ARG_POINTER(inString);
+ NS_ENSURE_ARG_POINTER(_retval);
+
+ *_retval = nullptr;
+
+ nsString outString;
+
+ // per character look for the entity
+ uint32_t len = NS_strlen(inString);
+ for (uint32_t i = 0; i < len; i++) {
+ nsAutoString key(NS_LITERAL_STRING("entity."));
+ if (NS_IS_HIGH_SURROGATE(inString[i]) && i + 2 < len && NS_IS_LOW_SURROGATE(inString[i + 1])) {
+ key.AppendInt(SURROGATE_TO_UCS4(inString[i], inString[i+1]), 10);
+ ++i;
+ } else {
+ key.AppendInt(inString[i],10);
+ }
+
+ nsXPIDLString value;
+ const char16_t *entity = nullptr;
+
+ for (uint32_t mask = 1, mask2 = 0xFFFFFFFFL; (0!=(entityVersion & mask2)); mask<<=1, mask2<<=1) {
+ if (0 == (entityVersion & mask)) {
+ continue;
+ }
+ nsIStringBundle* entities = GetVersionBundleInstance(entityVersion & mask);
+ NS_ASSERTION(entities, "Cannot get the property file");
+
+ if (!entities) {
+ continue;
+ }
+
+ nsresult rv = entities->GetStringFromName(key.get(), getter_Copies(value));
+ if (NS_SUCCEEDED(rv)) {
+ entity = value.get();
+ break;
+ }
+ }
+ if (entity) {
+ outString.Append(entity);
+ } else {
+ outString.Append(&inString[i], 1);
+ }
+ }
+
+ *_retval = ToNewUnicode(outString);
+
+ return NS_OK;
+}
diff --git a/intl/unicharutil/nsEntityConverter.h b/intl/unicharutil/nsEntityConverter.h
new file mode 100644
index 000000000..cb78d9bfe
--- /dev/null
+++ b/intl/unicharutil/nsEntityConverter.h
@@ -0,0 +1,49 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef nsEntityConverter_h__
+#define nsEntityConverter_h__
+
+#include "nsIEntityConverter.h"
+#include "nsIStringBundle.h"
+#include "nsCOMPtr.h"
+
+class nsEntityConverter: public nsIEntityConverter
+{
+public:
+ //
+ // implementation methods
+ //
+ nsEntityConverter();
+
+ //
+ // nsISupports
+ //
+ NS_DECL_ISUPPORTS
+
+ NS_IMETHOD ConvertUTF32ToEntity(uint32_t character, uint32_t entityVersion, char **_retval) override;
+ NS_IMETHOD ConvertToEntity(char16_t character, uint32_t entityVersion, char **_retval) override;
+ NS_IMETHOD ConvertToEntities(const char16_t *inString, uint32_t entityVersion, char16_t **_retval) override;
+
+protected:
+ // map version number to a string bundle
+ nsIStringBundle* GetVersionBundleInstance(uint32_t versionNumber);
+
+ // load a string bundle file
+ already_AddRefed<nsIStringBundle> LoadEntityBundle(const char *fileName);
+
+ const char* kHTML40LATIN1 = "html40Latin1.properties";
+ const char* kHTML40SYMBOLS = "html40Symbols.properties";
+ const char* kHTML40SPECIAL = "html40Special.properties";
+ const char* kMATHML20 = "mathml20.properties";
+ nsCOMPtr<nsIStringBundle> mHTML40Latin1Bundle;
+ nsCOMPtr<nsIStringBundle> mHTML40SymbolsBundle;
+ nsCOMPtr<nsIStringBundle> mHTML40SpecialBundle;
+ nsCOMPtr<nsIStringBundle> mMathML20Bundle;
+
+ virtual ~nsEntityConverter();
+};
+
+#endif
diff --git a/intl/unicharutil/nsICaseConversion.h b/intl/unicharutil/nsICaseConversion.h
new file mode 100644
index 000000000..06d5dc5a1
--- /dev/null
+++ b/intl/unicharutil/nsICaseConversion.h
@@ -0,0 +1,45 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+#ifndef nsICaseConversion_h__
+#define nsICaseConversion_h__
+
+
+#include "nsISupports.h"
+#include "nscore.h"
+
+// {07D3D8E0-9614-11d2-B3AD-00805F8A6670}
+#define NS_ICASECONVERSION_IID \
+{ 0x7d3d8e0, 0x9614, 0x11d2, \
+ { 0xb3, 0xad, 0x0, 0x80, 0x5f, 0x8a, 0x66, 0x70 } }
+
+class nsICaseConversion : public nsISupports {
+
+public:
+
+ NS_DECLARE_STATIC_IID_ACCESSOR(NS_ICASECONVERSION_IID)
+
+ // Convert one Unicode character into upper case
+ NS_IMETHOD ToUpper( char16_t aChar, char16_t* aReturn) = 0;
+
+ // Convert one Unicode character into lower case
+ NS_IMETHOD ToLower( char16_t aChar, char16_t* aReturn) = 0;
+
+ // Convert one Unicode character into title case
+ NS_IMETHOD ToTitle( char16_t aChar, char16_t* aReturn) = 0;
+
+ // Convert an array of Unicode characters into upper case
+ NS_IMETHOD ToUpper( const char16_t* anArray, char16_t* aReturn, uint32_t aLen) = 0;
+
+ // Convert an array of Unicode characters into lower case
+ NS_IMETHOD ToLower( const char16_t* anArray, char16_t* aReturn, uint32_t aLen) = 0;
+
+ // case-insensitive char16_t* comparison - aResult returns similar
+ // to strcasecmp
+ NS_IMETHOD CaseInsensitiveCompare(const char16_t* aLeft, const char16_t* aRight, uint32_t aLength, int32_t* aResult) = 0;
+};
+
+NS_DEFINE_STATIC_IID_ACCESSOR(nsICaseConversion, NS_ICASECONVERSION_IID)
+
+#endif /* nsICaseConversion_h__ */
diff --git a/intl/unicharutil/nsIEntityConverter.idl b/intl/unicharutil/nsIEntityConverter.idl
new file mode 100644
index 000000000..865ef3dc3
--- /dev/null
+++ b/intl/unicharutil/nsIEntityConverter.idl
@@ -0,0 +1,31 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsISupports.idl"
+
+%{C++
+// {9E9B565A-8E52-4C1A-8805-B2B91655F874}
+#define NS_ENTITYCONVERTER_CID { 0x9e9b565a, 0x8e52, 0x4c1a, {0x88, 0x05, 0xb2, 0xb9, 0x16, 0x55, 0xf8, 0x74}}
+#define NS_ENTITYCONVERTER_CONTRACTID "@mozilla.org/intl/entityconverter;1"
+%}
+
+[scriptable, uuid(D14C7111-55E0-11d3-91D9-00105AA3F7DC)]
+interface nsIEntityConverter : nsISupports
+{
+ const unsigned long entityNone = 0;
+ const unsigned long html40Latin1 = 1;
+ const unsigned long html40Symbols = 2;
+ const unsigned long html40Special = 4; // excludes &quot, &amp, &lt, &gt
+ const unsigned long transliterate = 8; // Obsolete
+ const unsigned long mathml20 = 16;
+ const unsigned long html32 = html40Latin1;
+ const unsigned long html40 = html40Latin1+html40Symbols+html40Special;
+ const unsigned long entityW3C = html40+mathml20;
+
+ string ConvertUTF32ToEntity(in unsigned long character, in unsigned long entityVersion);
+ string ConvertToEntity(in wchar character, in unsigned long entityVersion);
+
+ wstring ConvertToEntities(in wstring inString, in unsigned long entityVersion);
+};
diff --git a/intl/unicharutil/nsISaveAsCharset.idl b/intl/unicharutil/nsISaveAsCharset.idl
new file mode 100644
index 000000000..c32960177
--- /dev/null
+++ b/intl/unicharutil/nsISaveAsCharset.idl
@@ -0,0 +1,50 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsISupports.idl"
+#include "nsIEntityConverter.idl"
+
+%{C++
+#define NS_SAVEASCHARSET_CID { 0xcd233e0, 0x7a86, 0x11d3, { 0x91, 0x5c, 0x0, 0x60, 0x8, 0xa6, 0xed, 0xf6 } }
+#define NS_SAVEASCHARSET_CONTRACTID "@mozilla.org/intl/saveascharset;1"
+%}
+
+/**
+ * DO NOT USE! For compat with legacy extension code only.
+ */
+[scriptable, uuid(b3b8124f-0abb-460e-88ac-3cf1a0134b2d)]
+interface nsISaveAsCharset : nsISupports
+{
+ // attributes
+ const unsigned long mask_Fallback = 0x000000FF; // mask for fallback (8bits)
+ const unsigned long mask_Entity = 0x00000300; // mask for entity (2bits)
+ const unsigned long mask_CharsetFallback = 0x00000400; // mask for charset fallback (1bit)
+
+ const unsigned long attr_FallbackNone = 0; // IGNORED
+ const unsigned long attr_FallbackQuestionMark = 1; // IGNORED
+ const unsigned long attr_FallbackEscapeU = 2; // IGNORED
+ const unsigned long attr_FallbackDecimalNCR = 3; // IGNORED
+ const unsigned long attr_FallbackHexNCR = 4; // IGNORED
+
+ const unsigned long attr_EntityNone = 0; // IGNORED
+ const unsigned long attr_EntityBeforeCharsetConv = 0x00000100; // IGNORED
+ const unsigned long attr_EntityAfterCharsetConv = 0x00000200; // IGNORED
+
+ const unsigned long attr_CharsetFallback = 0x00000400; // IGNORED
+
+
+ // default attribute for plain text
+ const unsigned long attr_plainTextDefault = attr_FallbackNone + attr_EntityNone;
+
+ // default attribute for html text
+ // generate entity before charset conversion, use decimal NCR
+ const unsigned long attr_htmlTextDefault = attr_FallbackDecimalNCR + attr_EntityBeforeCharsetConv;
+
+ readonly attribute AUTF8String charset; // charset used for the conversion
+
+ void Init(in AUTF8String charset, in unsigned long ignored, in unsigned long alsoIgnored);
+
+ ACString Convert(in AString inString);
+};
diff --git a/intl/unicharutil/nsIUGenCategory.h b/intl/unicharutil/nsIUGenCategory.h
new file mode 100644
index 000000000..dd9d7c53a
--- /dev/null
+++ b/intl/unicharutil/nsIUGenCategory.h
@@ -0,0 +1,47 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+#ifndef nsIUGenCategory_h__
+#define nsIUGenCategory_h__
+
+
+#include "nsISupports.h"
+#include "nscore.h"
+
+// {671fea05-fcee-4b1c-82a3-6eb03eda8ddc}
+#define NS_IUGENCATEGORY_IID \
+{ 0x671fea05, 0xfcee, 0x4b1c, \
+ { 0x82, 0xa3, 0x6e, 0xb0, 0x3e, 0xda, 0x8d, 0xdc } }
+
+
+class nsIUGenCategory : public nsISupports {
+
+public:
+
+ NS_DECLARE_STATIC_IID_ACCESSOR(NS_IUGENCATEGORY_IID)
+
+ /**
+ * Read http://unicode.org/reports/tr44/#General_Category_Values
+ * for the detailed definition of the following categories
+ */
+ typedef enum {
+ kUndefined = 0,
+ kMark = 1, // Mn, Mc, and Me
+ kNumber = 2, // Nd, Nl, and No
+ kSeparator = 3, // Zs, Zl, and Zp
+ kOther = 4, // Cc, Cf, Cs, Co, and Cn
+ kLetter = 5, // Lu, Ll, Lt, Lm, and Lo
+ kPunctuation = 6, // Pc, Pd, Ps, Pe, Pi, Pf, and Po
+ kSymbol = 7 // Sm, Sc, Sk, and So
+ } nsUGenCategory;
+
+ /**
+ * Give a Unichar, return a nsUGenCategory
+ */
+ virtual nsUGenCategory Get(uint32_t aChar) = 0;
+};
+
+NS_DEFINE_STATIC_IID_ACCESSOR(nsIUGenCategory, NS_IUGENCATEGORY_IID)
+
+#endif /* nsIUGenCategory_h__ */
diff --git a/intl/unicharutil/nsIUnicodeNormalizer.idl b/intl/unicharutil/nsIUnicodeNormalizer.idl
new file mode 100644
index 000000000..4e88a6c2e
--- /dev/null
+++ b/intl/unicharutil/nsIUnicodeNormalizer.idl
@@ -0,0 +1,33 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsISupports.idl"
+
+%{C++
+#define NS_UNICODE_NORMALIZER_CID { 0xa665e49a, 0xf3e6, 0x4fed, { 0x9f, 0x31, 0xf7, 0xc5, 0x68, 0xa2, 0x98, 0x99 } }
+#define NS_UNICODE_NORMALIZER_CONTRACTID "@mozilla.org/intl/unicodenormalizer;1"
+%}
+
+[scriptable, uuid(B43A461F-1BCF-4329-820B-66E48C979E14)]
+interface nsIUnicodeNormalizer : nsISupports
+{
+ /**
+ * Normalize Unicode (NFD, NFC, NFKD, NFKC).
+ *
+ * NFD: Canonical Decomposition
+ * NFC: Canonical Decomposition, followed by Canonical Composition
+ * NFKD: Compatibility Decomposition
+ * NFKC: Compatibility Decomposition, followed by Canonical Composition
+ * Reference: Unicode Standard, TR15, Unicode Normalization Forms
+ *
+ * @param aSrc [IN] nsAString which contains an input UTF-16 string.
+ * @param aDest [OUT] A pointer to an output buffer provided by a callee.
+ * @return NS_OK for success,
+ */
+ void NormalizeUnicodeNFD(in AString aSrc, out AString aDest);
+ void NormalizeUnicodeNFC(in AString aSrc, out AString aDest);
+ void NormalizeUnicodeNFKD(in AString aSrc, out AString aDest);
+ void NormalizeUnicodeNFKC(in AString aSrc, out AString aDest);
+};
diff --git a/intl/unicharutil/nsSaveAsCharset.cpp b/intl/unicharutil/nsSaveAsCharset.cpp
new file mode 100644
index 000000000..2b05c9677
--- /dev/null
+++ b/intl/unicharutil/nsSaveAsCharset.cpp
@@ -0,0 +1,56 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsSaveAsCharset.h"
+#include "mozilla/dom/EncodingUtils.h"
+
+//
+// nsISupports methods
+//
+NS_IMPL_ISUPPORTS(nsSaveAsCharset, nsISaveAsCharset)
+
+//
+// nsSaveAsCharset
+//
+nsSaveAsCharset::nsSaveAsCharset()
+{
+}
+
+nsSaveAsCharset::~nsSaveAsCharset()
+{
+}
+
+NS_IMETHODIMP
+nsSaveAsCharset::Init(const nsACString& aCharset, uint32_t aIgnored, uint32_t aAlsoIgnored)
+{
+ nsAutoCString encoding;
+ if (!mozilla::dom::EncodingUtils::FindEncodingForLabelNoReplacement(aCharset, encoding)) {
+ return NS_ERROR_DOM_ENCODING_NOT_SUPPORTED_ERR;
+ }
+ mEncoder = new nsNCRFallbackEncoderWrapper(encoding);
+ mCharset.Assign(encoding);
+ return NS_OK;
+}
+
+NS_IMETHODIMP
+nsSaveAsCharset::Convert(const nsAString& aIn, nsACString& aOut)
+{
+ if (!mEncoder) {
+ return NS_ERROR_DOM_ENCODING_NOT_SUPPORTED_ERR;
+ }
+
+ if (!mEncoder->Encode(aIn, aOut)) {
+ return NS_ERROR_OUT_OF_MEMORY;
+ }
+ return NS_OK;
+}
+
+NS_IMETHODIMP
+nsSaveAsCharset::GetCharset(nsACString& aCharset)
+{
+ aCharset.Assign(mCharset);
+ return NS_OK;
+}
diff --git a/intl/unicharutil/nsSaveAsCharset.h b/intl/unicharutil/nsSaveAsCharset.h
new file mode 100644
index 000000000..371bd141c
--- /dev/null
+++ b/intl/unicharutil/nsSaveAsCharset.h
@@ -0,0 +1,37 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef nsSaveAsCharset_h_
+#define nsSaveAsCharset_h_
+
+#include "nsStringFwd.h"
+#include "nsISaveAsCharset.h"
+#include "nsAutoPtr.h"
+#include "nsNCRFallbackEncoderWrapper.h"
+#include "nsString.h"
+
+class nsSaveAsCharset : public nsISaveAsCharset
+{
+public:
+
+ nsSaveAsCharset();
+
+ NS_DECL_ISUPPORTS
+
+ NS_IMETHOD Init(const nsACString& aCharset, uint32_t aIgnored, uint32_t aAlsoIgnored) override;
+
+ NS_IMETHOD Convert(const nsAString& ain, nsACString& aOut) override;
+
+ NS_IMETHOD GetCharset(nsACString& aCharset) override;
+
+private:
+
+ virtual ~nsSaveAsCharset();
+
+ nsAutoPtr<nsNCRFallbackEncoderWrapper> mEncoder;
+ nsCString mCharset;
+};
+
+#endif
diff --git a/intl/unicharutil/nsUnicharUtilCIID.h b/intl/unicharutil/nsUnicharUtilCIID.h
new file mode 100644
index 000000000..16aad35fe
--- /dev/null
+++ b/intl/unicharutil/nsUnicharUtilCIID.h
@@ -0,0 +1,24 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+#ifndef nsUnicharUtilCIID_h__
+#define nsUnicharUtilCIID_h__
+
+
+#include "nsISupports.h"
+#include "nscore.h"
+
+#define NS_UNICHARUTIL_CID \
+{ 0xcc10c750, 0x9ec3, 0x11d2, \
+ { 0xb3, 0xae, 0x0, 0x80, 0x5f, 0x8a, 0x66, 0x70 } }
+
+#define NS_UNICHARUTIL_CONTRACTID "@mozilla.org/intl/unicharutil;1"
+
+#define NS_UNICHARCATEGORY_CID \
+{ 0x748a1132, 0x671a, 0x409a, \
+ { 0x8d, 0x1d, 0xf1, 0xcd, 0xf6, 0xb3, 0xa6, 0xb4 } }
+
+#define NS_UNICHARCATEGORY_CONTRACTID "@mozilla.org/intl/unicharcategory;1"
+
+#endif
diff --git a/intl/unicharutil/nsUnicodeNormalizer.cpp b/intl/unicharutil/nsUnicodeNormalizer.cpp
new file mode 100644
index 000000000..16c3a969c
--- /dev/null
+++ b/intl/unicharutil/nsUnicodeNormalizer.cpp
@@ -0,0 +1,704 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+
+/* This file is modified from JPNIC's mDNKit, it is under both MPL and
+ * JPNIC's license.
+ */
+
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/*
+ * Copyright (c) 2000,2002 Japan Network Information Center.
+ * All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set forth bellow.
+ *
+ * LICENSE TERMS AND CONDITIONS
+ *
+ * The following License Terms and Conditions apply, unless a different
+ * license is obtained from Japan Network Information Center ("JPNIC"),
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
+ *
+ * 1. Use, Modification and Redistribution (including distribution of any
+ * modified or derived work) in source and/or binary forms is permitted
+ * under this License Terms and Conditions.
+ *
+ * 2. Redistribution of source code must retain the copyright notices as they
+ * appear in each source code file, this License Terms and Conditions.
+ *
+ * 3. Redistribution in binary form must reproduce the Copyright Notice,
+ * this License Terms and Conditions, in the documentation and/or other
+ * materials provided with the distribution. For the purposes of binary
+ * distribution the "Copyright Notice" refers to the following language:
+ * "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved."
+ *
+ * 4. The name of JPNIC may not be used to endorse or promote products
+ * derived from this Software without specific prior written approval of
+ * JPNIC.
+ *
+ * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ */
+
+#include <string.h>
+
+#include "nsMemory.h"
+#include "nsUnicodeNormalizer.h"
+#include "nsString.h"
+#include "mozilla/BinarySearch.h"
+
+NS_IMPL_ISUPPORTS(nsUnicodeNormalizer, nsIUnicodeNormalizer)
+
+
+nsUnicodeNormalizer::nsUnicodeNormalizer()
+{
+}
+
+nsUnicodeNormalizer::~nsUnicodeNormalizer()
+{
+}
+
+
+
+#define END_BIT 0x80000000
+
+
+/*
+ * Some constants for Hangul decomposition/composition.
+ * These things were taken from unicode book.
+ */
+#define SBase 0xac00
+#define LBase 0x1100
+#define VBase 0x1161
+#define TBase 0x11a7
+#define LCount 19
+#define VCount 21
+#define TCount 28
+#define SLast (SBase + LCount * VCount * TCount)
+
+struct composition {
+ uint32_t c2; /* 2nd character */
+ uint32_t comp; /* composed character */
+};
+
+
+#include "normalization_data.h"
+
+/*
+ * Macro for multi-level index table.
+ */
+#define LOOKUPTBL(vprefix, mprefix, v) \
+ DMAP(vprefix)[\
+ IMAP(vprefix)[\
+ IMAP(vprefix)[IDX0(mprefix, v)] + IDX1(mprefix, v)\
+ ]\
+ ].tbl[IDX2(mprefix, v)]
+
+#define IDX0(mprefix, v) IDX_0(v, BITS1(mprefix), BITS2(mprefix))
+#define IDX1(mprefix, v) IDX_1(v, BITS1(mprefix), BITS2(mprefix))
+#define IDX2(mprefix, v) IDX_2(v, BITS1(mprefix), BITS2(mprefix))
+
+#define IDX_0(v, bits1, bits2) ((v) >> ((bits1) + (bits2)))
+#define IDX_1(v, bits1, bits2) (((v) >> (bits2)) & ((1 << (bits1)) - 1))
+#define IDX_2(v, bits1, bits2) ((v) & ((1 << (bits2)) - 1))
+
+#define BITS1(mprefix) mprefix ## _BITS_1
+#define BITS2(mprefix) mprefix ## _BITS_2
+
+#define IMAP(vprefix) vprefix ## _imap
+#define DMAP(vprefix) vprefix ## _table
+#define SEQ(vprefix) vprefix ## _seq
+
+static int32_t
+canonclass(uint32_t c) {
+ /* Look up canonicalclass table. */
+ return (LOOKUPTBL(canon_class, CANON_CLASS, c));
+}
+
+static int32_t
+decompose_char(uint32_t c, const uint32_t **seqp)
+{
+ /* Look up decomposition table. */
+ int32_t seqidx = LOOKUPTBL(decompose, DECOMP, c);
+ *seqp = SEQ(decompose) + (seqidx & ~DECOMP_COMPAT);
+ return (seqidx);
+}
+
+static int32_t
+compose_char(uint32_t c,
+ const struct composition **compp)
+{
+ /* Look up composition table. */
+ int32_t seqidx = LOOKUPTBL(compose, CANON_COMPOSE, c);
+ *compp = SEQ(compose) + (seqidx & 0xffff);
+ return (seqidx >> 16);
+}
+
+static nsresult
+mdn__unicode_decompose(int32_t compat, uint32_t *v, size_t vlen,
+ uint32_t c, int32_t *decomp_lenp)
+{
+ uint32_t *vorg = v;
+ int32_t seqidx;
+ const uint32_t *seq;
+
+ //assert(v != nullptr && vlen >= 0 && decomp_lenp != nullptr);
+
+ /*
+ * First, check for Hangul.
+ */
+ if (SBase <= c && c < SLast) {
+ int32_t idx, t_offset, v_offset, l_offset;
+
+ idx = c - SBase;
+ t_offset = idx % TCount;
+ idx /= TCount;
+ v_offset = idx % VCount;
+ l_offset = idx / VCount;
+ if ((t_offset == 0 && vlen < 2) || (t_offset > 0 && vlen < 3))
+ return (NS_ERROR_UNORM_MOREOUTPUT);
+ *v++ = LBase + l_offset;
+ *v++ = VBase + v_offset;
+ if (t_offset > 0)
+ *v++ = TBase + t_offset;
+ *decomp_lenp = v - vorg;
+ return (NS_OK);
+ }
+
+ /*
+ * Look up decomposition table. If no decomposition is defined
+ * or if it is a compatibility decomosition when canonical
+ * decomposition requested, return 'NS_SUCCESS_UNORM_NOTFOUND'.
+ */
+ seqidx = decompose_char(c, &seq);
+ if (seqidx == 0 || (compat == 0 && (seqidx & DECOMP_COMPAT) != 0))
+ return (NS_SUCCESS_UNORM_NOTFOUND);
+
+ /*
+ * Copy the decomposed sequence. The end of the sequence are
+ * marked with END_BIT.
+ */
+ do {
+ uint32_t c;
+ int32_t dlen;
+ nsresult r;
+
+ c = *seq & ~END_BIT;
+
+ /* Decompose recursively. */
+ r = mdn__unicode_decompose(compat, v, vlen, c, &dlen);
+ if (r == NS_OK) {
+ v += dlen;
+ vlen -= dlen;
+ } else if (r == NS_SUCCESS_UNORM_NOTFOUND) {
+ if (vlen < 1)
+ return (NS_ERROR_UNORM_MOREOUTPUT);
+ *v++ = c;
+ vlen--;
+ } else {
+ return (r);
+ }
+
+ } while ((*seq++ & END_BIT) == 0);
+
+ *decomp_lenp = v - vorg;
+
+ return (NS_OK);
+}
+
+static int32_t
+mdn__unicode_iscompositecandidate(uint32_t c)
+{
+ const struct composition *dummy;
+
+ /* Check for Hangul */
+ if ((LBase <= c && c < LBase + LCount) || (SBase <= c && c < SLast))
+ return (1);
+
+ /*
+ * Look up composition table. If there are no composition
+ * that begins with the given character, it is not a
+ * composition candidate.
+ */
+ if (compose_char(c, &dummy) == 0)
+ return (0);
+ else
+ return (1);
+}
+
+namespace {
+
+struct SequenceAdaptor
+{
+ const composition* const mSequence;
+ explicit SequenceAdaptor(const composition* aSequence) : mSequence(aSequence) {}
+ uint32_t operator[](size_t aIdx) const {
+ return mSequence[aIdx].c2;
+ }
+};
+
+} // namespace
+
+static nsresult
+mdn__unicode_compose(uint32_t c1, uint32_t c2, uint32_t *compp)
+{
+ int32_t n;
+ const struct composition *cseq;
+
+ //assert(compp != nullptr);
+
+ /*
+ * Check for Hangul.
+ */
+ if (LBase <= c1 && c1 < LBase + LCount &&
+ VBase <= c2 && c2 < VBase + VCount) {
+ /*
+ * Hangul L and V.
+ */
+ *compp = SBase +
+ ((c1 - LBase) * VCount + (c2 - VBase)) * TCount;
+ return (NS_OK);
+ } else if (SBase <= c1 && c1 < SLast &&
+ TBase <= c2 && c2 < TBase + TCount &&
+ (c1 - SBase) % TCount == 0) {
+ /*
+ * Hangul LV and T.
+ */
+ *compp = c1 + (c2 - TBase);
+ return (NS_OK);
+ }
+
+ /*
+ * Look up composition table. If the result is 0, no composition
+ * is defined. Otherwise, upper 16bits of the result contains
+ * the number of composition that begins with 'c1', and the lower
+ * 16bits is the offset in 'compose_seq'.
+ */
+ if ((n = compose_char(c1, &cseq)) == 0)
+ return (NS_SUCCESS_UNORM_NOTFOUND);
+
+ /*
+ * The composite sequences are sorted by the 2nd character 'c2'.
+ * So we can use binary search.
+ */
+ size_t idx;
+ if (mozilla::BinarySearch(SequenceAdaptor(cseq), 0, n, c2, &idx)) {
+ *compp = cseq[idx].comp;
+ return (NS_OK);
+ }
+
+ return (NS_SUCCESS_UNORM_NOTFOUND);
+}
+
+
+#define WORKBUF_SIZE 128
+#define WORKBUF_SIZE_MAX 10000
+
+typedef struct {
+ int32_t cur; /* pointing now processing character */
+ int32_t last; /* pointing just after the last character */
+ int32_t size; /* size of UCS and CLASS array */
+ uint32_t *ucs; /* UCS-4 characters */
+ int32_t *cclass; /* and their canonical classes */
+ uint32_t ucs_buf[WORKBUF_SIZE]; /* local buffer */
+ int32_t class_buf[WORKBUF_SIZE]; /* ditto */
+} workbuf_t;
+
+static nsresult decompose(workbuf_t *wb, uint32_t c, int32_t compat);
+static void get_class(workbuf_t *wb);
+static void reorder(workbuf_t *wb);
+static void compose(workbuf_t *wb);
+static nsresult flush_before_cur(workbuf_t *wb, nsAString& aToStr);
+static void workbuf_init(workbuf_t *wb);
+static void workbuf_free(workbuf_t *wb);
+static nsresult workbuf_extend(workbuf_t *wb);
+static nsresult workbuf_append(workbuf_t *wb, uint32_t c);
+static void workbuf_shift(workbuf_t *wb, int32_t shift);
+static void workbuf_removevoid(workbuf_t *wb);
+
+
+static nsresult
+mdn_normalize(bool do_composition, bool compat,
+ const nsAString& aSrcStr, nsAString& aToStr)
+{
+ workbuf_t wb;
+ nsresult r = NS_OK;
+ /*
+ * Initialize working buffer.
+ */
+ workbuf_init(&wb);
+
+ nsAString::const_iterator start, end;
+ aSrcStr.BeginReading(start);
+ aSrcStr.EndReading(end);
+
+ while (start != end) {
+ uint32_t c;
+ char16_t curChar;
+
+ //assert(wb.cur == wb.last);
+
+ /*
+ * Get one character from 'from'.
+ */
+ curChar= *start++;
+
+ if (NS_IS_HIGH_SURROGATE(curChar) && start != end && NS_IS_LOW_SURROGATE(*(start)) ) {
+ c = SURROGATE_TO_UCS4(curChar, *start);
+ ++start;
+ } else {
+ c = curChar;
+ }
+
+ /*
+ * Decompose it.
+ */
+ if ((r = decompose(&wb, c, compat)) != NS_OK)
+ break;
+
+ /*
+ * Get canonical class.
+ */
+ get_class(&wb);
+
+ /*
+ * Reorder & compose.
+ */
+ for (; wb.cur < wb.last; wb.cur++) {
+ if (wb.cur == 0) {
+ continue;
+ } else if (wb.cclass[wb.cur] > 0) {
+ /*
+ * This is not a starter. Try reordering.
+ * Note that characters up to it are
+ * already in canonical order.
+ */
+ reorder(&wb);
+ continue;
+ }
+
+ /*
+ * This is a starter character, and there are
+ * some characters before it. Those characters
+ * have been reordered properly, and
+ * ready for composition.
+ */
+ if (do_composition && wb.cclass[0] == 0)
+ compose(&wb);
+
+ /*
+ * If CUR points to a starter character,
+ * then process of characters before CUR are
+ * already finished, because any further
+ * reordering/composition for them are blocked
+ * by the starter CUR points.
+ */
+ if (wb.cur > 0 && wb.cclass[wb.cur] == 0) {
+ /* Flush everything before CUR. */
+ r = flush_before_cur(&wb, aToStr);
+ if (r != NS_OK)
+ break;
+ }
+ }
+ }
+
+ if (r == NS_OK) {
+ if (do_composition && wb.cur > 0 && wb.cclass[0] == 0) {
+ /*
+ * There is some characters left in WB.
+ * They are ordered, but not composed yet.
+ * Now CUR points just after the last character in WB,
+ * and since compose() tries to compose characters
+ * between top and CUR inclusive, we must make CUR
+ * one character back during compose().
+ */
+ wb.cur--;
+ compose(&wb);
+ wb.cur++;
+ }
+ /*
+ * Call this even when WB.CUR == 0, to make TO
+ * NUL-terminated.
+ */
+ r = flush_before_cur(&wb, aToStr);
+ }
+
+ workbuf_free(&wb);
+
+ return (r);
+}
+
+static nsresult
+decompose(workbuf_t *wb, uint32_t c, int32_t compat) {
+ nsresult r;
+ int32_t dec_len;
+
+again:
+ r = mdn__unicode_decompose(compat, wb->ucs + wb->last,
+ wb->size - wb->last, c, &dec_len);
+ switch (r) {
+ case NS_OK:
+ wb->last += dec_len;
+ return (NS_OK);
+ case NS_SUCCESS_UNORM_NOTFOUND:
+ return (workbuf_append(wb, c));
+ case NS_ERROR_UNORM_MOREOUTPUT:
+ if ((r = workbuf_extend(wb)) != NS_OK)
+ return (r);
+ if (wb->size > WORKBUF_SIZE_MAX) {
+ // "mdn__unormalize_form*: " "working buffer too large\n"
+ return (NS_ERROR_FAILURE);
+ }
+ goto again;
+ default:
+ return (r);
+ }
+ /* NOTREACHED */
+}
+
+static void
+get_class(workbuf_t *wb) {
+ int32_t i;
+
+ for (i = wb->cur; i < wb->last; i++)
+ wb->cclass[i] = canonclass(wb->ucs[i]);
+}
+
+static void
+reorder(workbuf_t *wb) {
+ uint32_t c;
+ int32_t i;
+ int32_t cclass;
+
+ //assert(wb != nullptr);
+
+ i = wb->cur;
+ c = wb->ucs[i];
+ cclass = wb->cclass[i];
+
+ while (i > 0 && wb->cclass[i - 1] > cclass) {
+ wb->ucs[i] = wb->ucs[i - 1];
+ wb->cclass[i] =wb->cclass[i - 1];
+ i--;
+ wb->ucs[i] = c;
+ wb->cclass[i] = cclass;
+ }
+}
+
+static void
+compose(workbuf_t *wb) {
+ int32_t cur;
+ uint32_t *ucs;
+ int32_t *cclass;
+ int32_t last_class;
+ int32_t nvoids;
+ int32_t i;
+
+ //assert(wb != nullptr && wb->cclass[0] == 0);
+
+ cur = wb->cur;
+ ucs = wb->ucs;
+ cclass = wb->cclass;
+
+ /*
+ * If there are no decomposition sequence that begins with
+ * the top character, composition is impossible.
+ */
+ if (!mdn__unicode_iscompositecandidate(ucs[0]))
+ return;
+
+ last_class = 0;
+ nvoids = 0;
+ for (i = 1; i <= cur; i++) {
+ uint32_t c;
+ int32_t cl = cclass[i];
+
+ if ((last_class < cl || cl == 0) &&
+ mdn__unicode_compose(ucs[0], ucs[i],
+ &c) == NS_OK) {
+ /*
+ * Replace the top character with the composed one.
+ */
+ ucs[0] = c;
+ cclass[0] = canonclass(c);
+
+ cclass[i] = -1; /* void this character */
+ nvoids++;
+ } else {
+ last_class = cl;
+ }
+ }
+
+ /* Purge void characters, if any. */
+ if (nvoids > 0)
+ workbuf_removevoid(wb);
+}
+
+static nsresult
+flush_before_cur(workbuf_t *wb, nsAString& aToStr)
+{
+ int32_t i;
+
+ for (i = 0; i < wb->cur; i++) {
+ if (!IS_IN_BMP(wb->ucs[i])) {
+ aToStr.Append((char16_t)H_SURROGATE(wb->ucs[i]));
+ aToStr.Append((char16_t)L_SURROGATE(wb->ucs[i]));
+ } else {
+ aToStr.Append((char16_t)(wb->ucs[i]));
+ }
+ }
+
+ workbuf_shift(wb, wb->cur);
+
+ return (NS_OK);
+}
+
+static void
+workbuf_init(workbuf_t *wb) {
+ wb->cur = 0;
+ wb->last = 0;
+ wb->size = WORKBUF_SIZE;
+ wb->ucs = wb->ucs_buf;
+ wb->cclass = wb->class_buf;
+}
+
+static void
+workbuf_free(workbuf_t *wb) {
+ if (wb->ucs != wb->ucs_buf) {
+ free(wb->ucs);
+ free(wb->cclass);
+ }
+}
+
+static nsresult
+workbuf_extend(workbuf_t *wb) {
+ int32_t newsize = wb->size * 3;
+
+ if (wb->ucs == wb->ucs_buf) {
+ wb->ucs = (uint32_t*)moz_xmalloc(sizeof(wb->ucs[0]) * newsize);
+ if (!wb->ucs)
+ return NS_ERROR_OUT_OF_MEMORY;
+ wb->cclass = (int32_t*)moz_xmalloc(sizeof(wb->cclass[0]) * newsize);
+ if (!wb->cclass) {
+ free(wb->ucs);
+ wb->ucs = nullptr;
+ return NS_ERROR_OUT_OF_MEMORY;
+ }
+ } else {
+ void* buf = moz_xrealloc(wb->ucs, sizeof(wb->ucs[0]) * newsize);
+ if (!buf)
+ return NS_ERROR_OUT_OF_MEMORY;
+ wb->ucs = (uint32_t*)buf;
+ buf = moz_xrealloc(wb->cclass, sizeof(wb->cclass[0]) * newsize);
+ if (!buf)
+ return NS_ERROR_OUT_OF_MEMORY;
+ wb->cclass = (int32_t*)buf;
+ }
+ return (NS_OK);
+}
+
+static nsresult
+workbuf_append(workbuf_t *wb, uint32_t c) {
+ nsresult r;
+
+ if (wb->last >= wb->size && (r = workbuf_extend(wb)) != NS_OK)
+ return (r);
+ wb->ucs[wb->last++] = c;
+ return (NS_OK);
+}
+
+static void
+workbuf_shift(workbuf_t *wb, int32_t shift) {
+ int32_t nmove;
+
+ //assert(wb != nullptr && wb->cur >= shift);
+
+ nmove = wb->last - shift;
+ memmove(&wb->ucs[0], &wb->ucs[shift],
+ nmove * sizeof(wb->ucs[0]));
+ memmove(&wb->cclass[0], &wb->cclass[shift],
+ nmove * sizeof(wb->cclass[0]));
+ wb->cur -= shift;
+ wb->last -= shift;
+}
+
+static void
+workbuf_removevoid(workbuf_t *wb) {
+ int32_t i, j;
+ int32_t last = wb->last;
+
+ for (i = j = 0; i < last; i++) {
+ if (wb->cclass[i] >= 0) {
+ if (j < i) {
+ wb->ucs[j] = wb->ucs[i];
+ wb->cclass[j] = wb->cclass[i];
+ }
+ j++;
+ }
+ }
+ wb->cur -= last - j;
+ wb->last = j;
+}
+
+nsresult
+nsUnicodeNormalizer::NormalizeUnicodeNFD( const nsAString& aSrc, nsAString& aDest)
+{
+ return mdn_normalize(false, false, aSrc, aDest);
+}
+
+nsresult
+nsUnicodeNormalizer::NormalizeUnicodeNFC( const nsAString& aSrc, nsAString& aDest)
+{
+ return mdn_normalize(true, false, aSrc, aDest);
+}
+
+nsresult
+nsUnicodeNormalizer::NormalizeUnicodeNFKD( const nsAString& aSrc, nsAString& aDest)
+{
+ return mdn_normalize(false, true, aSrc, aDest);
+}
+
+nsresult
+nsUnicodeNormalizer::NormalizeUnicodeNFKC( const nsAString& aSrc, nsAString& aDest)
+{
+ return mdn_normalize(true, true, aSrc, aDest);
+}
+
+bool
+nsUnicodeNormalizer::Compose(uint32_t a, uint32_t b, uint32_t *ab)
+{
+ return mdn__unicode_compose(a, b, ab) == NS_OK;
+}
+
+bool
+nsUnicodeNormalizer::DecomposeNonRecursively(uint32_t c, uint32_t *c1, uint32_t *c2)
+{
+ // We can't use mdn__unicode_decompose here, because that does a recursive
+ // decomposition that may yield more than two characters, but the harfbuzz
+ // callback wants just a single-step decomp that is guaranteed to produce
+ // no more than two characters. So we do a low-level lookup in the table
+ // of decomp sequences.
+ const uint32_t *seq;
+ uint32_t seqidx = decompose_char(c, &seq);
+ if (seqidx == 0 || ((seqidx & DECOMP_COMPAT) != 0)) {
+ return false;
+ }
+ *c1 = *seq & ~END_BIT;
+ if (*seq & END_BIT) {
+ *c2 = 0;
+ } else {
+ *c2 = *++seq & ~END_BIT;
+ }
+ return true;
+}
diff --git a/intl/unicharutil/nsUnicodeNormalizer.h b/intl/unicharutil/nsUnicodeNormalizer.h
new file mode 100644
index 000000000..5d9f1fe24
--- /dev/null
+++ b/intl/unicharutil/nsUnicodeNormalizer.h
@@ -0,0 +1,40 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef nsUnicodeNormalizer_h__
+#define nsUnicodeNormalizer_h__
+
+#include "nscore.h"
+#include "nsISupports.h"
+
+#include "nsIUnicodeNormalizer.h"
+
+nsresult NS_NewUnicodeNormalizer(nsISupports** oResult);
+
+
+class nsUnicodeNormalizer : public nsIUnicodeNormalizer {
+public:
+ nsUnicodeNormalizer();
+
+ NS_DECL_ISUPPORTS
+
+ NS_IMETHOD NormalizeUnicodeNFD( const nsAString& aSrc, nsAString& aDest) override;
+ NS_IMETHOD NormalizeUnicodeNFC( const nsAString& aSrc, nsAString& aDest) override;
+ NS_IMETHOD NormalizeUnicodeNFKD( const nsAString& aSrc, nsAString& aDest) override;
+ NS_IMETHOD NormalizeUnicodeNFKC( const nsAString& aSrc, nsAString& aDest) override;
+
+#if !ENABLE_INTL_API
+ // Low-level access to the composition data needed for HarfBuzz callbacks;
+ // only required when ICU is not available in the build.
+ static bool Compose(uint32_t a, uint32_t b, uint32_t *ab);
+ static bool DecomposeNonRecursively(uint32_t comp, uint32_t *c1, uint32_t *c2);
+#endif
+
+private:
+ virtual ~nsUnicodeNormalizer();
+};
+
+#endif //nsUnicodeNormalizer_h__
+
diff --git a/intl/unicharutil/nsUnicodeNormalizer_ICU.cpp b/intl/unicharutil/nsUnicodeNormalizer_ICU.cpp
new file mode 100644
index 000000000..6f6c3d2dd
--- /dev/null
+++ b/intl/unicharutil/nsUnicodeNormalizer_ICU.cpp
@@ -0,0 +1,98 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsUnicodeNormalizer.h"
+#include "ICUUtils.h"
+#include "unicode/unorm2.h"
+#include "unicode/utext.h"
+
+NS_IMPL_ISUPPORTS(nsUnicodeNormalizer, nsIUnicodeNormalizer)
+
+nsUnicodeNormalizer::nsUnicodeNormalizer()
+{
+}
+
+nsUnicodeNormalizer::~nsUnicodeNormalizer()
+{
+}
+
+static nsresult
+DoNormalization(const UNormalizer2* aNorm, const nsAString& aSrc,
+ nsAString& aDest)
+{
+ UErrorCode errorCode = U_ZERO_ERROR;
+ const int32_t length = aSrc.Length();
+ const UChar* src = reinterpret_cast<const UChar*>(aSrc.BeginReading());
+ // Initial guess for a capacity that is likely to be enough for most cases.
+ int32_t capacity = length + (length >> 8) + 8;
+ do {
+ aDest.SetLength(capacity);
+ UChar* dest = reinterpret_cast<UChar*>(aDest.BeginWriting());
+ int32_t len = unorm2_normalize(aNorm, src, aSrc.Length(), dest, capacity,
+ &errorCode);
+ if (U_SUCCESS(errorCode)) {
+ aDest.SetLength(len);
+ break;
+ }
+ if (errorCode == U_BUFFER_OVERFLOW_ERROR) {
+ // Buffer wasn't big enough; adjust to the reported size and try again.
+ capacity = len;
+ errorCode = U_ZERO_ERROR;
+ continue;
+ }
+ } while (false);
+ return ICUUtils::UErrorToNsResult(errorCode);
+}
+
+nsresult
+nsUnicodeNormalizer::NormalizeUnicodeNFD(const nsAString& aSrc,
+ nsAString& aDest)
+{
+ // The unorm2_getNF*Instance functions return static singletons that should
+ // not be deleted, so we just get them once on first use.
+ static UErrorCode errorCode = U_ZERO_ERROR;
+ static const UNormalizer2* norm = unorm2_getNFDInstance(&errorCode);
+ if (U_SUCCESS(errorCode)) {
+ return DoNormalization(norm, aSrc, aDest);
+ }
+ return ICUUtils::UErrorToNsResult(errorCode);
+}
+
+nsresult
+nsUnicodeNormalizer::NormalizeUnicodeNFC(const nsAString& aSrc,
+ nsAString& aDest)
+{
+ static UErrorCode errorCode = U_ZERO_ERROR;
+ static const UNormalizer2* norm = unorm2_getNFCInstance(&errorCode);
+ if (U_SUCCESS(errorCode)) {
+ return DoNormalization(norm, aSrc, aDest);
+ }
+ return ICUUtils::UErrorToNsResult(errorCode);
+}
+
+nsresult
+nsUnicodeNormalizer::NormalizeUnicodeNFKD(const nsAString& aSrc,
+ nsAString& aDest)
+{
+ static UErrorCode errorCode = U_ZERO_ERROR;
+ static const UNormalizer2* norm = unorm2_getNFKDInstance(&errorCode);
+ if (U_SUCCESS(errorCode)) {
+ return DoNormalization(norm, aSrc, aDest);
+ }
+ return ICUUtils::UErrorToNsResult(errorCode);
+}
+
+nsresult
+nsUnicodeNormalizer::NormalizeUnicodeNFKC(const nsAString& aSrc,
+ nsAString& aDest)
+{
+ static UErrorCode errorCode = U_ZERO_ERROR;
+ static const UNormalizer2* norm = unorm2_getNFKCInstance(&errorCode);
+ if (U_SUCCESS(errorCode)) {
+ return DoNormalization(norm, aSrc, aDest);
+ }
+ return ICUUtils::UErrorToNsResult(errorCode);
+}
diff --git a/intl/unicharutil/tables/html40Latin1.properties b/intl/unicharutil/tables/html40Latin1.properties
new file mode 100644
index 000000000..27591951b
--- /dev/null
+++ b/intl/unicharutil/tables/html40Latin1.properties
@@ -0,0 +1,114 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# LOCALIZATION NOTE FILE
+# This file contains names that assign html elements to
+# ascii codepoints. Do not translate any of the "entities" in
+# this file.
+
+entity.list.name=html40Latin1
+entity.160=&nbsp;
+entity.161=&iexcl;
+entity.162=&cent;
+entity.163=&pound;
+entity.164=&curren;
+entity.165=&yen;
+entity.166=&brvbar;
+entity.167=&sect;
+entity.168=&uml;
+entity.169=&copy;
+entity.170=&ordf;
+entity.171=&laquo;
+entity.172=&not;
+entity.173=&shy;
+entity.174=&reg;
+entity.175=&macr;
+entity.176=&deg;
+entity.177=&plusmn;
+entity.178=&sup2;
+entity.179=&sup3;
+entity.180=&acute;
+entity.181=&micro;
+entity.182=&para;
+entity.183=&middot;
+entity.184=&cedil;
+entity.185=&sup1;
+entity.186=&ordm;
+entity.187=&raquo;
+entity.188=&frac14;
+entity.189=&frac12;
+entity.190=&frac34;
+entity.191=&iquest;
+entity.192=&Agrave;
+entity.193=&Aacute;
+entity.194=&Acirc;
+entity.195=&Atilde;
+entity.196=&Auml;
+entity.197=&Aring;
+entity.198=&AElig;
+entity.199=&Ccedil;
+entity.200=&Egrave;
+entity.201=&Eacute;
+entity.202=&Ecirc;
+entity.203=&Euml;
+entity.204=&Igrave;
+entity.205=&Iacute;
+entity.206=&Icirc;
+entity.207=&Iuml;
+entity.208=&ETH;
+entity.209=&Ntilde;
+entity.210=&Ograve;
+entity.211=&Oacute;
+entity.212=&Ocirc;
+entity.213=&Otilde;
+entity.214=&Ouml;
+entity.215=&times;
+entity.216=&Oslash;
+entity.217=&Ugrave;
+entity.218=&Uacute;
+entity.219=&Ucirc;
+entity.220=&Uuml;
+entity.221=&Yacute;
+entity.222=&THORN;
+entity.223=&szlig;
+entity.224=&agrave;
+entity.225=&aacute;
+entity.226=&acirc;
+entity.227=&atilde;
+entity.228=&auml;
+entity.229=&aring;
+entity.230=&aelig;
+entity.231=&ccedil;
+entity.232=&egrave;
+entity.233=&eacute;
+entity.234=&ecirc;
+entity.235=&euml;
+entity.236=&igrave;
+entity.237=&iacute;
+entity.238=&icirc;
+entity.239=&iuml;
+entity.240=&eth;
+entity.241=&ntilde;
+entity.242=&ograve;
+entity.243=&oacute;
+entity.244=&ocirc;
+entity.245=&otilde;
+entity.246=&ouml;
+entity.247=&divide;
+entity.248=&oslash;
+entity.249=&ugrave;
+entity.250=&uacute;
+entity.251=&ucirc;
+entity.252=&uuml;
+entity.253=&yacute;
+entity.254=&thorn;
+entity.255=&yuml;
+
+
+
+
+
+
+
+
diff --git a/intl/unicharutil/tables/html40Special.properties b/intl/unicharutil/tables/html40Special.properties
new file mode 100644
index 000000000..95bd0842f
--- /dev/null
+++ b/intl/unicharutil/tables/html40Special.properties
@@ -0,0 +1,37 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# LOCALIZATION NOTE: FILE
+# This file contains names that assign entity references to
+# numbers in an entity.list object. Do not translate this file.
+
+entity.list.name=html40Special
+entity.338=&OElig;
+entity.339=&oelig;
+entity.352=&Scaron;
+entity.353=&scaron;
+entity.376=&Yuml;
+entity.710=&circ;
+entity.732=&tilde;
+entity.8194=&ensp;
+entity.8195=&emsp;
+entity.8201=&thinsp;
+entity.8204=&zwnj;
+entity.8205=&zwj;
+entity.8206=&lrm;
+entity.8207=&rlm;
+entity.8211=&ndash;
+entity.8212=&mdash;
+entity.8216=&lsquo;
+entity.8217=&rsquo;
+entity.8218=&sbquo;
+entity.8220=&ldquo;
+entity.8221=&rdquo;
+entity.8222=&bdquo;
+entity.8224=&dagger;
+entity.8225=&Dagger;
+entity.8240=&permil;
+entity.8249=&lsaquo;
+entity.8250=&rsaquo;
+entity.8364=&euro;
diff --git a/intl/unicharutil/tables/html40Symbols.properties b/intl/unicharutil/tables/html40Symbols.properties
new file mode 100644
index 000000000..5caf4f104
--- /dev/null
+++ b/intl/unicharutil/tables/html40Symbols.properties
@@ -0,0 +1,132 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# LOCALIZATION NOTE FILE
+# Do not translate this file.
+
+entity.list.name=html40Symbols
+entity.402=&fnof;
+entity.913=&Alpha;
+entity.914=&Beta;
+entity.915=&Gamma;
+entity.916=&Delta;
+entity.917=&Epsilon;
+entity.918=&Zeta;
+entity.919=&Eta;
+entity.920=&Theta;
+entity.921=&Iota;
+entity.922=&Kappa;
+entity.923=&Lambda;
+entity.924=&Mu;
+entity.925=&Nu;
+entity.926=&Xi;
+entity.927=&Omicron;
+entity.928=&Pi;
+entity.929=&Rho;
+entity.931=&Sigma;
+entity.932=&Tau;
+entity.933=&Upsilon;
+entity.934=&Phi;
+entity.935=&Chi;
+entity.936=&Psi;
+entity.937=&Omega;
+entity.945=&alpha;
+entity.946=&beta;
+entity.947=&gamma;
+entity.948=&delta;
+entity.949=&epsilon;
+entity.950=&zeta;
+entity.951=&eta;
+entity.952=&theta;
+entity.953=&iota;
+entity.954=&kappa;
+entity.955=&lambda;
+entity.956=&mu;
+entity.957=&nu;
+entity.958=&xi;
+entity.959=&omicron;
+entity.960=&pi;
+entity.961=&rho;
+entity.962=&sigmaf;
+entity.963=&sigma;
+entity.964=&tau;
+entity.965=&upsilon;
+entity.966=&phi;
+entity.967=&chi;
+entity.968=&psi;
+entity.969=&omega;
+entity.977=&thetasym;
+entity.978=&upsih;
+entity.982=&piv;
+entity.8226=&bull;
+entity.8230=&hellip;
+entity.8242=&prime;
+entity.8243=&Prime;
+entity.8254=&oline;
+entity.8260=&frasl;
+entity.8472=&weierp;
+entity.8465=&image;
+entity.8476=&real;
+entity.8482=&trade;
+entity.8501=&alefsym;
+entity.8592=&larr;
+entity.8593=&uarr;
+entity.8594=&rarr;
+entity.8595=&darr;
+entity.8596=&harr;
+entity.8629=&crarr;
+entity.8656=&lArr;
+entity.8657=&uArr;
+entity.8658=&rArr;
+entity.8659=&dArr;
+entity.8660=&hArr;
+entity.8704=&forall;
+entity.8706=&part;
+entity.8707=&exist;
+entity.8709=&empty;
+entity.8711=&nabla;
+entity.8712=&isin;
+entity.8713=&notin;
+entity.8715=&ni;
+entity.8719=&prod;
+entity.8721=&sum;
+entity.8722=&minus;
+entity.8727=&lowast;
+entity.8730=&radic;
+entity.8733=&prop;
+entity.8734=&infin;
+entity.8736=&ang;
+entity.8743=&and;
+entity.8744=&or;
+entity.8745=&cap;
+entity.8746=&cup;
+entity.8747=&int;
+entity.8756=&there4;
+entity.8764=&sim;
+entity.8773=&cong;
+entity.8776=&asymp;
+entity.8800=&ne;
+entity.8801=&equiv;
+entity.8804=&le;
+entity.8805=&ge;
+entity.8834=&sub;
+entity.8835=&sup;
+entity.8836=&nsub;
+entity.8838=&sube;
+entity.8839=&supe;
+entity.8853=&oplus;
+entity.8855=&otimes;
+entity.8869=&perp;
+entity.8901=&sdot;
+entity.8968=&lceil;
+entity.8969=&rceil;
+entity.8970=&lfloor;
+entity.8971=&rfloor;
+entity.9001=&lang;
+entity.9002=&rang;
+entity.9674=&loz;
+entity.9824=&spades;
+entity.9827=&clubs;
+entity.9829=&hearts;
+entity.9830=&diams;
diff --git a/intl/unicharutil/tables/mathml20.properties b/intl/unicharutil/tables/mathml20.properties
new file mode 100644
index 000000000..4e11c51c0
--- /dev/null
+++ b/intl/unicharutil/tables/mathml20.properties
@@ -0,0 +1,1253 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+## LOCALIZATION NOTE: FILE
+# Do not translate this file.
+# The file contains a mapping of Unicode values to MathML entity names.
+# Entities already listed in html40 were deliberately excluded. So you must use
+# nsIEntityConverter.html40 + nsIEntityConverter.mathml20 to access everything.
+
+entity.list.name=mathml20
+entity.168=&DoubleDot;
+entity.175=&OverBar;
+entity.177=&PlusMinus;
+entity.184=&Cedilla;
+entity.256=&Amacr;
+entity.257=&amacr;
+entity.258=&Abreve;
+entity.259=&abreve;
+entity.260=&Aogon;
+entity.261=&aogon;
+entity.262=&Cacute;
+entity.263=&cacute;
+entity.264=&Ccirc;
+entity.265=&ccirc;
+entity.266=&Cdot;
+entity.267=&cdot;
+entity.268=&Ccaron;
+entity.269=&ccaron;
+entity.270=&Dcaron;
+entity.271=&dcaron;
+entity.272=&Dstrok;
+entity.273=&dstrok;
+entity.274=&Emacr;
+entity.275=&emacr;
+entity.278=&Edot;
+entity.279=&edot;
+entity.280=&Eogon;
+entity.281=&eogon;
+entity.282=&Ecaron;
+entity.283=&ecaron;
+entity.284=&Gcirc;
+entity.285=&gcirc;
+entity.286=&Gbreve;
+entity.287=&gbreve;
+entity.288=&Gdot;
+entity.289=&gdot;
+entity.290=&Gcedil;
+entity.292=&Hcirc;
+entity.293=&hcirc;
+entity.294=&Hstrok;
+entity.295=&hstrok;
+entity.296=&Itilde;
+entity.297=&itilde;
+entity.298=&Imacr;
+entity.299=&imacr;
+entity.302=&Iogon;
+entity.303=&iogon;
+entity.304=&Idot;
+entity.306=&IJlig;
+entity.307=&ijlig;
+entity.308=&Jcirc;
+entity.309=&jcirc;
+entity.310=&Kcedil;
+entity.311=&kcedil;
+entity.312=&kgreen;
+entity.313=&Lacute;
+entity.314=&lacute;
+entity.315=&Lcedil;
+entity.316=&lcedil;
+entity.317=&Lcaron;
+entity.318=&lcaron;
+entity.319=&Lmidot;
+entity.320=&lmidot;
+entity.321=&Lstrok;
+entity.322=&lstrok;
+entity.323=&Nacute;
+entity.324=&nacute;
+entity.325=&Ncedil;
+entity.326=&ncedil;
+entity.327=&Ncaron;
+entity.328=&ncaron;
+entity.329=&napos;
+entity.330=&ENG;
+entity.331=&eng;
+entity.332=&Omacr;
+entity.333=&omacr;
+entity.336=&Odblac;
+entity.337=&odblac;
+entity.340=&Racute;
+entity.341=&racute;
+entity.342=&Rcedil;
+entity.343=&rcedil;
+entity.344=&Rcaron;
+entity.345=&rcaron;
+entity.346=&Sacute;
+entity.347=&sacute;
+entity.348=&Scirc;
+entity.349=&scirc;
+entity.350=&Scedil;
+entity.351=&scedil;
+entity.354=&Tcedil;
+entity.355=&tcedil;
+entity.356=&Tcaron;
+entity.357=&tcaron;
+entity.358=&Tstrok;
+entity.359=&tstrok;
+entity.360=&Utilde;
+entity.361=&utilde;
+entity.362=&Umacr;
+entity.363=&umacr;
+entity.364=&Ubreve;
+entity.365=&ubreve;
+entity.366=&Uring;
+entity.367=&uring;
+entity.368=&Udblac;
+entity.369=&udblac;
+entity.370=&Uogon;
+entity.371=&uogon;
+entity.372=&Wcirc;
+entity.373=&wcirc;
+entity.374=&Ycirc;
+entity.375=&ycirc;
+entity.377=&Zacute;
+entity.378=&zacute;
+entity.379=&Zdot;
+entity.380=&zdot;
+entity.381=&Zcaron;
+entity.382=&zcaron;
+entity.437=&imped;
+entity.501=&gacute;
+entity.711=&Hacek;
+entity.728=&Breve;
+entity.729=&DiacriticalDot;
+entity.730=&ring;
+entity.731=&ogon;
+entity.732=&DiacriticalTilde;
+entity.733=&DiacriticalDoubleAcute;
+entity.785=&DownBreve;
+entity.818=&UnderBar;
+entity.949=&varepsilon;
+entity.962=&varsigma;
+entity.966=&varphi;
+entity.977=&vartheta;
+entity.978=&Upsi;
+entity.981=&straightphi;
+entity.982=&varpi;
+entity.988=&Gammad;
+entity.989=&digamma;
+entity.1008=&varkappa;
+entity.1009=&varrho;
+entity.1013=&straightepsilon;
+entity.1014=&backepsilon;
+entity.1025=&IOcy;
+entity.1026=&DJcy;
+entity.1027=&GJcy;
+entity.1028=&Jukcy;
+entity.1029=&DScy;
+entity.1030=&Iukcy;
+entity.1031=&YIcy;
+entity.1032=&Jsercy;
+entity.1033=&LJcy;
+entity.1034=&NJcy;
+entity.1035=&TSHcy;
+entity.1036=&KJcy;
+entity.1038=&Ubrcy;
+entity.1039=&DZcy;
+entity.1040=&Acy;
+entity.1041=&Bcy;
+entity.1042=&Vcy;
+entity.1043=&Gcy;
+entity.1044=&Dcy;
+entity.1045=&IEcy;
+entity.1046=&ZHcy;
+entity.1047=&Zcy;
+entity.1048=&Icy;
+entity.1049=&Jcy;
+entity.1050=&Kcy;
+entity.1051=&Lcy;
+entity.1052=&Mcy;
+entity.1053=&Ncy;
+entity.1054=&Ocy;
+entity.1055=&Pcy;
+entity.1056=&Rcy;
+entity.1057=&Scy;
+entity.1058=&Tcy;
+entity.1059=&Ucy;
+entity.1060=&Fcy;
+entity.1061=&KHcy;
+entity.1062=&TScy;
+entity.1063=&CHcy;
+entity.1064=&SHcy;
+entity.1065=&SHCHcy;
+entity.1066=&HARDcy;
+entity.1067=&Ycy;
+entity.1068=&SOFTcy;
+entity.1069=&Ecy;
+entity.1070=&YUcy;
+entity.1071=&YAcy;
+entity.1072=&acy;
+entity.1073=&bcy;
+entity.1074=&vcy;
+entity.1075=&gcy;
+entity.1076=&dcy;
+entity.1077=&iecy;
+entity.1078=&zhcy;
+entity.1079=&zcy;
+entity.1080=&icy;
+entity.1081=&jcy;
+entity.1082=&kcy;
+entity.1083=&lcy;
+entity.1084=&mcy;
+entity.1085=&ncy;
+entity.1086=&ocy;
+entity.1087=&pcy;
+entity.1088=&rcy;
+entity.1089=&scy;
+entity.1090=&tcy;
+entity.1091=&ucy;
+entity.1092=&fcy;
+entity.1093=&khcy;
+entity.1094=&tscy;
+entity.1095=&chcy;
+entity.1096=&shcy;
+entity.1097=&shchcy;
+entity.1098=&hardcy;
+entity.1099=&ycy;
+entity.1100=&softcy;
+entity.1101=&ecy;
+entity.1102=&yucy;
+entity.1103=&yacy;
+entity.1105=&iocy;
+entity.1106=&djcy;
+entity.1107=&gjcy;
+entity.1108=&jukcy;
+entity.1109=&dscy;
+entity.1110=&iukcy;
+entity.1111=&yicy;
+entity.1112=&jsercy;
+entity.1113=&ljcy;
+entity.1114=&njcy;
+entity.1115=&tshcy;
+entity.1116=&kjcy;
+entity.1118=&ubrcy;
+entity.1119=&dzcy;
+entity.8196=&emsp13;
+entity.8197=&emsp14;
+entity.8199=&numsp;
+entity.8200=&puncsp;
+entity.8201=&ThinSpace;
+entity.8202=&VeryThinSpace;
+entity.8203=&ZeroWidthSpace;
+entity.8208=&hyphen;
+entity.8213=&horbar;
+entity.8214=&Verbar;
+entity.8216=&OpenCurlyQuote;
+entity.8217=&CloseCurlyQuote;
+entity.8218=&lsquor;
+entity.8220=&OpenCurlyDoubleQuote;
+entity.8221=&CloseCurlyDoubleQuote;
+entity.8222=&ldquor;
+entity.8226=&bullet;
+entity.8229=&nldr;
+entity.8241=&pertenk;
+entity.8244=&tprime;
+entity.8245=&backprime;
+entity.8257=&caret;
+entity.8259=&hybull;
+entity.8271=&bsemi;
+entity.8279=&qprime;
+entity.8287=&MediumSpace;
+entity.8288=&NoBreak;
+entity.8289=&ApplyFunction;
+entity.8290=&InvisibleTimes;
+entity.8291=&InvisibleComma;
+entity.8411=&TripleDot;
+entity.8412=&DotDot;
+entity.8450=&Copf;
+entity.8453=&incare;
+entity.8458=&gscr;
+entity.8459=&HilbertSpace;
+entity.8460=&Poincareplane;
+entity.8461=&Hopf;
+entity.8462=&planckh;
+entity.8463=&hslash;
+entity.8464=&Iscr;
+entity.8465=&Ifr;
+entity.8466=&Laplacetrf;
+entity.8467=&ell;
+entity.8469=&Nopf;
+entity.8470=&numero;
+entity.8471=&copysr;
+entity.8473=&Popf;
+entity.8474=&Qopf;
+entity.8475=&Rscr;
+entity.8476=&Rfr;
+entity.8477=&Ropf;
+entity.8478=&rx;
+entity.8484=&Zopf;
+entity.8486=&ohm;
+entity.8487=&mho;
+entity.8488=&Zfr;
+entity.8489=&iiota;
+entity.8491=&angst;
+entity.8492=&Bernoullis;
+entity.8493=&Cayleys;
+entity.8495=&escr;
+entity.8496=&Escr;
+entity.8497=&Fouriertrf;
+entity.8499=&Mellintrf;
+entity.8500=&orderof;
+entity.8501=&aleph;
+entity.8502=&beth;
+entity.8503=&gimel;
+entity.8504=&daleth;
+entity.8517=&CapitalDifferentialD;
+entity.8518=&DifferentialD;
+entity.8519=&ExponentialE;
+entity.8520=&ImaginaryI;
+entity.8531=&frac13;
+entity.8532=&frac23;
+entity.8533=&frac15;
+entity.8534=&frac25;
+entity.8535=&frac35;
+entity.8536=&frac45;
+entity.8537=&frac16;
+entity.8538=&frac56;
+entity.8539=&frac18;
+entity.8540=&frac38;
+entity.8541=&frac58;
+entity.8542=&frac78;
+entity.8592=&LeftArrow;
+entity.8593=&UpArrow;
+entity.8594=&RightArrow;
+entity.8595=&DownArrow;
+entity.8596=&LeftRightArrow;
+entity.8597=&UpDownArrow;
+entity.8598=&UpperLeftArrow;
+entity.8599=&UpperRightArrow;
+entity.8600=&LowerRightArrow;
+entity.8601=&LowerLeftArrow;
+entity.8602=&nleftarrow;
+entity.8603=&nrightarrow;
+entity.8605=&rightsquigarrow;
+entity.8606=&Larr;
+entity.8607=&Uarr;
+entity.8608=&Rarr;
+entity.8609=&Darr;
+entity.8610=&leftarrowtail;
+entity.8611=&rightarrowtail;
+entity.8612=&LeftTeeArrow;
+entity.8613=&UpTeeArrow;
+entity.8614=&RightTeeArrow;
+entity.8615=&DownTeeArrow;
+entity.8617=&hookleftarrow;
+entity.8618=&hookrightarrow;
+entity.8619=&looparrowleft;
+entity.8620=&looparrowright;
+entity.8621=&leftrightsquigarrow;
+entity.8622=&nleftrightarrow;
+entity.8624=&Lsh;
+entity.8625=&Rsh;
+entity.8626=&ldsh;
+entity.8627=&rdsh;
+entity.8630=&curvearrowleft;
+entity.8631=&curvearrowright;
+entity.8634=&circlearrowleft;
+entity.8635=&circlearrowright;
+entity.8636=&LeftVector;
+entity.8637=&DownLeftVector;
+entity.8638=&RightUpVector;
+entity.8639=&LeftUpVector;
+entity.8640=&RightVector;
+entity.8641=&DownRightVector;
+entity.8642=&RightDownVector;
+entity.8643=&LeftDownVector;
+entity.8644=&RightArrowLeftArrow;
+entity.8645=&UpArrowDownArrow;
+entity.8646=&LeftArrowRightArrow;
+entity.8647=&leftleftarrows;
+entity.8648=&upuparrows;
+entity.8649=&rightrightarrows;
+entity.8650=&downdownarrows;
+entity.8651=&ReverseEquilibrium;
+entity.8652=&Equilibrium;
+entity.8653=&nLeftarrow;
+entity.8654=&nLeftrightarrow;
+entity.8655=&nRightarrow;
+entity.8656=&DoubleLeftArrow;
+entity.8657=&DoubleUpArrow;
+entity.8658=&DoubleRightArrow;
+entity.8659=&DoubleDownArrow;
+entity.8660=&DoubleLeftRightArrow;
+entity.8661=&DoubleUpDownArrow;
+entity.8662=&nwArr;
+entity.8663=&neArr;
+entity.8664=&seArr;
+entity.8665=&swArr;
+entity.8666=&Lleftarrow;
+entity.8667=&Rrightarrow;
+entity.8669=&zigrarr;
+entity.8676=&LeftArrowBar;
+entity.8677=&RightArrowBar;
+entity.8693=&DownArrowUpArrow;
+entity.8701=&loarr;
+entity.8702=&roarr;
+entity.8703=&hoarr;
+entity.8704=&ForAll;
+entity.8705=&complement;
+entity.8706=&PartialD;
+entity.8707=&Exists;
+entity.8708=&NotExists;
+entity.8709=&emptyset;
+entity.8711=&Del;
+entity.8712=&Element;
+entity.8713=&NotElement;
+entity.8715=&ReverseElement;
+entity.8716=&NotReverseElement;
+entity.8719=&Product;
+entity.8720=&Coproduct;
+entity.8721=&Sum;
+entity.8723=&MinusPlus;
+entity.8724=&dotplus;
+entity.8726=&Backslash;
+entity.8728=&SmallCircle;
+entity.8730=&Sqrt;
+entity.8733=&Proportional;
+entity.8735=&angrt;
+entity.8736=&angle;
+entity.8737=&measuredangle;
+entity.8738=&angsph;
+entity.8739=&VerticalBar;
+entity.8740=&NotVerticalBar;
+entity.8741=&DoubleVerticalBar;
+entity.8742=&NotDoubleVerticalBar;
+entity.8743=&wedge;
+entity.8744=&vee;
+entity.8747=&Integral;
+entity.8748=&Int;
+entity.8749=&iiint;
+entity.8750=&ContourIntegral;
+entity.8751=&DoubleContourIntegral;
+entity.8752=&Cconint;
+entity.8753=&cwint;
+entity.8754=&ClockwiseContourIntegral;
+entity.8755=&CounterClockwiseContourIntegral;
+entity.8756=&Therefore;
+entity.8757=&Because;
+entity.8758=&ratio;
+entity.8759=&Proportion;
+entity.8760=&dotminus;
+entity.8762=&mDDot;
+entity.8763=&homtht;
+entity.8764=&Tilde;
+entity.8765=&backsim;
+entity.8766=&mstpos;
+entity.8767=&acd;
+entity.8768=&VerticalTilde;
+entity.8769=&NotTilde;
+entity.8770=&EqualTilde;
+entity.8771=&TildeEqual;
+entity.8772=&NotTildeEqual;
+entity.8773=&TildeFullEqual;
+entity.8774=&simne;
+entity.8775=&NotTildeFullEqual;
+entity.8776=&TildeTilde;
+entity.8777=&NotTildeTilde;
+entity.8778=&approxeq;
+entity.8779=&apid;
+entity.8780=&backcong;
+entity.8781=&CupCap;
+entity.8782=&HumpDownHump;
+entity.8783=&HumpEqual;
+entity.8784=&DotEqual;
+entity.8785=&doteqdot;
+entity.8786=&fallingdotseq;
+entity.8787=&risingdotseq;
+entity.8788=&Assign;
+entity.8789=&eqcolon;
+entity.8790=&eqcirc;
+entity.8791=&circeq;
+entity.8793=&wedgeq;
+entity.8794=&veeeq;
+entity.8796=&triangleq;
+entity.8799=&questeq;
+entity.8800=&NotEqual;
+entity.8801=&Congruent;
+entity.8802=&NotCongruent;
+entity.8804=&leq;
+entity.8805=&GreaterEqual;
+entity.8806=&LessFullEqual;
+entity.8807=&GreaterFullEqual;
+entity.8808=&lneqq;
+entity.8809=&gneqq;
+entity.8810=&NestedLessLess;
+entity.8811=&NestedGreaterGreater;
+entity.8812=&between;
+entity.8813=&NotCupCap;
+entity.8814=&NotLess;
+entity.8815=&NotGreater;
+entity.8816=&NotLessEqual;
+entity.8817=&NotGreaterEqual;
+entity.8818=&LessTilde;
+entity.8819=&GreaterTilde;
+entity.8820=&NotLessTilde;
+entity.8821=&NotGreaterTilde;
+entity.8822=&LessGreater;
+entity.8823=&GreaterLess;
+entity.8824=&NotLessGreater;
+entity.8825=&NotGreaterLess;
+entity.8826=&Precedes;
+entity.8827=&Succeeds;
+entity.8828=&PrecedesSlantEqual;
+entity.8829=&SucceedsSlantEqual;
+entity.8830=&PrecedesTilde;
+entity.8831=&SucceedsTilde;
+entity.8832=&NotPrecedes;
+entity.8833=&NotSucceeds;
+entity.8834=&subset;
+entity.8835=&Superset;
+entity.8837=&nsup;
+entity.8838=&SubsetEqual;
+entity.8839=&SupersetEqual;
+entity.8840=&NotSubsetEqual;
+entity.8841=&NotSupersetEqual;
+entity.8842=&subsetneq;
+entity.8843=&supsetneq;
+entity.8845=&cupdot;
+entity.8846=&UnionPlus;
+entity.8847=&SquareSubset;
+entity.8848=&SquareSuperset;
+entity.8849=&SquareSubsetEqual;
+entity.8850=&SquareSupersetEqual;
+entity.8851=&SquareIntersection;
+entity.8852=&SquareUnion;
+entity.8853=&CirclePlus;
+entity.8854=&CircleMinus;
+entity.8855=&CircleTimes;
+entity.8856=&osol;
+entity.8857=&CircleDot;
+entity.8858=&circledcirc;
+entity.8859=&circledast;
+entity.8861=&circleddash;
+entity.8862=&boxplus;
+entity.8863=&boxminus;
+entity.8864=&boxtimes;
+entity.8865=&dotsquare;
+entity.8866=&RightTee;
+entity.8867=&LeftTee;
+entity.8868=&DownTee;
+entity.8869=&UpTee;
+entity.8871=&models;
+entity.8872=&DoubleRightTee;
+entity.8873=&Vdash;
+entity.8874=&Vvdash;
+entity.8875=&VDash;
+entity.8876=&nvdash;
+entity.8877=&nvDash;
+entity.8878=&nVdash;
+entity.8879=&nVDash;
+entity.8880=&prurel;
+entity.8882=&LeftTriangle;
+entity.8883=&RightTriangle;
+entity.8884=&LeftTriangleEqual;
+entity.8885=&RightTriangleEqual;
+entity.8886=&origof;
+entity.8887=&imof;
+entity.8888=&multimap;
+entity.8889=&hercon;
+entity.8890=&intercal;
+entity.8891=&veebar;
+entity.8893=&barvee;
+entity.8894=&angrtvb;
+entity.8895=&lrtri;
+entity.8896=&Wedge;
+entity.8897=&Vee;
+entity.8898=&Intersection;
+entity.8899=&Union;
+entity.8900=&Diamond;
+entity.8902=&Star;
+entity.8903=&divideontimes;
+entity.8904=&bowtie;
+entity.8905=&ltimes;
+entity.8906=&rtimes;
+entity.8907=&leftthreetimes;
+entity.8908=&rightthreetimes;
+entity.8909=&backsimeq;
+entity.8910=&curlyvee;
+entity.8911=&curlywedge;
+entity.8912=&Subset;
+entity.8913=&Supset;
+entity.8914=&Cap;
+entity.8915=&Cup;
+entity.8916=&pitchfork;
+entity.8917=&epar;
+entity.8918=&lessdot;
+entity.8919=&gtrdot;
+entity.8920=&Ll;
+entity.8921=&Gg;
+entity.8922=&LessEqualGreater;
+entity.8923=&GreaterEqualLess;
+entity.8926=&curlyeqprec;
+entity.8927=&curlyeqsucc;
+entity.8928=&NotPrecedesSlantEqual;
+entity.8929=&NotSucceedsSlantEqual;
+entity.8930=&NotSquareSubsetEqual;
+entity.8931=&NotSquareSupersetEqual;
+entity.8934=&lnsim;
+entity.8935=&gnsim;
+entity.8936=&precnsim;
+entity.8937=&succnsim;
+entity.8938=&NotLeftTriangle;
+entity.8939=&NotRightTriangle;
+entity.8940=&NotLeftTriangleEqual;
+entity.8941=&NotRightTriangleEqual;
+entity.8942=&vellip;
+entity.8943=&ctdot;
+entity.8944=&utdot;
+entity.8945=&dtdot;
+entity.8946=&disin;
+entity.8947=&isinsv;
+entity.8948=&isins;
+entity.8949=&isindot;
+entity.8950=&notinvc;
+entity.8951=&notinvb;
+entity.8953=&isinE;
+entity.8954=&nisd;
+entity.8955=&xnis;
+entity.8956=&nis;
+entity.8957=&notnivc;
+entity.8958=&notnivb;
+entity.8965=&barwedge;
+entity.8966=&Barwed;
+entity.8968=&LeftCeiling;
+entity.8969=&RightCeiling;
+entity.8970=&LeftFloor;
+entity.8971=&RightFloor;
+entity.8972=&drcrop;
+entity.8973=&dlcrop;
+entity.8974=&urcrop;
+entity.8975=&ulcrop;
+entity.8976=&bnot;
+entity.8978=&profline;
+entity.8979=&profsurf;
+entity.8981=&telrec;
+entity.8982=&target;
+entity.8988=&ulcorner;
+entity.8989=&urcorner;
+entity.8990=&llcorner;
+entity.8991=&lrcorner;
+entity.8994=&frown;
+entity.8995=&smile;
+entity.9005=&cylcty;
+entity.9006=&profalar;
+entity.9014=&topbot;
+entity.9021=&ovbar;
+entity.9023=&solbar;
+entity.9084=&angzarr;
+entity.9136=&lmoustache;
+entity.9137=&rmoustache;
+entity.9140=&OverBracket;
+entity.9141=&UnderBracket;
+entity.9142=&bbrktbrk;
+entity.9180=&OverParenthesis;
+entity.9181=&UnderParenthesis;
+entity.9182=&OverBrace;
+entity.9183=&UnderBrace;
+entity.9186=&trpezium;
+entity.9191=&elinters;
+entity.9251=&blank;
+entity.9416=&circledS;
+entity.9472=&HorizontalLine;
+entity.9474=&boxv;
+entity.9484=&boxdr;
+entity.9488=&boxdl;
+entity.9492=&boxur;
+entity.9496=&boxul;
+entity.9500=&boxvr;
+entity.9508=&boxvl;
+entity.9516=&boxhd;
+entity.9524=&boxhu;
+entity.9532=&boxvh;
+entity.9552=&boxH;
+entity.9553=&boxV;
+entity.9554=&boxdR;
+entity.9555=&boxDr;
+entity.9556=&boxDR;
+entity.9557=&boxdL;
+entity.9558=&boxDl;
+entity.9559=&boxDL;
+entity.9560=&boxuR;
+entity.9561=&boxUr;
+entity.9562=&boxUR;
+entity.9563=&boxuL;
+entity.9564=&boxUl;
+entity.9565=&boxUL;
+entity.9566=&boxvR;
+entity.9567=&boxVr;
+entity.9568=&boxVR;
+entity.9569=&boxvL;
+entity.9570=&boxVl;
+entity.9571=&boxVL;
+entity.9572=&boxHd;
+entity.9573=&boxhD;
+entity.9574=&boxHD;
+entity.9575=&boxHu;
+entity.9576=&boxhU;
+entity.9577=&boxHU;
+entity.9578=&boxvH;
+entity.9579=&boxVh;
+entity.9580=&boxVH;
+entity.9600=&uhblk;
+entity.9604=&lhblk;
+entity.9608=&block;
+entity.9617=&blk14;
+entity.9618=&blk12;
+entity.9619=&blk34;
+entity.9633=&Square;
+entity.9642=&FilledVerySmallSquare;
+entity.9643=&EmptyVerySmallSquare;
+entity.9645=&rect;
+entity.9646=&marker;
+entity.9649=&fltns;
+entity.9651=&bigtriangleup;
+entity.9652=&blacktriangle;
+entity.9653=&triangle;
+entity.9656=&blacktriangleright;
+entity.9657=&triangleright;
+entity.9661=&bigtriangledown;
+entity.9662=&blacktriangledown;
+entity.9663=&triangledown;
+entity.9666=&blacktriangleleft;
+entity.9667=&triangleleft;
+entity.9674=&lozenge;
+entity.9675=&cir;
+entity.9708=&tridot;
+entity.9711=&bigcirc;
+entity.9720=&ultri;
+entity.9721=&urtri;
+entity.9722=&lltri;
+entity.9723=&EmptySmallSquare;
+entity.9724=&FilledSmallSquare;
+entity.9733=&bigstar;
+entity.9734=&star;
+entity.9742=&phone;
+entity.9792=&female;
+entity.9794=&male;
+entity.9824=&spadesuit;
+entity.9827=&clubsuit;
+entity.9829=&heartsuit;
+entity.9830=&diamondsuit;
+entity.9834=&sung;
+entity.9837=&flat;
+entity.9838=&natural;
+entity.9839=&sharp;
+entity.10003=&checkmark;
+entity.10007=&cross;
+entity.10016=&maltese;
+entity.10038=&sext;
+entity.10072=&VerticalSeparator;
+entity.10098=&lbbrk;
+entity.10099=&rbbrk;
+entity.10214=&LeftDoubleBracket;
+entity.10215=&RightDoubleBracket;
+entity.10216=&LeftAngleBracket;
+entity.10217=&RightAngleBracket;
+entity.10218=&Lang;
+entity.10219=&Rang;
+entity.10220=&loang;
+entity.10221=&roang;
+entity.10229=&LongLeftArrow;
+entity.10230=&LongRightArrow;
+entity.10231=&LongLeftRightArrow;
+entity.10232=&DoubleLongLeftArrow;
+entity.10233=&DoubleLongRightArrow;
+entity.10234=&DoubleLongLeftRightArrow;
+entity.10236=&longmapsto;
+entity.10239=&dzigrarr;
+entity.10498=&nvlArr;
+entity.10499=&nvrArr;
+entity.10500=&nvHarr;
+entity.10501=&Map;
+entity.10508=&lbarr;
+entity.10509=&bkarow;
+entity.10510=&lBarr;
+entity.10511=&dbkarow;
+entity.10512=&RBarr;
+entity.10513=&DDotrahd;
+entity.10514=&UpArrowBar;
+entity.10515=&DownArrowBar;
+entity.10518=&Rarrtl;
+entity.10521=&latail;
+entity.10522=&ratail;
+entity.10523=&lAtail;
+entity.10524=&rAtail;
+entity.10525=&larrfs;
+entity.10526=&rarrfs;
+entity.10527=&larrbfs;
+entity.10528=&rarrbfs;
+entity.10531=&nwarhk;
+entity.10532=&nearhk;
+entity.10533=&hksearow;
+entity.10534=&hkswarow;
+entity.10535=&nwnear;
+entity.10536=&nesear;
+entity.10537=&seswar;
+entity.10538=&swnwar;
+entity.10547=&rarrc;
+entity.10549=&cudarrr;
+entity.10550=&ldca;
+entity.10551=&rdca;
+entity.10552=&cudarrl;
+entity.10553=&larrpl;
+entity.10556=&curarrm;
+entity.10557=&cularrp;
+entity.10565=&rarrpl;
+entity.10568=&harrcir;
+entity.10569=&Uarrocir;
+entity.10570=&lurdshar;
+entity.10571=&ldrushar;
+entity.10574=&LeftRightVector;
+entity.10575=&RightUpDownVector;
+entity.10576=&DownLeftRightVector;
+entity.10577=&LeftUpDownVector;
+entity.10578=&LeftVectorBar;
+entity.10579=&RightVectorBar;
+entity.10580=&RightUpVectorBar;
+entity.10581=&RightDownVectorBar;
+entity.10582=&DownLeftVectorBar;
+entity.10583=&DownRightVectorBar;
+entity.10584=&LeftUpVectorBar;
+entity.10585=&LeftDownVectorBar;
+entity.10586=&LeftTeeVector;
+entity.10587=&RightTeeVector;
+entity.10588=&RightUpTeeVector;
+entity.10589=&RightDownTeeVector;
+entity.10590=&DownLeftTeeVector;
+entity.10591=&DownRightTeeVector;
+entity.10592=&LeftUpTeeVector;
+entity.10593=&LeftDownTeeVector;
+entity.10594=&lHar;
+entity.10595=&uHar;
+entity.10596=&rHar;
+entity.10597=&dHar;
+entity.10598=&luruhar;
+entity.10599=&ldrdhar;
+entity.10600=&ruluhar;
+entity.10601=&rdldhar;
+entity.10602=&lharul;
+entity.10603=&llhard;
+entity.10604=&rharul;
+entity.10605=&lrhard;
+entity.10606=&UpEquilibrium;
+entity.10607=&ReverseUpEquilibrium;
+entity.10608=&RoundImplies;
+entity.10609=&erarr;
+entity.10610=&simrarr;
+entity.10611=&larrsim;
+entity.10612=&rarrsim;
+entity.10613=&rarrap;
+entity.10614=&ltlarr;
+entity.10616=&gtrarr;
+entity.10617=&subrarr;
+entity.10619=&suplarr;
+entity.10620=&lfisht;
+entity.10621=&rfisht;
+entity.10622=&ufisht;
+entity.10623=&dfisht;
+entity.10629=&lopar;
+entity.10630=&ropar;
+entity.10635=&lbrke;
+entity.10636=&rbrke;
+entity.10637=&lbrkslu;
+entity.10638=&rbrksld;
+entity.10639=&lbrksld;
+entity.10640=&rbrkslu;
+entity.10641=&langd;
+entity.10642=&rangd;
+entity.10643=&lparlt;
+entity.10644=&rpargt;
+entity.10645=&gtlPar;
+entity.10646=&ltrPar;
+entity.10650=&vzigzag;
+entity.10652=&vangrt;
+entity.10653=&angrtvbd;
+entity.10660=&ange;
+entity.10661=&range;
+entity.10662=&dwangle;
+entity.10663=&uwangle;
+entity.10664=&angmsdaa;
+entity.10665=&angmsdab;
+entity.10666=&angmsdac;
+entity.10667=&angmsdad;
+entity.10668=&angmsdae;
+entity.10669=&angmsdaf;
+entity.10670=&angmsdag;
+entity.10671=&angmsdah;
+entity.10672=&bemptyv;
+entity.10673=&demptyv;
+entity.10674=&cemptyv;
+entity.10675=&raemptyv;
+entity.10676=&laemptyv;
+entity.10677=&ohbar;
+entity.10678=&omid;
+entity.10679=&opar;
+entity.10681=&operp;
+entity.10683=&olcross;
+entity.10684=&odsold;
+entity.10686=&olcir;
+entity.10687=&ofcir;
+entity.10688=&olt;
+entity.10689=&ogt;
+entity.10690=&cirscir;
+entity.10691=&cirE;
+entity.10692=&solb;
+entity.10693=&bsolb;
+entity.10697=&boxbox;
+entity.10701=&trisb;
+entity.10702=&rtriltri;
+entity.10703=&LeftTriangleBar;
+entity.10704=&RightTriangleBar;
+entity.10714=&race;
+entity.10716=&iinfin;
+entity.10717=&infintie;
+entity.10718=&nvinfin;
+entity.10723=&eparsl;
+entity.10724=&smeparsl;
+entity.10725=&eqvparsl;
+entity.10731=&blacklozenge;
+entity.10740=&RuleDelayed;
+entity.10742=&dsol;
+entity.10752=&bigodot;
+entity.10753=&bigoplus;
+entity.10754=&bigotimes;
+entity.10756=&biguplus;
+entity.10758=&bigsqcup;
+entity.10764=&iiiint;
+entity.10765=&fpartint;
+entity.10768=&cirfnint;
+entity.10769=&awint;
+entity.10770=&rppolint;
+entity.10771=&scpolint;
+entity.10772=&npolint;
+entity.10773=&pointint;
+entity.10774=&quatint;
+entity.10775=&intlarhk;
+entity.10786=&pluscir;
+entity.10787=&plusacir;
+entity.10788=&simplus;
+entity.10789=&plusdu;
+entity.10790=&plussim;
+entity.10791=&plustwo;
+entity.10793=&mcomma;
+entity.10794=&minusdu;
+entity.10797=&loplus;
+entity.10798=&roplus;
+entity.10799=&Cross;
+entity.10800=&timesd;
+entity.10801=&timesbar;
+entity.10803=&smashp;
+entity.10804=&lotimes;
+entity.10805=&rotimes;
+entity.10806=&otimesas;
+entity.10807=&Otimes;
+entity.10808=&odiv;
+entity.10809=&triplus;
+entity.10810=&triminus;
+entity.10811=&tritime;
+entity.10812=&intprod;
+entity.10815=&amalg;
+entity.10816=&capdot;
+entity.10818=&ncup;
+entity.10819=&ncap;
+entity.10820=&capand;
+entity.10821=&cupor;
+entity.10822=&cupcap;
+entity.10823=&capcup;
+entity.10824=&cupbrcap;
+entity.10825=&capbrcup;
+entity.10826=&cupcup;
+entity.10827=&capcap;
+entity.10828=&ccups;
+entity.10829=&ccaps;
+entity.10832=&ccupssm;
+entity.10835=&And;
+entity.10836=&Or;
+entity.10837=&andand;
+entity.10838=&oror;
+entity.10839=&orslope;
+entity.10840=&andslope;
+entity.10842=&andv;
+entity.10843=&orv;
+entity.10844=&andd;
+entity.10845=&ord;
+entity.10847=&wedbar;
+entity.10854=&sdote;
+entity.10858=&simdot;
+entity.10861=&congdot;
+entity.10862=&easter;
+entity.10863=&apacir;
+entity.10864=&apE;
+entity.10865=&eplus;
+entity.10866=&pluse;
+entity.10867=&Esim;
+entity.10868=&Colone;
+entity.10869=&Equal;
+entity.10871=&ddotseq;
+entity.10872=&equivDD;
+entity.10873=&ltcir;
+entity.10874=&gtcir;
+entity.10875=&ltquest;
+entity.10876=&gtquest;
+entity.10877=&LessSlantEqual;
+entity.10878=&GreaterSlantEqual;
+entity.10879=&lesdot;
+entity.10880=&gesdot;
+entity.10881=&lesdoto;
+entity.10882=&gesdoto;
+entity.10883=&lesdotor;
+entity.10884=&gesdotol;
+entity.10885=&lessapprox;
+entity.10886=&gtrapprox;
+entity.10887=&lneq;
+entity.10888=&gneq;
+entity.10889=&lnapprox;
+entity.10890=&gnapprox;
+entity.10891=&lesseqqgtr;
+entity.10892=&gtreqqless;
+entity.10893=&lsime;
+entity.10894=&gsime;
+entity.10895=&lsimg;
+entity.10896=&gsiml;
+entity.10897=&lgE;
+entity.10898=&glE;
+entity.10899=&lesges;
+entity.10900=&gesles;
+entity.10901=&eqslantless;
+entity.10902=&eqslantgtr;
+entity.10903=&elsdot;
+entity.10904=&egsdot;
+entity.10905=&el;
+entity.10906=&eg;
+entity.10909=&siml;
+entity.10910=&simg;
+entity.10911=&simlE;
+entity.10912=&simgE;
+entity.10913=&LessLess;
+entity.10914=&GreaterGreater;
+entity.10916=&glj;
+entity.10917=&gla;
+entity.10918=&ltcc;
+entity.10919=&gtcc;
+entity.10920=&lescc;
+entity.10921=&gescc;
+entity.10922=&smt;
+entity.10923=&lat;
+entity.10924=&smte;
+entity.10925=&late;
+entity.10926=&bumpE;
+entity.10927=&PrecedesEqual;
+entity.10928=&SucceedsEqual;
+entity.10931=&prE;
+entity.10932=&scE;
+entity.10933=&precneqq;
+entity.10934=&succneqq;
+entity.10935=&precapprox;
+entity.10936=&succapprox;
+entity.10937=&precnapprox;
+entity.10938=&succnapprox;
+entity.10939=&Pr;
+entity.10940=&Sc;
+entity.10941=&subdot;
+entity.10942=&supdot;
+entity.10943=&subplus;
+entity.10944=&supplus;
+entity.10945=&submult;
+entity.10946=&supmult;
+entity.10947=&subedot;
+entity.10948=&supedot;
+entity.10949=&subseteqq;
+entity.10950=&supseteqq;
+entity.10951=&subsim;
+entity.10952=&supsim;
+entity.10955=&subsetneqq;
+entity.10956=&supsetneqq;
+entity.10959=&csub;
+entity.10960=&csup;
+entity.10961=&csube;
+entity.10962=&csupe;
+entity.10963=&subsup;
+entity.10964=&supsub;
+entity.10965=&subsub;
+entity.10966=&supsup;
+entity.10967=&suphsub;
+entity.10968=&supdsub;
+entity.10969=&forkv;
+entity.10970=&topfork;
+entity.10971=&mlcp;
+entity.10980=&DoubleLeftTee;
+entity.10982=&Vdashl;
+entity.10983=&Barv;
+entity.10984=&vBar;
+entity.10985=&vBarv;
+entity.10987=&Vbar;
+entity.10988=&Not;
+entity.10989=&bNot;
+entity.10990=&rnmid;
+entity.10991=&cirmid;
+entity.10992=&midcir;
+entity.10993=&topcir;
+entity.10994=&nhpar;
+entity.10995=&parsim;
+entity.11005=&parsl;
+entity.64256=&fflig;
+entity.64257=&filig;
+entity.64258=&fllig;
+entity.64259=&ffilig;
+entity.64260=&ffllig;
+entity.119964=&Ascr;
+entity.119966=&Cscr;
+entity.119967=&Dscr;
+entity.119970=&Gscr;
+entity.119973=&Jscr;
+entity.119974=&Kscr;
+entity.119977=&Nscr;
+entity.119978=&Oscr;
+entity.119979=&Pscr;
+entity.119980=&Qscr;
+entity.119982=&Sscr;
+entity.119983=&Tscr;
+entity.119984=&Uscr;
+entity.119985=&Vscr;
+entity.119986=&Wscr;
+entity.119987=&Xscr;
+entity.119988=&Yscr;
+entity.119989=&Zscr;
+entity.119990=&ascr;
+entity.119991=&bscr;
+entity.119992=&cscr;
+entity.119993=&dscr;
+entity.119995=&fscr;
+entity.119997=&hscr;
+entity.119998=&iscr;
+entity.119999=&jscr;
+entity.120000=&kscr;
+entity.120001=&lscr;
+entity.120002=&mscr;
+entity.120003=&nscr;
+entity.120005=&pscr;
+entity.120006=&qscr;
+entity.120007=&rscr;
+entity.120008=&sscr;
+entity.120009=&tscr;
+entity.120010=&uscr;
+entity.120011=&vscr;
+entity.120012=&wscr;
+entity.120013=&xscr;
+entity.120014=&yscr;
+entity.120015=&zscr;
+entity.120068=&Afr;
+entity.120069=&Bfr;
+entity.120071=&Dfr;
+entity.120072=&Efr;
+entity.120073=&Ffr;
+entity.120074=&Gfr;
+entity.120077=&Jfr;
+entity.120078=&Kfr;
+entity.120079=&Lfr;
+entity.120080=&Mfr;
+entity.120081=&Nfr;
+entity.120082=&Ofr;
+entity.120083=&Pfr;
+entity.120084=&Qfr;
+entity.120086=&Sfr;
+entity.120087=&Tfr;
+entity.120088=&Ufr;
+entity.120089=&Vfr;
+entity.120090=&Wfr;
+entity.120091=&Xfr;
+entity.120092=&Yfr;
+entity.120094=&afr;
+entity.120095=&bfr;
+entity.120096=&cfr;
+entity.120097=&dfr;
+entity.120098=&efr;
+entity.120099=&ffr;
+entity.120100=&gfr;
+entity.120101=&hfr;
+entity.120102=&ifr;
+entity.120103=&jfr;
+entity.120104=&kfr;
+entity.120105=&lfr;
+entity.120106=&mfr;
+entity.120107=&nfr;
+entity.120108=&ofr;
+entity.120109=&pfr;
+entity.120110=&qfr;
+entity.120111=&rfr;
+entity.120112=&sfr;
+entity.120113=&tfr;
+entity.120114=&ufr;
+entity.120115=&vfr;
+entity.120116=&wfr;
+entity.120117=&xfr;
+entity.120118=&yfr;
+entity.120119=&zfr;
+entity.120120=&Aopf;
+entity.120121=&Bopf;
+entity.120123=&Dopf;
+entity.120124=&Eopf;
+entity.120125=&Fopf;
+entity.120126=&Gopf;
+entity.120128=&Iopf;
+entity.120129=&Jopf;
+entity.120130=&Kopf;
+entity.120131=&Lopf;
+entity.120132=&Mopf;
+entity.120134=&Oopf;
+entity.120138=&Sopf;
+entity.120139=&Topf;
+entity.120140=&Uopf;
+entity.120141=&Vopf;
+entity.120142=&Wopf;
+entity.120143=&Xopf;
+entity.120144=&Yopf;
+entity.120146=&aopf;
+entity.120147=&bopf;
+entity.120148=&copf;
+entity.120149=&dopf;
+entity.120150=&eopf;
+entity.120151=&fopf;
+entity.120152=&gopf;
+entity.120153=&hopf;
+entity.120154=&iopf;
+entity.120155=&jopf;
+entity.120156=&kopf;
+entity.120157=&lopf;
+entity.120158=&mopf;
+entity.120159=&nopf;
+entity.120160=&oopf;
+entity.120161=&popf;
+entity.120162=&qopf;
+entity.120163=&ropf;
+entity.120164=&sopf;
+entity.120165=&topf;
+entity.120166=&uopf;
+entity.120167=&vopf;
+entity.120168=&wopf;
+entity.120169=&xopf;
+entity.120170=&yopf;
+entity.120171=&zopf;
+entity.120484=&imath;
+entity.120485=&jmath;
diff --git a/intl/unicharutil/tables/moz.build b/intl/unicharutil/tables/moz.build
new file mode 100644
index 000000000..639c839da
--- /dev/null
+++ b/intl/unicharutil/tables/moz.build
@@ -0,0 +1,12 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+RESOURCE_FILES.entityTables = [
+ 'html40Latin1.properties',
+ 'html40Special.properties',
+ 'html40Symbols.properties',
+ 'mathml20.properties',
+]
diff --git a/intl/unicharutil/tests/NormalizationData.h b/intl/unicharutil/tests/NormalizationData.h
new file mode 100644
index 000000000..c306d6acb
--- /dev/null
+++ b/intl/unicharutil/tests/NormalizationData.h
@@ -0,0 +1,12 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* dummy test data will be overwritten by generator */
+static char versionText[] = "\0";
+static testcaseLine Part0TestData[1];
+static testcaseLine Part1TestData[1];
+static testcaseLine Part2TestData[1];
+static testcaseLine Part3TestData[1];
+
diff --git a/intl/unicharutil/tests/NormalizationTest.cpp b/intl/unicharutil/tests/NormalizationTest.cpp
new file mode 100644
index 000000000..aaf775a8f
--- /dev/null
+++ b/intl/unicharutil/tests/NormalizationTest.cpp
@@ -0,0 +1,282 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include <stdio.h>
+#include "gtest/gtest.h"
+#include "nsXPCOM.h"
+#include "nsIUnicodeNormalizer.h"
+#include "nsString.h"
+#include "nsCharTraits.h"
+#include "nsServiceManagerUtils.h"
+#include "mozilla/Sprintf.h"
+
+struct testcaseLine {
+ wchar_t* c1;
+ wchar_t* c2;
+ wchar_t* c3;
+ wchar_t* c4;
+ wchar_t* c5;
+ char* description;
+};
+
+#ifdef DEBUG_smontagu
+#define DEBUG_NAMED_TESTCASE(t, s) \
+ printf(t ": "); \
+ for (uint32_t i = 0; i < s.Length(); ++i) \
+ printf("%x ", s.CharAt(i)); \
+ printf("\n")
+#else
+#define DEBUG_NAMED_TESTCASE(t, s)
+#endif
+
+#define DEBUG_TESTCASE(x) DEBUG_NAMED_TESTCASE(#x, x)
+
+#define NORMALIZE_AND_COMPARE(base, comparison, form, description) \
+ normalized.Truncate();\
+ normalizer->NormalizeUnicode##form(comparison, normalized);\
+ DEBUG_NAMED_TESTCASE(#form "(" #comparison ")", normalized);\
+ if (!base.Equals(normalized)) {\
+ rv = false;\
+ showError(description, #base " != " #form "(" #comparison ")\n");\
+ }
+
+NS_DEFINE_CID(kUnicodeNormalizerCID, NS_UNICODE_NORMALIZER_CID);
+
+nsIUnicodeNormalizer *normalizer;
+
+#include "NormalizationData.h"
+
+void showError(const char* description, const char* errorText)
+{
+ printf("%s failed: %s", description, errorText);
+}
+
+bool TestInvariants(testcaseLine* testLine)
+{
+ nsAutoString c1, c2, c3, c4, c5, normalized;
+ c1 = nsDependentString((char16_t*)testLine->c1);
+ c2 = nsDependentString((char16_t*)testLine->c2);
+ c3 = nsDependentString((char16_t*)testLine->c3);
+ c4 = nsDependentString((char16_t*)testLine->c4);
+ c5 = nsDependentString((char16_t*)testLine->c5);
+ bool rv = true;
+
+ /*
+ 1. The following invariants must be true for all conformant implementations
+
+ NFC
+ c2 == NFC(c1) == NFC(c2) == NFC(c3)
+ */
+ DEBUG_TESTCASE(c2);
+ NORMALIZE_AND_COMPARE(c2, c1, NFC, testLine->description);
+ NORMALIZE_AND_COMPARE(c2, c2, NFC, testLine->description);
+ NORMALIZE_AND_COMPARE(c2, c3, NFC, testLine->description);
+
+ /*
+ c4 == NFC(c4) == NFC(c5)
+ */
+ DEBUG_TESTCASE(c4);
+ NORMALIZE_AND_COMPARE(c4, c4, NFC, testLine->description);
+ NORMALIZE_AND_COMPARE(c4, c5, NFC, testLine->description);
+
+ /*
+ NFD
+ c3 == NFD(c1) == NFD(c2) == NFD(c3)
+ */
+ DEBUG_TESTCASE(c3);
+ NORMALIZE_AND_COMPARE(c3, c1, NFD, testLine->description);
+ NORMALIZE_AND_COMPARE(c3, c2, NFD, testLine->description);
+ NORMALIZE_AND_COMPARE(c3, c3, NFD, testLine->description);
+ /*
+ c5 == NFD(c4) == NFD(c5)
+ */
+ DEBUG_TESTCASE(c5);
+ NORMALIZE_AND_COMPARE(c5, c4, NFD, testLine->description);
+ NORMALIZE_AND_COMPARE(c5, c5, NFD, testLine->description);
+
+ /*
+ NFKC
+ c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
+ */
+ DEBUG_TESTCASE(c4);
+ NORMALIZE_AND_COMPARE(c4, c1, NFKC, testLine->description);
+ NORMALIZE_AND_COMPARE(c4, c2, NFKC, testLine->description);
+ NORMALIZE_AND_COMPARE(c4, c3, NFKC, testLine->description);
+ NORMALIZE_AND_COMPARE(c4, c4, NFKC, testLine->description);
+ NORMALIZE_AND_COMPARE(c4, c5, NFKC, testLine->description);
+
+ /*
+ NFKD
+ c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
+ */
+ DEBUG_TESTCASE(c5);
+ NORMALIZE_AND_COMPARE(c5, c1, NFKD, testLine->description);
+ NORMALIZE_AND_COMPARE(c5, c2, NFKD, testLine->description);
+ NORMALIZE_AND_COMPARE(c5, c3, NFKD, testLine->description);
+ NORMALIZE_AND_COMPARE(c5, c4, NFKD, testLine->description);
+ NORMALIZE_AND_COMPARE(c5, c5, NFKD, testLine->description);
+
+ return rv;
+}
+
+uint32_t UTF32CodepointFromTestcase(testcaseLine* testLine)
+{
+ if (!IS_SURROGATE(testLine->c1[0]))
+ return testLine->c1[0];
+
+ NS_ASSERTION(NS_IS_HIGH_SURROGATE(testLine->c1[0]) &&
+ NS_IS_LOW_SURROGATE(testLine->c1[1]),
+ "Test data neither in BMP nor legal surrogate pair");
+ return SURROGATE_TO_UCS4(testLine->c1[0], testLine->c1[1]);
+}
+
+bool TestUnspecifiedCodepoint(uint32_t codepoint)
+{
+ bool rv = true;
+ char16_t unicharArray[3];
+ nsAutoString X, normalized;
+
+ if (IS_IN_BMP(codepoint)) {
+ unicharArray[0] = codepoint;
+ unicharArray[1] = 0;
+ X = nsDependentString(unicharArray);
+ }
+ else {
+ unicharArray[0] = H_SURROGATE(codepoint);
+ unicharArray[1] = L_SURROGATE(codepoint);
+ unicharArray[2] = 0;
+ X = nsDependentString(unicharArray);
+ }
+
+ /*
+ 2. For every code point X assigned in this version of Unicode that is not specifically
+ listed in Part 1, the following invariants must be true for all conformant
+ implementations:
+
+ X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X)
+ */
+ static const size_t len = 9;
+ char description[len];
+
+ DEBUG_TESTCASE(X);
+ snprintf(description, len, "U+%04X", codepoint);
+ NORMALIZE_AND_COMPARE(X, X, NFC, description);
+ NORMALIZE_AND_COMPARE(X, X, NFD, description);
+ NORMALIZE_AND_COMPARE(X, X, NFKC, description);
+ NORMALIZE_AND_COMPARE(X, X, NFKD, description);
+ return rv;
+}
+
+void TestPart0()
+{
+ printf("Test Part0: Specific cases\n");
+
+ uint32_t i = 0;
+ uint32_t numFailed = 0;
+ uint32_t numPassed = 0;
+
+ while (Part0TestData[i].c1[0] != 0) {
+ if (TestInvariants(&Part0TestData[i++]))
+ ++numPassed;
+ else
+ ++numFailed;
+ }
+ printf(" %d cases passed, %d failed\n\n", numPassed, numFailed);
+ EXPECT_EQ(0u, numFailed);
+}
+
+void TestPart1()
+{
+ printf("Test Part1: Character by character test\n");
+
+ uint32_t i = 0;
+ uint32_t numFailed = 0;
+ uint32_t numPassed = 0;
+ uint32_t codepoint;
+ uint32_t testDataCodepoint = UTF32CodepointFromTestcase(&Part1TestData[i]);
+
+ for (codepoint = 1; codepoint < 0x110000; ++codepoint) {
+ if (testDataCodepoint == codepoint) {
+ if (TestInvariants(&Part1TestData[i]))
+ ++numPassed;
+ else
+ ++numFailed;
+ testDataCodepoint = UTF32CodepointFromTestcase(&Part1TestData[++i]);
+ } else {
+ if (TestUnspecifiedCodepoint(codepoint))
+ ++numPassed;
+ else
+ ++numFailed;
+ }
+ }
+ printf(" %d cases passed, %d failed\n\n", numPassed, numFailed);
+ EXPECT_EQ(0u, numFailed);
+}
+
+void TestPart2()
+{
+ printf("Test Part2: Canonical Order Test\n");
+
+ uint32_t i = 0;
+ uint32_t numFailed = 0;
+ uint32_t numPassed = 0;
+
+ while (Part2TestData[i].c1[0] != 0) {
+ if (TestInvariants(&Part2TestData[i++]))
+ ++numPassed;
+ else
+ ++numFailed;
+ }
+ printf(" %d cases passed, %d failed\n\n", numPassed, numFailed);
+ EXPECT_EQ(0u, numFailed);
+}
+
+void TestPart3()
+{
+ printf("Test Part3: PRI #29 Test\n");
+
+ uint32_t i = 0;
+ uint32_t numFailed = 0;
+ uint32_t numPassed = 0;
+
+ while (Part3TestData[i].c1[0] != 0) {
+ if (TestInvariants(&Part3TestData[i++]))
+ ++numPassed;
+ else
+ ++numFailed;
+ }
+ printf(" %d cases passed, %d failed\n\n", numPassed, numFailed);
+ EXPECT_EQ(0u, numFailed);
+}
+
+TEST(NormalizationTest, Main) {
+ if (sizeof(wchar_t) != 2) {
+ printf("This test can only be run where sizeof(wchar_t) == 2\n");
+ return;
+ }
+ if (strlen(versionText) == 0) {
+ printf("No testcases: to run the tests generate the header file using\n");
+ printf(" perl genNormalizationData.pl\n");
+ printf("in intl/unichar/tools and rebuild\n");
+ return;
+ }
+
+ printf("NormalizationTest: test nsIUnicodeNormalizer. UCD version: %s\n",
+ versionText);
+
+ normalizer = nullptr;
+ nsresult res;
+ res = CallGetService(kUnicodeNormalizerCID, &normalizer);
+
+ ASSERT_FALSE(NS_FAILED(res)) << "GetService failed";
+ ASSERT_NE(nullptr, normalizer);
+
+ TestPart0();
+ TestPart1();
+ TestPart2();
+ TestPart3();
+
+ NS_RELEASE(normalizer);
+}
diff --git a/intl/unicharutil/tests/genNormalizationData.pl b/intl/unicharutil/tests/genNormalizationData.pl
new file mode 100644
index 000000000..816ab94e7
--- /dev/null
+++ b/intl/unicharutil/tests/genNormalizationData.pl
@@ -0,0 +1,93 @@
+#!/usr/bin/perl
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+open ( TEXTFILE , "< NormalizationTest.txt")
+ || die "Cannot find NormalizationTest.txt. The latest version should be available from\n http://www.unicode.org/Public/UNIDATA/NormalizationTest.txt\n";
+
+open ( OUT , "> NormalizationData.h")
+#open ( OUT , "> test.txt")
+ || die "Cannot create output file NormalizationData.h\n";
+
+$mpl = <<END_OF_MPL;
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+/*
+ DO NOT EDIT THIS DOCUMENT !!! THIS DOCUMENT IS GENERATED BY
+ mozilla/intl/unicharutil/tools/genNormalizationData.pl
+ */
+END_OF_MPL
+
+print OUT $mpl;
+
+# XXX This code assumes that wchar_t is 16-bit unsigned, which is currently
+# true on Windows, Linux and Mac (with |g++ -fshort-wchar|).
+# To make it work where that assumption doesn't hold, one could generate
+# one huge array containing all the strings as 16-bit units (including
+# the 0 terminator) and initialize the array of testcaseLine with pointers
+# into the huge array.
+
+while(<TEXTFILE>) {
+ chop;
+ if (/^# NormalizationTest-(.+)\.txt/) {
+ print OUT "static char versionText[] = \"$1\";\n";
+ } elsif (/^\@Part(.)/) {
+ if ($1 != "0") {
+ print OUT " {\n";
+ print OUT " L\"\",\n";
+ print OUT " L\"\",\n";
+ print OUT " L\"\",\n";
+ print OUT " L\"\",\n";
+ print OUT " L\"\",\n";
+ print OUT " \"\",\n";
+ print OUT " },\n";
+ print OUT "};\n";
+ }
+ print OUT "\n";
+ print OUT "static testcaseLine Part$1TestData[] = \n";
+ print OUT "{\n";
+ } else {
+ unless (/^\#/) {
+ @cases = split(/;/ , $_);
+ print OUT " {\n";
+ for ($case = 0; $case < 5; ++$case) {
+ $c = $cases[$case];
+ print OUT " L\"";
+ @codepoints = split(/ / , $c);
+ foreach (@codepoints) {
+ $cp = hex($_);
+ if ($cp < 0x10000) {
+ # BMP codepoint
+ printf OUT "\\x%04X", $cp;
+ } else {
+ # non-BMP codepoint, convert to surrogate pair
+ printf OUT "\\x%04X\\x%04X",
+ ($cp >> 10) + 0xD7C0,
+ ($cp & 0x03FF) | 0xDC00;
+ }
+ }
+ print OUT "\",\n";
+ }
+ $description = $cases[10];
+ $description =~ s/^ \) //;
+ print OUT " \"$description\"\n";
+ print OUT " },\n";
+ }
+ }
+}
+
+print OUT " {\n";
+print OUT " L\"\",\n";
+print OUT " L\"\",\n";
+print OUT " L\"\",\n";
+print OUT " L\"\",\n";
+print OUT " L\"\",\n";
+print OUT " \"\",\n";
+print OUT " },\n";
+print OUT "};\n";
+close (OUT);
+close (TEXTFILE);
diff --git a/intl/unicharutil/tests/moz.build b/intl/unicharutil/tests/moz.build
new file mode 100755
index 000000000..afd60160f
--- /dev/null
+++ b/intl/unicharutil/tests/moz.build
@@ -0,0 +1,11 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+SOURCES += [
+ 'NormalizationTest.cpp',
+]
+
+FINAL_LIBRARY = 'xul-gtest'
diff --git a/intl/unicharutil/tests/unit/xpcshell.ini b/intl/unicharutil/tests/unit/xpcshell.ini
new file mode 100755
index 000000000..1de04e432
--- /dev/null
+++ b/intl/unicharutil/tests/unit/xpcshell.ini
@@ -0,0 +1,3 @@
+[DEFAULT]
+head =
+tail =
diff --git a/intl/unicharutil/tools/MUTTUCData.txt b/intl/unicharutil/tools/MUTTUCData.txt
new file mode 100644
index 000000000..7d44e290a
--- /dev/null
+++ b/intl/unicharutil/tools/MUTTUCData.txt
@@ -0,0 +1,208 @@
+#
+# $Id: MUTTUCData.txt,v 1.1 1999/01/08 00:19:19 ftang%netscape.com Exp $
+#
+# Copyright 1996, 1997, 1998 Computing Research Labs,
+# New Mexico State University
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
+# OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+# THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+#
+# Implementation specific character properties.
+#
+#
+# Space, other.
+#
+0009;;Ss;;;;;;;;;;;;
+000A;;Ss;;;;;;;;;;;;
+000B;;Ss;;;;;;;;;;;;
+000C;;Ss;;;;;;;;;;;;
+000D;;Ss;;;;;;;;;;;;
+#
+# Non-breaking.
+#
+00A0;;Nb;;;;;;;;;;;;
+2007;;Nb;;;;;;;;;;;;
+2011;;Nb;;;;;;;;;;;;
+FEFF;;Nb;;;;;;;;;;;;
+#
+# Symmetric.
+#
+0028;;Sy;;;;;;;;;;;;
+0029;;Sy;;;;;;;;;;;;
+005B;;Sy;;;;;;;;;;;;
+005D;;Sy;;;;;;;;;;;;
+007B;;Sy;;;;;;;;;;;;
+007D;;Sy;;;;;;;;;;;;
+00AB;;Sy;;;;;;;;;;;;
+00BB;;Sy;;;;;;;;;;;;
+0F3A;;Sy;;;;;;;;;;;;
+0F3B;;Sy;;;;;;;;;;;;
+0F3C;;Sy;;;;;;;;;;;;
+0F3D;;Sy;;;;;;;;;;;;
+0F3E;;Sy;;;;;;;;;;;;
+0F3F;;Sy;;;;;;;;;;;;
+2018;;Sy;;;;;;;;;;;;
+2019;;Sy;;;;;;;;;;;;
+201A;;Sy;;;;;;;;;;;;
+201B;;Sy;;;;;;;;;;;;
+201C;;Sy;;;;;;;;;;;;
+201D;;Sy;;;;;;;;;;;;
+201E;;Sy;;;;;;;;;;;;
+201F;;Sy;;;;;;;;;;;;
+2039;;Sy;;;;;;;;;;;;
+203A;;Sy;;;;;;;;;;;;
+2045;;Sy;;;;;;;;;;;;
+2046;;Sy;;;;;;;;;;;;
+207D;;Sy;;;;;;;;;;;;
+207E;;Sy;;;;;;;;;;;;
+208D;;Sy;;;;;;;;;;;;
+208E;;Sy;;;;;;;;;;;;
+2329;;Sy;;;;;;;;;;;;
+232A;;Sy;;;;;;;;;;;;
+3008;;Sy;;;;;;;;;;;;
+3009;;Sy;;;;;;;;;;;;
+300A;;Sy;;;;;;;;;;;;
+300B;;Sy;;;;;;;;;;;;
+300C;;Sy;;;;;;;;;;;;
+300D;;Sy;;;;;;;;;;;;
+300E;;Sy;;;;;;;;;;;;
+300F;;Sy;;;;;;;;;;;;
+3010;;Sy;;;;;;;;;;;;
+3011;;Sy;;;;;;;;;;;;
+3014;;Sy;;;;;;;;;;;;
+3015;;Sy;;;;;;;;;;;;
+3016;;Sy;;;;;;;;;;;;
+3017;;Sy;;;;;;;;;;;;
+3018;;Sy;;;;;;;;;;;;
+3019;;Sy;;;;;;;;;;;;
+301A;;Sy;;;;;;;;;;;;
+301B;;Sy;;;;;;;;;;;;
+301D;;Sy;;;;;;;;;;;;
+301E;;Sy;;;;;;;;;;;;
+FD3E;;Sy;;;;;;;;;;;;
+FD3F;;Sy;;;;;;;;;;;;
+FE35;;Sy;;;;;;;;;;;;
+FE36;;Sy;;;;;;;;;;;;
+FE37;;Sy;;;;;;;;;;;;
+FE38;;Sy;;;;;;;;;;;;
+FE39;;Sy;;;;;;;;;;;;
+FE3A;;Sy;;;;;;;;;;;;
+FE3B;;Sy;;;;;;;;;;;;
+FE3C;;Sy;;;;;;;;;;;;
+FE3D;;Sy;;;;;;;;;;;;
+FE3E;;Sy;;;;;;;;;;;;
+FE3F;;Sy;;;;;;;;;;;;
+FE40;;Sy;;;;;;;;;;;;
+FE41;;Sy;;;;;;;;;;;;
+FE42;;Sy;;;;;;;;;;;;
+FE43;;Sy;;;;;;;;;;;;
+FE44;;Sy;;;;;;;;;;;;
+FE59;;Sy;;;;;;;;;;;;
+FE5A;;Sy;;;;;;;;;;;;
+FE5B;;Sy;;;;;;;;;;;;
+FE5C;;Sy;;;;;;;;;;;;
+FE5D;;Sy;;;;;;;;;;;;
+FE5E;;Sy;;;;;;;;;;;;
+FF08;;Sy;;;;;;;;;;;;
+FF09;;Sy;;;;;;;;;;;;
+FF3B;;Sy;;;;;;;;;;;;
+FF3D;;Sy;;;;;;;;;;;;
+FF5B;;Sy;;;;;;;;;;;;
+FF5D;;Sy;;;;;;;;;;;;
+FF62;;Sy;;;;;;;;;;;;
+FF63;;Sy;;;;;;;;;;;;
+#
+# Hex digit.
+#
+0030;;Hd;;;;;;;;;;;;
+0031;;Hd;;;;;;;;;;;;
+0032;;Hd;;;;;;;;;;;;
+0033;;Hd;;;;;;;;;;;;
+0034;;Hd;;;;;;;;;;;;
+0035;;Hd;;;;;;;;;;;;
+0036;;Hd;;;;;;;;;;;;
+0037;;Hd;;;;;;;;;;;;
+0038;;Hd;;;;;;;;;;;;
+0039;;Hd;;;;;;;;;;;;
+0041;;Hd;;;;;;;;;;;;
+0042;;Hd;;;;;;;;;;;;
+0043;;Hd;;;;;;;;;;;;
+0044;;Hd;;;;;;;;;;;;
+0045;;Hd;;;;;;;;;;;;
+0046;;Hd;;;;;;;;;;;;
+0061;;Hd;;;;;;;;;;;;
+0062;;Hd;;;;;;;;;;;;
+0063;;Hd;;;;;;;;;;;;
+0064;;Hd;;;;;;;;;;;;
+0065;;Hd;;;;;;;;;;;;
+0066;;Hd;;;;;;;;;;;;
+FF10;;Hd;;;;;;;;;;;;
+FF11;;Hd;;;;;;;;;;;;
+FF12;;Hd;;;;;;;;;;;;
+FF13;;Hd;;;;;;;;;;;;
+FF14;;Hd;;;;;;;;;;;;
+FF15;;Hd;;;;;;;;;;;;
+FF16;;Hd;;;;;;;;;;;;
+FF17;;Hd;;;;;;;;;;;;
+FF18;;Hd;;;;;;;;;;;;
+FF19;;Hd;;;;;;;;;;;;
+FF21;;Hd;;;;;;;;;;;;
+FF22;;Hd;;;;;;;;;;;;
+FF23;;Hd;;;;;;;;;;;;
+FF24;;Hd;;;;;;;;;;;;
+FF25;;Hd;;;;;;;;;;;;
+FF26;;Hd;;;;;;;;;;;;
+FF41;;Hd;;;;;;;;;;;;
+FF42;;Hd;;;;;;;;;;;;
+FF43;;Hd;;;;;;;;;;;;
+FF44;;Hd;;;;;;;;;;;;
+FF45;;Hd;;;;;;;;;;;;
+FF46;;Hd;;;;;;;;;;;;
+#
+# Quote marks.
+#
+0022;;Qm;;;;;;;;;;;;
+0027;;Qm;;;;;;;;;;;;
+00AB;;Qm;;;;;;;;;;;;
+00BB;;Qm;;;;;;;;;;;;
+2018;;Qm;;;;;;;;;;;;
+2019;;Qm;;;;;;;;;;;;
+201A;;Qm;;;;;;;;;;;;
+201B;;Qm;;;;;;;;;;;;
+201C;;Qm;;;;;;;;;;;;
+201D;;Qm;;;;;;;;;;;;
+201E;;Qm;;;;;;;;;;;;
+201F;;Qm;;;;;;;;;;;;
+2039;;Qm;;;;;;;;;;;;
+203A;;Qm;;;;;;;;;;;;
+300C;;Qm;;;;;;;;;;;;
+300D;;Qm;;;;;;;;;;;;
+300E;;Qm;;;;;;;;;;;;
+300F;;Qm;;;;;;;;;;;;
+301D;;Qm;;;;;;;;;;;;
+301E;;Qm;;;;;;;;;;;;
+301F;;Qm;;;;;;;;;;;;
+FE41;;Qm;;;;;;;;;;;;
+FE42;;Qm;;;;;;;;;;;;
+FE43;;Qm;;;;;;;;;;;;
+FE44;;Qm;;;;;;;;;;;;
+FF02;;Qm;;;;;;;;;;;;
+FF07;;Qm;;;;;;;;;;;;
+FF62;;Qm;;;;;;;;;;;;
+FF63;;Qm;;;;;;;;;;;;
diff --git a/intl/unicharutil/tools/README.txt b/intl/unicharutil/tools/README.txt
new file mode 100644
index 000000000..7295547f1
--- /dev/null
+++ b/intl/unicharutil/tools/README.txt
@@ -0,0 +1,3 @@
+Instructions for using these tools are on the Mozilla Wiki.
+
+https://wiki.mozilla.org/I18n:Updating_Unicode_version
diff --git a/intl/unicharutil/tools/UCDATAREADME.txt b/intl/unicharutil/tools/UCDATAREADME.txt
new file mode 100644
index 000000000..012098fc0
--- /dev/null
+++ b/intl/unicharutil/tools/UCDATAREADME.txt
@@ -0,0 +1,207 @@
+#
+# $Id: UCDATAREADME.txt,v 1.1 1999/01/08 00:19:20 ftang%netscape.com Exp $
+#
+
+ MUTT UCData Package 1.9
+ -----------------------
+
+This is a package that supports ctype-like operations for Unicode UCS-2 text
+(and surrogates), case mapping, and decomposition lookup. To use it, you will
+need to get the "UnicodeData-2.0.14.txt" (or later) file from the Unicode Web
+or FTP site.
+
+This package consists of two parts:
+
+ 1. A program called "ucgendat" which generates five data files from the
+ UnicodeData-2.*.txt file. The files are:
+
+ A. case.dat - the case mappings.
+ B. ctype.dat - the character property tables.
+ C. decomp.dat - the character decompositions.
+ D. cmbcl.dat - the non-zero combining classes.
+ E. num.dat - the codes representing numbers.
+
+ 2. The "ucdata.[ch]" files which implement the functions needed to
+ check to see if a character matches groups of properties, to map between
+ upper, lower, and title case, to look up the decomposition of a
+ character, look up the combining class of a character, and get the number
+ value of a character.
+
+A short reference to the functions available is in the "api.txt" file.
+
+Techie Details
+==============
+
+The "ucgendat" program parses files from the command line which are all in the
+Unicode Character Database (UCDB) format. An additional properties file,
+"MUTTUCData.txt", provides some extra properties for some characters.
+
+The program looks for the two character properties fields (2 and 4), the
+combining class field (3), the decomposition field (5), the numeric value
+field (8), and the case mapping fields (12, 13, and 14). The decompositions
+are recursively expanded before being written out.
+
+The decomposition table contains all the canonical decompositions. This means
+all decompositions that do not have tags such as "<compat>" or "<font>".
+
+The data is almost all stored as unsigned longs (32-bits assumed) and the
+routines that load the data take care of endian swaps when necessary. This
+also means that surrogates (>= 0x10000) can be placed in the data files the
+"ucgendat" program parses.
+
+The data is written as external files and broken into five parts so it can be
+selectively updated at runtime if necessary.
+
+The data files currently generated from the "ucgendat" program total about 56K
+in size all together.
+
+The format of the binary data files is documented in the "format.txt" file.
+
+Mark Leisher <mleisher@crl.nmsu.edu>
+13 December 1998
+
+CHANGES
+=======
+
+Version 1.9
+-----------
+1. Fixed a problem with an incorrect amount of storage being allocated for the
+ combining class nodes.
+
+2. Fixed an invalid initialization in the number code.
+
+3. Changed the Java template file formatting a bit.
+
+4. Added tables and function for getting decompositions in the Java class.
+
+Version 1.8
+-----------
+1. Fixed a problem with adding certain ranges.
+
+2. Added two more macros for testing for identifiers.
+
+3. Tested with the UnicodeData-2.1.5.txt file.
+
+Version 1.7
+-----------
+1. Fixed a problem with looking up decompositions in "ucgendat."
+
+Version 1.6
+-----------
+1. Added two new properties introduced with UnicodeData-2.1.4.txt.
+
+2. Changed the "ucgendat.c" program a little to automatically align the
+ property data on a 4-byte boundary when new properties are added.
+
+3. Changed the "ucgendat.c" programs to only generate canonical
+ decompositions.
+
+4. Added two new macros ucisinitialpunct() and ucisfinalpunct() to check for
+ initial and final punctuation characters.
+
+5. Minor additions and changes to the documentation.
+
+Version 1.5
+-----------
+1. Changed all file open calls to include binary mode with "b" for DOS/WIN
+ platforms.
+
+2. Wrapped the unistd.h include so it won't be included when compiled under
+ Win32.
+
+3. Fixed a bad range check for hex digits in ucgendat.c.
+
+4. Fixed a bad endian swap for combining classes.
+
+5. Added code to make a number table and associated lookup functions.
+ Functions added are ucnumber(), ucdigit(), and ucgetnumber(). The last
+ function is to maintain compatibility with John Cowan's "uctype" package.
+
+Version 1.4
+-----------
+1. Fixed a bug with adding a range.
+
+2. Fixed a bug with inserting a range in order.
+
+3. Fixed incorrectly specified ucisdefined() and ucisundefined() macros.
+
+4. Added the missing unload for the combining class data.
+
+5. Fixed a bad macro placement in ucisweak().
+
+Version 1.3
+-----------
+1. Bug with case mapping calculations fixed.
+
+2. Bug with empty character property entries fixed.
+
+3. Bug with incorrect type in the combining class lookup fixed.
+
+4. Some corrections done to api.txt.
+
+5. Bug in certain character property lookups fixed.
+
+6. Added a character property table that records the defined characters.
+
+7. Replaced ucisunknown() with ucisdefined() and ucisundefined().
+
+Version 1.2
+-----------
+1. Added code to ucgendat to generate a combining class table.
+
+2. Fixed an endian problem with the byte count of decompositions.
+
+3. Fixed some minor problems in the "format.txt" file.
+
+4. Removed some bogus "Ss" values from MUTTUCData.txt file.
+
+5. Added API function to get combining class.
+
+6. Changed the open mode to "rb" so binary data files will be opened correctly
+ on DOS/WIN as well as other platforms.
+
+7. Added the "api.txt" file.
+
+Version 1.1
+-----------
+1. Added ucisxdigit() which I overlooked.
+
+2. Added UC_LT to the ucisalpha() macro which I overlooked.
+
+3. Change uciscntrl() to include UC_CF.
+
+4. Added ucisocntrl() and ucfntcntrl() macros.
+
+5. Added a ucisblank() which I overlooked.
+
+6. Added missing properties to ucissymbol() and ucisnumber().
+
+7. Added ucisgraph() and ucisprint().
+
+8. Changed the "Mr" property to "Sy" to mark this subset of mirroring
+ characters as symmetric to avoid trampling the Unicode/ISO10646 sense of
+ mirroring.
+
+9. Added another property called "Ss" which includes control characters
+ traditionally seen as spaces in the isspace() macro.
+
+10. Added a bunch of macros to be API compatible with John Cowan's package.
+
+ACKNOWLEDGEMENTS
+================
+
+Thanks go to John Cowan <cowan@locke.ccil.org> for pointing out lots of
+missing things and giving me stuff, particularly a bunch of new macros.
+
+Thanks go to Bob Verbrugge <bob_verbrugge@nl.compuware.com> for pointing out
+various bugs.
+
+Thanks go to Christophe Pierret <cpierret@businessobjects.com> for pointing
+out that file modes need to have "b" for DOS/WIN machines, pointing out
+unistd.h is not a Win 32 header, and pointing out a problem with ucisalnum().
+
+Thanks go to Kent Johnson <kent@pondview.mv.com> for finding a bug that caused
+incomplete decompositions to be generated by the "ucgendat" program.
+
+Thanks go to Valeriy E. Ushakov <uwe@ptc.spbu.ru> for spotting an allocation
+error and an initialization error.
diff --git a/intl/unicharutil/tools/data/case.dat b/intl/unicharutil/tools/data/case.dat
new file mode 100644
index 000000000..3bf7f2c93
--- /dev/null
+++ b/intl/unicharutil/tools/data/case.dat
Binary files differ
diff --git a/intl/unicharutil/tools/data/cmbcl.dat b/intl/unicharutil/tools/data/cmbcl.dat
new file mode 100644
index 000000000..9a7513d8f
--- /dev/null
+++ b/intl/unicharutil/tools/data/cmbcl.dat
Binary files differ
diff --git a/intl/unicharutil/tools/data/ctype.dat b/intl/unicharutil/tools/data/ctype.dat
new file mode 100644
index 000000000..95e2c405b
--- /dev/null
+++ b/intl/unicharutil/tools/data/ctype.dat
Binary files differ
diff --git a/intl/unicharutil/tools/data/decomp.dat b/intl/unicharutil/tools/data/decomp.dat
new file mode 100644
index 000000000..29e3948e3
--- /dev/null
+++ b/intl/unicharutil/tools/data/decomp.dat
Binary files differ
diff --git a/intl/unicharutil/tools/data/num.dat b/intl/unicharutil/tools/data/num.dat
new file mode 100644
index 000000000..52498ece0
--- /dev/null
+++ b/intl/unicharutil/tools/data/num.dat
Binary files differ
diff --git a/intl/unicharutil/tools/format.txt b/intl/unicharutil/tools/format.txt
new file mode 100644
index 000000000..ef4210be1
--- /dev/null
+++ b/intl/unicharutil/tools/format.txt
@@ -0,0 +1,243 @@
+#
+# $Id: format.txt,v 1.1 1999/01/08 00:19:20 ftang%netscape.com Exp $
+#
+
+CHARACTER DATA
+==============
+
+This package generates some data files that contain character properties useful
+for text processing.
+
+CHARACTER PROPERTIES
+====================
+
+The first data file is called "ctype.dat" and contains a compressed form of
+the character properties found in the Unicode Character Database (UCDB).
+Additional properties can be specified in limited UCDB format in another file
+to avoid modifying the original UCDB.
+
+The following is a property name and code table to be used with the character
+data:
+
+NAME CODE DESCRIPTION
+---------------------
+Mn 0 Mark, Non-Spacing
+Mc 1 Mark, Spacing Combining
+Me 2 Mark, Enclosing
+Nd 3 Number, Decimal Digit
+Nl 4 Number, Letter
+No 5 Number, Other
+Zs 6 Separator, Space
+Zl 7 Separator, Line
+Zp 8 Separator, Paragraph
+Cc 9 Other, Control
+Cf 10 Other, Format
+Cs 11 Other, Surrogate
+Co 12 Other, Private Use
+Cn 13 Other, Not Assigned
+Lu 14 Letter, Uppercase
+Ll 15 Letter, Lowercase
+Lt 16 Letter, Titlecase
+Lm 17 Letter, Modifier
+Lo 18 Letter, Other
+Pc 19 Punctuation, Connector
+Pd 20 Punctuation, Dash
+Ps 21 Punctuation, Open
+Pe 22 Punctuation, Close
+Po 23 Punctuation, Other
+Sm 24 Symbol, Math
+Sc 25 Symbol, Currency
+Sk 26 Symbol, Modifier
+So 27 Symbol, Other
+L 28 Left-To-Right
+R 29 Right-To-Left
+EN 30 European Number
+ES 31 European Number Separator
+ET 32 European Number Terminator
+AN 33 Arabic Number
+CS 34 Common Number Separator
+B 35 Block Separator
+S 36 Segment Separator
+WS 37 Whitespace
+ON 38 Other Neutrals
+Pi 47 Punctuation, Initial
+Pf 48 Punctuation, Final
+#
+# Implementation specific properties.
+#
+Cm 39 Composite
+Nb 40 Non-Breaking
+Sy 41 Symmetric (characters which are part of open/close pairs)
+Hd 42 Hex Digit
+Qm 43 Quote Mark
+Mr 44 Mirroring
+Ss 45 Space, Other (controls viewed as spaces in ctype isspace())
+Cp 46 Defined character
+
+The actual binary data is formatted as follows:
+
+ Assumptions: unsigned short is at least 16-bits in size and unsigned long
+ is at least 32-bits in size.
+
+ unsigned short ByteOrderMark
+ unsigned short OffsetArraySize
+ unsigned long Bytes
+ unsigned short Offsets[OffsetArraySize + 1]
+ unsigned long Ranges[N], N = value of Offsets[OffsetArraySize]
+
+ The Bytes field provides the total byte count used for the Offsets[] and
+ Ranges[] arrays. The Offsets[] array is aligned on a 4-byte boundary and
+ there is always one extra node on the end to hold the final index of the
+ Ranges[] array. The Ranges[] array contains pairs of 4-byte values
+ representing a range of Unicode characters. The pairs are arranged in
+ increasing order by the first character code in the range.
+
+ Determining if a particular character is in the property list requires a
+ simple binary search to determine if a character is in any of the ranges
+ for the property.
+
+ If the ByteOrderMark is equal to 0xFFFE, then the data was generated on a
+ machine with a different endian order and the values must be byte-swapped.
+
+ To swap a 16-bit value:
+ c = (c >> 8) | ((c & 0xff) << 8)
+
+ To swap a 32-bit value:
+ c = ((c & 0xff) << 24) | (((c >> 8) & 0xff) << 16) |
+ (((c >> 16) & 0xff) << 8) | (c >> 24)
+
+CASE MAPPINGS
+=============
+
+The next data file is called "case.dat" and contains three case mapping tables
+in the following order: upper, lower, and title case. Each table is in
+increasing order by character code and each mapping contains 3 unsigned longs
+which represent the possible mappings.
+
+The format for the binary form of these tables is:
+
+ unsigned short ByteOrderMark
+ unsigned short NumMappingNodes, count of all mapping nodes
+ unsigned short CaseTableSizes[2], upper and lower mapping node counts
+ unsigned long CaseTables[NumMappingNodes]
+
+ The starting indexes of the case tables are calculated as following:
+
+ UpperIndex = 0;
+ LowerIndex = CaseTableSizes[0] * 3;
+ TitleIndex = LowerIndex + CaseTableSizes[1] * 3;
+
+ The order of the fields for the three tables are:
+
+ Upper case
+ ----------
+ unsigned long upper;
+ unsigned long lower;
+ unsigned long title;
+
+ Lower case
+ ----------
+ unsigned long lower;
+ unsigned long upper;
+ unsigned long title;
+
+ Title case
+ ----------
+ unsigned long title;
+ unsigned long upper;
+ unsigned long lower;
+
+ If the ByteOrderMark is equal to 0xFFFE, endian swapping is required in the
+ same way as described in the CHARACTER PROPERTIES section.
+
+ Because the tables are in increasing order by character code, locating a
+ mapping requires a simple binary search on one of the 3 codes that make up
+ each node.
+
+ It is important to note that there can only be 65536 mapping nodes which
+ divided into 3 portions allows 21845 nodes for each case mapping table. The
+ distribution of mappings may be more or less than 21845 per table, but only
+ 65536 are allowed.
+
+DECOMPOSITIONS
+==============
+
+The next data file is called "decomp.dat" and contains the decomposition data
+for all characters with decompositions containing more than one character and
+are *not* compatibility decompositions. Compatibility decompositions are
+signaled in the UCDB format by the use of the <compat> tag in the
+decomposition field. Each list of character codes represents a full
+decomposition of a composite character. The nodes are arranged in increasing
+order by character code.
+
+The format for the binary form of this table is:
+
+ unsigned short ByteOrderMark
+ unsigned short NumDecompNodes, count of all decomposition nodes
+ unsigned long Bytes
+ unsigned long DecompNodes[(NumDecompNodes * 2) + 1]
+ unsigned long Decomp[N], N = sum of all counts in DecompNodes[]
+
+ If the ByteOrderMark is equal to 0xFFFE, endian swapping is required in the
+ same way as described in the CHARACTER PROPERTIES section.
+
+ The DecompNodes[] array consists of pairs of unsigned longs, the first of
+ which is the character code and the second is the initial index of the list
+ of character codes representing the decomposition.
+
+ Locating the decomposition of a composite character requires a binary search
+ for a character code in the DecompNodes[] array and using its index to
+ locate the start of the decomposition. The length of the decomposition list
+ is the index in the following element in DecompNode[] minus the current
+ index.
+
+COMBINING CLASSES
+=================
+
+The fourth data file is called "cmbcl.dat" and contains the characters with
+non-zero combining classes.
+
+The format for the binary form of this table is:
+
+ unsigned short ByteOrderMark
+ unsigned short NumCCLNodes
+ unsigned long Bytes
+ unsigned long CCLNodes[NumCCLNodes * 3]
+
+ If the ByteOrderMark is equal to 0xFFFE, endian swapping is required in the
+ same way as described in the CHARACTER PROPERTIES section.
+
+ The CCLNodes[] array consists of groups of three unsigned longs. The first
+ and second are the beginning and ending of a range and the third is the
+ combining class of that range.
+
+ If a character is not found in this table, then the combining class is
+ assumed to be 0.
+
+ It is important to note that only 65536 distinct ranges plus combining class
+ can be specified because the NumCCLNodes is usually a 16-bit number.
+
+NUMBER TABLE
+============
+
+The final data file is called "num.dat" and contains the characters that have
+a numeric value associated with them.
+
+The format for the binary form of the table is:
+
+ unsigned short ByteOrderMark
+ unsigned short NumNumberNodes
+ unsigned long Bytes
+ unsigned long NumberNodes[NumNumberNodes]
+ unsigned short ValueNodes[(Bytes - (NumNumberNodes * sizeof(unsigned long)))
+ / sizeof(short)]
+
+ If the ByteOrderMark is equal to 0xFFFE, endian swapping is required in the
+ same way as described in the CHARACTER PROPERTIES section.
+
+ The NumberNodes array contains pairs of values, the first of which is the
+ character code and the second an index into the ValueNodes array. The
+ ValueNodes array contains pairs of integers which represent the numerator
+ and denominator of the numeric value of the character. If the character
+ happens to map to an integer, both the values in ValueNodes will be the
+ same.
diff --git a/intl/unicharutil/tools/genSpecialCasingData.pl b/intl/unicharutil/tools/genSpecialCasingData.pl
new file mode 100755
index 000000000..39b2d478e
--- /dev/null
+++ b/intl/unicharutil/tools/genSpecialCasingData.pl
@@ -0,0 +1,287 @@
+#!/usr/bin/env perl
+
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this file,
+# You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# This tool is used to extract "special" (one-to-many) case mappings
+# into a form that can be used by nsTextRunTransformations.
+
+use strict;
+
+if ($#ARGV != 1) {
+ print <<__EOT;
+# Run this tool using a command line of the form
+#
+# perl genSpecialCasingData.pl UnicodeData.txt SpecialCasing.txt
+#
+# The nsSpecialCasingData.cpp file will be written to standard output.
+#
+# This tool will also write up-to-date versions of the test files
+# all-{upper,lower,title}.html
+# and corresponding -ref files in the current directory.
+#
+__EOT
+ exit 0;
+}
+
+my %allLower;
+my %allUpper;
+my %allTitle;
+my %compositions;
+my %gc;
+open FH, "< $ARGV[0]" or die "can't open $ARGV[0] (should be UnicodeData.txt)\n";
+while (<FH>) {
+ chomp;
+ my @fields = split /;/;
+ next if ($fields[1] =~ /</); # ignore ranges etc
+ my $usv = hex "0x$fields[0]";
+ $allUpper{$usv} = $fields[12] if $fields[12] ne '';
+ $allLower{$usv} = $fields[13] if $fields[13] ne '';
+ $allTitle{$usv} = $fields[14] if $fields[14] ne '';
+ $gc{$usv} = $fields[2];
+ # we only care about non-singleton canonical decomps
+ my $decomp = $fields[5];
+ next if $decomp eq '' or $decomp =~ /</ or not $decomp =~ / /;
+ $compositions{$decomp} = sprintf("%04X", $usv);
+}
+close FH;
+
+my %specialLower;
+my %specialUpper;
+my %specialTitle;
+my %charName;
+my @headerLines;
+open FH, "< $ARGV[1]" or die "can't open $ARGV[1] (should be SpecialCasing.txt)\n";
+while (<FH>) {
+ chomp;
+ m/#\s*(.+)$/;
+ my $comment = $1;
+ if ($comment =~ /^(SpecialCasing-|Date:)/) {
+ push @headerLines, $comment;
+ next;
+ }
+ s/#.*//;
+ s/;\s*$//;
+ next if $_ eq '';
+ my @fields = split /; */;
+ next unless (scalar @fields) == 4;
+ my $usv = hex "0x$fields[0]";
+ addIfSpecial(\%specialLower, $usv, $fields[1]);
+ addIfSpecial(\%specialTitle, $usv, $fields[2]);
+ addIfSpecial(\%specialUpper, $usv, $fields[3]);
+ $charName{$usv} = $comment;
+}
+close FH;
+
+print <<__END__;
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* Auto-generated from files in the Unicode Character Database
+ by genSpecialCasingData.pl - do not edit! */
+
+#include "nsSpecialCasingData.h"
+#include "mozilla/ArrayUtils.h" // for ArrayLength
+#include <stdlib.h> // for bsearch
+
+__END__
+map { print "/* $_ */\n" } @headerLines;
+
+print <<__END__;
+
+using mozilla::unicode::MultiCharMapping;
+
+__END__
+
+printMappings('Lower', \%specialLower);
+printMappings('Upper', \%specialUpper);
+printMappings('Title', \%specialTitle);
+
+print <<__END__;
+static int CompareMCM(const void* aKey, const void* aElement)
+{
+ const uint32_t ch = *static_cast<const uint32_t*>(aKey);
+ const MultiCharMapping* mcm = static_cast<const MultiCharMapping*>(aElement);
+ return int(ch) - int(mcm->mOriginalChar);
+}
+
+#define MAKE_SPECIAL_CASE_ACCESSOR(which) \\
+ const MultiCharMapping* \\
+ Special##which(uint32_t aChar) \\
+ { \\
+ const void* p = bsearch(&aChar, CaseSpecials_##which, \\
+ mozilla::ArrayLength(CaseSpecials_##which), \\
+ sizeof(MultiCharMapping), CompareMCM); \\
+ return static_cast<const MultiCharMapping*>(p); \\
+ }
+
+namespace mozilla {
+namespace unicode {
+
+MAKE_SPECIAL_CASE_ACCESSOR(Lower)
+MAKE_SPECIAL_CASE_ACCESSOR(Upper)
+MAKE_SPECIAL_CASE_ACCESSOR(Title)
+
+} // namespace unicode
+} // namespace mozilla
+__END__
+
+addSpecialsTo(\%allLower, \%specialLower);
+addSpecialsTo(\%allUpper, \%specialUpper);
+addSpecialsTo(\%allTitle, \%specialTitle);
+
+my $testFont = "../fonts/dejavu-sans/DejaVuSans.ttf";
+genTest('lower', \%allLower);
+genTest('upper', \%allUpper);
+genTitleTest();
+
+sub printMappings {
+ my ($whichMapping, $hash) = @_;
+ print "static const MultiCharMapping CaseSpecials_${whichMapping}[] = {\n";
+ foreach my $key (sort { $a <=> $b } keys %$hash) {
+ my @chars = split(/ /, $hash->{$key});
+ printf " { 0x%04x, {0x%04x, 0x%04x, 0x%04x} }, // %s\n", $key,
+ hex "0x0$chars[0]", hex "0x0$chars[1]", hex "0x0$chars[2]",
+ "$charName{$key}";
+ }
+ print "};\n\n";
+};
+
+sub addIfSpecial {
+ my ($hash, $usv, $mapping) = @_;
+ return unless $mapping =~ / /;
+ # only do compositions that start with the initial char
+ foreach (keys %compositions) {
+ $mapping =~ s/^$_/$compositions{$_}/;
+ }
+ $hash->{$usv} = $mapping;
+};
+
+sub addSpecialsTo {
+ my ($hash, $specials) = @_;
+ foreach my $key (keys %$specials) {
+ $hash->{$key} = $specials->{$key};
+ }
+};
+
+sub genTest {
+ my ($whichMapping, $hash) = @_;
+ open OUT, "> all-$whichMapping.html";
+ print OUT <<__END__;
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <style type="text/css">
+ \@font-face { font-family: foo; src: url($testFont); }
+ p { font-family: foo; text-transform: ${whichMapping}case; }
+ </style>
+ </head>
+ <body>
+ <p>
+__END__
+ foreach my $key (sort { $a <=> $b } keys %$hash) {
+ printf OUT "&#x%04X;", $key;
+ print OUT " <!-- $charName{$key} -->" if exists $charName{$key};
+ print OUT "\n";
+ }
+ print OUT <<__END__;
+ </p>
+ </body>
+</html>
+__END__
+ close OUT;
+
+ open OUT, "> all-$whichMapping-ref.html";
+ print OUT <<__END__;
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <style type="text/css">
+ \@font-face { font-family: foo; src: url($testFont); }
+ p { font-family: foo; }
+ </style>
+ </head>
+ <body>
+ <p>
+__END__
+ foreach my $key (sort { $a <=> $b } keys %$hash) {
+ print OUT join('', map { sprintf("&#x%s;", $_) } split(/ /, $hash->{$key}));
+ print OUT " <!-- $charName{$key} -->" if exists $charName{$key};
+ print OUT "\n";
+ }
+ print OUT <<__END__;
+ </p>
+ </body>
+</html>
+__END__
+ close OUT;
+};
+
+sub genTitleTest {
+ open OUT, "> all-title.html";
+ print OUT <<__END__;
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <style type="text/css">
+ \@font-face { font-family: foo; src: url($testFont); }
+ p { font-family: foo; text-transform: capitalize; }
+ </style>
+ </head>
+ <body>
+ <p>
+__END__
+ foreach my $key (sort { $a <=> $b } keys %allTitle) {
+ printf OUT "&#x%04X;x", $key;
+ print OUT " <!-- $charName{$key} -->" if exists $charName{$key};
+ print OUT "\n";
+ }
+ print OUT <<__END__;
+ </p>
+ </body>
+</html>
+__END__
+ close OUT;
+
+ open OUT, "> all-title-ref.html";
+ print OUT <<__END__;
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <style type="text/css">
+ \@font-face { font-family: foo; src: url($testFont); }
+ p { font-family: foo; }
+ </style>
+ </head>
+ <body>
+ <p>
+__END__
+ foreach my $key (sort { $a <=> $b } keys %allTitle) {
+ # capitalize is only applied to characters with GC=L* or N*...
+ if ($gc{$key} =~ /^[LN]/) {
+ # ...and those that are already uppercase are not transformed
+ if (exists $allUpper{$key}) {
+ print OUT join('', map { sprintf("&#x%s;", $_) } split(/ /, $allTitle{$key}));
+ } else {
+ printf OUT "&#x%04X;", $key;
+ }
+ print OUT "x";
+ } else {
+ printf OUT "&#x%04X;X", $key;
+ }
+ print OUT " <!-- $charName{$key} -->" if exists $charName{$key};
+ print OUT "\n";
+ }
+ print OUT <<__END__;
+ </p>
+ </body>
+</html>
+__END__
+ close OUT;
+};
diff --git a/intl/unicharutil/tools/genUnicodePropertyData.pl b/intl/unicharutil/tools/genUnicodePropertyData.pl
new file mode 100755
index 000000000..8b247e83c
--- /dev/null
+++ b/intl/unicharutil/tools/genUnicodePropertyData.pl
@@ -0,0 +1,943 @@
+#!/usr/bin/env perl
+
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# This tool is used to prepare lookup tables of Unicode character properties
+# needed by gfx code to support text shaping operations. The properties are
+# read from the Unicode Character Database and compiled into multi-level arrays
+# for efficient lookup.
+#
+# To regenerate the tables in nsUnicodePropertyData.cpp:
+#
+# (1) Download the current Unicode data files from
+#
+# http://www.unicode.org/Public/UNIDATA/
+#
+# NB: not all the files are actually needed; currently, we require
+# - UnicodeData.txt
+# - Scripts.txt
+# - BidiMirroring.txt
+# - BidiBrackets.txt
+# - HangulSyllableType.txt
+# - LineBreak.txt
+# - EastAsianWidth.txt
+# - ReadMe.txt (to record version/date of the UCD)
+# - Unihan_Variants.txt (from Unihan.zip)
+# though this may change if we find a need for additional properties.
+#
+# The Unicode data files listed above should be together in one directory.
+#
+# We also require the file
+# http://www.unicode.org/Public/security/latest/xidmodifications.txt
+# This file should be in a sub-directory "security" immediately below the
+# directory containing the other Unicode data files.
+#
+# We also require the latest data file for UTR50, currently revision-13:
+# http://www.unicode.org/Public/vertical/revision-13/VerticalOrientation-13.txt
+# This file should be in a sub-directory "vertical" immediately below the
+# directory containing the other Unicode data files.
+#
+#
+# (2) Run this tool using a command line of the form
+#
+# perl genUnicodePropertyData.pl \
+# /path/to/harfbuzz/src \
+# /path/to/icu/common/unicode \
+# /path/to/UCD-directory
+#
+# This will generate (or overwrite!) the files
+#
+# nsUnicodePropertyData.cpp
+# nsUnicodeScriptCodes.h
+#
+# in the current directory.
+
+use strict;
+use List::Util qw(first);
+
+if ($#ARGV != 2) {
+ print <<__EOT;
+# Run this tool using a command line of the form
+#
+# perl genUnicodePropertyData.pl \\
+# /path/to/harfbuzz/src \\
+# /path/to/icu/common/unicode \\
+# /path/to/UCD-directory
+#
+# where harfbuzz/src is the directory containing harfbuzz .cc and .hh files,
+# icu/common/unicode is the directory containing ICU 'common' public headers,
+# and UCD-directory is a directory containing the current Unicode Character
+# Database files (UnicodeData.txt, etc), available from
+# http://www.unicode.org/Public/UNIDATA/, with additional resources as
+# detailed in the source comments.
+#
+# This will generate (or overwrite!) the files
+#
+# nsUnicodePropertyData.cpp
+# nsUnicodeScriptCodes.h
+#
+# in the current directory.
+__EOT
+ exit 0;
+}
+
+my $HARFBUZZ = $ARGV[0];
+my $ICU = $ARGV[1];
+my $UNICODE = $ARGV[2];
+
+# load HB_Category constants
+
+my $cc = -1;
+my %catCode;
+
+sub readHarfBuzzHeader
+{
+ my $file = shift;
+ open FH, "< $HARFBUZZ/$file" or die "can't open harfbuzz header $HARFBUZZ/$file\n";
+ while (<FH>) {
+ if (m/HB_UNICODE_GENERAL_CATEGORY_([A-Z_]+)/) {
+ $cc++;
+ $catCode{$1} = $cc;
+ }
+ }
+ close FH;
+}
+
+&readHarfBuzzHeader("hb-unicode.h");
+
+die "didn't find HarfBuzz category codes\n" if $cc == -1;
+
+my %scriptCode;
+my @scriptCodeToTag;
+my @scriptCodeToName;
+
+my $sc = -1;
+
+sub readIcuHeader
+{
+ my $file = shift;
+ open FH, "< $ICU/$file" or die "can't open ICU header $ICU/$file\n";
+ while (<FH>) {
+ # adjust for ICU vs UCD naming discrepancies
+ s/LANNA/TAI_THAM/;
+ s/MEITEI_MAYEK/MEETEI_MAYEK/;
+ s/ORKHON/OLD_TURKIC/;
+ s/MENDE/MENDE_KIKAKUI/;
+ s/SIGN_WRITING/SIGNWRITING/;
+ if (m|USCRIPT_([A-Z_]+)\s*=\s*([0-9]+),\s*/\*\s*([A-Z][a-z]{3})\s*\*/|) {
+ $sc = $2;
+ $scriptCode{$1} = $sc;
+ $scriptCodeToTag[$sc] = $3;
+ $scriptCodeToName[$sc] = $1;
+ }
+ }
+ close FH;
+}
+
+&readIcuHeader("uscript.h");
+
+die "didn't find ICU script codes\n" if $sc == -1;
+
+my %xidmodCode = (
+'Recommended' => 0,
+'Inclusion' => 1,
+'Uncommon_Use' => 2,
+'Technical' => 3,
+'Obsolete' => 4,
+'Aspirational' => 5,
+'Limited_Use' => 6,
+'Exclusion' => 7,
+'Not_XID' => 8,
+'Not_NFKC' => 9,
+'Default_Ignorable' => 10,
+'Deprecated' => 11,
+'not-chars' => 12
+);
+
+my %bidicategoryCode = (
+ "L" => 0, # Left-to-Right
+ "R" => 1, # Right-to-Left
+ "EN" => 2, # European Number
+ "ES" => 3, # European Number Separator
+ "ET" => 4, # European Number Terminator
+ "AN" => 5, # Arabic Number
+ "CS" => 6, # Common Number Separator
+ "B" => 7, # Paragraph Separator
+ "S" => 8, # Segment Separator
+ "WS" => 9, # Whitespace
+ "ON" => 10, # Other Neutrals
+ "LRE" => 11, # Left-to-Right Embedding
+ "LRO" => 12, # Left-to-Right Override
+ "AL" => 13, # Right-to-Left Arabic
+ "RLE" => 14, # Right-to-Left Embedding
+ "RLO" => 15, # Right-to-Left Override
+ "PDF" => 16, # Pop Directional Format
+ "NSM" => 17, # Non-Spacing Mark
+ "BN" => 18, # Boundary Neutral
+ "FSI" => 19, # First Strong Isolate
+ "LRI" => 20, # Left-to-Right Isolate
+ "RLI" => 21, # Right-to-left Isolate
+ "PDI" => 22 # Pop Direcitonal Isolate
+);
+
+my %verticalOrientationCode = (
+ 'U' => 0, # U - Upright, the same orientation as in the code charts
+ 'R' => 1, # R - Rotated 90 degrees clockwise compared to the code charts
+ 'Tu' => 2, # Tu - Transformed typographically, with fallback to Upright
+ 'Tr' => 3 # Tr - Transformed typographically, with fallback to Rotated
+);
+
+my %lineBreakCode = ( # ordering matches ICU's ULineBreak enum
+ "XX" => 0,
+ "AI" => 1,
+ "AL" => 2,
+ "B2" => 3,
+ "BA" => 4,
+ "BB" => 5,
+ "BK" => 6,
+ "CB" => 7,
+ "CL" => 8,
+ "CM" => 9,
+ "CR" => 10,
+ "EX" => 11,
+ "GL" => 12,
+ "HY" => 13,
+ "ID" => 14,
+ "IN" => 15,
+ "IS" => 16,
+ "LF" => 17,
+ "NS" => 18,
+ "NU" => 19,
+ "OP" => 20,
+ "PO" => 21,
+ "PR" => 22,
+ "QU" => 23,
+ "SA" => 24,
+ "SG" => 25,
+ "SP" => 26,
+ "SY" => 27,
+ "ZW" => 28,
+ "NL" => 29,
+ "WJ" => 30,
+ "H2" => 31,
+ "H3" => 32,
+ "JL" => 33,
+ "JT" => 34,
+ "JV" => 35,
+ "CP" => 36,
+ "CJ" => 37,
+ "HL" => 38,
+ "RI" => 39
+);
+
+my %eastAsianWidthCode = (
+ "N" => 0,
+ "A" => 1,
+ "H" => 2,
+ "W" => 3,
+ "F" => 4,
+ "Na" => 5
+);
+
+# initialize default properties
+my @script;
+my @category;
+my @combining;
+my @mirror;
+my @pairedBracketType;
+my @hangul;
+my @casemap;
+my @xidmod;
+my @numericvalue;
+my @hanVariant;
+my @bidicategory;
+my @fullWidth;
+my @fullWidthInverse;
+my @verticalOrientation;
+my @lineBreak;
+my @eastAsianWidthFWH;
+for (my $i = 0; $i < 0x110000; ++$i) {
+ $script[$i] = $scriptCode{"UNKNOWN"};
+ $category[$i] = $catCode{"UNASSIGNED"};
+ $combining[$i] = 0;
+ $pairedBracketType[$i] = 0;
+ $casemap[$i] = 0;
+ $xidmod[$i] = $xidmodCode{"not-chars"};
+ $numericvalue[$i] = -1;
+ $hanVariant[$i] = 0;
+ $bidicategory[$i] = $bidicategoryCode{"L"};
+ $fullWidth[$i] = 0;
+ $fullWidthInverse[$i] = 0;
+ $verticalOrientation[$i] = 1; # default for unlisted codepoints is 'R'
+ $lineBreak[$i] = $lineBreakCode{"XX"};
+ $eastAsianWidthFWH[$i] = 0;
+}
+
+# blocks where the default for bidi category is not L
+for my $i (0x0600..0x07BF, 0x08A0..0x08FF, 0xFB50..0xFDCF, 0xFDF0..0xFDFF, 0xFE70..0xFEFF, 0x1EE00..0x0001EEFF) {
+ $bidicategory[$i] = $bidicategoryCode{"AL"};
+}
+for my $i (0x0590..0x05FF, 0x07C0..0x089F, 0xFB1D..0xFB4F, 0x00010800..0x00010FFF, 0x0001E800..0x0001EDFF, 0x0001EF00..0x0001EFFF) {
+ $bidicategory[$i] = $bidicategoryCode{"R"};
+}
+for my $i (0x20A0..0x20CF) {
+ $bidicategory[$i] = $bidicategoryCode{"ET"};
+}
+
+my %ucd2hb = (
+'Cc' => 'CONTROL',
+'Cf' => 'FORMAT',
+'Cn' => 'UNASSIGNED',
+'Co' => 'PRIVATE_USE',
+'Cs' => 'SURROGATE',
+'Ll' => 'LOWERCASE_LETTER',
+'Lm' => 'MODIFIER_LETTER',
+'Lo' => 'OTHER_LETTER',
+'Lt' => 'TITLECASE_LETTER',
+'Lu' => 'UPPERCASE_LETTER',
+'Mc' => 'SPACING_MARK',
+'Me' => 'ENCLOSING_MARK',
+'Mn' => 'NON_SPACING_MARK',
+'Nd' => 'DECIMAL_NUMBER',
+'Nl' => 'LETTER_NUMBER',
+'No' => 'OTHER_NUMBER',
+'Pc' => 'CONNECT_PUNCTUATION',
+'Pd' => 'DASH_PUNCTUATION',
+'Pe' => 'CLOSE_PUNCTUATION',
+'Pf' => 'FINAL_PUNCTUATION',
+'Pi' => 'INITIAL_PUNCTUATION',
+'Po' => 'OTHER_PUNCTUATION',
+'Ps' => 'OPEN_PUNCTUATION',
+'Sc' => 'CURRENCY_SYMBOL',
+'Sk' => 'MODIFIER_SYMBOL',
+'Sm' => 'MATH_SYMBOL',
+'So' => 'OTHER_SYMBOL',
+'Zl' => 'LINE_SEPARATOR',
+'Zp' => 'PARAGRAPH_SEPARATOR',
+'Zs' => 'SPACE_SEPARATOR'
+);
+
+# read ReadMe.txt
+my @versionInfo;
+open FH, "< $UNICODE/ReadMe.txt" or die "can't open Unicode ReadMe.txt file\n";
+while (<FH>) {
+ chomp;
+ push @versionInfo, $_;
+}
+close FH;
+
+my $kTitleToUpper = 0x80000000;
+my $kUpperToLower = 0x40000000;
+my $kLowerToTitle = 0x20000000;
+my $kLowerToUpper = 0x10000000;
+my $kCaseMapCharMask = 0x001fffff;
+
+# read UnicodeData.txt
+open FH, "< $UNICODE/UnicodeData.txt" or die "can't open UCD file UnicodeData.txt\n";
+while (<FH>) {
+ chomp;
+ my @fields = split /;/;
+ if ($fields[1] =~ /First/) {
+ my $first = hex "0x$fields[0]";
+ $_ = <FH>;
+ @fields = split /;/;
+ if ($fields[1] =~ /Last/) {
+ my $last = hex "0x$fields[0]";
+ do {
+ $category[$first] = $catCode{$ucd2hb{$fields[2]}};
+ $combining[$first] = $fields[3];
+ $bidicategory[$first] = $bidicategoryCode{$fields[4]};
+ unless (length($fields[7]) == 0) {
+ $numericvalue[$first] = $fields[7];
+ }
+ if ($fields[1] =~ /CJK/) {
+ @hanVariant[$first] = 3;
+ }
+ $first++;
+ } while ($first <= $last);
+ } else {
+ die "didn't find Last code for range!\n";
+ }
+ } else {
+ my $usv = hex "0x$fields[0]";
+ $category[$usv] = $catCode{$ucd2hb{$fields[2]}};
+ $combining[$usv] = $fields[3];
+ my $upper = hex $fields[12];
+ my $lower = hex $fields[13];
+ my $title = hex $fields[14];
+ # we only store one mapping for each character,
+ # but also record what kind of mapping it is
+ if ($upper && $lower) {
+ $casemap[$usv] |= $kTitleToUpper;
+ $casemap[$usv] |= ($usv ^ $upper);
+ }
+ elsif ($lower) {
+ $casemap[$usv] |= $kUpperToLower;
+ $casemap[$usv] |= ($usv ^ $lower);
+ }
+ elsif ($title && ($title != $upper)) {
+ $casemap[$usv] |= $kLowerToTitle;
+ $casemap[$usv] |= ($usv ^ $title);
+ }
+ elsif ($upper) {
+ $casemap[$usv] |= $kLowerToUpper;
+ $casemap[$usv] |= ($usv ^ $upper);
+ }
+ $bidicategory[$usv] = $bidicategoryCode{$fields[4]};
+ unless (length($fields[7]) == 0) {
+ $numericvalue[$usv] = $fields[7];
+ }
+ if ($fields[1] =~ /CJK/) {
+ @hanVariant[$usv] = 3;
+ }
+ if ($fields[5] =~ /^<narrow>/) {
+ my $wideChar = hex(substr($fields[5], 9));
+ die "didn't expect supplementary-plane values here" if $usv > 0xffff || $wideChar > 0xffff;
+ $fullWidth[$usv] = $wideChar;
+ $fullWidthInverse[$wideChar] = $usv;
+ }
+ elsif ($fields[5] =~ /^<wide>/) {
+ my $narrowChar = hex(substr($fields[5], 7));
+ die "didn't expect supplementary-plane values here" if $usv > 0xffff || $narrowChar > 0xffff;
+ $fullWidth[$narrowChar] = $usv;
+ $fullWidthInverse[$usv] = $narrowChar;
+ }
+ }
+}
+close FH;
+
+# read Scripts.txt
+open FH, "< $UNICODE/Scripts.txt" or die "can't open UCD file Scripts.txt\n";
+push @versionInfo, "";
+while (<FH>) {
+ chomp;
+ push @versionInfo, $_;
+ last if /Date:/;
+}
+while (<FH>) {
+ if (m/([0-9A-F]{4,6})(?:\.\.([0-9A-F]{4,6}))*\s+;\s+([^ ]+)/) {
+ my $script = uc($3);
+ warn "unknown ICU script $script" unless exists $scriptCode{$script};
+ my $script = $scriptCode{$script};
+ my $start = hex "0x$1";
+ my $end = (defined $2) ? hex "0x$2" : $start;
+ for (my $i = $start; $i <= $end; ++$i) {
+ $script[$i] = $script;
+ }
+ }
+}
+close FH;
+
+# read BidiMirroring.txt
+my @offsets = ();
+push @offsets, 0;
+
+open FH, "< $UNICODE/BidiMirroring.txt" or die "can't open UCD file BidiMirroring.txt\n";
+push @versionInfo, "";
+while (<FH>) {
+ chomp;
+ push @versionInfo, $_;
+ last if /Date:/;
+}
+while (<FH>) {
+ s/#.*//;
+ if (m/([0-9A-F]{4,6});\s*([0-9A-F]{4,6})/) {
+ my $mirrorOffset = hex("0x$2") - hex("0x$1");
+ my $offsetIndex = first { $offsets[$_] eq $mirrorOffset } 0..$#offsets;
+ if ($offsetIndex == undef) {
+ die "too many offset codes\n" if scalar @offsets == 31;
+ push @offsets, $mirrorOffset;
+ $offsetIndex = $#offsets;
+ }
+ $mirror[hex "0x$1"] = $offsetIndex;
+ }
+}
+close FH;
+
+# read BidiBrackets.txt
+my %pairedBracketTypeCode = (
+ 'N' => 0,
+ 'O' => 1,
+ 'C' => 2
+);
+open FH, "< $UNICODE/BidiBrackets.txt" or die "can't open UCD file BidiBrackets.txt\n";
+push @versionInfo, "";
+while (<FH>) {
+ chomp;
+ push @versionInfo, $_;
+ last if /Date:/;
+}
+while (<FH>) {
+ s/#.*//;
+ if (m/([0-9A-F]{4,6});\s*([0-9A-F]{4,6});\s*(.)/) {
+ my $mirroredChar = $offsets[$mirror[hex "0x$1"]] + hex "0x$1";
+ die "bidi bracket does not match mirrored char\n" unless $mirroredChar == hex "0x$2";
+ my $pbt = uc($3);
+ warn "unknown Bidi Bracket type" unless exists $pairedBracketTypeCode{$pbt};
+ $pairedBracketType[hex "0x$1"] = $pairedBracketTypeCode{$pbt};
+ }
+}
+close FH;
+
+# read HangulSyllableType.txt
+my %hangulType = (
+ 'L' => 0x01,
+ 'V' => 0x02,
+ 'T' => 0x04,
+ 'LV' => 0x03,
+ 'LVT' => 0x07
+);
+open FH, "< $UNICODE/HangulSyllableType.txt" or die "can't open UCD file HangulSyllableType.txt\n";
+push @versionInfo, "";
+while (<FH>) {
+ chomp;
+ push @versionInfo, $_;
+ last if /Date:/;
+}
+while (<FH>) {
+ s/#.*//;
+ if (m/([0-9A-F]{4,6})(?:\.\.([0-9A-F]{4,6}))*\s*;\s*([^ ]+)/) {
+ my $hangul = uc($3);
+ warn "unknown Hangul syllable type" unless exists $hangulType{$hangul};
+ $hangul = $hangulType{$hangul};
+ my $start = hex "0x$1";
+ my $end = (defined $2) ? hex "0x$2" : $start;
+ for (my $i = $start; $i <= $end; ++$i) {
+ $hangul[$i] = $hangul;
+ }
+ }
+}
+close FH;
+
+# read LineBreak.txt
+open FH, "< $UNICODE/LineBreak.txt" or die "can't open UCD file LineBreak.txt\n";
+push @versionInfo, "";
+while (<FH>) {
+ chomp;
+ push @versionInfo, $_;
+ last if /Date:/;
+}
+while (<FH>) {
+ s/#.*//;
+ if (m/([0-9A-F]{4,6})(?:\.\.([0-9A-F]{4,6}))*\s*;\s*([^ ]+)/) {
+ my $lb = uc($3);
+ warn "unknown LineBreak class" unless exists $lineBreakCode{$lb};
+ $lb = $lineBreakCode{$lb};
+ my $start = hex "0x$1";
+ my $end = (defined $2) ? hex "0x$2" : $start;
+ for (my $i = $start; $i <= $end; ++$i) {
+ $lineBreak[$i] = $lb;
+ }
+ }
+}
+close FH;
+
+# read EastAsianWidth.txt
+open FH, "< $UNICODE/EastAsianWidth.txt" or die "can't open UCD file EastAsianWidth.txt\n";
+push @versionInfo, "";
+while (<FH>) {
+ chomp;
+ push @versionInfo, $_;
+ last if /Date:/;
+}
+while (<FH>) {
+ s/#.*//;
+ if (m/([0-9A-F]{4,6})(?:\.\.([0-9A-F]{4,6}))*\s*;\s*([^ ]+)/) {
+ my $start = hex "0x$1";
+ my $end = (defined $2) ? hex "0x$2" : $start;
+ my $eaw = $3;
+ warn "unknown EastAsianWidth class" unless exists $eastAsianWidthCode{$eaw};
+ my $isFWH = ($eaw =~ m/^[FWH]$/) ? 1 : 0;
+ for (my $i = $start; $i <= $end; ++$i) {
+ $eastAsianWidthFWH[$i] = $isFWH;
+ }
+ }
+}
+close FH;
+
+# read xidmodifications.txt
+open FH, "< $UNICODE/security/xidmodifications.txt" or die "can't open UCD file xidmodifications.txt\n";
+push @versionInfo, "";
+while (<FH>) {
+ chomp;
+ unless (/\xef\xbb\xbf/) {
+ push @versionInfo, $_;
+ }
+ last if /Generated:/;
+}
+while (<FH>) {
+ if (m/([0-9A-F]{4,6})(?:\.\.([0-9A-F]{4,6}))*\s+;\s+[^ ]+\s+;\s+([^ ]+)/) {
+ my $xidmod = $3;
+ warn "unknown Identifier Modification $xidmod" unless exists $xidmodCode{$xidmod};
+ $xidmod = $xidmodCode{$xidmod};
+ my $start = hex "0x$1";
+ my $end = (defined $2) ? hex "0x$2" : $start;
+ for (my $i = $start; $i <= $end; ++$i) {
+ $xidmod[$i] = $xidmod;
+ }
+ }
+}
+close FH;
+
+open FH, "< $UNICODE/Unihan_Variants.txt" or die "can't open UCD file Unihan_Variants.txt (from Unihan.zip)\n";
+push @versionInfo, "";
+while (<FH>) {
+ chomp;
+ push @versionInfo, $_;
+ last if /Date:/;
+}
+my $savedusv = 0;
+my $hasTC = 0;
+my $hasSC = 0;
+while (<FH>) {
+ chomp;
+ if (m/U\+([0-9A-F]{4,6})\s+k([^ ]+)Variant/) {
+ my $usv = hex "0x$1";
+ if ($usv != $savedusv) {
+ unless ($savedusv == 0) {
+ if ($hasTC && !$hasSC) {
+ $hanVariant[$savedusv] = 1;
+ } elsif (!$hasTC && $hasSC) {
+ $hanVariant[$savedusv] = 2;
+ }
+ }
+ $savedusv = $usv;
+ $hasTC = 0;
+ $hasSC = 0;
+ }
+ if ($2 eq "Traditional") {
+ $hasTC = 1;
+ }
+ if ($2 eq "Simplified") {
+ $hasSC = 1;
+ }
+ }
+}
+close FH;
+
+# read VerticalOrientation-13.txt
+open FH, "< $UNICODE/vertical/VerticalOrientation-13.txt" or die "can't open UTR50 data file VerticalOrientation-13.txt\n";
+push @versionInfo, "";
+while (<FH>) {
+ chomp;
+ push @versionInfo, $_;
+ last if /Date:/;
+}
+while (<FH>) {
+ chomp;
+ s/#.*//;
+ if (m/([0-9A-F]{4,6})(?:\.\.([0-9A-F]{4,6}))*\s*;\s*([^ ]+)/) {
+ my $vo = $3;
+ warn "unknown Vertical_Orientation code $vo"
+ unless exists $verticalOrientationCode{$vo};
+ $vo = $verticalOrientationCode{$vo};
+ my $start = hex "0x$1";
+ my $end = (defined $2) ? hex "0x$2" : $start;
+ for (my $i = $start; $i <= $end; ++$i) {
+ $verticalOrientation[$i] = $vo;
+ }
+ }
+}
+close FH;
+
+my $timestamp = gmtime();
+
+open DATA_TABLES, "> nsUnicodePropertyData.cpp" or die "unable to open nsUnicodePropertyData.cpp for output";
+
+my $licenseBlock = q[
+/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/*
+ * Derived from the Unicode Character Database by genUnicodePropertyData.pl
+ *
+ * For Unicode terms of use, see http://www.unicode.org/terms_of_use.html
+ */
+];
+
+my $versionInfo = join("\n", @versionInfo);
+
+print DATA_TABLES <<__END;
+$licenseBlock
+/*
+ * Created on $timestamp from UCD data files with version info:
+ *
+
+$versionInfo
+
+ *
+ * * * * * This file contains MACHINE-GENERATED DATA, do not edit! * * * * *
+ */
+
+#include <stdint.h>
+#include "harfbuzz/hb.h"
+
+__END
+
+open HEADER, "> nsUnicodeScriptCodes.h" or die "unable to open nsUnicodeScriptCodes.h for output";
+
+print HEADER <<__END;
+$licenseBlock
+/*
+ * Created on $timestamp from UCD data files with version info:
+ *
+
+$versionInfo
+
+ *
+ * * * * * This file contains MACHINE-GENERATED DATA, do not edit! * * * * *
+ */
+
+#ifndef NS_UNICODE_SCRIPT_CODES
+#define NS_UNICODE_SCRIPT_CODES
+
+__END
+
+print DATA_TABLES "#if !ENABLE_INTL_API\n";
+print DATA_TABLES "static const uint32_t sScriptCodeToTag[] = {\n";
+for (my $i = 0; $i < scalar @scriptCodeToTag; ++$i) {
+ printf DATA_TABLES " HB_TAG('%c','%c','%c','%c')", unpack('cccc', $scriptCodeToTag[$i]);
+ print DATA_TABLES $i < $#scriptCodeToTag ? ",\n" : "\n";
+}
+print DATA_TABLES "};\n";
+print DATA_TABLES "#endif\n\n";
+
+our $totalData = 0;
+
+print DATA_TABLES "#if !ENABLE_INTL_API\n";
+print DATA_TABLES "static const int16_t sMirrorOffsets[] = {\n";
+for (my $i = 0; $i < scalar @offsets; ++$i) {
+ printf DATA_TABLES " $offsets[$i]";
+ print DATA_TABLES $i < $#offsets ? ",\n" : "\n";
+}
+print DATA_TABLES "};\n";
+print DATA_TABLES "#endif\n\n";
+
+print HEADER "#pragma pack(1)\n\n";
+
+sub sprintCharProps1
+{
+ my $usv = shift;
+ return sprintf("{%d,%d,%d}, ", $mirror[$usv], $hangul[$usv], $combining[$usv]);
+}
+my $type = q/
+struct nsCharProps1 {
+ unsigned char mMirrorOffsetIndex:5;
+ unsigned char mHangulType:3;
+ unsigned char mCombiningClass:8;
+};
+/;
+&genTables("#if !ENABLE_INTL_API", "#endif",
+ "CharProp1", $type, "nsCharProps1", 11, 5, \&sprintCharProps1, 1, 2, 1);
+
+sub sprintCharProps2_short
+{
+ my $usv = shift;
+ return sprintf("{%d,%d},",
+ $verticalOrientation[$usv], $xidmod[$usv]);
+}
+$type = q|
+struct nsCharProps2 {
+ // Currently only 6 bits are defined here, so 2 more could be added without
+ // affecting the storage requirements for this struct.
+ unsigned char mVertOrient:2;
+ unsigned char mXidmod:4;
+};
+|;
+&genTables("#if ENABLE_INTL_API", "#endif",
+ "CharProp2", $type, "nsCharProps2", 9, 7, \&sprintCharProps2_short, 16, 1, 1);
+
+sub sprintCharProps2_full
+{
+ my $usv = shift;
+ return sprintf("{%d,%d,%d,%d,%d,%d,%d,%d,%d},",
+ $script[$usv], $pairedBracketType[$usv],
+ $eastAsianWidthFWH[$usv], $category[$usv],
+ $bidicategory[$usv], $xidmod[$usv], $numericvalue[$usv],
+ $verticalOrientation[$usv], $lineBreak[$usv]);
+}
+$type = q|
+struct nsCharProps2 {
+ unsigned char mScriptCode:8;
+ unsigned char mPairedBracketType:2;
+ unsigned char mEastAsianWidthFWH:1;
+ unsigned char mCategory:5;
+ unsigned char mBidiCategory:5;
+ unsigned char mXidmod:4;
+ signed char mNumericValue:5;
+ unsigned char mVertOrient:2;
+ unsigned char mLineBreak; // only 6 bits actually needed
+};
+|;
+&genTables("#if !ENABLE_INTL_API", "#endif",
+ "CharProp2", $type, "nsCharProps2", 12, 4, \&sprintCharProps2_full, 16, 5, 1);
+
+print HEADER "#pragma pack()\n\n";
+
+sub sprintHanVariants
+{
+ my $baseUsv = shift;
+ my $varShift = 0;
+ my $val = 0;
+ while ($varShift < 8) {
+ $val |= $hanVariant[$baseUsv++] << $varShift;
+ $varShift += 2;
+ }
+ return sprintf("0x%02x,", $val);
+}
+## Han Variant data currently unused but may be needed in future, see bug 857481
+## &genTables("", "", "HanVariant", "", "uint8_t", 9, 7, \&sprintHanVariants, 2, 1, 4);
+
+sub sprintFullWidth
+{
+ my $usv = shift;
+ return sprintf("0x%04x,", $fullWidth[$usv]);
+}
+&genTables("", "", "FullWidth", "", "uint16_t", 10, 6, \&sprintFullWidth, 0, 2, 1);
+
+sub sprintFullWidthInverse
+{
+ my $usv = shift;
+ return sprintf("0x%04x,", $fullWidthInverse[$usv]);
+}
+&genTables("", "", "FullWidthInverse", "", "uint16_t", 10, 6, \&sprintFullWidthInverse, 0, 2, 1);
+
+sub sprintCasemap
+{
+ my $usv = shift;
+ return sprintf("0x%08x,", $casemap[$usv]);
+}
+&genTables("#if !ENABLE_INTL_API", "#endif",
+ "CaseMap", "", "uint32_t", 11, 5, \&sprintCasemap, 1, 4, 1);
+
+print STDERR "Total data = $totalData\n";
+
+printf DATA_TABLES "const uint32_t kTitleToUpper = 0x%08x;\n", $kTitleToUpper;
+printf DATA_TABLES "const uint32_t kUpperToLower = 0x%08x;\n", $kUpperToLower;
+printf DATA_TABLES "const uint32_t kLowerToTitle = 0x%08x;\n", $kLowerToTitle;
+printf DATA_TABLES "const uint32_t kLowerToUpper = 0x%08x;\n", $kLowerToUpper;
+printf DATA_TABLES "const uint32_t kCaseMapCharMask = 0x%08x;\n\n", $kCaseMapCharMask;
+
+sub genTables
+{
+ my ($guardBegin, $guardEnd,
+ $prefix, $typedef, $type, $indexBits, $charBits, $func, $maxPlane, $bytesPerEntry, $charsPerEntry) = @_;
+
+ if ($typedef ne '') {
+ print HEADER "$guardBegin\n";
+ print HEADER "$typedef\n";
+ print HEADER "$guardEnd\n\n";
+ }
+
+ print DATA_TABLES "\n$guardBegin\n";
+ print DATA_TABLES "#define k${prefix}MaxPlane $maxPlane\n";
+ print DATA_TABLES "#define k${prefix}IndexBits $indexBits\n";
+ print DATA_TABLES "#define k${prefix}CharBits $charBits\n";
+
+ my $indexLen = 1 << $indexBits;
+ my $charsPerPage = 1 << $charBits;
+ my %charIndex = ();
+ my %pageMapIndex = ();
+ my @pageMap = ();
+ my @char = ();
+
+ my $planeMap = "\x00" x $maxPlane;
+ foreach my $plane (0 .. $maxPlane) {
+ my $pageMap = "\x00" x $indexLen * 2;
+ foreach my $page (0 .. $indexLen - 1) {
+ my $charValues = "";
+ for (my $ch = 0; $ch < $charsPerPage; $ch += $charsPerEntry) {
+ my $usv = $plane * 0x10000 + $page * $charsPerPage + $ch;
+ $charValues .= &$func($usv);
+ }
+ chop $charValues;
+
+ unless (exists $charIndex{$charValues}) {
+ $charIndex{$charValues} = scalar keys %charIndex;
+ $char[$charIndex{$charValues}] = $charValues;
+ }
+ substr($pageMap, $page * 2, 2) = pack('S', $charIndex{$charValues});
+ }
+
+ unless (exists $pageMapIndex{$pageMap}) {
+ $pageMapIndex{$pageMap} = scalar keys %pageMapIndex;
+ $pageMap[$pageMapIndex{$pageMap}] = $pageMap;
+ }
+ if ($plane > 0) {
+ substr($planeMap, $plane - 1, 1) = pack('C', $pageMapIndex{$pageMap});
+ }
+ }
+
+ if ($maxPlane) {
+ print DATA_TABLES "static const uint8_t s${prefix}Planes[$maxPlane] = {";
+ print DATA_TABLES join(',', map { sprintf("%d", $_) } unpack('C*', $planeMap));
+ print DATA_TABLES "};\n\n";
+ }
+
+ my $chCount = scalar @char;
+ my $pmBits = $chCount > 255 ? 16 : 8;
+ my $pmCount = scalar @pageMap;
+ if ($maxPlane == 0) {
+ die "there should only be one pageMap entry!" if $pmCount > 1;
+ print DATA_TABLES "static const uint${pmBits}_t s${prefix}Pages[$indexLen] = {\n";
+ } else {
+ print DATA_TABLES "static const uint${pmBits}_t s${prefix}Pages[$pmCount][$indexLen] = {\n";
+ }
+ for (my $i = 0; $i < scalar @pageMap; ++$i) {
+ print DATA_TABLES $maxPlane > 0 ? " {" : " ";
+ print DATA_TABLES join(',', map { sprintf("%d", $_) } unpack('S*', $pageMap[$i]));
+ print DATA_TABLES $maxPlane > 0 ? ($i < $#pageMap ? "},\n" : "}\n") : "\n";
+ }
+ print DATA_TABLES "};\n\n";
+
+ my $pageLen = $charsPerPage / $charsPerEntry;
+ print DATA_TABLES "static const $type s${prefix}Values[$chCount][$pageLen] = {\n";
+ for (my $i = 0; $i < scalar @char; ++$i) {
+ print DATA_TABLES " {";
+ print DATA_TABLES $char[$i];
+ print DATA_TABLES $i < $#char ? "},\n" : "}\n";
+ }
+ print DATA_TABLES "};\n";
+ print DATA_TABLES "$guardEnd\n";
+
+ my $dataSize = $pmCount * $indexLen * $pmBits/8 +
+ $chCount * $pageLen * $bytesPerEntry +
+ $maxPlane;
+ $totalData += $dataSize;
+
+ print STDERR "Data for $prefix = $dataSize\n";
+}
+
+print DATA_TABLES <<__END;
+/*
+ * * * * * This file contains MACHINE-GENERATED DATA, do not edit! * * * * *
+ */
+__END
+
+close DATA_TABLES;
+
+print HEADER "namespace mozilla {\n";
+print HEADER "namespace unicode {\n";
+print HEADER "enum class Script {\n";
+for (my $i = 0; $i < scalar @scriptCodeToName; ++$i) {
+ print HEADER " ", $scriptCodeToName[$i], " = ", $i, ",\n";
+}
+print HEADER "\n NUM_SCRIPT_CODES = ", scalar @scriptCodeToName, ",\n";
+print HEADER "\n INVALID = -1\n";
+print HEADER "};\n";
+print HEADER "} // namespace unicode\n";
+print HEADER "} // namespace mozilla\n\n";
+
+print HEADER <<__END;
+#endif
+/*
+ * * * * * This file contains MACHINE-GENERATED DATA, do not edit! * * * * *
+ */
+__END
+
+close HEADER;
+
diff --git a/intl/unicharutil/tools/moz.build b/intl/unicharutil/tools/moz.build
new file mode 100644
index 000000000..d2072d2aa
--- /dev/null
+++ b/intl/unicharutil/tools/moz.build
@@ -0,0 +1,12 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+Program('ucgendat')
+
+SOURCES += [
+ 'ucgendat.c',
+]
+
diff --git a/intl/unicharutil/tools/ucgendat.c b/intl/unicharutil/tools/ucgendat.c
new file mode 100644
index 000000000..c0134a0c0
--- /dev/null
+++ b/intl/unicharutil/tools/ucgendat.c
@@ -0,0 +1,1457 @@
+/*
+ * Copyright 1996, 1997, 1998 Computing Research Labs,
+ * New Mexico State University
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
+ * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifndef lint
+#ifdef __GNUC__
+static char rcsid[] __attribute__ ((unused)) = "$Id: ucgendat.c,v 1.1 1999/01/08 00:19:21 ftang%netscape.com Exp $";
+#else
+static char rcsid[] = "$Id: ucgendat.c,v 1.1 1999/01/08 00:19:21 ftang%netscape.com Exp $";
+#endif
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+
+#define ishdigit(cc) (((cc) >= '0' && (cc) <= '9') ||\
+ ((cc) >= 'A' && (cc) <= 'F') ||\
+ ((cc) >= 'a' && (cc) <= 'f'))
+
+/*
+ * A header written to the output file with the byte-order-mark and the number
+ * of property nodes.
+ */
+static unsigned short hdr[2] = {0xfeff, 0};
+
+#define NUMPROPS 49
+#define NEEDPROPS (NUMPROPS + (4 - (NUMPROPS & 3)))
+
+typedef struct {
+ char *name;
+ int len;
+} _prop_t;
+
+/*
+ * List of properties expected to be found in the Unicode Character Database
+ * including some implementation specific properties.
+ *
+ * The implementation specific properties are:
+ * Cm = Composed (can be decomposed)
+ * Nb = Non-breaking
+ * Sy = Symmetric (has left and right forms)
+ * Hd = Hex digit
+ * Qm = Quote marks
+ * Mr = Mirroring
+ * Ss = Space, other
+ * Cp = Defined character
+ */
+static _prop_t props[NUMPROPS] = {
+ {"Mn", 2}, {"Mc", 2}, {"Me", 2}, {"Nd", 2}, {"Nl", 2}, {"No", 2},
+ {"Zs", 2}, {"Zl", 2}, {"Zp", 2}, {"Cc", 2}, {"Cf", 2}, {"Cs", 2},
+ {"Co", 2}, {"Cn", 2}, {"Lu", 2}, {"Ll", 2}, {"Lt", 2}, {"Lm", 2},
+ {"Lo", 2}, {"Pc", 2}, {"Pd", 2}, {"Ps", 2}, {"Pe", 2}, {"Po", 2},
+ {"Sm", 2}, {"Sc", 2}, {"Sk", 2}, {"So", 2}, {"L", 1}, {"R", 1},
+ {"EN", 2}, {"ES", 2}, {"ET", 2}, {"AN", 2}, {"CS", 2}, {"B", 1},
+ {"S", 1}, {"WS", 2}, {"ON", 2},
+ {"Cm", 2}, {"Nb", 2}, {"Sy", 2}, {"Hd", 2}, {"Qm", 2}, {"Mr", 2},
+ {"Ss", 2}, {"Cp", 2}, {"Pi", 2}, {"Pf", 2}
+};
+
+typedef struct {
+ unsigned long *ranges;
+ unsigned short used;
+ unsigned short size;
+} _ranges_t;
+
+static _ranges_t proptbl[NUMPROPS];
+
+/*
+ * Make sure this array is sized to be on a 4-byte boundary at compile time.
+ */
+static unsigned short propcnt[NEEDPROPS];
+
+/*
+ * Array used to collect a decomposition before adding it to the decomposition
+ * table.
+ */
+static unsigned long dectmp[64];
+static unsigned long dectmp_size;
+
+typedef struct {
+ unsigned long code;
+ unsigned short size;
+ unsigned short used;
+ unsigned long *decomp;
+} _decomp_t;
+
+/*
+ * List of decomposition. Created and expanded in order as the characters are
+ * encountered.
+ */
+static _decomp_t *decomps;
+static unsigned long decomps_used;
+static unsigned long decomps_size;
+
+/*
+ * Types and lists for handling lists of case mappings.
+ */
+typedef struct {
+ unsigned long key;
+ unsigned long other1;
+ unsigned long other2;
+} _case_t;
+
+static _case_t *upper;
+static _case_t *lower;
+static _case_t *title;
+static unsigned long upper_used;
+static unsigned long upper_size;
+static unsigned long lower_used;
+static unsigned long lower_size;
+static unsigned long title_used;
+static unsigned long title_size;
+
+/*
+ * Array used to collect case mappings before adding them to a list.
+ */
+static unsigned long cases[3];
+
+/*
+ * An array to hold ranges for combining classes.
+ */
+static unsigned long *ccl;
+static unsigned long ccl_used;
+static unsigned long ccl_size;
+
+/*
+ * Structures for handling numbers.
+ */
+typedef struct {
+ unsigned long code;
+ unsigned long idx;
+} _codeidx_t;
+
+typedef struct {
+ short numerator;
+ short denominator;
+} _num_t;
+
+/*
+ * Arrays to hold the mapping of codes to numbers.
+ */
+static _codeidx_t *ncodes;
+static unsigned long ncodes_used;
+static unsigned long ncodes_size;
+
+static _num_t *nums;
+static unsigned long nums_used;
+static unsigned long nums_size;
+
+/*
+ * Array for holding numbers.
+ */
+static _num_t *nums;
+static unsigned long nums_used;
+static unsigned long nums_size;
+
+static void
+#ifdef __STDC__
+add_range(unsigned long start, unsigned long end, char *p1, char *p2)
+#else
+add_range(start, end, p1, p2)
+unsigned long start, end;
+char *p1, *p2;
+#endif
+{
+ int i, j, k, len;
+ _ranges_t *rlp;
+ char *name;
+
+ for (k = 0; k < 2; k++) {
+ if (k == 0) {
+ name = p1;
+ len = 2;
+ } else {
+ if (p2 == 0)
+ break;
+
+ name = p2;
+ len = 1;
+ }
+
+ for (i = 0; i < NUMPROPS; i++) {
+ if (props[i].len == len && memcmp(props[i].name, name, len) == 0)
+ break;
+ }
+
+ if (i == NUMPROPS)
+ continue;
+
+ rlp = &proptbl[i];
+
+ /*
+ * Resize the range list if necessary.
+ */
+ if (rlp->used == rlp->size) {
+ if (rlp->size == 0)
+ rlp->ranges = (unsigned long *)
+ malloc(sizeof(unsigned long) << 3);
+ else
+ rlp->ranges = (unsigned long *)
+ realloc((char *) rlp->ranges,
+ sizeof(unsigned long) * (rlp->size + 8));
+ rlp->size += 8;
+ }
+
+ /*
+ * If this is the first code for this property list, just add it
+ * and return.
+ */
+ if (rlp->used == 0) {
+ rlp->ranges[0] = start;
+ rlp->ranges[1] = end;
+ rlp->used += 2;
+ continue;
+ }
+
+ /*
+ * Optimize the case of adding the range to the end.
+ */
+ j = rlp->used - 1;
+ if (start > rlp->ranges[j]) {
+ j = rlp->used;
+ rlp->ranges[j++] = start;
+ rlp->ranges[j++] = end;
+ rlp->used = j;
+ continue;
+ }
+
+ /*
+ * Need to locate the insertion point.
+ */
+ for (i = 0;
+ i < rlp->used && start > rlp->ranges[i + 1] + 1; i += 2) ;
+
+ /*
+ * If the start value lies in the current range, then simply set the
+ * new end point of the range to the end value passed as a parameter.
+ */
+ if (rlp->ranges[i] <= start && start <= rlp->ranges[i + 1] + 1) {
+ rlp->ranges[i + 1] = end;
+ return;
+ }
+
+ /*
+ * Shift following values up by two.
+ */
+ for (j = rlp->used; j > i; j -= 2) {
+ rlp->ranges[j] = rlp->ranges[j - 2];
+ rlp->ranges[j + 1] = rlp->ranges[j - 1];
+ }
+
+ /*
+ * Add the new range at the insertion point.
+ */
+ rlp->ranges[i] = start;
+ rlp->ranges[i + 1] = end;
+ rlp->used += 2;
+ }
+}
+
+static void
+#ifdef __STDC__
+ordered_range_insert(unsigned long c, char *name, int len)
+#else
+ordered_range_insert(c, name, len)
+unsigned long c;
+char *name;
+int len;
+#endif
+{
+ int i, j;
+ unsigned long s, e;
+ _ranges_t *rlp;
+
+ if (len == 0)
+ return;
+
+ for (i = 0; i < NUMPROPS; i++) {
+ if (props[i].len == len && memcmp(props[i].name, name, len) == 0)
+ break;
+ }
+
+ if (i == NUMPROPS)
+ return;
+
+ /*
+ * Have a match, so insert the code in order.
+ */
+ rlp = &proptbl[i];
+
+ /*
+ * Resize the range list if necessary.
+ */
+ if (rlp->used == rlp->size) {
+ if (rlp->size == 0)
+ rlp->ranges = (unsigned long *)
+ malloc(sizeof(unsigned long) << 3);
+ else
+ rlp->ranges = (unsigned long *)
+ realloc((char *) rlp->ranges,
+ sizeof(unsigned long) * (rlp->size + 8));
+ rlp->size += 8;
+ }
+
+ /*
+ * If this is the first code for this property list, just add it
+ * and return.
+ */
+ if (rlp->used == 0) {
+ rlp->ranges[0] = rlp->ranges[1] = c;
+ rlp->used += 2;
+ return;
+ }
+
+ /*
+ * Optimize the cases of extending the last range and adding new ranges to
+ * the end.
+ */
+ j = rlp->used - 1;
+ e = rlp->ranges[j];
+ s = rlp->ranges[j - 1];
+
+ if (c == e + 1) {
+ /*
+ * Extend the last range.
+ */
+ rlp->ranges[j] = c;
+ return;
+ }
+
+ if (c > e + 1) {
+ /*
+ * Start another range on the end.
+ */
+ j = rlp->used;
+ rlp->ranges[j] = rlp->ranges[j + 1] = c;
+ rlp->used += 2;
+ return;
+ }
+
+ if (c >= s)
+ /*
+ * The code is a duplicate of a code in the last range, so just return.
+ */
+ return;
+
+ /*
+ * The code should be inserted somewhere before the last range in the
+ * list. Locate the insertion point.
+ */
+ for (i = 0;
+ i < rlp->used && c > rlp->ranges[i + 1] + 1; i += 2) ;
+
+ s = rlp->ranges[i];
+ e = rlp->ranges[i + 1];
+
+ if (c == e + 1)
+ /*
+ * Simply extend the current range.
+ */
+ rlp->ranges[i + 1] = c;
+ else if (c < s) {
+ /*
+ * Add a new entry before the current location. Shift all entries
+ * before the current one up by one to make room.
+ */
+ for (j = rlp->used; j > i; j -= 2) {
+ rlp->ranges[j] = rlp->ranges[j - 2];
+ rlp->ranges[j + 1] = rlp->ranges[j - 1];
+ }
+ rlp->ranges[i] = rlp->ranges[i + 1] = c;
+
+ rlp->used += 2;
+ }
+}
+
+static void
+#ifdef __STDC__
+add_decomp(unsigned long code)
+#else
+add_decomp(code)
+unsigned long code;
+#endif
+{
+ unsigned long i, j, size;
+
+ /*
+ * Add the code to the composite property.
+ */
+ ordered_range_insert(code, "Cm", 2);
+
+ /*
+ * Locate the insertion point for the code.
+ */
+ for (i = 0; i < decomps_used && code > decomps[i].code; i++) ;
+
+ /*
+ * Allocate space for a new decomposition.
+ */
+ if (decomps_used == decomps_size) {
+ if (decomps_size == 0)
+ decomps = (_decomp_t *) malloc(sizeof(_decomp_t) << 3);
+ else
+ decomps = (_decomp_t *)
+ realloc((char *) decomps,
+ sizeof(_decomp_t) * (decomps_size + 8));
+ (void) memset((char *) (decomps + decomps_size), 0,
+ sizeof(_decomp_t) << 3);
+ decomps_size += 8;
+ }
+
+ if (i < decomps_used && code != decomps[i].code) {
+ /*
+ * Shift the decomps up by one if the codes don't match.
+ */
+ for (j = decomps_used; j > i; j--)
+ (void) memcpy((char *) &decomps[j], (char *) &decomps[j - 1],
+ sizeof(_decomp_t));
+ }
+
+ /*
+ * Insert or replace a decomposition.
+ */
+ size = dectmp_size + (4 - (dectmp_size & 3));
+ if (decomps[i].size < size) {
+ if (decomps[i].size == 0)
+ decomps[i].decomp = (unsigned long *)
+ malloc(sizeof(unsigned long) * size);
+ else
+ decomps[i].decomp = (unsigned long *)
+ realloc((char *) decomps[i].decomp,
+ sizeof(unsigned long) * size);
+ decomps[i].size = size;
+ }
+
+ if (decomps[i].code != code)
+ decomps_used++;
+
+ decomps[i].code = code;
+ decomps[i].used = dectmp_size;
+ (void) memcpy((char *) decomps[i].decomp, (char *) dectmp,
+ sizeof(unsigned long) * dectmp_size);
+
+}
+
+static void
+#ifdef __STDC__
+add_title(unsigned long code)
+#else
+add_title(code)
+unsigned long code;
+#endif
+{
+ unsigned long i, j;
+
+ /*
+ * Always map the code to itself.
+ */
+ cases[2] = code;
+
+ if (title_used == title_size) {
+ if (title_size == 0)
+ title = (_case_t *) malloc(sizeof(_case_t) << 3);
+ else
+ title = (_case_t *) realloc((char *) title,
+ sizeof(_case_t) * (title_size + 8));
+ title_size += 8;
+ }
+
+ /*
+ * Locate the insertion point.
+ */
+ for (i = 0; i < title_used && code > title[i].key; i++) ;
+
+ if (i < title_used) {
+ /*
+ * Shift the array up by one.
+ */
+ for (j = title_used; j > i; j--)
+ (void) memcpy((char *) &title[j], (char *) &title[j - 1],
+ sizeof(_case_t));
+ }
+
+ title[i].key = cases[2]; /* Title */
+ title[i].other1 = cases[0]; /* Upper */
+ title[i].other2 = cases[1]; /* Lower */
+
+ title_used++;
+}
+
+static void
+#ifdef __STDC__
+add_upper(unsigned long code)
+#else
+add_upper(code)
+unsigned long code;
+#endif
+{
+ unsigned long i, j;
+
+ /*
+ * Always map the code to itself.
+ */
+ cases[0] = code;
+
+ /*
+ * If the title case character is not present, then make it the same as
+ * the upper case.
+ */
+ if (cases[2] == 0)
+ cases[2] = code;
+
+ if (upper_used == upper_size) {
+ if (upper_size == 0)
+ upper = (_case_t *) malloc(sizeof(_case_t) << 3);
+ else
+ upper = (_case_t *) realloc((char *) upper,
+ sizeof(_case_t) * (upper_size + 8));
+ upper_size += 8;
+ }
+
+ /*
+ * Locate the insertion point.
+ */
+ for (i = 0; i < upper_used && code > upper[i].key; i++) ;
+
+ if (i < upper_used) {
+ /*
+ * Shift the array up by one.
+ */
+ for (j = upper_used; j > i; j--)
+ (void) memcpy((char *) &upper[j], (char *) &upper[j - 1],
+ sizeof(_case_t));
+ }
+
+ upper[i].key = cases[0]; /* Upper */
+ upper[i].other1 = cases[1]; /* Lower */
+ upper[i].other2 = cases[2]; /* Title */
+
+ upper_used++;
+}
+
+static void
+#ifdef __STDC__
+add_lower(unsigned long code)
+#else
+add_lower(code)
+unsigned long code;
+#endif
+{
+ unsigned long i, j;
+
+ /*
+ * Always map the code to itself.
+ */
+ cases[1] = code;
+
+ /*
+ * If the title case character is empty, then make it the same as the
+ * upper case.
+ */
+ if (cases[2] == 0)
+ cases[2] = cases[0];
+
+ if (lower_used == lower_size) {
+ if (lower_size == 0)
+ lower = (_case_t *) malloc(sizeof(_case_t) << 3);
+ else
+ lower = (_case_t *) realloc((char *) lower,
+ sizeof(_case_t) * (lower_size + 8));
+ lower_size += 8;
+ }
+
+ /*
+ * Locate the insertion point.
+ */
+ for (i = 0; i < lower_used && code > lower[i].key; i++) ;
+
+ if (i < lower_used) {
+ /*
+ * Shift the array up by one.
+ */
+ for (j = lower_used; j > i; j--)
+ (void) memcpy((char *) &lower[j], (char *) &lower[j - 1],
+ sizeof(_case_t));
+ }
+
+ lower[i].key = cases[1]; /* Lower */
+ lower[i].other1 = cases[0]; /* Upper */
+ lower[i].other2 = cases[2]; /* Title */
+
+ lower_used++;
+}
+
+static void
+#ifdef __STDC__
+ordered_ccl_insert(unsigned long c, unsigned long ccl_code)
+#else
+ordered_ccl_insert(c, ccl_code)
+unsigned long c, ccl_code;
+#endif
+{
+ unsigned long i, j;
+
+ if (ccl_used == ccl_size) {
+ if (ccl_size == 0)
+ ccl = (unsigned long *) malloc(sizeof(unsigned long) * 24);
+ else
+ ccl = (unsigned long *)
+ realloc((char *) ccl, sizeof(unsigned long) * (ccl_size + 24));
+ ccl_size += 24;
+ }
+
+ /*
+ * Optimize adding the first item.
+ */
+ if (ccl_used == 0) {
+ ccl[0] = ccl[1] = c;
+ ccl[2] = ccl_code;
+ ccl_used += 3;
+ return;
+ }
+
+ /*
+ * Handle the special case of extending the range on the end. This
+ * requires that the combining class codes are the same.
+ */
+ if (ccl_code == ccl[ccl_used - 1] && c == ccl[ccl_used - 2] + 1) {
+ ccl[ccl_used - 2] = c;
+ return;
+ }
+
+ /*
+ * Handle the special case of adding another range on the end.
+ */
+ if (c > ccl[ccl_used - 2] + 1 ||
+ (c == ccl[ccl_used - 2] + 1 && ccl_code != ccl[ccl_used - 1])) {
+ ccl[ccl_used++] = c;
+ ccl[ccl_used++] = c;
+ ccl[ccl_used++] = ccl_code;
+ return;
+ }
+
+ /*
+ * Locate either the insertion point or range for the code.
+ */
+ for (i = 0; i < ccl_used && c > ccl[i + 1] + 1; i += 3) ;
+
+ if (ccl_code == ccl[i + 2] && c == ccl[i + 1] + 1) {
+ /*
+ * Extend an existing range.
+ */
+ ccl[i + 1] = c;
+ return;
+ } else if (c < ccl[i]) {
+ /*
+ * Start a new range before the current location.
+ */
+ for (j = ccl_used; j > i; j -= 3) {
+ ccl[j] = ccl[j - 3];
+ ccl[j - 1] = ccl[j - 4];
+ ccl[j - 2] = ccl[j - 5];
+ }
+ ccl[i] = ccl[i + 1] = c;
+ ccl[i + 2] = ccl_code;
+ }
+}
+
+/*
+ * Adds a number if it does not already exist and returns an index value
+ * multiplied by 2.
+ */
+static unsigned long
+#ifdef __STDC__
+make_number(short num, short denom)
+#else
+make_number(num, denom)
+short num, denom;
+#endif
+{
+ unsigned long n;
+
+ /*
+ * Determine if the number already exists.
+ */
+ for (n = 0; n < nums_used; n++) {
+ if (nums[n].numerator == num && nums[n].denominator == denom)
+ return n << 1;
+ }
+
+ if (nums_used == nums_size) {
+ if (nums_size == 0)
+ nums = (_num_t *) malloc(sizeof(_num_t) << 3);
+ else
+ nums = (_num_t *) realloc((char *) nums,
+ sizeof(_num_t) * (nums_size + 8));
+ nums_size += 8;
+ }
+
+ n = nums_used++;
+ nums[n].numerator = num;
+ nums[n].denominator = denom;
+
+ return n << 1;
+}
+
+static void
+#ifdef __STDC__
+add_number(unsigned long code, short num, short denom)
+#else
+add_number(code, num, denom)
+unsigned long code;
+short num, denom;
+#endif
+{
+ unsigned long i, j;
+
+ /*
+ * Insert the code in order.
+ */
+ for (i = 0; i < ncodes_used && code > ncodes[i].code; i++) ;
+
+ /*
+ * Handle the case of the codes matching and simply replace the number
+ * that was there before.
+ */
+ if (ncodes_used > 0 && code == ncodes[i].code) {
+ ncodes[i].idx = make_number(num, denom);
+ return;
+ }
+
+ /*
+ * Resize the array if necessary.
+ */
+ if (ncodes_used == ncodes_size) {
+ if (ncodes_size == 0)
+ ncodes = (_codeidx_t *) malloc(sizeof(_codeidx_t) << 3);
+ else
+ ncodes = (_codeidx_t *)
+ realloc((char *) ncodes, sizeof(_codeidx_t) * (ncodes_size + 8));
+
+ ncodes_size += 8;
+ }
+
+ /*
+ * Shift things around to insert the code if necessary.
+ */
+ if (i < ncodes_used) {
+ for (j = ncodes_used; j > i; j--) {
+ ncodes[j].code = ncodes[j - 1].code;
+ ncodes[j].idx = ncodes[j - 1].idx;
+ }
+ }
+ ncodes[i].code = code;
+ ncodes[i].idx = make_number(num, denom);
+
+ ncodes_used++;
+}
+
+/*
+ * This routine assumes that the line is a valid Unicode Character Database
+ * entry.
+ */
+static void
+#ifdef __STDC__
+read_cdata(FILE *in)
+#else
+read_cdata(in)
+FILE *in;
+#endif
+{
+ unsigned long i, lineno, skip, code, ccl_code;
+ short wnum, neg, number[2];
+ char line[512], *s, *e;
+
+ lineno = skip = 0;
+ while (fscanf(in, "%[^\n]\n", line) != EOF) {
+ lineno++;
+
+ /*
+ * Skip blank lines and lines that start with a '#'.
+ */
+ if (line[0] == 0 || line[0] == '#')
+ continue;
+
+ /*
+ * If lines need to be skipped, do it here.
+ */
+ if (skip) {
+ skip--;
+ continue;
+ }
+
+ /*
+ * Collect the code. The code can be up to 6 hex digits in length to
+ * allow surrogates to be specified.
+ */
+ for (s = line, i = code = 0; *s != ';' && i < 6; i++, s++) {
+ code <<= 4;
+ if (*s >= '0' && *s <= '9')
+ code += *s - '0';
+ else if (*s >= 'A' && *s <= 'F')
+ code += (*s - 'A') + 10;
+ else if (*s >= 'a' && *s <= 'f')
+ code += (*s - 'a') + 10;
+ }
+
+ /*
+ * Handle the following special cases:
+ * 1. 4E00-9FA5 CJK Ideographs.
+ * 2. AC00-D7A3 Hangul Syllables.
+ * 3. D800-DFFF Surrogates.
+ * 4. E000-F8FF Private Use Area.
+ * 5. F900-FA2D Han compatibility.
+ */
+ switch (code) {
+ case 0x4e00:
+ /*
+ * The Han ideographs.
+ */
+ add_range(0x4e00, 0x9fff, "Lo", "L");
+
+ /*
+ * Add the characters to the defined category.
+ */
+ add_range(0x4e00, 0x9fa5, "Cp", 0);
+
+ skip = 1;
+ break;
+ case 0xac00:
+ /*
+ * The Hangul syllables.
+ */
+ add_range(0xac00, 0xd7a3, "Lo", "L");
+
+ /*
+ * Add the characters to the defined category.
+ */
+ add_range(0xac00, 0xd7a3, "Cp", 0);
+
+ skip = 1;
+ break;
+ case 0xd800:
+ /*
+ * Make a range of all surrogates and assume some default
+ * properties.
+ */
+ add_range(0x010000, 0x10ffff, "Cs", "L");
+ skip = 5;
+ break;
+ case 0xe000:
+ /*
+ * The Private Use area. Add with a default set of properties.
+ */
+ add_range(0xe000, 0xf8ff, "Co", "L");
+ skip = 1;
+ break;
+ case 0xf900:
+ /*
+ * The CJK compatibility area.
+ */
+ add_range(0xf900, 0xfaff, "Lo", "L");
+
+ /*
+ * Add the characters to the defined category.
+ */
+ add_range(0xf900, 0xfaff, "Cp", 0);
+
+ skip = 1;
+ }
+
+ if (skip)
+ continue;
+
+ /*
+ * Add the code to the defined category.
+ */
+ ordered_range_insert(code, "Cp", 2);
+
+ /*
+ * Locate the first character property field.
+ */
+ for (i = 0; *s != 0 && i < 2; s++) {
+ if (*s == ';')
+ i++;
+ }
+ for (e = s; *e && *e != ';'; e++) ;
+
+ ordered_range_insert(code, s, e - s);
+
+ /*
+ * Locate the combining class code.
+ */
+ for (s = e; *s != 0 && i < 3; s++) {
+ if (*s == ';')
+ i++;
+ }
+
+ /*
+ * Convert the combining class code from decimal.
+ */
+ for (ccl_code = 0, e = s; *e && *e != ';'; e++)
+ ccl_code = (ccl_code * 10) + (*e - '0');
+
+ /*
+ * Add the code if it not 0.
+ */
+ if (ccl_code != 0)
+ ordered_ccl_insert(code, ccl_code);
+
+ /*
+ * Locate the second character property field.
+ */
+ for (s = e; *s != 0 && i < 4; s++) {
+ if (*s == ';')
+ i++;
+ }
+ for (e = s; *e && *e != ';'; e++) ;
+
+ ordered_range_insert(code, s, e - s);
+
+ /*
+ * Check for a decomposition.
+ */
+ s = ++e;
+ if (*s != ';' && *s != '<') {
+ /*
+ * Collect the codes of the decomposition.
+ */
+ for (dectmp_size = 0; *s != ';'; ) {
+ /*
+ * Skip all leading non-hex digits.
+ */
+ while (!ishdigit(*s))
+ s++;
+
+ for (dectmp[dectmp_size] = 0; ishdigit(*s); s++) {
+ dectmp[dectmp_size] <<= 4;
+ if (*s >= '0' && *s <= '9')
+ dectmp[dectmp_size] += *s - '0';
+ else if (*s >= 'A' && *s <= 'F')
+ dectmp[dectmp_size] += (*s - 'A') + 10;
+ else if (*s >= 'a' && *s <= 'f')
+ dectmp[dectmp_size] += (*s - 'a') + 10;
+ }
+ dectmp_size++;
+ }
+
+ /*
+ * If there is more than one code in the temporary decomposition
+ * array, then add the character with its decomposition.
+ */
+ if (dectmp_size > 1)
+ add_decomp(code);
+ }
+
+ /*
+ * Skip to the number field.
+ */
+ for (i = 0; i < 3 && *s; s++) {
+ if (*s == ';')
+ i++;
+ }
+
+ /*
+ * Scan the number in.
+ */
+ number[0] = number[1] = 0;
+ for (e = s, neg = wnum = 0; *e && *e != ';'; e++) {
+ if (*e == '-') {
+ neg = 1;
+ continue;
+ }
+
+ if (*e == '/') {
+ /*
+ * Move the the denominator of the fraction.
+ */
+ if (neg)
+ number[wnum] *= -1;
+ neg = 0;
+ e++;
+ wnum++;
+ }
+ number[wnum] = (number[wnum] * 10) + (*e - '0');
+ }
+
+ if (e > s) {
+ /*
+ * Adjust the denominator in case of integers and add the number.
+ */
+ if (wnum == 0)
+ number[1] = number[0];
+
+ add_number(code, number[0], number[1]);
+ }
+
+ /*
+ * Skip to the start of the possible case mappings.
+ */
+ for (s = e, i = 0; i < 4 && *s; s++) {
+ if (*s == ';')
+ i++;
+ }
+
+ /*
+ * Collect the case mappings.
+ */
+ cases[0] = cases[1] = cases[2] = 0;
+ for (i = 0; i < 3; i++) {
+ while (ishdigit(*s)) {
+ cases[i] <<= 4;
+ if (*s >= '0' && *s <= '9')
+ cases[i] += *s - '0';
+ else if (*s >= 'A' && *s <= 'F')
+ cases[i] += (*s - 'A') + 10;
+ else if (*s >= 'a' && *s <= 'f')
+ cases[i] += (*s - 'a') + 10;
+ s++;
+ }
+ if (*s == ';')
+ s++;
+ }
+ if (cases[0] && cases[1])
+ /*
+ * Add the upper and lower mappings for a title case character.
+ */
+ add_title(code);
+ else if (cases[1])
+ /*
+ * Add the lower and title case mappings for the upper case
+ * character.
+ */
+ add_upper(code);
+ else if (cases[0])
+ /*
+ * Add the upper and title case mappings for the lower case
+ * character.
+ */
+ add_lower(code);
+ }
+}
+
+static _decomp_t *
+#ifdef __STDC__
+find_decomp(unsigned long code)
+#else
+find_decomp(code)
+unsigned long code;
+#endif
+{
+ long l, r, m;
+
+ l = 0;
+ r = decomps_used - 1;
+ while (l <= r) {
+ m = (l + r) >> 1;
+ if (code > decomps[m].code)
+ l = m + 1;
+ else if (code < decomps[m].code)
+ r = m - 1;
+ else
+ return &decomps[m];
+ }
+ return 0;
+}
+
+static void
+#ifdef __STDC__
+decomp_it(_decomp_t *d)
+#else
+decomp_it(d)
+_decomp_t *d;
+#endif
+{
+ unsigned long i;
+ _decomp_t *dp;
+
+ for (i = 0; i < d->used; i++) {
+ if ((dp = find_decomp(d->decomp[i])) != 0)
+ decomp_it(dp);
+ else
+ dectmp[dectmp_size++] = d->decomp[i];
+ }
+}
+
+/*
+ * Expand all decompositions by recursively decomposing each character
+ * in the decomposition.
+ */
+static void
+#ifdef __STDC__
+expand_decomp(void)
+#else
+expand_decomp()
+#endif
+{
+ unsigned long i;
+
+ for (i = 0; i < decomps_used; i++) {
+ dectmp_size = 0;
+ decomp_it(&decomps[i]);
+ if (dectmp_size > 0)
+ add_decomp(decomps[i].code);
+ }
+}
+
+static void
+#ifdef __STDC__
+write_cdata(char *opath)
+#else
+write_cdata(opath)
+char *opath;
+#endif
+{
+ FILE *out;
+ unsigned long i, idx, bytes, nprops;
+ unsigned short casecnt[2];
+ char path[BUFSIZ];
+
+ /*****************************************************************
+ *
+ * Generate the ctype data.
+ *
+ *****************************************************************/
+
+ /*
+ * Open the ctype.dat file.
+ */
+ sprintf(path, "%s/ctype.dat", opath);
+ if ((out = fopen(path, "wb")) == 0)
+ return;
+
+ /*
+ * Collect the offsets for the properties. The offsets array is
+ * on a 4-byte boundary to keep things efficient for architectures
+ * that need such a thing.
+ */
+ for (i = idx = 0; i < NUMPROPS; i++) {
+ propcnt[i] = (proptbl[i].used != 0) ? idx : 0xffff;
+ idx += proptbl[i].used;
+ }
+
+ /*
+ * Add the sentinel index which is used by the binary search as the upper
+ * bound for a search.
+ */
+ propcnt[i] = idx;
+
+ /*
+ * Record the actual number of property lists. This may be different than
+ * the number of offsets actually written because of aligning on a 4-byte
+ * boundary.
+ */
+ hdr[1] = NUMPROPS;
+
+ /*
+ * Calculate the byte count needed and pad the property counts array to a
+ * 4-byte boundary.
+ */
+ if ((bytes = sizeof(unsigned short) * (NUMPROPS + 1)) & 3)
+ bytes += 4 - (bytes & 3);
+ nprops = bytes / sizeof(unsigned short);
+ bytes += sizeof(unsigned long) * idx;
+
+ /*
+ * Write the header.
+ */
+ fwrite((char *) hdr, sizeof(unsigned short), 2, out);
+
+ /*
+ * Write the byte count.
+ */
+ fwrite((char *) &bytes, sizeof(unsigned long), 1, out);
+
+ /*
+ * Write the property list counts.
+ */
+ fwrite((char *) propcnt, sizeof(unsigned short), nprops, out);
+
+ /*
+ * Write the property lists.
+ */
+ for (i = 0; i < NUMPROPS; i++) {
+ if (proptbl[i].used > 0)
+ fwrite((char *) proptbl[i].ranges, sizeof(unsigned long),
+ proptbl[i].used, out);
+ }
+
+ fclose(out);
+
+ /*****************************************************************
+ *
+ * Generate the case mapping data.
+ *
+ *****************************************************************/
+
+ /*
+ * Open the case.dat file.
+ */
+ sprintf(path, "%s/case.dat", opath);
+ if ((out = fopen(path, "wb")) == 0)
+ return;
+
+ /*
+ * Write the case mapping tables.
+ */
+ hdr[1] = upper_used + lower_used + title_used;
+ casecnt[0] = upper_used;
+ casecnt[1] = lower_used;
+
+ /*
+ * Write the header.
+ */
+ fwrite((char *) hdr, sizeof(unsigned short), 2, out);
+
+ /*
+ * Write the upper and lower case table sizes.
+ */
+ fwrite((char *) casecnt, sizeof(unsigned short), 2, out);
+
+ if (upper_used > 0)
+ /*
+ * Write the upper case table.
+ */
+ fwrite((char *) upper, sizeof(_case_t), upper_used, out);
+
+ if (lower_used > 0)
+ /*
+ * Write the lower case table.
+ */
+ fwrite((char *) lower, sizeof(_case_t), lower_used, out);
+
+ if (title_used > 0)
+ /*
+ * Write the title case table.
+ */
+ fwrite((char *) title, sizeof(_case_t), title_used, out);
+
+ fclose(out);
+
+ /*****************************************************************
+ *
+ * Generate the decomposition data.
+ *
+ *****************************************************************/
+
+ /*
+ * Fully expand all decompositions before generating the output file.
+ */
+ expand_decomp();
+
+ /*
+ * Open the decomp.dat file.
+ */
+ sprintf(path, "%s/decomp.dat", opath);
+ if ((out = fopen(path, "wb")) == 0)
+ return;
+
+ hdr[1] = decomps_used;
+
+ /*
+ * Write the header.
+ */
+ fwrite((char *) hdr, sizeof(unsigned short), 2, out);
+
+ /*
+ * Write a temporary byte count which will be calculated as the
+ * decompositions are written out.
+ */
+ bytes = 0;
+ fwrite((char *) &bytes, sizeof(unsigned long), 1, out);
+
+ if (decomps_used) {
+ /*
+ * Write the list of decomp nodes.
+ */
+ for (i = idx = 0; i < decomps_used; i++) {
+ fwrite((char *) &decomps[i].code, sizeof(unsigned long), 1, out);
+ fwrite((char *) &idx, sizeof(unsigned long), 1, out);
+ idx += decomps[i].used;
+ }
+
+ /*
+ * Write the sentinel index as the last decomp node.
+ */
+ fwrite((char *) &idx, sizeof(unsigned long), 1, out);
+
+ /*
+ * Write the decompositions themselves.
+ */
+ for (i = 0; i < decomps_used; i++)
+ fwrite((char *) decomps[i].decomp, sizeof(unsigned long),
+ decomps[i].used, out);
+
+ /*
+ * Seek back to the beginning and write the byte count.
+ */
+ bytes = (sizeof(unsigned long) * idx) +
+ (sizeof(unsigned long) * ((hdr[1] << 1) + 1));
+ fseek(out, sizeof(unsigned short) << 1, 0L);
+ fwrite((char *) &bytes, sizeof(unsigned long), 1, out);
+
+ fclose(out);
+ }
+
+ /*****************************************************************
+ *
+ * Generate the combining class data.
+ *
+ *****************************************************************/
+
+ /*
+ * Open the cmbcl.dat file.
+ */
+ sprintf(path, "%s/cmbcl.dat", opath);
+ if ((out = fopen(path, "wb")) == 0)
+ return;
+
+ /*
+ * Set the number of ranges used. Each range has a combining class which
+ * means each entry is a 3-tuple.
+ */
+ hdr[1] = ccl_used / 3;
+
+ /*
+ * Write the header.
+ */
+ fwrite((char *) hdr, sizeof(unsigned short), 2, out);
+
+ /*
+ * Write out the byte count to maintain header size.
+ */
+ bytes = ccl_used * sizeof(unsigned long);
+ fwrite((char *) &bytes, sizeof(unsigned long), 1, out);
+
+ if (ccl_used > 0)
+ /*
+ * Write the combining class ranges out.
+ */
+ fwrite((char *) ccl, sizeof(unsigned long), ccl_used, out);
+
+ fclose(out);
+
+ /*****************************************************************
+ *
+ * Generate the number data.
+ *
+ *****************************************************************/
+
+ /*
+ * Open the num.dat file.
+ */
+ sprintf(path, "%s/num.dat", opath);
+ if ((out = fopen(path, "wb")) == 0)
+ return;
+
+ /*
+ * The count part of the header will be the total number of codes that
+ * have numbers.
+ */
+ hdr[1] = (unsigned short) (ncodes_used << 1);
+ bytes = (ncodes_used * sizeof(_codeidx_t)) + (nums_used * sizeof(_num_t));
+
+ /*
+ * Write the header.
+ */
+ fwrite((char *) hdr, sizeof(unsigned short), 2, out);
+
+ /*
+ * Write out the byte count to maintain header size.
+ */
+ fwrite((char *) &bytes, sizeof(unsigned long), 1, out);
+
+ /*
+ * Now, if number mappings exist, write them out.
+ */
+ if (ncodes_used > 0) {
+ fwrite((char *) ncodes, sizeof(_codeidx_t), ncodes_used, out);
+ fwrite((char *) nums, sizeof(_num_t), nums_used, out);
+ }
+
+ fclose(out);
+}
+
+void
+#ifdef __STDC__
+main(int argc, char *argv[])
+#else
+main(argc, argv)
+int argc;
+char *argv[];
+#endif
+{
+ FILE *in;
+ char *prog, *opath;
+
+ if ((prog = strrchr(argv[0], '/')) != 0)
+ prog++;
+ else
+ prog = argv[0];
+
+ opath = 0;
+ in = stdin;
+
+ argc--;
+ argv++;
+
+ while (argc > 0) {
+ if (argv[0][0] == '-' && argv[0][1] == 'o') {
+ argc--;
+ argv++;
+ opath = argv[0];
+ } else {
+ if (in != stdin)
+ fclose(in);
+ if ((in = fopen(argv[0], "rb")) == 0)
+ fprintf(stderr, "%s: unable to open ctype file %s\n",
+ prog, argv[0]);
+ else {
+ read_cdata(in);
+ fclose(in);
+ in = 0;
+ }
+ }
+ argc--;
+ argv++;
+ }
+
+ if (opath == 0)
+ opath = ".";
+ write_cdata(opath);
+
+ exit(0);
+}
diff --git a/intl/unicharutil/ucdata.c b/intl/unicharutil/ucdata.c
new file mode 100644
index 000000000..090399ead
--- /dev/null
+++ b/intl/unicharutil/ucdata.c
@@ -0,0 +1,1162 @@
+/*
+ * Copyright 1996, 1997, 1998 Computing Research Labs,
+ * New Mexico State University
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
+ * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifndef lint
+#ifdef __GNUC__
+static char rcsid[] __attribute__ ((unused)) = "$Id: ucdata.c,v 1.1 1999/01/08 00:19:11 ftang%netscape.com Exp $";
+#else
+static char rcsid[] = "$Id: ucdata.c,v 1.1 1999/01/08 00:19:11 ftang%netscape.com Exp $";
+#endif
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+
+#include "ucdata.h"
+
+/**************************************************************************
+ *
+ * Miscellaneous types, data, and support functions.
+ *
+ **************************************************************************/
+
+typedef struct {
+ unsigned short bom;
+ unsigned short cnt;
+ union {
+ unsigned long bytes;
+ unsigned short len[2];
+ } size;
+} _ucheader_t;
+
+/*
+ * A simple array of 32-bit masks for lookup.
+ */
+static unsigned long masks32[32] = {
+ 0x00000001, 0x00000002, 0x00000004, 0x00000008, 0x00000010, 0x00000020,
+ 0x00000040, 0x00000080, 0x00000100, 0x00000200, 0x00000400, 0x00000800,
+ 0x00001000, 0x00002000, 0x00004000, 0x00008000, 0x00010000, 0x00020000,
+ 0x00040000, 0x00080000, 0x00100000, 0x00200000, 0x00400000, 0x00800000,
+ 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, 0x20000000,
+ 0x40000000, 0x80000000
+};
+
+#define endian_short(cc) (((cc) >> 8) | (((cc) & 0xff) << 8))
+#define endian_long(cc) ((((cc) & 0xff) << 24)|((((cc) >> 8) & 0xff) << 16)|\
+ ((((cc) >> 16) & 0xff) << 8)|((cc) >> 24))
+
+static FILE *
+#ifdef __STDC__
+_ucopenfile(char *paths, char *filename, char *mode)
+#else
+_ucopenfile(paths, filename, mode)
+char *paths, *filename, *mode;
+#endif
+{
+ FILE *f;
+ char *fp, *dp, *pp, path[BUFSIZ];
+
+ if (filename == 0 || *filename == 0)
+ return 0;
+
+ dp = paths;
+ while (dp && *dp) {
+ pp = path;
+ while (*dp && *dp != ':')
+ *pp++ = *dp++;
+ *pp++ = '/';
+
+ fp = filename;
+ while (*fp)
+ *pp++ = *fp++;
+ *pp = 0;
+
+ if ((f = fopen(path, mode)) != 0)
+ return f;
+
+ if (*dp == ':')
+ dp++;
+ }
+
+ return 0;
+}
+
+/**************************************************************************
+ *
+ * Support for the character properties.
+ *
+ **************************************************************************/
+
+static unsigned long _ucprop_size;
+static unsigned short *_ucprop_offsets;
+static unsigned long *_ucprop_ranges;
+
+static void
+#ifdef __STDC__
+_ucprop_load(char *paths, int reload)
+#else
+_ucprop_load(paths, reload)
+char *paths;
+int reload;
+#endif
+{
+ FILE *in;
+ unsigned long size, i;
+ _ucheader_t hdr;
+
+ if (_ucprop_size > 0) {
+ if (!reload)
+ /*
+ * The character properties have already been loaded.
+ */
+ return;
+
+ /*
+ * Unload the current character property data in preparation for
+ * loading a new copy. Only the first array has to be deallocated
+ * because all the memory for the arrays is allocated as a single
+ * block.
+ */
+ free((char *) _ucprop_offsets);
+ _ucprop_size = 0;
+ }
+
+ if ((in = _ucopenfile(paths, "ctype.dat", "rb")) == 0)
+ return;
+
+ /*
+ * Load the header.
+ */
+ fread((char *) &hdr, sizeof(_ucheader_t), 1, in);
+
+ if (hdr.bom == 0xfffe) {
+ hdr.cnt = endian_short(hdr.cnt);
+ hdr.size.bytes = endian_long(hdr.size.bytes);
+ }
+
+ if ((_ucprop_size = hdr.cnt) == 0) {
+ fclose(in);
+ return;
+ }
+
+ /*
+ * Allocate all the storage needed for the lookup table.
+ */
+ _ucprop_offsets = (unsigned short *) malloc(hdr.size.bytes);
+
+ /*
+ * Calculate the offset into the storage for the ranges. The offsets
+ * array is on a 4-byte boundary and one larger than the value provided in
+ * the header count field. This means the offset to the ranges must be
+ * calculated after aligning the count to a 4-byte boundary.
+ */
+ if ((size = ((hdr.cnt + 1) * sizeof(unsigned short))) & 3)
+ size += 4 - (size & 3);
+ size >>= 1;
+ _ucprop_ranges = (unsigned long *) (_ucprop_offsets + size);
+
+ /*
+ * Load the offset array.
+ */
+ fread((char *) _ucprop_offsets, sizeof(unsigned short), size, in);
+
+ /*
+ * Do an endian swap if necessary. Don't forget there is an extra node on
+ * the end with the final index.
+ */
+ if (hdr.bom == 0xfffe) {
+ for (i = 0; i <= _ucprop_size; i++)
+ _ucprop_offsets[i] = endian_short(_ucprop_offsets[i]);
+ }
+
+ /*
+ * Load the ranges. The number of elements is in the last array position
+ * of the offsets.
+ */
+ fread((char *) _ucprop_ranges, sizeof(unsigned long),
+ _ucprop_offsets[_ucprop_size], in);
+
+ fclose(in);
+
+ /*
+ * Do an endian swap if necessary.
+ */
+ if (hdr.bom == 0xfffe) {
+ for (i = 0; i < _ucprop_offsets[_ucprop_size]; i++)
+ _ucprop_ranges[i] = endian_long(_ucprop_ranges[i]);
+ }
+}
+
+static void
+#ifdef __STDC__
+_ucprop_unload(void)
+#else
+_ucprop_unload()
+#endif
+{
+ if (_ucprop_size == 0)
+ return;
+
+ /*
+ * Only need to free the offsets because the memory is allocated as a
+ * single block.
+ */
+ free((char *) _ucprop_offsets);
+ _ucprop_size = 0;
+}
+
+static int
+#ifdef __STDC__
+_ucprop_lookup(unsigned long code, unsigned long n)
+#else
+_ucprop_lookup(code, n)
+unsigned long code, n;
+#endif
+{
+ long l, r, m;
+
+ /*
+ * There is an extra node on the end of the offsets to allow this routine
+ * to work right. If the index is 0xffff, then there are no nodes for the
+ * property.
+ */
+ if ((l = _ucprop_offsets[n]) == 0xffff)
+ return 0;
+
+ /*
+ * Locate the next offset that is not 0xffff. The sentinel at the end of
+ * the array is the max index value.
+ */
+ for (m = 1;
+ n + m < _ucprop_size && _ucprop_offsets[n + m] == 0xffff; m++) ;
+
+ r = _ucprop_offsets[n + m] - 1;
+
+ while (l <= r) {
+ /*
+ * Determine a "mid" point and adjust to make sure the mid point is at
+ * the beginning of a range pair.
+ */
+ m = (l + r) >> 1;
+ m -= (m & 1);
+ if (code > _ucprop_ranges[m + 1])
+ l = m + 2;
+ else if (code < _ucprop_ranges[m])
+ r = m - 2;
+ else if (code >= _ucprop_ranges[m] && code <= _ucprop_ranges[m + 1])
+ return 1;
+ }
+ return 0;
+}
+
+int
+#ifdef __STDC__
+ucisprop(unsigned long code, unsigned long mask1, unsigned long mask2)
+#else
+ucisprop(code, mask1, mask2)
+unsigned long code, mask1, mask2;
+#endif
+{
+ unsigned long i;
+
+ if (mask1 == 0 && mask2 == 0)
+ return 0;
+
+ for (i = 0; mask1 && i < 32; i++) {
+ if ((mask1 & masks32[i]) && _ucprop_lookup(code, i))
+ return 1;
+ }
+
+ for (i = 32; mask2 && i < _ucprop_size; i++) {
+ if ((mask2 & masks32[i & 31]) && _ucprop_lookup(code, i))
+ return 1;
+ }
+
+ return 0;
+}
+
+/**************************************************************************
+ *
+ * Support for case mapping.
+ *
+ **************************************************************************/
+
+static unsigned long _uccase_size;
+static unsigned short _uccase_len[2];
+static unsigned long *_uccase_map;
+
+static void
+#ifdef __STDC__
+_uccase_load(char *paths, int reload)
+#else
+_uccase_load(paths, reload)
+char *paths;
+int reload;
+#endif
+{
+ FILE *in;
+ unsigned long i;
+ _ucheader_t hdr;
+
+ if (_uccase_size > 0) {
+ if (!reload)
+ /*
+ * The case mappings have already been loaded.
+ */
+ return;
+
+ free((char *) _uccase_map);
+ _uccase_size = 0;
+ }
+
+ if ((in = _ucopenfile(paths, "case.dat", "rb")) == 0)
+ return;
+
+ /*
+ * Load the header.
+ */
+ fread((char *) &hdr, sizeof(_ucheader_t), 1, in);
+
+ if (hdr.bom == 0xfffe) {
+ hdr.cnt = endian_short(hdr.cnt);
+ hdr.size.len[0] = endian_short(hdr.size.len[0]);
+ hdr.size.len[1] = endian_short(hdr.size.len[1]);
+ }
+
+ /*
+ * Set the node count and lengths of the upper and lower case mapping
+ * tables.
+ */
+ _uccase_size = hdr.cnt * 3;
+ _uccase_len[0] = hdr.size.len[0] * 3;
+ _uccase_len[1] = hdr.size.len[1] * 3;
+
+ _uccase_map = (unsigned long *)
+ malloc(_uccase_size * sizeof(unsigned long));
+
+ /*
+ * Load the case mapping table.
+ */
+ fread((char *) _uccase_map, sizeof(unsigned long), _uccase_size, in);
+
+ /*
+ * Do an endian swap if necessary.
+ */
+ if (hdr.bom == 0xfffe) {
+ for (i = 0; i < _uccase_size; i++)
+ _uccase_map[i] = endian_long(_uccase_map[i]);
+ }
+}
+
+static void
+#ifdef __STDC__
+_uccase_unload(void)
+#else
+_uccase_unload()
+#endif
+{
+ if (_uccase_size == 0)
+ return;
+
+ free((char *) _uccase_map);
+ _uccase_size = 0;
+}
+
+static unsigned long
+#ifdef __STDC__
+_uccase_lookup(unsigned long code, long l, long r, int field)
+#else
+_uccase_lookup(code, l, r, field)
+unsigned long code;
+long l, r;
+int field;
+#endif
+{
+ long m;
+
+ /*
+ * Do the binary search.
+ */
+ while (l <= r) {
+ /*
+ * Determine a "mid" point and adjust to make sure the mid point is at
+ * the beginning of a case mapping triple.
+ */
+ m = (l + r) >> 1;
+ m -= (m % 3);
+ if (code > _uccase_map[m])
+ l = m + 3;
+ else if (code < _uccase_map[m])
+ r = m - 3;
+ else if (code == _uccase_map[m])
+ return _uccase_map[m + field];
+ }
+
+ return code;
+}
+
+unsigned long
+#ifdef __STDC__
+uctoupper(unsigned long code)
+#else
+uctoupper(code)
+unsigned long code;
+#endif
+{
+ int field;
+ long l, r;
+
+ if (ucisupper(code))
+ return code;
+
+ if (ucislower(code)) {
+ /*
+ * The character is lower case.
+ */
+ field = 1;
+ l = _uccase_len[0];
+ r = (l + _uccase_len[1]) - 1;
+ } else {
+ /*
+ * The character is title case.
+ */
+ field = 2;
+ l = _uccase_len[0] + _uccase_len[1];
+ r = _uccase_size - 1;
+ }
+ return _uccase_lookup(code, l, r, field);
+}
+
+unsigned long
+#ifdef __STDC__
+uctolower(unsigned long code)
+#else
+uctolower(code)
+unsigned long code;
+#endif
+{
+ int field;
+ long l, r;
+
+ if (ucislower(code))
+ return code;
+
+ if (ucisupper(code)) {
+ /*
+ * The character is upper case.
+ */
+ field = 1;
+ l = 0;
+ r = _uccase_len[0] - 1;
+ } else {
+ /*
+ * The character is title case.
+ */
+ field = 2;
+ l = _uccase_len[0] + _uccase_len[1];
+ r = _uccase_size - 1;
+ }
+ return _uccase_lookup(code, l, r, field);
+}
+
+unsigned long
+#ifdef __STDC__
+uctotitle(unsigned long code)
+#else
+uctotitle(code)
+unsigned long code;
+#endif
+{
+ int field;
+ long l, r;
+
+ if (ucistitle(code))
+ return code;
+
+ /*
+ * The offset will always be the same for converting to title case.
+ */
+ field = 2;
+
+ if (ucisupper(code)) {
+ /*
+ * The character is upper case.
+ */
+ l = 0;
+ r = _uccase_len[0] - 1;
+ } else {
+ /*
+ * The character is lower case.
+ */
+ l = _uccase_len[0];
+ r = (l + _uccase_len[1]) - 1;
+ }
+ return _uccase_lookup(code, l, r, field);
+}
+
+/**************************************************************************
+ *
+ * Support for decompositions.
+ *
+ **************************************************************************/
+
+static unsigned long _ucdcmp_size;
+static unsigned long *_ucdcmp_nodes;
+static unsigned long *_ucdcmp_decomp;
+
+static void
+#ifdef __STDC__
+_ucdcmp_load(char *paths, int reload)
+#else
+_ucdcmp_load(paths, reload)
+char *paths;
+int reload;
+#endif
+{
+ FILE *in;
+ unsigned long size, i;
+ _ucheader_t hdr;
+
+ if (_ucdcmp_size > 0) {
+ if (!reload)
+ /*
+ * The decompositions have already been loaded.
+ */
+ return;
+
+ free((char *) _ucdcmp_nodes);
+ _ucdcmp_size = 0;
+ }
+
+ if ((in = _ucopenfile(paths, "decomp.dat", "rb")) == 0)
+ return;
+
+ /*
+ * Load the header.
+ */
+ fread((char *) &hdr, sizeof(_ucheader_t), 1, in);
+
+ if (hdr.bom == 0xfffe) {
+ hdr.cnt = endian_short(hdr.cnt);
+ hdr.size.bytes = endian_long(hdr.size.bytes);
+ }
+
+ _ucdcmp_size = hdr.cnt << 1;
+ _ucdcmp_nodes = (unsigned long *) malloc(hdr.size.bytes);
+ _ucdcmp_decomp = _ucdcmp_nodes + (_ucdcmp_size + 1);
+
+ /*
+ * Read the decomposition data in.
+ */
+ size = hdr.size.bytes / sizeof(unsigned long);
+ fread((char *) _ucdcmp_nodes, sizeof(unsigned long), size, in);
+
+ /*
+ * Do an endian swap if necessary.
+ */
+ if (hdr.bom == 0xfffe) {
+ for (i = 0; i < size; i++)
+ _ucdcmp_nodes[i] = endian_long(_ucdcmp_nodes[i]);
+ }
+}
+
+static void
+#ifdef __STDC__
+_ucdcmp_unload(void)
+#else
+_ucdcmp_unload()
+#endif
+{
+ if (_ucdcmp_size == 0)
+ return;
+
+ /*
+ * Only need to free the offsets because the memory is allocated as a
+ * single block.
+ */
+ free((char *) _ucdcmp_nodes);
+ _ucdcmp_size = 0;
+}
+
+int
+#ifdef __STDC__
+ucdecomp(unsigned long code, unsigned long *num, unsigned long **decomp)
+#else
+ucdecomp(code, num, decomp)
+unsigned long code, *num, **decomp;
+#endif
+{
+ long l, r, m;
+
+ l = 0;
+ r = _ucdcmp_nodes[_ucdcmp_size] - 1;
+
+ while (l <= r) {
+ /*
+ * Determine a "mid" point and adjust to make sure the mid point is at
+ * the beginning of a code+offset pair.
+ */
+ m = (l + r) >> 1;
+ m -= (m & 1);
+ if (code > _ucdcmp_nodes[m])
+ l = m + 2;
+ else if (code < _ucdcmp_nodes[m])
+ r = m - 2;
+ else if (code == _ucdcmp_nodes[m]) {
+ *num = _ucdcmp_nodes[m + 3] - _ucdcmp_nodes[m + 1];
+ *decomp = &_ucdcmp_decomp[_ucdcmp_nodes[m + 1]];
+ return 1;
+ }
+ }
+ return 0;
+}
+
+int
+#ifdef __STDC__
+ucdecomp_hangul(unsigned long code, unsigned long *num, unsigned long decomp[])
+#else
+ucdecomp_hangul(code, num, decomp)
+unsigned long code, *num, decomp[];
+#endif
+{
+ if (!ucishangul(code))
+ return 0;
+
+ code -= 0xac00;
+ decomp[0] = 0x1100 + (unsigned long) (code / 588);
+ decomp[1] = 0x1161 + (unsigned long) ((code % 588) / 28);
+ decomp[2] = 0x11a7 + (unsigned long) (code % 28);
+ *num = (decomp[2] != 0x11a7) ? 3 : 2;
+
+ return 1;
+}
+
+/**************************************************************************
+ *
+ * Support for combining classes.
+ *
+ **************************************************************************/
+
+static unsigned long _uccmcl_size;
+static unsigned long *_uccmcl_nodes;
+
+static void
+#ifdef __STDC__
+_uccmcl_load(char *paths, int reload)
+#else
+_uccmcl_load(paths, reload)
+char *paths;
+int reload;
+#endif
+{
+ FILE *in;
+ unsigned long i;
+ _ucheader_t hdr;
+
+ if (_uccmcl_size > 0) {
+ if (!reload)
+ /*
+ * The combining classes have already been loaded.
+ */
+ return;
+
+ free((char *) _uccmcl_nodes);
+ _uccmcl_size = 0;
+ }
+
+ if ((in = _ucopenfile(paths, "cmbcl.dat", "rb")) == 0)
+ return;
+
+ /*
+ * Load the header.
+ */
+ fread((char *) &hdr, sizeof(_ucheader_t), 1, in);
+
+ if (hdr.bom == 0xfffe) {
+ hdr.cnt = endian_short(hdr.cnt);
+ hdr.size.bytes = endian_long(hdr.size.bytes);
+ }
+
+ _uccmcl_size = hdr.cnt * 3;
+ _uccmcl_nodes = (unsigned long *) malloc(hdr.size.bytes);
+
+ /*
+ * Read the combining classes in.
+ */
+ fread((char *) _uccmcl_nodes, sizeof(unsigned long), _uccmcl_size, in);
+
+ /*
+ * Do an endian swap if necessary.
+ */
+ if (hdr.bom == 0xfffe) {
+ for (i = 0; i < _uccmcl_size; i++)
+ _uccmcl_nodes[i] = endian_long(_uccmcl_nodes[i]);
+ }
+}
+
+static void
+#ifdef __STDC__
+_uccmcl_unload(void)
+#else
+_uccmcl_unload()
+#endif
+{
+ if (_uccmcl_size == 0)
+ return;
+
+ free((char *) _uccmcl_nodes);
+ _uccmcl_size = 0;
+}
+
+unsigned long
+#ifdef __STDC__
+uccombining_class(unsigned long code)
+#else
+uccombining_class(code)
+unsigned long code;
+#endif
+{
+ long l, r, m;
+
+ l = 0;
+ r = _uccmcl_size - 1;
+
+ while (l <= r) {
+ m = (l + r) >> 1;
+ m -= (m % 3);
+ if (code > _uccmcl_nodes[m + 1])
+ l = m + 3;
+ else if (code < _uccmcl_nodes[m])
+ r = m - 3;
+ else if (code >= _uccmcl_nodes[m] && code <= _uccmcl_nodes[m + 1])
+ return _uccmcl_nodes[m + 2];
+ }
+ return 0;
+}
+
+/**************************************************************************
+ *
+ * Support for numeric values.
+ *
+ **************************************************************************/
+
+static unsigned long *_ucnum_nodes;
+static unsigned long _ucnum_size;
+static short *_ucnum_vals;
+
+static void
+#ifdef __STDC__
+_ucnumb_load(char *paths, int reload)
+#else
+_ucnumb_load(paths, reload)
+char *paths;
+int reload;
+#endif
+{
+ FILE *in;
+ unsigned long size, i;
+ _ucheader_t hdr;
+
+ if (_ucnum_size > 0) {
+ if (!reload)
+ /*
+ * The numbers have already been loaded.
+ */
+ return;
+
+ free((char *) _ucnum_nodes);
+ _ucnum_size = 0;
+ }
+
+ if ((in = _ucopenfile(paths, "num.dat", "rb")) == 0)
+ return;
+
+ /*
+ * Load the header.
+ */
+ fread((char *) &hdr, sizeof(_ucheader_t), 1, in);
+
+ if (hdr.bom == 0xfffe) {
+ hdr.cnt = endian_short(hdr.cnt);
+ hdr.size.bytes = endian_long(hdr.size.bytes);
+ }
+
+ _ucnum_size = hdr.cnt;
+ _ucnum_nodes = (unsigned long *) malloc(hdr.size.bytes);
+ _ucnum_vals = (short *) (_ucnum_nodes + _ucnum_size);
+
+ /*
+ * Read the combining classes in.
+ */
+ fread((char *) _ucnum_nodes, sizeof(unsigned char), hdr.size.bytes, in);
+
+ /*
+ * Do an endian swap if necessary.
+ */
+ if (hdr.bom == 0xfffe) {
+ for (i = 0; i < _ucnum_size; i++)
+ _ucnum_nodes[i] = endian_long(_ucnum_nodes[i]);
+
+ /*
+ * Determine the number of values that have to be adjusted.
+ */
+ size = (hdr.size.bytes -
+ (_ucnum_size * (sizeof(unsigned long) << 1))) /
+ sizeof(short);
+
+ for (i = 0; i < size; i++)
+ _ucnum_vals[i] = endian_short(_ucnum_vals[i]);
+ }
+}
+
+static void
+#ifdef __STDC__
+_ucnumb_unload(void)
+#else
+_ucnumb_unload()
+#endif
+{
+ if (_ucnum_size == 0)
+ return;
+
+ free((char *) _ucnum_nodes);
+ _ucnum_size = 0;
+}
+
+int
+#ifdef __STDC__
+ucnumber_lookup(unsigned long code, struct ucnumber *num)
+#else
+ucnumber_lookup(code, num)
+unsigned long code;
+struct ucnumber *num;
+#endif
+{
+ long l, r, m;
+ short *vp;
+
+ l = 0;
+ r = _ucnum_size - 1;
+ while (l <= r) {
+ /*
+ * Determine a "mid" point and adjust to make sure the mid point is at
+ * the beginning of a code+offset pair.
+ */
+ m = (l + r) >> 1;
+ m -= (m & 1);
+ if (code > _ucnum_nodes[m])
+ l = m + 2;
+ else if (code < _ucnum_nodes[m])
+ r = m - 2;
+ else {
+ vp = _ucnum_vals + _ucnum_nodes[m + 1];
+ num->numerator = (int) *vp++;
+ num->denominator = (int) *vp;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+int
+#ifdef __STDC__
+ucdigit_lookup(unsigned long code, int *digit)
+#else
+ucdigit_lookup(code, digit)
+unsigned long code;
+int *digit;
+#endif
+{
+ long l, r, m;
+ short *vp;
+
+ l = 0;
+ r = _ucnum_size - 1;
+ while (l <= r) {
+ /*
+ * Determine a "mid" point and adjust to make sure the mid point is at
+ * the beginning of a code+offset pair.
+ */
+ m = (l + r) >> 1;
+ m -= (m & 1);
+ if (code > _ucnum_nodes[m])
+ l = m + 2;
+ else if (code < _ucnum_nodes[m])
+ r = m - 2;
+ else {
+ vp = _ucnum_vals + _ucnum_nodes[m + 1];
+ if (*vp == *(vp + 1)) {
+ *digit = *vp;
+ return 1;
+ }
+ return 0;
+ }
+ }
+ return 0;
+}
+
+struct ucnumber
+#ifdef __STDC__
+ucgetnumber(unsigned long code)
+#else
+ucgetnumber(code)
+unsigned long code;
+#endif
+{
+ struct ucnumber num;
+
+ /*
+ * Initialize with some arbitrary value, because the caller simply cannot
+ * tell for sure if the code is a number without calling the ucisnumber()
+ * macro before calling this function.
+ */
+ num.numerator = num.denominator = -111;
+
+ (void) ucnumber_lookup(code, &num);
+
+ return num;
+}
+
+int
+#ifdef __STDC__
+ucgetdigit(unsigned long code)
+#else
+ucgetdigit(code)
+unsigned long code;
+#endif
+{
+ int dig;
+
+ /*
+ * Initialize with some arbitrary value, because the caller simply cannot
+ * tell for sure if the code is a number without calling the ucisdigit()
+ * macro before calling this function.
+ */
+ dig = -111;
+
+ (void) ucdigit_lookup(code, &dig);
+
+ return dig;
+}
+
+/**************************************************************************
+ *
+ * Setup and cleanup routines.
+ *
+ **************************************************************************/
+
+void
+#ifdef __STDC__
+ucdata_load(char *paths, int masks)
+#else
+ucdata_load(paths, masks)
+char *paths;
+int masks;
+#endif
+{
+ if (masks & UCDATA_CTYPE)
+ _ucprop_load(paths, 0);
+ if (masks & UCDATA_CASE)
+ _uccase_load(paths, 0);
+ if (masks & UCDATA_DECOMP)
+ _ucdcmp_load(paths, 0);
+ if (masks & UCDATA_CMBCL)
+ _uccmcl_load(paths, 0);
+ if (masks & UCDATA_NUM)
+ _ucnumb_load(paths, 0);
+}
+
+void
+#ifdef __STDC__
+ucdata_unload(int masks)
+#else
+ucdata_unload(masks)
+int masks;
+#endif
+{
+ if (masks & UCDATA_CTYPE)
+ _ucprop_unload();
+ if (masks & UCDATA_CASE)
+ _uccase_unload();
+ if (masks & UCDATA_DECOMP)
+ _ucdcmp_unload();
+ if (masks & UCDATA_CMBCL)
+ _uccmcl_unload();
+ if (masks & UCDATA_NUM)
+ _ucnumb_unload();
+}
+
+void
+#ifdef __STDC__
+ucdata_reload(char *paths, int masks)
+#else
+ucdata_reload(paths, masks)
+char *paths;
+int masks;
+#endif
+{
+ if (masks & UCDATA_CTYPE)
+ _ucprop_load(paths, 1);
+ if (masks & UCDATA_CASE)
+ _uccase_load(paths, 1);
+ if (masks & UCDATA_DECOMP)
+ _ucdcmp_load(paths, 1);
+ if (masks & UCDATA_CMBCL)
+ _uccmcl_load(paths, 1);
+ if (masks & UCDATA_NUM)
+ _ucnumb_load(paths, 1);
+}
+
+#ifdef TEST
+
+void
+#ifdef __STDC__
+main(void)
+#else
+main()
+#endif
+{
+ int dig;
+ unsigned long i, lo, *dec;
+ struct ucnumber num;
+
+ ucdata_setup(".");
+
+ if (ucisweak(0x30))
+ printf("WEAK\n");
+ else
+ printf("NOT WEAK\n");
+
+ printf("LOWER 0x%04lX\n", uctolower(0xff3a));
+ printf("UPPER 0x%04lX\n", uctoupper(0xff5a));
+
+ if (ucisalpha(0x1d5))
+ printf("ALPHA\n");
+ else
+ printf("NOT ALPHA\n");
+
+ if (ucisupper(0x1d5)) {
+ printf("UPPER\n");
+ lo = uctolower(0x1d5);
+ printf("0x%04lx\n", lo);
+ lo = uctotitle(0x1d5);
+ printf("0x%04lx\n", lo);
+ } else
+ printf("NOT UPPER\n");
+
+ if (ucistitle(0x1d5))
+ printf("TITLE\n");
+ else
+ printf("NOT TITLE\n");
+
+ if (uciscomposite(0x1d5))
+ printf("COMPOSITE\n");
+ else
+ printf("NOT COMPOSITE\n");
+
+ if (ucdecomp(0x1d5, &lo, &dec)) {
+ for (i = 0; i < lo; i++)
+ printf("0x%04lx ", dec[i]);
+ putchar('\n');
+ }
+
+ if ((lo = uccombining_class(0x41)) != 0)
+ printf("0x41 CCL %ld\n", lo);
+
+ if (ucisxdigit(0xfeff))
+ printf("0xFEFF HEX DIGIT\n");
+ else
+ printf("0xFEFF NOT HEX DIGIT\n");
+
+ if (ucisdefined(0x10000))
+ printf("0x10000 DEFINED\n");
+ else
+ printf("0x10000 NOT DEFINED\n");
+
+ if (ucnumber_lookup(0x30, &num)) {
+ if (num.numerator != num.denominator)
+ printf("UCNUMBER: 0x30 = %d/%d\n", num.numerator, num.denominator);
+ else
+ printf("UCNUMBER: 0x30 = %d\n", num.numerator);
+ } else
+ printf("UCNUMBER: 0x30 NOT A NUMBER\n");
+
+ if (ucnumber_lookup(0xbc, &num)) {
+ if (num.numerator != num.denominator)
+ printf("UCNUMBER: 0xbc = %d/%d\n", num.numerator, num.denominator);
+ else
+ printf("UCNUMBER: 0xbc = %d\n", num.numerator);
+ } else
+ printf("UCNUMBER: 0xbc NOT A NUMBER\n");
+
+
+ if (ucnumber_lookup(0xff19, &num)) {
+ if (num.numerator != num.denominator)
+ printf("UCNUMBER: 0xff19 = %d/%d\n", num.numerator, num.denominator);
+ else
+ printf("UCNUMBER: 0xff19 = %d\n", num.numerator);
+ } else
+ printf("UCNUMBER: 0xff19 NOT A NUMBER\n");
+
+ if (ucnumber_lookup(0x4e00, &num)) {
+ if (num.numerator != num.denominator)
+ printf("UCNUMBER: 0x4e00 = %d/%d\n", num.numerator, num.denominator);
+ else
+ printf("UCNUMBER: 0x4e00 = %d\n", num.numerator);
+ } else
+ printf("UCNUMBER: 0x4e00 NOT A NUMBER\n");
+
+ if (ucdigit_lookup(0x06f9, &dig))
+ printf("UCDIGIT: 0x6f9 = %d\n", dig);
+ else
+ printf("UCDIGIT: 0x6f9 NOT A NUMBER\n");
+
+ dig = ucgetdigit(0x0969);
+ printf("UCGETDIGIT: 0x969 = %d\n", dig);
+
+ num = ucgetnumber(0x30);
+ if (num.numerator != num.denominator)
+ printf("UCGETNUMBER: 0x30 = %d/%d\n", num.numerator, num.denominator);
+ else
+ printf("UCGETNUMBER: 0x30 = %d\n", num.numerator);
+
+ num = ucgetnumber(0xbc);
+ if (num.numerator != num.denominator)
+ printf("UCGETNUMBER: 0xbc = %d/%d\n", num.numerator, num.denominator);
+ else
+ printf("UCGETNUMBER: 0xbc = %d\n", num.numerator);
+
+ num = ucgetnumber(0xff19);
+ if (num.numerator != num.denominator)
+ printf("UCGETNUMBER: 0xff19 = %d/%d\n", num.numerator, num.denominator);
+ else
+ printf("UCGETNUMBER: 0xff19 = %d\n", num.numerator);
+
+ ucdata_cleanup();
+ exit(0);
+}
+
+#endif /* TEST */
diff --git a/intl/unicharutil/ucdata.h b/intl/unicharutil/ucdata.h
new file mode 100644
index 000000000..4b765cbd3
--- /dev/null
+++ b/intl/unicharutil/ucdata.h
@@ -0,0 +1,306 @@
+/*
+ * Copyright 1996, 1997, 1998 Computing Research Labs,
+ * New Mexico State University
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
+ * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifndef _h_ucdata
+#define _h_ucdata
+
+/*
+ * $Id: ucdata.h,v 1.1 1999/01/08 00:19:12 ftang%netscape.com Exp $
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#undef __
+#ifdef __STDC__
+#define __(x) x
+#else
+#define __(x) ()
+#endif
+
+#define UCDATA_VERSION "1.9"
+
+/**************************************************************************
+ *
+ * Masks and macros for character properties.
+ *
+ **************************************************************************/
+
+/*
+ * Values that can appear in the `mask1' parameter of the ucisprop()
+ * function.
+ */
+#define UC_MN 0x00000001 /* Mark, Non-Spacing */
+#define UC_MC 0x00000002 /* Mark, Spacing Combining */
+#define UC_ME 0x00000004 /* Mark, Enclosing */
+#define UC_ND 0x00000008 /* Number, Decimal Digit */
+#define UC_NL 0x00000010 /* Number, Letter */
+#define UC_NO 0x00000020 /* Number, Other */
+#define UC_ZS 0x00000040 /* Separator, Space */
+#define UC_ZL 0x00000080 /* Separator, Line */
+#define UC_ZP 0x00000100 /* Separator, Paragraph */
+#define UC_CC 0x00000200 /* Other, Control */
+#define UC_CF 0x00000400 /* Other, Format */
+#define UC_OS 0x00000800 /* Other, Surrogate */
+#define UC_CO 0x00001000 /* Other, Private Use */
+#define UC_CN 0x00002000 /* Other, Not Assigned */
+#define UC_LU 0x00004000 /* Letter, Uppercase */
+#define UC_LL 0x00008000 /* Letter, Lowercase */
+#define UC_LT 0x00010000 /* Letter, Titlecase */
+#define UC_LM 0x00020000 /* Letter, Modifier */
+#define UC_LO 0x00040000 /* Letter, Other */
+#define UC_PC 0x00080000 /* Punctuation, Connector */
+#define UC_PD 0x00100000 /* Punctuation, Dash */
+#define UC_PS 0x00200000 /* Punctuation, Open */
+#define UC_PE 0x00400000 /* Punctuation, Close */
+#define UC_PO 0x00800000 /* Punctuation, Other */
+#define UC_SM 0x01000000 /* Symbol, Math */
+#define UC_SC 0x02000000 /* Symbol, Currency */
+#define UC_SK 0x04000000 /* Symbol, Modifier */
+#define UC_SO 0x08000000 /* Symbol, Other */
+#define UC_L 0x10000000 /* Left-To-Right */
+#define UC_R 0x20000000 /* Right-To-Left */
+#define UC_EN 0x40000000 /* European Number */
+#define UC_ES 0x80000000 /* European Number Separator */
+
+/*
+ * Values that can appear in the `mask2' parameter of the ucisprop()
+ * function.
+ */
+#define UC_ET 0x00000001 /* European Number Terminator */
+#define UC_AN 0x00000002 /* Arabic Number */
+#define UC_CS 0x00000004 /* Common Number Separator */
+#define UC_B 0x00000008 /* Block Separator */
+#define UC_S 0x00000010 /* Segment Separator */
+#define UC_WS 0x00000020 /* Whitespace */
+#define UC_ON 0x00000040 /* Other Neutrals */
+/*
+ * Implementation specific character properties.
+ */
+#define UC_CM 0x00000080 /* Composite */
+#define UC_NB 0x00000100 /* Non-Breaking */
+#define UC_SY 0x00000200 /* Symmetric */
+#define UC_HD 0x00000400 /* Hex Digit */
+#define UC_QM 0x00000800 /* Quote Mark */
+#define UC_MR 0x00001000 /* Mirroring */
+#define UC_SS 0x00002000 /* Space, other */
+
+#define UC_CP 0x00004000 /* Defined */
+
+/*
+ * Added for UnicodeData-2.1.3.
+ */
+#define UC_PI 0x00008000 /* Punctuation, Initial */
+#define UC_PF 0x00010000 /* Punctuation, Final */
+
+/*
+ * This is the primary function for testing to see if a character has some set
+ * of properties. The macros that test for various character properties all
+ * call this function with some set of masks.
+ */
+extern int ucisprop __((unsigned long code, unsigned long mask1,
+ unsigned long mask2));
+
+#define ucisalpha(cc) ucisprop(cc, UC_LU|UC_LL|UC_LM|UC_LO|UC_LT, 0)
+#define ucisdigit(cc) ucisprop(cc, UC_ND, 0)
+#define ucisalnum(cc) ucisprop(cc, UC_LU|UC_LL|UC_LM|UC_LO|UC_LT|UC_ND, 0)
+#define uciscntrl(cc) ucisprop(cc, UC_CC|UC_CF, 0)
+#define ucisspace(cc) ucisprop(cc, UC_ZS|UC_SS, 0)
+#define ucisblank(cc) ucisprop(cc, UC_ZS, 0)
+#define ucispunct(cc) ucisprop(cc, UC_PD|UC_PS|UC_PE|UC_PO, UC_PI|UC_PF)
+#define ucisgraph(cc) ucisprop(cc, UC_MN|UC_MC|UC_ME|UC_ND|UC_NL|UC_NO|\
+ UC_LU|UC_LL|UC_LT|UC_LM|UC_LO|UC_PC|UC_PD|\
+ UC_PS|UC_PE|UC_PO|UC_SM|UC_SM|UC_SC|UC_SK|\
+ UC_SO, UC_PI|UC_PF)
+#define ucisprint(cc) ucisprop(cc, UC_MN|UC_MC|UC_ME|UC_ND|UC_NL|UC_NO|\
+ UC_LU|UC_LL|UC_LT|UC_LM|UC_LO|UC_PC|UC_PD|\
+ UC_PS|UC_PE|UC_PO|UC_SM|UC_SM|UC_SC|UC_SK|\
+ UC_SO|UC_ZS, UC_PI|UC_PF)
+#define ucisupper(cc) ucisprop(cc, UC_LU, 0)
+#define ucislower(cc) ucisprop(cc, UC_LL, 0)
+#define ucistitle(cc) ucisprop(cc, UC_LT, 0)
+#define ucisxdigit(cc) ucisprop(cc, 0, UC_HD)
+
+#define ucisisocntrl(cc) ucisprop(cc, UC_CC, 0)
+#define ucisfmtcntrl(cc) ucisprop(cc, UC_CF, 0)
+
+#define ucissymbol(cc) ucisprop(cc, UC_SM|UC_SC|UC_SO|UC_SK, 0)
+#define ucisnumber(cc) ucisprop(cc, UC_ND|UC_NO|UC_NL, 0)
+#define ucisnonspacing(cc) ucisprop(cc, UC_MN, 0)
+#define ucisopenpunct(cc) ucisprop(cc, UC_PS, 0)
+#define ucisclosepunct(cc) ucisprop(cc, UC_PE, 0)
+#define ucisinitialpunct(cc) ucisprop(cc, 0, UC_PI)
+#define ucisfinalpunct(cc) ucisprop(cc, 0, UC_PF)
+
+#define uciscomposite(cc) ucisprop(cc, 0, UC_CM)
+#define ucishex(cc) ucisprop(cc, 0, UC_HD)
+#define ucisquote(cc) ucisprop(cc, 0, UC_QM)
+#define ucissymmetric(cc) ucisprop(cc, 0, UC_SY)
+#define ucismirroring(cc) ucisprop(cc, 0, UC_MR)
+#define ucisnonbreaking(cc) ucisprop(cc, 0, UC_NB)
+
+/*
+ * Directionality macros.
+ */
+#define ucisrtl(cc) ucisprop(cc, UC_R, 0)
+#define ucisltr(cc) ucisprop(cc, UC_L, 0)
+#define ucisstrong(cc) ucisprop(cc, UC_L|UC_R, 0)
+#define ucisweak(cc) ucisprop(cc, UC_EN|UC_ES, UC_ET|UC_AN|UC_CS)
+#define ucisneutral(cc) ucisprop(cc, 0, UC_B|UC_S|UC_WS|UC_ON)
+#define ucisseparator(cc) ucisprop(cc, 0, UC_B|UC_S)
+
+/*
+ * Other macros inspired by John Cowan.
+ */
+#define ucismark(cc) ucisprop(cc, UC_MN|UC_MC|UC_ME, 0)
+#define ucismodif(cc) ucisprop(cc, UC_LM, 0)
+#define ucisletnum(cc) ucisprop(cc, UC_NL, 0)
+#define ucisconnect(cc) ucisprop(cc, UC_PC, 0)
+#define ucisdash(cc) ucisprop(cc, UC_PD, 0)
+#define ucismath(cc) ucisprop(cc, UC_SM, 0)
+#define uciscurrency(cc) ucisprop(cc, UC_SC, 0)
+#define ucismodifsymbol(cc) ucisprop(cc, UC_SK, 0)
+#define ucisnsmark(cc) ucisprop(cc, UC_MN, 0)
+#define ucisspmark(cc) ucisprop(cc, UC_MC, 0)
+#define ucisenclosing(cc) ucisprop(cc, UC_ME, 0)
+#define ucisprivate(cc) ucisprop(cc, UC_CO, 0)
+#define ucissurrogate(cc) ucisprop(cc, UC_OS, 0)
+#define ucislsep(cc) ucisprop(cc, UC_ZL, 0)
+#define ucispsep(cc) ucisprop(cc, UC_ZP, 0)
+
+#define ucisidentstart(cc) ucisprop(cc, UC_LU|UC_LL|UC_LT|UC_LO|UC_NL, 0)
+#define ucisidentpart(cc) ucisprop(cc, UC_LU|UC_LL|UC_LT|UC_LO|UC_NL|\
+ UC_MN|UC_MC|UC_ND|UC_PC|UC_CF, 0)
+
+#define ucisdefined(cc) ucisprop(cc, 0, UC_CP)
+#define ucisundefined(cc) !ucisprop(cc, 0, UC_CP)
+
+/*
+ * Other miscellaneous character property macros.
+ */
+#define ucishan(cc) (((cc) >= 0x4e00 && (cc) <= 0x9fff) ||\
+ ((cc) >= 0xf900 && (cc) <= 0xfaff))
+#define ucishangul(cc) ((cc) >= 0xac00 && (cc) <= 0xd7ff)
+
+/**************************************************************************
+ *
+ * Functions for case conversion.
+ *
+ **************************************************************************/
+
+extern unsigned long uctoupper __((unsigned long code));
+extern unsigned long uctolower __((unsigned long code));
+extern unsigned long uctotitle __((unsigned long code));
+
+/**************************************************************************
+ *
+ * Functions for getting decompositions.
+ *
+ **************************************************************************/
+
+/*
+ * This routine determines if the code has a decomposition. If it returns 0,
+ * there is no decomposition. Any other value indicates a decomposition was
+ * returned.
+ */
+extern int ucdecomp __((unsigned long code, unsigned long *num,
+
+ unsigned long **decomp));
+
+/*
+ * If the code is a Hangul syllable, this routine decomposes it into the array
+ * passed. The array size should be at least 3.
+ */
+extern int ucdecomp_hangul __((unsigned long code, unsigned long *num,
+ unsigned long decomp[]));
+
+/**************************************************************************
+ *
+ * Functions for getting combining classes.
+ *
+ **************************************************************************/
+
+/*
+ * This will return the combining class for a character to be used with the
+ * Canonical Ordering algorithm.
+ */
+extern unsigned long uccombining_class __((unsigned long code));
+
+/**************************************************************************
+ *
+ * Functions for getting numbers and digits.
+ *
+ **************************************************************************/
+
+struct ucnumber {
+ int numerator;
+ int denominator;
+};
+
+extern int ucnumber_lookup __((unsigned long code, struct ucnumber *num));
+extern int ucdigit_lookup __((unsigned long code, int *digit));
+
+/*
+ * For compatibility with John Cowan's "uctype" package.
+ */
+extern struct ucnumber ucgetnumber __((unsigned long code));
+extern int ucgetdigit __((unsigned long code));
+
+/**************************************************************************
+ *
+ * Functions library initialization and cleanup.
+ *
+ **************************************************************************/
+
+/*
+ * Macros for specifying the data tables to be loaded for ucdata_load().
+ */
+#define UCDATA_CASE 0x01
+#define UCDATA_CTYPE 0x02
+#define UCDATA_DECOMP 0x04
+#define UCDATA_CMBCL 0x08
+#define UCDATA_NUM 0x10
+
+#define UCDATA_ALL (UCDATA_CASE|UCDATA_CTYPE|UCDATA_DECOMP|\
+ UCDATA_CMBCL|UCDATA_NUM)
+
+/*
+ * Functions to load, unload, and reload specific data files.
+ */
+extern void ucdata_load __((char *paths, int mask));
+extern void ucdata_unload __((int mask));
+extern void ucdata_reload __((char *paths, int mask));
+
+/*
+ * Deprecated functions, now just compatibility macros.
+ */
+#define ucdata_setup(p) ucdata_load(p, UCDATA_ALL)
+#define ucdata_cleanup() ucdata_unload(UCDATA_ALL)
+
+#undef __
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _h_ucdata */
diff --git a/intl/unicharutil/util/GreekCasing.cpp b/intl/unicharutil/util/GreekCasing.cpp
new file mode 100644
index 000000000..5c805c275
--- /dev/null
+++ b/intl/unicharutil/util/GreekCasing.cpp
@@ -0,0 +1,268 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "GreekCasing.h"
+#include "nsUnicharUtils.h"
+
+// Custom uppercase mapping for Greek; see bug 307039 for details
+#define GREEK_LOWER_ALPHA 0x03B1
+#define GREEK_LOWER_ALPHA_TONOS 0x03AC
+#define GREEK_LOWER_ALPHA_OXIA 0x1F71
+#define GREEK_LOWER_EPSILON 0x03B5
+#define GREEK_LOWER_EPSILON_TONOS 0x03AD
+#define GREEK_LOWER_EPSILON_OXIA 0x1F73
+#define GREEK_LOWER_ETA 0x03B7
+#define GREEK_LOWER_ETA_TONOS 0x03AE
+#define GREEK_LOWER_ETA_OXIA 0x1F75
+#define GREEK_LOWER_IOTA 0x03B9
+#define GREEK_LOWER_IOTA_TONOS 0x03AF
+#define GREEK_LOWER_IOTA_OXIA 0x1F77
+#define GREEK_LOWER_IOTA_DIALYTIKA 0x03CA
+#define GREEK_LOWER_IOTA_DIALYTIKA_TONOS 0x0390
+#define GREEK_LOWER_IOTA_DIALYTIKA_OXIA 0x1FD3
+#define GREEK_LOWER_OMICRON 0x03BF
+#define GREEK_LOWER_OMICRON_TONOS 0x03CC
+#define GREEK_LOWER_OMICRON_OXIA 0x1F79
+#define GREEK_LOWER_UPSILON 0x03C5
+#define GREEK_LOWER_UPSILON_TONOS 0x03CD
+#define GREEK_LOWER_UPSILON_OXIA 0x1F7B
+#define GREEK_LOWER_UPSILON_DIALYTIKA 0x03CB
+#define GREEK_LOWER_UPSILON_DIALYTIKA_TONOS 0x03B0
+#define GREEK_LOWER_UPSILON_DIALYTIKA_OXIA 0x1FE3
+#define GREEK_LOWER_OMEGA 0x03C9
+#define GREEK_LOWER_OMEGA_TONOS 0x03CE
+#define GREEK_LOWER_OMEGA_OXIA 0x1F7D
+#define GREEK_UPPER_ALPHA 0x0391
+#define GREEK_UPPER_EPSILON 0x0395
+#define GREEK_UPPER_ETA 0x0397
+#define GREEK_UPPER_IOTA 0x0399
+#define GREEK_UPPER_IOTA_DIALYTIKA 0x03AA
+#define GREEK_UPPER_OMICRON 0x039F
+#define GREEK_UPPER_UPSILON 0x03A5
+#define GREEK_UPPER_UPSILON_DIALYTIKA 0x03AB
+#define GREEK_UPPER_OMEGA 0x03A9
+#define GREEK_UPPER_ALPHA_TONOS 0x0386
+#define GREEK_UPPER_ALPHA_OXIA 0x1FBB
+#define GREEK_UPPER_EPSILON_TONOS 0x0388
+#define GREEK_UPPER_EPSILON_OXIA 0x1FC9
+#define GREEK_UPPER_ETA_TONOS 0x0389
+#define GREEK_UPPER_ETA_OXIA 0x1FCB
+#define GREEK_UPPER_IOTA_TONOS 0x038A
+#define GREEK_UPPER_IOTA_OXIA 0x1FDB
+#define GREEK_UPPER_OMICRON_TONOS 0x038C
+#define GREEK_UPPER_OMICRON_OXIA 0x1FF9
+#define GREEK_UPPER_UPSILON_TONOS 0x038E
+#define GREEK_UPPER_UPSILON_OXIA 0x1FEB
+#define GREEK_UPPER_OMEGA_TONOS 0x038F
+#define GREEK_UPPER_OMEGA_OXIA 0x1FFB
+#define COMBINING_ACUTE_ACCENT 0x0301
+#define COMBINING_DIAERESIS 0x0308
+#define COMBINING_ACUTE_TONE_MARK 0x0341
+#define COMBINING_GREEK_DIALYTIKA_TONOS 0x0344
+
+namespace mozilla {
+
+uint32_t
+GreekCasing::UpperCase(uint32_t aCh, GreekCasing::State& aState)
+{
+ switch (aCh) {
+ case GREEK_UPPER_ALPHA:
+ case GREEK_LOWER_ALPHA:
+ aState = kAlpha;
+ return GREEK_UPPER_ALPHA;
+
+ case GREEK_UPPER_EPSILON:
+ case GREEK_LOWER_EPSILON:
+ aState = kEpsilon;
+ return GREEK_UPPER_EPSILON;
+
+ case GREEK_UPPER_ETA:
+ case GREEK_LOWER_ETA:
+ aState = kEta;
+ return GREEK_UPPER_ETA;
+
+ case GREEK_UPPER_IOTA:
+ aState = kIota;
+ return GREEK_UPPER_IOTA;
+
+ case GREEK_UPPER_OMICRON:
+ case GREEK_LOWER_OMICRON:
+ aState = kOmicron;
+ return GREEK_UPPER_OMICRON;
+
+ case GREEK_UPPER_UPSILON:
+ switch (aState) {
+ case kOmicron:
+ aState = kOmicronUpsilon;
+ break;
+ default:
+ aState = kUpsilon;
+ break;
+ }
+ return GREEK_UPPER_UPSILON;
+
+ case GREEK_UPPER_OMEGA:
+ case GREEK_LOWER_OMEGA:
+ aState = kOmega;
+ return GREEK_UPPER_OMEGA;
+
+ // iota and upsilon may be the second vowel of a diphthong
+ case GREEK_LOWER_IOTA:
+ switch (aState) {
+ case kAlphaAcc:
+ case kEpsilonAcc:
+ case kOmicronAcc:
+ case kUpsilonAcc:
+ aState = kStart;
+ return GREEK_UPPER_IOTA_DIALYTIKA;
+ default:
+ break;
+ }
+ aState = kIota;
+ return GREEK_UPPER_IOTA;
+
+ case GREEK_LOWER_UPSILON:
+ switch (aState) {
+ case kAlphaAcc:
+ case kEpsilonAcc:
+ case kEtaAcc:
+ case kOmicronAcc:
+ aState = kStart;
+ return GREEK_UPPER_UPSILON_DIALYTIKA;
+ case kOmicron:
+ aState = kOmicronUpsilon;
+ break;
+ default:
+ aState = kUpsilon;
+ break;
+ }
+ return GREEK_UPPER_UPSILON;
+
+ case GREEK_UPPER_IOTA_DIALYTIKA:
+ case GREEK_LOWER_IOTA_DIALYTIKA:
+ case GREEK_UPPER_UPSILON_DIALYTIKA:
+ case GREEK_LOWER_UPSILON_DIALYTIKA:
+ case COMBINING_DIAERESIS:
+ aState = kDiaeresis;
+ return ToUpperCase(aCh);
+
+ // remove accent if it follows a vowel or diaeresis,
+ // and set appropriate state for diphthong detection
+ case COMBINING_ACUTE_ACCENT:
+ case COMBINING_ACUTE_TONE_MARK:
+ switch (aState) {
+ case kAlpha:
+ aState = kAlphaAcc;
+ return uint32_t(-1); // omit this char from result string
+ case kEpsilon:
+ aState = kEpsilonAcc;
+ return uint32_t(-1);
+ case kEta:
+ aState = kEtaAcc;
+ return uint32_t(-1);
+ case kIota:
+ aState = kIotaAcc;
+ return uint32_t(-1);
+ case kOmicron:
+ aState = kOmicronAcc;
+ return uint32_t(-1);
+ case kUpsilon:
+ aState = kUpsilonAcc;
+ return uint32_t(-1);
+ case kOmicronUpsilon:
+ aState = kStart; // this completed a diphthong
+ return uint32_t(-1);
+ case kOmega:
+ aState = kOmegaAcc;
+ return uint32_t(-1);
+ case kDiaeresis:
+ aState = kStart;
+ return uint32_t(-1);
+ default:
+ break;
+ }
+ break;
+
+ // combinations with dieresis+accent just strip the accent,
+ // and reset to start state (don't form diphthong with following vowel)
+ case GREEK_LOWER_IOTA_DIALYTIKA_TONOS:
+ case GREEK_LOWER_IOTA_DIALYTIKA_OXIA:
+ aState = kStart;
+ return GREEK_UPPER_IOTA_DIALYTIKA;
+
+ case GREEK_LOWER_UPSILON_DIALYTIKA_TONOS:
+ case GREEK_LOWER_UPSILON_DIALYTIKA_OXIA:
+ aState = kStart;
+ return GREEK_UPPER_UPSILON_DIALYTIKA;
+
+ case COMBINING_GREEK_DIALYTIKA_TONOS:
+ aState = kStart;
+ return COMBINING_DIAERESIS;
+
+ // strip accents from vowels, and note the vowel seen so that we can detect
+ // diphthongs where diaeresis needs to be added
+ case GREEK_LOWER_ALPHA_TONOS:
+ case GREEK_LOWER_ALPHA_OXIA:
+ case GREEK_UPPER_ALPHA_TONOS:
+ case GREEK_UPPER_ALPHA_OXIA:
+ aState = kAlphaAcc;
+ return GREEK_UPPER_ALPHA;
+
+ case GREEK_LOWER_EPSILON_TONOS:
+ case GREEK_LOWER_EPSILON_OXIA:
+ case GREEK_UPPER_EPSILON_TONOS:
+ case GREEK_UPPER_EPSILON_OXIA:
+ aState = kEpsilonAcc;
+ return GREEK_UPPER_EPSILON;
+
+ case GREEK_LOWER_ETA_TONOS:
+ case GREEK_LOWER_ETA_OXIA:
+ case GREEK_UPPER_ETA_TONOS:
+ case GREEK_UPPER_ETA_OXIA:
+ aState = kEtaAcc;
+ return GREEK_UPPER_ETA;
+
+ case GREEK_LOWER_IOTA_TONOS:
+ case GREEK_LOWER_IOTA_OXIA:
+ case GREEK_UPPER_IOTA_TONOS:
+ case GREEK_UPPER_IOTA_OXIA:
+ aState = kIotaAcc;
+ return GREEK_UPPER_IOTA;
+
+ case GREEK_LOWER_OMICRON_TONOS:
+ case GREEK_LOWER_OMICRON_OXIA:
+ case GREEK_UPPER_OMICRON_TONOS:
+ case GREEK_UPPER_OMICRON_OXIA:
+ aState = kOmicronAcc;
+ return GREEK_UPPER_OMICRON;
+
+ case GREEK_LOWER_UPSILON_TONOS:
+ case GREEK_LOWER_UPSILON_OXIA:
+ case GREEK_UPPER_UPSILON_TONOS:
+ case GREEK_UPPER_UPSILON_OXIA:
+ switch (aState) {
+ case kOmicron:
+ aState = kStart; // this completed a diphthong
+ break;
+ default:
+ aState = kUpsilonAcc;
+ break;
+ }
+ return GREEK_UPPER_UPSILON;
+
+ case GREEK_LOWER_OMEGA_TONOS:
+ case GREEK_LOWER_OMEGA_OXIA:
+ case GREEK_UPPER_OMEGA_TONOS:
+ case GREEK_UPPER_OMEGA_OXIA:
+ aState = kOmegaAcc;
+ return GREEK_UPPER_OMEGA;
+ }
+
+ // all other characters just reset the state, and use standard mappings
+ aState = kStart;
+ return ToUpperCase(aCh);
+}
+
+} // namespace mozilla
diff --git a/intl/unicharutil/util/GreekCasing.h b/intl/unicharutil/util/GreekCasing.h
new file mode 100644
index 000000000..3291908b5
--- /dev/null
+++ b/intl/unicharutil/util/GreekCasing.h
@@ -0,0 +1,73 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef GreekCasing_h_
+#define GreekCasing_h_
+
+#include <stdint.h>
+#include "mozilla/Attributes.h"
+
+namespace mozilla {
+
+class GreekCasing {
+ // When doing an Uppercase transform in Greek, we need to keep track of the
+ // current state while iterating through the string, to recognize and process
+ // diphthongs correctly. For clarity, we define a state for each vowel and
+ // each vowel with accent, although a few of these do not actually need any
+ // special treatment and could be folded into kStart.
+private:
+ enum GreekStates {
+ kStart,
+ kAlpha,
+ kEpsilon,
+ kEta,
+ kIota,
+ kOmicron,
+ kUpsilon,
+ kOmega,
+ kAlphaAcc,
+ kEpsilonAcc,
+ kEtaAcc,
+ kIotaAcc,
+ kOmicronAcc,
+ kUpsilonAcc,
+ kOmegaAcc,
+ kOmicronUpsilon,
+ kDiaeresis
+ };
+
+public:
+ class State {
+ public:
+ State()
+ : mState(kStart)
+ {
+ }
+
+ MOZ_IMPLICIT State(const GreekStates& aState)
+ : mState(aState)
+ {
+ }
+
+ void Reset()
+ {
+ mState = kStart;
+ }
+
+ operator GreekStates() const
+ {
+ return mState;
+ }
+
+ private:
+ GreekStates mState;
+ };
+
+ static uint32_t UpperCase(uint32_t aCh, State& aState);
+};
+
+} // namespace mozilla
+
+#endif
diff --git a/intl/unicharutil/util/ICUUtils.cpp b/intl/unicharutil/util/ICUUtils.cpp
new file mode 100644
index 000000000..2bb33d854
--- /dev/null
+++ b/intl/unicharutil/util/ICUUtils.cpp
@@ -0,0 +1,284 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifdef MOZILLA_INTERNAL_API
+#ifdef ENABLE_INTL_API
+
+#include "ICUUtils.h"
+#include "mozilla/Preferences.h"
+#include "nsIContent.h"
+#include "nsIDocument.h"
+#include "nsIToolkitChromeRegistry.h"
+#include "nsStringGlue.h"
+#include "unicode/uloc.h"
+#include "unicode/unum.h"
+
+using namespace mozilla;
+
+/**
+ * This pref just controls whether we format the number with grouping separator
+ * characters when the internal value is set or updated. It does not stop the
+ * user from typing in a number and using grouping separators.
+ */
+static bool gLocaleNumberGroupingEnabled;
+static const char LOCALE_NUMBER_GROUPING_PREF_STR[] = "dom.forms.number.grouping";
+
+static bool
+LocaleNumberGroupingIsEnabled()
+{
+ static bool sInitialized = false;
+
+ if (!sInitialized) {
+ /* check and register ourselves with the pref */
+ Preferences::AddBoolVarCache(&gLocaleNumberGroupingEnabled,
+ LOCALE_NUMBER_GROUPING_PREF_STR,
+ false);
+ sInitialized = true;
+ }
+
+ return gLocaleNumberGroupingEnabled;
+}
+
+void
+ICUUtils::LanguageTagIterForContent::GetNext(nsACString& aBCP47LangTag)
+{
+ if (mCurrentFallbackIndex < 0) {
+ mCurrentFallbackIndex = 0;
+ // Try the language specified by a 'lang'/'xml:lang' attribute on mContent
+ // or any ancestor, if such an attribute is specified:
+ nsAutoString lang;
+ mContent->GetLang(lang);
+ if (!lang.IsEmpty()) {
+ aBCP47LangTag = NS_ConvertUTF16toUTF8(lang);
+ return;
+ }
+ }
+
+ if (mCurrentFallbackIndex < 1) {
+ mCurrentFallbackIndex = 1;
+ // Else try the language specified by any Content-Language HTTP header or
+ // pragma directive:
+ nsIDocument* doc = mContent->OwnerDoc();
+ nsAutoString lang;
+ doc->GetContentLanguage(lang);
+ if (!lang.IsEmpty()) {
+ aBCP47LangTag = NS_ConvertUTF16toUTF8(lang);
+ return;
+ }
+ }
+
+ if (mCurrentFallbackIndex < 2) {
+ mCurrentFallbackIndex = 2;
+ // Else try the user-agent's locale:
+ nsCOMPtr<nsIToolkitChromeRegistry> cr =
+ mozilla::services::GetToolkitChromeRegistryService();
+ nsAutoCString uaLangTag;
+ if (cr) {
+ cr->GetSelectedLocale(NS_LITERAL_CSTRING("global"), true, uaLangTag);
+ }
+ if (!uaLangTag.IsEmpty()) {
+ aBCP47LangTag = uaLangTag;
+ return;
+ }
+ }
+
+ // TODO: Probably not worth it, but maybe have a fourth fallback to using
+ // the OS locale?
+
+ aBCP47LangTag.Truncate(); // Signal iterator exhausted
+}
+
+/* static */ bool
+ICUUtils::LocalizeNumber(double aValue,
+ LanguageTagIterForContent& aLangTags,
+ nsAString& aLocalizedValue)
+{
+ MOZ_ASSERT(aLangTags.IsAtStart(), "Don't call Next() before passing");
+
+ static const int32_t kBufferSize = 256;
+
+ UChar buffer[kBufferSize];
+
+ nsAutoCString langTag;
+ aLangTags.GetNext(langTag);
+ while (!langTag.IsEmpty()) {
+ UErrorCode status = U_ZERO_ERROR;
+ AutoCloseUNumberFormat format(unum_open(UNUM_DECIMAL, nullptr, 0,
+ langTag.get(), nullptr, &status));
+ unum_setAttribute(format, UNUM_GROUPING_USED,
+ LocaleNumberGroupingIsEnabled());
+ // ICU default is a maximum of 3 significant fractional digits. We don't
+ // want that limit, so we set it to the maximum that a double can represent
+ // (14-16 decimal fractional digits).
+ unum_setAttribute(format, UNUM_MAX_FRACTION_DIGITS, 16);
+ int32_t length = unum_formatDouble(format, aValue, buffer, kBufferSize,
+ nullptr, &status);
+ NS_ASSERTION(length < kBufferSize &&
+ status != U_BUFFER_OVERFLOW_ERROR &&
+ status != U_STRING_NOT_TERMINATED_WARNING,
+ "Need a bigger buffer?!");
+ if (U_SUCCESS(status)) {
+ ICUUtils::AssignUCharArrayToString(buffer, length, aLocalizedValue);
+ return true;
+ }
+ aLangTags.GetNext(langTag);
+ }
+ return false;
+}
+
+/* static */ double
+ICUUtils::ParseNumber(nsAString& aValue,
+ LanguageTagIterForContent& aLangTags)
+{
+ MOZ_ASSERT(aLangTags.IsAtStart(), "Don't call Next() before passing");
+
+ if (aValue.IsEmpty()) {
+ return std::numeric_limits<float>::quiet_NaN();
+ }
+
+ uint32_t length = aValue.Length();
+
+ nsAutoCString langTag;
+ aLangTags.GetNext(langTag);
+ while (!langTag.IsEmpty()) {
+ UErrorCode status = U_ZERO_ERROR;
+ AutoCloseUNumberFormat format(unum_open(UNUM_DECIMAL, nullptr, 0,
+ langTag.get(), nullptr, &status));
+ int32_t parsePos = 0;
+ static_assert(sizeof(UChar) == 2 && sizeof(nsAString::char_type) == 2,
+ "Unexpected character size - the following cast is unsafe");
+ double val = unum_parseDouble(format,
+ (const UChar*)PromiseFlatString(aValue).get(),
+ length, &parsePos, &status);
+ if (U_SUCCESS(status) && parsePos == (int32_t)length) {
+ return val;
+ }
+ aLangTags.GetNext(langTag);
+ }
+ return std::numeric_limits<float>::quiet_NaN();
+}
+
+/* static */ void
+ICUUtils::AssignUCharArrayToString(UChar* aICUString,
+ int32_t aLength,
+ nsAString& aMozString)
+{
+ // Both ICU's UnicodeString and Mozilla's nsAString use UTF-16, so we can
+ // cast here.
+
+ static_assert(sizeof(UChar) == 2 && sizeof(nsAString::char_type) == 2,
+ "Unexpected character size - the following cast is unsafe");
+
+ aMozString.Assign((const nsAString::char_type*)aICUString, aLength);
+
+ NS_ASSERTION((int32_t)aMozString.Length() == aLength, "Conversion failed");
+}
+
+/* static */ nsresult
+ICUUtils::UErrorToNsResult(const UErrorCode aErrorCode)
+{
+ if (U_SUCCESS(aErrorCode)) {
+ return NS_OK;
+ }
+
+ switch(aErrorCode) {
+ case U_ILLEGAL_ARGUMENT_ERROR:
+ return NS_ERROR_INVALID_ARG;
+
+ case U_MEMORY_ALLOCATION_ERROR:
+ return NS_ERROR_OUT_OF_MEMORY;
+
+ default:
+ return NS_ERROR_FAILURE;
+ }
+}
+
+#if 0
+/* static */ Locale
+ICUUtils::BCP47CodeToLocale(const nsAString& aBCP47Code)
+{
+ MOZ_ASSERT(!aBCP47Code.IsEmpty(), "Don't pass an empty BCP 47 code");
+
+ Locale locale;
+ locale.setToBogus();
+
+ // BCP47 codes are guaranteed to be ASCII, so lossy conversion is okay
+ NS_LossyConvertUTF16toASCII bcp47code(aBCP47Code);
+
+ UErrorCode status = U_ZERO_ERROR;
+ int32_t needed;
+
+ char localeID[256];
+ needed = uloc_forLanguageTag(bcp47code.get(), localeID,
+ PR_ARRAY_SIZE(localeID) - 1, nullptr,
+ &status);
+ MOZ_ASSERT(needed < int32_t(PR_ARRAY_SIZE(localeID)) - 1,
+ "Need a bigger buffer");
+ if (needed <= 0 || U_FAILURE(status)) {
+ return locale;
+ }
+
+ char lang[64];
+ needed = uloc_getLanguage(localeID, lang, PR_ARRAY_SIZE(lang) - 1,
+ &status);
+ MOZ_ASSERT(needed < int32_t(PR_ARRAY_SIZE(lang)) - 1,
+ "Need a bigger buffer");
+ if (needed <= 0 || U_FAILURE(status)) {
+ return locale;
+ }
+
+ char country[64];
+ needed = uloc_getCountry(localeID, country, PR_ARRAY_SIZE(country) - 1,
+ &status);
+ MOZ_ASSERT(needed < int32_t(PR_ARRAY_SIZE(country)) - 1,
+ "Need a bigger buffer");
+ if (needed > 0 && U_SUCCESS(status)) {
+ locale = Locale(lang, country);
+ }
+
+ if (locale.isBogus()) {
+ // Using the country resulted in a bogus Locale, so try with only the lang
+ locale = Locale(lang);
+ }
+
+ return locale;
+}
+
+/* static */ void
+ICUUtils::ToMozString(UnicodeString& aICUString, nsAString& aMozString)
+{
+ // Both ICU's UnicodeString and Mozilla's nsAString use UTF-16, so we can
+ // cast here.
+
+ static_assert(sizeof(UChar) == 2 && sizeof(nsAString::char_type) == 2,
+ "Unexpected character size - the following cast is unsafe");
+
+ const nsAString::char_type* buf =
+ (const nsAString::char_type*)aICUString.getTerminatedBuffer();
+ aMozString.Assign(buf);
+
+ NS_ASSERTION(aMozString.Length() == (uint32_t)aICUString.length(),
+ "Conversion failed");
+}
+
+/* static */ void
+ICUUtils::ToICUString(nsAString& aMozString, UnicodeString& aICUString)
+{
+ // Both ICU's UnicodeString and Mozilla's nsAString use UTF-16, so we can
+ // cast here.
+
+ static_assert(sizeof(UChar) == 2 && sizeof(nsAString::char_type) == 2,
+ "Unexpected character size - the following cast is unsafe");
+
+ aICUString.setTo((UChar*)PromiseFlatString(aMozString).get(),
+ aMozString.Length());
+
+ NS_ASSERTION(aMozString.Length() == (uint32_t)aICUString.length(),
+ "Conversion failed");
+}
+#endif
+
+#endif /* ENABLE_INTL_API */
+#endif /* MOZILLA_INTERNAL_API */
+
diff --git a/intl/unicharutil/util/ICUUtils.h b/intl/unicharutil/util/ICUUtils.h
new file mode 100644
index 000000000..1fa8d4cc0
--- /dev/null
+++ b/intl/unicharutil/util/ICUUtils.h
@@ -0,0 +1,114 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef mozilla_ICUUtils_h__
+#define mozilla_ICUUtils_h__
+
+// We only build the ICU utils if we're building ICU:
+#ifdef ENABLE_INTL_API
+
+// The ICU utils implementation needs internal things like XPCOM strings and
+// nsGkAtom, so we only build when included into internal libs:
+#ifdef MOZILLA_INTERNAL_API
+
+#include "mozilla/Scoped.h"
+#include "nsStringGlue.h"
+#include "unicode/unum.h" // for UNumberFormat
+
+class nsIContent;
+
+namespace {
+ struct ScopedUNumberFormatTraits {
+ typedef UNumberFormat* type;
+ static type empty() { return nullptr; }
+ static void release(type handle) { if (handle) unum_close(handle); }
+ };
+};
+typedef mozilla::Scoped<ScopedUNumberFormatTraits> AutoCloseUNumberFormat;
+
+class ICUUtils
+{
+public:
+
+ /**
+ * This class is used to encapsulate an nsIContent object to allow lazy
+ * iteration over its primary and fallback BCP 47 language tags.
+ */
+ class LanguageTagIterForContent {
+ public:
+ explicit LanguageTagIterForContent(nsIContent* aContent)
+ : mContent(aContent)
+ , mCurrentFallbackIndex(-1)
+ {}
+
+ /**
+ * Used to iterate over the nsIContent object's primary language tag and
+ * its fallbacks tags. The following sources of language tag information
+ * are tried in turn:
+ *
+ * 1) the "lang" of the nsIContent object (which is based on the 'lang'/
+ * 'xml:lang' attribute on itself or the nearest ancestor to have such
+ * an attribute, if any);
+ * 2) the Content-Language HTTP pragma directive or HTTP header;
+ * 3) the configured language tag of the user-agent.
+ *
+ * Once all fallbacks have been exhausted then this function will set
+ * aBCP47LangTag to the empty string.
+ */
+ void GetNext(nsACString& aBCP47LangTag);
+
+ bool IsAtStart() const {
+ return mCurrentFallbackIndex < 0;
+ }
+
+ private:
+ nsIContent* mContent;
+ int8_t mCurrentFallbackIndex;
+ };
+
+ /**
+ * Attempts to localize aValue and return the result via the aLocalizedValue
+ * outparam. Returns true on success. Returns false on failure, in which
+ * case aLocalizedValue will be untouched.
+ */
+ static bool LocalizeNumber(double aValue,
+ LanguageTagIterForContent& aLangTags,
+ nsAString& aLocalizedValue);
+
+ /**
+ * Parses the localized number that is serialized in aValue using aLangTags
+ * and returns the result as a double. Returns NaN on failure.
+ */
+ static double ParseNumber(nsAString& aValue,
+ LanguageTagIterForContent& aLangTags);
+
+ static void AssignUCharArrayToString(UChar* aICUString,
+ int32_t aLength,
+ nsAString& aMozString);
+
+ /**
+ * Map ICU UErrorCode to nsresult
+ */
+ static nsresult UErrorToNsResult(const UErrorCode aErrorCode);
+
+#if 0
+ // Currently disabled because using C++ API doesn't play nicely with enabling
+ // system ICU.
+
+ /**
+ * Converts an IETF BCP 47 language code to an ICU Locale.
+ */
+ static Locale BCP47CodeToLocale(const nsAString& aBCP47Code);
+
+ static void ToMozString(UnicodeString& aICUString, nsAString& aMozString);
+ static void ToICUString(nsAString& aMozString, UnicodeString& aICUString);
+#endif
+};
+
+#endif /* ENABLE_INTL_API */
+#endif /* MOZILLA_INTERNAL_API */
+
+#endif /* mozilla_ICUUtils_h__ */
+
diff --git a/intl/unicharutil/util/IrishCasing.cpp b/intl/unicharutil/util/IrishCasing.cpp
new file mode 100644
index 000000000..20662ea2d
--- /dev/null
+++ b/intl/unicharutil/util/IrishCasing.cpp
@@ -0,0 +1,249 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/******************************************************************************
+
+This file provides a finite state machine to support Irish Gaelic uppercasing
+rules.
+
+The caller will need to iterate through a string, passing a State variable
+along with the current character to each UpperCase call and checking the flags
+that are returned:
+
+ If aMarkPos is true, caller must remember the current index in the string as
+ a possible target for a future action.
+
+ If aAction is non-zero, then one or more characters from the marked index are
+ to be modified:
+ 1 lowercase the marked letter
+ 2 lowercase the marked letter and its successor
+ 3 lowercase the marked letter, and delete its successor
+
+
+### Rules from https://bugzilla.mozilla.org/show_bug.cgi?id=1014639,
+### comments 1 and 4:
+
+v = [a,á,e,é,i,í,o,ó,u,ú]
+V = [A,Á,E,É,I,Í,O,Ó,U,Ú]
+
+bhf -> bhF
+bhF -> bhF
+bp -> bP
+bP -> bP
+dt -> dT
+dT -> dT
+gc -> gC
+gC -> gC
+h{V} -> h{V}
+mb -> mB
+mB -> mB
+n-{v} -> n{V}
+n{V} -> n{V}
+nd -> nD
+nD -> nD
+ng -> nG
+nG -> nG
+t-{v} -> t{V}
+t{V} -> t{V}
+ts{v} -> tS{V}
+tS{v} -> tS{V}
+tS{V} -> tS{V}
+tsl -> tSL
+tSl -> tSL
+tSL -> tSL
+tsn -> tSN
+tSn -> tSN
+tSN -> tSN
+tsr -> tSR
+tSr -> tSR
+tSR -> tSR
+
+### Create table of states and actions for each input class.
+
+Start (non-word) state is #; generic in-word state is _, once we know there's
+no special action to do in this word.
+
+ # _ b bh d g h m n n- t t- ts
+input\state
+b b' _ _ _ _ _ _ 1 _ _ _ _ _
+B _ _ _ _ _ _ _ 1 _ _ _ _ _
+c _ _ _ _ _ 1 _ _ _ _ _ _ _
+C _ _ _ _ _ 1 _ _ _ _ _ _ _
+d d' _ _ _ _ _ _ _ 1 _ _ _ _
+D _ _ _ _ _ _ _ _ 1 _ _ _ _
+f _ _ _ 2 _ _ _ _ _ _ _ _ _
+F _ _ _ 2 _ _ _ _ _ _ _ _ _
+g g' _ _ _ _ _ _ _ 1 _ _ _ _
+G _ _ _ _ _ _ _ _ 1 _ _ _ _
+h h' _ bh _ _ _ _ _ _ _ _ _ _
+l _ _ _ _ _ _ _ _ _ _ _ _ 1
+L _ _ _ _ _ _ _ _ _ _ _ _ 1
+m m' _ _ _ _ _ _ _ _ _ _ _ _
+n n' _ _ _ _ _ _ _ _ _ _ _ 1
+N _ _ _ _ _ _ _ _ _ _ _ _ 1
+p _ _ 1 _ _ _ _ _ _ _ _ _ _
+P _ _ 1 _ _ _ _ _ _ _ _ _ _
+r _ _ _ _ _ _ _ _ _ _ _ _ 1
+R _ _ _ _ _ _ _ _ _ _ _ _ 1
+s _ _ _ _ _ _ _ _ _ _ ts _ _
+S _ _ _ _ _ _ _ _ _ _ ts _ _
+t t' _ _ _ 1 _ _ _ _ _ _ _ _
+T _ _ _ _ 1 _ _ _ _ _ _ _ _
+vowel _ _ _ _ _ _ _ _ _ 1d _ 1d 1
+Vowel _ _ _ _ _ _ 1 _ 1 _ 1 _ 1
+hyph _ _ _ _ _ _ _ _ n- _ t- _ _
+letter _ _ _ _ _ _ _ _ _ _ _ _ _
+other # # # # # # # # # # # # #
+
+Actions:
+ 1 lowercase one letter at start of word
+ 2 lowercase two letters at start of word
+ 1d lowercase one letter at start of word, and delete next
+ (and then go to state _, nothing further to do in this word)
+
+else just go to the given state; suffix ' indicates mark start-of-word.
+
+### Consolidate identical states and classes:
+
+ 0 1 2 3 4 5 6 7 8 9 A B
+ # _ b bh d g h m n [nt]- t ts
+input\state
+b b' _ _ _ _ _ _ 1 _ _ _ _
+B _ _ _ _ _ _ _ 1 _ _ _ _
+[cC] _ _ _ _ _ 1 _ _ _ _ _ _
+d d' _ _ _ _ _ _ _ 1 _ _ _
+[DG] _ _ _ _ _ _ _ _ 1 _ _ _
+[fF] _ _ _ 2 _ _ _ _ _ _ _ _
+g g' _ _ _ _ _ _ _ 1 _ _ _
+h h' _ bh _ _ _ _ _ _ _ _ _
+[lLNrR] _ _ _ _ _ _ _ _ _ _ _ 1
+m m' _ _ _ _ _ _ _ _ _ _ _
+n n' _ _ _ _ _ _ _ _ _ _ 1
+[pP] _ _ 1 _ _ _ _ _ _ _ _ _
+[sS] _ _ _ _ _ _ _ _ _ _ ts _
+t t' _ _ _ 1 _ _ _ _ _ _ _
+T _ _ _ _ 1 _ _ _ _ _ _ _
+vowel _ _ _ _ _ _ _ _ _ 1d _ 1
+Vowel _ _ _ _ _ _ 1 _ 1 _ 1 1
+hyph _ _ _ _ _ _ _ _ [nt-] _ [nt-] _
+letter _ _ _ _ _ _ _ _ _ _ _ _
+other # # # # # # # # # # # #
+
+So we have 20 input classes, and 12 states.
+
+State table array will contain bytes that encode action and new state:
+
+ 0x80 - bit flag: mark start-of-word position
+ 0x40 - currently unused
+ 0x30 - action mask: 4 values
+ 0x00 - do nothing
+ 0x10 - lowercase one letter
+ 0x20 - lowercase two letters
+ 0x30 - lowercase one, delete one
+ 0x0F - next-state mask
+******************************************************************************/
+
+#include "IrishCasing.h"
+
+#include "nsUnicodeProperties.h"
+#include "nsUnicharUtils.h"
+
+namespace mozilla {
+
+const uint8_t
+IrishCasing::sUppercaseStateTable[kNumClasses][kNumStates] = {
+// # _ b bh d g h m n [nt]- t ts
+ { 0x82, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x11, 0x01, 0x01, 0x01, 0x01 }, // b
+ { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x11, 0x01, 0x01, 0x01, 0x01 }, // B
+ { 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, // [cC]
+ { 0x84, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x11, 0x01, 0x01, 0x01 }, // d
+ { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x11, 0x01, 0x01, 0x01 }, // [DG]
+ { 0x01, 0x01, 0x01, 0x21, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, // [fF]
+ { 0x85, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x11, 0x01, 0x01, 0x01 }, // g
+ { 0x86, 0x01, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, // h
+ { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x11 }, // [lLNrR]
+ { 0x87, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, // m
+ { 0x88, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x11 }, // n
+ { 0x01, 0x01, 0x11, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, // [pP]
+ { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0B, 0x01 }, // [sS]
+ { 0x8A, 0x01, 0x01, 0x01, 0x11, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, // t
+ { 0x01, 0x01, 0x01, 0x01, 0x11, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, // T
+ { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x31, 0x01, 0x11 }, // vowel
+ { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x11, 0x01, 0x11, 0x01, 0x11, 0x11 }, // Vowel
+ { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x01, 0x09, 0x01 }, // hyph
+ { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, // letter
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } // other
+};
+
+#define HYPHEN 0x2010
+#define NO_BREAK_HYPHEN 0x2011
+#define a_ACUTE 0x00e1
+#define e_ACUTE 0x00e9
+#define i_ACUTE 0x00ed
+#define o_ACUTE 0x00f3
+#define u_ACUTE 0x00fa
+#define A_ACUTE 0x00c1
+#define E_ACUTE 0x00c9
+#define I_ACUTE 0x00cd
+#define O_ACUTE 0x00d3
+#define U_ACUTE 0x00da
+
+const uint8_t IrishCasing::sLcClasses[26] = {
+ kClass_vowel, kClass_b, kClass_cC, kClass_d, kClass_vowel,
+ kClass_fF, kClass_g, kClass_h, kClass_vowel, kClass_letter,
+ kClass_letter, kClass_lLNrR, kClass_m, kClass_n, kClass_vowel,
+ kClass_pP, kClass_letter, kClass_lLNrR, kClass_sS, kClass_t,
+ kClass_vowel, kClass_letter, kClass_letter, kClass_letter, kClass_letter,
+ kClass_letter
+};
+
+const uint8_t IrishCasing::sUcClasses[26] = {
+ kClass_Vowel, kClass_B, kClass_cC, kClass_DG, kClass_Vowel,
+ kClass_fF, kClass_DG, kClass_letter, kClass_Vowel, kClass_letter,
+ kClass_letter, kClass_lLNrR, kClass_letter, kClass_lLNrR, kClass_Vowel,
+ kClass_pP, kClass_letter, kClass_lLNrR, kClass_sS, kClass_T,
+ kClass_Vowel, kClass_letter, kClass_letter, kClass_letter, kClass_letter,
+ kClass_letter
+};
+
+uint8_t
+IrishCasing::GetClass(uint32_t aCh)
+{
+ using mozilla::unicode::GetGenCategory;
+ if (aCh >= 'a' && aCh <= 'z') {
+ return sLcClasses[aCh - 'a'];
+ } else if (aCh >= 'A' && aCh <= 'Z') {
+ return sUcClasses[aCh - 'A'];
+ } else if (GetGenCategory(aCh) == nsIUGenCategory::kLetter) {
+ if (aCh == a_ACUTE || aCh == e_ACUTE || aCh == i_ACUTE ||
+ aCh == o_ACUTE || aCh == u_ACUTE) {
+ return kClass_vowel;
+ } else if (aCh == A_ACUTE || aCh == E_ACUTE || aCh == I_ACUTE ||
+ aCh == O_ACUTE || aCh == U_ACUTE) {
+ return kClass_Vowel;
+ } else {
+ return kClass_letter;
+ }
+ } else if (aCh == '-' || aCh == HYPHEN || aCh == NO_BREAK_HYPHEN) {
+ return kClass_hyph;
+ } else {
+ return kClass_other;
+ }
+}
+
+uint32_t
+IrishCasing::UpperCase(uint32_t aCh, State& aState,
+ bool& aMarkPos, uint8_t& aAction)
+{
+ uint8_t cls = GetClass(aCh);
+ uint8_t stateEntry = sUppercaseStateTable[cls][aState];
+ aMarkPos = !!(stateEntry & kMarkPositionFlag);
+ aAction = (stateEntry & kActionMask) >> kActionShift;
+ aState = State(stateEntry & kNextStateMask);
+
+ return ToUpperCase(aCh);
+}
+
+} // namespace mozilla
diff --git a/intl/unicharutil/util/IrishCasing.h b/intl/unicharutil/util/IrishCasing.h
new file mode 100644
index 000000000..f5cb888dc
--- /dev/null
+++ b/intl/unicharutil/util/IrishCasing.h
@@ -0,0 +1,117 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef IrishCasing_h_
+#define IrishCasing_h_
+
+#include <stdint.h>
+#include "mozilla/Attributes.h"
+
+namespace mozilla {
+
+class IrishCasing {
+private:
+ enum IrishStates {
+ kState_Start,
+ kState_InWord,
+ kState_b,
+ kState_bh,
+ kState_d,
+ kState_g,
+ kState_h,
+ kState_m,
+ kState_n,
+ kState_nt_,
+ kState_t,
+ kState_ts,
+ kNumStates
+ };
+
+ enum IrishClasses {
+ kClass_b,
+ kClass_B,
+ kClass_cC,
+ kClass_d,
+ kClass_DG,
+ kClass_fF,
+ kClass_g,
+ kClass_h,
+ kClass_lLNrR,
+ kClass_m,
+ kClass_n,
+ kClass_pP,
+ kClass_sS,
+ kClass_t,
+ kClass_T,
+ kClass_vowel,
+ kClass_Vowel,
+ kClass_hyph,
+ kClass_letter,
+ kClass_other,
+ kNumClasses
+ };
+
+public:
+ class State {
+ friend class IrishCasing;
+
+ public:
+ State()
+ : mState(kState_Start)
+ {
+ }
+
+ MOZ_IMPLICIT State(const IrishStates& aState)
+ : mState(aState)
+ {
+ }
+
+ void Reset()
+ {
+ mState = kState_Start;
+ }
+
+ operator IrishStates() const
+ {
+ return mState;
+ }
+
+ private:
+ explicit State(uint8_t aState)
+ : mState(IrishStates(aState))
+ {
+ }
+
+ uint8_t GetClass(uint32_t aCh);
+
+ IrishStates mState;
+ };
+
+ enum {
+ kMarkPositionFlag = 0x80,
+ kActionMask = 0x30,
+ kActionShift = 4,
+ kNextStateMask = 0x0f
+ };
+
+ static const uint8_t sUppercaseStateTable[kNumClasses][kNumStates];
+ static const uint8_t sLcClasses[26];
+ static const uint8_t sUcClasses[26];
+
+ static uint32_t UpperCase(uint32_t aCh, State& aState,
+ bool& aMarkPos, uint8_t& aAction);
+
+ static bool IsUpperVowel(uint32_t aCh)
+ {
+ return GetClass(aCh) == kClass_Vowel;
+ }
+
+private:
+ static uint8_t GetClass(uint32_t aCh);
+};
+
+} // namespace mozilla
+
+#endif
diff --git a/intl/unicharutil/util/internal/moz.build b/intl/unicharutil/util/internal/moz.build
new file mode 100644
index 000000000..8a46580b3
--- /dev/null
+++ b/intl/unicharutil/util/internal/moz.build
@@ -0,0 +1,21 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# This file builds the version of unicharutils_s static library which uses
+# internal linkage. Components that use frozen (external) linkage should use
+# unicharutil_external_s.
+
+include('../objs.mozbuild')
+
+UNIFIED_SOURCES += intl_unicharutil_util_cppsrcs
+
+FINAL_LIBRARY = 'xul'
+
+LOCAL_INCLUDES += [
+ '..',
+]
+
+DIST_INSTALL = True
diff --git a/intl/unicharutil/util/moz.build b/intl/unicharutil/util/moz.build
new file mode 100644
index 000000000..97547536b
--- /dev/null
+++ b/intl/unicharutil/util/moz.build
@@ -0,0 +1,45 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# This file builds the unicharutil_external_s library which should be used
+# by frozen (dependent) linkage components. Internal-linkage code should use
+# unicharutil_s which is built in the internal/ subdirectory.
+
+DIRS += ['internal']
+
+EXPORTS += [
+ 'GreekCasing.h',
+ 'ICUUtils.h',
+ 'IrishCasing.h',
+ 'nsBidiUtils.h',
+ 'nsSpecialCasingData.h',
+ 'nsUnicharUtils.h',
+ 'nsUnicodeProperties.h',
+ 'nsUnicodeScriptCodes.h',
+]
+
+include('objs.mozbuild')
+
+UNIFIED_SOURCES += intl_unicharutil_util_cppsrcs
+
+Library('unicharutil_external_s')
+
+FORCE_STATIC_LIB = True
+
+SDK_LIBRARY = True
+
+USE_STATIC_LIBS = True
+
+if CONFIG['_MSC_VER']:
+ DEFINES['_USE_ANSI_CPP'] = True
+ # Don't include directives about which CRT to use
+ CFLAGS += ['-Zl']
+ CXXFLAGS += ['-Zl']
+
+if CONFIG['ENABLE_INTL_API']:
+ USE_LIBS += ['icu']
+
+DIST_INSTALL = True
diff --git a/intl/unicharutil/util/nsBidiUtils.cpp b/intl/unicharutil/util/nsBidiUtils.cpp
new file mode 100644
index 000000000..8c186ac68
--- /dev/null
+++ b/intl/unicharutil/util/nsBidiUtils.cpp
@@ -0,0 +1,99 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+#include "nsBidiUtils.h"
+
+#define ARABIC_TO_HINDI_DIGIT_INCREMENT (START_HINDI_DIGITS - START_ARABIC_DIGITS)
+#define PERSIAN_TO_HINDI_DIGIT_INCREMENT (START_HINDI_DIGITS - START_FARSI_DIGITS)
+#define ARABIC_TO_PERSIAN_DIGIT_INCREMENT (START_FARSI_DIGITS - START_ARABIC_DIGITS)
+#define NUM_TO_ARABIC(c) \
+ ((((c)>=START_HINDI_DIGITS) && ((c)<=END_HINDI_DIGITS)) ? \
+ ((c) - (uint16_t)ARABIC_TO_HINDI_DIGIT_INCREMENT) : \
+ ((((c)>=START_FARSI_DIGITS) && ((c)<=END_FARSI_DIGITS)) ? \
+ ((c) - (uint16_t)ARABIC_TO_PERSIAN_DIGIT_INCREMENT) : \
+ (c)))
+#define NUM_TO_HINDI(c) \
+ ((((c)>=START_ARABIC_DIGITS) && ((c)<=END_ARABIC_DIGITS)) ? \
+ ((c) + (uint16_t)ARABIC_TO_HINDI_DIGIT_INCREMENT): \
+ ((((c)>=START_FARSI_DIGITS) && ((c)<=END_FARSI_DIGITS)) ? \
+ ((c) + (uint16_t)PERSIAN_TO_HINDI_DIGIT_INCREMENT) : \
+ (c)))
+#define NUM_TO_PERSIAN(c) \
+ ((((c)>=START_HINDI_DIGITS) && ((c)<=END_HINDI_DIGITS)) ? \
+ ((c) - (uint16_t)PERSIAN_TO_HINDI_DIGIT_INCREMENT) : \
+ ((((c)>=START_ARABIC_DIGITS) && ((c)<=END_ARABIC_DIGITS)) ? \
+ ((c) + (uint16_t)ARABIC_TO_PERSIAN_DIGIT_INCREMENT) : \
+ (c)))
+
+char16_t HandleNumberInChar(char16_t aChar, bool aPrevCharArabic, uint32_t aNumFlag)
+{
+ // IBMBIDI_NUMERAL_NOMINAL *
+ // IBMBIDI_NUMERAL_REGULAR
+ // IBMBIDI_NUMERAL_HINDICONTEXT
+ // IBMBIDI_NUMERAL_ARABIC
+ // IBMBIDI_NUMERAL_HINDI
+
+ switch (aNumFlag) {
+ case IBMBIDI_NUMERAL_HINDI:
+ return NUM_TO_HINDI(aChar);
+ case IBMBIDI_NUMERAL_ARABIC:
+ return NUM_TO_ARABIC(aChar);
+ case IBMBIDI_NUMERAL_PERSIAN:
+ return NUM_TO_PERSIAN(aChar);
+ case IBMBIDI_NUMERAL_REGULAR:
+ case IBMBIDI_NUMERAL_HINDICONTEXT:
+ case IBMBIDI_NUMERAL_PERSIANCONTEXT:
+ // for clipboard handling
+ //XXX do we really want to convert numerals when copying text?
+ if (aPrevCharArabic) {
+ if (aNumFlag == IBMBIDI_NUMERAL_PERSIANCONTEXT)
+ return NUM_TO_PERSIAN(aChar);
+ else
+ return NUM_TO_HINDI(aChar);
+ }
+ else
+ return NUM_TO_ARABIC(aChar);
+ case IBMBIDI_NUMERAL_NOMINAL:
+ default:
+ return aChar;
+ }
+}
+
+nsresult HandleNumbers(char16_t* aBuffer, uint32_t aSize, uint32_t aNumFlag)
+{
+ uint32_t i;
+
+ switch (aNumFlag) {
+ case IBMBIDI_NUMERAL_HINDI:
+ case IBMBIDI_NUMERAL_ARABIC:
+ case IBMBIDI_NUMERAL_PERSIAN:
+ case IBMBIDI_NUMERAL_REGULAR:
+ case IBMBIDI_NUMERAL_HINDICONTEXT:
+ case IBMBIDI_NUMERAL_PERSIANCONTEXT:
+ for (i=0;i<aSize;i++)
+ aBuffer[i] = HandleNumberInChar(aBuffer[i], !!(i>0 ? aBuffer[i-1] : 0), aNumFlag);
+ break;
+ case IBMBIDI_NUMERAL_NOMINAL:
+ default:
+ break;
+ }
+ return NS_OK;
+}
+
+bool HasRTLChars(const nsAString& aString)
+{
+// This is used to determine whether to enable bidi if a string has
+// right-to-left characters. To simplify things, anything that could be a
+// surrogate or RTL presentation form is covered just by testing >= 0xD800).
+// It's fine to enable bidi in rare cases where it actually isn't needed.
+ int32_t length = aString.Length();
+ for (int32_t i = 0; i < length; i++) {
+ char16_t ch = aString.CharAt(i);
+ if (ch >= 0xD800 || IS_IN_BMP_RTL_BLOCK(ch)) {
+ return true;
+ }
+ }
+ return false;
+}
diff --git a/intl/unicharutil/util/nsBidiUtils.h b/intl/unicharutil/util/nsBidiUtils.h
new file mode 100644
index 000000000..d30fef1bf
--- /dev/null
+++ b/intl/unicharutil/util/nsBidiUtils.h
@@ -0,0 +1,265 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef nsBidiUtils_h__
+#define nsBidiUtils_h__
+
+#include "nsStringGlue.h"
+
+ /**
+ * Read ftp://ftp.unicode.org/Public/UNIDATA/ReadMe-Latest.txt
+ * section BIDIRECTIONAL PROPERTIES
+ * for the detailed definition of the following categories
+ *
+ * The values here must match the equivalents in %bidicategorycode in
+ * mozilla/intl/unicharutil/tools/genUnicodePropertyData.pl,
+ * and must also match the values used by ICU's UCharDirection.
+ */
+
+enum nsCharType {
+ eCharType_LeftToRight = 0,
+ eCharType_RightToLeft = 1,
+ eCharType_EuropeanNumber = 2,
+ eCharType_EuropeanNumberSeparator = 3,
+ eCharType_EuropeanNumberTerminator = 4,
+ eCharType_ArabicNumber = 5,
+ eCharType_CommonNumberSeparator = 6,
+ eCharType_BlockSeparator = 7,
+ eCharType_SegmentSeparator = 8,
+ eCharType_WhiteSpaceNeutral = 9,
+ eCharType_OtherNeutral = 10,
+ eCharType_LeftToRightEmbedding = 11,
+ eCharType_LeftToRightOverride = 12,
+ eCharType_RightToLeftArabic = 13,
+ eCharType_RightToLeftEmbedding = 14,
+ eCharType_RightToLeftOverride = 15,
+ eCharType_PopDirectionalFormat = 16,
+ eCharType_DirNonSpacingMark = 17,
+ eCharType_BoundaryNeutral = 18,
+ eCharType_FirstStrongIsolate = 19,
+ eCharType_LeftToRightIsolate = 20,
+ eCharType_RightToLeftIsolate = 21,
+ eCharType_PopDirectionalIsolate = 22,
+ eCharType_CharTypeCount
+};
+
+/**
+ * This specifies the language directional property of a character set.
+ */
+typedef enum nsCharType nsCharType;
+
+/**
+ * Find the direction of an embedding level or paragraph level set by
+ * the Unicode Bidi Algorithm. (Even levels are left-to-right, odd
+ * levels right-to-left.
+ */
+#define IS_LEVEL_RTL(level) (((level) & 1) == 1)
+
+/**
+ * Check whether two bidi levels have the same parity and thus the same
+ * directionality
+ */
+#define IS_SAME_DIRECTION(level1, level2) (((level1 ^ level2) & 1) == 0)
+
+/**
+ * Convert from nsBidiLevel to nsBidiDirection
+ */
+#define DIRECTION_FROM_LEVEL(level) ((IS_LEVEL_RTL(level)) \
+ ? NSBIDI_RTL : NSBIDI_LTR)
+
+/**
+ * definitions of bidirection character types by category
+ */
+
+#define CHARTYPE_IS_RTL(val) ( ( (val) == eCharType_RightToLeft) || ( (val) == eCharType_RightToLeftArabic) )
+
+#define CHARTYPE_IS_WEAK(val) ( ( (val) == eCharType_EuropeanNumberSeparator) \
+ || ( (val) == eCharType_EuropeanNumberTerminator) \
+ || ( ( (val) > eCharType_ArabicNumber) && ( (val) != eCharType_RightToLeftArabic) ) )
+
+ /**
+ * Inspects a Unichar, converting numbers to Arabic or Hindi forms and returning them
+ * @param aChar is the character
+ * @param aPrevCharArabic is true if the previous character in the string is an Arabic char
+ * @param aNumFlag specifies the conversion to perform:
+ * IBMBIDI_NUMERAL_NOMINAL: don't do any conversion
+ * IBMBIDI_NUMERAL_HINDI: convert to Hindi forms (Unicode 0660-0669)
+ * IBMBIDI_NUMERAL_ARABIC: convert to Arabic forms (Unicode 0030-0039)
+ * IBMBIDI_NUMERAL_HINDICONTEXT: convert numbers in Arabic text to Hindi, otherwise to Arabic
+ * @return the converted Unichar
+ */
+ char16_t HandleNumberInChar(char16_t aChar, bool aPrevCharArabic, uint32_t aNumFlag);
+
+ /**
+ * Scan a Unichar string, converting numbers to Arabic or Hindi forms in place
+ * @param aBuffer is the string
+ * @param aSize is the size of aBuffer
+ * @param aNumFlag specifies the conversion to perform:
+ * IBMBIDI_NUMERAL_NOMINAL: don't do any conversion
+ * IBMBIDI_NUMERAL_HINDI: convert to Hindi forms (Unicode 0660-0669)
+ * IBMBIDI_NUMERAL_ARABIC: convert to Arabic forms (Unicode 0030-0039)
+ * IBMBIDI_NUMERAL_HINDICONTEXT: convert numbers in Arabic text to Hindi, otherwise to Arabic
+ */
+ nsresult HandleNumbers(char16_t* aBuffer, uint32_t aSize, uint32_t aNumFlag);
+
+ /**
+ * Give a UTF-32 codepoint
+ * return true if the codepoint is a Bidi control character (LRM, RLM, ALM;
+ * LRE, RLE, PDF, LRO, RLO; LRI, RLI, FSI, PDI).
+ * Return false, otherwise
+ */
+#define LRM_CHAR 0x200e
+#define RLM_CHAR 0x200f
+
+#define LRE_CHAR 0x202a
+#define RLE_CHAR 0x202b
+#define PDF_CHAR 0x202c
+#define LRO_CHAR 0x202d
+#define RLO_CHAR 0x202e
+
+#define LRI_CHAR 0x2066
+#define RLI_CHAR 0x2067
+#define FSI_CHAR 0x2068
+#define PDI_CHAR 0x2069
+
+#define ALM_CHAR 0x061C
+ inline bool IsBidiControl(uint32_t aChar) {
+ return ((LRE_CHAR <= aChar && aChar <= RLO_CHAR) ||
+ (LRI_CHAR <= aChar && aChar <= PDI_CHAR) ||
+ (aChar == ALM_CHAR) ||
+ (aChar & 0xfffffe) == LRM_CHAR);
+ }
+
+ /**
+ * Give a UTF-32 codepoint
+ * Return true if the codepoint is a Bidi control character that may result
+ * in RTL directionality and therefore needs to trigger bidi resolution;
+ * return false otherwise.
+ */
+ inline bool IsBidiControlRTL(uint32_t aChar) {
+ return aChar == RLM_CHAR ||
+ aChar == RLE_CHAR ||
+ aChar == RLO_CHAR ||
+ aChar == RLI_CHAR ||
+ aChar == ALM_CHAR;
+ }
+
+ /**
+ * Give an nsString.
+ * @return true if the string contains right-to-left characters
+ */
+ bool HasRTLChars(const nsAString& aString);
+
+// These values are shared with Preferences dialog
+// ------------------
+// If Pref values are to be changed
+// in the XUL file of Prefs. the values
+// Must be changed here too..
+// ------------------
+//
+#define IBMBIDI_TEXTDIRECTION_STR "bidi.direction"
+#define IBMBIDI_TEXTTYPE_STR "bidi.texttype"
+#define IBMBIDI_NUMERAL_STR "bidi.numeral"
+
+// ------------------
+// Text Direction
+// ------------------
+// bidi.direction
+#define IBMBIDI_TEXTDIRECTION_LTR 1 // 1 = directionLTRBidi *
+#define IBMBIDI_TEXTDIRECTION_RTL 2 // 2 = directionRTLBidi
+// ------------------
+// Text Type
+// ------------------
+// bidi.texttype
+#define IBMBIDI_TEXTTYPE_CHARSET 1 // 1 = charsettexttypeBidi *
+#define IBMBIDI_TEXTTYPE_LOGICAL 2 // 2 = logicaltexttypeBidi
+#define IBMBIDI_TEXTTYPE_VISUAL 3 // 3 = visualtexttypeBidi
+// ------------------
+// Numeral Style
+// ------------------
+// bidi.numeral
+#define IBMBIDI_NUMERAL_NOMINAL 0 // 0 = nominalnumeralBidi *
+#define IBMBIDI_NUMERAL_REGULAR 1 // 1 = regularcontextnumeralBidi
+#define IBMBIDI_NUMERAL_HINDICONTEXT 2 // 2 = hindicontextnumeralBidi
+#define IBMBIDI_NUMERAL_ARABIC 3 // 3 = arabicnumeralBidi
+#define IBMBIDI_NUMERAL_HINDI 4 // 4 = hindinumeralBidi
+#define IBMBIDI_NUMERAL_PERSIANCONTEXT 5 // 5 = persiancontextnumeralBidi
+#define IBMBIDI_NUMERAL_PERSIAN 6 // 6 = persiannumeralBidi
+
+#define IBMBIDI_DEFAULT_BIDI_OPTIONS \
+ ((IBMBIDI_TEXTDIRECTION_LTR<<0) | \
+ (IBMBIDI_TEXTTYPE_CHARSET<<4) | \
+ (IBMBIDI_NUMERAL_NOMINAL<<8))
+
+#define GET_BIDI_OPTION_DIRECTION(bo) (((bo)>>0) & 0x0000000F) /* 4 bits for DIRECTION */
+#define GET_BIDI_OPTION_TEXTTYPE(bo) (((bo)>>4) & 0x0000000F) /* 4 bits for TEXTTYPE */
+#define GET_BIDI_OPTION_NUMERAL(bo) (((bo)>>8) & 0x0000000F) /* 4 bits for NUMERAL */
+
+#define SET_BIDI_OPTION_DIRECTION(bo, dir) {(bo)=((bo) & 0xFFFFFFF0)|(((dir)& 0x0000000F)<<0);}
+#define SET_BIDI_OPTION_TEXTTYPE(bo, tt) {(bo)=((bo) & 0xFFFFFF0F)|(((tt)& 0x0000000F)<<4);}
+#define SET_BIDI_OPTION_NUMERAL(bo, num) {(bo)=((bo) & 0xFFFFF0FF)|(((num)& 0x0000000F)<<8);}
+
+/* Constants related to the position of numerics in the codepage */
+#define START_HINDI_DIGITS 0x0660
+#define END_HINDI_DIGITS 0x0669
+#define START_ARABIC_DIGITS 0x0030
+#define END_ARABIC_DIGITS 0x0039
+#define START_FARSI_DIGITS 0x06f0
+#define END_FARSI_DIGITS 0x06f9
+#define IS_HINDI_DIGIT(u) ( ( (u) >= START_HINDI_DIGITS ) && ( (u) <= END_HINDI_DIGITS ) )
+#define IS_ARABIC_DIGIT(u) ( ( (u) >= START_ARABIC_DIGITS ) && ( (u) <= END_ARABIC_DIGITS ) )
+#define IS_FARSI_DIGIT(u) ( ( (u) >= START_FARSI_DIGITS ) && ( (u) <= END_FARSI_DIGITS ) )
+/**
+ * Arabic numeric separator and numeric formatting characters:
+ * U+0600;ARABIC NUMBER SIGN
+ * U+0601;ARABIC SIGN SANAH
+ * U+0602;ARABIC FOOTNOTE MARKER
+ * U+0603;ARABIC SIGN SAFHA
+ * U+066A;ARABIC PERCENT SIGN
+ * U+066B;ARABIC DECIMAL SEPARATOR
+ * U+066C;ARABIC THOUSANDS SEPARATOR
+ * U+06DD;ARABIC END OF AYAH
+ */
+#define IS_ARABIC_SEPARATOR(u) ( ( /*(u) >= 0x0600 &&*/ (u) <= 0x0603 ) || \
+ ( (u) >= 0x066A && (u) <= 0x066C ) || \
+ ( (u) == 0x06DD ) )
+
+#define IS_BIDI_DIACRITIC(u) ( \
+ ( (u) >= 0x0591 && (u) <= 0x05A1) || ( (u) >= 0x05A3 && (u) <= 0x05B9) \
+ || ( (u) >= 0x05BB && (u) <= 0x05BD) || ( (u) == 0x05BF) || ( (u) == 0x05C1) \
+ || ( (u) == 0x05C2) || ( (u) == 0x05C4) \
+ || ( (u) >= 0x064B && (u) <= 0x0652) || ( (u) == 0x0670) \
+ || ( (u) >= 0x06D7 && (u) <= 0x06E4) || ( (u) == 0x06E7) || ( (u) == 0x06E8) \
+ || ( (u) >= 0x06EA && (u) <= 0x06ED) )
+
+#define IS_HEBREW_CHAR(c) (((0x0590 <= (c)) && ((c) <= 0x05FF)) || (((c) >= 0xfb1d) && ((c) <= 0xfb4f)))
+#define IS_ARABIC_CHAR(c) ( (0x0600 <= (c) && (c) <= 0x08FF) && \
+ ( (c) <= 0x06ff || \
+ ((c) >= 0x0750 && (c) <= 0x077f) || \
+ (c) >= 0x08a0 ) )
+#define IS_ARABIC_ALPHABETIC(c) (IS_ARABIC_CHAR(c) && \
+ !(IS_HINDI_DIGIT(c) || IS_FARSI_DIGIT(c) || IS_ARABIC_SEPARATOR(c)))
+
+/**
+ * The codepoint ranges in the following macros are based on the blocks
+ * allocated, or planned to be allocated, to right-to-left characters in the
+ * BMP (Basic Multilingual Plane) and SMP (Supplementary Multilingual Plane)
+ * according to
+ * http://unicode.org/Public/UNIDATA/extracted/DerivedBidiClass.txt and
+ * http://www.unicode.org/roadmaps/
+ */
+
+#define IS_IN_BMP_RTL_BLOCK(c) ((0x590 <= (c)) && ((c) <= 0x8ff))
+#define IS_RTL_PRESENTATION_FORM(c) (((0xfb1d <= (c)) && ((c) <= 0xfdff)) || \
+ ((0xfe70 <= (c)) && ((c) <= 0xfefc)))
+#define IS_IN_SMP_RTL_BLOCK(c) (((0x10800 <= (c)) && ((c) <= 0x10fff)) || \
+ ((0x1e800 <= (c)) && ((c) <= 0x1eFFF)))
+#define UCS2_CHAR_IS_BIDI(c) ((IS_IN_BMP_RTL_BLOCK(c)) || \
+ (IS_RTL_PRESENTATION_FORM(c)) || \
+ (c) == 0xD802 || (c) == 0xD803)
+#define UTF32_CHAR_IS_BIDI(c) ((IS_IN_BMP_RTL_BLOCK(c)) || \
+ (IS_RTL_PRESENTATION_FORM(c)) || \
+ (IS_IN_SMP_RTL_BLOCK(c)))
+#endif /* nsBidiUtils_h__ */
diff --git a/intl/unicharutil/util/nsSpecialCasingData.cpp b/intl/unicharutil/util/nsSpecialCasingData.cpp
new file mode 100644
index 000000000..ceca55d86
--- /dev/null
+++ b/intl/unicharutil/util/nsSpecialCasingData.cpp
@@ -0,0 +1,202 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* Auto-generated from files in the Unicode Character Database
+ by genSpecialCasingData.pl - do not edit! */
+
+#include "nsSpecialCasingData.h"
+#include "mozilla/ArrayUtils.h" // for ArrayLength
+#include <stdlib.h> // for bsearch
+
+/* SpecialCasing-8.0.0.txt */
+/* Date: 2014-12-16, 23:08:04 GMT [MD] */
+
+using mozilla::unicode::MultiCharMapping;
+
+static const MultiCharMapping CaseSpecials_Lower[] = {
+ { 0x0130, {0x0069, 0x0307, 0x0000} }, // LATIN CAPITAL LETTER I WITH DOT ABOVE
+};
+
+static const MultiCharMapping CaseSpecials_Upper[] = {
+ { 0x00df, {0x0053, 0x0053, 0x0000} }, // LATIN SMALL LETTER SHARP S
+ { 0x0149, {0x02bc, 0x004e, 0x0000} }, // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+ { 0x01f0, {0x004a, 0x030c, 0x0000} }, // LATIN SMALL LETTER J WITH CARON
+ { 0x0390, {0x03aa, 0x0301, 0x0000} }, // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ { 0x03b0, {0x03ab, 0x0301, 0x0000} }, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ { 0x0587, {0x0535, 0x0552, 0x0000} }, // ARMENIAN SMALL LIGATURE ECH YIWN
+ { 0x1e96, {0x0048, 0x0331, 0x0000} }, // LATIN SMALL LETTER H WITH LINE BELOW
+ { 0x1e97, {0x0054, 0x0308, 0x0000} }, // LATIN SMALL LETTER T WITH DIAERESIS
+ { 0x1e98, {0x0057, 0x030a, 0x0000} }, // LATIN SMALL LETTER W WITH RING ABOVE
+ { 0x1e99, {0x0059, 0x030a, 0x0000} }, // LATIN SMALL LETTER Y WITH RING ABOVE
+ { 0x1e9a, {0x0041, 0x02be, 0x0000} }, // LATIN SMALL LETTER A WITH RIGHT HALF RING
+ { 0x1f50, {0x03a5, 0x0313, 0x0000} }, // GREEK SMALL LETTER UPSILON WITH PSILI
+ { 0x1f52, {0x03a5, 0x0313, 0x0300} }, // GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+ { 0x1f54, {0x03a5, 0x0313, 0x0301} }, // GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+ { 0x1f56, {0x03a5, 0x0313, 0x0342} }, // GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+ { 0x1f80, {0x1f08, 0x0399, 0x0000} }, // GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+ { 0x1f81, {0x1f09, 0x0399, 0x0000} }, // GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+ { 0x1f82, {0x1f0a, 0x0399, 0x0000} }, // GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+ { 0x1f83, {0x1f0b, 0x0399, 0x0000} }, // GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+ { 0x1f84, {0x1f0c, 0x0399, 0x0000} }, // GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+ { 0x1f85, {0x1f0d, 0x0399, 0x0000} }, // GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+ { 0x1f86, {0x1f0e, 0x0399, 0x0000} }, // GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+ { 0x1f87, {0x1f0f, 0x0399, 0x0000} }, // GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ { 0x1f88, {0x1f08, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+ { 0x1f89, {0x1f09, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+ { 0x1f8a, {0x1f0a, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+ { 0x1f8b, {0x1f0b, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+ { 0x1f8c, {0x1f0c, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+ { 0x1f8d, {0x1f0d, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+ { 0x1f8e, {0x1f0e, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+ { 0x1f8f, {0x1f0f, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ { 0x1f90, {0x1f28, 0x0399, 0x0000} }, // GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+ { 0x1f91, {0x1f29, 0x0399, 0x0000} }, // GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+ { 0x1f92, {0x1f2a, 0x0399, 0x0000} }, // GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+ { 0x1f93, {0x1f2b, 0x0399, 0x0000} }, // GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+ { 0x1f94, {0x1f2c, 0x0399, 0x0000} }, // GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+ { 0x1f95, {0x1f2d, 0x0399, 0x0000} }, // GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+ { 0x1f96, {0x1f2e, 0x0399, 0x0000} }, // GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+ { 0x1f97, {0x1f2f, 0x0399, 0x0000} }, // GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ { 0x1f98, {0x1f28, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+ { 0x1f99, {0x1f29, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+ { 0x1f9a, {0x1f2a, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+ { 0x1f9b, {0x1f2b, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+ { 0x1f9c, {0x1f2c, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+ { 0x1f9d, {0x1f2d, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+ { 0x1f9e, {0x1f2e, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+ { 0x1f9f, {0x1f2f, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ { 0x1fa0, {0x1f68, 0x0399, 0x0000} }, // GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+ { 0x1fa1, {0x1f69, 0x0399, 0x0000} }, // GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+ { 0x1fa2, {0x1f6a, 0x0399, 0x0000} }, // GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+ { 0x1fa3, {0x1f6b, 0x0399, 0x0000} }, // GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+ { 0x1fa4, {0x1f6c, 0x0399, 0x0000} }, // GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+ { 0x1fa5, {0x1f6d, 0x0399, 0x0000} }, // GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+ { 0x1fa6, {0x1f6e, 0x0399, 0x0000} }, // GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+ { 0x1fa7, {0x1f6f, 0x0399, 0x0000} }, // GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ { 0x1fa8, {0x1f68, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+ { 0x1fa9, {0x1f69, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+ { 0x1faa, {0x1f6a, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+ { 0x1fab, {0x1f6b, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+ { 0x1fac, {0x1f6c, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+ { 0x1fad, {0x1f6d, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+ { 0x1fae, {0x1f6e, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+ { 0x1faf, {0x1f6f, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ { 0x1fb2, {0x1fba, 0x0399, 0x0000} }, // GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+ { 0x1fb3, {0x0391, 0x0399, 0x0000} }, // GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+ { 0x1fb4, {0x0386, 0x0399, 0x0000} }, // GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ { 0x1fb6, {0x0391, 0x0342, 0x0000} }, // GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+ { 0x1fb7, {0x0391, 0x0342, 0x0399} }, // GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+ { 0x1fbc, {0x0391, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ { 0x1fc2, {0x1fca, 0x0399, 0x0000} }, // GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+ { 0x1fc3, {0x0397, 0x0399, 0x0000} }, // GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+ { 0x1fc4, {0x0389, 0x0399, 0x0000} }, // GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ { 0x1fc6, {0x0397, 0x0342, 0x0000} }, // GREEK SMALL LETTER ETA WITH PERISPOMENI
+ { 0x1fc7, {0x0397, 0x0342, 0x0399} }, // GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+ { 0x1fcc, {0x0397, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ { 0x1fd2, {0x03aa, 0x0300, 0x0000} }, // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+ { 0x1fd3, {0x03aa, 0x0301, 0x0000} }, // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ { 0x1fd6, {0x0399, 0x0342, 0x0000} }, // GREEK SMALL LETTER IOTA WITH PERISPOMENI
+ { 0x1fd7, {0x03aa, 0x0342, 0x0000} }, // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+ { 0x1fe2, {0x03ab, 0x0300, 0x0000} }, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+ { 0x1fe3, {0x03ab, 0x0301, 0x0000} }, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+ { 0x1fe4, {0x03a1, 0x0313, 0x0000} }, // GREEK SMALL LETTER RHO WITH PSILI
+ { 0x1fe6, {0x03a5, 0x0342, 0x0000} }, // GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+ { 0x1fe7, {0x03ab, 0x0342, 0x0000} }, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+ { 0x1ff2, {0x1ffa, 0x0399, 0x0000} }, // GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+ { 0x1ff3, {0x03a9, 0x0399, 0x0000} }, // GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+ { 0x1ff4, {0x038f, 0x0399, 0x0000} }, // GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ { 0x1ff6, {0x03a9, 0x0342, 0x0000} }, // GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+ { 0x1ff7, {0x03a9, 0x0342, 0x0399} }, // GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+ { 0x1ffc, {0x03a9, 0x0399, 0x0000} }, // GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ { 0xfb00, {0x0046, 0x0046, 0x0000} }, // LATIN SMALL LIGATURE FF
+ { 0xfb01, {0x0046, 0x0049, 0x0000} }, // LATIN SMALL LIGATURE FI
+ { 0xfb02, {0x0046, 0x004c, 0x0000} }, // LATIN SMALL LIGATURE FL
+ { 0xfb03, {0x0046, 0x0046, 0x0049} }, // LATIN SMALL LIGATURE FFI
+ { 0xfb04, {0x0046, 0x0046, 0x004c} }, // LATIN SMALL LIGATURE FFL
+ { 0xfb05, {0x0053, 0x0054, 0x0000} }, // LATIN SMALL LIGATURE LONG S T
+ { 0xfb06, {0x0053, 0x0054, 0x0000} }, // LATIN SMALL LIGATURE ST
+ { 0xfb13, {0x0544, 0x0546, 0x0000} }, // ARMENIAN SMALL LIGATURE MEN NOW
+ { 0xfb14, {0x0544, 0x0535, 0x0000} }, // ARMENIAN SMALL LIGATURE MEN ECH
+ { 0xfb15, {0x0544, 0x053b, 0x0000} }, // ARMENIAN SMALL LIGATURE MEN INI
+ { 0xfb16, {0x054e, 0x0546, 0x0000} }, // ARMENIAN SMALL LIGATURE VEW NOW
+ { 0xfb17, {0x0544, 0x053d, 0x0000} }, // ARMENIAN SMALL LIGATURE MEN XEH
+};
+
+static const MultiCharMapping CaseSpecials_Title[] = {
+ { 0x00df, {0x0053, 0x0073, 0x0000} }, // LATIN SMALL LETTER SHARP S
+ { 0x0149, {0x02bc, 0x004e, 0x0000} }, // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+ { 0x01f0, {0x004a, 0x030c, 0x0000} }, // LATIN SMALL LETTER J WITH CARON
+ { 0x0390, {0x03aa, 0x0301, 0x0000} }, // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ { 0x03b0, {0x03ab, 0x0301, 0x0000} }, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ { 0x0587, {0x0535, 0x0582, 0x0000} }, // ARMENIAN SMALL LIGATURE ECH YIWN
+ { 0x1e96, {0x0048, 0x0331, 0x0000} }, // LATIN SMALL LETTER H WITH LINE BELOW
+ { 0x1e97, {0x0054, 0x0308, 0x0000} }, // LATIN SMALL LETTER T WITH DIAERESIS
+ { 0x1e98, {0x0057, 0x030a, 0x0000} }, // LATIN SMALL LETTER W WITH RING ABOVE
+ { 0x1e99, {0x0059, 0x030a, 0x0000} }, // LATIN SMALL LETTER Y WITH RING ABOVE
+ { 0x1e9a, {0x0041, 0x02be, 0x0000} }, // LATIN SMALL LETTER A WITH RIGHT HALF RING
+ { 0x1f50, {0x03a5, 0x0313, 0x0000} }, // GREEK SMALL LETTER UPSILON WITH PSILI
+ { 0x1f52, {0x03a5, 0x0313, 0x0300} }, // GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+ { 0x1f54, {0x03a5, 0x0313, 0x0301} }, // GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+ { 0x1f56, {0x03a5, 0x0313, 0x0342} }, // GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+ { 0x1fb2, {0x1fba, 0x0345, 0x0000} }, // GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+ { 0x1fb4, {0x0386, 0x0345, 0x0000} }, // GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ { 0x1fb6, {0x0391, 0x0342, 0x0000} }, // GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+ { 0x1fb7, {0x0391, 0x0342, 0x0345} }, // GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+ { 0x1fc2, {0x1fca, 0x0345, 0x0000} }, // GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+ { 0x1fc4, {0x0389, 0x0345, 0x0000} }, // GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ { 0x1fc6, {0x0397, 0x0342, 0x0000} }, // GREEK SMALL LETTER ETA WITH PERISPOMENI
+ { 0x1fc7, {0x0397, 0x0342, 0x0345} }, // GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+ { 0x1fd2, {0x03aa, 0x0300, 0x0000} }, // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+ { 0x1fd3, {0x03aa, 0x0301, 0x0000} }, // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ { 0x1fd6, {0x0399, 0x0342, 0x0000} }, // GREEK SMALL LETTER IOTA WITH PERISPOMENI
+ { 0x1fd7, {0x03aa, 0x0342, 0x0000} }, // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+ { 0x1fe2, {0x03ab, 0x0300, 0x0000} }, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+ { 0x1fe3, {0x03ab, 0x0301, 0x0000} }, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+ { 0x1fe4, {0x03a1, 0x0313, 0x0000} }, // GREEK SMALL LETTER RHO WITH PSILI
+ { 0x1fe6, {0x03a5, 0x0342, 0x0000} }, // GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+ { 0x1fe7, {0x03ab, 0x0342, 0x0000} }, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+ { 0x1ff2, {0x1ffa, 0x0345, 0x0000} }, // GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+ { 0x1ff4, {0x038f, 0x0345, 0x0000} }, // GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ { 0x1ff6, {0x03a9, 0x0342, 0x0000} }, // GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+ { 0x1ff7, {0x03a9, 0x0342, 0x0345} }, // GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+ { 0xfb00, {0x0046, 0x0066, 0x0000} }, // LATIN SMALL LIGATURE FF
+ { 0xfb01, {0x0046, 0x0069, 0x0000} }, // LATIN SMALL LIGATURE FI
+ { 0xfb02, {0x0046, 0x006c, 0x0000} }, // LATIN SMALL LIGATURE FL
+ { 0xfb03, {0x0046, 0x0066, 0x0069} }, // LATIN SMALL LIGATURE FFI
+ { 0xfb04, {0x0046, 0x0066, 0x006c} }, // LATIN SMALL LIGATURE FFL
+ { 0xfb05, {0x0053, 0x0074, 0x0000} }, // LATIN SMALL LIGATURE LONG S T
+ { 0xfb06, {0x0053, 0x0074, 0x0000} }, // LATIN SMALL LIGATURE ST
+ { 0xfb13, {0x0544, 0x0576, 0x0000} }, // ARMENIAN SMALL LIGATURE MEN NOW
+ { 0xfb14, {0x0544, 0x0565, 0x0000} }, // ARMENIAN SMALL LIGATURE MEN ECH
+ { 0xfb15, {0x0544, 0x056b, 0x0000} }, // ARMENIAN SMALL LIGATURE MEN INI
+ { 0xfb16, {0x054e, 0x0576, 0x0000} }, // ARMENIAN SMALL LIGATURE VEW NOW
+ { 0xfb17, {0x0544, 0x056d, 0x0000} }, // ARMENIAN SMALL LIGATURE MEN XEH
+};
+
+static int CompareMCM(const void* aKey, const void* aElement)
+{
+ const uint32_t ch = *static_cast<const uint32_t*>(aKey);
+ const MultiCharMapping* mcm = static_cast<const MultiCharMapping*>(aElement);
+ return int(ch) - int(mcm->mOriginalChar);
+}
+
+#define MAKE_SPECIAL_CASE_ACCESSOR(which) \
+ const MultiCharMapping* \
+ Special##which(uint32_t aChar) \
+ { \
+ const void* p = bsearch(&aChar, CaseSpecials_##which, \
+ mozilla::ArrayLength(CaseSpecials_##which), \
+ sizeof(MultiCharMapping), CompareMCM); \
+ return static_cast<const MultiCharMapping*>(p); \
+ }
+
+namespace mozilla {
+namespace unicode {
+
+MAKE_SPECIAL_CASE_ACCESSOR(Lower)
+MAKE_SPECIAL_CASE_ACCESSOR(Upper)
+MAKE_SPECIAL_CASE_ACCESSOR(Title)
+
+} // namespace unicode
+} // namespace mozilla
diff --git a/intl/unicharutil/util/nsSpecialCasingData.h b/intl/unicharutil/util/nsSpecialCasingData.h
new file mode 100644
index 000000000..52a987983
--- /dev/null
+++ b/intl/unicharutil/util/nsSpecialCasingData.h
@@ -0,0 +1,26 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include <stdint.h>
+
+namespace mozilla {
+namespace unicode {
+
+// Multi-character mappings (from SpecialCasing.txt) map a single Unicode
+// value to a sequence of 2 or 3 Unicode characters. There are currently none
+// defined outside the BMP, so we can use char16_t here. Unused trailing
+// positions in mMappedChars are set to 0.
+struct MultiCharMapping {
+ char16_t mOriginalChar;
+ char16_t mMappedChars[3];
+};
+
+// Return a pointer to the special case mapping for the given character;
+// returns nullptr if no such mapping is defined.
+const MultiCharMapping* SpecialUpper(uint32_t aCh);
+const MultiCharMapping* SpecialLower(uint32_t aCh);
+const MultiCharMapping* SpecialTitle(uint32_t aCh);
+
+} // namespace unicode
+} // namespace mozilla
diff --git a/intl/unicharutil/util/nsUnicharUtils.cpp b/intl/unicharutil/util/nsUnicharUtils.cpp
new file mode 100644
index 000000000..57c482841
--- /dev/null
+++ b/intl/unicharutil/util/nsUnicharUtils.cpp
@@ -0,0 +1,435 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsUnicharUtils.h"
+#include "nsXPCOMStrings.h"
+#include "nsUTF8Utils.h"
+#include "nsUnicodeProperties.h"
+#include "mozilla/Likely.h"
+#include "mozilla/HashFunctions.h"
+
+// We map x -> x, except for upper-case letters,
+// which we map to their lower-case equivalents.
+static const uint8_t gASCIIToLower [128] = {
+ 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,
+};
+
+#define IS_ASCII(u) ((u) < 0x80)
+#define IS_ASCII_UPPER(u) (('A' <= (u)) && ((u) <= 'Z'))
+#define IS_ASCII_LOWER(u) (('a' <= (u)) && ((u) <= 'z'))
+#define IS_ASCII_ALPHA(u) (IS_ASCII_UPPER(u) || IS_ASCII_LOWER(u))
+#define IS_ASCII_SPACE(u) (' ' == (u))
+
+// We want ToLowerCase(uint32_t) and ToLowerCaseASCII(uint32_t) to be fast
+// when they're called from within the case-insensitive comparators, so we
+// define inlined versions.
+static MOZ_ALWAYS_INLINE uint32_t
+ToLowerCase_inline(uint32_t aChar)
+{
+ if (IS_ASCII(aChar)) {
+ return gASCIIToLower[aChar];
+ }
+
+ return mozilla::unicode::GetLowercase(aChar);
+}
+
+static MOZ_ALWAYS_INLINE uint32_t
+ToLowerCaseASCII_inline(const uint32_t aChar)
+{
+ if (IS_ASCII(aChar)) {
+ return gASCIIToLower[aChar];
+ }
+
+ return aChar;
+}
+
+void
+ToLowerCase(nsAString& aString)
+{
+ char16_t *buf = aString.BeginWriting();
+ ToLowerCase(buf, buf, aString.Length());
+}
+
+void
+ToLowerCase(const nsAString& aSource,
+ nsAString& aDest)
+{
+ const char16_t *in;
+ char16_t *out;
+ uint32_t len = NS_StringGetData(aSource, &in);
+ NS_StringGetMutableData(aDest, len, &out);
+ NS_ASSERTION(out, "Uh...");
+ ToLowerCase(in, out, len);
+}
+
+uint32_t
+ToLowerCaseASCII(const uint32_t aChar)
+{
+ return ToLowerCaseASCII_inline(aChar);
+}
+
+void
+ToUpperCase(nsAString& aString)
+{
+ char16_t *buf = aString.BeginWriting();
+ ToUpperCase(buf, buf, aString.Length());
+}
+
+void
+ToUpperCase(const nsAString& aSource,
+ nsAString& aDest)
+{
+ const char16_t *in;
+ char16_t *out;
+ uint32_t len = NS_StringGetData(aSource, &in);
+ NS_StringGetMutableData(aDest, len, &out);
+ NS_ASSERTION(out, "Uh...");
+ ToUpperCase(in, out, len);
+}
+
+#ifdef MOZILLA_INTERNAL_API
+
+int32_t
+nsCaseInsensitiveStringComparator::operator()(const char16_t* lhs,
+ const char16_t* rhs,
+ uint32_t lLength,
+ uint32_t rLength) const
+{
+ return (lLength == rLength) ? CaseInsensitiveCompare(lhs, rhs, lLength) :
+ (lLength > rLength) ? 1 : -1;
+}
+
+int32_t
+nsCaseInsensitiveUTF8StringComparator::operator()(const char* lhs,
+ const char* rhs,
+ uint32_t lLength,
+ uint32_t rLength) const
+{
+ return CaseInsensitiveCompare(lhs, rhs, lLength, rLength);
+}
+
+int32_t
+nsASCIICaseInsensitiveStringComparator::operator()(const char16_t* lhs,
+ const char16_t* rhs,
+ uint32_t lLength,
+ uint32_t rLength) const
+{
+ if (lLength != rLength) {
+ if (lLength > rLength)
+ return 1;
+ return -1;
+ }
+
+ while (rLength) {
+ // we don't care about surrogates here, because we're only
+ // lowercasing the ASCII range
+ char16_t l = *lhs++;
+ char16_t r = *rhs++;
+ if (l != r) {
+ l = ToLowerCaseASCII_inline(l);
+ r = ToLowerCaseASCII_inline(r);
+
+ if (l > r)
+ return 1;
+ else if (r > l)
+ return -1;
+ }
+ rLength--;
+ }
+
+ return 0;
+}
+
+#endif // MOZILLA_INTERNAL_API
+
+uint32_t
+ToLowerCase(uint32_t aChar)
+{
+ return ToLowerCase_inline(aChar);
+}
+
+void
+ToLowerCase(const char16_t *aIn, char16_t *aOut, uint32_t aLen)
+{
+ for (uint32_t i = 0; i < aLen; i++) {
+ uint32_t ch = aIn[i];
+ if (NS_IS_HIGH_SURROGATE(ch) && i < aLen - 1 &&
+ NS_IS_LOW_SURROGATE(aIn[i + 1])) {
+ ch = mozilla::unicode::GetLowercase(SURROGATE_TO_UCS4(ch, aIn[i + 1]));
+ NS_ASSERTION(!IS_IN_BMP(ch), "case mapping crossed BMP/SMP boundary!");
+ aOut[i++] = H_SURROGATE(ch);
+ aOut[i] = L_SURROGATE(ch);
+ continue;
+ }
+ aOut[i] = ToLowerCase(ch);
+ }
+}
+
+uint32_t
+ToUpperCase(uint32_t aChar)
+{
+ if (IS_ASCII(aChar)) {
+ if (IS_ASCII_LOWER(aChar)) {
+ return aChar - 0x20;
+ }
+ return aChar;
+ }
+
+ return mozilla::unicode::GetUppercase(aChar);
+}
+
+void
+ToUpperCase(const char16_t *aIn, char16_t *aOut, uint32_t aLen)
+{
+ for (uint32_t i = 0; i < aLen; i++) {
+ uint32_t ch = aIn[i];
+ if (NS_IS_HIGH_SURROGATE(ch) && i < aLen - 1 &&
+ NS_IS_LOW_SURROGATE(aIn[i + 1])) {
+ ch = mozilla::unicode::GetUppercase(SURROGATE_TO_UCS4(ch, aIn[i + 1]));
+ NS_ASSERTION(!IS_IN_BMP(ch), "case mapping crossed BMP/SMP boundary!");
+ aOut[i++] = H_SURROGATE(ch);
+ aOut[i] = L_SURROGATE(ch);
+ continue;
+ }
+ aOut[i] = ToUpperCase(ch);
+ }
+}
+
+uint32_t
+ToTitleCase(uint32_t aChar)
+{
+ if (IS_ASCII(aChar)) {
+ return ToUpperCase(aChar);
+ }
+
+ return mozilla::unicode::GetTitlecaseForLower(aChar);
+}
+
+int32_t
+CaseInsensitiveCompare(const char16_t *a,
+ const char16_t *b,
+ uint32_t len)
+{
+ NS_ASSERTION(a && b, "Do not pass in invalid pointers!");
+
+ if (len) {
+ do {
+ uint32_t c1 = *a++;
+ uint32_t c2 = *b++;
+
+ // Unfortunately, we need to check for surrogates BEFORE we check
+ // for equality, because we could have identical high surrogates
+ // but non-identical characters, so we can't just skip them
+
+ // If c1 isn't a surrogate, we don't bother to check c2;
+ // in the case where it _is_ a surrogate, we're definitely going to get
+ // a mismatch, and don't need to interpret and lowercase it
+
+ if (NS_IS_HIGH_SURROGATE(c1) && len > 1 && NS_IS_LOW_SURROGATE(*a)) {
+ c1 = SURROGATE_TO_UCS4(c1, *a++);
+ if (NS_IS_HIGH_SURROGATE(c2) && NS_IS_LOW_SURROGATE(*b)) {
+ c2 = SURROGATE_TO_UCS4(c2, *b++);
+ }
+ // If c2 wasn't a surrogate, decrementing len means we'd stop
+ // short of the end of string b, but that doesn't actually matter
+ // because we're going to find a mismatch and return early
+ --len;
+ }
+
+ if (c1 != c2) {
+ c1 = ToLowerCase_inline(c1);
+ c2 = ToLowerCase_inline(c2);
+ if (c1 != c2) {
+ if (c1 < c2) {
+ return -1;
+ }
+ return 1;
+ }
+ }
+ } while (--len != 0);
+ }
+ return 0;
+}
+
+// Calculates the codepoint of the UTF8 sequence starting at aStr. Sets aNext
+// to the byte following the end of the sequence.
+//
+// If the sequence is invalid, or if computing the codepoint would take us off
+// the end of the string (as marked by aEnd), returns -1 and does not set
+// aNext. Note that this function doesn't check that aStr < aEnd -- it assumes
+// you've done that already.
+static MOZ_ALWAYS_INLINE uint32_t
+GetLowerUTF8Codepoint(const char* aStr, const char* aEnd, const char **aNext)
+{
+ // Convert to unsigned char so that stuffing chars into PRUint32s doesn't
+ // sign extend.
+ const unsigned char *str = (unsigned char*)aStr;
+
+ if (UTF8traits::isASCII(str[0])) {
+ // It's ASCII; just convert to lower-case and return it.
+ *aNext = aStr + 1;
+ return gASCIIToLower[*str];
+ }
+ if (UTF8traits::is2byte(str[0]) && MOZ_LIKELY(aStr + 1 < aEnd)) {
+ // It's a two-byte sequence, so it looks like
+ // 110XXXXX 10XXXXXX.
+ // This is definitely in the BMP, so we can store straightaway into a
+ // uint16_t.
+
+ uint16_t c;
+ c = (str[0] & 0x1F) << 6;
+ c += (str[1] & 0x3F);
+
+ // we don't go through ToLowerCase here, because we know this isn't
+ // an ASCII character so the ASCII fast-path there is useless
+ c = mozilla::unicode::GetLowercase(c);
+
+ *aNext = aStr + 2;
+ return c;
+ }
+ if (UTF8traits::is3byte(str[0]) && MOZ_LIKELY(aStr + 2 < aEnd)) {
+ // It's a three-byte sequence, so it looks like
+ // 1110XXXX 10XXXXXX 10XXXXXX.
+ // This will just barely fit into 16-bits, so store into a uint16_t.
+
+ uint16_t c;
+ c = (str[0] & 0x0F) << 12;
+ c += (str[1] & 0x3F) << 6;
+ c += (str[2] & 0x3F);
+
+ c = mozilla::unicode::GetLowercase(c);
+
+ *aNext = aStr + 3;
+ return c;
+ }
+ if (UTF8traits::is4byte(str[0]) && MOZ_LIKELY(aStr + 3 < aEnd)) {
+ // It's a four-byte sequence, so it looks like
+ // 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX.
+
+ uint32_t c;
+ c = (str[0] & 0x07) << 18;
+ c += (str[1] & 0x3F) << 12;
+ c += (str[2] & 0x3F) << 6;
+ c += (str[3] & 0x3F);
+
+ c = mozilla::unicode::GetLowercase(c);
+
+ *aNext = aStr + 4;
+ return c;
+ }
+
+ // Hm, we don't understand this sequence.
+ return -1;
+}
+
+int32_t CaseInsensitiveCompare(const char *aLeft,
+ const char *aRight,
+ uint32_t aLeftBytes,
+ uint32_t aRightBytes)
+{
+ const char *leftEnd = aLeft + aLeftBytes;
+ const char *rightEnd = aRight + aRightBytes;
+
+ while (aLeft < leftEnd && aRight < rightEnd) {
+ uint32_t leftChar = GetLowerUTF8Codepoint(aLeft, leftEnd, &aLeft);
+ if (MOZ_UNLIKELY(leftChar == uint32_t(-1)))
+ return -1;
+
+ uint32_t rightChar = GetLowerUTF8Codepoint(aRight, rightEnd, &aRight);
+ if (MOZ_UNLIKELY(rightChar == uint32_t(-1)))
+ return -1;
+
+ // Now leftChar and rightChar are lower-case, so we can compare them.
+ if (leftChar != rightChar) {
+ if (leftChar > rightChar)
+ return 1;
+ return -1;
+ }
+ }
+
+ // Make sure that if one string is longer than the other we return the
+ // correct result.
+ if (aLeft < leftEnd)
+ return 1;
+ if (aRight < rightEnd)
+ return -1;
+
+ return 0;
+}
+
+bool
+CaseInsensitiveUTF8CharsEqual(const char* aLeft, const char* aRight,
+ const char* aLeftEnd, const char* aRightEnd,
+ const char** aLeftNext, const char** aRightNext,
+ bool* aErr)
+{
+ NS_ASSERTION(aLeftNext, "Out pointer shouldn't be null.");
+ NS_ASSERTION(aRightNext, "Out pointer shouldn't be null.");
+ NS_ASSERTION(aErr, "Out pointer shouldn't be null.");
+ NS_ASSERTION(aLeft < aLeftEnd, "aLeft must be less than aLeftEnd.");
+ NS_ASSERTION(aRight < aRightEnd, "aRight must be less than aRightEnd.");
+
+ uint32_t leftChar = GetLowerUTF8Codepoint(aLeft, aLeftEnd, aLeftNext);
+ if (MOZ_UNLIKELY(leftChar == uint32_t(-1))) {
+ *aErr = true;
+ return false;
+ }
+
+ uint32_t rightChar = GetLowerUTF8Codepoint(aRight, aRightEnd, aRightNext);
+ if (MOZ_UNLIKELY(rightChar == uint32_t(-1))) {
+ *aErr = true;
+ return false;
+ }
+
+ // Can't have an error past this point.
+ *aErr = false;
+
+ return leftChar == rightChar;
+}
+
+namespace mozilla {
+
+uint32_t
+HashUTF8AsUTF16(const char* aUTF8, uint32_t aLength, bool* aErr)
+{
+ uint32_t hash = 0;
+ const char* s = aUTF8;
+ const char* end = aUTF8 + aLength;
+
+ *aErr = false;
+
+ while (s < end)
+ {
+ uint32_t ucs4 = UTF8CharEnumerator::NextChar(&s, end, aErr);
+ if (*aErr) {
+ return 0;
+ }
+
+ if (ucs4 < PLANE1_BASE) {
+ hash = AddToHash(hash, ucs4);
+ }
+ else {
+ hash = AddToHash(hash, H_SURROGATE(ucs4), L_SURROGATE(ucs4));
+ }
+ }
+
+ return hash;
+}
+
+bool
+IsSegmentBreakSkipChar(uint32_t u)
+{
+ return unicode::IsEastAsianWidthFWH(u) &&
+ unicode::GetScriptCode(u) != unicode::Script::HANGUL;
+}
+
+} // namespace mozilla
diff --git a/intl/unicharutil/util/nsUnicharUtils.h b/intl/unicharutil/util/nsUnicharUtils.h
new file mode 100644
index 000000000..e62772067
--- /dev/null
+++ b/intl/unicharutil/util/nsUnicharUtils.h
@@ -0,0 +1,152 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef nsUnicharUtils_h__
+#define nsUnicharUtils_h__
+
+#include "nsStringGlue.h"
+
+/* (0x3131u <= (u) && (u) <= 0x318eu) => Hangul Compatibility Jamo */
+/* (0xac00u <= (u) && (u) <= 0xd7a3u) => Hangul Syllables */
+#define IS_CJ_CHAR(u) \
+ ((0x2e80u <= (u) && (u) <= 0x312fu) || \
+ (0x3190u <= (u) && (u) <= 0xabffu) || \
+ (0xf900u <= (u) && (u) <= 0xfaffu) || \
+ (0xff00u <= (u) && (u) <= 0xffefu) )
+
+#define IS_ZERO_WIDTH_SPACE(u) ((u) == 0x200B)
+
+void ToLowerCase(nsAString&);
+void ToUpperCase(nsAString&);
+
+void ToLowerCase(const nsAString& aSource, nsAString& aDest);
+void ToUpperCase(const nsAString& aSource, nsAString& aDest);
+
+uint32_t ToLowerCase(uint32_t);
+uint32_t ToUpperCase(uint32_t);
+uint32_t ToTitleCase(uint32_t);
+
+void ToLowerCase(const char16_t*, char16_t*, uint32_t);
+void ToUpperCase(const char16_t*, char16_t*, uint32_t);
+
+inline bool IsUpperCase(uint32_t c) {
+ return ToLowerCase(c) != c;
+}
+
+inline bool IsLowerCase(uint32_t c) {
+ return ToUpperCase(c) != c;
+}
+
+#ifdef MOZILLA_INTERNAL_API
+
+class nsCaseInsensitiveStringComparator : public nsStringComparator
+{
+public:
+ virtual int32_t operator() (const char16_t*,
+ const char16_t*,
+ uint32_t,
+ uint32_t) const override;
+};
+
+class nsCaseInsensitiveUTF8StringComparator : public nsCStringComparator
+{
+public:
+ virtual int32_t operator() (const char*,
+ const char*,
+ uint32_t,
+ uint32_t) const override;
+};
+
+class nsCaseInsensitiveStringArrayComparator
+{
+public:
+ template<class A, class B>
+ bool Equals(const A& a, const B& b) const {
+ return a.Equals(b, nsCaseInsensitiveStringComparator());
+ }
+};
+
+class nsASCIICaseInsensitiveStringComparator : public nsStringComparator
+{
+public:
+ nsASCIICaseInsensitiveStringComparator() {}
+ virtual int operator() (const char16_t*,
+ const char16_t*,
+ uint32_t,
+ uint32_t) const override;
+};
+
+inline bool
+CaseInsensitiveFindInReadable(const nsAString& aPattern,
+ nsAString::const_iterator& aSearchStart,
+ nsAString::const_iterator& aSearchEnd)
+{
+ return FindInReadable(aPattern, aSearchStart, aSearchEnd,
+ nsCaseInsensitiveStringComparator());
+}
+
+inline bool
+CaseInsensitiveFindInReadable(const nsAString& aPattern,
+ const nsAString& aHay)
+{
+ nsAString::const_iterator searchBegin, searchEnd;
+ return FindInReadable(aPattern, aHay.BeginReading(searchBegin),
+ aHay.EndReading(searchEnd),
+ nsCaseInsensitiveStringComparator());
+}
+
+#endif // MOZILLA_INTERNAL_API
+
+int32_t
+CaseInsensitiveCompare(const char16_t *a, const char16_t *b, uint32_t len);
+
+int32_t
+CaseInsensitiveCompare(const char* aLeft, const char* aRight,
+ uint32_t aLeftBytes, uint32_t aRightBytes);
+
+/**
+ * This function determines whether the UTF-8 sequence pointed to by aLeft is
+ * case-insensitively-equal to the UTF-8 sequence pointed to by aRight.
+ *
+ * aLeftEnd marks the first memory location past aLeft that is not part of
+ * aLeft; aRightEnd similarly marks the end of aRight.
+ *
+ * The function assumes that aLeft < aLeftEnd and aRight < aRightEnd.
+ *
+ * The function stores the addresses of the next characters in the sequence
+ * into aLeftNext and aRightNext. It's up to the caller to make sure that the
+ * returned pointers are valid -- i.e. the function may return aLeftNext >=
+ * aLeftEnd or aRightNext >= aRightEnd.
+ *
+ * If the function encounters invalid text, it sets aErr to true and returns
+ * false, possibly leaving aLeftNext and aRightNext uninitialized. If the
+ * function returns true, aErr is guaranteed to be false and both aLeftNext and
+ * aRightNext are guaranteed to be initialized.
+ */
+bool
+CaseInsensitiveUTF8CharsEqual(const char* aLeft, const char* aRight,
+ const char* aLeftEnd, const char* aRightEnd,
+ const char** aLeftNext, const char** aRightNext,
+ bool* aErr);
+
+namespace mozilla {
+
+/**
+ * Hash a UTF8 string as though it were a UTF16 string.
+ *
+ * The value returned is the same as if we converted the string to UTF16 and
+ * then ran HashString() on the result.
+ *
+ * The given |length| is in bytes.
+ */
+uint32_t
+HashUTF8AsUTF16(const char* aUTF8, uint32_t aLength, bool* aErr);
+
+bool
+IsSegmentBreakSkipChar(uint32_t u);
+
+} // namespace mozilla
+
+#endif /* nsUnicharUtils_h__ */
diff --git a/intl/unicharutil/util/nsUnicodeProperties.cpp b/intl/unicharutil/util/nsUnicodeProperties.cpp
new file mode 100644
index 000000000..9aa5ef8e3
--- /dev/null
+++ b/intl/unicharutil/util/nsUnicodeProperties.cpp
@@ -0,0 +1,479 @@
+/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:set ts=4 sw=4 sts=4 et cindent: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsUnicodeProperties.h"
+#include "nsUnicodePropertyData.cpp"
+
+#include "mozilla/ArrayUtils.h"
+#include "nsCharTraits.h"
+
+#define UNICODE_BMP_LIMIT 0x10000
+#define UNICODE_LIMIT 0x110000
+
+#ifndef ENABLE_INTL_API
+static const nsCharProps1&
+GetCharProps1(uint32_t aCh)
+{
+ if (aCh < UNICODE_BMP_LIMIT) {
+ return sCharProp1Values[sCharProp1Pages[0][aCh >> kCharProp1CharBits]]
+ [aCh & ((1 << kCharProp1CharBits) - 1)];
+ }
+ if (aCh < (kCharProp1MaxPlane + 1) * 0x10000) {
+ return sCharProp1Values[sCharProp1Pages[sCharProp1Planes[(aCh >> 16) - 1]]
+ [(aCh & 0xffff) >> kCharProp1CharBits]]
+ [aCh & ((1 << kCharProp1CharBits) - 1)];
+ }
+
+ // Default values for unassigned
+ static const nsCharProps1 undefined = {
+ 0, // Index to mirrored char offsets
+ 0, // Hangul Syllable type
+ 0 // Combining class
+ };
+ return undefined;
+}
+#endif
+
+const nsCharProps2&
+GetCharProps2(uint32_t aCh)
+{
+ if (aCh < UNICODE_BMP_LIMIT) {
+ return sCharProp2Values[sCharProp2Pages[0][aCh >> kCharProp2CharBits]]
+ [aCh & ((1 << kCharProp2CharBits) - 1)];
+ }
+ if (aCh < (kCharProp2MaxPlane + 1) * 0x10000) {
+ return sCharProp2Values[sCharProp2Pages[sCharProp2Planes[(aCh >> 16) - 1]]
+ [(aCh & 0xffff) >> kCharProp2CharBits]]
+ [aCh & ((1 << kCharProp2CharBits) - 1)];
+ }
+
+ NS_NOTREACHED("Getting CharProps for codepoint outside Unicode range");
+ // Default values for unassigned
+ using namespace mozilla::unicode;
+ static const nsCharProps2 undefined = {
+#if ENABLE_INTL_API
+ VERTICAL_ORIENTATION_R,
+ XIDMOD_NOT_CHARS
+#else
+ uint8_t(Script::UNKNOWN),
+ PAIRED_BRACKET_TYPE_NONE,
+ 0, // EastAsianWidthFWH
+ HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED,
+ eCharType_LeftToRight,
+ XIDMOD_NOT_CHARS,
+ -1, // Numeric Value
+ VERTICAL_ORIENTATION_R
+#endif
+ };
+ return undefined;
+}
+
+namespace mozilla {
+
+namespace unicode {
+
+/*
+To store properties for a million Unicode codepoints compactly, we use
+a three-level array structure, with the Unicode values considered as
+three elements: Plane, Page, and Char.
+
+Space optimization happens because multiple Planes can refer to the same
+Page array, and multiple Pages can refer to the same Char array holding
+the actual values. In practice, most of the higher planes are empty and
+thus share the same data; and within the BMP, there are also many pages
+that repeat the same data for any given property.
+
+Plane is usually zero, so we skip a lookup in this case, and require
+that the Plane 0 pages are always the first set of entries in the Page
+array.
+
+The division of the remaining 16 bits into Page and Char fields is
+adjusted for each property (by experiment using the generation tool)
+to provide the most compact storage, depending on the distribution
+of values.
+*/
+
+const nsIUGenCategory::nsUGenCategory sDetailedToGeneralCategory[] = {
+ /*
+ * The order here corresponds to the HB_UNICODE_GENERAL_CATEGORY_* constants
+ * of the hb_unicode_general_category_t enum in gfx/harfbuzz/src/hb-unicode.h.
+ */
+ /* CONTROL */ nsIUGenCategory::kOther,
+ /* FORMAT */ nsIUGenCategory::kOther,
+ /* UNASSIGNED */ nsIUGenCategory::kOther,
+ /* PRIVATE_USE */ nsIUGenCategory::kOther,
+ /* SURROGATE */ nsIUGenCategory::kOther,
+ /* LOWERCASE_LETTER */ nsIUGenCategory::kLetter,
+ /* MODIFIER_LETTER */ nsIUGenCategory::kLetter,
+ /* OTHER_LETTER */ nsIUGenCategory::kLetter,
+ /* TITLECASE_LETTER */ nsIUGenCategory::kLetter,
+ /* UPPERCASE_LETTER */ nsIUGenCategory::kLetter,
+ /* COMBINING_MARK */ nsIUGenCategory::kMark,
+ /* ENCLOSING_MARK */ nsIUGenCategory::kMark,
+ /* NON_SPACING_MARK */ nsIUGenCategory::kMark,
+ /* DECIMAL_NUMBER */ nsIUGenCategory::kNumber,
+ /* LETTER_NUMBER */ nsIUGenCategory::kNumber,
+ /* OTHER_NUMBER */ nsIUGenCategory::kNumber,
+ /* CONNECT_PUNCTUATION */ nsIUGenCategory::kPunctuation,
+ /* DASH_PUNCTUATION */ nsIUGenCategory::kPunctuation,
+ /* CLOSE_PUNCTUATION */ nsIUGenCategory::kPunctuation,
+ /* FINAL_PUNCTUATION */ nsIUGenCategory::kPunctuation,
+ /* INITIAL_PUNCTUATION */ nsIUGenCategory::kPunctuation,
+ /* OTHER_PUNCTUATION */ nsIUGenCategory::kPunctuation,
+ /* OPEN_PUNCTUATION */ nsIUGenCategory::kPunctuation,
+ /* CURRENCY_SYMBOL */ nsIUGenCategory::kSymbol,
+ /* MODIFIER_SYMBOL */ nsIUGenCategory::kSymbol,
+ /* MATH_SYMBOL */ nsIUGenCategory::kSymbol,
+ /* OTHER_SYMBOL */ nsIUGenCategory::kSymbol,
+ /* LINE_SEPARATOR */ nsIUGenCategory::kSeparator,
+ /* PARAGRAPH_SEPARATOR */ nsIUGenCategory::kSeparator,
+ /* SPACE_SEPARATOR */ nsIUGenCategory::kSeparator
+};
+
+#ifdef ENABLE_INTL_API
+const hb_unicode_general_category_t sICUtoHBcategory[U_CHAR_CATEGORY_COUNT] = {
+ HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED, // U_GENERAL_OTHER_TYPES = 0,
+ HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER, // U_UPPERCASE_LETTER = 1,
+ HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER, // U_LOWERCASE_LETTER = 2,
+ HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER, // U_TITLECASE_LETTER = 3,
+ HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER, // U_MODIFIER_LETTER = 4,
+ HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER, // U_OTHER_LETTER = 5,
+ HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK, // U_NON_SPACING_MARK = 6,
+ HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK, // U_ENCLOSING_MARK = 7,
+ HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK, // U_COMBINING_SPACING_MARK = 8,
+ HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER, // U_DECIMAL_DIGIT_NUMBER = 9,
+ HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER, // U_LETTER_NUMBER = 10,
+ HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER, // U_OTHER_NUMBER = 11,
+ HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR, // U_SPACE_SEPARATOR = 12,
+ HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR, // U_LINE_SEPARATOR = 13,
+ HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR, // U_PARAGRAPH_SEPARATOR = 14,
+ HB_UNICODE_GENERAL_CATEGORY_CONTROL, // U_CONTROL_CHAR = 15,
+ HB_UNICODE_GENERAL_CATEGORY_FORMAT, // U_FORMAT_CHAR = 16,
+ HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE, // U_PRIVATE_USE_CHAR = 17,
+ HB_UNICODE_GENERAL_CATEGORY_SURROGATE, // U_SURROGATE = 18,
+ HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION, // U_DASH_PUNCTUATION = 19,
+ HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION, // U_START_PUNCTUATION = 20,
+ HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION, // U_END_PUNCTUATION = 21,
+ HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION, // U_CONNECTOR_PUNCTUATION = 22,
+ HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION, // U_OTHER_PUNCTUATION = 23,
+ HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL, // U_MATH_SYMBOL = 24,
+ HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL, // U_CURRENCY_SYMBOL = 25,
+ HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL, // U_MODIFIER_SYMBOL = 26,
+ HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL, // U_OTHER_SYMBOL = 27,
+ HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION, // U_INITIAL_PUNCTUATION = 28,
+ HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION, // U_FINAL_PUNCTUATION = 29,
+};
+#endif
+
+#if !ENABLE_INTL_API
+uint8_t GetGeneralCategory(uint32_t aCh) {
+ return GetCharProps2(aCh).mCategory;
+}
+
+nsCharType GetBidiCat(uint32_t aCh) {
+ return nsCharType(GetCharProps2(aCh).mBidiCategory);
+}
+
+int8_t GetNumericValue(uint32_t aCh) {
+ return GetCharProps2(aCh).mNumericValue;
+}
+
+uint32_t
+GetMirroredChar(uint32_t aCh)
+{
+ return aCh + sMirrorOffsets[GetCharProps1(aCh).mMirrorOffsetIndex];
+}
+
+bool
+HasMirroredChar(uint32_t aCh)
+{
+ return GetCharProps1(aCh).mMirrorOffsetIndex != 0;
+}
+
+uint8_t
+GetCombiningClass(uint32_t aCh)
+{
+ return GetCharProps1(aCh).mCombiningClass;
+}
+
+uint8_t
+GetLineBreakClass(uint32_t aCh)
+{
+ return GetCharProps2(aCh).mLineBreak;
+}
+
+Script
+GetScriptCode(uint32_t aCh)
+{
+ return Script(GetCharProps2(aCh).mScriptCode);
+}
+
+uint32_t
+GetScriptTagForCode(Script aScriptCode)
+{
+ // this will safely return 0 for negative script codes, too :)
+ if (static_cast<uint32_t>(aScriptCode) > ArrayLength(sScriptCodeToTag)) {
+ return 0;
+ }
+ return sScriptCodeToTag[static_cast<uint32_t>(aScriptCode)];
+}
+
+PairedBracketType GetPairedBracketType(uint32_t aCh)
+{
+ return PairedBracketType(GetCharProps2(aCh).mPairedBracketType);
+}
+
+uint32_t GetPairedBracket(uint32_t aCh)
+{
+ return GetPairedBracketType(aCh) != PAIRED_BRACKET_TYPE_NONE
+ ? GetMirroredChar(aCh) : aCh;
+}
+
+static inline uint32_t
+GetCaseMapValue(uint32_t aCh)
+{
+ if (aCh < UNICODE_BMP_LIMIT) {
+ return sCaseMapValues[sCaseMapPages[0][aCh >> kCaseMapCharBits]]
+ [aCh & ((1 << kCaseMapCharBits) - 1)];
+ }
+ if (aCh < (kCaseMapMaxPlane + 1) * 0x10000) {
+ return sCaseMapValues[sCaseMapPages[sCaseMapPlanes[(aCh >> 16) - 1]]
+ [(aCh & 0xffff) >> kCaseMapCharBits]]
+ [aCh & ((1 << kCaseMapCharBits) - 1)];
+ }
+ return 0;
+}
+
+uint32_t
+GetUppercase(uint32_t aCh)
+{
+ uint32_t mapValue = GetCaseMapValue(aCh);
+ if (mapValue & (kLowerToUpper | kTitleToUpper)) {
+ return aCh ^ (mapValue & kCaseMapCharMask);
+ }
+ if (mapValue & kLowerToTitle) {
+ return GetUppercase(aCh ^ (mapValue & kCaseMapCharMask));
+ }
+ return aCh;
+}
+
+uint32_t
+GetLowercase(uint32_t aCh)
+{
+ uint32_t mapValue = GetCaseMapValue(aCh);
+ if (mapValue & kUpperToLower) {
+ return aCh ^ (mapValue & kCaseMapCharMask);
+ }
+ if (mapValue & kTitleToUpper) {
+ return GetLowercase(aCh ^ (mapValue & kCaseMapCharMask));
+ }
+ return aCh;
+}
+
+uint32_t
+GetTitlecaseForLower(uint32_t aCh)
+{
+ uint32_t mapValue = GetCaseMapValue(aCh);
+ if (mapValue & (kLowerToTitle | kLowerToUpper)) {
+ return aCh ^ (mapValue & kCaseMapCharMask);
+ }
+ return aCh;
+}
+
+uint32_t
+GetTitlecaseForAll(uint32_t aCh)
+{
+ uint32_t mapValue = GetCaseMapValue(aCh);
+ if (mapValue & (kLowerToTitle | kLowerToUpper)) {
+ return aCh ^ (mapValue & kCaseMapCharMask);
+ }
+ if (mapValue & kUpperToLower) {
+ return GetTitlecaseForLower(aCh ^ (mapValue & kCaseMapCharMask));
+ }
+ return aCh;
+}
+
+bool IsEastAsianWidthFWH(uint32_t aCh)
+{
+ return GetCharProps2(aCh).mEastAsianWidthFWH;
+}
+#endif
+
+#define DEFINE_BMP_1PLANE_MAPPING_GET_FUNC(prefix_) \
+ uint32_t Get##prefix_(uint32_t aCh) \
+ { \
+ if (aCh >= UNICODE_BMP_LIMIT) { \
+ return aCh; \
+ } \
+ auto page = s##prefix_##Pages[aCh >> k##prefix_##CharBits]; \
+ auto index = aCh & ((1 << k##prefix_##CharBits) - 1); \
+ uint32_t v = s##prefix_##Values[page][index]; \
+ return v ? v : aCh; \
+ }
+
+// full-width mappings only exist for BMP characters; all others are
+// returned unchanged
+DEFINE_BMP_1PLANE_MAPPING_GET_FUNC(FullWidth)
+DEFINE_BMP_1PLANE_MAPPING_GET_FUNC(FullWidthInverse)
+
+bool
+IsClusterExtender(uint32_t aCh, uint8_t aCategory)
+{
+ return ((aCategory >= HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK &&
+ aCategory <= HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) ||
+ (aCh >= 0x200c && aCh <= 0x200d) || // ZWJ, ZWNJ
+ (aCh >= 0xff9e && aCh <= 0xff9f)); // katakana sound marks
+}
+
+enum HSType {
+#if ENABLE_INTL_API
+ HST_NONE = U_HST_NOT_APPLICABLE,
+ HST_L = U_HST_LEADING_JAMO,
+ HST_V = U_HST_VOWEL_JAMO,
+ HST_T = U_HST_TRAILING_JAMO,
+ HST_LV = U_HST_LV_SYLLABLE,
+ HST_LVT = U_HST_LVT_SYLLABLE
+#else
+ HST_NONE = 0x00,
+ HST_L = 0x01,
+ HST_V = 0x02,
+ HST_T = 0x04,
+ HST_LV = 0x03,
+ HST_LVT = 0x07
+#endif
+};
+
+static HSType
+GetHangulSyllableType(uint32_t aCh)
+{
+#if ENABLE_INTL_API
+ return HSType(u_getIntPropertyValue(aCh, UCHAR_HANGUL_SYLLABLE_TYPE));
+#else
+ return HSType(GetCharProps1(aCh).mHangulType);
+#endif
+}
+
+void
+ClusterIterator::Next()
+{
+ if (AtEnd()) {
+ NS_WARNING("ClusterIterator has already reached the end");
+ return;
+ }
+
+ uint32_t ch = *mPos++;
+
+ if (NS_IS_HIGH_SURROGATE(ch) && mPos < mLimit &&
+ NS_IS_LOW_SURROGATE(*mPos)) {
+ ch = SURROGATE_TO_UCS4(ch, *mPos++);
+ } else if ((ch & ~0xff) == 0x1100 ||
+ (ch >= 0xa960 && ch <= 0xa97f) ||
+ (ch >= 0xac00 && ch <= 0xd7ff)) {
+ // Handle conjoining Jamo that make Hangul syllables
+ HSType hangulState = GetHangulSyllableType(ch);
+ while (mPos < mLimit) {
+ ch = *mPos;
+ HSType hangulType = GetHangulSyllableType(ch);
+ switch (hangulType) {
+ case HST_L:
+ case HST_LV:
+ case HST_LVT:
+ if (hangulState == HST_L) {
+ hangulState = hangulType;
+ mPos++;
+ continue;
+ }
+ break;
+ case HST_V:
+ if ((hangulState != HST_NONE) && (hangulState != HST_T) &&
+ (hangulState != HST_LVT)) {
+ hangulState = hangulType;
+ mPos++;
+ continue;
+ }
+ break;
+ case HST_T:
+ if (hangulState != HST_NONE && hangulState != HST_L) {
+ hangulState = hangulType;
+ mPos++;
+ continue;
+ }
+ break;
+ default:
+ break;
+ }
+ break;
+ }
+ }
+
+ while (mPos < mLimit) {
+ ch = *mPos;
+
+ // Check for surrogate pairs; note that isolated surrogates will just
+ // be treated as generic (non-cluster-extending) characters here,
+ // which is fine for cluster-iterating purposes
+ if (NS_IS_HIGH_SURROGATE(ch) && mPos < mLimit - 1 &&
+ NS_IS_LOW_SURROGATE(*(mPos + 1))) {
+ ch = SURROGATE_TO_UCS4(ch, *(mPos + 1));
+ }
+
+ if (!IsClusterExtender(ch)) {
+ break;
+ }
+
+ mPos++;
+ if (!IS_IN_BMP(ch)) {
+ mPos++;
+ }
+ }
+
+ NS_ASSERTION(mText < mPos && mPos <= mLimit,
+ "ClusterIterator::Next has overshot the string!");
+}
+
+void
+ClusterReverseIterator::Next()
+{
+ if (AtEnd()) {
+ NS_WARNING("ClusterReverseIterator has already reached the end");
+ return;
+ }
+
+ uint32_t ch;
+ do {
+ ch = *--mPos;
+
+ if (NS_IS_LOW_SURROGATE(ch) && mPos > mLimit &&
+ NS_IS_HIGH_SURROGATE(*(mPos - 1))) {
+ ch = SURROGATE_TO_UCS4(*--mPos, ch);
+ }
+
+ if (!IsClusterExtender(ch)) {
+ break;
+ }
+ } while (mPos > mLimit);
+
+ // XXX May need to handle conjoining Jamo
+
+ NS_ASSERTION(mPos >= mLimit,
+ "ClusterReverseIterator::Next has overshot the string!");
+}
+
+uint32_t
+CountGraphemeClusters(const char16_t* aText, uint32_t aLength)
+{
+ ClusterIterator iter(aText, aLength);
+ uint32_t result = 0;
+ while (!iter.AtEnd()) {
+ ++result;
+ iter.Next();
+ }
+ return result;
+}
+
+} // end namespace unicode
+
+} // end namespace mozilla
diff --git a/intl/unicharutil/util/nsUnicodeProperties.h b/intl/unicharutil/util/nsUnicodeProperties.h
new file mode 100644
index 000000000..ba5526a4d
--- /dev/null
+++ b/intl/unicharutil/util/nsUnicodeProperties.h
@@ -0,0 +1,303 @@
+/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:set ts=4 sw=4 sts=4 et cindent: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef NS_UNICODEPROPERTIES_H
+#define NS_UNICODEPROPERTIES_H
+
+#include "nsBidiUtils.h"
+#include "nsIUGenCategory.h"
+#include "nsUnicodeScriptCodes.h"
+#include "harfbuzz/hb.h"
+
+#if ENABLE_INTL_API
+#include "unicode/uchar.h"
+#include "unicode/uscript.h"
+#endif
+
+const nsCharProps2& GetCharProps2(uint32_t aCh);
+
+namespace mozilla {
+
+namespace unicode {
+
+extern const nsIUGenCategory::nsUGenCategory sDetailedToGeneralCategory[];
+
+/* This MUST match the values assigned by genUnicodePropertyData.pl! */
+enum VerticalOrientation {
+ VERTICAL_ORIENTATION_U = 0,
+ VERTICAL_ORIENTATION_R = 1,
+ VERTICAL_ORIENTATION_Tu = 2,
+ VERTICAL_ORIENTATION_Tr = 3
+};
+
+/* This MUST match the values assigned by genUnicodePropertyData.pl! */
+enum PairedBracketType {
+ PAIRED_BRACKET_TYPE_NONE = 0,
+ PAIRED_BRACKET_TYPE_OPEN = 1,
+ PAIRED_BRACKET_TYPE_CLOSE = 2
+};
+
+enum XidmodType {
+ XIDMOD_RECOMMENDED,
+ XIDMOD_INCLUSION,
+ XIDMOD_UNCOMMON_USE,
+ XIDMOD_TECHNICAL,
+ XIDMOD_OBSOLETE,
+ XIDMOD_ASPIRATIONAL,
+ XIDMOD_LIMITED_USE,
+ XIDMOD_EXCLUSION,
+ XIDMOD_NOT_XID,
+ XIDMOD_NOT_NFKC,
+ XIDMOD_DEFAULT_IGNORABLE,
+ XIDMOD_DEPRECATED,
+ XIDMOD_NOT_CHARS
+};
+
+#if ENABLE_INTL_API // ICU is available, so simply forward to its API
+
+extern const hb_unicode_general_category_t sICUtoHBcategory[];
+
+inline uint32_t
+GetMirroredChar(uint32_t aCh)
+{
+ return u_charMirror(aCh);
+}
+
+inline bool
+HasMirroredChar(uint32_t aCh)
+{
+ return u_isMirrored(aCh);
+}
+
+inline uint8_t
+GetCombiningClass(uint32_t aCh)
+{
+ return u_getCombiningClass(aCh);
+}
+
+inline uint8_t
+GetGeneralCategory(uint32_t aCh)
+{
+ return sICUtoHBcategory[u_charType(aCh)];
+}
+
+inline nsCharType
+GetBidiCat(uint32_t aCh)
+{
+ return nsCharType(u_charDirection(aCh));
+}
+
+inline int8_t
+GetNumericValue(uint32_t aCh)
+{
+ UNumericType type =
+ UNumericType(u_getIntPropertyValue(aCh, UCHAR_NUMERIC_TYPE));
+ return type == U_NT_DECIMAL || type == U_NT_DIGIT
+ ? int8_t(u_getNumericValue(aCh)) : -1;
+}
+
+inline uint8_t
+GetLineBreakClass(uint32_t aCh)
+{
+ return u_getIntPropertyValue(aCh, UCHAR_LINE_BREAK);
+}
+
+inline Script
+GetScriptCode(uint32_t aCh)
+{
+ UErrorCode err = U_ZERO_ERROR;
+ return Script(uscript_getScript(aCh, &err));
+}
+
+inline uint32_t
+GetScriptTagForCode(Script aScriptCode)
+{
+ const char* tag = uscript_getShortName(UScriptCode(aScriptCode));
+ return HB_TAG(tag[0], tag[1], tag[2], tag[3]);
+}
+
+inline PairedBracketType
+GetPairedBracketType(uint32_t aCh)
+{
+ return PairedBracketType
+ (u_getIntPropertyValue(aCh, UCHAR_BIDI_PAIRED_BRACKET_TYPE));
+}
+
+inline uint32_t
+GetPairedBracket(uint32_t aCh)
+{
+ return u_getBidiPairedBracket(aCh);
+}
+
+inline uint32_t
+GetUppercase(uint32_t aCh)
+{
+ return u_toupper(aCh);
+}
+
+inline uint32_t
+GetLowercase(uint32_t aCh)
+{
+ return u_tolower(aCh);
+}
+
+inline uint32_t
+GetTitlecaseForLower(uint32_t aCh) // maps LC to titlecase, UC unchanged
+{
+ return u_isULowercase(aCh) ? u_totitle(aCh) : aCh;
+}
+
+inline uint32_t
+GetTitlecaseForAll(uint32_t aCh) // maps both UC and LC to titlecase
+{
+ return u_totitle(aCh);
+}
+
+inline bool
+IsEastAsianWidthFWH(uint32_t aCh)
+{
+ switch (u_getIntPropertyValue(aCh, UCHAR_EAST_ASIAN_WIDTH)) {
+ case U_EA_FULLWIDTH:
+ case U_EA_WIDE:
+ case U_EA_HALFWIDTH:
+ return true;
+ case U_EA_AMBIGUOUS:
+ case U_EA_NARROW:
+ case U_EA_NEUTRAL:
+ return false;
+ }
+ return false;
+}
+
+#else // not ENABLE_INTL_API
+
+// Return whether the char has a mirrored-pair counterpart.
+uint32_t GetMirroredChar(uint32_t aCh);
+
+bool HasMirroredChar(uint32_t aChr);
+
+uint8_t GetCombiningClass(uint32_t aCh);
+
+// returns the detailed General Category in terms of HB_UNICODE_* values
+uint8_t GetGeneralCategory(uint32_t aCh);
+
+nsCharType GetBidiCat(uint32_t aCh);
+
+uint8_t GetLineBreakClass(uint32_t aCh);
+
+Script GetScriptCode(uint32_t aCh);
+
+uint32_t GetScriptTagForCode(Script aScriptCode);
+
+PairedBracketType GetPairedBracketType(uint32_t aCh);
+uint32_t GetPairedBracket(uint32_t aCh);
+
+/**
+ * Return the numeric value of the character. The value returned is the value
+ * of the Numeric_Value in field 7 of the UCD, or -1 if field 7 is empty.
+ * To restrict to decimal digits, the caller should also check whether
+ * GetGeneralCategory returns HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER
+ */
+int8_t GetNumericValue(uint32_t aCh);
+
+uint32_t GetUppercase(uint32_t aCh);
+uint32_t GetLowercase(uint32_t aCh);
+uint32_t GetTitlecaseForLower(uint32_t aCh); // maps LC to titlecase, UC unchanged
+uint32_t GetTitlecaseForAll(uint32_t aCh); // maps both UC and LC to titlecase
+
+// Return whether the char has EastAsianWidth class F or W or H.
+bool IsEastAsianWidthFWH(uint32_t aCh);
+
+#endif // !ENABLE_INTL_API
+
+// returns the simplified Gen Category as defined in nsIUGenCategory
+inline nsIUGenCategory::nsUGenCategory GetGenCategory(uint32_t aCh) {
+ return sDetailedToGeneralCategory[GetGeneralCategory(aCh)];
+}
+
+inline VerticalOrientation GetVerticalOrientation(uint32_t aCh) {
+ return VerticalOrientation(GetCharProps2(aCh).mVertOrient);
+}
+
+inline XidmodType GetIdentifierModification(uint32_t aCh) {
+ return XidmodType(GetCharProps2(aCh).mXidmod);
+}
+
+uint32_t GetFullWidth(uint32_t aCh);
+// This is the reverse function of GetFullWidth which guarantees that
+// for every codepoint c, GetFullWidthInverse(GetFullWidth(c)) == c.
+// Note that, this function does not guarantee to convert all wide
+// form characters to their possible narrow form.
+uint32_t GetFullWidthInverse(uint32_t aCh);
+
+bool IsClusterExtender(uint32_t aCh, uint8_t aCategory);
+
+inline bool IsClusterExtender(uint32_t aCh) {
+ return IsClusterExtender(aCh, GetGeneralCategory(aCh));
+}
+
+// A simple iterator for a string of char16_t codepoints that advances
+// by Unicode grapheme clusters
+class ClusterIterator
+{
+public:
+ ClusterIterator(const char16_t* aText, uint32_t aLength)
+ : mPos(aText), mLimit(aText + aLength)
+#ifdef DEBUG
+ , mText(aText)
+#endif
+ { }
+
+ operator const char16_t* () const {
+ return mPos;
+ }
+
+ bool AtEnd() const {
+ return mPos >= mLimit;
+ }
+
+ void Next();
+
+private:
+ const char16_t* mPos;
+ const char16_t* mLimit;
+#ifdef DEBUG
+ const char16_t* mText;
+#endif
+};
+
+// Count the number of grapheme clusters in the given string
+uint32_t CountGraphemeClusters(const char16_t* aText, uint32_t aLength);
+
+// A simple reverse iterator for a string of char16_t codepoints that
+// advances by Unicode grapheme clusters
+class ClusterReverseIterator
+{
+public:
+ ClusterReverseIterator(const char16_t* aText, uint32_t aLength)
+ : mPos(aText + aLength), mLimit(aText)
+ { }
+
+ operator const char16_t* () const {
+ return mPos;
+ }
+
+ bool AtEnd() const {
+ return mPos <= mLimit;
+ }
+
+ void Next();
+
+private:
+ const char16_t* mPos;
+ const char16_t* mLimit;
+};
+
+} // end namespace unicode
+
+} // end namespace mozilla
+
+#endif /* NS_UNICODEPROPERTIES_H */
diff --git a/intl/unicharutil/util/nsUnicodePropertyData.cpp b/intl/unicharutil/util/nsUnicodePropertyData.cpp
new file mode 100644
index 000000000..f8b5a02bc
--- /dev/null
+++ b/intl/unicharutil/util/nsUnicodePropertyData.cpp
@@ -0,0 +1,1854 @@
+
+/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/*
+ * Derived from the Unicode Character Database by genUnicodePropertyData.pl
+ *
+ * For Unicode terms of use, see http://www.unicode.org/terms_of_use.html
+ */
+
+/*
+ * Created on Wed Oct 26 09:12:45 2016 from UCD data files with version info:
+ *
+
+# Date: 2015-06-16, 20:24:00 GMT [KW]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2015 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# For documentation, see the following:
+# NamesList.html
+# UAX #38, "Unicode Han Database (Unihan)"
+# UAX #44, "Unicode Character Database."
+#
+# The UAXes can be accessed at http://www.unicode.org/versions/Unicode8.0.0/
+
+This directory contains the final data files
+for the Unicode Character Database, for Version 8.0.0 of the Unicode
+Standard.
+
+
+# Scripts-8.0.0.txt
+# Date: 2015-03-11, 22:29:42 GMT [MD]
+
+# BidiMirroring-8.0.0.txt
+# Date: 2015-01-20, 18:30:00 GMT [KW, LI]
+
+# BidiBrackets-8.0.0.txt
+# Date: 2015-01-20, 19:00:00 GMT [AG, LI, KW]
+
+# HangulSyllableType-8.0.0.txt
+# Date: 2014-12-16, 23:07:45 GMT [MD]
+
+# LineBreak-8.0.0.txt
+# Date: 2015-02-13, 09:15:00 GMT [KW, LI]
+
+# EastAsianWidth-8.0.0.txt
+# Date: 2015-02-10, 21:00:00 GMT [KW, LI]
+
+# File: xidmodifications.txt
+# Version: 8.0.0
+# Generated: 2015-05-17, 03:09:04 GMT
+
+#
+# Unihan_Variants.txt
+# Date: 2015-04-30 18:38:20 GMT [JHJ]
+
+# VerticalOrientation-13.txt
+# Date: 2014-09-03, 17:30:00 GMT [EM, KI, LI]
+
+ *
+ * * * * * This file contains MACHINE-GENERATED DATA, do not edit! * * * * *
+ */
+
+#include <stdint.h>
+#include "harfbuzz/hb.h"
+
+#if !ENABLE_INTL_API
+static const uint32_t sScriptCodeToTag[] = {
+ HB_TAG('Z','y','y','y'),
+ HB_TAG('Z','i','n','h'),
+ HB_TAG('A','r','a','b'),
+ HB_TAG('A','r','m','n'),
+ HB_TAG('B','e','n','g'),
+ HB_TAG('B','o','p','o'),
+ HB_TAG('C','h','e','r'),
+ HB_TAG('C','o','p','t'),
+ HB_TAG('C','y','r','l'),
+ HB_TAG('D','s','r','t'),
+ HB_TAG('D','e','v','a'),
+ HB_TAG('E','t','h','i'),
+ HB_TAG('G','e','o','r'),
+ HB_TAG('G','o','t','h'),
+ HB_TAG('G','r','e','k'),
+ HB_TAG('G','u','j','r'),
+ HB_TAG('G','u','r','u'),
+ HB_TAG('H','a','n','i'),
+ HB_TAG('H','a','n','g'),
+ HB_TAG('H','e','b','r'),
+ HB_TAG('H','i','r','a'),
+ HB_TAG('K','n','d','a'),
+ HB_TAG('K','a','n','a'),
+ HB_TAG('K','h','m','r'),
+ HB_TAG('L','a','o','o'),
+ HB_TAG('L','a','t','n'),
+ HB_TAG('M','l','y','m'),
+ HB_TAG('M','o','n','g'),
+ HB_TAG('M','y','m','r'),
+ HB_TAG('O','g','a','m'),
+ HB_TAG('I','t','a','l'),
+ HB_TAG('O','r','y','a'),
+ HB_TAG('R','u','n','r'),
+ HB_TAG('S','i','n','h'),
+ HB_TAG('S','y','r','c'),
+ HB_TAG('T','a','m','l'),
+ HB_TAG('T','e','l','u'),
+ HB_TAG('T','h','a','a'),
+ HB_TAG('T','h','a','i'),
+ HB_TAG('T','i','b','t'),
+ HB_TAG('C','a','n','s'),
+ HB_TAG('Y','i','i','i'),
+ HB_TAG('T','g','l','g'),
+ HB_TAG('H','a','n','o'),
+ HB_TAG('B','u','h','d'),
+ HB_TAG('T','a','g','b'),
+ HB_TAG('B','r','a','i'),
+ HB_TAG('C','p','r','t'),
+ HB_TAG('L','i','m','b'),
+ HB_TAG('L','i','n','b'),
+ HB_TAG('O','s','m','a'),
+ HB_TAG('S','h','a','w'),
+ HB_TAG('T','a','l','e'),
+ HB_TAG('U','g','a','r'),
+ HB_TAG('H','r','k','t'),
+ HB_TAG('B','u','g','i'),
+ HB_TAG('G','l','a','g'),
+ HB_TAG('K','h','a','r'),
+ HB_TAG('S','y','l','o'),
+ HB_TAG('T','a','l','u'),
+ HB_TAG('T','f','n','g'),
+ HB_TAG('X','p','e','o'),
+ HB_TAG('B','a','l','i'),
+ HB_TAG('B','a','t','k'),
+ HB_TAG('B','l','i','s'),
+ HB_TAG('B','r','a','h'),
+ HB_TAG('C','h','a','m'),
+ HB_TAG('C','i','r','t'),
+ HB_TAG('C','y','r','s'),
+ HB_TAG('E','g','y','d'),
+ HB_TAG('E','g','y','h'),
+ HB_TAG('E','g','y','p'),
+ HB_TAG('G','e','o','k'),
+ HB_TAG('H','a','n','s'),
+ HB_TAG('H','a','n','t'),
+ HB_TAG('H','m','n','g'),
+ HB_TAG('H','u','n','g'),
+ HB_TAG('I','n','d','s'),
+ HB_TAG('J','a','v','a'),
+ HB_TAG('K','a','l','i'),
+ HB_TAG('L','a','t','f'),
+ HB_TAG('L','a','t','g'),
+ HB_TAG('L','e','p','c'),
+ HB_TAG('L','i','n','a'),
+ HB_TAG('M','a','n','d'),
+ HB_TAG('M','a','y','a'),
+ HB_TAG('M','e','r','o'),
+ HB_TAG('N','k','o','o'),
+ HB_TAG('O','r','k','h'),
+ HB_TAG('P','e','r','m'),
+ HB_TAG('P','h','a','g'),
+ HB_TAG('P','h','n','x'),
+ HB_TAG('P','l','r','d'),
+ HB_TAG('R','o','r','o'),
+ HB_TAG('S','a','r','a'),
+ HB_TAG('S','y','r','e'),
+ HB_TAG('S','y','r','j'),
+ HB_TAG('S','y','r','n'),
+ HB_TAG('T','e','n','g'),
+ HB_TAG('V','a','i','i'),
+ HB_TAG('V','i','s','p'),
+ HB_TAG('X','s','u','x'),
+ HB_TAG('Z','x','x','x'),
+ HB_TAG('Z','z','z','z'),
+ HB_TAG('C','a','r','i'),
+ HB_TAG('J','p','a','n'),
+ HB_TAG('L','a','n','a'),
+ HB_TAG('L','y','c','i'),
+ HB_TAG('L','y','d','i'),
+ HB_TAG('O','l','c','k'),
+ HB_TAG('R','j','n','g'),
+ HB_TAG('S','a','u','r'),
+ HB_TAG('S','g','n','w'),
+ HB_TAG('S','u','n','d'),
+ HB_TAG('M','o','o','n'),
+ HB_TAG('M','t','e','i'),
+ HB_TAG('A','r','m','i'),
+ HB_TAG('A','v','s','t'),
+ HB_TAG('C','a','k','m'),
+ HB_TAG('K','o','r','e'),
+ HB_TAG('K','t','h','i'),
+ HB_TAG('M','a','n','i'),
+ HB_TAG('P','h','l','i'),
+ HB_TAG('P','h','l','p'),
+ HB_TAG('P','h','l','v'),
+ HB_TAG('P','r','t','i'),
+ HB_TAG('S','a','m','r'),
+ HB_TAG('T','a','v','t'),
+ HB_TAG('Z','m','t','h'),
+ HB_TAG('Z','s','y','m'),
+ HB_TAG('B','a','m','u'),
+ HB_TAG('L','i','s','u'),
+ HB_TAG('N','k','g','b'),
+ HB_TAG('S','a','r','b'),
+ HB_TAG('B','a','s','s'),
+ HB_TAG('D','u','p','l'),
+ HB_TAG('E','l','b','a'),
+ HB_TAG('G','r','a','n'),
+ HB_TAG('K','p','e','l'),
+ HB_TAG('L','o','m','a'),
+ HB_TAG('M','e','n','d'),
+ HB_TAG('M','e','r','c'),
+ HB_TAG('N','a','r','b'),
+ HB_TAG('N','b','a','t'),
+ HB_TAG('P','a','l','m'),
+ HB_TAG('S','i','n','d'),
+ HB_TAG('W','a','r','a'),
+ HB_TAG('A','f','a','k'),
+ HB_TAG('J','u','r','c'),
+ HB_TAG('M','r','o','o'),
+ HB_TAG('N','s','h','u'),
+ HB_TAG('S','h','r','d'),
+ HB_TAG('S','o','r','a'),
+ HB_TAG('T','a','k','r'),
+ HB_TAG('T','a','n','g'),
+ HB_TAG('W','o','l','e'),
+ HB_TAG('H','l','u','w'),
+ HB_TAG('K','h','o','j'),
+ HB_TAG('T','i','r','h'),
+ HB_TAG('A','g','h','b'),
+ HB_TAG('M','a','h','j'),
+ HB_TAG('A','h','o','m'),
+ HB_TAG('H','a','t','r'),
+ HB_TAG('M','o','d','i'),
+ HB_TAG('M','u','l','t'),
+ HB_TAG('P','a','u','c'),
+ HB_TAG('S','i','d','d')
+};
+#endif
+
+#if !ENABLE_INTL_API
+static const int16_t sMirrorOffsets[] = {
+ 0,
+ 1,
+ -1,
+ 2,
+ -2,
+ 16,
+ -16,
+ 3,
+ -3,
+ 2016,
+ 138,
+ 1824,
+ 2104,
+ 2108,
+ 2106,
+ -138,
+ 8,
+ 7,
+ -8,
+ -7,
+ -1824,
+ -2016,
+ -2104,
+ -2106,
+ -2108
+};
+#endif
+
+
+#if !ENABLE_INTL_API
+#define kCharProp1MaxPlane 1
+#define kCharProp1IndexBits 11
+#define kCharProp1CharBits 5
+static const uint8_t sCharProp1Planes[1] = {1};
+
+static const uint8_t sCharProp1Pages[2][2048] = {
+ {0,1,2,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,6,7,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,9,10,11,0,12,0,13,14,0,0,15,16,17,18,19,0,0,0,0,20,21,22,23,0,0,0,0,24,0,25,26,0,0,25,27,0,0,25,27,0,0,25,27,0,0,25,27,0,0,0,27,0,0,0,28,0,0,25,27,0,0,0,27,0,0,0,29,0,0,30,31,0,0,32,33,0,34,35,0,36,37,0,38,0,0,39,0,0,40,0,0,0,41,41,41,42,42,43,44,44,0,0,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,47,47,0,0,0,0,48,0,0,0,0,0,0,49,0,0,0,50,0,0,0,0,0,0,51,0,0,52,0,53,0,0,0,54,55,56,0,57,0,58,0,59,0,0,0,0,60,61,0,0,0,0,0,0,62,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,65,66,67,0,68,69,0,0,0,0,0,0,0,0,70,71,72,73,74,75,76,77,78,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,81,82,0,0,0,0,0,0,0,0,0,0,0,0,83,84,85,86,0,87,0,88,89,90,91,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,94,0,0,0,95,96,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,99,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,102,0,0,103,0,0,0,0,0,0,0,0,104,0,0,0,0,0,55,105,0,106,107,108,0,109,110,0,0,0,0,0,0,111,112,113,0,0,0,0,0,0,0,27,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,121,122,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,126,127,0,0,0,0,1,2,128,129,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,0,0,0,0,0,0,0,131,0,0,0,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,134,0,0,0,0,0,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,94,0,136,0,0,137,138,0,109,0,0,139,0,0,140,0,0,0,0,0,141,0,25,27,142,0,0,0,0,0,0,0,0,0,0,143,0,0,0,0,0,0,94,144,0,0,94,0,0,0,145,0,0,0,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,0,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,151,152,0,0,0,0,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
+};
+
+static const nsCharProps1 sCharProp1Values[155][32] = {
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {3,0,0}, {0,0,0}, {4,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {3,0,0}, {0,0,0}, {4,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {5,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {6,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,232}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,232}, {0,0,216}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220},},
+ {{0,0,220}, {0,0,202}, {0,0,202}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,202}, {0,0,202}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,1}, {0,0,1}, {0,0,1}, {0,0,1}, {0,0,1}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,230},},
+ {{0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,240}, {0,0,230}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,220}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,230}, {0,0,232}, {0,0,220}, {0,0,220}, {0,0,230}, {0,0,233}, {0,0,234}, {0,0,234}, {0,0,233},},
+ {{0,0,234}, {0,0,234}, {0,0,233}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,222}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230},},
+ {{0,0,230}, {0,0,230}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,222}, {0,0,228}, {0,0,230}, {0,0,10}, {0,0,11}, {0,0,12}, {0,0,13}, {0,0,14}, {0,0,15}, {0,0,16}, {0,0,17}, {0,0,18}, {0,0,19}, {0,0,19}, {0,0,20}, {0,0,21}, {0,0,22}, {0,0,0}, {0,0,23},},
+ {{0,0,0}, {0,0,24}, {0,0,25}, {0,0,0}, {0,0,230}, {0,0,220}, {0,0,0}, {0,0,18}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,30}, {0,0,31}, {0,0,32}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,27}, {0,0,28}, {0,0,29}, {0,0,30}, {0,0,31}, {0,0,32}, {0,0,33}, {0,0,34}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,220},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,35}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,230},},
+ {{0,0,230}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,36}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,230}, {0,0,220}, {0,0,220}, {0,0,230}, {0,0,220}, {0,0,230},},
+ {{0,0,230}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230},},
+ {{0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,27}, {0,0,28}, {0,0,29}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,7}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,84}, {0,0,91}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,103}, {0,0,103}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,107}, {0,0,107}, {0,0,107}, {0,0,107}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,118}, {0,0,118}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,122}, {0,0,122}, {0,0,122}, {0,0,122}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,220}, {0,0,220}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,220}, {0,0,0}, {0,0,220}, {0,0,0}, {0,0,216}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,129}, {0,0,130}, {0,0,0}, {0,0,132}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,130}, {0,0,130}, {0,0,130}, {0,0,130}, {0,0,0}, {0,0,0},},
+ {{0,0,130}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,9}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,220}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,7}, {0,0,0}, {0,0,9}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,220}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0},},
+ {{0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0},},
+ {{0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0},},
+ {{0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,228}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,222}, {0,0,230}, {0,0,220}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,220}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,220},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,7}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,7}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,7}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,1}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220},},
+ {{0,0,230}, {0,0,0}, {0,0,1}, {0,0,1}, {0,0,1}, {0,0,1}, {0,0,1}, {0,0,1}, {0,0,1}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,220}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,230}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,234}, {0,0,214}, {0,0,220}, {0,0,202}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230},},
+ {{0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,233}, {0,0,220}, {0,0,230}, {0,0,220},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,1}, {0,0,1}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,1}, {0,0,1}, {0,0,1}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,1}, {0,0,1}, {0,0,230}, {0,0,220}, {0,0,230}, {0,0,1}, {0,0,1}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {7,0,0}, {7,0,0}, {7,0,0}, {8,0,0}, {8,0,0}, {8,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {9,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {10,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0},},
+ {{1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {11,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {12,0,0}, {0,0,0}, {13,0,0}, {14,0,0}, {0,0,0}, {14,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {15,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0},},
+ {{1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {16,0,0}, {16,0,0}, {16,0,0}, {0,0,0}, {17,0,0}, {17,0,0}, {0,0,0}, {0,0,0}, {18,0,0}, {18,0,0}, {18,0,0}, {19,0,0}, {19,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {3,0,0}, {0,0,0}, {4,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {7,0,0}, {1,0,0}, {2,0,0}, {8,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {20,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {21,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0},},
+ {{2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0},},
+ {{2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {22,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {23,0,0}, {24,0,0}, {23,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9},},
+ {{0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230},},
+ {{0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0},},
+ {{1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,218}, {0,0,228}, {0,0,232}, {0,0,222}, {0,0,224}, {0,0,224}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,8}, {0,0,8}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,7}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230},},
+ {{0,0,0}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,3,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,3,0}, {0,7,0}, {0,7,0}, {0,7,0},},
+ {{0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,3,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0},},
+ {{0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,3,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0},},
+ {{0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,3,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0},},
+ {{0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,3,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0},},
+ {{0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,3,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0},},
+ {{0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,3,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,7,0},},
+ {{0,7,0}, {0,7,0}, {0,7,0}, {0,7,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0},},
+ {{0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,2,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0},},
+ {{0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,4,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,26}, {0,0,0},},
+ {{0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {1,0,0}, {2,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {3,0,0}, {0,0,0}, {4,0,0}, {0,0,0}, {1,0,0},},
+ {{2,0,0}, {0,0,0}, {1,0,0}, {2,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,220}, {0,0,0}, {0,0,0},},
+ {{0,0,220}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,220}, {0,0,0}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,1}, {0,0,220}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,220}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,7}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,7}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,7}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,7}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,9}, {0,0,7}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,7}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,7}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,9}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,1}, {0,0,1}, {0,0,1}, {0,0,1}, {0,0,1}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,1}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,216}, {0,0,216}, {0,0,1}, {0,0,1}, {0,0,1}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,226}, {0,0,216}, {0,0,216}, {0,0,216}, {0,0,216}, {0,0,216}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220},},
+ {{0,0,220}, {0,0,220}, {0,0,220}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,220}, {0,0,220}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,230}, {0,0,230}, {0,0,230}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},},
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,220}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0},}
+};
+#endif
+
+#if ENABLE_INTL_API
+#define kCharProp2MaxPlane 16
+#define kCharProp2IndexBits 9
+#define kCharProp2CharBits 7
+static const uint8_t sCharProp2Planes[16] = {1,2,3,4,4,4,4,4,4,4,4,4,4,5,3,3};
+
+static const uint8_t sCharProp2Pages[6][512] = {
+ {0,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,41,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,67,72,73,74,75,76,67,67,67,67,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,87,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,97,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,98,41,41,41,41,41,41,41,41,41,99,100,100,101,102,103,104,105,106,107,108,109,110,111,112,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,113,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,87,87,116,117,118,119,120,120,121,122,123,124,125,126},
+ {127,128,129,130,114,131,132,133,134,135,136,114,134,134,137,114,138,139,140,141,142,143,144,145,146,147,114,114,148,114,114,114,149,150,151,152,153,154,155,114,114,156,114,157,158,159,160,114,114,161,114,114,114,162,114,114,114,114,114,114,114,114,114,114,134,134,134,134,134,134,134,163,164,134,165,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,166,166,166,166,166,166,166,166,167,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,134,134,134,134,168,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,100,100,100,100,169,170,171,172,114,114,114,114,114,114,173,174,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,175,115,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,176,177,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,74,178,179,180,181,114,182,114,183,184,185,120,120,186,120,187,67,67,67,67,188,189,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,134,190,114,114,114,114,114,114,114,114,114,114,191,192,114,114,193,194,195,196,197,115,74,74,74,74,198,199,74,200,201,202,203,204,205,206,114,114,114,114,114,114,114,114,114,114,114,114},
+ {96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,207,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,208,96,209,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,210,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,87,87,87,87,211,115,115,115,115,115,115,115,115,115,115,212},
+ {115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,212},
+ {114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114},
+ {213,114,214,215,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114}
+};
+
+static const nsCharProps2 sCharProp2Values[216][128] = {
+ {{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,1},{1,8},{1,8},{1,8},{1,8},{1,8},{1,1},{1,1},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,1},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,8},{1,8},{1,8},{1,0},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,8},{1,8},{1,8},{1,12}},
+ {{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,9},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{0,8},{1,9},{0,8},{1,9},{1,8},{1,8},{1,10},{0,8},{1,9},{1,8},{0,8},{1,9},{1,9},{1,9},{1,9},{1,8},{1,1},{1,9},{1,9},{1,9},{1,8},{0,9},{0,9},{0,9},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{0,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{0,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,9},{1,9},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,9},{1,9},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,11},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,9}},
+ {{1,3},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,4},{1,2},{1,0},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,0},{1,0},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,4},{1,4},{1,2},{1,2},{1,2},{1,0},{1,0},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,4},{1,4},{1,4},{1,2},{1,2},{1,4},{1,4},{1,3},{1,3},{1,3},{1,3},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,2},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,2},{1,2},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,9},{1,9},{1,9},{1,0},{1,0},{1,4},{1,4},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,4},{1,4},{1,0},{1,0},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,3},{1,3},{1,3},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,3},{1,3},{1,3},{1,2},{1,2},{1,3},{1,2},{1,2},{1,3},{1,0},{1,3},{1,2},{1,3},{1,3},{1,3},{1,4},{1,2},{1,3},{1,3},{1,2},{1,3},{1,3},{1,3},{1,3},{1,2},{1,2},{1,3},{1,3},{1,3},{1,3},{1,3},{1,2},{1,3},{1,3},{1,2},{1,3},{1,3},{1,2},{1,3},{1,4},{1,3},{1,3},{1,3},{1,3},{1,4},{1,3},{1,3},{1,3}},
+ {{1,2},{1,3},{1,3},{1,2},{1,3},{1,3},{1,3},{1,3},{1,2},{1,3},{1,2},{1,2},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,2},{1,3},{1,2},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,4},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,3},{1,3},{1,0},{1,0},{1,3},{1,3},{1,3},{1,3},{1,3},{1,8},{1,8},{1,8},{1,8},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,8},{1,8},{1,9},{1,9},{1,9},{1,9},{1,9},{1,8},{1,8},{1,8},{1,8},{1,8},{0,8},{0,8},{1,0},{1,8},{1,3},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,2},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,2},{1,3},{1,0},{1,0},{1,0},{1,3},{1,0},{1,0},{1,3},{1,2},{1,3},{1,3},{1,3},{1,3},{1,0},{1,3},{1,3},{1,3},{1,3},{1,3},{1,2},{1,2},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,3},{1,3},{1,3},{1,3},{1,0},{1,0},{1,3},{1,0},{1,0},{1,2},{1,3},{1,2},{1,0},{1,2},{1,3},{1,0},{1,0},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,9},{1,9},{1,0},{1,9},{1,9},{1,0},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,10},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,2},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,9},{1,1},{1,4},{1,4},{1,12},{1,12},{1,9},{1,0},{1,0},{1,0},{1,9},{1,4}},
+ {{1,12},{1,12},{1,12},{1,12},{1,9},{1,9},{1,0},{1,9},{1,0},{1,0},{1,0},{1,12},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,3},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,3},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,9},{1,9},{1,9},{1,4},{1,9},{1,9},{1,8},{1,4},{1,4},{1,9},{1,4},{1,4},{1,0},{1,0},{1,0},{1,0}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4}},
+ {{1,4},{1,4},{1,8},{1,4},{1,4},{1,4},{1,4},{1,4},{1,8},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,4},{1,4},{1,4},{1,4},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,9},{1,12},{1,8},{1,1},{1,12},{1,12},{1,8},{1,8},{1,8},{1,12},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,4},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,0},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,8},{1,2},{1,8},{1,2},{1,2},{1,8},{1,2},{1,4},{1,8},{1,4},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,1},{1,1},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,8},{1,10},{1,12},{1,8},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,7},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,8},{1,8},{1,8},{1,4},{1,4},{1,0},{1,0},{1,0},{1,11},{1,0},{1,9},{1,9},{1,9},{1,9},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,4},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,0},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,8},{1,8},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,0},{1,0},{1,2},{1,2},{1,8},{1,2},{1,2},{1,2},{1,2},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,1},{1,1},{1,0}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,8},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,6},{1,6},{1,6},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,8},{1,8},{1,8},{1,8},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,4},{1,4},{1,4},{1,4},{1,4},{1,0},{1,2},{1,2},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2}},
+ {{1,2},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,4},{1,0},{1,0},{1,4},{1,4},{1,3},{1,3},{1,2},{1,0},{1,0},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,0},{1,0},{1,0},{1,0},{1,8},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,4},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}},
+ {{1,4},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,12},{1,12},{1,12},{1,12},{1,9},{1,9},{1,12},{1,9},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12}},
+ {{1,12},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,9},{1,12},{1,0},{1,9},{1,12},{1,0},{1,0},{1,12},{1,12},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,2},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,9},{1,9},{1,9},{1,0},{1,12},{1,9},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,2},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,12},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,2},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,12},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,2},{1,12},{1,12},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,9},{1,9},{1,12},{1,0},{1,0},{1,0},{1,2},{1,2},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,0},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,12},{1,12},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,0},{1,0},{1,12},{1,0},{1,12},{1,0},{1,0},{1,12},{1,12},{1,12},{1,0},{1,0},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,4},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,4},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,12},{1,4},{1,4},{1,2},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,2},{1,2},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,12},{1,4},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,4},{1,12},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,12},{1,4},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,2},{1,12},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,4},{1,0},{1,0},{1,2},{1,2},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}},
+ {{1,12},{1,12},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,3},{1,3},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,3},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,0},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,3},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,12},{1,12},{1,0},{1,3},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,12},{1,0},{1,0},{1,12},{1,0},{1,12},{1,12},{1,0},{1,0},{1,12},{1,0},{1,12},{1,12},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,12},{1,0},{1,12},{1,0},{1,12},{1,12},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,9},{1,9},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,0},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,1},{1,9},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,3},{1,3},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,0},{1,8},{1,0},{1,8},{1,2},{1,8},{1,8},{1,8},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,9},{1,0},{1,9},{1,9},{1,11},{1,9},{1,11},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}},
+ {{1,0},{1,9},{1,0},{1,0},{1,0},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,0},{1,0},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,0},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,8},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,12},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,0},{1,0},{1,0},{1,0},{1,8},{1,9},{1,0},{1,0},{1,0}},
+ {{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,10},{0,10},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4}},
+ {{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12}},
+ {{1,8},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5}},
+ {{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5}},
+ {{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,8},{0,8},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5}},
+ {{1,8},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,11},{1,11},{1,0},{1,0},{1,0},{1,4},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,10},{1,10},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,4},{1,0},{1,4},{1,8},{1,8},{1,8},{1,0},{1,8},{1,8},{1,8},{1,8},{1,0},{1,4},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,10},{1,10},{1,10},{1,10},{1,12},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,12},{1,12},{1,12},{1,12},{1,12},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,8},{1,12},{1,12},{1,12},{1,8},{1,8},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,8},{1,8},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,6}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,6},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,8},{1,8}},
+ {{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,4},{1,4},{1,4},{1,8},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,12},{1,4},{1,4},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,9},{1,9},{1,9},{1,3},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,3},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,3},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,9},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3}},
+ {{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,4},{1,4},{1,4},{1,4},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,4},{1,3},{1,3},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,3},{1,3},{1,3},{1,3}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,9},{1,9},{1,3},{1,3},{1,0},{1,3},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,12},{1,0},{1,12},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,9},{1,0},{1,9},{1,0},{1,9},{1,0},{1,9},{1,0},{1,9},{1,0},{1,9},{1,12},{1,12}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,9},{1,9},{1,9},{1,9},{1,9},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,9},{1,0},{1,9},{1,0},{1,9},{1,9},{1,9},{1,0},{1,0},{1,0},{1,9},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,9},{1,12},{1,9},{1,9},{1,9},{1,0},{1,0},{1,0},{1,9},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,9},{1,0},{1,9},{1,9},{1,9},{1,12},{1,12},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,9},{1,0},{1,9},{1,0},{1,9},{1,9},{1,12}},
+ {{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,10},{1,1},{1,1},{1,10},{1,10},{1,1},{1,9},{1,8},{1,8},{1,8},{1,8},{0,8},{1,9},{1,8},{1,1},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{0,8},{0,8},{1,8},{1,8},{1,9},{1,9},{1,9},{1,1},{1,8},{1,8},{1,10},{1,10},{1,10},{1,10},{1,10},{1,9},{0,8},{0,8},{1,8},{1,9},{1,9},{1,8},{1,9},{1,9},{1,8},{1,8},{1,8},{0,8},{0,9},{1,8},{1,9},{1,3},{1,3},{1,8},{0,8},{1,8},{1,8},{1,8},{1,8},{0,9},{0,9},{0,9},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{0,8},{1,8},{1,8},{1,2},{1,8},{1,8},{1,9},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,9},{1,10},{1,10},{1,10},{1,10},{1,10},{0,12},{1,10},{1,10},{1,10},{1,10},{1,11},{1,11},{1,11},{1,11},{1,11},{1,11},{1,9},{1,9},{1,12},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9}},
+ {{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,9},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{0,8},{0,8},{0,8},{0,8},{1,7},{0,8},{0,8},{0,8},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{0,9},{0,9},{1,9},{0,9},{0,8},{0,9},{0,9},{0,9},{0,8},{0,9},{1,9},{1,9},{1,9},{1,9},{1,9},{0,9},{1,9},{1,9},{1,9},{0,9},{0,8},{1,9},{0,9},{0,8},{1,3},{1,9},{1,9},{1,9},{1,9},{1,9},{0,8},{0,8},{0,9},{0,9},{0,9},{0,8},{1,9},{0,8},{1,9},{0,8},{1,9},{0,8},{1,9},{1,9},{1,9},{1,9},{0,3},{1,9},{1,9},{1,9},{1,4},{1,9},{1,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,8},{0,9},{0,9},{0,9},{0,9},{0,9},{1,9},{1,8},{1,8},{1,8},{1,8},{0,9},{0,9},{0,9},{0,9},{0,9},{0,8},{1,8},{0,8},{0,8},{1,4},{0,8},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9}},
+ {{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,9},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{0,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,9},{1,9},{1,8},{1,9},{1,9},{1,8},{1,8},{1,8},{0,8},{0,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{1,8},{1,8},{1,8},{1,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{1,8},{1,8},{1,8},{1,8},{0,8},{0,8},{0,8},{0,8},{0,8},{3,11},{3,11},{0,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{0,8},{0,8},{0,8}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{1,8},{0,8},{1,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{1,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9}},
+ {{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,9},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,9},{1,9},{1,9},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,9},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,3},{1,3},{1,3},{1,3},{1,3},{1,9},{1,9},{1,4},{1,4}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,12},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,12},{1,12},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,9},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,5}},
+ {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,8},{0,8},{0,8},{0,8},{0,9},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,9},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9}},
+ {{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12}},
+ {{0,9},{2,8},{2,8},{0,8},{0,8},{0,0},{0,0},{0,0},{3,8},{3,8},{3,8},{3,8},{3,8},{3,8},{3,8},{3,8},{3,8},{3,8},{0,8},{0,8},{3,8},{3,8},{3,8},{3,8},{3,8},{3,8},{3,8},{3,8},{3,8},{3,8},{3,8},{3,8},{0,8},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,4},{0,4},{3,8},{0,3},{0,3},{0,3},{0,3},{0,3},{0,9},{0,8},{0,9},{0,9},{0,9},{0,3},{0,3},{0,8},{0,8},{0,8},{0,12},{2,0},{0,0},{2,0},{0,0},{2,0},{0,0},{2,0},{0,0},{2,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{2,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}},
+ {{0,0},{0,0},{0,0},{2,0},{0,0},{2,0},{0,0},{2,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{2,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{2,0},{2,0},{0,12},{0,12},{0,0},{0,0},{2,9},{2,9},{0,0},{0,0},{0,9},{3,1},{2,0},{0,0},{2,0},{0,0},{2,0},{0,0},{2,0},{0,0},{2,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{2,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{2,0},{0,0},{2,0},{0,0},{2,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{2,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{2,0},{2,0},{0,0},{0,0},{0,0},{0,0},{0,1},{3,0},{0,0},{0,0},{0,9}},
+ {{0,12},{0,12},{0,12},{0,12},{0,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{2,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,12},{0,12},{0,12},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,10},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9}},
+ {{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,12},{0,8},{0,8},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,12},{0,12},{0,12},{0,12},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{2,3},{2,3},{2,3},{2,3},{2,3},{2,3},{2,3},{2,3},{2,3},{2,3},{2,3},{2,3},{2,3},{2,3},{2,3},{2,3}},
+ {{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,12},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,8}},
+ {{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,12}},
+ {{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{2,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{2,9},{2,9},{2,9},{2,9},{2,9}},
+ {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}},
+ {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8}},
+ {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,5},{0,12},{0,12},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,8},{1,8}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,8},{1,8},{1,8},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,0},{1,0},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,2},{1,8},{1,8},{1,8},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,2},{1,2},{1,8},{1,0}},
+ {{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,9},{1,9},{1,2},{1,0},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,8},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,9},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4}},
+ {{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,0},{1,8},{1,8},{1,2},{1,2},{1,0},{1,0},{1,2},{1,0},{1,0},{1,0},{1,0},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,4},{1,4},{1,4},{1,12},{1,12},{1,4},{1,4},{1,2},{1,2},{1,2},{1,2},{1,2},{1,2},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,4},{1,9},{1,9},{1,0},{1,4},{1,4},{1,4},{1,4},{1,4}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,8},{1,8},{1,8},{1,4},{1,8},{1,4},{1,12},{1,12}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,8},{1,8},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,12},{0,12},{0,12}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,7},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,8},{1,8},{1,8},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,6},{1,6},{1,6},{1,8},{1,8},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,8},{1,8},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,12},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,8},{1,9},{1,9},{1,9},{1,9},{1,2},{1,2},{1,2},{1,2},{1,4},{1,4},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,8},{1,6},{1,6},{1,12},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,12},{0,12},{0,12},{0,12},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,4},{0,12},{0,12},{0,12},{0,12}},
+ {{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,0},{0,0},{0,9},{0,0},{0,9},{0,0},{0,0},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,0},{0,9},{0,0},{0,9},{0,0},{0,0},{0,9},{0,9},{0,0},{0,0},{0,0},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,12},{0,12},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9}},
+ {{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,12},{1,12},{1,12},{1,12},{1,9},{1,3},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,12},{1,9},{1,9},{1,12},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9}},
+ {{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9}},
+ {{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9}},
+ {{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9}},
+ {{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,8},{1,12},{1,12}},
+ {{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{1,3},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,8},{0,8},{0,9},{0,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{2,9},{2,9},{2,9},{0,12},{0,9},{0,9},{0,9},{0,9},{1,9},{3,9},{3,9},{3,9},{3,9},{3,9},{3,9},{0,9},{0,9},{0,9},{0,9},{1,9},{1,9},{1,9},{1,9},{0,12},{0,9},{0,9},{0,9},{0,9},{0,12},{0,12},{0,12},{0,12},{1,9},{1,9},{1,9},{1,3},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9}},
+ {{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,12},{1,10}},
+ {{1,12},{2,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{3,9},{3,9},{0,9},{0,9},{2,9},{1,9},{2,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{3,9},{3,9},{1,9},{1,9},{1,9},{2,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{3,9},{0,9},{3,9},{0,9},{3,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{3,9},{3,9},{3,9},{3,9},{3,9},{3,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9}},
+ {{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,10},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,12},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,12},{1,9},{1,9},{1,9},{1,12},{1,12},{1,12},{0,9},{0,9},{0,9},{3,9},{0,9},{0,9},{0,9},{0,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{1,8},{1,8},{1,8},{0,8},{0,8},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,4},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,7},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,4},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,8},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,7},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,12},{1,12},{1,12},{1,7},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,8},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,7},{1,7},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,7},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,8},{1,8},{1,7},{1,7},{1,7},{1,8},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,7},{1,8},{1,8},{1,8},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,12},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,7},{1,7},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,7},{1,7},{1,12},{1,12},{1,7},{1,7},{1,7},{1,12},{1,12},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,12},{0,12},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7}},
+ {{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7}},
+ {{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,6},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,12}},
+ {{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,5},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{0,4},{0,4},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,8},{1,7},{1,7},{1,8},{1,10},{1,10},{1,10},{1,10},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,7},{0,7},{0,7},{0,7},{0,7},{0,8},{0,8},{0,8},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,10},{0,10},{0,10},{0,10},{0,10},{0,10},{0,10},{0,10},{0,7},{0,7},{0,7},{0,7},{0,7}},
+ {{0,7},{0,7},{0,7},{0,8},{0,8},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,7},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,7},{0,7},{0,7},{0,7},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,7},{1,7},{1,7},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9}},
+ {{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,12},{1,12},{1,9},{1,12},{1,12},{1,9},{1,9},{1,12},{1,12},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9}},
+ {{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,12},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,12},{1,12},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9}},
+ {{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9}},
+ {{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,8},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,7},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,8},{1,8},{1,8},{1,8},{1,7},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,7},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,12},{1,9},{1,12},{1,12},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,12},{1,9},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,9},{1,12},{1,12},{1,12},{1,12},{1,9},{1,12},{1,9},{1,12},{1,9},{1,12},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,12},{1,9},{1,12},{1,12},{1,9},{1,12},{1,9},{1,12},{1,9},{1,12},{1,9},{1,12},{1,9},{1,12},{1,9},{1,9},{1,12},{1,9},{1,12},{1,12},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,12}},
+ {{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,12},{1,12},{1,12},{1,12},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,9},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,8},{0,8},{0,12},{0,12},{0,12},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,12},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,9},{0,9},{0,12},{0,12},{0,12},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,9},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8}},
+ {{2,9},{2,9},{0,9},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,12},{0,12},{0,12},{0,12},{0,12},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,9},{0,9},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,8},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{1,8},{1,8},{1,8},{1,8},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,8},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}},
+ {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}},
+ {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,12},{0,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}},
+ {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,9},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12}},
+ {{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{0,12},{1,12},{1,12}},
+ {{1,12},{1,11},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,11}},
+ {{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10}},
+ {{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,10},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12},{1,12}}
+};
+#endif
+
+#if !ENABLE_INTL_API
+#define kCharProp2MaxPlane 16
+#define kCharProp2IndexBits 12
+#define kCharProp2CharBits 4
+static const uint8_t sCharProp2Planes[16] = {1,2,3,4,4,4,4,4,4,4,4,4,4,5,6,6};
+
+static const uint16_t sCharProp2Pages[7][4096] = {
+ {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,16,16,17,18,16,16,19,20,21,22,23,24,25,26,27,16,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,59,59,60,60,60,61,61,62,63,63,63,64,63,63,63,63,63,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,81,82,83,84,85,86,81,81,81,81,87,88,89,90,91,92,93,94,81,81,81,95,95,96,97,98,99,100,101,102,103,104,105,106,107,108,108,108,108,109,110,111,111,112,113,114,115,115,116,117,118,119,120,121,122,123,124,125,126,127,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,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,194,195,196,197,198,198,199,200,201,202,203,204,198,198,205,206,207,208,209,210,211,212,213,214,215,216,217,218,198,198,219,219,220,221,222,223,224,225,226,227,228,228,229,230,230,231,232,232,232,232,232,233,234,235,235,235,236,237,237,237,237,237,238,238,238,238,239,240,238,238,239,238,238,241,242,243,238,238,238,242,238,238,238,244,245,246,238,247,248,248,248,248,248,249,250,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,252,251,253,254,255,255,255,255,256,257,258,259,260,261,262,263,264,265,266,266,267,268,269,270,271,272,273,274,275,275,276,275,275,277,275,275,278,251,251,251,251,279,280,281,282,283,284,285,286,287,288,288,289,288,290,291,292,292,293,294,295,295,295,296,297,298,299,299,300,301,198,198,198,198,302,303,303,304,305,306,307,308,309,310,311,312,313,313,314,315,316,316,317,318,319,320,321,322,198,198,198,198,323,324,325,326,37,37,327,328,329,330,331,332,37,333,334,335,336,337,338,339,16,16,16,16,16,16,16,16,16,340,16,16,16,16,16,341,342,343,342,342,343,344,342,345,346,346,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,379,382,383,384,385,386,387,388,389,390,391,392,393,394,390,390,395,390,396,397,398,399,400,400,400,401,402,403,390,404,405,406,407,408,402,402,409,410,411,410,412,413,414,415,416,416,416,416,417,418,419,419,419,419,420,419,419,421,419,422,423,424,425,426,427,428,429,430,402,431,432,402,433,434,402,435,436,437,438,439,440,441,442,402,402,402,402,443,444,445,446,447,379,379,448,390,449,390,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,390,390,390,390,390,390,390,390,451,452,390,390,390,453,390,454,455,390,390,390,390,390,390,456,390,390,390,390,390,455,390,390,379,457,402,390,458,459,379,460,379,461,379,462,463,464,465,410,466,466,467,468,468,469,470,471,472,472,472,472,472,472,473,474,475,475,476,477,477,477,478,479,238,480,481,481,481,481,482,482,483,484,485,486,487,198,198,198,488,489,488,488,488,488,488,490,491,491,491,491,491,491,491,491,491,491,491,491,491,492,410,493,494,495,496,497,498,499,500,499,501,502,503,504,505,504,506,507,508,509,510,511,512,512,513,512,514,515,509,516,517,517,518,519,520,521,522,523,524,525,520,526,522,523,523,527,528,529,529,530,531,531,531,531,531,532,523,533,523,523,523,523,523,534,523,535,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,537,402,402,402,402,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,537,538,538,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,541,542,542,542,543,544,544,545,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,547,546,548,198,61,61,549,550,61,551,552,552,552,552,553,554,42,555,556,557,558,558,558,559,560,561,562,563,198,198,198,564,565,566,567,568,569,569,569,570,571,572,572,573,574,575,576,577,578,579,580,581,582,583,232,584,585,586,586,587,588,589,590,591,592,592,593,594,595,596,219,597,598,598,598,599,600,601,602,603,604,605,481,606,606,607,608,609,609,609,609,609,610,610,611,612,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,618,235,619,237,237,620,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,624,625,626,623,623,623,627,623,623,623,623,623,623,628,538,538,629,630,631,632,633,634,634,634,634,634,634,635,636,637,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,638,111,634,634,634,634,639,634,634,640,198,198,641,642,643,644,645,646,647,648,649,634,634,634,634,634,634,634,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666},
+ {667,668,669,670,671,671,198,198,668,668,668,668,668,668,668,672,673,674,674,675,676,676,676,677,678,679,680,198,198,400,400,681,198,198,198,198,198,198,198,198,682,683,684,684,684,685,686,687,688,688,689,690,691,692,692,693,694,695,696,696,697,698,198,198,699,699,700,701,701,702,702,702,703,704,705,198,198,198,198,198,706,706,707,708,708,708,709,198,198,198,198,198,198,198,198,198,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,711,710,712,713,198,198,198,198,198,198,198,198,198,714,715,715,716,717,718,719,720,721,722,723,108,108,108,724,725,726,727,728,729,108,108,108,108,730,730,731,732,733,734,733,733,735,736,737,738,739,740,741,742,743,744,108,108,745,746,747,748,749,749,749,750,751,752,753,754,755,756,757,108,108,108,108,108,758,758,758,758,759,108,108,108,760,760,760,761,762,762,762,763,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,764,765,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,766,767,767,768,769,770,771,772,773,774,774,775,776,777,778,779,780,781,782,783,784,785,785,786,787,788,788,789,790,791,792,793,794,795,796,797,198,198,198,198,798,799,800,801,801,802,803,804,805,806,807,808,809,810,811,812,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,813,813,813,814,815,816,198,198,198,198,198,198,198,198,198,198,817,817,818,819,820,821,410,410,822,822,822,823,824,825,198,198,826,826,827,828,829,198,198,198,830,831,832,833,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,834,834,835,835,836,837,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,838,838,838,839,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,841,198,198,198,198,198,198,842,842,842,842,842,842,843,844,840,840,840,840,840,840,840,840,840,840,840,840,845,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,847,846,846,848,846,846,846,846,846,846,846,846,846,846,846,846,846,846,849,846,846,846,846,846,846,846,846,846,846,850,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,852,851,851,851,851,851,851,851,853,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,854,855,856,857,198,198,198,198,198,198,858,859,860,861,861,861,862,863,864,865,866,861,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,867,867,867,867,868,869,870,871,872,873,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,874,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,875,875,875,875,875,875,876,877,878,879,880,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,882,881,881,883,881,881,884,885,886,887,881,888,889,890,881,891,410,892,892,892,892,893,198,198,198,198,198,198,198,198,198,198,198,402,402,402,402,402,894,895,896,198,198,198,198,198,198,198,198,897,898,899,900,901,902,903,897,904,905,906,907,908,897,898,899,909,910,899,911,912,913,914,897,915,899,897,898,899,900,901,899,903,897,904,914,897,915,899,897,898,899,916,897,917,918,919,920,899,921,897,922,923,924,925,899,926,897,927,899,928,929,930,931,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,933,933,933,934,933,933,935,936,937,938,939,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,940,940,940,940,940,940,940,940,940,940,940,940,941,942,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,943,634,944,945,946,947,948,949,950,951,952,951,111,111,111,953,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,954,954,955,954,954,954,954,954,954,956,957,958,958,958,954,959,960,416,961,416,416,962,963,962,962,964,410,410,410,410,965,966,967,523,523,968,969,970,410,410,410,410,410,410,410,410,410,410,954,954,954,954,954,954,954,954,954,971,954,972,954,954,954,973,954,954,954,954,954,954,954,954,954,954,974,975,954,954,954,954,976,977,978,979,980,954,954,981,954,954,982,954,954,983,954,984,954,954,954,954,954,402,402,985,954,954,954,954,954,986,987,956,402,402,402,402,402,402,402,988,402,402,402,402,402,989,410,410,679,379,379,379,990,991,379,379,990,379,992,198,198,198,198,198,198,993,198,198,198,198,198,198,994,198,198,198,995,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198},
+ {536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,996,538,538,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,997,536,536,536,536,536,536,536,536,536,536,536,536,536,998,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,999,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,627,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,1000},
+ {538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,1000},
+ {198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198},
+ {1001,198,1002,1002,1002,1002,1002,1003,198,198,198,198,198,198,198,198,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198},
+ {622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,1004}
+};
+
+static const nsCharProps2 sCharProp2Values[1005][16] = {
+ {{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,8,8,-1,1,4},{0,0,0,0,7,8,-1,1,17},{0,0,0,0,8,8,-1,1,6},{0,0,0,0,9,8,-1,1,6},{0,0,0,0,7,8,-1,1,10},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9}},
+ {{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,7,12,-1,1,9},{0,0,0,0,7,12,-1,1,9},{0,0,0,0,7,12,-1,1,9},{0,0,0,0,8,12,-1,1,9}},
+ {{0,0,0,29,9,8,-1,1,26},{0,0,0,21,10,8,-1,1,11},{0,0,0,21,10,8,-1,1,23},{0,0,0,21,4,8,-1,1,2},{0,0,0,23,4,8,-1,1,22},{0,0,0,21,4,8,-1,1,21},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,1,-1,1,23},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,36},{0,0,0,21,10,8,-1,1,2},{0,0,0,25,3,8,-1,1,22},{0,0,0,21,6,8,-1,1,16},{0,0,0,17,3,1,-1,1,13},{0,0,0,21,6,1,-1,1,16},{0,0,0,21,6,8,-1,1,27}},
+ {{0,0,0,13,2,0,0,1,19},{0,0,0,13,2,0,1,1,19},{0,0,0,13,2,0,2,1,19},{0,0,0,13,2,0,3,1,19},{0,0,0,13,2,0,4,1,19},{0,0,0,13,2,0,5,1,19},{0,0,0,13,2,0,6,1,19},{0,0,0,13,2,0,7,1,19},{0,0,0,13,2,0,8,1,19},{0,0,0,13,2,0,9,1,19},{0,0,0,21,6,1,-1,1,16},{0,0,0,21,10,8,-1,1,16},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,11}},
+ {{0,0,0,21,10,8,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2}},
+ {{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{0,1,0,22,10,8,-1,1,20},{0,0,0,21,10,8,-1,1,22},{0,2,0,18,10,8,-1,1,36},{0,0,0,24,10,8,-1,1,2},{0,0,0,16,10,0,-1,1,2}},
+ {{0,0,0,24,10,8,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}},
+ {{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{0,1,0,22,10,8,-1,1,20},{0,0,0,25,10,8,-1,1,4},{0,2,0,18,10,8,-1,1,8},{0,0,0,25,10,8,-1,1,2},{0,0,0,0,18,12,-1,1,9}},
+ {{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,7,8,-1,1,29},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9}},
+ {{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9}},
+ {{0,0,0,29,6,9,-1,1,12},{0,0,0,21,10,8,-1,1,20},{0,0,0,23,4,8,-1,1,21},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,26,10,8,-1,1,2},{0,0,0,21,10,8,-1,0,1},{0,0,0,24,10,9,-1,1,1},{0,0,0,26,10,8,-1,0,2},{25,0,0,7,0,9,-1,1,1},{0,0,0,20,10,8,-1,1,23},{0,0,0,25,10,8,-1,1,2},{0,0,0,1,18,10,-1,1,4},{0,0,0,26,10,8,-1,0,2},{0,0,0,24,10,9,-1,1,2}},
+ {{0,0,0,26,4,8,-1,1,21},{0,0,0,25,4,8,-1,0,22},{0,0,0,15,2,9,2,1,1},{0,0,0,15,2,9,3,1,1},{0,0,0,24,10,9,-1,1,5},{0,0,0,5,0,9,-1,1,2},{0,0,0,21,10,8,-1,1,1},{0,0,0,21,10,1,-1,1,1},{0,0,0,24,10,9,-1,1,1},{0,0,0,15,2,9,1,1,1},{25,0,0,7,0,9,-1,1,1},{0,0,0,19,10,8,-1,1,23},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,21,10,8,-1,1,20}},
+ {{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2}},
+ {{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{0,0,0,25,10,8,-1,0,1},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}},
+ {{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}},
+ {{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{0,0,0,25,10,8,-1,0,1},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}},
+ {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}},
+ {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,9,-1,1,2}},
+ {{25,0,0,5,0,9,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,11,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}},
+ {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,9,-1,1,2}},
+ {{25,0,0,5,0,3,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,0,-1,1,2}},
+ {{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2}},
+ {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,0,-1,1,2}},
+ {{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,7,0,4,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2}},
+ {{25,0,0,7,0,3,-1,1,2},{25,0,0,7,0,3,-1,1,2},{25,0,0,7,0,3,-1,1,2},{25,0,0,7,0,3,-1,1,2},{25,0,0,9,0,9,-1,1,2},{25,0,0,8,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,9,0,9,-1,1,2},{25,0,0,8,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,9,0,9,-1,1,2},{25,0,0,8,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2}},
+ {{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}},
+ {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}},
+ {{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,9,-1,1,2},{25,0,0,8,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}},
+ {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}},
+ {{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}},
+ {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2}},
+ {{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2}},
+ {{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,4,-1,1,2}},
+ {{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2}},
+ {{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2}},
+ {{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2}},
+ {{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,7,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,3,-1,1,2}},
+ {{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2}},
+ {{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{0,0,0,6,10,3,-1,1,2},{0,0,0,6,10,3,-1,1,2},{0,0,0,6,0,0,-1,1,2},{0,0,0,6,0,0,-1,1,2},{0,0,0,6,0,3,-1,1,2},{0,0,0,6,0,3,-1,1,2},{0,0,0,6,0,3,-1,1,2}},
+ {{0,0,0,6,0,3,-1,1,2},{0,0,0,6,0,3,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,6,10,3,-1,1,2},{0,0,0,6,10,3,-1,1,1},{0,0,0,6,10,3,-1,1,5},{0,0,0,6,10,3,-1,1,1},{0,0,0,6,10,3,-1,1,1},{0,0,0,6,10,3,-1,1,1},{0,0,0,6,10,3,-1,1,5},{0,0,0,6,10,3,-1,1,1},{0,0,0,6,10,3,-1,1,2},{0,0,0,6,10,3,-1,1,2}},
+ {{0,0,0,6,0,3,-1,1,1},{0,0,0,6,0,3,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,9,-1,1,1},{0,0,0,24,10,9,-1,1,1},{0,0,0,24,10,9,-1,1,1},{0,0,0,24,10,9,-1,1,1},{0,0,0,24,10,9,-1,1,2},{0,0,0,24,10,9,-1,1,1},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,5}},
+ {{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{5,0,0,24,10,8,-1,0,2},{5,0,0,24,10,8,-1,0,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,6,0,3,-1,1,2},{0,0,0,24,10,8,-1,1,2}},
+ {{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2}},
+ {{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,0,-1,1,9}},
+ {{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9}},
+ {{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,3,-1,1,9}},
+ {{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9}},
+ {{1,0,0,12,17,9,-1,1,9},{1,0,0,12,17,9,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,9,-1,1,9},{1,0,0,12,17,9,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,10,-1,1,12}},
+ {{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,12},{1,0,0,12,17,3,-1,1,12},{1,0,0,12,17,3,-1,1,12},{1,0,0,12,17,3,-1,1,12}},
+ {{1,0,0,12,17,3,-1,1,12},{1,0,0,12,17,3,-1,1,12},{1,0,0,12,17,3,-1,1,12},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9}},
+ {{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{0,0,0,6,10,9,-1,1,2},{14,0,0,24,10,1,-1,1,2},{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{14,0,0,6,0,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{0,0,0,21,10,9,-1,1,16},{14,0,0,9,0,4,-1,1,2}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{14,0,0,24,10,9,-1,1,2},{0,0,0,24,10,9,-1,1,2},{14,0,0,9,0,0,-1,1,2},{0,0,0,21,10,9,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2}},
+ {{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2}},
+ {{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2}},
+ {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2}},
+ {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,3,-1,1,2}},
+ {{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,3,-1,1,2},{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2}},
+ {{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2}},
+ {{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,4,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,25,10,8,-1,1,2},{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2}},
+ {{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2}},
+ {{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2}},
+ {{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2}},
+ {{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,26,0,8,-1,1,2},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,11,17,8,-1,1,9},{8,0,0,11,17,8,-1,1,9},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2}},
+ {{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2}},
+ {{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2}},
+ {{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2}},
+ {{103,0,0,2,0,12,-1,1,0},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2}},
+ {{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2}},
+ {{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{3,0,0,6,0,0,-1,1,2},{3,0,0,21,0,8,-1,1,2},{3,0,0,21,0,8,-1,1,2},{3,0,0,21,0,8,-1,1,2},{3,0,0,21,0,8,-1,1,2},{3,0,0,21,0,8,-1,1,2},{3,0,0,21,0,8,-1,1,2}},
+ {{103,0,0,2,0,12,-1,1,0},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2}},
+ {{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2}},
+ {{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,21,0,8,-1,1,16},{3,0,0,17,10,1,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{3,0,0,26,10,8,-1,1,2},{3,0,0,26,10,8,-1,1,2},{3,0,0,23,4,8,-1,1,22}},
+ {{103,0,0,2,1,12,-1,1,0},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9}},
+ {{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,4,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9}},
+ {{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,0,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,17,1,8,-1,1,4},{19,0,0,12,17,2,-1,1,9}},
+ {{19,0,0,21,1,8,-1,1,2},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,21,1,8,-1,1,2},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,4,-1,1,9},{19,0,0,21,1,8,-1,1,11},{19,0,0,12,17,4,-1,1,9},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}},
+ {{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38}},
+ {{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}},
+ {{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,21,1,1,-1,1,2},{19,0,0,21,1,1,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}},
+ {{2,0,0,1,5,8,-1,1,2},{2,0,0,1,5,8,-1,1,2},{2,0,0,1,5,8,-1,1,2},{2,0,0,1,5,8,-1,1,2},{2,0,0,1,5,8,-1,1,2},{0,0,0,1,5,8,-1,1,2},{2,0,0,25,10,8,-1,1,2},{2,0,0,25,10,8,-1,1,2},{2,0,0,25,13,8,-1,1,2},{2,0,0,21,4,8,-1,1,21},{2,0,0,21,4,8,-1,1,21},{2,0,0,23,13,8,-1,1,21},{0,0,0,21,6,8,-1,1,16},{2,0,0,21,13,8,-1,1,16},{2,0,0,26,10,8,-1,1,2},{2,0,0,26,10,8,-1,1,2}},
+ {{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{0,0,0,21,13,8,-1,1,11},{0,0,0,1,13,10,-1,1,9},{103,0,0,2,13,12,-1,1,0},{2,0,0,21,13,8,-1,1,11},{0,0,0,21,13,8,-1,1,11}},
+ {{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2}},
+ {{0,0,0,6,13,7,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9}},
+ {{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9}},
+ {{2,0,0,13,5,0,0,1,19},{2,0,0,13,5,0,1,1,19},{2,0,0,13,5,0,2,1,19},{2,0,0,13,5,0,3,1,19},{2,0,0,13,5,0,4,1,19},{2,0,0,13,5,0,5,1,19},{2,0,0,13,5,0,6,1,19},{2,0,0,13,5,0,7,1,19},{2,0,0,13,5,0,8,1,19},{2,0,0,13,5,0,9,1,19},{2,0,0,21,4,8,-1,1,21},{2,0,0,21,5,8,-1,1,19},{2,0,0,21,5,8,-1,1,19},{2,0,0,21,13,8,-1,1,2},{2,0,0,7,13,4,-1,1,2},{2,0,0,7,13,4,-1,1,2}},
+ {{1,0,0,12,17,0,-1,1,9},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,11,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2}},
+ {{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,4,-1,1,2},{2,0,0,7,13,0,-1,1,2}},
+ {{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,21,13,8,-1,1,11},{2,0,0,7,13,0,-1,1,2},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{0,0,0,1,5,8,-1,1,2},{2,0,0,26,10,8,-1,1,2},{2,0,0,12,17,2,-1,1,9}},
+ {{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,6,13,0,-1,1,2},{2,0,0,6,13,0,-1,1,2},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,26,10,8,-1,1,2},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2}},
+ {{2,0,0,13,2,0,0,1,19},{2,0,0,13,2,0,1,1,19},{2,0,0,13,2,0,2,1,19},{2,0,0,13,2,0,3,1,19},{2,0,0,13,2,0,4,1,19},{2,0,0,13,2,0,5,1,19},{2,0,0,13,2,0,6,1,19},{2,0,0,13,2,0,7,1,19},{2,0,0,13,2,0,8,1,19},{2,0,0,13,2,0,9,1,19},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,26,13,1,-1,1,2},{2,0,0,26,13,1,-1,1,2},{2,0,0,7,13,0,-1,1,2}},
+ {{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{103,0,0,2,13,12,-1,1,0},{34,0,0,1,13,8,-1,1,2}},
+ {{34,0,0,7,13,6,-1,1,2},{34,0,0,12,17,6,-1,1,9},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2}},
+ {{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2}},
+ {{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9}},
+ {{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2}},
+ {{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2}},
+ {{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9}},
+ {{37,0,0,12,17,0,-1,1,9},{37,0,0,7,13,0,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}},
+ {{87,0,0,13,1,6,0,1,19},{87,0,0,13,1,6,1,1,19},{87,0,0,13,1,6,2,1,19},{87,0,0,13,1,6,3,1,19},{87,0,0,13,1,6,4,1,19},{87,0,0,13,1,6,5,1,19},{87,0,0,13,1,6,6,1,19},{87,0,0,13,1,6,7,1,19},{87,0,0,13,1,6,8,1,19},{87,0,0,13,1,6,9,1,19},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2}},
+ {{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2}},
+ {{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,12,17,6,-1,1,9},{87,0,0,12,17,6,-1,1,9},{87,0,0,12,17,6,-1,1,9},{87,0,0,12,17,6,-1,1,9},{87,0,0,12,17,6,-1,1,9}},
+ {{87,0,0,12,17,6,-1,1,9},{87,0,0,12,17,6,-1,1,9},{87,0,0,12,17,6,-1,1,9},{87,0,0,12,17,6,-1,1,9},{87,0,0,6,1,6,-1,1,2},{87,0,0,6,1,6,-1,1,2},{87,0,0,26,10,8,-1,1,2},{87,0,0,21,10,8,-1,1,2},{87,0,0,21,10,8,-1,1,16},{87,0,0,21,10,8,-1,1,11},{87,0,0,6,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}},
+ {{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2}},
+ {{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,6,1,7,-1,1,2},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9}},
+ {{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,6,1,7,-1,1,2},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,6,1,7,-1,1,2},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}},
+ {{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{103,0,0,2,1,12,-1,1,0}},
+ {{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2}},
+ {{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,12,17,6,-1,1,9},{84,0,0,12,17,6,-1,1,9},{84,0,0,12,17,6,-1,1,9},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{84,0,0,21,1,8,-1,1,2},{103,0,0,2,1,12,-1,1,0}},
+ {{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}},
+ {{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,4,-1,1,2},{2,0,0,7,13,4,-1,1,2},{2,0,0,7,13,4,-1,1,2}},
+ {{2,0,0,7,13,4,-1,1,2},{2,0,0,7,13,4,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,2,-1,1,2},{2,0,0,7,13,2,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}},
+ {{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}},
+ {{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9}},
+ {{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9}},
+ {{10,0,0,12,17,2,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,10,0,0,-1,1,9},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2}},
+ {{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2}},
+ {{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,12,17,0,-1,1,9},{10,0,0,10,0,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,7,0,0,-1,1,2},{10,0,0,10,0,0,-1,1,9},{10,0,0,10,0,0,-1,1,9}},
+ {{10,0,0,10,0,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,10,0,0,-1,1,9},{10,0,0,10,0,0,-1,1,9},{10,0,0,10,0,0,-1,1,9},{10,0,0,10,0,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,10,0,4,-1,1,9},{10,0,0,10,0,0,-1,1,9}},
+ {{10,0,0,7,0,0,-1,1,2},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{10,0,0,12,17,3,-1,1,9},{10,0,0,12,17,3,-1,1,9},{10,0,0,12,17,2,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,7,0,9,-1,1,2},{10,0,0,7,0,9,-1,1,2},{10,0,0,7,0,9,-1,1,2},{10,0,0,7,0,9,-1,1,2},{10,0,0,7,0,9,-1,1,2},{10,0,0,7,0,9,-1,1,2},{10,0,0,7,0,9,-1,1,2},{10,0,0,7,0,9,-1,1,2}},
+ {{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{0,0,0,21,0,8,-1,1,4},{0,0,0,21,0,8,-1,1,4},{10,0,0,13,0,0,0,1,19},{10,0,0,13,0,0,1,1,19},{10,0,0,13,0,0,2,1,19},{10,0,0,13,0,0,3,1,19},{10,0,0,13,0,0,4,1,19},{10,0,0,13,0,0,5,1,19},{10,0,0,13,0,0,6,1,19},{10,0,0,13,0,0,7,1,19},{10,0,0,13,0,0,8,1,19},{10,0,0,13,0,0,9,1,19}},
+ {{10,0,0,21,0,8,-1,1,2},{10,0,0,6,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,4,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2}},
+ {{4,0,0,7,0,4,-1,1,2},{4,0,0,12,17,0,-1,1,9},{4,0,0,10,0,0,-1,1,9},{4,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,7,0,0,-1,1,2}},
+ {{4,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2}},
+ {{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2}},
+ {{4,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{4,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,12,17,0,-1,1,9},{4,0,0,7,0,0,-1,1,2},{4,0,0,10,0,0,-1,1,9},{4,0,0,10,0,0,-1,1,9}},
+ {{4,0,0,10,0,0,-1,1,9},{4,0,0,12,17,0,-1,1,9},{4,0,0,12,17,0,-1,1,9},{4,0,0,12,17,0,-1,1,9},{4,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,10,0,0,-1,1,9},{4,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,10,0,0,-1,1,9},{4,0,0,10,0,0,-1,1,9},{4,0,0,12,17,0,-1,1,9},{4,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,7,0,9,-1,1,2},{4,0,0,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{4,0,0,7,0,9,-1,1,2}},
+ {{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,12,17,0,-1,1,9},{4,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,13,0,0,0,1,19},{4,0,0,13,0,0,1,1,19},{4,0,0,13,0,0,2,1,19},{4,0,0,13,0,0,3,1,19},{4,0,0,13,0,0,4,1,19},{4,0,0,13,0,0,5,1,19},{4,0,0,13,0,0,6,1,19},{4,0,0,13,0,0,7,1,19},{4,0,0,13,0,0,8,1,19},{4,0,0,13,0,0,9,1,19}},
+ {{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,23,4,8,-1,1,21},{4,0,0,23,4,8,-1,1,21},{4,0,0,15,0,8,-1,1,2},{4,0,0,15,0,8,-1,1,2},{4,0,0,15,0,8,-1,1,2},{4,0,0,15,0,8,-1,1,2},{4,0,0,15,0,8,-1,1,2},{4,0,0,15,0,8,-1,1,21},{4,0,0,26,0,8,-1,1,2},{4,0,0,23,4,8,-1,1,22},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{16,0,0,12,17,0,-1,1,9},{16,0,0,12,17,0,-1,1,9},{16,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,0,-1,1,2}},
+ {{16,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2}},
+ {{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2}},
+ {{16,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{16,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{16,0,0,10,0,0,-1,1,9},{16,0,0,10,0,0,-1,1,9}},
+ {{16,0,0,10,0,0,-1,1,9},{16,0,0,12,17,0,-1,1,9},{16,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{16,0,0,12,17,0,-1,1,9},{16,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{16,0,0,12,17,0,-1,1,9},{16,0,0,12,17,0,-1,1,9},{16,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{16,0,0,12,17,2,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,9,-1,1,2},{16,0,0,7,0,9,-1,1,2},{16,0,0,7,0,9,-1,1,2},{16,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{16,0,0,13,0,0,0,1,19},{16,0,0,13,0,0,1,1,19},{16,0,0,13,0,0,2,1,19},{16,0,0,13,0,0,3,1,19},{16,0,0,13,0,0,4,1,19},{16,0,0,13,0,0,5,1,19},{16,0,0,13,0,0,6,1,19},{16,0,0,13,0,0,7,1,19},{16,0,0,13,0,0,8,1,19},{16,0,0,13,0,0,9,1,19}},
+ {{16,0,0,12,17,0,-1,1,9},{16,0,0,12,17,0,-1,1,9},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,12,17,2,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{15,0,0,12,17,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{15,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{15,0,0,7,0,0,-1,1,2}},
+ {{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2}},
+ {{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2}},
+ {{15,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{15,0,0,12,17,0,-1,1,9},{15,0,0,7,0,0,-1,1,2},{15,0,0,10,0,0,-1,1,9},{15,0,0,10,0,0,-1,1,9}},
+ {{15,0,0,10,0,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{15,0,0,12,17,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{15,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{15,0,0,10,0,0,-1,1,9},{15,0,0,10,0,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{15,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,12,17,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{15,0,0,13,0,0,0,1,19},{15,0,0,13,0,0,1,1,19},{15,0,0,13,0,0,2,1,19},{15,0,0,13,0,0,3,1,19},{15,0,0,13,0,0,4,1,19},{15,0,0,13,0,0,5,1,19},{15,0,0,13,0,0,6,1,19},{15,0,0,13,0,0,7,1,19},{15,0,0,13,0,0,8,1,19},{15,0,0,13,0,0,9,1,19}},
+ {{15,0,0,21,0,8,-1,1,2},{15,0,0,23,4,8,-1,1,22},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{15,0,0,7,0,2,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{31,0,0,12,17,0,-1,1,9},{31,0,0,10,0,0,-1,1,9},{31,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{31,0,0,7,0,0,-1,1,2}},
+ {{31,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2}},
+ {{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2}},
+ {{31,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{31,0,0,12,17,0,-1,1,9},{31,0,0,7,0,0,-1,1,2},{31,0,0,10,0,0,-1,1,9},{31,0,0,12,17,0,-1,1,9}},
+ {{31,0,0,10,0,0,-1,1,9},{31,0,0,12,17,0,-1,1,9},{31,0,0,12,17,0,-1,1,9},{31,0,0,12,17,0,-1,1,9},{31,0,0,12,17,2,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{31,0,0,10,0,0,-1,1,9},{31,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{31,0,0,10,0,0,-1,1,9},{31,0,0,10,0,0,-1,1,9},{31,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{31,0,0,12,17,0,-1,1,9},{31,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{31,0,0,7,0,9,-1,1,2},{31,0,0,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{31,0,0,7,0,0,-1,1,2}},
+ {{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,12,17,2,-1,1,9},{31,0,0,12,17,2,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{31,0,0,13,0,0,0,1,19},{31,0,0,13,0,0,1,1,19},{31,0,0,13,0,0,2,1,19},{31,0,0,13,0,0,3,1,19},{31,0,0,13,0,0,4,1,19},{31,0,0,13,0,0,5,1,19},{31,0,0,13,0,0,6,1,19},{31,0,0,13,0,0,7,1,19},{31,0,0,13,0,0,8,1,19},{31,0,0,13,0,0,9,1,19}},
+ {{31,0,0,26,0,8,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,15,0,8,-1,1,2},{31,0,0,15,0,8,-1,1,2},{31,0,0,15,0,8,-1,1,2},{31,0,0,15,0,8,-1,1,2},{31,0,0,15,0,8,-1,1,2},{31,0,0,15,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,12,17,0,-1,1,9},{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2}},
+ {{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2}},
+ {{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,10,0,0,-1,1,9},{35,0,0,10,0,0,-1,1,9}},
+ {{35,0,0,12,17,0,-1,1,9},{35,0,0,10,0,0,-1,1,9},{35,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,10,0,0,-1,1,9},{35,0,0,10,0,0,-1,1,9},{35,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{35,0,0,10,0,0,-1,1,9},{35,0,0,10,0,0,-1,1,9},{35,0,0,10,0,0,-1,1,9},{35,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,13,0,0,0,1,19},{35,0,0,13,0,0,1,1,19},{35,0,0,13,0,0,2,1,19},{35,0,0,13,0,0,3,1,19},{35,0,0,13,0,0,4,1,19},{35,0,0,13,0,0,5,1,19},{35,0,0,13,0,0,6,1,19},{35,0,0,13,0,0,7,1,19},{35,0,0,13,0,0,8,1,19},{35,0,0,13,0,0,9,1,19}},
+ {{35,0,0,15,0,8,-1,1,2},{35,0,0,15,0,8,-1,1,2},{35,0,0,15,0,8,-1,1,2},{35,0,0,26,10,8,-1,1,2},{35,0,0,26,10,8,-1,1,2},{35,0,0,26,10,8,-1,1,2},{35,0,0,26,10,8,-1,1,2},{35,0,0,26,10,8,-1,1,2},{35,0,0,26,10,8,-1,1,2},{35,0,0,23,4,8,-1,1,22},{35,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{36,0,0,12,17,4,-1,1,9},{36,0,0,10,0,0,-1,1,9},{36,0,0,10,0,0,-1,1,9},{36,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2}},
+ {{36,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2}},
+ {{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2}},
+ {{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,4,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{36,0,0,7,0,0,-1,1,2},{36,0,0,12,17,0,-1,1,9},{36,0,0,12,17,0,-1,1,9}},
+ {{36,0,0,12,17,0,-1,1,9},{36,0,0,10,0,0,-1,1,9},{36,0,0,10,0,0,-1,1,9},{36,0,0,10,0,0,-1,1,9},{36,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{36,0,0,12,17,0,-1,1,9},{36,0,0,12,17,0,-1,1,9},{36,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{36,0,0,12,17,0,-1,1,9},{36,0,0,12,17,0,-1,1,9},{36,0,0,12,17,0,-1,1,9},{36,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{36,0,0,12,17,0,-1,1,9},{36,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{36,0,0,7,0,4,-1,1,2},{36,0,0,7,0,4,-1,1,2},{36,0,0,7,0,2,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,12,17,2,-1,1,9},{36,0,0,12,17,2,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{36,0,0,13,0,0,0,1,19},{36,0,0,13,0,0,1,1,19},{36,0,0,13,0,0,2,1,19},{36,0,0,13,0,0,3,1,19},{36,0,0,13,0,0,4,1,19},{36,0,0,13,0,0,5,1,19},{36,0,0,13,0,0,6,1,19},{36,0,0,13,0,0,7,1,19},{36,0,0,13,0,0,8,1,19},{36,0,0,13,0,0,9,1,19}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{36,0,0,15,10,8,-1,1,2},{36,0,0,15,10,8,-1,1,2},{36,0,0,15,10,8,-1,1,2},{36,0,0,15,10,8,-1,1,2},{36,0,0,15,10,8,-1,1,2},{36,0,0,15,10,8,-1,1,2},{36,0,0,15,10,8,-1,1,2},{36,0,0,26,0,8,-1,1,2}},
+ {{103,0,0,2,0,12,-1,1,0},{21,0,0,12,17,4,-1,1,9},{21,0,0,10,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2}},
+ {{21,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2}},
+ {{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2}},
+ {{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{21,0,0,12,17,0,-1,1,9},{21,0,0,7,0,0,-1,1,2},{21,0,0,10,0,0,-1,1,9},{21,0,0,12,0,0,-1,1,9}},
+ {{21,0,0,10,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{21,0,0,12,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{21,0,0,10,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{21,0,0,12,17,0,-1,1,9},{21,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{21,0,0,10,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{21,0,0,7,0,4,-1,1,2},{103,0,0,2,0,12,-1,1,0}},
+ {{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,12,17,0,-1,1,9},{21,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{21,0,0,13,0,0,0,1,19},{21,0,0,13,0,0,1,1,19},{21,0,0,13,0,0,2,1,19},{21,0,0,13,0,0,3,1,19},{21,0,0,13,0,0,4,1,19},{21,0,0,13,0,0,5,1,19},{21,0,0,13,0,0,6,1,19},{21,0,0,13,0,0,7,1,19},{21,0,0,13,0,0,8,1,19},{21,0,0,13,0,0,9,1,19}},
+ {{103,0,0,2,0,12,-1,1,0},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{26,0,0,12,17,4,-1,1,9},{26,0,0,10,0,0,-1,1,9},{26,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2}},
+ {{26,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2}},
+ {{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2}},
+ {{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{26,0,0,7,0,0,-1,1,2},{26,0,0,10,0,0,-1,1,9},{26,0,0,10,0,0,-1,1,9}},
+ {{26,0,0,10,0,0,-1,1,9},{26,0,0,12,17,0,-1,1,9},{26,0,0,12,17,0,-1,1,9},{26,0,0,12,17,0,-1,1,9},{26,0,0,12,17,2,-1,1,9},{103,0,0,2,0,12,-1,1,0},{26,0,0,10,0,0,-1,1,9},{26,0,0,10,0,0,-1,1,9},{26,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{26,0,0,10,0,0,-1,1,9},{26,0,0,10,0,0,-1,1,9},{26,0,0,10,0,0,-1,1,9},{26,0,0,12,17,0,-1,1,9},{26,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{26,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{26,0,0,7,0,4,-1,1,2}},
+ {{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,12,17,2,-1,1,9},{26,0,0,12,17,2,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{26,0,0,13,0,0,0,1,19},{26,0,0,13,0,0,1,1,19},{26,0,0,13,0,0,2,1,19},{26,0,0,13,0,0,3,1,19},{26,0,0,13,0,0,4,1,19},{26,0,0,13,0,0,5,1,19},{26,0,0,13,0,0,6,1,19},{26,0,0,13,0,0,7,1,19},{26,0,0,13,0,0,8,1,19},{26,0,0,13,0,0,9,1,19}},
+ {{26,0,0,15,0,8,-1,1,2},{26,0,0,15,0,8,-1,1,2},{26,0,0,15,0,8,-1,1,2},{26,0,0,15,0,8,-1,1,2},{26,0,0,15,0,8,-1,1,2},{26,0,0,15,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{26,0,0,26,0,8,-1,1,21},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,3,-1,1,2}},
+ {{33,0,0,7,0,3,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2}},
+ {{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,3,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2}},
+ {{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{33,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{33,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{33,0,0,10,0,0,-1,1,9}},
+ {{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,0,-1,1,9},{33,0,0,12,17,0,-1,1,9},{33,0,0,12,17,0,-1,1,9},{33,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{33,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,3,-1,1,9}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{33,0,0,13,0,4,0,1,19},{33,0,0,13,0,4,1,1,19},{33,0,0,13,0,4,2,1,19},{33,0,0,13,0,4,3,1,19},{33,0,0,13,0,4,4,1,19},{33,0,0,13,0,4,5,1,19},{33,0,0,13,0,4,6,1,19},{33,0,0,13,0,4,7,1,19},{33,0,0,13,0,4,8,1,19},{33,0,0,13,0,4,9,1,19}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,3,-1,1,9},{33,0,0,21,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24}},
+ {{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24}},
+ {{38,0,0,7,0,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,9,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,23,4,8,-1,1,22}},
+ {{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,6,0,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,21,0,8,-1,1,2}},
+ {{38,0,0,13,0,0,0,1,19},{38,0,0,13,0,0,1,1,19},{38,0,0,13,0,0,2,1,19},{38,0,0,13,0,0,3,1,19},{38,0,0,13,0,0,4,1,19},{38,0,0,13,0,0,5,1,19},{38,0,0,13,0,0,6,1,19},{38,0,0,13,0,0,7,1,19},{38,0,0,13,0,0,8,1,19},{38,0,0,13,0,0,9,1,19},{38,0,0,21,0,8,-1,1,4},{38,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24}},
+ {{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24}},
+ {{24,0,0,7,0,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,9,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,6,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{24,0,0,13,0,0,0,1,19},{24,0,0,13,0,0,1,1,19},{24,0,0,13,0,0,2,1,19},{24,0,0,13,0,0,3,1,19},{24,0,0,13,0,0,4,1,19},{24,0,0,13,0,0,5,1,19},{24,0,0,13,0,0,6,1,19},{24,0,0,13,0,0,7,1,19},{24,0,0,13,0,0,8,1,19},{24,0,0,13,0,0,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,9,-1,1,24},{24,0,0,7,0,9,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24}},
+ {{39,0,0,7,0,0,-1,1,2},{39,0,0,26,0,8,-1,1,5},{39,0,0,26,0,8,-1,1,5},{39,0,0,26,0,8,-1,1,5},{39,0,0,21,0,8,-1,1,5},{39,0,0,21,0,8,-1,1,2},{39,0,0,21,0,8,-1,1,5},{39,0,0,21,0,8,-1,1,5},{39,0,0,21,0,8,-1,1,12},{39,0,0,21,0,8,-1,1,5},{39,0,0,21,0,8,-1,1,5},{39,0,0,21,0,1,-1,1,4},{39,0,0,21,0,9,-1,1,12},{39,0,0,21,0,8,-1,1,11},{39,0,0,21,0,8,-1,1,11},{39,0,0,21,0,8,-1,1,11}},
+ {{39,0,0,21,0,8,-1,1,11},{39,0,0,21,0,8,-1,1,11},{39,0,0,21,0,8,-1,1,12},{39,0,0,26,0,8,-1,1,2},{39,0,0,21,0,8,-1,1,11},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,12,17,3,-1,1,9},{39,0,0,12,17,3,-1,1,9},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2}},
+ {{39,0,0,13,0,0,0,1,19},{39,0,0,13,0,0,1,1,19},{39,0,0,13,0,0,2,1,19},{39,0,0,13,0,0,3,1,19},{39,0,0,13,0,0,4,1,19},{39,0,0,13,0,0,5,1,19},{39,0,0,13,0,0,6,1,19},{39,0,0,13,0,0,7,1,19},{39,0,0,13,0,0,8,1,19},{39,0,0,13,0,0,9,1,19},{39,0,0,15,0,8,-1,1,2},{39,0,0,15,0,8,-1,1,2},{39,0,0,15,0,8,-1,1,2},{39,0,0,15,0,8,-1,1,2},{39,0,0,15,0,8,-1,1,2},{39,0,0,15,0,8,-1,1,2}},
+ {{39,0,0,15,0,8,-1,1,2},{39,0,0,15,0,8,-1,1,2},{39,0,0,15,0,8,-1,1,2},{39,0,0,15,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,4},{39,0,0,12,17,0,-1,1,9},{39,0,0,26,0,8,-1,1,2},{39,0,0,12,17,0,-1,1,9},{39,0,0,26,0,8,-1,1,2},{39,0,0,12,17,2,-1,1,9},{39,1,0,22,10,8,-1,1,20},{39,2,0,18,10,8,-1,1,8},{39,1,0,22,10,8,-1,1,20},{39,2,0,18,10,8,-1,1,8},{39,0,0,10,0,0,-1,1,9},{39,0,0,10,0,0,-1,1,9}},
+ {{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,9,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,9,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2}},
+ {{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,9,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,9,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,9,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2}},
+ {{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,9,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,11,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,11,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,10,0,0,-1,1,4}},
+ {{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,21,0,8,-1,1,4},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9}},
+ {{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9}},
+ {{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9}},
+ {{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{39,0,0,26,0,8,-1,1,4},{39,0,0,26,0,8,-1,1,4}},
+ {{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,12,17,0,-1,1,9},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2}},
+ {{39,0,0,21,0,8,-1,1,5},{39,0,0,21,0,8,-1,1,5},{39,0,0,21,0,8,-1,1,4},{39,0,0,21,0,8,-1,1,5},{39,0,0,21,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{39,0,0,21,0,8,-1,1,12},{39,0,0,21,0,8,-1,1,12},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24}},
+ {{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24}},
+ {{28,0,0,12,17,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,7,0,0,-1,1,24}},
+ {{28,0,0,13,0,0,0,1,19},{28,0,0,13,0,0,1,1,19},{28,0,0,13,0,0,2,1,19},{28,0,0,13,0,0,3,1,19},{28,0,0,13,0,0,4,1,19},{28,0,0,13,0,0,5,1,19},{28,0,0,13,0,0,6,1,19},{28,0,0,13,0,0,7,1,19},{28,0,0,13,0,0,8,1,19},{28,0,0,13,0,0,9,1,19},{28,0,0,21,0,8,-1,1,4},{28,0,0,21,0,8,-1,1,4},{28,0,0,21,0,8,-1,1,2},{28,0,0,21,0,8,-1,1,2},{28,0,0,21,0,8,-1,1,2},{28,0,0,21,0,8,-1,1,2}},
+ {{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24}},
+ {{28,0,0,12,17,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24}},
+ {{28,0,0,7,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24}},
+ {{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24}},
+ {{28,0,0,13,0,0,0,1,19},{28,0,0,13,0,0,1,1,19},{28,0,0,13,0,0,2,1,19},{28,0,0,13,0,0,3,1,19},{28,0,0,13,0,0,4,1,19},{28,0,0,13,0,0,5,1,19},{28,0,0,13,0,0,6,1,19},{28,0,0,13,0,0,7,1,19},{28,0,0,13,0,0,8,1,19},{28,0,0,13,0,0,9,1,19},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,26,0,8,-1,1,24},{28,0,0,26,0,8,-1,1,24}},
+ {{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2}},
+ {{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{103,0,0,2,0,12,-1,1,0},{12,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{12,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2}},
+ {{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,4,-1,1,2},{12,0,0,7,0,4,-1,1,2},{12,0,0,7,0,4,-1,1,2},{12,0,0,7,0,4,-1,1,2},{12,0,0,7,0,4,-1,1,2},{12,0,0,7,0,4,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{0,0,0,21,0,8,-1,1,2},{12,0,0,6,0,9,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2}},
+ {{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33}},
+ {{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,10,-1,0,33}},
+ {{18,0,0,7,0,10,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35}},
+ {{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35}},
+ {{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34}},
+ {{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34}},
+ {{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2}},
+ {{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0}},
+ {{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2}},
+ {{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2}},
+ {{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{11,0,0,12,17,0,-1,1,9},{11,0,0,12,17,0,-1,1,9},{11,0,0,12,17,0,-1,1,9}},
+ {{11,0,0,21,0,8,-1,1,2},{11,0,0,21,0,8,-1,1,4},{11,0,0,21,0,8,-1,1,2},{11,0,0,21,0,8,-1,1,2},{11,0,0,21,0,8,-1,1,2},{11,0,0,21,0,8,-1,1,2},{11,0,0,21,0,8,-1,1,2},{11,0,0,21,0,8,-1,1,2},{11,0,0,21,0,8,-1,1,2},{11,0,0,15,0,4,1,1,2},{11,0,0,15,0,4,2,1,2},{11,0,0,15,0,4,3,1,2},{11,0,0,15,0,4,4,1,2},{11,0,0,15,0,4,5,1,2},{11,0,0,15,0,4,6,1,2},{11,0,0,15,0,4,7,1,2}},
+ {{11,0,0,15,0,4,8,1,2},{11,0,0,15,0,4,9,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2}},
+ {{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{40,0,0,17,10,8,-1,1,4},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2}},
+ {{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2}},
+ {{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,21,0,8,-1,0,2},{40,0,0,21,0,8,-1,0,2},{40,0,0,7,0,5,-1,0,2}},
+ {{29,0,0,29,9,8,-1,1,4},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2}},
+ {{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,1,0,22,10,8,-1,1,20},{29,2,0,18,10,8,-1,1,8},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2}},
+ {{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{0,0,0,21,0,8,-1,1,4},{0,0,0,21,0,8,-1,1,4},{0,0,0,21,0,8,-1,1,4},{32,0,0,14,0,7,-1,1,2},{32,0,0,14,0,7,-1,1,2}},
+ {{32,0,0,14,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2}},
+ {{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,12,17,7,-1,1,9},{42,0,0,12,17,7,-1,1,9},{42,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2}},
+ {{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,12,17,7,-1,1,9},{43,0,0,12,17,7,-1,1,9},{43,0,0,12,17,7,-1,1,9},{0,0,0,21,0,8,-1,1,4},{0,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2}},
+ {{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,12,17,7,-1,1,9},{44,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2}},
+ {{45,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{45,0,0,12,17,7,-1,1,9},{45,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24}},
+ {{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,11,-1,1,24},{23,0,0,7,0,11,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,4,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24}},
+ {{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,12,17,10,-1,1,24},{23,0,0,12,17,10,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,10,0,0,-1,1,24}},
+ {{23,0,0,10,0,0,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,3,-1,1,24},{23,0,0,12,17,3,-1,1,24},{23,0,0,12,17,3,-1,1,24},{23,0,0,12,17,3,-1,1,24},{23,0,0,12,17,3,-1,1,24}},
+ {{23,0,0,12,17,3,-1,1,24},{23,0,0,12,17,4,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,4,-1,1,24},{23,0,0,21,0,8,-1,1,4},{23,0,0,21,0,8,-1,1,4},{23,0,0,21,0,8,-1,1,18},{23,0,0,6,0,0,-1,1,24},{23,0,0,21,0,8,-1,1,4},{23,0,0,21,0,8,-1,1,2},{23,0,0,21,0,8,-1,1,4},{23,0,0,23,4,8,-1,1,22},{23,0,0,7,0,0,-1,1,24},{23,0,0,12,17,4,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{23,0,0,13,0,0,0,1,19},{23,0,0,13,0,0,1,1,19},{23,0,0,13,0,0,2,1,19},{23,0,0,13,0,0,3,1,19},{23,0,0,13,0,0,4,1,19},{23,0,0,13,0,0,5,1,19},{23,0,0,13,0,0,6,1,19},{23,0,0,13,0,0,7,1,19},{23,0,0,13,0,0,8,1,19},{23,0,0,13,0,0,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{27,0,0,21,10,8,-1,1,2},{27,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,11},{0,0,0,21,10,8,-1,1,11},{27,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{27,0,0,17,10,8,-1,1,5},{27,0,0,21,10,8,-1,1,2},{27,0,0,21,10,8,-1,1,11},{27,0,0,21,10,8,-1,1,11},{27,0,0,21,10,8,-1,1,2},{27,0,0,12,17,10,-1,1,9},{27,0,0,12,17,10,-1,1,9},{27,0,0,12,17,10,-1,1,9},{27,0,0,1,18,10,-1,1,12},{103,0,0,2,0,12,-1,1,0}},
+ {{27,0,0,13,0,5,0,1,19},{27,0,0,13,0,5,1,1,19},{27,0,0,13,0,5,2,1,19},{27,0,0,13,0,5,3,1,19},{27,0,0,13,0,5,4,1,19},{27,0,0,13,0,5,5,1,19},{27,0,0,13,0,5,6,1,19},{27,0,0,13,0,5,7,1,19},{27,0,0,13,0,5,8,1,19},{27,0,0,13,0,5,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2}},
+ {{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,6,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2}},
+ {{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,12,17,5,-1,1,9},{27,0,0,7,0,5,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2}},
+ {{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{103,0,0,2,0,12,-1,1,0}},
+ {{48,0,0,12,17,6,-1,1,9},{48,0,0,12,17,6,-1,1,9},{48,0,0,12,17,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,12,17,6,-1,1,9},{48,0,0,12,17,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,12,17,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,12,17,6,-1,1,9},{48,0,0,12,17,6,-1,1,9},{48,0,0,12,17,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{48,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{48,0,0,21,10,8,-1,1,11},{48,0,0,21,10,8,-1,1,11},{48,0,0,13,0,6,0,1,19},{48,0,0,13,0,6,1,1,19},{48,0,0,13,0,6,2,1,19},{48,0,0,13,0,6,3,1,19},{48,0,0,13,0,6,4,1,19},{48,0,0,13,0,6,5,1,19},{48,0,0,13,0,6,6,1,19},{48,0,0,13,0,6,7,1,19},{48,0,0,13,0,6,8,1,19},{48,0,0,13,0,6,9,1,19}},
+ {{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24}},
+ {{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24}},
+ {{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{59,0,0,13,0,6,0,1,19},{59,0,0,13,0,6,1,1,19},{59,0,0,13,0,6,2,1,19},{59,0,0,13,0,6,3,1,19},{59,0,0,13,0,6,4,1,19},{59,0,0,13,0,6,5,1,19},{59,0,0,13,0,6,6,1,19},{59,0,0,13,0,6,7,1,19},{59,0,0,13,0,6,8,1,19},{59,0,0,13,0,6,9,1,19},{59,0,0,15,0,6,1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{59,0,0,26,10,8,-1,1,24},{59,0,0,26,10,8,-1,1,24}},
+ {{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2}},
+ {{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2}},
+ {{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,12,17,7,-1,1,9},{55,0,0,12,17,7,-1,1,9},{55,0,0,10,0,7,-1,1,9},{55,0,0,10,0,7,-1,1,9},{55,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{55,0,0,21,0,8,-1,1,2},{55,0,0,21,0,8,-1,1,2}},
+ {{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24}},
+ {{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{103,0,0,2,0,12,-1,1,0}},
+ {{106,0,0,12,17,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,10,0,6,-1,1,24}},
+ {{106,0,0,10,0,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{106,0,0,12,17,6,-1,1,9}},
+ {{106,0,0,13,0,6,0,1,19},{106,0,0,13,0,6,1,1,19},{106,0,0,13,0,6,2,1,19},{106,0,0,13,0,6,3,1,19},{106,0,0,13,0,6,4,1,19},{106,0,0,13,0,6,5,1,19},{106,0,0,13,0,6,6,1,19},{106,0,0,13,0,6,7,1,19},{106,0,0,13,0,6,8,1,19},{106,0,0,13,0,6,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,6,0,6,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,11,17,8,-1,1,9},{103,0,0,2,0,12,-1,1,0}},
+ {{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,10,0,6,-1,1,9},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2}},
+ {{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2}},
+ {{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,12,17,6,-1,1,9},{62,0,0,10,0,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,10,0,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,10,0,6,-1,1,9},{62,0,0,10,0,6,-1,1,9},{62,0,0,10,0,6,-1,1,9}},
+ {{62,0,0,10,0,6,-1,1,9},{62,0,0,10,0,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,10,0,6,-1,1,9},{62,0,0,10,0,6,-1,1,9},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{62,0,0,13,0,6,0,1,19},{62,0,0,13,0,6,1,1,19},{62,0,0,13,0,6,2,1,19},{62,0,0,13,0,6,3,1,19},{62,0,0,13,0,6,4,1,19},{62,0,0,13,0,6,5,1,19},{62,0,0,13,0,6,6,1,19},{62,0,0,13,0,6,7,1,19},{62,0,0,13,0,6,8,1,19},{62,0,0,13,0,6,9,1,19},{62,0,0,21,0,8,-1,1,4},{62,0,0,21,0,8,-1,1,4},{62,0,0,21,0,8,-1,1,2},{62,0,0,21,0,8,-1,1,4},{62,0,0,21,0,8,-1,1,4},{62,0,0,21,0,8,-1,1,4}},
+ {{62,0,0,21,0,8,-1,1,4},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9}},
+ {{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{113,0,0,12,17,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,10,0,6,-1,1,9},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2}},
+ {{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2}},
+ {{113,0,0,7,0,6,-1,1,2},{113,0,0,10,0,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,10,0,6,-1,1,9},{113,0,0,10,0,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,10,0,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2}},
+ {{113,0,0,13,0,6,0,1,19},{113,0,0,13,0,6,1,1,19},{113,0,0,13,0,6,2,1,19},{113,0,0,13,0,6,3,1,19},{113,0,0,13,0,6,4,1,19},{113,0,0,13,0,6,5,1,19},{113,0,0,13,0,6,6,1,19},{113,0,0,13,0,6,7,1,19},{113,0,0,13,0,6,8,1,19},{113,0,0,13,0,6,9,1,19},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2}},
+ {{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2}},
+ {{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,12,17,6,-1,1,9},{63,0,0,10,0,6,-1,1,9},{63,0,0,12,17,6,-1,1,9},{63,0,0,12,17,6,-1,1,9},{63,0,0,10,0,6,-1,1,9},{63,0,0,10,0,6,-1,1,9},{63,0,0,10,0,6,-1,1,9},{63,0,0,12,17,6,-1,1,9},{63,0,0,10,0,6,-1,1,9},{63,0,0,12,17,6,-1,1,9}},
+ {{63,0,0,12,17,6,-1,1,9},{63,0,0,12,17,6,-1,1,9},{63,0,0,10,0,6,-1,1,9},{63,0,0,10,0,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{63,0,0,21,0,8,-1,1,2},{63,0,0,21,0,8,-1,1,2},{63,0,0,21,0,8,-1,1,2},{63,0,0,21,0,8,-1,1,2}},
+ {{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2}},
+ {{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,10,0,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,12,17,6,-1,1,9},{82,0,0,12,17,6,-1,1,9},{82,0,0,12,17,6,-1,1,9},{82,0,0,12,17,6,-1,1,9}},
+ {{82,0,0,12,17,6,-1,1,9},{82,0,0,12,17,6,-1,1,9},{82,0,0,12,17,6,-1,1,9},{82,0,0,12,17,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,12,17,6,-1,1,9},{82,0,0,12,17,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{82,0,0,21,0,8,-1,1,4},{82,0,0,21,0,8,-1,1,4},{82,0,0,21,0,8,-1,1,4},{82,0,0,21,0,8,-1,1,4},{82,0,0,21,0,8,-1,1,4}},
+ {{82,0,0,13,0,6,0,1,19},{82,0,0,13,0,6,1,1,19},{82,0,0,13,0,6,2,1,19},{82,0,0,13,0,6,3,1,19},{82,0,0,13,0,6,4,1,19},{82,0,0,13,0,6,5,1,19},{82,0,0,13,0,6,6,1,19},{82,0,0,13,0,6,7,1,19},{82,0,0,13,0,6,8,1,19},{82,0,0,13,0,6,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2}},
+ {{109,0,0,13,0,6,0,1,19},{109,0,0,13,0,6,1,1,19},{109,0,0,13,0,6,2,1,19},{109,0,0,13,0,6,3,1,19},{109,0,0,13,0,6,4,1,19},{109,0,0,13,0,6,5,1,19},{109,0,0,13,0,6,6,1,19},{109,0,0,13,0,6,7,1,19},{109,0,0,13,0,6,8,1,19},{109,0,0,13,0,6,9,1,19},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2}},
+ {{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2}},
+ {{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,6,0,6,-1,1,2},{109,0,0,6,0,6,-1,1,2},{109,0,0,6,0,6,-1,1,2},{109,0,0,6,0,6,-1,1,2},{109,0,0,6,0,6,-1,1,2},{109,0,0,6,0,6,-1,1,2},{109,0,0,21,0,8,-1,1,4},{109,0,0,21,0,8,-1,1,4}},
+ {{113,0,0,21,0,8,-1,1,2},{113,0,0,21,0,8,-1,1,2},{113,0,0,21,0,8,-1,1,2},{113,0,0,21,0,8,-1,1,2},{113,0,0,21,0,8,-1,1,2},{113,0,0,21,0,8,-1,1,2},{113,0,0,21,0,8,-1,1,2},{113,0,0,21,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{0,0,0,21,0,8,-1,1,2},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9}},
+ {{1,0,0,12,17,4,-1,1,9},{0,0,0,10,0,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{0,0,0,7,0,4,-1,1,2},{0,0,0,7,0,4,-1,1,2},{0,0,0,7,0,4,-1,1,2},{0,0,0,7,0,4,-1,1,2},{1,0,0,12,17,4,-1,1,9},{0,0,0,7,0,4,-1,1,2},{0,0,0,7,0,4,-1,1,2}},
+ {{0,0,0,7,0,4,-1,1,2},{0,0,0,7,0,4,-1,1,2},{0,0,0,10,0,4,-1,1,9},{0,0,0,10,0,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{0,0,0,7,0,4,-1,1,2},{0,0,0,7,0,4,-1,1,2},{103,0,0,2,0,12,-1,1,0},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{14,0,0,5,0,3,-1,1,2},{14,0,0,5,0,3,-1,1,2},{14,0,0,5,0,3,-1,1,2},{14,0,0,5,0,3,-1,1,2},{14,0,0,5,0,3,-1,1,2},{8,0,0,5,0,3,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,3,-1,1,2}},
+ {{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,3,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2}},
+ {{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,3,-1,1,2},{25,0,0,6,0,9,-1,1,2}},
+ {{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2}},
+ {{14,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2}},
+ {{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{8,0,0,6,0,9,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2}},
+ {{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2}},
+ {{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2}},
+ {{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2}},
+ {{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,3,-1,1,9}},
+ {{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9}},
+ {{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9}},
+ {{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9}},
+ {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,3,-1,1,2}},
+ {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,9,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,9,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2}},
+ {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2}},
+ {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,9,0,0,-1,1,2}},
+ {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,8,0,0,-1,1,2}},
+ {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,24,10,9,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,24,10,9,-1,1,2}},
+ {{14,0,0,24,10,9,-1,1,2},{14,0,0,24,10,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,24,10,9,-1,1,2},{14,0,0,24,10,9,-1,1,2},{14,0,0,24,10,9,-1,1,2}},
+ {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,24,10,9,-1,1,2},{14,0,0,24,10,9,-1,1,2},{14,0,0,24,10,9,-1,1,2}},
+ {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,24,10,9,-1,1,2},{14,0,0,24,10,9,-1,1,2},{14,0,0,24,10,9,-1,1,2}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,24,10,9,-1,1,5},{14,0,0,24,10,9,-1,1,2},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,12},{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,4},{0,0,0,1,18,10,-1,1,28},{1,0,0,1,18,1,-1,1,9},{1,0,0,1,18,1,-1,1,9},{0,0,0,1,0,10,-1,1,9},{0,0,0,1,1,10,-1,1,9}},
+ {{0,0,0,17,10,1,-1,1,4},{0,0,0,17,10,9,-1,1,12},{0,0,0,17,10,8,-1,1,4},{0,0,0,17,10,8,-1,1,4},{0,0,0,17,10,8,-1,1,3},{0,0,0,17,10,8,-1,1,1},{0,0,0,21,10,8,-1,0,1},{0,0,0,21,10,9,-1,1,2},{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,1,-1,1,23},{0,0,0,22,10,8,-1,1,20},{0,0,0,20,10,8,-1,1,23},{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,8,-1,1,23},{0,0,0,22,10,8,-1,1,20},{0,0,0,20,10,8,-1,1,23}},
+ {{0,0,0,21,10,8,-1,0,1},{0,0,0,21,10,8,-1,0,1},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,9,-1,1,15},{0,0,0,21,10,9,-1,1,15},{0,0,0,21,10,9,-1,1,15},{0,0,0,21,10,1,-1,1,4},{0,0,0,27,9,8,-1,1,6},{0,0,0,28,7,8,-1,1,6},{0,0,0,1,11,10,-1,1,9},{0,0,0,1,14,10,-1,1,9},{0,0,0,1,16,10,-1,1,9},{0,0,0,1,12,10,-1,1,9},{0,0,0,1,15,10,-1,1,9},{0,0,0,29,6,9,-1,1,12}},
+ {{0,0,0,21,4,8,-1,0,21},{0,0,0,21,4,8,-1,0,21},{0,0,0,21,4,8,-1,1,21},{0,0,0,21,4,9,-1,1,21},{0,0,0,21,4,9,-1,1,21},{0,0,0,21,10,8,-1,1,21},{0,0,0,21,10,9,-1,1,21},{0,0,0,21,10,9,-1,1,21},{0,0,0,21,10,8,-1,1,2},{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,8,-1,1,23},{0,0,0,21,10,8,-1,0,1},{0,0,0,21,10,9,-1,0,18},{0,0,0,21,10,8,-1,1,18},{0,0,0,21,10,9,-1,1,2},{0,0,0,16,10,3,-1,1,2}},
+ {{0,0,0,16,10,3,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,0,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,25,6,8,-1,1,16},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,0,0,21,10,9,-1,0,18},{0,0,0,21,10,9,-1,0,18},{0,0,0,21,10,9,-1,0,18},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2}},
+ {{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,0,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,16,10,2,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,9,-1,1,2},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,29,9,9,-1,1,4}},
+ {{0,0,0,1,18,10,-1,1,30},{0,0,0,1,18,10,-1,1,2},{0,0,0,1,18,10,-1,1,2},{0,0,0,1,18,10,-1,1,2},{0,0,0,1,18,10,-1,1,2},{103,0,0,2,0,12,-1,0,0},{0,0,0,1,20,10,-1,1,9},{0,0,0,1,21,10,-1,1,9},{0,0,0,1,19,10,-1,1,9},{0,0,0,1,22,10,-1,1,9},{0,0,0,1,18,11,-1,1,9},{0,0,0,1,18,11,-1,1,9},{0,0,0,1,18,11,-1,1,9},{0,0,0,1,18,11,-1,1,9},{0,0,0,1,18,11,-1,1,9},{0,0,0,1,18,11,-1,1,9}},
+ {{0,0,0,15,2,9,0,1,2},{25,0,0,6,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,15,2,9,4,1,1},{0,0,0,15,2,9,5,1,2},{0,0,0,15,2,9,6,1,2},{0,0,0,15,2,9,7,1,2},{0,0,0,15,2,9,8,1,2},{0,0,0,15,2,9,9,1,2},{0,0,0,25,3,9,-1,1,2},{0,0,0,25,3,9,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,1,0,22,10,9,-1,1,20},{0,2,0,18,10,9,-1,1,8},{25,0,0,6,0,9,-1,1,1}},
+ {{0,0,0,15,2,9,0,1,2},{0,0,0,15,2,9,1,1,1},{0,0,0,15,2,9,2,1,1},{0,0,0,15,2,9,3,1,1},{0,0,0,15,2,9,4,1,1},{0,0,0,15,2,9,5,1,2},{0,0,0,15,2,9,6,1,2},{0,0,0,15,2,9,7,1,2},{0,0,0,15,2,9,8,1,2},{0,0,0,15,2,9,9,1,2},{0,0,0,25,3,9,-1,1,2},{0,0,0,25,3,9,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,1,0,22,10,9,-1,1,20},{0,2,0,18,10,9,-1,1,8},{103,0,0,2,0,12,-1,1,0}},
+ {{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,21},{0,0,0,23,4,9,-1,1,22},{0,0,1,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22}},
+ {{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,21},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,21},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,21},{103,0,0,2,4,12,-1,1,22}},
+ {{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22}},
+ {{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,11,17,8,-1,0,9},{1,0,0,11,17,8,-1,0,9},{1,0,0,11,17,8,-1,0,9}},
+ {{1,0,0,11,17,8,-1,0,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,11,17,8,-1,0,9},{1,0,0,11,17,8,-1,0,9},{1,0,0,11,17,8,-1,0,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9}},
+ {{1,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,26,10,9,-1,0,2},{0,0,0,26,10,9,-1,0,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,26,10,9,-1,0,21},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,9,-1,0,1},{0,0,0,26,10,9,-1,0,2},{0,0,0,9,0,9,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,9,-1,0,21},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,0,2}},
+ {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,26,10,9,-1,0,22},{0,0,0,26,10,8,-1,0,2},{0,0,0,25,10,3,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,9,-1,0,2},{0,0,0,26,10,9,-1,0,1},{0,0,0,26,10,9,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,26,10,8,-1,0,2},{14,0,0,9,0,9,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,26,10,8,-1,0,2},{25,0,0,9,0,9,-1,1,2},{25,0,0,9,0,9,-1,1,1},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,26,4,3,-1,0,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{25,0,0,9,0,4,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,7,0,9,-1,0,2},{0,0,0,7,0,9,-1,0,2},{0,0,0,7,0,9,-1,0,2},{0,0,0,7,0,9,-1,0,2},{0,0,0,5,0,9,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,9,-1,0,2},{0,0,0,5,0,9,-1,0,2},{0,0,0,5,0,9,-1,0,2},{0,0,0,9,0,9,-1,0,2},{0,0,0,9,0,9,-1,0,2}},
+ {{0,0,0,25,10,9,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,9,0,9,-1,0,2},{0,0,0,5,0,9,-1,0,2},{0,0,0,5,0,9,-1,0,2},{0,0,0,5,0,9,-1,0,2},{0,0,0,5,0,9,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{25,0,0,5,0,4,-1,1,2},{0,0,0,26,0,8,-1,0,2}},
+ {{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,2}},
+ {{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,2},{25,0,0,14,0,9,-1,0,2},{25,0,0,14,0,9,-1,0,2},{25,0,0,14,0,9,-1,0,2}},
+ {{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,2},{25,0,0,14,0,9,-1,0,2},{25,0,0,14,0,9,-1,0,2},{25,0,0,14,0,9,-1,0,2},{25,0,0,14,0,9,-1,0,2},{25,0,0,14,0,9,-1,0,2}},
+ {{25,0,0,14,0,4,-1,0,2},{25,0,0,14,0,4,-1,0,2},{25,0,0,14,0,4,-1,0,2},{25,0,0,9,0,4,-1,0,2},{25,0,0,5,0,4,-1,0,2},{25,0,0,14,0,4,-1,0,2},{25,0,0,14,0,4,-1,0,2},{25,0,0,14,0,4,-1,0,2},{25,0,0,14,0,4,-1,0,2},{0,0,0,15,10,9,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}},
+ {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}},
+ {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}},
+ {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,3,8,-1,1,22},{0,0,0,25,4,8,-1,1,22},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,0,1},{0,0,0,25,10,8,-1,1,1}},
+ {{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,9,-1,1,1},{0,0,0,25,10,9,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,9,-1,1,2}},
+ {{0,0,0,25,10,9,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,0,1},{0,0,0,25,10,8,-1,0,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,15}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,1,1,22,10,11,-1,3,20},{0,2,1,18,10,11,-1,3,8},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}},
+ {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2}},
+ {{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2}},
+ {{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,15,10,9,1,0,1},{0,0,0,15,10,9,2,0,1},{0,0,0,15,10,9,3,0,1},{0,0,0,15,10,9,4,0,1},{0,0,0,15,10,9,5,0,1},{0,0,0,15,10,9,6,0,1},{0,0,0,15,10,9,7,0,1},{0,0,0,15,10,9,8,0,1},{0,0,0,15,10,9,9,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1}},
+ {{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,1,0,1},{0,0,0,15,10,9,2,0,1},{0,0,0,15,10,9,3,0,1},{0,0,0,15,10,9,4,0,1},{0,0,0,15,10,9,5,0,1},{0,0,0,15,10,9,6,0,1},{0,0,0,15,10,9,7,0,1},{0,0,0,15,10,9,8,0,1},{0,0,0,15,10,9,9,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1}},
+ {{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,2,9,1,0,1},{0,0,0,15,2,9,2,0,1},{0,0,0,15,2,9,3,0,1},{0,0,0,15,2,9,4,0,1},{0,0,0,15,2,9,5,0,1},{0,0,0,15,2,9,6,0,1},{0,0,0,15,2,9,7,0,1},{0,0,0,15,2,9,8,0,1}},
+ {{0,0,0,15,2,9,9,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1}},
+ {{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1}},
+ {{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,15,10,9,0,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1}},
+ {{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,1,0,1},{0,0,0,15,10,8,2,0,1},{0,0,0,15,10,8,3,0,1},{0,0,0,15,10,8,4,0,1},{0,0,0,15,10,8,5,0,1},{0,0,0,15,10,8,6,0,1},{0,0,0,15,10,8,7,0,1},{0,0,0,15,10,8,8,0,1},{0,0,0,15,10,8,9,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,0,0,2}},
+ {{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1}},
+ {{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}},
+ {{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}},
+ {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}},
+ {{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,25,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,1},{0,0,0,25,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1}},
+ {{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,1}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1}},
+ {{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,23},{0,0,0,26,10,8,-1,0,23},{0,0,0,26,10,8,-1,0,23},{0,0,0,26,10,8,-1,0,23},{0,0,0,26,10,8,-1,0,23}},
+ {{0,0,0,26,10,8,-1,0,23},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,11},{0,0,0,26,10,8,-1,0,11},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8}},
+ {{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,0,0,15,10,8,1,0,1},{0,0,0,15,10,8,2,0,1},{0,0,0,15,10,8,3,0,1},{0,0,0,15,10,8,4,0,1},{0,0,0,15,10,8,5,0,1},{0,0,0,15,10,8,6,0,1},{0,0,0,15,10,8,7,0,1},{0,0,0,15,10,8,8,0,1},{0,0,0,15,10,8,9,0,1},{0,0,0,15,10,8,-1,0,1}},
+ {{0,0,0,15,10,8,1,0,1},{0,0,0,15,10,8,2,0,1},{0,0,0,15,10,8,3,0,1},{0,0,0,15,10,8,4,0,1},{0,0,0,15,10,8,5,0,1},{0,0,0,15,10,8,6,0,1},{0,0,0,15,10,8,7,0,1},{0,0,0,15,10,8,8,0,1},{0,0,0,15,10,8,9,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,1,0,1},{0,0,0,15,10,8,2,0,1},{0,0,0,15,10,8,3,0,1},{0,0,0,15,10,8,4,0,1},{0,0,0,15,10,8,5,0,1},{0,0,0,15,10,8,6,0,1}},
+ {{0,0,0,15,10,8,7,0,1},{0,0,0,15,10,8,8,0,1},{0,0,0,15,10,8,9,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8}},
+ {{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20}},
+ {{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}},
+ {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}},
+ {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}},
+ {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}},
+ {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2}},
+ {{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0}},
+ {{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2}},
+ {{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0}},
+ {{25,0,0,9,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,9,0,3,-1,1,2},{25,0,0,9,0,3,-1,1,2},{25,0,0,9,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2}},
+ {{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2}},
+ {{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2}},
+ {{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,26,10,8,-1,1,2},{7,0,0,26,10,8,-1,1,2},{7,0,0,26,10,8,-1,1,2},{7,0,0,26,10,8,-1,1,2},{7,0,0,26,10,8,-1,1,2},{7,0,0,26,10,8,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,12,17,7,-1,1,9}},
+ {{7,0,0,12,17,7,-1,1,9},{7,0,0,12,17,7,-1,1,9},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{7,0,0,21,10,8,-1,1,11},{7,0,0,21,10,8,-1,1,4},{7,0,0,21,10,8,-1,1,4},{7,0,0,21,10,8,-1,1,4},{7,0,0,15,10,8,-1,1,2},{7,0,0,21,10,8,-1,1,11},{7,0,0,21,10,8,-1,1,4}},
+ {{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2}},
+ {{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{103,0,0,2,0,12,-1,1,0},{12,0,0,5,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{12,0,0,5,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2}},
+ {{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{60,0,0,6,0,9,-1,1,2}},
+ {{60,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{60,0,0,12,17,5,-1,1,9}},
+ {{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0}},
+ {{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9}},
+ {{0,0,0,21,10,8,-1,1,23},{0,0,0,21,10,8,-1,1,23},{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,8,-1,1,23},{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,8,-1,1,23},{0,0,0,21,10,8,-1,1,23},{0,0,0,21,10,8,-1,1,23},{0,0,0,21,10,8,-1,1,23},{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,8,-1,1,23},{0,0,0,21,10,8,-1,1,23},{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,8,-1,1,23},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4}},
+ {{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,2},{0,0,0,17,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,20},{0,0,0,21,10,8,-1,1,4},{0,0,0,17,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,8,-1,1,23},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2}},
+ {{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,8,-1,1,23},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,11},{0,0,0,6,10,8,-1,1,2}},
+ {{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,17,10,8,-1,1,3},{0,0,0,17,10,8,-1,1,3},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,2}},
+ {{0,0,0,17,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,22,10,8,-1,1,20},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14}},
+ {{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,9,-1,0,14}},
+ {{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,9,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14}},
+ {{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,1,29,9,9,-1,0,4},{0,0,1,21,10,8,-1,2,8},{0,0,1,21,10,8,-1,2,8},{0,0,1,21,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{17,0,1,6,0,0,-1,0,18},{0,0,1,7,0,0,-1,0,14},{17,0,1,14,0,0,-1,0,14},{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8},{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8},{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8},{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8}},
+ {{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8},{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8},{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8},{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8},{0,0,1,17,10,8,-1,3,18},{0,0,1,22,10,8,-1,3,20},{0,0,1,18,10,8,-1,3,8},{0,0,1,18,10,8,-1,3,8}},
+ {{0,0,1,26,10,8,-1,0,14},{17,0,1,14,0,3,-1,0,14},{17,0,1,14,0,3,-1,0,14},{17,0,1,14,0,3,-1,0,14},{17,0,1,14,0,3,-1,0,14},{17,0,1,14,0,3,-1,0,14},{17,0,1,14,0,3,-1,0,14},{17,0,1,14,0,3,-1,0,14},{17,0,1,14,0,3,-1,0,14},{17,0,1,14,0,3,-1,0,14},{1,0,1,12,17,3,-1,0,9},{1,0,1,12,17,3,-1,0,9},{1,0,1,12,17,3,-1,0,9},{1,0,1,12,17,3,-1,0,9},{18,0,1,10,0,4,-1,0,9},{18,0,1,10,0,4,-1,0,9}},
+ {{0,0,1,17,10,8,-1,3,14},{0,0,1,6,0,3,-1,0,14},{0,0,1,6,0,3,-1,0,14},{0,0,1,6,0,3,-1,0,14},{0,0,1,6,0,3,-1,0,14},{0,0,1,6,0,3,-1,0,9},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,10,8,-1,0,14},{17,0,1,14,0,9,-1,0,14},{17,0,1,14,0,9,-1,0,14},{17,0,1,14,0,9,-1,0,14},{17,0,1,6,0,3,-1,0,18},{0,0,1,7,0,3,-1,0,18},{0,0,1,21,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}},
+ {{103,0,0,2,0,12,-1,0,0},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14}},
+ {{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14}},
+ {{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14}},
+ {{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14}},
+ {{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,2,37},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{1,0,1,12,17,0,-1,0,9},{1,0,1,12,17,0,-1,0,9},{0,0,1,24,10,9,-1,2,18},{0,0,1,24,10,9,-1,2,18},{20,0,1,6,0,0,-1,0,18},{20,0,1,6,0,0,-1,0,18},{20,0,1,7,0,9,-1,0,14}},
+ {{0,0,1,17,10,1,-1,3,18},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14}},
+ {{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14}},
+ {{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14}},
+ {{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14}},
+ {{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{0,0,1,21,10,1,-1,0,18},{0,0,1,6,0,0,-1,3,37},{22,0,1,6,0,0,-1,0,18},{22,0,1,6,0,0,-1,0,18},{22,0,1,7,0,9,-1,0,14}},
+ {{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14}},
+ {{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14}},
+ {{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,2,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{103,0,0,2,0,12,-1,0,0},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14}},
+ {{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14}},
+ {{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,10,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14}},
+ {{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,1,26,0,8,-1,0,14},{0,0,1,26,0,8,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14}},
+ {{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14}},
+ {{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37}},
+ {{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14}},
+ {{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,10,9,-1,0,14},{18,0,1,26,10,9,-1,0,14},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14}},
+ {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14}},
+ {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,0,15,0,8,-1,0,1},{0,0,0,15,0,8,-1,0,1},{0,0,0,15,0,8,-1,0,1},{0,0,0,15,0,8,-1,0,1},{0,0,0,15,0,8,-1,0,1},{0,0,0,15,0,8,-1,0,1},{0,0,0,15,0,8,-1,0,1},{0,0,0,15,0,8,-1,0,1}},
+ {{0,0,1,26,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14}},
+ {{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,10,9,-1,0,14},{18,0,1,26,10,9,-1,0,14},{18,0,1,26,10,9,-1,0,14},{0,0,1,26,0,8,-1,0,14}},
+ {{0,0,1,26,0,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14}},
+ {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,10,9,-1,0,14}},
+ {{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14}},
+ {{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{103,0,0,2,0,12,-1,0,0}},
+ {{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14}},
+ {{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14}},
+ {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,0,9,-1,2,14},{0,0,1,26,0,9,-1,2,14},{0,0,1,26,0,9,-1,2,14},{0,0,1,26,0,9,-1,2,14},{0,0,1,26,0,9,-1,2,14}},
+ {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,10,9,-1,0,14}},
+ {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,10,9,-1,0,14}},
+ {{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14}},
+ {{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14}},
+ {{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14}},
+ {{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14}},
+ {{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,6,0,5,-1,0,18},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14}},
+ {{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14}},
+ {{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2}},
+ {{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,6,0,6,-1,1,2},{131,0,0,6,0,6,-1,1,2},{131,0,0,6,0,6,-1,1,2},{131,0,0,6,0,6,-1,1,2},{131,0,0,6,0,6,-1,1,2},{131,0,0,6,0,6,-1,1,2},{131,0,0,21,0,8,-1,1,4},{131,0,0,21,0,8,-1,1,4}},
+ {{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2}},
+ {{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,6,0,6,-1,1,2},{99,0,0,21,10,8,-1,1,4},{99,0,0,21,10,8,-1,1,11},{99,0,0,21,10,8,-1,1,4}},
+ {{99,0,0,13,0,6,0,1,19},{99,0,0,13,0,6,1,1,19},{99,0,0,13,0,6,2,1,19},{99,0,0,13,0,6,3,1,19},{99,0,0,13,0,6,4,1,19},{99,0,0,13,0,6,5,1,19},{99,0,0,13,0,6,6,1,19},{99,0,0,13,0,6,7,1,19},{99,0,0,13,0,6,8,1,19},{99,0,0,13,0,6,9,1,19},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,7,0,4,-1,1,2},{8,0,0,12,17,2,-1,1,9}},
+ {{8,0,0,11,17,8,-1,1,9},{8,0,0,11,17,8,-1,1,9},{8,0,0,11,17,8,-1,1,9},{8,0,0,21,10,8,-1,1,2},{8,0,0,12,17,0,-1,1,9},{8,0,0,12,17,0,-1,1,9},{8,0,0,12,17,0,-1,1,9},{8,0,0,12,17,0,-1,1,9},{8,0,0,12,17,0,-1,1,9},{8,0,0,12,17,0,-1,1,9},{8,0,0,12,17,0,-1,1,9},{8,0,0,12,17,0,-1,1,9},{8,0,0,12,17,2,-1,1,9},{8,0,0,12,17,2,-1,1,9},{8,0,0,21,10,8,-1,1,2},{8,0,0,6,10,0,-1,1,2}},
+ {{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,6,0,9,-1,1,2},{8,0,0,6,0,9,-1,1,2},{8,0,0,12,17,2,-1,1,9},{8,0,0,12,17,0,-1,1,9}},
+ {{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2}},
+ {{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2}},
+ {{130,0,0,12,17,6,-1,1,9},{130,0,0,12,17,6,-1,1,9},{130,0,0,21,0,8,-1,1,2},{130,0,0,21,0,8,-1,1,4},{130,0,0,21,0,8,-1,1,4},{130,0,0,21,0,8,-1,1,4},{130,0,0,21,0,8,-1,1,4},{130,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,6,10,0,-1,1,2}},
+ {{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2}},
+ {{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2}},
+ {{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2}},
+ {{25,0,0,6,0,9,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2}},
+ {{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,24,0,8,-1,1,2},{0,0,0,24,0,8,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,7,0,2,-1,1,2}},
+ {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2}},
+ {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{25,0,0,7,0,4,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,7,0,4,-1,1,2},{25,0,0,7,0,4,-1,1,2},{25,0,0,7,0,4,-1,1,2},{25,0,0,7,0,4,-1,1,2},{25,0,0,7,0,4,-1,1,2}},
+ {{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,12,17,6,-1,1,9},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,12,17,6,-1,1,9},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,12,17,6,-1,1,9},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2}},
+ {{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2}},
+ {{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,10,0,6,-1,1,9},{58,0,0,10,0,6,-1,1,9},{58,0,0,12,17,6,-1,1,9},{58,0,0,12,17,6,-1,1,9},{58,0,0,10,0,6,-1,1,9},{58,0,0,26,10,8,-1,1,2},{58,0,0,26,10,8,-1,1,2},{58,0,0,26,10,8,-1,1,2},{58,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,23,4,8,-1,1,21},{0,0,0,26,4,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2}},
+ {{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,21,10,8,-1,1,5},{90,0,0,21,10,8,-1,1,5},{90,0,0,21,10,8,-1,1,11},{90,0,0,21,10,8,-1,1,11},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2}},
+ {{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2}},
+ {{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9}},
+ {{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,12,17,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{111,0,0,21,0,8,-1,1,4},{111,0,0,21,0,8,-1,1,4}},
+ {{111,0,0,13,0,6,0,1,19},{111,0,0,13,0,6,1,1,19},{111,0,0,13,0,6,2,1,19},{111,0,0,13,0,6,3,1,19},{111,0,0,13,0,6,4,1,19},{111,0,0,13,0,6,5,1,19},{111,0,0,13,0,6,6,1,19},{111,0,0,13,0,6,7,1,19},{111,0,0,13,0,6,8,1,19},{111,0,0,13,0,6,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9}},
+ {{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,7,0,4,-1,1,2},{10,0,0,7,0,4,-1,1,2},{10,0,0,7,0,4,-1,1,2},{10,0,0,7,0,4,-1,1,2},{10,0,0,7,0,4,-1,1,2},{10,0,0,7,0,4,-1,1,2},{10,0,0,21,0,8,-1,1,2},{10,0,0,21,0,8,-1,1,2},{10,0,0,21,0,8,-1,1,2},{10,0,0,7,0,4,-1,1,2},{10,0,0,21,0,8,-1,1,5},{10,0,0,7,0,4,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{79,0,0,13,0,6,0,1,19},{79,0,0,13,0,6,1,1,19},{79,0,0,13,0,6,2,1,19},{79,0,0,13,0,6,3,1,19},{79,0,0,13,0,6,4,1,19},{79,0,0,13,0,6,5,1,19},{79,0,0,13,0,6,6,1,19},{79,0,0,13,0,6,7,1,19},{79,0,0,13,0,6,8,1,19},{79,0,0,13,0,6,9,1,19},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2}},
+ {{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2}},
+ {{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,12,17,6,-1,1,9},{79,0,0,12,17,6,-1,1,9},{79,0,0,12,17,6,-1,1,9},{79,0,0,12,17,6,-1,1,9},{79,0,0,12,17,6,-1,1,9},{79,0,0,12,17,6,-1,1,9},{79,0,0,12,17,6,-1,1,9},{79,0,0,12,17,6,-1,1,9},{0,0,0,21,0,8,-1,1,4},{79,0,0,21,0,8,-1,1,4}},
+ {{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2}},
+ {{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9}},
+ {{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9},{110,0,0,10,0,7,-1,1,9},{110,0,0,10,0,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{110,0,0,21,0,8,-1,1,2}},
+ {{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{78,0,0,12,17,6,-1,1,9},{78,0,0,12,17,6,-1,1,9},{78,0,0,12,17,6,-1,1,9},{78,0,0,10,0,6,-1,1,9},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2}},
+ {{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2}},
+ {{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,12,17,6,-1,1,9},{78,0,0,10,0,6,-1,1,9},{78,0,0,10,0,6,-1,1,9},{78,0,0,12,17,6,-1,1,9},{78,0,0,12,17,6,-1,1,9},{78,0,0,12,17,6,-1,1,9},{78,0,0,12,17,6,-1,1,9},{78,0,0,10,0,6,-1,1,9},{78,0,0,10,0,6,-1,1,9},{78,0,0,12,17,6,-1,1,9},{78,0,0,10,0,6,-1,1,9},{78,0,0,10,0,6,-1,1,9},{78,0,0,10,0,6,-1,1,9}},
+ {{78,0,0,10,0,6,-1,1,9},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,4},{78,0,0,21,0,8,-1,1,4},{78,0,0,21,0,8,-1,1,4},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,6,0,7,-1,1,2}},
+ {{78,0,0,13,0,6,0,1,19},{78,0,0,13,0,6,1,1,19},{78,0,0,13,0,6,2,1,19},{78,0,0,13,0,6,3,1,19},{78,0,0,13,0,6,4,1,19},{78,0,0,13,0,6,5,1,19},{78,0,0,13,0,6,6,1,19},{78,0,0,13,0,6,7,1,19},{78,0,0,13,0,6,8,1,19},{78,0,0,13,0,6,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2}},
+ {{28,0,0,7,0,4,-1,1,24},{28,0,0,7,0,4,-1,1,24},{28,0,0,7,0,4,-1,1,24},{28,0,0,7,0,4,-1,1,24},{28,0,0,7,0,4,-1,1,24},{28,0,0,12,17,4,-1,1,24},{28,0,0,6,0,4,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24}},
+ {{28,0,0,13,0,0,0,1,19},{28,0,0,13,0,0,1,1,19},{28,0,0,13,0,0,2,1,19},{28,0,0,13,0,0,3,1,19},{28,0,0,13,0,0,4,1,19},{28,0,0,13,0,0,5,1,19},{28,0,0,13,0,0,6,1,19},{28,0,0,13,0,0,7,1,19},{28,0,0,13,0,0,8,1,19},{28,0,0,13,0,0,9,1,19},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0}},
+ {{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2}},
+ {{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,12,17,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{66,0,0,10,0,6,-1,1,9}},
+ {{66,0,0,10,0,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{66,0,0,10,0,6,-1,1,9},{66,0,0,10,0,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,12,17,6,-1,1,9},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,12,17,6,-1,1,9},{66,0,0,10,0,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{66,0,0,13,0,6,0,1,19},{66,0,0,13,0,6,1,1,19},{66,0,0,13,0,6,2,1,19},{66,0,0,13,0,6,3,1,19},{66,0,0,13,0,6,4,1,19},{66,0,0,13,0,6,5,1,19},{66,0,0,13,0,6,6,1,19},{66,0,0,13,0,6,7,1,19},{66,0,0,13,0,6,8,1,19},{66,0,0,13,0,6,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{66,0,0,21,0,8,-1,1,2},{66,0,0,21,0,8,-1,1,4},{66,0,0,21,0,8,-1,1,4},{66,0,0,21,0,8,-1,1,4}},
+ {{28,0,0,6,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,26,0,8,-1,1,24},{28,0,0,26,0,8,-1,1,24},{28,0,0,26,0,8,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24}},
+ {{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24}},
+ {{127,0,0,12,17,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,12,17,6,-1,1,24},{127,0,0,12,17,6,-1,1,24},{127,0,0,12,17,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,12,17,6,-1,1,24},{127,0,0,12,17,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,12,17,6,-1,1,24},{127,0,0,12,17,6,-1,1,24}},
+ {{127,0,0,7,0,6,-1,1,24},{127,0,0,12,17,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,6,0,6,-1,1,24},{127,0,0,21,0,8,-1,1,24},{127,0,0,21,0,8,-1,1,24}},
+ {{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,10,0,6,-1,1,9},{115,0,0,12,17,6,-1,1,9},{115,0,0,12,17,6,-1,1,9},{115,0,0,10,0,6,-1,1,9},{115,0,0,10,0,6,-1,1,9}},
+ {{115,0,0,21,0,8,-1,1,4},{115,0,0,21,0,8,-1,1,4},{115,0,0,7,0,6,-1,1,2},{115,0,0,6,0,6,-1,1,2},{115,0,0,6,0,6,-1,1,2},{115,0,0,10,0,6,-1,1,9},{115,0,0,12,17,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2}},
+ {{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{0,0,0,24,0,8,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2}},
+ {{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2}},
+ {{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2}},
+ {{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,10,0,6,-1,1,9},{115,0,0,10,0,6,-1,1,9},{115,0,0,12,17,6,-1,1,9},{115,0,0,10,0,6,-1,1,9},{115,0,0,10,0,6,-1,1,9},{115,0,0,12,17,6,-1,1,9},{115,0,0,10,0,6,-1,1,9},{115,0,0,10,0,6,-1,1,9},{115,0,0,21,0,8,-1,1,4},{115,0,0,10,0,6,-1,1,9},{115,0,0,12,17,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{115,0,0,13,0,6,0,1,19},{115,0,0,13,0,6,1,1,19},{115,0,0,13,0,6,2,1,19},{115,0,0,13,0,6,3,1,19},{115,0,0,13,0,6,4,1,19},{115,0,0,13,0,6,5,1,19},{115,0,0,13,0,6,6,1,19},{115,0,0,13,0,6,7,1,19},{115,0,0,13,0,6,8,1,19},{115,0,0,13,0,6,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{18,0,1,7,0,0,-1,0,31},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32}},
+ {{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,31},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32}},
+ {{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32}},
+ {{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,31},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32}},
+ {{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,31},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32}},
+ {{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34}},
+ {{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25}},
+ {{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0}},
+ {{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14}},
+ {{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14}},
+ {{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,0,-1,0,14}},
+ {{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14}},
+ {{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14}},
+ {{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14}},
+ {{25,0,0,5,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{3,0,0,5,0,9,-1,1,2},{3,0,0,5,0,9,-1,1,2},{3,0,0,5,0,9,-1,1,2},{3,0,0,5,0,9,-1,1,2},{3,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{19,0,0,7,1,9,-1,1,38},{19,0,0,12,17,3,-1,1,9},{19,0,0,7,1,9,-1,1,38}},
+ {{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,25,3,9,-1,1,2},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38}},
+ {{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{103,0,0,2,1,12,-1,1,0},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{103,0,0,2,1,12,-1,1,0},{19,0,0,7,1,9,-1,1,38},{103,0,0,2,1,12,-1,1,0}},
+ {{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{103,0,0,2,1,12,-1,1,0},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{103,0,0,2,1,12,-1,1,0},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38}},
+ {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}},
+ {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2}},
+ {{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}},
+ {{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}},
+ {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{0,0,0,18,10,8,-1,1,8},{0,0,0,22,10,8,-1,1,20}},
+ {{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}},
+ {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}},
+ {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,23,13,9,-1,1,21},{2,0,0,26,10,8,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}},
+ {{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9}},
+ {{0,0,1,21,10,9,-1,0,16},{0,0,1,21,10,9,-1,0,8},{0,0,1,21,10,9,-1,0,8},{0,0,1,21,10,9,-1,0,16},{0,0,1,21,10,9,-1,0,16},{0,0,1,21,10,9,-1,0,11},{0,0,1,21,10,9,-1,0,11},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,21,10,9,-1,0,15},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{8,0,0,12,17,3,-1,1,9},{8,0,0,12,17,3,-1,1,9}},
+ {{0,0,1,21,10,9,-1,0,14},{0,0,1,17,10,9,-1,0,14},{0,0,1,17,10,9,-1,0,14},{0,0,1,16,10,9,-1,0,14},{0,0,1,16,10,9,-1,0,14},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,22,10,9,-1,0,20}},
+ {{0,0,1,18,10,9,-1,0,8},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,21,10,8,-1,0,14},{0,0,1,21,10,8,-1,0,14},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,21,10,9,-1,1,14},{0,0,1,21,10,9,-1,1,14},{0,0,1,21,10,9,-1,1,14},{0,0,1,21,10,9,-1,1,14},{0,0,1,16,10,9,-1,1,14},{0,0,1,16,10,9,-1,1,14},{0,0,1,16,10,9,-1,1,14}},
+ {{0,0,1,21,6,9,-1,2,8},{0,0,1,21,10,9,-1,2,14},{0,0,1,21,6,9,-1,2,8},{103,0,0,2,0,12,-1,0,0},{0,0,1,21,10,9,-1,0,18},{0,0,1,21,6,9,-1,0,18},{0,0,1,21,10,9,-1,0,11},{0,0,1,21,10,9,-1,0,11},{0,0,1,17,10,9,-1,1,14},{0,1,1,22,10,9,-1,3,20},{0,2,1,18,10,9,-1,3,8},{0,1,1,22,10,9,-1,3,20},{0,2,1,18,10,9,-1,3,8},{0,1,1,22,10,9,-1,3,20},{0,2,1,18,10,9,-1,3,8},{0,0,1,21,4,9,-1,0,14}},
+ {{0,0,1,21,10,9,-1,0,14},{0,0,1,21,10,9,-1,0,14},{0,0,1,25,3,9,-1,0,14},{0,0,1,17,3,9,-1,1,14},{0,0,1,25,10,9,-1,1,14},{0,0,1,25,10,9,-1,1,14},{0,0,1,25,10,9,-1,1,14},{103,0,0,2,0,12,-1,0,0},{0,0,1,21,10,9,-1,0,14},{0,0,1,23,4,9,-1,0,22},{0,0,1,21,4,9,-1,0,21},{0,0,1,21,10,9,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,3,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}},
+ {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{0,0,0,1,18,10,-1,1,30}},
+ {{103,0,0,2,0,12,-1,1,0},{0,0,1,21,10,9,-1,2,11},{0,0,1,21,10,9,-1,0,14},{0,0,1,21,4,9,-1,0,14},{0,0,1,23,4,9,-1,0,22},{0,0,1,21,4,9,-1,0,21},{0,0,1,21,10,9,-1,0,14},{0,0,1,21,10,9,-1,0,14},{0,1,1,22,10,9,-1,3,20},{0,2,1,18,10,9,-1,3,8},{0,0,1,21,10,9,-1,0,14},{0,0,1,25,3,9,-1,0,14},{0,0,1,21,6,9,-1,2,8},{0,0,1,17,3,9,-1,1,14},{0,0,1,21,6,9,-1,2,8},{0,0,1,21,6,9,-1,0,14}},
+ {{0,0,1,13,2,9,0,0,14},{0,0,1,13,2,9,1,0,14},{0,0,1,13,2,9,2,0,14},{0,0,1,13,2,9,3,0,14},{0,0,1,13,2,9,4,0,14},{0,0,1,13,2,9,5,0,14},{0,0,1,13,2,9,6,0,14},{0,0,1,13,2,9,7,0,14},{0,0,1,13,2,9,8,0,14},{0,0,1,13,2,9,9,0,14},{0,0,1,21,6,9,-1,3,18},{0,0,1,21,10,9,-1,3,18},{0,0,1,25,10,9,-1,1,14},{0,0,1,25,10,9,-1,1,14},{0,0,1,25,10,9,-1,1,14},{0,0,1,21,10,9,-1,2,11}},
+ {{0,0,1,21,10,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14}},
+ {{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{0,1,1,22,10,9,-1,3,20},{0,0,1,21,10,9,-1,0,14},{0,2,1,18,10,9,-1,3,8},{0,0,1,24,10,9,-1,0,14},{0,0,1,16,10,9,-1,3,14}},
+ {{0,0,1,24,10,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14}},
+ {{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{0,1,1,22,10,9,-1,3,20},{0,0,1,25,10,9,-1,3,14},{0,2,1,18,10,9,-1,3,8},{0,0,1,25,10,9,-1,3,14},{0,1,1,22,10,9,-1,3,20}},
+ {{0,2,1,18,10,9,-1,3,8},{0,0,1,21,10,9,-1,1,8},{0,1,1,22,10,9,-1,1,20},{0,2,1,18,10,9,-1,1,8},{0,0,1,21,10,9,-1,1,8},{0,0,1,21,10,9,-1,1,18},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,37}},
+ {{0,0,1,6,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2}},
+ {{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2}},
+ {{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{0,0,1,6,0,9,-1,1,18},{0,0,1,6,0,9,-1,1,18}},
+ {{18,0,1,7,0,10,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2}},
+ {{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,1,23,4,9,-1,0,21},{0,0,1,23,4,9,-1,0,22},{0,0,1,25,10,9,-1,0,14},{0,0,1,24,10,9,-1,3,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,23,4,9,-1,0,22},{0,0,1,23,4,9,-1,0,22},{103,0,0,2,0,12,-1,0,0},{0,0,1,26,10,9,-1,1,2},{0,0,1,25,10,9,-1,1,2},{0,0,1,25,10,9,-1,1,2},{0,0,1,25,10,9,-1,1,2},{0,0,1,25,10,9,-1,1,2},{0,0,1,26,10,9,-1,1,2},{0,0,1,26,10,9,-1,1,2},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{0,0,0,1,10,8,-1,1,9},{0,0,0,1,10,8,-1,1,9},{0,0,0,1,10,8,-1,1,9},{0,0,0,26,10,8,-1,0,7},{0,0,0,26,10,8,-1,0,1},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2}},
+ {{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2}},
+ {{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2}},
+ {{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{49,0,0,7,0,7,-1,1,2}},
+ {{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,21,0,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2}},
+ {{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2}},
+ {{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2}},
+ {{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2}},
+ {{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,15,10,8,-1,1,2},{14,0,0,15,10,8,-1,1,2},{14,0,0,15,10,8,-1,1,2},{14,0,0,15,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2}},
+ {{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,15,10,8,-1,1,2},{14,0,0,15,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{14,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{1,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2}},
+ {{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2}},
+ {{104,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{1,0,0,12,17,4,-1,1,9},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2}},
+ {{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2}},
+ {{30,0,0,15,0,8,-1,1,2},{30,0,0,15,0,8,-1,1,2},{30,0,0,15,0,8,-1,1,2},{30,0,0,15,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2}},
+ {{13,0,0,7,0,7,-1,1,2},{13,0,0,14,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,14,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2}},
+ {{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,12,17,7,-1,1,9},{89,0,0,12,17,7,-1,1,9},{89,0,0,12,17,7,-1,1,9},{89,0,0,12,17,7,-1,1,9},{89,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2}},
+ {{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{53,0,0,21,0,8,-1,1,4}},
+ {{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2}},
+ {{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2}},
+ {{61,0,0,21,0,8,-1,1,4},{61,0,0,14,0,7,-1,1,2},{61,0,0,14,0,7,-1,1,2},{61,0,0,14,0,7,-1,1,2},{61,0,0,14,0,7,-1,1,2},{61,0,0,14,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2}},
+ {{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2}},
+ {{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2}},
+ {{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2}},
+ {{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2}},
+ {{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{50,0,0,13,0,7,0,1,19},{50,0,0,13,0,7,1,1,19},{50,0,0,13,0,7,2,1,19},{50,0,0,13,0,7,3,1,19},{50,0,0,13,0,7,4,1,19},{50,0,0,13,0,7,5,1,19},{50,0,0,13,0,7,6,1,19},{50,0,0,13,0,7,7,1,19},{50,0,0,13,0,7,8,1,19},{50,0,0,13,0,7,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2}},
+ {{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2}},
+ {{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{159,0,0,21,0,8,-1,1,2}},
+ {{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2}},
+ {{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{47,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2}},
+ {{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2}},
+ {{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{47,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{47,0,0,7,1,7,-1,1,2}},
+ {{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2}},
+ {{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{116,0,0,21,1,8,-1,1,4},{116,0,0,15,1,8,-1,1,2},{116,0,0,15,1,8,-1,1,2},{116,0,0,15,1,8,-1,1,2},{116,0,0,15,1,8,-1,1,2},{116,0,0,15,1,8,-1,1,2},{116,0,0,15,1,8,-1,1,2},{116,0,0,15,1,8,-1,1,2},{116,0,0,15,1,8,-1,1,2}},
+ {{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2}},
+ {{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,26,1,8,-1,1,2},{144,0,0,26,1,8,-1,1,2},{144,0,0,15,1,8,-1,1,2},{144,0,0,15,1,8,-1,1,2},{144,0,0,15,1,8,-1,1,2},{144,0,0,15,1,8,-1,1,2},{144,0,0,15,1,8,-1,1,2},{144,0,0,15,1,8,-1,1,2},{144,0,0,15,1,8,-1,1,2}},
+ {{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2}},
+ {{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0}},
+ {{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{143,0,0,15,1,8,-1,1,2},{143,0,0,15,1,8,-1,1,2},{143,0,0,15,1,8,-1,1,2},{143,0,0,15,1,8,-1,1,2},{143,0,0,15,1,8,-1,1,2},{143,0,0,15,1,8,-1,1,2},{143,0,0,15,1,8,-1,1,2},{143,0,0,15,1,8,-1,1,2},{143,0,0,15,1,8,-1,1,2}},
+ {{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2}},
+ {{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{162,0,0,15,1,8,-1,1,2},{162,0,0,15,1,8,-1,1,2},{162,0,0,15,1,8,-1,1,2},{162,0,0,15,1,8,-1,1,2},{162,0,0,15,1,8,-1,1,2}},
+ {{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2}},
+ {{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,15,1,8,-1,1,2},{91,0,0,15,1,8,-1,1,2},{91,0,0,15,1,8,-1,1,2},{91,0,0,15,1,8,-1,1,2},{91,0,0,15,1,8,-1,1,2},{91,0,0,15,1,8,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{91,0,0,21,10,8,-1,1,4}},
+ {{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2}},
+ {{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{108,0,0,21,1,8,-1,1,2}},
+ {{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2}},
+ {{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2}},
+ {{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2}},
+ {{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2}},
+ {{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2}},
+ {{57,0,0,7,1,7,-1,1,2},{57,0,0,12,17,7,-1,1,9},{57,0,0,12,17,7,-1,1,9},{57,0,0,12,17,7,-1,1,9},{103,0,0,2,1,12,-1,1,0},{57,0,0,12,17,7,-1,1,9},{57,0,0,12,17,7,-1,1,9},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{57,0,0,12,17,7,-1,1,9},{57,0,0,12,17,7,-1,1,9},{57,0,0,12,17,7,-1,1,9},{57,0,0,12,17,7,-1,1,9}},
+ {{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2}},
+ {{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2}},
+ {{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{57,0,0,12,17,7,-1,1,9},{57,0,0,12,17,7,-1,1,9},{57,0,0,12,17,7,-1,1,9},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{57,0,0,12,17,7,-1,1,9}},
+ {{57,0,0,15,1,8,1,1,2},{57,0,0,15,1,8,2,1,2},{57,0,0,15,1,8,3,1,2},{57,0,0,15,1,8,4,1,2},{57,0,0,15,1,8,-1,1,2},{57,0,0,15,1,8,-1,1,2},{57,0,0,15,1,8,-1,1,2},{57,0,0,15,1,8,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}},
+ {{57,0,0,21,1,8,-1,1,4},{57,0,0,21,1,8,-1,1,4},{57,0,0,21,1,8,-1,1,4},{57,0,0,21,1,8,-1,1,4},{57,0,0,21,1,8,-1,1,4},{57,0,0,21,1,8,-1,1,4},{57,0,0,21,1,8,-1,1,4},{57,0,0,21,1,8,-1,1,4},{57,0,0,21,1,8,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}},
+ {{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2}},
+ {{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,15,1,8,-1,1,2},{133,0,0,15,1,8,-1,1,2},{133,0,0,21,1,8,-1,1,2}},
+ {{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2}},
+ {{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,15,1,8,-1,1,2},{142,0,0,15,1,8,-1,1,2},{142,0,0,15,1,8,-1,1,2}},
+ {{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,26,1,8,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2}},
+ {{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2}},
+ {{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,12,17,7,-1,1,9},{121,0,0,12,17,7,-1,1,9},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{121,0,0,15,1,8,-1,1,2},{121,0,0,15,1,8,-1,1,2},{121,0,0,15,1,8,-1,1,2},{121,0,0,15,1,8,-1,1,2},{121,0,0,15,1,8,-1,1,2}},
+ {{121,0,0,21,1,8,-1,1,4},{121,0,0,21,1,8,-1,1,4},{121,0,0,21,1,8,-1,1,4},{121,0,0,21,1,8,-1,1,4},{121,0,0,21,1,8,-1,1,4},{121,0,0,21,1,8,-1,1,4},{121,0,0,21,1,8,-1,1,15},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}},
+ {{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2}},
+ {{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{117,0,0,21,10,8,-1,1,4},{117,0,0,21,10,8,-1,1,4},{117,0,0,21,10,8,-1,1,4},{117,0,0,21,10,8,-1,1,4},{117,0,0,21,10,8,-1,1,4},{117,0,0,21,10,8,-1,1,4},{117,0,0,21,10,8,-1,1,4}},
+ {{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2}},
+ {{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{125,0,0,15,1,8,-1,1,2},{125,0,0,15,1,8,-1,1,2},{125,0,0,15,1,8,-1,1,2},{125,0,0,15,1,8,-1,1,2},{125,0,0,15,1,8,-1,1,2},{125,0,0,15,1,8,-1,1,2},{125,0,0,15,1,8,-1,1,2},{125,0,0,15,1,8,-1,1,2}},
+ {{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2}},
+ {{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{122,0,0,15,1,8,-1,1,2},{122,0,0,15,1,8,-1,1,2},{122,0,0,15,1,8,-1,1,2},{122,0,0,15,1,8,-1,1,2},{122,0,0,15,1,8,-1,1,2},{122,0,0,15,1,8,-1,1,2},{122,0,0,15,1,8,-1,1,2},{122,0,0,15,1,8,-1,1,2}},
+ {{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2}},
+ {{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{123,0,0,21,1,8,-1,1,2},{123,0,0,21,1,8,-1,1,2},{123,0,0,21,1,8,-1,1,2},{123,0,0,21,1,8,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}},
+ {{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{123,0,0,15,1,8,-1,1,2},{123,0,0,15,1,8,-1,1,2},{123,0,0,15,1,8,-1,1,2},{123,0,0,15,1,8,-1,1,2},{123,0,0,15,1,8,-1,1,2},{123,0,0,15,1,8,-1,1,2},{123,0,0,15,1,8,-1,1,2}},
+ {{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2}},
+ {{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}},
+ {{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2}},
+ {{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}},
+ {{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2}},
+ {{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{76,0,0,15,1,8,-1,1,2},{76,0,0,15,1,8,-1,1,2},{76,0,0,15,1,8,-1,1,2},{76,0,0,15,1,8,-1,1,2},{76,0,0,15,1,8,-1,1,2},{76,0,0,15,1,8,-1,1,2}},
+ {{2,0,0,15,5,8,1,1,2},{2,0,0,15,5,8,2,1,2},{2,0,0,15,5,8,3,1,2},{2,0,0,15,5,8,4,1,2},{2,0,0,15,5,8,5,1,2},{2,0,0,15,5,8,6,1,2},{2,0,0,15,5,8,7,1,2},{2,0,0,15,5,8,8,1,2},{2,0,0,15,5,8,9,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2}},
+ {{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{103,0,0,2,1,12,-1,1,0}},
+ {{65,0,0,10,0,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,10,0,7,-1,1,9},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2}},
+ {{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2}},
+ {{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9}},
+ {{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,21,0,8,-1,1,4},{65,0,0,21,0,8,-1,1,4},{65,0,0,21,0,8,-1,1,2},{65,0,0,21,0,8,-1,1,2},{65,0,0,21,0,8,-1,1,2},{65,0,0,21,0,8,-1,1,2},{65,0,0,21,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{65,0,0,15,10,8,1,1,2},{65,0,0,15,10,8,2,1,2},{65,0,0,15,10,8,3,1,2},{65,0,0,15,10,8,4,1,2},{65,0,0,15,10,8,5,1,2},{65,0,0,15,10,8,6,1,2},{65,0,0,15,10,8,7,1,2},{65,0,0,15,10,8,8,1,2},{65,0,0,15,10,8,9,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2}},
+ {{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,13,0,7,0,1,19},{65,0,0,13,0,7,1,1,19},{65,0,0,13,0,7,2,1,19},{65,0,0,13,0,7,3,1,19},{65,0,0,13,0,7,4,1,19},{65,0,0,13,0,7,5,1,19},{65,0,0,13,0,7,6,1,19},{65,0,0,13,0,7,7,1,19},{65,0,0,13,0,7,8,1,19},{65,0,0,13,0,7,9,1,19}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{65,0,0,12,17,7,-1,1,9}},
+ {{120,0,0,12,17,7,-1,1,9},{120,0,0,12,17,7,-1,1,9},{120,0,0,10,0,7,-1,1,9},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2}},
+ {{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2}},
+ {{120,0,0,10,0,7,-1,1,9},{120,0,0,10,0,7,-1,1,9},{120,0,0,10,0,7,-1,1,9},{120,0,0,12,17,7,-1,1,9},{120,0,0,12,17,7,-1,1,9},{120,0,0,12,17,7,-1,1,9},{120,0,0,12,17,7,-1,1,9},{120,0,0,10,0,7,-1,1,9},{120,0,0,10,0,7,-1,1,9},{120,0,0,12,17,7,-1,1,9},{120,0,0,12,17,7,-1,1,9},{120,0,0,21,0,8,-1,1,2},{120,0,0,21,0,8,-1,1,2},{120,0,0,1,0,8,-1,1,2},{120,0,0,21,0,8,-1,1,4},{120,0,0,21,0,8,-1,1,4}},
+ {{120,0,0,21,0,8,-1,1,4},{120,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2}},
+ {{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{152,0,0,13,0,7,0,1,19},{152,0,0,13,0,7,1,1,19},{152,0,0,13,0,7,2,1,19},{152,0,0,13,0,7,3,1,19},{152,0,0,13,0,7,4,1,19},{152,0,0,13,0,7,5,1,19},{152,0,0,13,0,7,6,1,19},{152,0,0,13,0,7,7,1,19},{152,0,0,13,0,7,8,1,19},{152,0,0,13,0,7,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2}},
+ {{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2}},
+ {{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,10,0,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9}},
+ {{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{118,0,0,13,0,6,0,1,19},{118,0,0,13,0,6,1,1,19},{118,0,0,13,0,6,2,1,19},{118,0,0,13,0,6,3,1,19},{118,0,0,13,0,6,4,1,19},{118,0,0,13,0,6,5,1,19},{118,0,0,13,0,6,6,1,19},{118,0,0,13,0,6,7,1,19},{118,0,0,13,0,6,8,1,19},{118,0,0,13,0,6,9,1,19}},
+ {{118,0,0,21,0,8,-1,1,4},{118,0,0,21,0,8,-1,1,4},{118,0,0,21,0,8,-1,1,4},{118,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2}},
+ {{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,12,17,7,-1,1,9},{160,0,0,21,0,8,-1,1,2},{160,0,0,21,0,8,-1,1,5},{160,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,10,0,7,-1,1,9},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2}},
+ {{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2}},
+ {{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,10,0,7,-1,1,9},{151,0,0,10,0,7,-1,1,9},{151,0,0,10,0,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,10,0,7,-1,1,9}},
+ {{151,0,0,10,0,7,-1,1,9},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,21,0,8,-1,1,4},{151,0,0,21,0,8,-1,1,4},{151,0,0,21,0,8,-1,1,2},{151,0,0,21,0,8,-1,1,4},{151,0,0,21,0,8,-1,1,2},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,21,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{151,0,0,13,0,7,0,1,19},{151,0,0,13,0,7,1,1,19},{151,0,0,13,0,7,2,1,19},{151,0,0,13,0,7,3,1,19},{151,0,0,13,0,7,4,1,19},{151,0,0,13,0,7,5,1,19},{151,0,0,13,0,7,6,1,19},{151,0,0,13,0,7,7,1,19},{151,0,0,13,0,7,8,1,19},{151,0,0,13,0,7,9,1,19},{151,0,0,7,0,7,-1,1,2},{151,0,0,21,0,8,-1,1,5},{151,0,0,7,0,7,-1,1,2},{151,0,0,21,0,8,-1,1,4},{151,0,0,21,0,8,-1,1,4},{151,0,0,21,0,8,-1,1,4}},
+ {{103,0,0,2,0,12,-1,1,0},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2}},
+ {{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2}},
+ {{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2}},
+ {{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,10,0,7,-1,1,9},{157,0,0,10,0,7,-1,1,9},{157,0,0,10,0,7,-1,1,9},{157,0,0,12,17,7,-1,1,9}},
+ {{157,0,0,12,17,7,-1,1,9},{157,0,0,12,17,7,-1,1,9},{157,0,0,10,0,7,-1,1,9},{157,0,0,10,0,7,-1,1,9},{157,0,0,12,17,7,-1,1,9},{157,0,0,10,0,7,-1,1,9},{157,0,0,12,17,7,-1,1,9},{157,0,0,12,17,7,-1,1,9},{157,0,0,21,0,8,-1,1,4},{157,0,0,21,0,8,-1,1,4},{157,0,0,21,0,8,-1,1,2},{157,0,0,21,0,8,-1,1,4},{157,0,0,21,0,8,-1,1,4},{157,0,0,21,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{164,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{164,0,0,7,0,7,-1,1,2}},
+ {{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{164,0,0,7,0,7,-1,1,2}},
+ {{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2}},
+ {{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,12,17,7,-1,1,9}},
+ {{145,0,0,10,0,7,-1,1,9},{145,0,0,10,0,7,-1,1,9},{145,0,0,10,0,7,-1,1,9},{145,0,0,12,17,7,-1,1,9},{145,0,0,12,17,7,-1,1,9},{145,0,0,12,17,7,-1,1,9},{145,0,0,12,17,7,-1,1,9},{145,0,0,12,17,7,-1,1,9},{145,0,0,12,17,7,-1,1,9},{145,0,0,12,17,7,-1,1,9},{145,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{145,0,0,13,0,7,0,1,19},{145,0,0,13,0,7,1,1,19},{145,0,0,13,0,7,2,1,19},{145,0,0,13,0,7,3,1,19},{145,0,0,13,0,7,4,1,19},{145,0,0,13,0,7,5,1,19},{145,0,0,13,0,7,6,1,19},{145,0,0,13,0,7,7,1,19},{145,0,0,13,0,7,8,1,19},{145,0,0,13,0,7,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{137,0,0,7,0,7,-1,1,2}},
+ {{137,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2}},
+ {{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2}},
+ {{137,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{137,0,0,12,17,7,-1,1,9},{137,0,0,7,0,7,-1,1,2},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9}},
+ {{137,0,0,12,17,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{137,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{137,0,0,10,0,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2}},
+ {{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2}},
+ {{158,0,0,10,0,7,-1,1,9},{158,0,0,10,0,7,-1,1,9},{158,0,0,10,0,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,10,0,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,10,0,7,-1,1,9},{158,0,0,10,0,7,-1,1,9},{158,0,0,10,0,7,-1,1,9},{158,0,0,10,0,7,-1,1,9},{158,0,0,12,17,7,-1,1,9}},
+ {{158,0,0,12,17,7,-1,1,9},{158,0,0,10,0,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,21,0,8,-1,1,2},{158,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{158,0,0,13,0,7,0,1,19},{158,0,0,13,0,7,1,1,19},{158,0,0,13,0,7,2,1,19},{158,0,0,13,0,7,3,1,19},{158,0,0,13,0,7,4,1,19},{158,0,0,13,0,7,5,1,19},{158,0,0,13,0,7,6,1,19},{158,0,0,13,0,7,7,1,19},{158,0,0,13,0,7,8,1,19},{158,0,0,13,0,7,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2}},
+ {{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,10,0,7,-1,0,9}},
+ {{166,0,0,10,0,7,-1,0,9},{166,0,0,10,0,7,-1,0,9},{166,0,0,12,17,7,-1,0,9},{166,0,0,12,17,7,-1,0,9},{166,0,0,12,17,7,-1,0,9},{166,0,0,12,17,7,-1,0,9},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{166,0,0,10,0,7,-1,0,9},{166,0,0,10,0,7,-1,0,9},{166,0,0,10,0,7,-1,0,9},{166,0,0,10,0,7,-1,0,9},{166,0,0,12,17,7,-1,0,9},{166,0,0,12,17,7,-1,0,9},{166,0,0,10,0,7,-1,0,9},{166,0,0,12,17,7,-1,0,9}},
+ {{166,0,0,12,17,7,-1,0,9},{166,0,0,21,0,8,-1,0,5},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,11},{166,0,0,21,0,8,-1,0,11},{166,0,0,21,0,8,-1,0,2},{166,0,0,21,0,8,-1,0,2},{166,0,0,21,0,8,-1,0,2},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4}},
+ {{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,12,17,7,-1,0,9},{166,0,0,12,17,7,-1,0,9},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2}},
+ {{163,0,0,10,0,7,-1,1,9},{163,0,0,10,0,7,-1,1,9},{163,0,0,10,0,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,10,0,7,-1,1,9},{163,0,0,10,0,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,10,0,7,-1,1,9},{163,0,0,12,17,7,-1,1,9}},
+ {{163,0,0,12,17,7,-1,1,9},{163,0,0,21,0,8,-1,1,4},{163,0,0,21,0,8,-1,1,4},{163,0,0,21,0,8,-1,1,2},{163,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{163,0,0,13,0,7,0,1,19},{163,0,0,13,0,7,1,1,19},{163,0,0,13,0,7,2,1,19},{163,0,0,13,0,7,3,1,19},{163,0,0,13,0,7,4,1,19},{163,0,0,13,0,7,5,1,19},{163,0,0,13,0,7,6,1,19},{163,0,0,13,0,7,7,1,19},{163,0,0,13,0,7,8,1,19},{163,0,0,13,0,7,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2}},
+ {{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,12,17,7,-1,1,9},{153,0,0,10,0,7,-1,1,9},{153,0,0,12,17,7,-1,1,9},{153,0,0,10,0,7,-1,1,9},{153,0,0,10,0,7,-1,1,9}},
+ {{153,0,0,12,17,7,-1,1,9},{153,0,0,12,17,7,-1,1,9},{153,0,0,12,17,7,-1,1,9},{153,0,0,12,17,7,-1,1,9},{153,0,0,12,17,7,-1,1,9},{153,0,0,12,17,7,-1,1,9},{153,0,0,10,0,7,-1,1,9},{153,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{153,0,0,13,0,7,0,1,19},{153,0,0,13,0,7,1,1,19},{153,0,0,13,0,7,2,1,19},{153,0,0,13,0,7,3,1,19},{153,0,0,13,0,7,4,1,19},{153,0,0,13,0,7,5,1,19},{153,0,0,13,0,7,6,1,19},{153,0,0,13,0,7,7,1,19},{153,0,0,13,0,7,8,1,19},{153,0,0,13,0,7,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24}},
+ {{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24}},
+ {{161,0,0,10,0,7,-1,1,24},{161,0,0,10,0,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,10,0,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{161,0,0,13,0,7,0,1,19},{161,0,0,13,0,7,1,1,19},{161,0,0,13,0,7,2,1,19},{161,0,0,13,0,7,3,1,19},{161,0,0,13,0,7,4,1,19},{161,0,0,13,0,7,5,1,19},{161,0,0,13,0,7,6,1,19},{161,0,0,13,0,7,7,1,19},{161,0,0,13,0,7,8,1,19},{161,0,0,13,0,7,9,1,19},{161,0,0,15,0,8,-1,1,24},{161,0,0,15,0,8,-1,1,24},{161,0,0,21,0,8,-1,1,4},{161,0,0,21,0,8,-1,1,4},{161,0,0,21,0,8,-1,1,4},{161,0,0,26,0,8,-1,1,24}},
+ {{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2}},
+ {{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2}},
+ {{146,0,0,13,0,7,0,1,19},{146,0,0,13,0,7,1,1,19},{146,0,0,13,0,7,2,1,19},{146,0,0,13,0,7,3,1,19},{146,0,0,13,0,7,4,1,19},{146,0,0,13,0,7,5,1,19},{146,0,0,13,0,7,6,1,19},{146,0,0,13,0,7,7,1,19},{146,0,0,13,0,7,8,1,19},{146,0,0,13,0,7,9,1,19},{146,0,0,15,0,8,-1,1,2},{146,0,0,15,0,8,-1,1,2},{146,0,0,15,0,8,-1,1,2},{146,0,0,15,0,8,-1,1,2},{146,0,0,15,0,8,-1,1,2},{146,0,0,15,0,8,-1,1,2}},
+ {{146,0,0,15,0,8,-1,1,2},{146,0,0,15,0,8,-1,1,2},{146,0,0,15,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{146,0,0,7,0,7,-1,1,2}},
+ {{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2}},
+ {{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2}},
+ {{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2}},
+ {{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0}},
+ {{101,0,0,21,0,8,-1,1,4},{101,0,0,21,0,8,-1,1,4},{101,0,0,21,0,8,-1,1,4},{101,0,0,21,0,8,-1,1,4},{101,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2}},
+ {{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,20},{71,0,0,7,0,7,-1,0,20},{71,0,0,7,0,7,-1,0,20},{71,0,0,7,0,7,-1,0,8},{71,0,0,7,0,7,-1,0,8},{71,0,0,7,0,7,-1,0,8},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2}},
+ {{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,8},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,20},{71,0,0,7,0,7,-1,0,8},{71,0,0,7,0,7,-1,0,20},{71,0,0,7,0,7,-1,0,8},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2}},
+ {{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,20},{71,0,0,7,0,7,-1,0,8},{71,0,0,7,0,7,-1,0,8},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2}},
+ {{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{103,0,0,2,0,12,-1,0,0}},
+ {{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2}},
+ {{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,20},{156,0,0,7,0,7,-1,1,8}},
+ {{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2}},
+ {{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0}},
+ {{149,0,0,13,0,7,0,1,19},{149,0,0,13,0,7,1,1,19},{149,0,0,13,0,7,2,1,19},{149,0,0,13,0,7,3,1,19},{149,0,0,13,0,7,4,1,19},{149,0,0,13,0,7,5,1,19},{149,0,0,13,0,7,6,1,19},{149,0,0,13,0,7,7,1,19},{149,0,0,13,0,7,8,1,19},{149,0,0,13,0,7,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{149,0,0,21,0,8,-1,1,4},{149,0,0,21,0,8,-1,1,4}},
+ {{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2}},
+ {{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{134,0,0,12,17,7,-1,1,9},{134,0,0,12,17,7,-1,1,9},{134,0,0,12,17,7,-1,1,9},{134,0,0,12,17,7,-1,1,9},{134,0,0,12,17,7,-1,1,9},{134,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2}},
+ {{75,0,0,12,17,7,-1,1,9},{75,0,0,12,17,7,-1,1,9},{75,0,0,12,17,7,-1,1,9},{75,0,0,12,17,7,-1,1,9},{75,0,0,12,17,7,-1,1,9},{75,0,0,12,17,7,-1,1,9},{75,0,0,12,17,7,-1,1,9},{75,0,0,21,0,8,-1,1,4},{75,0,0,21,0,8,-1,1,4},{75,0,0,21,0,8,-1,1,4},{75,0,0,21,0,8,-1,1,2},{75,0,0,21,0,8,-1,1,2},{75,0,0,26,0,8,-1,1,2},{75,0,0,26,0,8,-1,1,2},{75,0,0,26,0,8,-1,1,2},{75,0,0,26,0,8,-1,1,2}},
+ {{75,0,0,6,0,7,-1,1,2},{75,0,0,6,0,7,-1,1,2},{75,0,0,6,0,7,-1,1,2},{75,0,0,6,0,7,-1,1,2},{75,0,0,21,0,8,-1,1,4},{75,0,0,26,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{75,0,0,13,0,7,0,1,19},{75,0,0,13,0,7,1,1,19},{75,0,0,13,0,7,2,1,19},{75,0,0,13,0,7,3,1,19},{75,0,0,13,0,7,4,1,19},{75,0,0,13,0,7,5,1,19},{75,0,0,13,0,7,6,1,19},{75,0,0,13,0,7,7,1,19},{75,0,0,13,0,7,8,1,19},{75,0,0,13,0,7,9,1,19},{103,0,0,2,0,12,-1,1,0},{75,0,0,15,0,8,-1,1,2},{75,0,0,15,0,8,-1,1,2},{75,0,0,15,0,8,-1,1,2},{75,0,0,15,0,8,-1,1,2},{75,0,0,15,0,8,-1,1,2}},
+ {{75,0,0,15,0,8,-1,1,2},{75,0,0,15,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2}},
+ {{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2}},
+ {{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2}},
+ {{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{92,0,0,7,0,5,-1,1,2},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9}},
+ {{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9}},
+ {{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{92,0,0,12,17,5,-1,1,9}},
+ {{92,0,0,12,17,5,-1,1,9},{92,0,0,12,17,5,-1,1,9},{92,0,0,12,17,5,-1,1,9},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2}},
+ {{22,0,1,7,0,4,-1,0,14},{20,0,1,7,0,4,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2}},
+ {{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{135,0,0,26,0,8,-1,1,2},{135,0,0,12,17,7,-1,1,9},{135,0,0,12,17,7,-1,1,9},{135,0,0,21,0,8,-1,1,4}},
+ {{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2}},
+ {{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2}},
+ {{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2}},
+ {{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,10,0,7,-1,0,9},{0,0,0,10,0,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,10,0,7,-1,0,9},{0,0,0,10,0,7,-1,0,9},{0,0,0,10,0,7,-1,0,9}},
+ {{0,0,0,10,0,7,-1,0,9},{0,0,0,10,0,7,-1,0,9},{0,0,0,10,0,7,-1,0,9},{0,0,0,1,18,10,-1,0,9},{0,0,0,1,18,10,-1,0,9},{0,0,0,1,18,10,-1,0,9},{0,0,0,1,18,10,-1,0,9},{0,0,0,1,18,10,-1,0,9},{0,0,0,1,18,10,-1,0,9},{0,0,0,1,18,10,-1,0,9},{0,0,0,1,18,10,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9}},
+ {{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2}},
+ {{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2}},
+ {{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2}},
+ {{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2}},
+ {{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2}},
+ {{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,12,17,7,-1,1,9},{14,0,0,12,17,7,-1,1,9},{14,0,0,12,17,7,-1,1,9},{14,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2}},
+ {{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}},
+ {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}},
+ {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}},
+ {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}},
+ {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}},
+ {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}},
+ {{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}},
+ {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}},
+ {{0,0,0,9,0,9,-1,1,2},{0,0,0,25,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}},
+ {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,25,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}},
+ {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,25,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,25,10,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}},
+ {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,25,0,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,25,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}},
+ {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,13,2,9,0,1,19},{0,0,0,13,2,9,1,1,19}},
+ {{0,0,0,13,2,9,2,1,19},{0,0,0,13,2,9,3,1,19},{0,0,0,13,2,9,4,1,19},{0,0,0,13,2,9,5,1,19},{0,0,0,13,2,9,6,1,19},{0,0,0,13,2,9,7,1,19},{0,0,0,13,2,9,8,1,19},{0,0,0,13,2,9,9,1,19},{0,0,0,13,2,9,0,1,19},{0,0,0,13,2,9,1,1,19},{0,0,0,13,2,9,2,1,19},{0,0,0,13,2,9,3,1,19},{0,0,0,13,2,9,4,1,19},{0,0,0,13,2,9,5,1,19},{0,0,0,13,2,9,6,1,19},{0,0,0,13,2,9,7,1,19}},
+ {{0,0,0,13,2,9,8,1,19},{0,0,0,13,2,9,9,1,19},{0,0,0,13,2,9,0,1,19},{0,0,0,13,2,9,1,1,19},{0,0,0,13,2,9,2,1,19},{0,0,0,13,2,9,3,1,19},{0,0,0,13,2,9,4,1,19},{0,0,0,13,2,9,5,1,19},{0,0,0,13,2,9,6,1,19},{0,0,0,13,2,9,7,1,19},{0,0,0,13,2,9,8,1,19},{0,0,0,13,2,9,9,1,19},{0,0,0,13,2,9,0,1,19},{0,0,0,13,2,9,1,1,19},{0,0,0,13,2,9,2,1,19},{0,0,0,13,2,9,3,1,19}},
+ {{0,0,0,13,2,9,4,1,19},{0,0,0,13,2,9,5,1,19},{0,0,0,13,2,9,6,1,19},{0,0,0,13,2,9,7,1,19},{0,0,0,13,2,9,8,1,19},{0,0,0,13,2,9,9,1,19},{0,0,0,13,2,9,0,1,19},{0,0,0,13,2,9,1,1,19},{0,0,0,13,2,9,2,1,19},{0,0,0,13,2,9,3,1,19},{0,0,0,13,2,9,4,1,19},{0,0,0,13,2,9,5,1,19},{0,0,0,13,2,9,6,1,19},{0,0,0,13,2,9,7,1,19},{0,0,0,13,2,9,8,1,19},{0,0,0,13,2,9,9,1,19}},
+ {{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2}},
+ {{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9}},
+ {{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9}},
+ {{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2}},
+ {{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,12,17,7,-1,1,9},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2}},
+ {{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,12,17,7,-1,1,9},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,21,0,8,-1,1,4},{112,0,0,21,0,8,-1,1,4},{112,0,0,21,0,8,-1,1,4},{112,0,0,21,0,8,-1,1,4},{112,0,0,21,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9}},
+ {{103,0,0,2,0,12,-1,1,0},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9}},
+ {{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2}},
+ {{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{140,0,0,15,1,8,-1,1,2},{140,0,0,15,1,8,-1,1,2},{140,0,0,15,1,8,-1,1,2},{140,0,0,15,1,8,-1,1,2},{140,0,0,15,1,8,-1,1,2},{140,0,0,15,1,8,-1,1,2},{140,0,0,15,1,8,-1,1,2},{140,0,0,15,1,8,-1,1,2},{140,0,0,15,1,8,-1,1,2}},
+ {{140,0,0,12,17,7,-1,1,9},{140,0,0,12,17,7,-1,1,9},{140,0,0,12,17,7,-1,1,9},{140,0,0,12,17,7,-1,1,9},{140,0,0,12,17,7,-1,1,9},{140,0,0,12,17,7,-1,1,9},{140,0,0,12,17,7,-1,1,9},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}},
+ {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}},
+ {{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}},
+ {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}},
+ {{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}},
+ {{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2}},
+ {{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}},
+ {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0}},
+ {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}},
+ {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}},
+ {{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}},
+ {{2,0,0,25,10,8,-1,1,2},{2,0,0,25,10,8,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0}},
+ {{103,0,0,2,0,12,-1,0,0},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,15,2,9,0,0,1},{0,0,0,15,2,9,0,0,1},{0,0,0,15,2,9,1,0,1},{0,0,0,15,2,9,2,0,1},{0,0,0,15,2,9,3,0,1},{0,0,0,15,2,9,4,0,1},{0,0,0,15,2,9,5,0,1},{0,0,0,15,2,9,6,0,1},{0,0,0,15,2,9,7,0,1},{0,0,0,15,2,9,8,0,1},{0,0,0,15,2,9,9,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,2},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1}},
+ {{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,10,9,-1,0,2},{0,0,0,26,10,9,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39}},
+ {{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39}},
+ {{20,0,1,26,0,9,-1,2,14},{0,0,1,26,0,9,-1,2,14},{0,0,1,26,0,9,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,24,10,8,-1,0,2},{0,0,0,24,10,8,-1,0,2},{0,0,0,24,10,8,-1,0,2},{0,0,0,24,10,8,-1,0,2},{0,0,0,24,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,23},{0,0,0,26,10,8,-1,0,23},{0,0,0,26,10,8,-1,0,23},{0,0,0,26,10,8,-1,0,18},{0,0,0,26,10,8,-1,0,18},{0,0,0,26,10,8,-1,0,18},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}},
+ {{0,0,0,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}},
+ {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,26,10,8,-1,1,14},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14}},
+ {{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14}},
+ {{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14}},
+ {{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14}},
+ {{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{103,0,0,2,0,12,-1,1,0},{0,0,0,1,18,11,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}},
+ {{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9}},
+ {{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,11,-1,1,9}},
+ {{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}
+};
+#endif
+
+
+#define kFullWidthMaxPlane 0
+#define kFullWidthIndexBits 10
+#define kFullWidthCharBits 6
+static const uint8_t sFullWidthPages[1024] = {
+ 0,1,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,6,7,8
+};
+
+static const uint16_t sFullWidthValues[9][64] = {
+ {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3000,0xff01,0xff02,0xff03,0xff04,0xff05,0xff06,0xff07,0xff08,0xff09,0xff0a,0xff0b,0xff0c,0xff0d,0xff0e,0xff0f,0xff10,0xff11,0xff12,0xff13,0xff14,0xff15,0xff16,0xff17,0xff18,0xff19,0xff1a,0xff1b,0xff1c,0xff1d,0xff1e,0xff1f},
+ {0xff20,0xff21,0xff22,0xff23,0xff24,0xff25,0xff26,0xff27,0xff28,0xff29,0xff2a,0xff2b,0xff2c,0xff2d,0xff2e,0xff2f,0xff30,0xff31,0xff32,0xff33,0xff34,0xff35,0xff36,0xff37,0xff38,0xff39,0xff3a,0xff3b,0xff3c,0xff3d,0xff3e,0xff3f,0xff40,0xff41,0xff42,0xff43,0xff44,0xff45,0xff46,0xff47,0xff48,0xff49,0xff4a,0xff4b,0xff4c,0xff4d,0xff4e,0xff4f,0xff50,0xff51,0xff52,0xff53,0xff54,0xff55,0xff56,0xff57,0xff58,0xff59,0xff5a,0xff5b,0xff5c,0xff5d,0xff5e,0x0000},
+ {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffe0,0xffe1,0x0000,0xffe5,0xffe4,0x0000,0x0000,0x0000,0x0000,0x0000,0xffe2,0x0000,0x0000,0xffe3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+ {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+ {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffe6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+ {0x0000,0x0000,0x0000,0x0000,0x0000,0xff5f,0xff60,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+ {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3002,0x300c,0x300d,0x3001,0x30fb,0x30f2,0x30a1,0x30a3,0x30a5,0x30a7,0x30a9,0x30e3,0x30e5,0x30e7,0x30c3,0x30fc,0x30a2,0x30a4,0x30a6,0x30a8,0x30aa,0x30ab,0x30ad,0x30af,0x30b1,0x30b3,0x30b5,0x30b7,0x30b9,0x30bb,0x30bd},
+ {0x30bf,0x30c1,0x30c4,0x30c6,0x30c8,0x30ca,0x30cb,0x30cc,0x30cd,0x30ce,0x30cf,0x30d2,0x30d5,0x30d8,0x30db,0x30de,0x30df,0x30e0,0x30e1,0x30e2,0x30e4,0x30e6,0x30e8,0x30e9,0x30ea,0x30eb,0x30ec,0x30ed,0x30ef,0x30f3,0x3099,0x309a,0x3164,0x3131,0x3132,0x3133,0x3134,0x3135,0x3136,0x3137,0x3138,0x3139,0x313a,0x313b,0x313c,0x313d,0x313e,0x313f,0x3140,0x3141,0x3142,0x3143,0x3144,0x3145,0x3146,0x3147,0x3148,0x3149,0x314a,0x314b,0x314c,0x314d,0x314e,0x0000},
+ {0x0000,0x0000,0x314f,0x3150,0x3151,0x3152,0x3153,0x3154,0x0000,0x0000,0x3155,0x3156,0x3157,0x3158,0x3159,0x315a,0x0000,0x0000,0x315b,0x315c,0x315d,0x315e,0x315f,0x3160,0x0000,0x0000,0x3161,0x3162,0x3163,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2502,0x2190,0x2191,0x2192,0x2193,0x25a0,0x25cb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000}
+};
+
+
+
+#define kFullWidthInverseMaxPlane 0
+#define kFullWidthInverseIndexBits 10
+#define kFullWidthInverseCharBits 6
+static const uint8_t sFullWidthInversePages[1024] = {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,6,7,8,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,11,0,12
+};
+
+static const uint16_t sFullWidthInverseValues[13][64] = {
+ {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+ {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffe9,0xffea,0xffeb,0xffec,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+ {0x0000,0x0000,0xffe8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+ {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffed,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+ {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffee,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+ {0x0020,0xff64,0xff61,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xff62,0xff63,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+ {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xff9e,0xff9f,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xff67,0xff71,0xff68,0xff72,0xff69,0xff73,0xff6a,0xff74,0xff6b,0xff75,0xff76,0x0000,0xff77,0x0000,0xff78,0x0000,0xff79,0x0000,0xff7a,0x0000,0xff7b,0x0000,0xff7c,0x0000,0xff7d,0x0000,0xff7e,0x0000,0xff7f,0x0000,0xff80},
+ {0x0000,0xff81,0x0000,0xff6f,0xff82,0x0000,0xff83,0x0000,0xff84,0x0000,0xff85,0xff86,0xff87,0xff88,0xff89,0xff8a,0x0000,0x0000,0xff8b,0x0000,0x0000,0xff8c,0x0000,0x0000,0xff8d,0x0000,0x0000,0xff8e,0x0000,0x0000,0xff8f,0xff90,0xff91,0xff92,0xff93,0xff6c,0xff94,0xff6d,0xff95,0xff6e,0xff96,0xff97,0xff98,0xff99,0xff9a,0xff9b,0x0000,0xff9c,0x0000,0x0000,0xff66,0xff9d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xff65,0xff70,0x0000,0x0000,0x0000},
+ {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffa1,0xffa2,0xffa3,0xffa4,0xffa5,0xffa6,0xffa7,0xffa8,0xffa9,0xffaa,0xffab,0xffac,0xffad,0xffae,0xffaf},
+ {0xffb0,0xffb1,0xffb2,0xffb3,0xffb4,0xffb5,0xffb6,0xffb7,0xffb8,0xffb9,0xffba,0xffbb,0xffbc,0xffbd,0xffbe,0xffc2,0xffc3,0xffc4,0xffc5,0xffc6,0xffc7,0xffca,0xffcb,0xffcc,0xffcd,0xffce,0xffcf,0xffd2,0xffd3,0xffd4,0xffd5,0xffd6,0xffd7,0xffda,0xffdb,0xffdc,0xffa0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+ {0x0000,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f,0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f},
+ {0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x2985,0x2986,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+ {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a2,0x00a3,0x00ac,0x00af,0x00a6,0x00a5,0x20a9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000}
+};
+
+
+#if !ENABLE_INTL_API
+#define kCaseMapMaxPlane 1
+#define kCaseMapIndexBits 11
+#define kCaseMapCharBits 5
+static const uint8_t sCaseMapPlanes[1] = {1};
+
+static const uint8_t sCaseMapPages[2][2048] = {
+ {0,0,1,2,0,3,4,5,6,7,8,9,10,11,12,13,6,14,15,16,17,0,0,0,0,0,18,19,20,21,22,23,24,25,26,6,27,6,28,6,6,29,30,31,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,36,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,6,6,6,6,39,6,6,6,40,41,42,43,41,44,45,46,0,0,0,0,0,0,0,0,0,47,48,49,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,52,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,55,56,57,6,6,6,58,59,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,61,62,0,0,0,0,63,6,64,65,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,68,69,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,72,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,74,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,77,78,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
+};
+
+static const uint32_t sCaseMapValues[82][32] = {
+ {0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x00000000,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x00000000,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x10000329,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x00000000,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x00000000},
+ {0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x00000000,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000187},
+ {0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001},
+ {0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000159,0x10000178,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x40000003,0x10000003,0x40000007,0x10000007,0x40000003,0x10000003,0x4000007f},
+ {0x1000007f,0x40000003,0x10000003,0x40000007,0x10000007,0x40000003,0x10000003,0x4000000f,0x1000000f,0x00000000,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001},
+ {0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000187,0x40000003,0x10000003,0x40000007,0x10000007,0x40000003,0x10000003,0x1000012c},
+ {0x100003c3,0x400003d2,0x40000001,0x10000001,0x40000001,0x10000001,0x400003d2,0x4000000f,0x1000000f,0x400003df,0x400003dd,0x40000007,0x10000007,0x00000000,0x40000053,0x400003d6,0x400003cb,0x40000003,0x10000003,0x400003f3,0x400003f7,0x10000063,0x400003ff,0x400003ff,0x40000001,0x10000001,0x100003a7,0x00000000,0x400003f3,0x400003ef,0x100003be,0x400003ea},
+ {0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000326,0x4000000f,0x1000000f,0x4000032a,0x00000000,0x00000000,0x40000001,0x10000001,0x40000326,0x4000001f,0x1000001f,0x4000033b,0x40000339,0x40000007,0x10000007,0x40000003,0x10000003,0x40000325,0x40000001,0x10000001,0x00000000,0x00000000,0x40000001,0x10000001,0x00000000,0x10000048},
+ {0x00000000,0x00000000,0x00000000,0x00000000,0x40000002,0x80000001,0x20000003,0x4000000e,0x8000000f,0x20000001,0x40000006,0x80000001,0x20000007,0x40000003,0x10000003,0x4000001f,0x1000001f,0x40000003,0x10000003,0x40000007,0x10000007,0x40000003,0x10000003,0x4000000f,0x1000000f,0x40000003,0x10000003,0x40000007,0x10000007,0x10000053,0x40000001,0x10000001},
+ {0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x40000002,0x80000003,0x20000001,0x40000001,0x10000001,0x40000063,0x40000048,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001},
+ {0x400003be,0x00000000,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40002e5f,0x40000007,0x10000007,0x400003a7,0x40002e58,0x10002e41},
+ {0x10002e3f,0x40000003,0x10000003,0x400003c3,0x400000cd,0x400000c9,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x10002e3f,0x10002e3c,0x10002e22,0x100003d2,0x100003d2,0x00000000,0x100003df,0x100003dd,0x00000000,0x100003d6,0x00000000,0x100003cb,0x1000a5f7,0x00000000,0x00000000,0x00000000},
+ {0x100003f3,0x1000a5cd,0x00000000,0x100003f7,0x00000000,0x1000a5e8,0x1000a5cc,0x00000000,0x100003ff,0x100003ff,0x00000000,0x10002e09,0x1000a5c1,0x00000000,0x00000000,0x100003f3,0x00000000,0x10002e1f,0x100003ef,0x00000000,0x00000000,0x100003ea,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x10002e19,0x00000000,0x00000000},
+ {0x10000326,0x00000000,0x00000000,0x1000032a,0x00000000,0x00000000,0x00000000,0x1000a536,0x10000326,0x100000cd,0x1000033b,0x10000339,0x100000c9,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x10000325,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x1000a52f,0x1000a52e,0x00000000},
+ {0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x100000dc,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x10000086,0x10000082,0x10000082,0x00000000,0x4000008c},
+ {0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x4000002a,0x00000000,0x40000025,0x40000027,0x40000025,0x00000000,0x40000040,0x00000000,0x40000043,0x40000041,0x00000000,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020},
+ {0x40000060,0x40000060,0x00000000,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x1000002a,0x10000025,0x10000027,0x10000025,0x00000000,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020},
+ {0x10000060,0x10000060,0x10000061,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000040,0x10000043,0x10000041,0x40000018,0x10000042,0x10000049,0x00000000,0x00000000,0x00000000,0x10000073,0x10000076,0x10000018,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001},
+ {0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x1000006a,0x10000050,0x1000000b,0x1000008c,0x4000004c,0x10000060,0x00000000,0x4000000f,0x1000000f,0x4000000b,0x40000001,0x10000001,0x00000000,0x40000086,0x40000082,0x40000082},
+ {0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020},
+ {0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020},
+ {0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050},
+ {0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001},
+ {0x4000000f,0x40000003,0x10000003,0x40000007,0x10000007,0x40000003,0x10000003,0x4000000f,0x1000000f,0x40000003,0x10000003,0x40000007,0x10000007,0x40000003,0x10000003,0x1000000f,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001},
+ {0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050},
+ {0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x400000d0,0x400000d0,0x400000d0,0x400000d0,0x400000d0,0x400000d0,0x400000d0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x00000000,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030},
+ {0x100000d0,0x100000d0,0x100000d0,0x100000d0,0x100000d0,0x100000d0,0x100000d0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0},
+ {0x40003de0,0x40003de0,0x40003de0,0x40003de0,0x40003de0,0x40003de0,0x00000000,0x40003de0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40003de0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x4000b8d0,0x4000b8d0,0x4000b8d0,0x4000b8d0,0x4000b8d0,0x4000b8d0,0x4000b8d0,0x4000b8d0,0x4000b8d0,0x4000b8d0,0x4000b8d0,0x4000b8d0,0x4000b8d0,0x4000b8d0,0x4000b8d0,0x4000b8d0,0x4000b830,0x4000b830,0x4000b830,0x4000b830,0x4000b830,0x4000b830,0x4000b830,0x4000b830,0x4000b830,0x4000b830,0x4000b830,0x4000b830,0x4000b830,0x4000b830,0x4000b830,0x4000b830},
+ {0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b870,0x4000b870,0x4000b870,0x4000b870,0x4000b870,0x4000b870,0x4000b870,0x4000b870,0x4000b870,0x4000b870,0x4000b870,0x4000b870,0x4000b870,0x4000b870,0x4000b870,0x4000b870},
+ {0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x4000b850,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x00000000,0x00000000,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x00000000,0x00000000},
+ {0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x1000ba04,0x00000000,0x00000000,0x00000000,0x1000311e,0x00000000,0x00000000},
+ {0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x100000fb,0x00000000,0x00000000,0x40001e41,0x00000000},
+ {0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x00000000,0x00000000,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x00000000,0x00000000},
+ {0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008},
+ {0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x00000000,0x00000000,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x00000000,0x00000000,0x00000000,0x10000008,0x00000000,0x10000008,0x00000000,0x10000008,0x00000000,0x10000008,0x00000000,0x40000008,0x00000000,0x40000008,0x00000000,0x40000008,0x00000000,0x40000008},
+ {0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x100000ca,0x100000ca,0x100000ba,0x100000ba,0x100000be,0x100000be,0x100000ac,0x100000ac,0x10000080,0x10000080,0x10000090,0x10000090,0x10000086,0x10000086,0x00000000,0x00000000},
+ {0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x10000008,0x10000008,0x00000000,0x1000000f,0x00000000,0x00000000,0x00000000,0x00000000,0x40000008,0x40000008,0x400000ca,0x400000ca,0x4000000f,0x00000000,0x10001c27,0x00000000},
+ {0x00000000,0x00000000,0x00000000,0x1000000f,0x00000000,0x00000000,0x00000000,0x00000000,0x400000ba,0x400000ba,0x400000be,0x400000be,0x4000000f,0x00000000,0x00000000,0x00000000,0x10000008,0x10000008,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40000008,0x40000008,0x400000ac,0x400000ac,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x10000008,0x10000008,0x00000000,0x00000000,0x00000000,0x10000009,0x00000000,0x00000000,0x40000008,0x40000008,0x40000090,0x40000090,0x40000009,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x1000000f,0x00000000,0x00000000,0x00000000,0x00000000,0x40000080,0x40000080,0x40000086,0x40000086,0x4000000f,0x00000000,0x00000000,0x00000000},
+ {0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x400022ef,0x00000000,0x00000000,0x00000000,0x40002141,0x400021ce,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x4000007c,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x1000007c,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010},
+ {0x00000000,0x00000000,0x00000000,0x40000007,0x10000007,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40000066,0x40000066,0x4000006a,0x4000006a,0x4000006e,0x4000006e,0x4000006a,0x4000006a,0x40000066,0x40000066},
+ {0x4000001a,0x4000001a,0x4000001e,0x4000001e,0x4000001a,0x4000001a,0x40000026,0x40000026,0x4000002a,0x4000002a,0x4000002e,0x4000002e,0x4000002a,0x4000002a,0x40000026,0x40000026,0x10000066,0x10000066,0x1000006a,0x1000006a,0x1000006e,0x1000006e,0x1000006a,0x1000006a,0x10000066,0x10000066,0x1000001a,0x1000001a,0x1000001e,0x1000001e,0x1000001a,0x1000001a},
+ {0x10000026,0x10000026,0x1000002a,0x1000002a,0x1000002e,0x1000002e,0x1000002a,0x1000002a,0x10000026,0x10000026,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050},
+ {0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x00000000,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030},
+ {0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x00000000},
+ {0x40000001,0x10000001,0x40002e09,0x4000311e,0x40002e19,0x10002e5f,0x10002e58,0x4000000f,0x1000000f,0x40000003,0x10000003,0x40000007,0x10000007,0x40002e3c,0x40002e1f,0x40002e3f,0x40002e22,0x00000000,0x40000001,0x10000001,0x00000000,0x40000003,0x10000003,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40002e41,0x40002e3f},
+ {0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40000007,0x10000007,0x40000003,0x10000003,0x00000000,0x00000000,0x00000000,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0},
+ {0x10003de0,0x10003de0,0x10003de0,0x10003de0,0x10003de0,0x10003de0,0x00000000,0x10003de0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x10003de0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x00000000,0x00000000,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001},
+ {0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40000003,0x10000003,0x40000007,0x10000007,0x4000ba04,0x40000001,0x10000001},
+ {0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x40000007,0x10000007,0x4000a5e8,0x00000000,0x00000000,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001},
+ {0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x4000a5cc,0x4000a5f7,0x4000a5cd,0x4000a5c1,0x00000000,0x00000000,0x4000a52e,0x4000a536,0x4000a52f,0x40000ce0,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x10000ce0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x1000b8d0,0x1000b8d0,0x1000b8d0,0x1000b8d0,0x1000b8d0,0x1000b8d0,0x1000b8d0,0x1000b8d0,0x1000b8d0,0x1000b8d0,0x1000b8d0,0x1000b8d0,0x1000b8d0,0x1000b8d0,0x1000b8d0,0x1000b8d0},
+ {0x1000b830,0x1000b830,0x1000b830,0x1000b830,0x1000b830,0x1000b830,0x1000b830,0x1000b830,0x1000b830,0x1000b830,0x1000b830,0x1000b830,0x1000b830,0x1000b830,0x1000b830,0x1000b830,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850},
+ {0x1000b870,0x1000b870,0x1000b870,0x1000b870,0x1000b870,0x1000b870,0x1000b870,0x1000b870,0x1000b870,0x1000b870,0x1000b870,0x1000b870,0x1000b870,0x1000b870,0x1000b870,0x1000b870,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850,0x1000b850},
+ {0x00000000,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x00000000,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x40000028,0x40000028,0x40000028,0x40000028,0x40000028,0x40000028,0x40000028,0x40000028,0x40000038,0x40000038,0x40000038,0x40000038,0x40000038,0x40000038,0x40000038,0x40000038,0x40000028,0x40000028,0x40000028,0x40000028,0x40000028,0x40000028,0x40000028,0x40000028,0x40000058,0x40000058,0x40000058,0x40000058,0x40000058,0x40000058,0x40000058,0x40000058},
+ {0x40000068,0x40000068,0x40000068,0x40000068,0x40000068,0x40000068,0x40000068,0x40000068,0x10000028,0x10000028,0x10000028,0x10000028,0x10000028,0x10000028,0x10000028,0x10000028,0x10000038,0x10000038,0x10000038,0x10000038,0x10000038,0x10000038,0x10000038,0x10000038,0x10000028,0x10000028,0x10000028,0x10000028,0x10000028,0x10000028,0x10000028,0x10000028},
+ {0x10000058,0x10000058,0x10000058,0x10000058,0x10000058,0x10000058,0x10000058,0x10000058,0x10000068,0x10000068,0x10000068,0x10000068,0x10000068,0x10000068,0x10000068,0x10000068,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040},
+ {0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x40000040,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040},
+ {0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x10000040,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
+ {0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060},
+ {0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060}
+};
+#endif
+const uint32_t kTitleToUpper = 0x80000000;
+const uint32_t kUpperToLower = 0x40000000;
+const uint32_t kLowerToTitle = 0x20000000;
+const uint32_t kLowerToUpper = 0x10000000;
+const uint32_t kCaseMapCharMask = 0x001fffff;
+
+/*
+ * * * * * This file contains MACHINE-GENERATED DATA, do not edit! * * * * *
+ */
diff --git a/intl/unicharutil/util/nsUnicodeScriptCodes.h b/intl/unicharutil/util/nsUnicodeScriptCodes.h
new file mode 100644
index 000000000..40bc6039e
--- /dev/null
+++ b/intl/unicharutil/util/nsUnicodeScriptCodes.h
@@ -0,0 +1,293 @@
+
+/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/*
+ * Derived from the Unicode Character Database by genUnicodePropertyData.pl
+ *
+ * For Unicode terms of use, see http://www.unicode.org/terms_of_use.html
+ */
+
+/*
+ * Created on Wed Oct 26 09:12:45 2016 from UCD data files with version info:
+ *
+
+# Date: 2015-06-16, 20:24:00 GMT [KW]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2015 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# For documentation, see the following:
+# NamesList.html
+# UAX #38, "Unicode Han Database (Unihan)"
+# UAX #44, "Unicode Character Database."
+#
+# The UAXes can be accessed at http://www.unicode.org/versions/Unicode8.0.0/
+
+This directory contains the final data files
+for the Unicode Character Database, for Version 8.0.0 of the Unicode
+Standard.
+
+
+# Scripts-8.0.0.txt
+# Date: 2015-03-11, 22:29:42 GMT [MD]
+
+# BidiMirroring-8.0.0.txt
+# Date: 2015-01-20, 18:30:00 GMT [KW, LI]
+
+# BidiBrackets-8.0.0.txt
+# Date: 2015-01-20, 19:00:00 GMT [AG, LI, KW]
+
+# HangulSyllableType-8.0.0.txt
+# Date: 2014-12-16, 23:07:45 GMT [MD]
+
+# LineBreak-8.0.0.txt
+# Date: 2015-02-13, 09:15:00 GMT [KW, LI]
+
+# EastAsianWidth-8.0.0.txt
+# Date: 2015-02-10, 21:00:00 GMT [KW, LI]
+
+# File: xidmodifications.txt
+# Version: 8.0.0
+# Generated: 2015-05-17, 03:09:04 GMT
+
+#
+# Unihan_Variants.txt
+# Date: 2015-04-30 18:38:20 GMT [JHJ]
+
+# VerticalOrientation-13.txt
+# Date: 2014-09-03, 17:30:00 GMT [EM, KI, LI]
+
+ *
+ * * * * * This file contains MACHINE-GENERATED DATA, do not edit! * * * * *
+ */
+
+#ifndef NS_UNICODE_SCRIPT_CODES
+#define NS_UNICODE_SCRIPT_CODES
+
+#pragma pack(1)
+
+#if !ENABLE_INTL_API
+
+struct nsCharProps1 {
+ unsigned char mMirrorOffsetIndex:5;
+ unsigned char mHangulType:3;
+ unsigned char mCombiningClass:8;
+};
+
+#endif
+
+#if ENABLE_INTL_API
+
+struct nsCharProps2 {
+ // Currently only 6 bits are defined here, so 2 more could be added without
+ // affecting the storage requirements for this struct.
+ unsigned char mVertOrient:2;
+ unsigned char mXidmod:4;
+};
+
+#endif
+
+#if !ENABLE_INTL_API
+
+struct nsCharProps2 {
+ unsigned char mScriptCode:8;
+ unsigned char mPairedBracketType:2;
+ unsigned char mEastAsianWidthFWH:1;
+ unsigned char mCategory:5;
+ unsigned char mBidiCategory:5;
+ unsigned char mXidmod:4;
+ signed char mNumericValue:5;
+ unsigned char mVertOrient:2;
+ unsigned char mLineBreak; // only 6 bits actually needed
+};
+
+#endif
+
+#pragma pack()
+
+namespace mozilla {
+namespace unicode {
+enum class Script {
+ COMMON = 0,
+ INHERITED = 1,
+ ARABIC = 2,
+ ARMENIAN = 3,
+ BENGALI = 4,
+ BOPOMOFO = 5,
+ CHEROKEE = 6,
+ COPTIC = 7,
+ CYRILLIC = 8,
+ DESERET = 9,
+ DEVANAGARI = 10,
+ ETHIOPIC = 11,
+ GEORGIAN = 12,
+ GOTHIC = 13,
+ GREEK = 14,
+ GUJARATI = 15,
+ GURMUKHI = 16,
+ HAN = 17,
+ HANGUL = 18,
+ HEBREW = 19,
+ HIRAGANA = 20,
+ KANNADA = 21,
+ KATAKANA = 22,
+ KHMER = 23,
+ LAO = 24,
+ LATIN = 25,
+ MALAYALAM = 26,
+ MONGOLIAN = 27,
+ MYANMAR = 28,
+ OGHAM = 29,
+ OLD_ITALIC = 30,
+ ORIYA = 31,
+ RUNIC = 32,
+ SINHALA = 33,
+ SYRIAC = 34,
+ TAMIL = 35,
+ TELUGU = 36,
+ THAANA = 37,
+ THAI = 38,
+ TIBETAN = 39,
+ CANADIAN_ABORIGINAL = 40,
+ YI = 41,
+ TAGALOG = 42,
+ HANUNOO = 43,
+ BUHID = 44,
+ TAGBANWA = 45,
+ BRAILLE = 46,
+ CYPRIOT = 47,
+ LIMBU = 48,
+ LINEAR_B = 49,
+ OSMANYA = 50,
+ SHAVIAN = 51,
+ TAI_LE = 52,
+ UGARITIC = 53,
+ KATAKANA_OR_HIRAGANA = 54,
+ BUGINESE = 55,
+ GLAGOLITIC = 56,
+ KHAROSHTHI = 57,
+ SYLOTI_NAGRI = 58,
+ NEW_TAI_LUE = 59,
+ TIFINAGH = 60,
+ OLD_PERSIAN = 61,
+ BALINESE = 62,
+ BATAK = 63,
+ BLISSYMBOLS = 64,
+ BRAHMI = 65,
+ CHAM = 66,
+ CIRTH = 67,
+ OLD_CHURCH_SLAVONIC_CYRILLIC = 68,
+ DEMOTIC_EGYPTIAN = 69,
+ HIERATIC_EGYPTIAN = 70,
+ EGYPTIAN_HIEROGLYPHS = 71,
+ KHUTSURI = 72,
+ SIMPLIFIED_HAN = 73,
+ TRADITIONAL_HAN = 74,
+ PAHAWH_HMONG = 75,
+ OLD_HUNGARIAN = 76,
+ HARAPPAN_INDUS = 77,
+ JAVANESE = 78,
+ KAYAH_LI = 79,
+ LATIN_FRAKTUR = 80,
+ LATIN_GAELIC = 81,
+ LEPCHA = 82,
+ LINEAR_A = 83,
+ MANDAIC = 84,
+ MAYAN_HIEROGLYPHS = 85,
+ MEROITIC_HIEROGLYPHS = 86,
+ NKO = 87,
+ OLD_TURKIC = 88,
+ OLD_PERMIC = 89,
+ PHAGS_PA = 90,
+ PHOENICIAN = 91,
+ MIAO = 92,
+ RONGORONGO = 93,
+ SARATI = 94,
+ ESTRANGELO_SYRIAC = 95,
+ WESTERN_SYRIAC = 96,
+ EASTERN_SYRIAC = 97,
+ TENGWAR = 98,
+ VAI = 99,
+ VISIBLE_SPEECH = 100,
+ CUNEIFORM = 101,
+ UNWRITTEN_LANGUAGES = 102,
+ UNKNOWN = 103,
+ CARIAN = 104,
+ JAPANESE = 105,
+ TAI_THAM = 106,
+ LYCIAN = 107,
+ LYDIAN = 108,
+ OL_CHIKI = 109,
+ REJANG = 110,
+ SAURASHTRA = 111,
+ SIGNWRITING = 112,
+ SUNDANESE = 113,
+ MOON = 114,
+ MEETEI_MAYEK = 115,
+ IMPERIAL_ARAMAIC = 116,
+ AVESTAN = 117,
+ CHAKMA = 118,
+ KOREAN = 119,
+ KAITHI = 120,
+ MANICHAEAN = 121,
+ INSCRIPTIONAL_PAHLAVI = 122,
+ PSALTER_PAHLAVI = 123,
+ BOOK_PAHLAVI = 124,
+ INSCRIPTIONAL_PARTHIAN = 125,
+ SAMARITAN = 126,
+ TAI_VIET = 127,
+ MATHEMATICAL_NOTATION = 128,
+ SYMBOLS = 129,
+ BAMUM = 130,
+ LISU = 131,
+ NAKHI_GEBA = 132,
+ OLD_SOUTH_ARABIAN = 133,
+ BASSA_VAH = 134,
+ DUPLOYAN = 135,
+ ELBASAN = 136,
+ GRANTHA = 137,
+ KPELLE = 138,
+ LOMA = 139,
+ MENDE_KIKAKUI = 140,
+ MEROITIC_CURSIVE = 141,
+ OLD_NORTH_ARABIAN = 142,
+ NABATAEAN = 143,
+ PALMYRENE = 144,
+ KHUDAWADI = 145,
+ WARANG_CITI = 146,
+ AFAKA = 147,
+ JURCHEN = 148,
+ MRO = 149,
+ NUSHU = 150,
+ SHARADA = 151,
+ SORA_SOMPENG = 152,
+ TAKRI = 153,
+ TANGUT = 154,
+ WOLEAI = 155,
+ ANATOLIAN_HIEROGLYPHS = 156,
+ KHOJKI = 157,
+ TIRHUTA = 158,
+ CAUCASIAN_ALBANIAN = 159,
+ MAHAJANI = 160,
+ AHOM = 161,
+ HATRAN = 162,
+ MODI = 163,
+ MULTANI = 164,
+ PAU_CIN_HAU = 165,
+ SIDDHAM = 166,
+
+ NUM_SCRIPT_CODES = 167,
+
+ INVALID = -1
+};
+} // namespace unicode
+} // namespace mozilla
+
+#endif
+/*
+ * * * * * This file contains MACHINE-GENERATED DATA, do not edit! * * * * *
+ */
diff --git a/intl/unicharutil/util/objs.mozbuild b/intl/unicharutil/util/objs.mozbuild
new file mode 100644
index 000000000..de9de37a7
--- /dev/null
+++ b/intl/unicharutil/util/objs.mozbuild
@@ -0,0 +1,27 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+intl_unicharutil_util_lcppsrcs = [
+ 'GreekCasing.cpp',
+]
+
+if CONFIG['ENABLE_INTL_API']:
+ intl_unicharutil_util_lcppsrcs += [
+ 'ICUUtils.cpp',
+ ]
+
+intl_unicharutil_util_lcppsrcs += [
+ 'IrishCasing.cpp',
+ 'nsBidiUtils.cpp',
+ 'nsSpecialCasingData.cpp',
+ 'nsUnicharUtils.cpp',
+ 'nsUnicodeProperties.cpp',
+]
+
+intl_unicharutil_util_cppsrcs = [
+ '/intl/unicharutil/util/%s' % s
+ for s in intl_unicharutil_util_lcppsrcs
+]