From 4cf112b641f7ea9fb1ba87cefcef7ee98b6b0831 Mon Sep 17 00:00:00 2001 From: Leonard Lee Date: Wed, 12 Dec 2012 15:29:02 +0100 Subject: Elaborate shortDayName(), etc using default locale. QDate::toString() should explain QDate::shortDayName() and QDate::shortMonthName() will be localized name using the default locale from the system. Task-number: QTBUG-28522 Change-Id: I027a72773b5772bf00344f14a4b522e41c9e63db Reviewed-by: Thiago Macieira --- src/corelib/tools/qdatetime.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 9ac4c1a87f..f84644b37d 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -549,8 +549,8 @@ int QDate::weekNumber(int *yearNumber) const \li 12 = "Dec" \endlist - The month names will be localized according to the system's locale - settings. + The month names will be localized according to the system's default + locale settings. Returns an empty string if the date is invalid. @@ -596,8 +596,8 @@ QString QDate::shortMonthName(int month, QDate::MonthNameType type) \li 12 = "December" \endlist - The month names will be localized according to the system's locale - settings. + The month names will be localized according to the system's default + locale settings. Returns an empty string if the date is invalid. @@ -638,8 +638,8 @@ QString QDate::longMonthName(int month, MonthNameType type) \li 7 = "Sun" \endlist - The day names will be localized according to the system's locale - settings. + The day names will be localized according to the system's default + locale settings. Returns an empty string if the date is invalid. @@ -680,8 +680,8 @@ QString QDate::shortDayName(int weekday, MonthNameType type) \li 7 = "Sunday" \endlist - The day names will be localized according to the system's locale - settings. + The day names will be localized according to the system's default + locale settings. Returns an empty string if the date is invalid. @@ -718,8 +718,8 @@ QString QDate::longDayName(int weekday, MonthNameType type) If the \a format is Qt::TextDate, the string is formatted in the default way. QDate::shortDayName() and QDate::shortMonthName() are used to generate the string, so the day and month names will - be localized names. An example of this formatting is - "Sat May 20 1995". + be localized names using the default locale from the system. An + example of this formatting is "Sat May 20 1995". If the \a format is Qt::ISODate, the string format corresponds to the ISO 8601 extended specification for representations of -- cgit v1.2.3 From f7639c0a6d3ea0aef06594eec0bbbaafb85b0dbb Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 8 Dec 2012 05:36:49 +0200 Subject: Add QChar::Script enum ...where the values are not aliased to Common script. The old QUnicodeTables::Script enum was retained for compatibility reasons until Qt internals are updated to use QChar::script(). Using QChar::Script instead of QUnicodeTables::Script would improve both the text analysis (itemization, boundary finding) and the text shaping quality. This also a required step for switching to Hurfbuzz-NG. /* This adds 6668 more .rodata bytes */ Change-Id: I5aa3d12c550528d0052542436990f8d0779ea8e5 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/corelib/tools/qchar.cpp | 147 + src/corelib/tools/qchar.h | 128 + src/corelib/tools/qstring.h | 2 + src/corelib/tools/qunicodetables.cpp | 11977 +++++++++++++++++---------------- src/corelib/tools/qunicodetables_p.h | 2 +- 5 files changed, 6460 insertions(+), 5796 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp index c66962d931..6af2521357 100644 --- a/src/corelib/tools/qchar.cpp +++ b/src/corelib/tools/qchar.cpp @@ -262,6 +262,132 @@ QT_BEGIN_NAMESPACE \sa category() */ +/*! + \enum QChar::Script + \since 5.1 + + This enum type defines the Unicode script property values. + + For details about the Unicode script property values see + \l{http://www.unicode.org/reports/tr24/}{Unicode Standard Annex #24}. + + In order to conform to C/C++ naming conventions "Script_" is prepended + to the codes used in the Unicode Standard. + + \value Script_Unknown For unassigned, private-use, noncharacter, and surrogate code points. + \value Script_Inherited For characters that may be used with multiple scripts + and that inherit their script from the preceding characters. + These include nonspacing marks, enclosing marks, + and zero width joiner/non-joiner characters. + \value Script_Common For characters that may be used with multiple scripts + and that do not inherit their script from the preceding characters. + + \value Script_Latin + \value Script_Greek + \value Script_Cyrillic + \value Script_Armenian + \value Script_Hebrew + \value Script_Arabic + \value Script_Syriac + \value Script_Thaana + \value Script_Devanagari + \value Script_Bengali + \value Script_Gurmukhi + \value Script_Gujarati + \value Script_Oriya + \value Script_Tamil + \value Script_Telugu + \value Script_Kannada + \value Script_Malayalam + \value Script_Sinhala + \value Script_Thai + \value Script_Lao + \value Script_Tibetan + \value Script_Myanmar + \value Script_Georgian + \value Script_Hangul + \value Script_Ethiopic + \value Script_Cherokee + \value Script_CanadianAboriginal + \value Script_Ogham + \value Script_Runic + \value Script_Khmer + \value Script_Mongolian + \value Script_Hiragana + \value Script_Katakana + \value Script_Bopomofo + \value Script_Han + \value Script_Yi + \value Script_OldItalic + \value Script_Gothic + \value Script_Deseret + \value Script_Tagalog + \value Script_Hanunoo + \value Script_Buhid + \value Script_Tagbanwa + \value Script_Coptic + \value Script_Limbu + \value Script_TaiLe + \value Script_LinearB + \value Script_Ugaritic + \value Script_Shavian + \value Script_Osmanya + \value Script_Cypriot + \value Script_Braille + \value Script_Buginese + \value Script_NewTaiLue + \value Script_Glagolitic + \value Script_Tifinagh + \value Script_SylotiNagri + \value Script_OldPersian + \value Script_Kharoshthi + \value Script_Balinese + \value Script_Cuneiform + \value Script_Phoenician + \value Script_PhagsPa + \value Script_Nko + \value Script_Sundanese + \value Script_Lepcha + \value Script_OlChiki + \value Script_Vai + \value Script_Saurashtra + \value Script_KayahLi + \value Script_Rejang + \value Script_Lycian + \value Script_Carian + \value Script_Lydian + \value Script_Cham + \value Script_TaiTham + \value Script_TaiViet + \value Script_Avestan + \value Script_EgyptianHieroglyphs + \value Script_Samaritan + \value Script_Lisu + \value Script_Bamum + \value Script_Javanese + \value Script_MeeteiMayek + \value Script_ImperialAramaic + \value Script_OldSouthArabian + \value Script_InscriptionalParthian + \value Script_InscriptionalPahlavi + \value Script_OldTurkic + \value Script_Kaithi + \value Script_Batak + \value Script_Brahmi + \value Script_Mandaic + \value Script_Chakma + \value Script_MeroiticCursive + \value Script_MeroiticHieroglyphs + \value Script_Miao + \value Script_Sharada + \value Script_SoraSompeng + \value Script_Takri + + \omitvalue ScriptCount + + \sa script() +*/ + /*! \enum QChar::Direction @@ -1158,6 +1284,27 @@ unsigned char QChar::combiningClass(uint ucs4) return (unsigned char) qGetProp(ucs4)->combiningClass; } +/*! + \fn QChar::Script QChar::script() const + \since 5.1 + + Returns the Unicode script property value for this character. +*/ + +/*! + \overload + \since 5.1 + + Returns the Unicode script property value for the character specified in + its UCS-4-encoded form as \a ucs4. +*/ +QChar::Script QChar::script(uint ucs4) +{ + if (ucs4 > LastValidCodePoint) + return QChar::Script_Unknown; + return (QChar::Script) qGetProp(ucs4)->script; +} + /*! \fn QChar::UnicodeVersion QChar::unicodeVersion() const diff --git a/src/corelib/tools/qchar.h b/src/corelib/tools/qchar.h index aeb9848651..2aacbd08c0 100644 --- a/src/corelib/tools/qchar.h +++ b/src/corelib/tools/qchar.h @@ -137,6 +137,130 @@ public: Symbol_Other // So }; + enum Script + { + Script_Unknown, + Script_Inherited, + Script_Common, + + Script_Latin, + Script_Greek, + Script_Cyrillic, + Script_Armenian, + Script_Hebrew, + Script_Arabic, + Script_Syriac, + Script_Thaana, + Script_Devanagari, + Script_Bengali, + Script_Gurmukhi, + Script_Gujarati, + Script_Oriya, + Script_Tamil, + Script_Telugu, + Script_Kannada, + Script_Malayalam, + Script_Sinhala, + Script_Thai, + Script_Lao, + Script_Tibetan, + Script_Myanmar, + Script_Georgian, + Script_Hangul, + Script_Ethiopic, + Script_Cherokee, + Script_CanadianAboriginal, + Script_Ogham, + Script_Runic, + Script_Khmer, + Script_Mongolian, + Script_Hiragana, + Script_Katakana, + Script_Bopomofo, + Script_Han, + Script_Yi, + Script_OldItalic, + Script_Gothic, + Script_Deseret, + Script_Tagalog, + Script_Hanunoo, + Script_Buhid, + Script_Tagbanwa, + Script_Coptic, + + // Unicode 4.0 additions + Script_Limbu, + Script_TaiLe, + Script_LinearB, + Script_Ugaritic, + Script_Shavian, + Script_Osmanya, + Script_Cypriot, + Script_Braille, + + // Unicode 4.1 additions + Script_Buginese, + Script_NewTaiLue, + Script_Glagolitic, + Script_Tifinagh, + Script_SylotiNagri, + Script_OldPersian, + Script_Kharoshthi, + + // Unicode 5.0 additions + Script_Balinese, + Script_Cuneiform, + Script_Phoenician, + Script_PhagsPa, + Script_Nko, + + // Unicode 5.1 additions + Script_Sundanese, + Script_Lepcha, + Script_OlChiki, + Script_Vai, + Script_Saurashtra, + Script_KayahLi, + Script_Rejang, + Script_Lycian, + Script_Carian, + Script_Lydian, + Script_Cham, + + // Unicode 5.2 additions + Script_TaiTham, + Script_TaiViet, + Script_Avestan, + Script_EgyptianHieroglyphs, + Script_Samaritan, + Script_Lisu, + Script_Bamum, + Script_Javanese, + Script_MeeteiMayek, + Script_ImperialAramaic, + Script_OldSouthArabian, + Script_InscriptionalParthian, + Script_InscriptionalPahlavi, + Script_OldTurkic, + Script_Kaithi, + + // Unicode 6.0 additions + Script_Batak, + Script_Brahmi, + Script_Mandaic, + + // Unicode 6.1 additions + Script_Chakma, + Script_MeroiticCursive, + Script_MeroiticHieroglyphs, + Script_Miao, + Script_Sharada, + Script_SoraSompeng, + Script_Takri, + + ScriptCount + }; + enum Direction { DirL, DirR, DirEN, DirES, DirET, DirAN, DirCS, DirB, DirS, DirWS, DirON, @@ -231,6 +355,8 @@ public: inline QChar toTitleCase() const { return QChar::toTitleCase(ucs); } inline QChar toCaseFolded() const { return QChar::toCaseFolded(ucs); } + inline Script script() const { return QChar::script(ucs); } + inline UnicodeVersion unicodeVersion() const { return QChar::unicodeVersion(ucs); } #if QT_DEPRECATED_SINCE(5, 0) @@ -316,6 +442,8 @@ public: static uint QT_FASTCALL toTitleCase(uint ucs4); static uint QT_FASTCALL toCaseFolded(uint ucs4); + static Script QT_FASTCALL script(uint ucs4); + static UnicodeVersion QT_FASTCALL unicodeVersion(uint ucs4); static UnicodeVersion QT_FASTCALL currentUnicodeVersion(); diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index 47cca0d280..b679f0f990 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -884,6 +884,8 @@ public: QChar::Decomposition decompositionTag() const { return QChar(*this).decompositionTag(); } uchar combiningClass() const { return QChar(*this).combiningClass(); } + inline QChar::Script script() const { return QChar(*this).script(); } + QChar::UnicodeVersion unicodeVersion() const { return QChar(*this).unicodeVersion(); } inline uchar cell() const { return QChar(*this).cell(); } diff --git a/src/corelib/tools/qunicodetables.cpp b/src/corelib/tools/qunicodetables.cpp index 60754968ac..927fb7462b 100644 --- a/src/corelib/tools/qunicodetables.cpp +++ b/src/corelib/tools/qunicodetables.cpp @@ -70,109 +70,41 @@ static const unsigned short uc_property_trie[] = { 10224, 10256, 10288, 10320, 10352, 10384, 10416, 10448, 10480, 10480, 10512, 10544, 10544, 10576, 10608, 10640, 10672, 10704, 10736, 10704, 10768, 10800, 10832, 10864, - 10896, 10704, 10928, 10960, 10992, 10704, 10704, 11024, - 11056, 10704, 10704, 10704, 10704, 10704, 10704, 10704, - 10704, 10704, 10704, 10704, 10704, 10704, 10704, 10704, - 10704, 10704, 10704, 11088, 11120, 11152, 11152, 11184, - 11216, 11248, 11280, 11312, 11344, 11376, 11408, 11440, - 11472, 10704, 11504, 11536, 10704, 11568, 11600, 11632, - 11664, 11696, 11728, 11760, 11792, 11824, 11856, 11888, - 11920, 11952, 11984, 12016, 12048, 12080, 9872, 9872, - 12112, 12144, 12176, 12208, 12240, 12272, 12304, 12336, - 12368, 12400, 12432, 12464, 9872, 9872, 12496, 12528, - 12560, 12592, 12624, 12656, 12688, 12720, 12752, 12784, - 6512, 6512, 6512, 6512, 12816, 6512, 6512, 12848, - 12880, 12912, 12944, 12976, 13008, 13040, 13072, 13104, - - 13136, 13168, 13200, 13232, 13264, 13296, 13328, 13360, - 13392, 13424, 13456, 13488, 13520, 13552, 13584, 13616, - 13648, 13680, 13712, 13744, 13776, 13808, 13840, 13872, - 13904, 13936, 13968, 14000, 14032, 14064, 14096, 14128, - 14160, 14192, 14224, 14256, 14288, 14320, 14352, 14384, - 14160, 14160, 14160, 14160, 14416, 14448, 14480, 14512, - 14544, 14576, 14160, 14608, 14640, 14672, 14704, 14736, - 14768, 14800, 14832, 14864, 14896, 14928, 14960, 14992, - 15024, 15024, 15024, 15024, 15024, 15024, 15024, 15024, - 15056, 15056, 15056, 15056, 15088, 15120, 15152, 15184, - 15056, 15216, 15056, 15248, 15280, 15312, 15344, 15376, - 15408, 15440, 15472, 9872, 9872, 9872, 9872, 9872, - 15504, 15536, 15568, 15600, 15632, 15632, 15632, 15664, - 15696, 15728, 15760, 15792, 15824, 15856, 15856, 15888, - 15920, 15952, 9872, 9872, 15984, 16016, 16016, 16048, - 16016, 16016, 16016, 16016, 16016, 16016, 16080, 16112, - - 16144, 16176, 16208, 16240, 16272, 16304, 16336, 16368, - 16400, 16432, 16464, 16464, 16496, 16528, 16560, 16592, - 16624, 16656, 16688, 16720, 16656, 16752, 16784, 16816, - 16848, 16848, 16880, 16912, 16944, 16944, 16976, 17008, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17072, 17104, 17104, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, + 10896, 10704, 10928, 10960, 10992, 11024, 11024, 11056, + 11088, 11120, 11120, 11120, 11120, 11120, 11120, 11120, + 11120, 11120, 11120, 11120, 11120, 11120, 11120, 11120, + 11120, 11120, 11120, 11152, 11184, 11216, 11216, 11248, + 11280, 11312, 11344, 11376, 11408, 11440, 11472, 11504, + 11536, 11568, 11600, 11632, 11568, 11664, 11696, 11728, + 11760, 11792, 11824, 11856, 11888, 11920, 11952, 11984, + 12016, 12048, 12080, 12112, 12144, 12176, 9872, 9872, + 12208, 12240, 12272, 12304, 12336, 12368, 12400, 12432, + 12464, 12496, 12528, 12560, 9872, 9872, 12592, 12624, + 12656, 12688, 12720, 12752, 12784, 12816, 12848, 12880, + 6512, 6512, 6512, 6512, 12912, 6512, 6512, 12944, + 12976, 13008, 13040, 13072, 13104, 13136, 13168, 13200, + + 13232, 13264, 13296, 13328, 13360, 13392, 13424, 13456, + 13488, 13520, 13552, 13584, 13616, 13648, 13680, 13712, + 13744, 13776, 13808, 13840, 13872, 13904, 13936, 13968, + 14000, 14032, 14064, 14096, 14128, 14160, 14192, 14224, + 14256, 14288, 14320, 14352, 14384, 14416, 14448, 14480, + 14256, 14256, 14256, 14256, 14512, 14544, 14576, 14608, + 14640, 14672, 14256, 14704, 14736, 14768, 14800, 14832, + 14864, 14896, 14928, 14960, 14992, 15024, 15056, 15088, + 15120, 15120, 15120, 15120, 15120, 15120, 15120, 15120, + 15152, 15152, 15152, 15152, 15184, 15216, 15248, 15280, + 15152, 15312, 15152, 15344, 15376, 15408, 15440, 15472, + 15504, 15536, 15568, 9872, 9872, 9872, 9872, 9872, + 15600, 15632, 15664, 15696, 15728, 15728, 15728, 15760, + 15792, 15824, 15856, 15888, 15920, 15952, 15952, 15984, + 16016, 16048, 9872, 9872, 16080, 16112, 16112, 16144, + 16112, 16112, 16112, 16112, 16112, 16112, 16176, 16208, + + 16240, 16272, 16304, 16336, 16368, 16400, 16432, 16464, + 16496, 16528, 16560, 16560, 16592, 16624, 16656, 16688, + 16720, 16752, 16784, 16816, 16752, 16848, 16880, 16912, + 16944, 16944, 16976, 17008, 17040, 17040, 17072, 17104, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, @@ -199,674 +131,742 @@ static const unsigned short uc_property_trie[] = { 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17168, 17200, 17232, - - 17264, 17296, 17296, 17296, 17296, 17296, 17296, 17296, - 17296, 17296, 17296, 17296, 17296, 17296, 17296, 17296, - 17296, 17296, 17296, 17296, 17296, 17296, 17296, 17296, - 17296, 17296, 17296, 17296, 17296, 17296, 17296, 17296, - 17296, 17296, 17296, 17296, 17328, 17360, 17392, 17424, - 12368, 12368, 12368, 12368, 12368, 12368, 12368, 12368, - 17456, 17488, 17520, 17552, 17584, 11600, 11600, 17616, - 17648, 17680, 17712, 17744, 17776, 17808, 9872, 17840, - 17872, 17904, 17936, 17968, 18000, 18032, 18064, 18096, - 18128, 18160, 18192, 18224, 18256, 18288, 18320, 9872, - 12368, 18352, 18384, 18416, 11952, 18448, 18480, 18512, - 18544, 18576, 9872, 9872, 9872, 9872, 11600, 18608, - 18640, 18672, 18704, 18736, 18768, 18800, 18832, 18640, - 18672, 18704, 18736, 18768, 18800, 18832, 18640, 18672, - 18704, 18736, 18768, 18800, 18832, 18640, 18672, 18704, - 18736, 18768, 18800, 18832, 18640, 18672, 18704, 18736, - - 18768, 18800, 18832, 18640, 18672, 18704, 18736, 18768, - 18800, 18832, 18640, 18672, 18704, 18736, 18768, 18800, - 18832, 18640, 18672, 18704, 18736, 18768, 18800, 18832, - 18640, 18672, 18704, 18736, 18768, 18800, 18832, 18640, - 18672, 18704, 18736, 18768, 18800, 18832, 18640, 18672, - 18704, 18736, 18768, 18800, 18832, 18640, 18672, 18704, - 18736, 18768, 18800, 18832, 18640, 18672, 18704, 18736, - 18768, 18800, 18832, 18640, 18672, 18704, 18736, 18768, - 18800, 18832, 18640, 18672, 18704, 18736, 18768, 18800, - 18832, 18640, 18672, 18704, 18736, 18768, 18800, 18832, - 18640, 18672, 18704, 18736, 18768, 18800, 18832, 18640, - 18672, 18704, 18736, 18768, 18800, 18832, 18640, 18672, - 18704, 18736, 18768, 18800, 18832, 18640, 18672, 18704, - 18736, 18768, 18800, 18832, 18640, 18672, 18704, 18736, - 18768, 18800, 18832, 18640, 18672, 18704, 18736, 18768, - 18800, 18832, 18640, 18672, 18704, 18736, 18768, 18800, - - 18832, 18640, 18672, 18704, 18736, 18768, 18800, 18832, - 18640, 18672, 18704, 18736, 18768, 18800, 18832, 18640, - 18672, 18704, 18736, 18768, 18800, 18832, 18640, 18672, - 18704, 18736, 18768, 18800, 18832, 18640, 18672, 18704, - 18736, 18768, 18800, 18832, 18640, 18672, 18704, 18736, - 18768, 18800, 18832, 18640, 18672, 18704, 18736, 18768, - 18800, 18832, 18640, 18672, 18704, 18736, 18768, 18800, - 18832, 18640, 18672, 18704, 18736, 18768, 18800, 18832, - 18640, 18672, 18704, 18736, 18768, 18800, 18832, 18640, - 18672, 18704, 18736, 18768, 18800, 18832, 18640, 18672, - 18704, 18736, 18768, 18800, 18832, 18640, 18672, 18704, - 18736, 18768, 18800, 18832, 18640, 18672, 18704, 18736, - 18768, 18800, 18832, 18640, 18672, 18704, 18736, 18768, - 18800, 18832, 18640, 18672, 18704, 18736, 18768, 18800, - 18832, 18640, 18672, 18704, 18736, 18768, 18800, 18832, - 18640, 18672, 18704, 18736, 18768, 18800, 18832, 18640, - - 18672, 18704, 18736, 18768, 18800, 18832, 18640, 18672, - 18704, 18736, 18768, 18800, 18832, 18640, 18672, 18704, - 18736, 18768, 18800, 18832, 18640, 18672, 18704, 18736, - 18768, 18800, 18832, 18640, 18672, 18704, 18736, 18768, - 18800, 18832, 18640, 18672, 18704, 18736, 18768, 18800, - 18832, 18640, 18672, 18704, 18736, 18768, 18800, 18832, - 18640, 18672, 18704, 18736, 18768, 18800, 18832, 18640, - 18672, 18704, 18736, 18768, 18800, 18864, 18896, 18928, - 18960, 18960, 18960, 18960, 18960, 18960, 18960, 18960, - 18960, 18960, 18960, 18960, 18960, 18960, 18960, 18960, - 18960, 18960, 18960, 18960, 18960, 18960, 18960, 18960, - 18960, 18960, 18960, 18960, 18960, 18960, 18960, 18960, - 18960, 18960, 18960, 18960, 18960, 18960, 18960, 18960, - 18960, 18960, 18960, 18960, 18960, 18960, 18960, 18960, - 18960, 18960, 18960, 18960, 18960, 18960, 18960, 18960, - 18960, 18960, 18960, 18960, 18960, 18960, 18960, 18960, - - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 19024, 19056, 19088, 19120, 19120, 19152, 17232, - 19184, 19216, 19248, 19280, 19280, 19312, 19344, 19280, - 19280, 19280, 19280, 19280, 19280, 19280, 19280, 19280, - 19280, 19376, 19408, 19280, 19440, 19280, 19472, 19504, - 19536, 19568, 19600, 19632, 19280, 19280, 19280, 19664, - 19696, 19728, 19760, 19792, 19824, 19856, 19888, 19920, - - 19952, 19984, 20016, 9872, 20048, 20048, 20048, 20080, - 20112, 20144, 20176, 20208, 20240, 9872, 20272, 20304, - 9872, 9872, 9872, 9872, 20336, 12368, 20368, 9872, - 20400, 20432, 20464, 9872, 20496, 15760, 20528, 9872, - 20560, 20592, 20624, 20048, 20656, 20688, 9872, 9872, + 17136, 17136, 17136, 17136, 17136, 17168, 17200, 17200, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17264, 17296, 17328, + + 17360, 17392, 17392, 17392, 17392, 17392, 17392, 17392, + 17392, 17392, 17392, 17392, 17392, 17392, 17392, 17392, + 17392, 17392, 17392, 17392, 17392, 17392, 17392, 17392, + 17392, 17392, 17392, 17392, 17392, 17392, 17392, 17392, + 17392, 17392, 17392, 17392, 17424, 17456, 17488, 17520, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17584, 17616, 17648, 17680, 17712, 17744, 17744, 17776, + 17808, 17840, 17872, 17904, 17936, 17968, 9872, 18000, + 18032, 18064, 18096, 18128, 18160, 18192, 18224, 18256, + 18288, 18320, 18352, 18384, 18416, 18448, 18480, 9872, + 18512, 18544, 18576, 18608, 18640, 18672, 18704, 18736, + 18768, 18800, 9872, 9872, 9872, 9872, 18832, 18864, + 18896, 18928, 18960, 18992, 19024, 19056, 19088, 18896, + 18928, 18960, 18992, 19024, 19056, 19088, 18896, 18928, + 18960, 18992, 19024, 19056, 19088, 18896, 18928, 18960, + 18992, 19024, 19056, 19088, 18896, 18928, 18960, 18992, + + 19024, 19056, 19088, 18896, 18928, 18960, 18992, 19024, + 19056, 19088, 18896, 18928, 18960, 18992, 19024, 19056, + 19088, 18896, 18928, 18960, 18992, 19024, 19056, 19088, + 18896, 18928, 18960, 18992, 19024, 19056, 19088, 18896, + 18928, 18960, 18992, 19024, 19056, 19088, 18896, 18928, + 18960, 18992, 19024, 19056, 19088, 18896, 18928, 18960, + 18992, 19024, 19056, 19088, 18896, 18928, 18960, 18992, + 19024, 19056, 19088, 18896, 18928, 18960, 18992, 19024, + 19056, 19088, 18896, 18928, 18960, 18992, 19024, 19056, + 19088, 18896, 18928, 18960, 18992, 19024, 19056, 19088, + 18896, 18928, 18960, 18992, 19024, 19056, 19088, 18896, + 18928, 18960, 18992, 19024, 19056, 19088, 18896, 18928, + 18960, 18992, 19024, 19056, 19088, 18896, 18928, 18960, + 18992, 19024, 19056, 19088, 18896, 18928, 18960, 18992, + 19024, 19056, 19088, 18896, 18928, 18960, 18992, 19024, + 19056, 19088, 18896, 18928, 18960, 18992, 19024, 19056, + + 19088, 18896, 18928, 18960, 18992, 19024, 19056, 19088, + 18896, 18928, 18960, 18992, 19024, 19056, 19088, 18896, + 18928, 18960, 18992, 19024, 19056, 19088, 18896, 18928, + 18960, 18992, 19024, 19056, 19088, 18896, 18928, 18960, + 18992, 19024, 19056, 19088, 18896, 18928, 18960, 18992, + 19024, 19056, 19088, 18896, 18928, 18960, 18992, 19024, + 19056, 19088, 18896, 18928, 18960, 18992, 19024, 19056, + 19088, 18896, 18928, 18960, 18992, 19024, 19056, 19088, + 18896, 18928, 18960, 18992, 19024, 19056, 19088, 18896, + 18928, 18960, 18992, 19024, 19056, 19088, 18896, 18928, + 18960, 18992, 19024, 19056, 19088, 18896, 18928, 18960, + 18992, 19024, 19056, 19088, 18896, 18928, 18960, 18992, + 19024, 19056, 19088, 18896, 18928, 18960, 18992, 19024, + 19056, 19088, 18896, 18928, 18960, 18992, 19024, 19056, + 19088, 18896, 18928, 18960, 18992, 19024, 19056, 19088, + 18896, 18928, 18960, 18992, 19024, 19056, 19088, 18896, + + 18928, 18960, 18992, 19024, 19056, 19088, 18896, 18928, + 18960, 18992, 19024, 19056, 19088, 18896, 18928, 18960, + 18992, 19024, 19056, 19088, 18896, 18928, 18960, 18992, + 19024, 19056, 19088, 18896, 18928, 18960, 18992, 19024, + 19056, 19088, 18896, 18928, 18960, 18992, 19024, 19056, + 19088, 18896, 18928, 18960, 18992, 19024, 19056, 19088, + 18896, 18928, 18960, 18992, 19024, 19056, 19088, 18896, + 18928, 18960, 18992, 19024, 19056, 19120, 19152, 19184, + 19216, 19216, 19216, 19216, 19216, 19216, 19216, 19216, + 19216, 19216, 19216, 19216, 19216, 19216, 19216, 19216, + 19216, 19216, 19216, 19216, 19216, 19216, 19216, 19216, + 19216, 19216, 19216, 19216, 19216, 19216, 19216, 19216, + 19216, 19216, 19216, 19216, 19216, 19216, 19216, 19216, + 19216, 19216, 19216, 19216, 19216, 19216, 19216, 19216, + 19216, 19216, 19216, 19216, 19216, 19216, 19216, 19216, + 19216, 19216, 19216, 19216, 19216, 19216, 19216, 19216, + + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 19280, 19312, 19344, 19376, 19376, 19408, 17328, + 19440, 19472, 19504, 19536, 19536, 19568, 19600, 19536, + 19536, 19536, 19536, 19536, 19536, 19536, 19536, 19536, + 19536, 19632, 19664, 19536, 19696, 19536, 19728, 19760, + 19792, 19824, 19856, 19888, 19536, 19536, 19536, 19920, + 19952, 19984, 20016, 20048, 20080, 20112, 20144, 20176, + + 20208, 20240, 20272, 9872, 20304, 20304, 20304, 20336, + 20368, 20400, 20432, 20464, 20496, 9872, 20528, 20560, + 9872, 9872, 9872, 9872, 20592, 20624, 20656, 9872, + 20688, 20720, 20752, 9872, 20784, 20816, 20848, 9872, + 20880, 20912, 20944, 20976, 21008, 21040, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, - 20720, 20752, 20784, 8368, 8368, 8368, 8368, 8368, - 20816, 20848, 8368, 8368, 20880, 20912, 8368, 8368, - 20944, 20976, 21008, 21040, 8368, 8368, 8368, 8368, - 21072, 21104, 21136, 21168, 8368, 8368, 8368, 8368, - 21072, 21072, 21200, 8368, 8368, 8368, 8368, 8368, + 21072, 21104, 21136, 8368, 8368, 8368, 8368, 8368, + 21168, 21200, 8368, 8368, 21232, 21264, 8368, 8368, + 21296, 21328, 21360, 21392, 8368, 8368, 8368, 8368, + 21424, 21456, 21488, 21520, 8368, 8368, 8368, 8368, + 21552, 21552, 21584, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, - 8368, 8368, 8368, 21232, 8368, 8368, 8368, 8368, + 8368, 8368, 8368, 21616, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, // 0x11000 - 0x110000 - 21264, 21520, 21776, 21776, 21776, 21776, 22032, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 22288, 22288, 22288, 22544, 22800, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 23056, 23056, 23312, 23568, 23824, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 24080, 24080, 24336, 21776, 21776, 21776, 21776, 24592, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 24848, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 25104, 25360, 25616, 25872, 26128, 26384, 26640, 26896, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 27152, 27152, 27152, 27152, 27152, 27152, 27408, 27152, - 27664, 27920, 28176, 28432, 28688, 28944, 29200, 29456, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 30224, 30480, - 30480, 30480, 30480, 30480, 30480, 30480, 30480, 30480, - 30480, 30480, 30480, 30480, 30480, 30480, 30480, 30736, - 30992, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 29968, 29968, 31504, 31248, 31248, 31248, 31248, 31760, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31760, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 32016, 32272, 32528, 32528, 32528, 32528, 32528, 32528, - 32528, 32528, 32528, 32528, 32528, 32528, 32528, 32528, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 33040, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 33040, + 21648, 21904, 22160, 22160, 22160, 22160, 22416, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22672, 22672, 22672, 22928, 23184, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 23440, 23440, 23696, 23952, 24208, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 24464, 24464, 24720, 22160, 22160, 22160, 22160, 24976, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 25232, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 25488, 25744, 26000, 26256, 26512, 26768, 27024, 27280, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 27536, 27536, 27536, 27536, 27536, 27536, 27792, 27536, + 28048, 28304, 28560, 28816, 29072, 29328, 29584, 29840, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30608, 30864, + 30864, 30864, 30864, 30864, 30864, 30864, 30864, 30864, + 30864, 30864, 30864, 30864, 30864, 30864, 30864, 31120, + 31376, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 30352, 30352, 31888, 31632, 31632, 31632, 31632, 32144, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 32144, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 32400, 32656, 32912, 32912, 32912, 32912, 32912, 32912, + 32912, 32912, 32912, 32912, 32912, 32912, 32912, 32912, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33424, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33424, 0, 0, 0, 0, 0, 0, 0, 0, @@ -979,575 +979,555 @@ static const unsigned short uc_property_trie[] = { 142, 142, 142, 142, 142, 142, 142, 142, 142, 143, 143, 144, 144, 144, 144, 144, - 142, 142, 42, 42, 42, 42, 143, 143, - 145, 143, 143, 143, 145, 143, 143, 143, + 145, 145, 42, 42, 42, 42, 143, 143, + 146, 143, 143, 143, 146, 143, 143, 143, 144, 144, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 146, + 42, 42, 42, 42, 42, 42, 42, 147, 142, 142, 142, 142, 142, 42, 42, 42, - 42, 42, 147, 147, 148, 147, 149, 150, - 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, - - 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 152, 153, 153, - 153, 153, 152, 154, 153, 153, 153, 153, - - 153, 155, 155, 153, 153, 153, 153, 155, - 155, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 156, 156, 156, 156, - 156, 153, 153, 153, 153, 151, 151, 151, - - 151, 151, 151, 151, 151, 157, 158, 159, - 159, 159, 158, 158, 158, 159, 159, 160, - 161, 161, 161, 162, 162, 162, 162, 161, - 163, 164, 164, 165, 166, 167, 167, 168, - - 169, 169, 170, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 171, - 172, 173, 172, 173, 143, 174, 172, 173, - 175, 175, 176, 177, 177, 177, 34, 175, - - 175, 175, 175, 175, 174, 42, 178, 61, - 179, 179, 179, 175, 180, 175, 181, 181, - 182, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, - - 183, 183, 175, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 184, 185, 185, 185, - 186, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, - - 187, 187, 188, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 189, 190, 190, 191, - 192, 193, 194, 194, 194, 195, 196, 197, - 198, 199, 200, 201, 200, 201, 200, 201, - - 200, 201, 67, 68, 67, 68, 67, 68, - 67, 68, 67, 68, 67, 68, 67, 68, - 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 209, 210, 212, 213, 213, 213, + 42, 42, 148, 148, 149, 150, 151, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 154, 155, 155, + 155, 155, 154, 156, 155, 155, 155, 155, + + 155, 157, 157, 155, 155, 155, 155, 157, + 157, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 158, 158, 158, 158, + 158, 155, 155, 155, 155, 153, 153, 153, + + 153, 153, 153, 153, 153, 159, 160, 161, + 161, 161, 160, 160, 160, 161, 161, 162, + 163, 163, 163, 164, 164, 164, 164, 163, + 165, 166, 166, 167, 168, 169, 169, 170, + + 171, 171, 172, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, + 174, 175, 174, 175, 143, 176, 174, 175, + 177, 177, 178, 179, 179, 179, 34, 177, + + 177, 177, 177, 177, 176, 42, 180, 61, + 181, 181, 181, 177, 182, 177, 183, 183, + 184, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, + + 185, 185, 177, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 186, 187, 187, 187, + 188, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + + 189, 189, 190, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 191, 192, 192, 193, + 194, 195, 196, 196, 196, 197, 198, 199, + 200, 201, 202, 203, 202, 203, 202, 203, + + 202, 203, 204, 205, 204, 205, 204, 205, + 204, 205, 204, 205, 204, 205, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 213, 214, 216, 217, 217, 217, - 214, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 214, 215, 215, - 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, - - 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, - 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, - - 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, 218, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 218, 219, 219, + 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, + + 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, + 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, + + 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, + 222, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 222, 223, 223, + + 224, 225, 224, 225, 224, 225, 224, 225, + 224, 225, 224, 225, 224, 225, 224, 225, + 224, 225, 224, 225, 224, 225, 224, 225, + 224, 225, 224, 225, 224, 225, 224, 225, + + 224, 225, 226, 227, 227, 153, 153, 228, + 229, 229, 230, 231, 232, 233, 232, 233, + 224, 225, 224, 225, 224, 225, 224, 225, + 224, 225, 224, 225, 224, 225, 224, 225, + + 234, 224, 225, 224, 225, 230, 231, 224, + 225, 230, 231, 224, 225, 230, 231, 235, + 224, 225, 224, 225, 224, 225, 224, 225, + 224, 225, 224, 225, 224, 225, 224, 225, + + 224, 225, 224, 225, 224, 225, 224, 225, + 224, 225, 224, 225, 232, 233, 224, 225, + 224, 225, 224, 225, 224, 225, 236, 237, + 224, 225, 238, 239, 238, 239, 238, 239, + + 230, 231, 230, 231, 230, 231, 230, 231, + 230, 231, 230, 231, 230, 231, 230, 231, + 238, 239, 238, 239, 240, 241, 240, 241, + 240, 241, 240, 241, 240, 241, 240, 241, + + 240, 241, 240, 241, 242, 243, 244, 245, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, + + 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 177, + 177, 247, 248, 248, 249, 250, 249, 248, + + 177, 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, 251, 252, + 177, 253, 254, 177, 177, 177, 177, 255, + 256, 257, 258, 258, 258, 258, 257, 258, + 258, 258, 259, 257, 258, 258, 258, 258, + + 258, 258, 260, 257, 257, 257, 257, 257, + 258, 258, 257, 258, 258, 259, 261, 258, + 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, + + 278, 279, 280, 278, 258, 260, 281, 282, + 256, 256, 256, 256, 256, 256, 256, 256, + 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, + + 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 256, 256, 256, 256, 256, + 283, 283, 283, 284, 285, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + + 286, 286, 286, 286, 287, 288, 289, 289, + 290, 291, 291, 292, 19, 293, 294, 294, + 295, 295, 295, 295, 295, 295, 296, 296, + 297, 298, 299, 300, 288, 288, 301, 302, + + 303, 304, 305, 305, 305, 305, 306, 305, + 306, 305, 306, 306, 306, 306, 306, 305, + 305, 305, 305, 306, 306, 306, 306, 306, + 306, 306, 306, 307, 307, 307, 307, 307, + + 308, 306, 306, 306, 306, 306, 306, 306, + 305, 306, 306, 309, 310, 311, 312, 313, + 314, 315, 316, 160, 160, 161, 317, 295, + 295, 318, 318, 318, 319, 318, 318, 320, + + 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 335, + 336, 305, 305, 305, 304, 305, 305, 305, + 306, 306, 306, 306, 306, 306, 306, 306, + + 306, 306, 306, 306, 306, 306, 306, 306, + 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 306, 306, 306, 306, 306, 306, + + 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, + 337, 337, 306, 306, 306, 306, 306, 337, + + 305, 306, 306, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 306, 305, 306, 338, + 306, 306, 305, 305, 339, 305, 340, 340, + 340, 340, 340, 340, 340, 341, 342, 340, + + 340, 340, 340, 343, 340, 344, 344, 340, + 340, 342, 343, 340, 340, 343, 345, 345, + 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 337, 337, 337, 356, 356, 357, + + 358, 358, 358, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 288, 360, + 361, 362, 363, 363, 363, 361, 361, 361, + 361, 361, 363, 363, 363, 363, 361, 363, + + 363, 363, 363, 363, 363, 363, 363, 363, + 361, 363, 361, 363, 361, 364, 364, 365, + 366, 367, 366, 366, 367, 366, 366, 367, + 367, 367, 366, 367, 367, 366, 367, 366, + + 366, 366, 367, 366, 367, 366, 367, 366, + 367, 366, 366, 288, 288, 365, 364, 364, + 368, 368, 368, 368, 368, 368, 368, 368, + 368, 369, 369, 369, 368, 368, 368, 368, - 220, 221, 220, 221, 220, 221, 220, 221, - 220, 221, 220, 221, 220, 221, 220, 221, - 220, 221, 220, 221, 220, 221, 220, 221, - 220, 221, 220, 221, 220, 221, 220, 221, - - 220, 221, 222, 223, 223, 151, 151, 224, - 225, 225, 226, 227, 228, 229, 228, 229, - 220, 221, 220, 221, 220, 221, 220, 221, - 220, 221, 220, 221, 220, 221, 220, 221, - - 230, 220, 221, 220, 221, 226, 227, 220, - 221, 226, 227, 220, 221, 226, 227, 231, - 220, 221, 220, 221, 220, 221, 220, 221, - 220, 221, 220, 221, 220, 221, 220, 221, - - 220, 221, 220, 221, 220, 221, 220, 221, - 220, 221, 220, 221, 228, 229, 220, 221, - 220, 221, 220, 221, 220, 221, 232, 233, - 220, 221, 234, 235, 234, 235, 234, 235, - - 226, 227, 226, 227, 226, 227, 226, 227, - 226, 227, 226, 227, 226, 227, 226, 227, - 234, 235, 234, 235, 236, 237, 236, 237, - 236, 237, 236, 237, 236, 237, 236, 237, - - 236, 237, 236, 237, 238, 239, 240, 241, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 175, - 175, 243, 244, 244, 245, 246, 245, 244, - - 175, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, - - 247, 247, 247, 247, 247, 247, 247, 248, - 175, 249, 250, 175, 175, 175, 175, 251, - 252, 253, 254, 254, 254, 254, 253, 254, - 254, 254, 255, 253, 254, 254, 254, 254, - - 254, 254, 256, 253, 253, 253, 253, 253, - 254, 254, 253, 254, 254, 255, 257, 254, - 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, - - 274, 275, 276, 274, 254, 256, 277, 278, - 252, 252, 252, 252, 252, 252, 252, 252, - 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, - - 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 252, 252, 252, 252, 252, - 279, 279, 279, 280, 281, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - - 282, 282, 282, 282, 283, 284, 285, 285, - 286, 287, 287, 288, 19, 289, 290, 290, - 291, 291, 291, 291, 291, 291, 292, 292, - 293, 294, 295, 296, 284, 284, 297, 298, - - 299, 300, 301, 301, 301, 301, 302, 301, - 302, 301, 302, 302, 302, 302, 302, 301, - 301, 301, 301, 302, 302, 302, 302, 302, - 302, 302, 302, 303, 303, 303, 303, 303, - - 304, 302, 302, 302, 302, 302, 302, 302, - 301, 302, 302, 305, 306, 307, 308, 309, - 310, 311, 312, 158, 158, 159, 313, 291, - 291, 314, 314, 314, 315, 314, 314, 316, - - 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 331, - 332, 301, 301, 301, 300, 301, 301, 301, - 302, 302, 302, 302, 302, 302, 302, 302, - - 302, 302, 302, 302, 302, 302, 302, 302, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 302, 302, 302, 302, 302, 302, - - 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, - 333, 333, 302, 302, 302, 302, 302, 333, - - 301, 302, 302, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 302, 301, 302, 334, - 302, 302, 301, 301, 335, 301, 336, 336, - 336, 336, 336, 336, 336, 337, 338, 336, - - 336, 336, 336, 339, 336, 340, 340, 336, - 336, 338, 339, 336, 336, 339, 341, 341, - 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 333, 333, 333, 352, 352, 353, - - 354, 354, 354, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 355, 355, 284, 356, - 357, 358, 359, 359, 359, 357, 357, 357, - 357, 357, 359, 359, 359, 359, 357, 359, - - 359, 359, 359, 359, 359, 359, 359, 359, - 357, 359, 357, 359, 357, 360, 360, 361, - 362, 363, 362, 362, 363, 362, 362, 363, - 363, 363, 362, 363, 363, 362, 363, 362, - - 362, 362, 363, 362, 363, 362, 363, 362, - 363, 362, 362, 284, 284, 361, 360, 360, - 364, 364, 364, 364, 364, 364, 364, 364, - 364, 365, 365, 365, 364, 364, 364, 364, - - 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 365, 365, 364, 303, 303, - 303, 366, 303, 366, 366, 303, 303, 303, - 366, 366, 303, 303, 303, 303, 303, 303, - - 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, - - 367, 367, 367, 367, 367, 367, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 369, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - - 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, - - 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 381, 381, 381, 381, 381, - 381, 381, 382, 381, 383, 383, 384, 385, - 386, 387, 388, 252, 252, 252, 252, 252, - - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 390, 390, - 390, 390, 391, 390, 390, 390, 390, 390, - - 390, 390, 390, 390, 391, 390, 390, 390, - 391, 390, 390, 390, 390, 390, 252, 252, - 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 392, 392, 252, - - 393, 394, 394, 394, 394, 394, 393, 394, - 394, 393, 394, 394, 394, 394, 394, 393, - 394, 394, 394, 394, 393, 394, 395, 395, - 395, 396, 396, 396, 252, 252, 397, 252, - - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - - 398, 284, 398, 398, 398, 398, 398, 398, - 398, 398, 399, 399, 399, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - - 284, 284, 284, 284, 400, 400, 401, 400, - 400, 401, 400, 400, 400, 401, 401, 401, - 402, 403, 404, 400, 400, 400, 401, 400, - 400, 401, 401, 400, 400, 400, 400, 284, - - 405, 406, 406, 407, 408, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, - - 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 410, 411, 412, 409, 407, 407, - - 407, 406, 406, 406, 406, 406, 406, 406, - 406, 407, 407, 407, 407, 413, 414, 411, - 409, 151, 153, 415, 415, 405, 410, 410, - 409, 409, 409, 409, 409, 409, 409, 409, - - 409, 409, 406, 406, 416, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 430, 430, 430, 430, - 175, 431, 431, 432, 432, 433, 432, 432, - - 175, 434, 435, 435, 175, 436, 436, 436, - 436, 436, 436, 436, 436, 175, 175, 436, - 436, 175, 175, 436, 436, 436, 436, 436, - 436, 436, 436, 436, 436, 436, 436, 436, - - 436, 436, 436, 436, 436, 436, 436, 436, - 436, 175, 436, 436, 436, 436, 436, 436, - 436, 175, 436, 175, 175, 175, 436, 436, - 436, 436, 175, 175, 437, 438, 439, 435, - - 435, 434, 434, 434, 434, 175, 175, 435, - 435, 175, 175, 435, 435, 440, 441, 175, - 175, 175, 175, 175, 175, 175, 175, 439, - 175, 175, 175, 175, 436, 436, 175, 436, - - 436, 436, 434, 434, 175, 175, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, - 436, 436, 452, 452, 453, 453, 453, 453, - 453, 454, 455, 456, 175, 175, 175, 175, - - 175, 457, 458, 459, 175, 460, 460, 460, - 460, 460, 460, 175, 175, 175, 175, 460, - 460, 175, 175, 460, 460, 460, 460, 460, - 460, 460, 460, 460, 460, 460, 460, 460, - - 460, 460, 460, 460, 460, 460, 460, 460, - 460, 175, 460, 460, 460, 460, 460, 460, - 460, 175, 460, 460, 175, 460, 460, 175, - 460, 460, 175, 175, 461, 175, 462, 462, - - 462, 458, 458, 175, 175, 175, 175, 458, - 458, 175, 175, 458, 458, 463, 175, 175, - 175, 464, 175, 175, 175, 175, 175, 175, - 175, 460, 460, 460, 460, 175, 460, 175, - - 175, 175, 175, 175, 175, 175, 465, 466, - 467, 468, 469, 470, 471, 472, 473, 474, - 458, 458, 460, 460, 460, 464, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 475, 475, 476, 175, 477, 477, 477, - 477, 477, 477, 477, 478, 477, 175, 477, - 477, 477, 175, 477, 477, 477, 477, 477, - 477, 477, 477, 477, 477, 477, 477, 477, - - 477, 477, 477, 477, 477, 477, 477, 477, - 477, 175, 477, 477, 477, 477, 477, 477, - 477, 175, 477, 477, 175, 477, 477, 477, - 477, 477, 175, 175, 479, 477, 476, 476, - - 476, 475, 475, 475, 475, 475, 175, 475, - 475, 476, 175, 476, 476, 480, 175, 175, - 477, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 477, 478, 481, 481, 175, 175, 482, 483, - 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 494, 495, 495, 175, 496, 496, 496, - 496, 496, 496, 496, 496, 175, 175, 496, - 496, 175, 175, 496, 496, 496, 496, 496, - 496, 496, 496, 496, 496, 496, 496, 496, - - 496, 496, 496, 496, 496, 496, 496, 496, - 496, 175, 496, 496, 496, 496, 496, 496, - 496, 175, 496, 496, 175, 497, 496, 496, - 496, 496, 175, 175, 498, 496, 499, 494, - - 495, 494, 494, 494, 500, 175, 175, 495, - 495, 175, 175, 495, 495, 501, 175, 175, - 175, 175, 175, 175, 175, 175, 494, 499, - 175, 175, 175, 175, 496, 496, 175, 496, - - 496, 496, 500, 500, 175, 175, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, - 512, 497, 513, 513, 513, 513, 513, 513, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 175, 514, 515, 175, 515, 515, 515, - 515, 515, 515, 175, 175, 175, 515, 515, - 515, 175, 515, 515, 515, 515, 175, 175, - 175, 515, 515, 175, 515, 175, 515, 515, - - 175, 175, 175, 515, 515, 175, 175, 175, - 515, 515, 515, 175, 175, 175, 515, 515, - 515, 515, 515, 515, 515, 515, 516, 515, - 515, 515, 175, 175, 175, 175, 517, 518, - - 514, 518, 518, 175, 175, 175, 518, 518, - 518, 175, 518, 518, 518, 519, 175, 175, - 520, 175, 175, 175, 175, 175, 175, 517, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, - 531, 531, 531, 532, 532, 532, 532, 532, - 532, 533, 532, 175, 175, 175, 175, 175, - - 175, 534, 534, 534, 175, 535, 535, 535, - 535, 535, 535, 535, 535, 175, 535, 535, - 535, 175, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, - - 535, 535, 535, 535, 535, 535, 535, 535, - 535, 175, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 175, 535, 535, 535, - 535, 535, 175, 175, 175, 536, 537, 537, - - 537, 534, 534, 534, 534, 175, 537, 537, - 537, 175, 537, 537, 537, 538, 175, 175, - 175, 175, 175, 175, 175, 539, 540, 175, - 536, 536, 175, 175, 175, 175, 175, 175, - - 535, 535, 541, 541, 175, 175, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, - 175, 175, 175, 175, 175, 175, 175, 175, - 552, 552, 552, 552, 552, 552, 552, 553, - - 175, 175, 554, 554, 175, 555, 555, 555, - 555, 555, 555, 555, 555, 175, 555, 555, - 555, 175, 555, 555, 555, 555, 555, 555, - 555, 555, 555, 555, 555, 555, 555, 555, - - 555, 555, 555, 555, 555, 555, 555, 555, - 555, 175, 555, 555, 555, 555, 555, 555, - 555, 555, 555, 555, 175, 555, 555, 555, - 555, 555, 175, 175, 556, 557, 554, 558, - - 554, 554, 559, 554, 554, 175, 558, 554, - 554, 175, 554, 554, 560, 561, 175, 175, - 175, 175, 175, 175, 175, 559, 559, 175, - 175, 175, 175, 175, 175, 175, 555, 175, - - 555, 555, 562, 562, 175, 175, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, - 175, 573, 573, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 175, 574, 574, 175, 575, 575, 575, - 575, 575, 575, 575, 575, 175, 575, 575, - 575, 175, 575, 575, 575, 575, 575, 575, - 575, 575, 575, 575, 575, 575, 575, 575, - - 575, 575, 575, 575, 575, 575, 575, 575, - 575, 576, 575, 575, 575, 575, 575, 575, - 575, 575, 575, 575, 575, 575, 575, 575, - 575, 575, 576, 175, 175, 577, 578, 574, - - 574, 579, 579, 579, 580, 175, 574, 574, - 574, 175, 574, 574, 574, 581, 576, 175, - 175, 175, 175, 175, 175, 175, 175, 578, - 175, 175, 175, 175, 175, 175, 175, 175, - - 575, 575, 580, 580, 175, 175, 582, 583, - 584, 585, 586, 587, 588, 589, 590, 591, - 592, 592, 592, 592, 592, 592, 175, 175, - 175, 593, 577, 577, 577, 577, 577, 577, - - 175, 175, 594, 594, 175, 595, 595, 595, - 595, 595, 595, 595, 595, 595, 595, 595, - 595, 595, 595, 595, 595, 595, 595, 175, - 175, 175, 595, 595, 595, 595, 595, 595, - - 595, 595, 595, 595, 595, 595, 595, 595, - 595, 595, 595, 595, 595, 595, 595, 595, - 595, 595, 175, 595, 595, 595, 595, 595, - 595, 595, 595, 595, 175, 595, 175, 175, - - 595, 595, 595, 595, 595, 595, 595, 175, - 175, 175, 596, 175, 175, 175, 175, 597, - 594, 594, 598, 598, 598, 175, 598, 175, - 594, 594, 594, 594, 594, 594, 594, 597, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 594, 594, 599, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 600, 600, 600, 600, 600, 600, 600, - 600, 600, 600, 600, 600, 600, 600, 600, - 600, 600, 600, 600, 600, 600, 600, 600, - 600, 600, 600, 600, 600, 600, 600, 600, - - 600, 600, 600, 600, 600, 600, 600, 600, - 600, 600, 600, 600, 600, 600, 600, 600, - 600, 601, 600, 602, 601, 601, 601, 601, - 603, 603, 604, 175, 175, 175, 175, 12, - - 600, 600, 600, 600, 600, 600, 605, 601, - 606, 606, 606, 606, 601, 601, 601, 607, - 608, 609, 610, 611, 612, 613, 614, 615, - 616, 617, 618, 618, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 619, 619, 175, 619, 175, 175, 619, - 619, 175, 619, 175, 175, 619, 175, 175, - 175, 175, 175, 175, 619, 619, 619, 619, - 175, 619, 619, 619, 619, 619, 619, 619, - - 175, 619, 619, 619, 175, 619, 175, 619, - 175, 175, 619, 619, 175, 619, 619, 619, - 619, 620, 619, 621, 620, 620, 620, 620, - 622, 622, 175, 620, 620, 619, 175, 175, - - 619, 619, 619, 619, 619, 175, 623, 175, - 624, 624, 624, 624, 620, 620, 175, 175, - 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 175, 175, 619, 619, 635, 635, - - 636, 637, 637, 637, 638, 639, 638, 638, - 640, 638, 638, 641, 640, 642, 642, 642, - 642, 642, 640, 643, 642, 643, 643, 643, - 644, 644, 643, 643, 643, 643, 643, 643, - - 645, 646, 647, 648, 649, 650, 651, 652, - 653, 654, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 656, 644, 643, 644, - 643, 657, 658, 659, 658, 659, 660, 660, - - 636, 636, 636, 636, 636, 636, 636, 636, - 175, 636, 636, 636, 636, 636, 636, 636, - 636, 636, 636, 636, 636, 636, 636, 636, - 636, 636, 636, 636, 636, 636, 636, 636, - - 636, 636, 636, 636, 636, 636, 636, 636, - 636, 636, 661, 662, 662, 175, 175, 175, - 175, 663, 664, 665, 666, 665, 665, 665, - 665, 665, 664, 664, 664, 664, 665, 667, - - 664, 665, 668, 668, 669, 641, 668, 668, - 636, 636, 636, 636, 670, 671, 671, 671, - 665, 665, 665, 665, 665, 665, 672, 665, - 175, 665, 665, 665, 665, 665, 665, 665, - - 665, 665, 665, 665, 665, 665, 665, 665, - 665, 665, 665, 665, 665, 665, 672, 672, - 672, 665, 665, 665, 665, 665, 665, 665, - 672, 665, 672, 672, 672, 175, 673, 673, - - 674, 674, 674, 674, 674, 674, 675, 674, - 674, 674, 674, 674, 674, 175, 676, 674, - 677, 677, 678, 679, 680, 681, 681, 681, - 681, 682, 682, 175, 175, 175, 175, 175, - - 683, 683, 683, 683, 683, 683, 683, 683, - 683, 683, 683, 683, 683, 683, 683, 683, - 683, 683, 683, 683, 683, 683, 683, 683, - 683, 683, 683, 683, 683, 683, 683, 683, - - 683, 683, 684, 683, 683, 683, 683, 683, - 684, 683, 683, 685, 686, 687, 687, 687, - 687, 688, 687, 689, 689, 689, 687, 690, - 686, 691, 692, 693, 693, 689, 689, 684, - - 694, 695, 696, 697, 698, 699, 700, 701, - 702, 703, 704, 704, 705, 705, 705, 705, - 683, 683, 683, 683, 683, 683, 688, 688, - 687, 687, 684, 684, 684, 684, 689, 689, - - 689, 684, 685, 685, 685, 684, 684, 685, - 685, 685, 685, 685, 685, 685, 684, 684, - 684, 689, 689, 689, 689, 684, 684, 684, - 684, 684, 684, 684, 684, 684, 684, 684, - - 684, 684, 689, 685, 693, 689, 689, 685, - 685, 685, 685, 685, 685, 706, 684, 685, - 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 717, 717, 718, 719, 719, - - 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, - - 720, 720, 720, 720, 720, 720, 175, 721, - 175, 175, 175, 175, 175, 721, 175, 175, - 722, 722, 722, 722, 722, 722, 722, 722, - 722, 722, 722, 722, 722, 722, 722, 722, - - 722, 722, 722, 722, 722, 722, 722, 722, - 722, 722, 722, 722, 722, 722, 722, 722, - 722, 722, 722, 722, 722, 722, 722, 723, - 723, 724, 724, 725, 726, 727, 727, 727, - - 728, 728, 728, 728, 728, 728, 728, 728, - 728, 728, 728, 728, 728, 728, 728, 728, - 728, 728, 728, 728, 728, 728, 728, 728, - 728, 728, 728, 728, 728, 728, 728, 728, - - 728, 728, 728, 728, 728, 728, 728, 728, - 728, 728, 728, 728, 728, 728, 728, 728, - 728, 728, 728, 728, 728, 728, 728, 728, - 728, 728, 729, 729, 729, 729, 729, 728, - - 730, 730, 730, 730, 730, 730, 730, 730, - 730, 730, 730, 730, 730, 730, 730, 730, - 730, 730, 730, 730, 730, 730, 730, 730, - 730, 730, 730, 730, 730, 730, 730, 730, - - 730, 730, 730, 731, 731, 731, 731, 731, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 732, 732, 732, 732, 732, 732, + 368, 368, 368, 369, 369, 368, 307, 307, + 307, 370, 307, 370, 370, 307, 307, 307, + 370, 370, 307, 307, 307, 307, 307, 307, + + 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, + + 371, 371, 371, 371, 371, 371, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, 373, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + + 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, + + 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 385, 385, 385, 385, 385, + 385, 385, 386, 385, 387, 387, 388, 389, + 390, 391, 392, 256, 256, 256, 256, 256, + + 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 394, 394, + 394, 394, 395, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 395, 394, 394, 394, + 395, 394, 394, 394, 394, 394, 256, 256, + 396, 396, 396, 396, 396, 396, 396, 396, + 396, 396, 396, 396, 396, 396, 396, 256, + + 397, 398, 398, 398, 398, 398, 397, 398, + 398, 397, 398, 398, 398, 398, 398, 397, + 398, 398, 398, 398, 397, 398, 399, 399, + 399, 400, 400, 400, 256, 256, 401, 256, + + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + + 402, 288, 402, 402, 402, 402, 402, 402, + 402, 402, 403, 403, 403, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + + 288, 288, 288, 288, 404, 404, 405, 404, + 404, 405, 404, 404, 404, 405, 405, 405, + 406, 407, 408, 404, 404, 404, 405, 404, + 404, 405, 405, 404, 404, 404, 404, 288, + + 409, 410, 410, 411, 412, 413, 413, 413, + 413, 413, 413, 413, 413, 413, 413, 413, + 413, 413, 413, 413, 413, 413, 413, 413, + 413, 413, 413, 413, 413, 413, 413, 413, + + 413, 413, 413, 413, 413, 413, 413, 413, + 413, 413, 413, 413, 413, 413, 413, 413, + 413, 413, 413, 413, 413, 413, 413, 413, + 413, 413, 414, 415, 416, 413, 411, 411, + + 411, 410, 410, 410, 410, 410, 410, 410, + 410, 411, 411, 411, 411, 417, 418, 415, + 413, 153, 155, 419, 419, 409, 414, 414, + 413, 413, 413, 413, 413, 413, 413, 413, + + 413, 413, 410, 410, 420, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 434, 434, 434, 434, + 177, 435, 435, 436, 436, 437, 436, 436, + + 177, 438, 439, 439, 177, 440, 440, 440, + 440, 440, 440, 440, 440, 177, 177, 440, + 440, 177, 177, 440, 440, 440, 440, 440, + 440, 440, 440, 440, 440, 440, 440, 440, + + 440, 440, 440, 440, 440, 440, 440, 440, + 440, 177, 440, 440, 440, 440, 440, 440, + 440, 177, 440, 177, 177, 177, 440, 440, + 440, 440, 177, 177, 441, 442, 443, 439, + + 439, 438, 438, 438, 438, 177, 177, 439, + 439, 177, 177, 439, 439, 444, 445, 177, + 177, 177, 177, 177, 177, 177, 177, 443, + 177, 177, 177, 177, 440, 440, 177, 440, + + 440, 440, 438, 438, 177, 177, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, + 440, 440, 456, 456, 457, 457, 457, 457, + 457, 458, 459, 460, 177, 177, 177, 177, + + 177, 461, 462, 463, 177, 464, 464, 464, + 464, 464, 464, 177, 177, 177, 177, 464, + 464, 177, 177, 464, 464, 464, 464, 464, + 464, 464, 464, 464, 464, 464, 464, 464, + + 464, 464, 464, 464, 464, 464, 464, 464, + 464, 177, 464, 464, 464, 464, 464, 464, + 464, 177, 464, 464, 177, 464, 464, 177, + 464, 464, 177, 177, 465, 177, 466, 466, + + 466, 462, 462, 177, 177, 177, 177, 462, + 462, 177, 177, 462, 462, 467, 177, 177, + 177, 468, 177, 177, 177, 177, 177, 177, + 177, 464, 464, 464, 464, 177, 464, 177, + + 177, 177, 177, 177, 177, 177, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, + 462, 462, 464, 464, 464, 468, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 479, 479, 480, 177, 481, 481, 481, + 481, 481, 481, 481, 482, 481, 177, 481, + 481, 481, 177, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, + 481, 177, 481, 481, 481, 481, 481, 481, + 481, 177, 481, 481, 177, 481, 481, 481, + 481, 481, 177, 177, 483, 481, 480, 480, + + 480, 479, 479, 479, 479, 479, 177, 479, + 479, 480, 177, 480, 480, 484, 177, 177, + 481, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 481, 482, 485, 485, 177, 177, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 498, 499, 499, 177, 500, 500, 500, + 500, 500, 500, 500, 500, 177, 177, 500, + 500, 177, 177, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, + + 500, 500, 500, 500, 500, 500, 500, 500, + 500, 177, 500, 500, 500, 500, 500, 500, + 500, 177, 500, 500, 177, 501, 500, 500, + 500, 500, 177, 177, 502, 500, 503, 498, + + 499, 498, 498, 498, 504, 177, 177, 499, + 499, 177, 177, 499, 499, 505, 177, 177, + 177, 177, 177, 177, 177, 177, 498, 503, + 177, 177, 177, 177, 500, 500, 177, 500, + + 500, 500, 504, 504, 177, 177, 506, 507, + 508, 509, 510, 511, 512, 513, 514, 515, + 516, 501, 517, 517, 517, 517, 517, 517, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 518, 519, 177, 519, 519, 519, + 519, 519, 519, 177, 177, 177, 519, 519, + 519, 177, 519, 519, 519, 519, 177, 177, + 177, 519, 519, 177, 519, 177, 519, 519, + + 177, 177, 177, 519, 519, 177, 177, 177, + 519, 519, 519, 177, 177, 177, 519, 519, + 519, 519, 519, 519, 519, 519, 520, 519, + 519, 519, 177, 177, 177, 177, 521, 522, + + 518, 522, 522, 177, 177, 177, 522, 522, + 522, 177, 522, 522, 522, 523, 177, 177, + 524, 177, 177, 177, 177, 177, 177, 521, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, + 535, 535, 535, 536, 536, 536, 536, 536, + 536, 537, 536, 177, 177, 177, 177, 177, + + 177, 538, 538, 538, 177, 539, 539, 539, + 539, 539, 539, 539, 539, 177, 539, 539, + 539, 177, 539, 539, 539, 539, 539, 539, + 539, 539, 539, 539, 539, 539, 539, 539, + + 539, 539, 539, 539, 539, 539, 539, 539, + 539, 177, 539, 539, 539, 539, 539, 539, + 539, 539, 539, 539, 177, 539, 539, 539, + 539, 539, 177, 177, 177, 540, 541, 541, + + 541, 538, 538, 538, 538, 177, 541, 541, + 541, 177, 541, 541, 541, 542, 177, 177, + 177, 177, 177, 177, 177, 543, 544, 177, + 540, 540, 177, 177, 177, 177, 177, 177, + + 539, 539, 545, 545, 177, 177, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, + 177, 177, 177, 177, 177, 177, 177, 177, + 556, 556, 556, 556, 556, 556, 556, 557, + + 177, 177, 558, 558, 177, 559, 559, 559, + 559, 559, 559, 559, 559, 177, 559, 559, + 559, 177, 559, 559, 559, 559, 559, 559, + 559, 559, 559, 559, 559, 559, 559, 559, + + 559, 559, 559, 559, 559, 559, 559, 559, + 559, 177, 559, 559, 559, 559, 559, 559, + 559, 559, 559, 559, 177, 559, 559, 559, + 559, 559, 177, 177, 560, 561, 558, 562, + + 558, 558, 563, 558, 558, 177, 562, 558, + 558, 177, 558, 558, 564, 565, 177, 177, + 177, 177, 177, 177, 177, 563, 563, 177, + 177, 177, 177, 177, 177, 177, 559, 177, + + 559, 559, 566, 566, 177, 177, 567, 568, + 569, 570, 571, 572, 573, 574, 575, 576, + 177, 577, 577, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 578, 578, 177, 579, 579, 579, + 579, 579, 579, 579, 579, 177, 579, 579, + 579, 177, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 579, 579, 579, 579, 579, + + 579, 579, 579, 579, 579, 579, 579, 579, + 579, 580, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 579, 579, 579, 579, 579, + 579, 579, 580, 177, 177, 581, 582, 578, + + 578, 583, 583, 583, 584, 177, 578, 578, + 578, 177, 578, 578, 578, 585, 580, 177, + 177, 177, 177, 177, 177, 177, 177, 582, + 177, 177, 177, 177, 177, 177, 177, 177, + + 579, 579, 584, 584, 177, 177, 586, 587, + 588, 589, 590, 591, 592, 593, 594, 595, + 596, 596, 596, 596, 596, 596, 177, 177, + 177, 597, 581, 581, 581, 581, 581, 581, + + 177, 177, 598, 598, 177, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 177, + 177, 177, 599, 599, 599, 599, 599, 599, + + 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 177, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 177, 599, 177, 177, + + 599, 599, 599, 599, 599, 599, 599, 177, + 177, 177, 600, 177, 177, 177, 177, 601, + 598, 598, 602, 602, 602, 177, 602, 177, + 598, 598, 598, 598, 598, 598, 598, 601, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 598, 598, 603, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 604, 604, 604, 604, 604, 604, 604, + 604, 604, 604, 604, 604, 604, 604, 604, + 604, 604, 604, 604, 604, 604, 604, 604, + 604, 604, 604, 604, 604, 604, 604, 604, + + 604, 604, 604, 604, 604, 604, 604, 604, + 604, 604, 604, 604, 604, 604, 604, 604, + 604, 605, 604, 606, 605, 605, 605, 605, + 607, 607, 608, 177, 177, 177, 177, 12, + + 604, 604, 604, 604, 604, 604, 609, 605, + 610, 610, 610, 610, 605, 605, 605, 611, + 612, 613, 614, 615, 616, 617, 618, 619, + 620, 621, 622, 622, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 623, 623, 177, 623, 177, 177, 623, + 623, 177, 623, 177, 177, 623, 177, 177, + 177, 177, 177, 177, 623, 623, 623, 623, + 177, 623, 623, 623, 623, 623, 623, 623, + + 177, 623, 623, 623, 177, 623, 177, 623, + 177, 177, 623, 623, 177, 623, 623, 623, + 623, 624, 623, 625, 624, 624, 624, 624, + 626, 626, 177, 624, 624, 623, 177, 177, + + 623, 623, 623, 623, 623, 177, 627, 177, + 628, 628, 628, 628, 624, 624, 177, 177, + 629, 630, 631, 632, 633, 634, 635, 636, + 637, 638, 177, 177, 623, 623, 639, 639, + + 640, 641, 641, 641, 642, 643, 642, 642, + 644, 642, 642, 645, 644, 646, 646, 646, + 646, 646, 644, 647, 646, 647, 647, 647, + 648, 648, 647, 647, 647, 647, 647, 647, + + 649, 650, 651, 652, 653, 654, 655, 656, + 657, 658, 659, 659, 659, 659, 659, 659, + 659, 659, 659, 659, 660, 648, 647, 648, + 647, 661, 662, 663, 662, 663, 664, 664, + + 640, 640, 640, 640, 640, 640, 640, 640, + 177, 640, 640, 640, 640, 640, 640, 640, + 640, 640, 640, 640, 640, 640, 640, 640, + 640, 640, 640, 640, 640, 640, 640, 640, + + 640, 640, 640, 640, 640, 640, 640, 640, + 640, 640, 665, 666, 666, 177, 177, 177, + 177, 667, 668, 669, 670, 669, 669, 669, + 669, 669, 668, 668, 668, 668, 669, 671, + + 668, 669, 672, 672, 673, 645, 672, 672, + 640, 640, 640, 640, 674, 675, 675, 675, + 669, 669, 669, 669, 669, 669, 676, 669, + 177, 669, 669, 669, 669, 669, 669, 669, + + 669, 669, 669, 669, 669, 669, 669, 669, + 669, 669, 669, 669, 669, 669, 676, 676, + 676, 669, 669, 669, 669, 669, 669, 669, + 676, 669, 676, 676, 676, 177, 677, 677, + + 678, 678, 678, 678, 678, 678, 679, 678, + 678, 678, 678, 678, 678, 177, 680, 678, + 681, 681, 682, 683, 684, 685, 685, 685, + 685, 686, 686, 177, 177, 177, 177, 177, + + 687, 687, 687, 687, 687, 687, 687, 687, + 687, 687, 687, 687, 687, 687, 687, 687, + 687, 687, 687, 687, 687, 687, 687, 687, + 687, 687, 687, 687, 687, 687, 687, 687, + + 687, 687, 688, 687, 687, 687, 687, 687, + 688, 687, 687, 689, 690, 691, 691, 691, + 691, 692, 691, 693, 693, 693, 691, 694, + 690, 695, 696, 697, 697, 693, 693, 688, + + 698, 699, 700, 701, 702, 703, 704, 705, + 706, 707, 708, 708, 709, 709, 709, 709, + 687, 687, 687, 687, 687, 687, 692, 692, + 691, 691, 688, 688, 688, 688, 693, 693, + + 693, 688, 689, 689, 689, 688, 688, 689, + 689, 689, 689, 689, 689, 689, 688, 688, + 688, 693, 693, 693, 693, 688, 688, 688, + 688, 688, 688, 688, 688, 688, 688, 688, + + 688, 688, 693, 689, 697, 693, 693, 689, + 689, 689, 689, 689, 689, 710, 688, 689, + 711, 712, 713, 714, 715, 716, 717, 718, + 719, 720, 721, 721, 721, 722, 723, 723, + + 724, 724, 724, 724, 724, 724, 724, 724, + 724, 724, 724, 724, 724, 724, 724, 724, + 724, 724, 724, 724, 724, 724, 724, 724, + 724, 724, 724, 724, 724, 724, 724, 724, + + 724, 724, 724, 724, 724, 724, 177, 725, + 177, 177, 177, 177, 177, 725, 177, 177, + 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, + + 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 727, + 727, 728, 728, 729, 730, 731, 731, 731, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, @@ -1557,82 +1537,97 @@ static const unsigned short uc_property_trie[] = { 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 733, 733, 733, 733, 733, 733, - - 734, 734, 734, 734, 734, 734, 734, 735, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, + 732, 732, 733, 733, 733, 733, 733, 732, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 735, - 734, 175, 734, 734, 734, 734, 175, 175, - 734, 734, 734, 734, 734, 734, 734, 175, - 734, 175, 734, 734, 734, 734, 175, 175, - - 734, 734, 734, 734, 734, 734, 734, 735, - 734, 175, 734, 734, 734, 734, 175, 175, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 735, - 734, 175, 734, 734, 734, 734, 175, 175, - 734, 734, 734, 734, 734, 734, 734, 175, - - 734, 175, 734, 734, 734, 734, 175, 175, - 734, 734, 734, 734, 734, 734, 734, 735, - 734, 734, 734, 734, 734, 734, 734, 175, - 734, 734, 734, 734, 734, 734, 734, 734, - - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 735, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 735, - 734, 175, 734, 734, 734, 734, 175, 175, - 734, 734, 734, 734, 734, 734, 734, 735, - - 734, 734, 734, 734, 734, 734, 734, 735, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 175, 175, 736, 736, 737, - - 738, 739, 740, 741, 741, 741, 741, 740, - 740, 742, 743, 744, 745, 746, 747, 748, - 749, 750, 751, 751, 751, 751, 751, 751, - 751, 751, 751, 751, 751, 175, 175, 175, - - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - 752, 752, 752, 752, 752, 752, 752, 752, - 752, 752, 175, 175, 175, 175, 175, 175, - - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, + 734, 734, 734, 735, 735, 735, 735, 735, + 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, + + 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, + + 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 737, 737, 737, 737, 737, 737, + + 738, 738, 738, 738, 738, 738, 738, 739, + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, + + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, + + 738, 738, 738, 738, 738, 738, 738, 739, + 738, 177, 738, 738, 738, 738, 177, 177, + 738, 738, 738, 738, 738, 738, 738, 177, + 738, 177, 738, 738, 738, 738, 177, 177, + + 738, 738, 738, 738, 738, 738, 738, 739, + 738, 177, 738, 738, 738, 738, 177, 177, + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, + + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 739, + 738, 177, 738, 738, 738, 738, 177, 177, + 738, 738, 738, 738, 738, 738, 738, 177, + + 738, 177, 738, 738, 738, 738, 177, 177, + 738, 738, 738, 738, 738, 738, 738, 739, + 738, 738, 738, 738, 738, 738, 738, 177, + 738, 738, 738, 738, 738, 738, 738, 738, + + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 739, + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, + + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 739, + 738, 177, 738, 738, 738, 738, 177, 177, + 738, 738, 738, 738, 738, 738, 738, 739, + + 738, 738, 738, 738, 738, 738, 738, 739, + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 177, 177, 740, 740, 741, + + 742, 743, 744, 745, 745, 745, 745, 744, + 744, 746, 747, 748, 749, 750, 751, 752, + 753, 754, 755, 755, 755, 755, 755, 755, + 755, 755, 755, 755, 755, 177, 177, 177, + + 739, 739, 739, 739, 739, 739, 739, 739, + 739, 739, 739, 739, 739, 739, 739, 739, + 756, 756, 756, 756, 756, 756, 756, 756, + 756, 756, 177, 177, 177, 177, 177, 177, - 753, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, + 757, 757, 757, 757, 757, 757, 757, 757, + 757, 757, 757, 757, 757, 757, 757, 757, + 757, 757, 757, 757, 757, 757, 757, 757, + 757, 757, 757, 757, 757, 757, 757, 757, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 741, 740, 734, - 734, 734, 734, 734, 734, 734, 734, 754, - 754, 754, 754, 754, 754, 754, 754, 754, + 757, 757, 757, 757, 757, 757, 757, 757, + 757, 757, 757, 757, 757, 757, 757, 757, + 757, 757, 757, 757, 757, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, - 755, 756, 756, 756, 756, 756, 756, 756, - 756, 756, 756, 756, 756, 756, 756, 756, - 756, 756, 756, 756, 756, 756, 756, 756, - 756, 756, 756, 757, 758, 175, 175, 175, + 758, 759, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, @@ -1640,372 +1635,392 @@ static const unsigned short uc_property_trie[] = { 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, - 759, 759, 759, 739, 739, 739, 760, 760, - 760, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 175, 761, 761, - 761, 761, 762, 762, 763, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 762, 762, 763, 764, 764, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 762, 762, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 175, 761, 761, - 761, 175, 762, 762, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, - - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 766, 766, 767, 766, - 766, 766, 766, 766, 766, 766, 767, 767, - - 767, 767, 767, 767, 767, 767, 766, 767, - 767, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 768, 766, 769, 769, 770, 771, - 769, 772, 769, 773, 765, 774, 175, 175, - - 775, 776, 777, 778, 779, 780, 781, 782, - 783, 784, 175, 175, 175, 175, 175, 175, - 785, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 175, 175, 175, 175, 175, 175, - - 786, 786, 787, 788, 789, 789, 790, 786, - 787, 788, 786, 791, 791, 791, 792, 175, - 793, 794, 795, 796, 797, 798, 799, 800, - 801, 802, 175, 175, 175, 175, 175, 175, - - 734, 734, 734, 149, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 175, 175, 175, 175, 175, 175, 175, 175, - - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 803, 804, 175, 175, 175, 175, 175, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 175, 175, 175, - - 806, 806, 806, 807, 807, 807, 807, 806, - 806, 807, 807, 807, 175, 175, 175, 175, - 807, 807, 806, 807, 807, 807, 807, 807, - 807, 808, 809, 810, 175, 175, 175, 175, - - 811, 175, 175, 175, 812, 812, 813, 814, - 815, 816, 817, 818, 819, 820, 821, 822, - 823, 823, 823, 823, 823, 823, 823, 823, - 823, 823, 823, 823, 823, 823, 823, 823, - - 823, 823, 823, 823, 823, 823, 823, 823, - 823, 823, 823, 823, 823, 823, 175, 175, - 823, 823, 823, 823, 823, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 824, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 824, 824, 824, 824, 824, 824, - - 824, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 825, 825, 175, 175, 175, 175, - 826, 826, 826, 826, 826, 827, 827, 827, - 826, 826, 827, 826, 826, 826, 826, 826, - - 826, 824, 824, 824, 824, 824, 824, 824, - 826, 826, 175, 175, 175, 175, 175, 175, - 828, 829, 830, 831, 832, 833, 834, 835, - 836, 837, 838, 175, 175, 175, 839, 839, - - 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, - - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 737, - 841, 842, 842, 842, 175, 175, 738, 738, - - 825, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 825, 825, 825, 825, 825, 825, - - 825, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 825, 825, 825, 843, 844, 843, - 844, 844, 844, 844, 844, 844, 844, 175, - - 845, 846, 844, 846, 846, 844, 844, 844, - 844, 844, 844, 844, 844, 843, 843, 843, - 843, 843, 843, 844, 844, 847, 847, 847, - 847, 847, 847, 847, 847, 175, 175, 848, - + 759, 759, 759, 759, 759, 760, 761, 759, + 759, 759, 759, 759, 759, 759, 759, 762, + 762, 762, 762, 762, 762, 762, 762, 762, + + 763, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 765, 766, 177, 177, 177, + + 767, 767, 767, 767, 767, 767, 767, 767, + 767, 767, 767, 767, 767, 767, 767, 767, + 767, 767, 767, 767, 767, 767, 767, 767, + 767, 767, 767, 767, 767, 767, 767, 767, + + 767, 767, 767, 767, 767, 767, 767, 767, + 767, 767, 767, 768, 768, 768, 769, 769, + 769, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 770, 770, 770, 770, 770, 770, 770, 770, + 770, 770, 770, 770, 770, 177, 770, 770, + 770, 770, 771, 771, 772, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 773, 773, 773, 773, 773, 773, 773, 773, + 773, 773, 773, 773, 773, 773, 773, 773, + 773, 773, 774, 774, 775, 776, 776, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 778, 778, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 177, 779, 779, + 779, 177, 780, 780, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 781, 781, 781, 781, 781, 781, 781, 781, + 781, 781, 781, 781, 781, 781, 781, 781, + 781, 781, 781, 781, 781, 781, 781, 781, + 781, 781, 781, 781, 781, 781, 781, 781, + + 781, 781, 781, 781, 781, 781, 781, 781, + 781, 781, 781, 781, 781, 781, 781, 781, + 781, 781, 781, 781, 782, 782, 783, 782, + 782, 782, 782, 782, 782, 782, 783, 783, + + 783, 783, 783, 783, 783, 783, 782, 783, + 783, 782, 782, 782, 782, 782, 782, 782, + 782, 782, 784, 782, 785, 785, 786, 787, + 785, 788, 785, 789, 781, 790, 177, 177, + + 791, 792, 793, 794, 795, 796, 797, 798, + 799, 800, 177, 177, 177, 177, 177, 177, + 801, 801, 801, 801, 801, 801, 801, 801, + 801, 801, 177, 177, 177, 177, 177, 177, + + 802, 802, 803, 804, 805, 806, 807, 802, + 808, 809, 802, 810, 810, 810, 811, 177, + 812, 813, 814, 815, 816, 817, 818, 819, + 820, 821, 177, 177, 177, 177, 177, 177, + + 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, + + 822, 822, 822, 823, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, + + 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, + 177, 177, 177, 177, 177, 177, 177, 177, + + 822, 822, 822, 822, 822, 822, 822, 822, + 822, 824, 825, 177, 177, 177, 177, 177, + 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, + + 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, + + 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 177, 177, 177, + + 827, 827, 827, 828, 828, 828, 828, 827, + 827, 828, 828, 828, 177, 177, 177, 177, + 828, 828, 827, 828, 828, 828, 828, 828, + 828, 829, 830, 831, 177, 177, 177, 177, + + 832, 177, 177, 177, 833, 833, 834, 835, + 836, 837, 838, 839, 840, 841, 842, 843, + 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 844, 844, + + 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 177, 177, + 844, 844, 844, 844, 844, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 845, 845, 845, 845, 845, 845, 845, 845, + 845, 845, 845, 845, 845, 845, 845, 845, + 845, 845, 845, 845, 845, 845, 845, 845, + 845, 845, 845, 845, 845, 845, 845, 845, + + 845, 845, 845, 845, 845, 845, 845, 845, + 845, 845, 846, 846, 177, 177, 177, 177, + 847, 847, 847, 847, 847, 848, 848, 848, + 847, 847, 848, 847, 847, 847, 847, 847, + + 847, 845, 845, 845, 845, 845, 845, 845, + 847, 847, 177, 177, 177, 177, 177, 177, 849, 850, 851, 852, 853, 854, 855, 856, - 857, 858, 175, 175, 175, 175, 175, 175, - 849, 850, 851, 852, 853, 854, 855, 856, - 857, 858, 175, 175, 175, 175, 175, 175, - - 859, 859, 859, 859, 859, 859, 859, 860, - 861, 861, 861, 861, 859, 859, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 862, 862, 862, 862, 863, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 865, 863, 862, 862, - 862, 862, 862, 863, 862, 863, 863, 863, - - 863, 863, 862, 863, 866, 864, 864, 864, - 864, 864, 864, 864, 175, 175, 175, 175, - 867, 868, 869, 870, 871, 872, 873, 874, - 875, 876, 877, 877, 878, 879, 877, 877, - - 879, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 881, 882, 881, 881, 881, - 881, 881, 881, 881, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 175, 175, 175, - - 883, 883, 884, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - - 804, 884, 883, 883, 883, 883, 884, 884, - 883, 883, 885, 886, 887, 887, 804, 804, - 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 898, 898, 898, 898, 898, 898, - - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - - 899, 899, 899, 899, 899, 899, 900, 901, - 902, 902, 901, 901, 901, 902, 901, 902, - 902, 902, 903, 903, 175, 175, 175, 175, - 175, 175, 175, 175, 904, 904, 904, 904, - - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - - 804, 804, 804, 804, 884, 884, 884, 884, - 884, 884, 884, 884, 883, 883, 883, 883, - 883, 883, 883, 883, 884, 884, 883, 905, - 175, 175, 175, 906, 906, 907, 907, 907, - - 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 175, 175, 175, 804, 804, 804, - 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 804, 804, 804, 804, 804, 804, - - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 908, 908, 908, 908, 908, 908, 906, 906, - - 909, 909, 909, 909, 909, 909, 909, 909, - 175, 175, 175, 175, 175, 175, 175, 175, - 910, 910, 910, 911, 912, 913, 913, 913, - 913, 913, 910, 910, 913, 913, 913, 913, - - 910, 914, 912, 912, 912, 912, 912, 912, - 912, 754, 754, 754, 754, 913, 754, 754, - 754, 754, 914, 887, 915, 898, 898, 175, - 175, 175, 175, 175, 175, 175, 175, 175, + 857, 858, 859, 177, 177, 177, 860, 860, + + 861, 861, 861, 861, 861, 861, 861, 861, + 861, 861, 861, 861, 861, 861, 861, 861, + 861, 861, 861, 861, 861, 861, 861, 861, + 861, 861, 861, 861, 861, 861, 861, 861, + + 862, 862, 862, 862, 862, 862, 862, 862, + 862, 862, 862, 862, 862, 862, 862, 862, + 862, 862, 862, 862, 862, 862, 862, 863, + 864, 865, 865, 865, 177, 177, 866, 866, + + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 868, 869, 868, + 869, 869, 869, 869, 869, 869, 869, 177, + + 870, 871, 869, 871, 871, 869, 869, 869, + 869, 869, 869, 869, 869, 868, 868, 868, + 868, 868, 868, 869, 869, 872, 872, 872, + 872, 872, 872, 872, 872, 177, 177, 873, + + 874, 875, 876, 877, 878, 879, 880, 881, + 882, 883, 177, 177, 177, 177, 177, 177, + 874, 875, 876, 877, 878, 879, 880, 881, + 882, 883, 177, 177, 177, 177, 177, 177, + + 884, 884, 884, 884, 884, 884, 884, 885, + 886, 886, 886, 886, 884, 884, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 887, 887, 887, 887, 888, 889, 889, 889, + 889, 889, 889, 889, 889, 889, 889, 889, + 889, 889, 889, 889, 889, 889, 889, 889, + 889, 889, 889, 889, 889, 889, 889, 889, + + 889, 889, 889, 889, 889, 889, 889, 889, + 889, 889, 889, 889, 889, 889, 889, 889, + 889, 889, 889, 889, 890, 888, 887, 887, + 887, 887, 887, 888, 887, 888, 888, 888, + + 888, 888, 887, 888, 891, 889, 889, 889, + 889, 889, 889, 889, 177, 177, 177, 177, + 892, 893, 894, 895, 896, 897, 898, 899, + 900, 901, 902, 902, 903, 904, 902, 902, + + 904, 905, 905, 905, 905, 905, 905, 905, + 905, 905, 905, 906, 907, 906, 906, 906, + 906, 906, 906, 906, 905, 905, 905, 905, + 905, 905, 905, 905, 905, 177, 177, 177, + + 908, 908, 909, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, + + 910, 909, 908, 908, 908, 908, 909, 909, + 908, 908, 911, 912, 913, 913, 910, 910, + 914, 915, 916, 917, 918, 919, 920, 921, + 922, 923, 924, 924, 924, 924, 924, 924, + + 925, 925, 925, 925, 925, 925, 925, 925, + 925, 925, 925, 925, 925, 925, 925, 925, + 925, 925, 925, 925, 925, 925, 925, 925, + 925, 925, 925, 925, 925, 925, 925, 925, + + 925, 925, 925, 925, 925, 925, 926, 927, + 928, 928, 927, 927, 927, 928, 927, 928, + 928, 928, 929, 929, 177, 177, 177, 177, + 177, 177, 177, 177, 930, 930, 930, 930, + + 931, 931, 931, 931, 931, 931, 931, 931, + 931, 931, 931, 931, 931, 931, 931, 931, + 931, 931, 931, 931, 931, 931, 931, 931, + 931, 931, 931, 931, 931, 931, 931, 931, + + 931, 931, 931, 931, 932, 932, 932, 932, + 932, 932, 932, 932, 933, 933, 933, 933, + 933, 933, 933, 933, 932, 932, 933, 934, + 177, 177, 177, 935, 935, 936, 936, 936, + + 937, 938, 939, 940, 941, 942, 943, 944, + 945, 946, 177, 177, 177, 931, 931, 931, + 947, 948, 949, 950, 951, 952, 953, 954, + 955, 956, 957, 957, 957, 957, 957, 957, + + 957, 957, 957, 957, 957, 957, 957, 957, + 957, 957, 957, 957, 957, 957, 957, 957, + 957, 957, 957, 957, 957, 957, 957, 957, + 958, 958, 958, 958, 958, 958, 959, 959, + + 960, 960, 960, 960, 960, 960, 960, 960, + 177, 177, 177, 177, 177, 177, 177, 177, + 961, 961, 961, 962, 963, 964, 964, 964, + 964, 964, 961, 961, 964, 964, 964, 964, + + 961, 965, 963, 963, 963, 963, 963, 963, + 963, 966, 966, 966, 966, 964, 966, 966, + 966, 966, 965, 967, 968, 969, 969, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 916, 916, - 916, 916, 916, 917, 918, 918, 918, 918, - 918, 918, 918, 918, 918, 918, 918, 918, - 918, 918, 918, 918, 918, 918, 918, 918, + 105, 105, 105, 105, 105, 105, 970, 970, + 970, 970, 970, 971, 972, 972, 972, 972, + 972, 972, 972, 972, 972, 972, 972, 972, + 972, 972, 972, 972, 972, 972, 972, 972, - 918, 918, 918, 918, 918, 918, 918, 918, - 918, 918, 918, 918, 918, 918, 918, 918, - 918, 918, 918, 918, 918, 918, 918, 918, - 918, 918, 918, 918, 918, 919, 919, 919, + 972, 972, 972, 972, 972, 972, 972, 972, + 972, 972, 972, 972, 972, 972, 972, 972, + 972, 972, 972, 972, 972, 972, 972, 972, + 972, 972, 972, 972, 972, 973, 973, 973, - 919, 919, 918, 918, 918, 918, 919, 919, - 919, 919, 919, 105, 106, 106, 106, 106, + 973, 973, 972, 972, 972, 972, 973, 973, + 973, 973, 973, 105, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, - 920, 921, 106, 106, 106, 922, 106, 106, + 974, 975, 106, 106, 106, 976, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, - 106, 106, 106, 923, 923, 923, 923, 923, + 106, 106, 106, 977, 977, 977, 977, 977, - 923, 923, 923, 923, 923, 923, 923, 923, - 923, 923, 923, 923, 923, 923, 923, 923, - 923, 923, 923, 923, 923, 923, 923, 923, - 923, 923, 923, 923, 923, 923, 923, 924, + 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 978, - 165, 165, 164, 165, 925, 925, 925, 925, - 925, 925, 926, 927, 927, 928, 929, 930, - 931, 927, 927, 927, 927, 927, 927, 927, - 927, 927, 927, 927, 927, 927, 927, 927, + 167, 167, 166, 167, 979, 979, 979, 979, + 979, 979, 980, 981, 981, 982, 983, 984, + 985, 981, 981, 981, 981, 981, 981, 981, + 981, 981, 981, 981, 981, 981, 981, 981, - 927, 927, 927, 927, 927, 927, 927, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 932, 913, 925, 926, + 981, 981, 981, 981, 981, 981, 981, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 986, 964, 979, 980, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, - 67, 68, 67, 68, 67, 68, 933, 934, - 935, 936, 937, 938, 939, 939, 940, 939, + 67, 68, 67, 68, 67, 68, 987, 988, + 989, 990, 991, 992, 993, 993, 994, 993, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, - 67, 68, 941, 942, 941, 942, 941, 942, - - 943, 943, 943, 943, 943, 943, 943, 943, - 944, 944, 944, 944, 944, 944, 944, 944, - 943, 943, 943, 943, 943, 943, 175, 175, - 944, 944, 944, 944, 944, 944, 175, 175, - - 943, 943, 943, 943, 943, 943, 943, 943, - 944, 944, 944, 944, 944, 944, 944, 944, - 943, 943, 943, 943, 943, 943, 943, 943, - 944, 944, 944, 944, 944, 944, 944, 944, - - 943, 943, 943, 943, 943, 943, 175, 175, - 944, 944, 944, 944, 944, 944, 175, 175, - 945, 943, 946, 943, 947, 943, 948, 943, - 175, 944, 175, 944, 175, 944, 175, 944, - - 943, 943, 943, 943, 943, 943, 943, 943, - 944, 944, 944, 944, 944, 944, 944, 944, - 949, 949, 950, 950, 950, 950, 951, 951, - 952, 952, 953, 953, 954, 954, 175, 175, - - 955, 956, 957, 958, 959, 960, 961, 962, - 963, 964, 965, 966, 967, 968, 969, 970, - 971, 972, 973, 974, 975, 976, 977, 978, - 979, 980, 981, 982, 983, 984, 985, 986, - - 987, 988, 989, 990, 991, 992, 993, 994, - 995, 996, 997, 998, 999, 1000, 1001, 1002, - 943, 943, 1003, 1004, 1005, 175, 1006, 1007, - 944, 944, 1008, 1008, 1009, 174, 1010, 174, - - 174, 174, 1011, 1012, 1013, 175, 1014, 1015, - 1016, 1016, 1016, 1016, 1017, 174, 174, 174, - 943, 943, 1018, 182, 175, 175, 1019, 1020, - 944, 944, 1021, 1021, 175, 174, 174, 174, - - 943, 943, 1022, 186, 1023, 204, 1024, 1025, - 944, 944, 1026, 1026, 1027, 174, 174, 174, - 175, 175, 1028, 1029, 1030, 175, 1031, 1032, - 1033, 1033, 1034, 1034, 1035, 1036, 174, 175, - - 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1038, - 1037, 1037, 1037, 1039, 1040, 1041, 1042, 1043, - 1044, 1045, 1044, 1046, 1047, 1048, 14, 14, - 1049, 1050, 1051, 1052, 1052, 1053, 1051, 1052, - - 14, 14, 14, 14, 1054, 1055, 1055, 1056, - 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, - 13, 13, 13, 13, 13, 1065, 1065, 1065, - 14, 1066, 1067, 14, 1068, 1068, 14, 43, - - 43, 14, 14, 14, 1069, 16, 1070, 1071, - 1072, 1072, 786, 786, 786, 786, 1073, 1073, - 1073, 1073, 1074, 1075, 1076, 1077, 1078, 1073, - 1078, 1078, 1078, 1078, 1077, 1078, 1078, 1079, - - 1080, 1081, 1081, 1081, 1082, 1083, 1083, 1083, - 1083, 1083, 1084, 1084, 1084, 1084, 1084, 1084, - 1085, 1086, 175, 175, 1087, 1088, 1089, 1090, - 1091, 1092, 1093, 1093, 36, 16, 1070, 142, - - 1085, 62, 57, 58, 1087, 1088, 1089, 1090, - 1091, 1092, 1093, 1093, 36, 16, 1070, 175, - 923, 923, 923, 923, 923, 1094, 1094, 1094, - 1094, 1094, 1094, 1094, 1094, 175, 175, 175, + 67, 68, 995, 996, 995, 996, 995, 996, + + 997, 997, 997, 997, 997, 997, 997, 997, + 998, 998, 998, 998, 998, 998, 998, 998, + 997, 997, 997, 997, 997, 997, 177, 177, + 998, 998, 998, 998, 998, 998, 177, 177, + + 997, 997, 997, 997, 997, 997, 997, 997, + 998, 998, 998, 998, 998, 998, 998, 998, + 997, 997, 997, 997, 997, 997, 997, 997, + 998, 998, 998, 998, 998, 998, 998, 998, + + 997, 997, 997, 997, 997, 997, 177, 177, + 998, 998, 998, 998, 998, 998, 177, 177, + 999, 997, 1000, 997, 1001, 997, 1002, 997, + 177, 998, 177, 998, 177, 998, 177, 998, + + 997, 997, 997, 997, 997, 997, 997, 997, + 998, 998, 998, 998, 998, 998, 998, 998, + 1003, 1003, 1004, 1004, 1004, 1004, 1005, 1005, + 1006, 1006, 1007, 1007, 1008, 1008, 177, 177, + + 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, + 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, + 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, + 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, + + 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, + 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, + 997, 997, 1057, 1058, 1059, 177, 1060, 1061, + 998, 998, 1062, 1062, 1063, 176, 1064, 176, + + 176, 176, 1065, 1066, 1067, 177, 1068, 1069, + 1070, 1070, 1070, 1070, 1071, 176, 176, 176, + 997, 997, 1072, 184, 177, 177, 1073, 1074, + 998, 998, 1075, 1075, 177, 176, 176, 176, + + 997, 997, 1076, 188, 1077, 208, 1078, 1079, + 998, 998, 1080, 1080, 1081, 176, 176, 176, + 177, 177, 1082, 1083, 1084, 177, 1085, 1086, + 1087, 1087, 1088, 1088, 1089, 1090, 176, 177, + + 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1092, + 1091, 1091, 1091, 1093, 1094, 1095, 1096, 1097, + 1098, 1099, 1098, 1100, 1101, 1102, 14, 14, + 1103, 1104, 1105, 1106, 1106, 1107, 1105, 1106, + + 14, 14, 14, 14, 1108, 1109, 1109, 1110, + 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, + 13, 13, 13, 13, 13, 1119, 1119, 1119, + 14, 1120, 1121, 14, 1122, 1122, 14, 43, + + 43, 14, 14, 14, 1123, 16, 1124, 1125, + 1126, 1126, 1127, 1127, 1127, 1127, 1128, 1128, + 1128, 1128, 1129, 1130, 1131, 1132, 1133, 1128, + 1133, 1133, 1133, 1133, 1132, 1133, 1133, 1134, + + 1135, 1136, 1136, 1136, 1137, 1138, 1138, 1138, + 1138, 1138, 1139, 1139, 1139, 1139, 1139, 1139, + 1140, 1141, 177, 177, 1142, 1143, 1144, 1145, + 1146, 1147, 1148, 1148, 36, 16, 1124, 142, + + 1140, 62, 57, 58, 1142, 1143, 1144, 1145, + 1146, 1147, 1148, 1148, 36, 16, 1124, 177, + 977, 977, 977, 977, 977, 1149, 1149, 1149, + 1149, 1149, 1149, 1149, 1149, 177, 177, 177, 12, 12, 12, 12, 12, 12, 12, 50, - 12, 12, 12, 1095, 1096, 1097, 1097, 1097, - 1098, 1098, 1099, 1099, 1099, 1099, 1100, 1101, - 1101, 1102, 1103, 175, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 151, 151, 156, 156, 151, 151, 151, 151, - 156, 156, 156, 151, 151, 1104, 1104, 1104, - - 1104, 151, 1105, 1105, 1106, 1107, 1107, 171, - 1108, 171, 1107, 1109, 926, 926, 926, 926, - 927, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 51, 51, 1110, 1111, 51, 51, 51, 1110, - 51, 1111, 71, 1110, 1110, 1110, 71, 71, - 1110, 1110, 1110, 71, 51, 1110, 1112, 51, - 36, 1110, 1110, 1110, 1110, 1110, 51, 51, - - 51, 51, 51, 51, 1110, 51, 1113, 51, - 1110, 51, 1114, 1115, 1110, 1110, 1116, 71, - 1110, 1110, 1117, 1110, 71, 93, 93, 93, - 93, 141, 1118, 811, 106, 1119, 1120, 1120, - - 1074, 1074, 1074, 1074, 1074, 1120, 1119, 1119, - 1119, 1119, 1121, 1074, 752, 1122, 1123, 1124, - 1125, 1125, 1125, 64, 64, 64, 64, 64, + 12, 12, 12, 1150, 1151, 1152, 1152, 1152, + 1153, 1153, 1154, 1154, 1154, 1154, 1155, 1156, + 1156, 1157, 1158, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 153, 153, 158, 158, 153, 153, 153, 153, + 158, 158, 158, 153, 153, 1159, 1159, 1159, + + 1159, 153, 1160, 1160, 1161, 1162, 1162, 173, + 1163, 173, 1162, 1164, 980, 980, 980, 980, + 981, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 51, 51, 1165, 1166, 51, 51, 51, 1165, + 51, 1166, 1167, 1165, 1165, 1165, 1167, 1167, + 1165, 1165, 1165, 1167, 51, 1165, 1168, 51, + 36, 1165, 1165, 1165, 1165, 1165, 51, 51, + + 51, 51, 51, 51, 1165, 51, 1169, 51, + 1165, 51, 1170, 1171, 1165, 1165, 1172, 1167, + 1165, 1165, 1173, 1165, 1167, 1174, 1174, 1174, + 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1180, + + 1129, 1129, 1129, 1129, 1129, 1180, 1179, 1179, + 1179, 1179, 1181, 1129, 1182, 1183, 1184, 1185, + 1186, 1186, 1186, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, - 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, - 1128, 1128, 1128, 102, 113, 1129, 1129, 1129, - 1129, 1125, 175, 175, 175, 175, 175, 175, + 1189, 1189, 1189, 102, 113, 1190, 1190, 1190, + 1190, 1186, 177, 177, 177, 177, 177, 177, 36, 36, 36, 36, 36, 51, 51, 51, 51, 51, 36, 36, 51, 51, 51, 51, @@ -2020,134 +2035,134 @@ static const unsigned short uc_property_trie[] = { 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 1118, 1118, 1118, 1118, 1118, - 1118, 1118, 1118, 1118, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 51, 51, 51, 1176, 1176, 1176, 1176, 1176, + 1176, 1176, 1176, 1176, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 36, 36, 36, 36, 36, 36, 36, 36, - 1130, 1130, 1130, 1131, 1131, 1131, 36, 36, - 36, 36, 18, 56, 36, 1132, 36, 36, + 1191, 1191, 1191, 1192, 1192, 1192, 36, 36, + 36, 36, 18, 56, 36, 1193, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 1133, 1134, 36, 36, + 36, 36, 36, 36, 1194, 1195, 36, 36, - 36, 36, 36, 1135, 36, 36, 36, 36, + 36, 36, 36, 1196, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 1133, 1134, 1133, 1134, 36, 36, + 36, 36, 1194, 1195, 1194, 1195, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 1133, 1134, 1133, 1134, - 1133, 1134, 1133, 1134, 36, 36, 1133, 1134, - 1133, 1134, 1133, 1134, 1133, 1134, 1133, 1134, - 1133, 1134, 1133, 1134, 1133, 1134, 1133, 1134, + 36, 36, 36, 36, 1194, 1195, 1194, 1195, + 1194, 1195, 1194, 1195, 36, 36, 1194, 1195, + 1194, 1195, 1194, 1195, 1194, 1195, 1194, 1195, + 1194, 1195, 1194, 1195, 1194, 1195, 1194, 1195, - 1133, 1134, 1133, 1134, 1133, 1134, 1133, 1134, - 1133, 1134, 1133, 1134, 36, 36, 36, 1133, - 1134, 1133, 1134, 36, 36, 36, 36, 36, - 1136, 36, 36, 36, 36, 36, 36, 36, + 1194, 1195, 1194, 1195, 1194, 1195, 1194, 1195, + 1194, 1195, 1194, 1195, 36, 36, 36, 1194, + 1195, 1194, 1195, 36, 36, 36, 36, 36, + 1197, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 1133, 1134, 36, 36, 1137, 36, - 1138, 1139, 36, 1139, 36, 36, 36, 36, - 1133, 1134, 1133, 1134, 1133, 1134, 1133, 1134, + 36, 36, 1194, 1195, 36, 36, 1198, 36, + 1199, 1200, 36, 1200, 36, 36, 36, 36, + 1194, 1195, 1194, 1195, 1194, 1195, 1194, 1195, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 1133, 1134, 1133, 1134, 1140, 36, 36, - 1133, 1134, 36, 36, 36, 36, 1133, 1134, - 1133, 1134, 1133, 1134, 1133, 1134, 1133, 1134, + 36, 1194, 1195, 1194, 1195, 1201, 36, 36, + 1194, 1195, 36, 36, 36, 36, 1194, 1195, + 1194, 1195, 1194, 1195, 1194, 1195, 1194, 1195, - 1133, 1134, 1133, 1134, 1133, 1134, 1133, 1134, - 1133, 1134, 1133, 1134, 1133, 1134, 36, 36, - 1133, 1134, 1141, 1141, 1141, 1074, 1142, 1142, - 1074, 1074, 1143, 1143, 1143, 1144, 1144, 1074, + 1194, 1195, 1194, 1195, 1194, 1195, 1194, 1195, + 1194, 1195, 1194, 1195, 1194, 1195, 36, 36, + 1194, 1195, 1202, 1202, 1202, 1129, 1203, 1203, + 1129, 1129, 1204, 1204, 1204, 1205, 1205, 1129, - 51, 1118, 51, 51, 51, 51, 51, 51, - 1133, 1134, 1133, 1134, 51, 51, 51, 51, + 51, 1176, 51, 51, 51, 51, 51, 51, + 1194, 1195, 1194, 1195, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 1145, 1145, 51, 51, 51, 51, + 51, 51, 1206, 1206, 51, 51, 51, 51, 36, 36, 51, 51, 51, 51, 51, 51, - 51, 16, 1070, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1118, 1074, 1118, 1118, 1118, - - 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, - 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, - 1118, 1118, 1118, 1118, 1118, 1147, 1118, 1118, - 1118, 1118, 1118, 1074, 1074, 1074, 1074, 1074, - - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1121, 1121, 1121, 1121, - 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, - - 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, - 1121, 1121, 1121, 1121, 1121, 1121, 1121, 811, - 811, 752, 752, 752, 752, 752, 752, 752, - 752, 752, 752, 752, 1148, 1148, 1148, 1148, - - 1148, 1148, 1122, 1122, 1122, 1122, 1122, 1122, - 1149, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1151, 1151, 1151, 1151, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, + 51, 16, 1124, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1176, 1129, 1176, 1176, 1176, + + 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, + 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, + 1176, 1176, 1176, 1176, 1176, 1208, 1176, 1176, + 1176, 1176, 1176, 1129, 1129, 1129, 1129, 1129, + + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1181, 1181, 1181, 1181, + 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, + + 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, + 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1177, + 1177, 1182, 1182, 1182, 1182, 1182, 1182, 1182, + 1182, 1182, 1182, 1182, 1209, 1209, 1209, 1209, + + 1209, 1209, 1183, 1183, 1183, 1183, 1183, 1183, + 1210, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1212, 1212, 1212, 1212, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 1118, 1118, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, + 51, 51, 51, 51, 51, 1176, 1176, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, + 51, 51, 51, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, - 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, - 1160, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 1152, 1153, 1154, 1155, - 1156, 1157, 1158, 1159, 1160, 64, 64, 64, + 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, + 1221, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 1213, 1214, 1215, 1216, + 1217, 1218, 1219, 1220, 1221, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 62, 57, 58, 1087, 1088, 1089, 1090, 1091, - 1092, 1161, 1161, 1161, 1161, 1161, 1161, 1161, - 1161, 1161, 1161, 1161, 1146, 1146, 1146, 1146, + 62, 57, 58, 1142, 1143, 1144, 1145, 1146, + 1147, 1222, 1222, 1222, 1222, 1222, 1222, 1222, + 1222, 1222, 1222, 1222, 1207, 1207, 1207, 1207, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1162, 1162, - 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1223, 1223, + 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, - 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, - 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, - 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, - 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, + 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, + 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, + 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, + 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, - 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, - 1163, 1163, 1164, 1165, 1165, 1165, 1165, 1165, - 1165, 1165, 1165, 1165, 1165, 1166, 1167, 1168, - 1169, 1170, 1171, 1172, 1173, 1174, 1165, 1175, + 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, + 1224, 1224, 1225, 1226, 1226, 1226, 1226, 1226, + 1226, 1226, 1226, 1226, 1226, 1227, 1228, 1229, + 1230, 1231, 1232, 1233, 1234, 1235, 1226, 1236, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 1121, 1121, - 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, + 51, 51, 51, 51, 51, 51, 1181, 1181, + 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, @@ -2161,721 +2176,196 @@ static const unsigned short uc_property_trie[] = { 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, - 1145, 1145, 1145, 1145, 51, 51, 51, 51, + 1206, 1206, 1206, 1206, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 1176, 1176, 1121, 1121, - 1177, 1118, 1145, 1145, 1145, 1145, 1145, 1145, + 51, 51, 51, 51, 1237, 1237, 1181, 1181, + 1238, 1176, 1206, 1206, 1206, 1206, 1206, 1206, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 1145, 1145, 1145, 51, 51, 51, 51, + 51, 1206, 1206, 1206, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1145, 51, 51, 51, 51, 51, 51, 36, - 1118, 1118, 1121, 1121, 1121, 1121, 1121, 1121, - 1121, 1121, 1121, 1121, 1121, 1121, 752, 1177, - - 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, - 1121, 1121, 811, 811, 811, 811, 811, 811, - 811, 811, 752, 752, 752, 752, 752, 752, - 752, 752, 752, 752, 752, 1178, 1149, 1149, - - 811, 811, 752, 752, 752, 752, 752, 752, - 752, 752, 752, 752, 1179, 752, 752, 752, - 752, 752, 1122, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1180, 1180, 1180, - - 1181, 1181, 1181, 1181, 1180, 1180, 1180, 1180, - 1180, 1149, 1149, 1149, 1149, 1180, 1150, 1180, - 1180, 1180, 1149, 1180, 1180, 1149, 1149, 1149, - 1180, 1180, 1149, 1149, 1180, 1149, 1149, 1180, - - 1180, 1180, 1150, 1149, 1150, 1150, 1150, 1150, - 1149, 1149, 1180, 1149, 1149, 1149, 1149, 1149, - 1149, 1180, 1180, 1180, 1180, 1180, 1149, 1180, - 1180, 1180, 1180, 1149, 1149, 1180, 1180, 1180, - - 175, 1145, 1145, 1145, 1145, 1150, 51, 51, - 1145, 1145, 1151, 1151, 1145, 1145, 51, 51, + 1206, 51, 51, 51, 51, 51, 51, 36, + 1176, 1176, 1181, 1181, 1181, 1181, 1181, 1181, + 1181, 1181, 1181, 1181, 1181, 1181, 1182, 1238, + + 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, + 1181, 1181, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1182, 1182, 1182, 1182, 1182, 1182, + 1182, 1182, 1182, 1182, 1182, 1239, 1210, 1210, + + 1177, 1177, 1182, 1182, 1182, 1182, 1182, 1182, + 1182, 1182, 1182, 1182, 1240, 1182, 1182, 1182, + 1182, 1182, 1183, 1239, 1239, 1239, 1239, 1239, + 1239, 1239, 1239, 1239, 1239, 1241, 1241, 1241, + + 1242, 1242, 1242, 1242, 1241, 1241, 1241, 1241, + 1241, 1210, 1210, 1210, 1210, 1241, 1211, 1241, + 1241, 1241, 1210, 1241, 1241, 1210, 1210, 1210, + 1241, 1241, 1210, 1210, 1241, 1210, 1210, 1241, + + 1241, 1241, 1211, 1210, 1211, 1211, 1211, 1211, + 1210, 1210, 1241, 1210, 1210, 1210, 1210, 1210, + 1210, 1241, 1241, 1241, 1241, 1241, 1210, 1241, + 1241, 1241, 1241, 1210, 1210, 1241, 1241, 1241, + + 177, 1206, 1206, 1206, 1206, 1211, 51, 51, + 1206, 1206, 1212, 1212, 1206, 1206, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1150, 51, 51, 51, 51, 51, 51, 51, + 1211, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 1150, 51, 1150, 51, - 51, 51, 51, 1150, 1150, 1150, 51, 1149, - 51, 51, 51, 1182, 1182, 1182, 1182, 1150, - - 1150, 51, 1183, 1183, 51, 51, 51, 51, - 1184, 1185, 1184, 1185, 1184, 1185, 1184, 1185, - 1184, 1185, 1184, 1185, 1184, 1185, 1152, 1153, - 1154, 1155, 1156, 1157, 1158, 1159, 1160, 64, - - 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, - 1160, 64, 1152, 1153, 1154, 1155, 1156, 1157, - 1158, 1159, 1160, 64, 51, 1150, 1150, 1150, + 51, 51, 51, 51, 1211, 51, 1211, 51, + 51, 51, 51, 1211, 1211, 1211, 51, 1210, + 51, 51, 51, 1243, 1243, 1243, 1243, 1211, + + 1211, 51, 1244, 1244, 51, 51, 51, 51, + 1245, 1246, 1245, 1246, 1245, 1246, 1245, 1246, + 1245, 1246, 1245, 1246, 1245, 1246, 1213, 1214, + 1215, 1216, 1217, 1218, 1219, 1220, 1221, 64, + + 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, + 1221, 64, 1213, 1214, 1215, 1216, 1217, 1218, + 1219, 1220, 1221, 64, 51, 1211, 1211, 1211, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1150, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 1150, - - 1186, 1186, 1186, 1187, 1188, 1189, 1190, 1148, - 1191, 1192, 1148, 1193, 1194, 1195, 1196, 1196, - 1074, 1074, 1074, 1074, 1074, 1197, 1198, 1074, - 1074, 1074, 1074, 1074, 1074, 1197, 1198, 1074, - - 1074, 1074, 1197, 1198, 1197, 1198, 1184, 1185, - 1184, 1185, 1184, 1185, 1199, 1200, 1199, 1200, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - - 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, - 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, - 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, - 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, - - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - - 1074, 1074, 1074, 1184, 1185, 1184, 1185, 1184, - 1185, 1184, 1185, 1184, 1185, 1201, 1202, 1203, - 1204, 1184, 1185, 1184, 1185, 1184, 1185, 1184, - 1185, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1205, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - - 1197, 1198, 1074, 1074, 1197, 1198, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1197, - 1198, 1197, 1198, 1074, 1197, 1198, 1074, 1074, - 1184, 1185, 1184, 1185, 1074, 1074, 1074, 1074, - - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1206, 1074, 1074, - 1197, 1198, 1074, 1074, 1184, 1185, 1074, 1074, - - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1197, 1198, 1197, 1198, 1074, - 1074, 1074, 1074, 1074, 1197, 1198, 1074, 1074, - 1074, 1074, 1074, 1074, 1197, 1198, 1074, 1074, - - 1074, 1074, 1074, 1074, 1197, 1198, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1197, 1198, 1074, 1074, 1197, 1198, 1197, - - 1198, 1197, 1198, 1197, 1198, 1074, 1074, 1074, - 1074, 1074, 1074, 1197, 1198, 1074, 1074, 1074, - 1074, 1197, 1198, 1197, 1198, 1197, 1198, 1197, - 1198, 1197, 1198, 1197, 1198, 1074, 1074, 1074, - - 1074, 1197, 1198, 1074, 1074, 1074, 1197, 1198, - 1197, 1198, 1197, 1198, 1197, 1198, 1074, 1197, - 1198, 1074, 1074, 1197, 1198, 1074, 1074, 1074, - 1074, 1074, 1074, 1197, 1198, 1197, 1198, 1197, - - 1198, 1197, 1198, 1197, 1198, 1197, 1198, 1074, - 1074, 1074, 1074, 1074, 1074, 1197, 1198, 1197, - 1198, 1197, 1198, 1197, 1198, 1197, 1198, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1207, 1074, - - 1074, 1074, 1074, 1208, 1209, 1208, 1074, 1074, - 1074, 1074, 1074, 1074, 1197, 1198, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1197, - 1198, 1197, 1198, 1074, 1074, 1074, 1074, 1074, - - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 752, 752, - 752, 752, 752, 752, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1178, 1178, 1178, 1178, 1178, - - 1122, 1122, 1122, 1122, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, - 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, - - 1194, 1194, 1194, 1194, 1194, 1178, 1178, 1194, - 1194, 1194, 1194, 1194, 1194, 175, 175, 175, - 1178, 1178, 1178, 1178, 1178, 1149, 1149, 1149, - 1149, 1149, 175, 175, 175, 175, 175, 175, - - 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, - 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, - 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, - 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, - - 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, - 1210, 1210, 1210, 1210, 1210, 1210, 1210, 175, - 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, - 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, - - 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, - 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, - 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, - 1211, 1211, 1211, 1211, 1211, 1211, 1211, 175, - - 117, 113, 1212, 1213, 1214, 1215, 1216, 117, - 113, 117, 113, 117, 113, 1217, 1218, 1219, - 1220, 939, 941, 942, 1221, 117, 113, 1221, - 939, 939, 939, 939, 1222, 1222, 1223, 1223, - - 108, 109, 108, 109, 108, 109, 108, 109, - 108, 109, 108, 109, 108, 109, 108, 109, - 108, 109, 108, 109, 108, 109, 108, 109, - 108, 109, 108, 109, 108, 109, 108, 109, - - 108, 109, 108, 109, 106, 752, 752, 752, - 752, 752, 752, 1224, 1225, 1224, 1225, 390, - 390, 390, 1226, 1227, 175, 175, 175, 175, - 175, 1228, 1078, 1078, 1078, 1229, 1228, 1078, - - 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, - 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, - 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, - 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, - - 1230, 1230, 1230, 1230, 1230, 1230, 175, 1231, - 175, 175, 175, 175, 175, 1231, 175, 175, - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - - 735, 735, 735, 735, 735, 735, 898, 898, - 175, 175, 175, 175, 175, 175, 175, 1232, - 1233, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 1234, - - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 735, 735, 735, 735, 735, 735, 735, 175, - 735, 735, 735, 735, 735, 735, 735, 175, - 735, 735, 735, 735, 735, 735, 735, 175, - 735, 735, 735, 735, 735, 735, 735, 175, - - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - - 1235, 1235, 1236, 1237, 1236, 1237, 1235, 1235, - 1235, 1236, 1237, 1235, 1236, 1237, 1078, 1078, - 1078, 1078, 1078, 1078, 1078, 1078, 1077, 1238, - 1239, 1240, 1241, 1242, 1236, 1237, 1242, 1242, - - 1243, 1244, 1199, 1200, 1199, 1200, 1199, 1200, - 1199, 1200, 1240, 1240, 1240, 1240, 1245, 1246, - 1240, 1247, 1248, 1249, 1249, 1248, 1248, 1248, - 1248, 1248, 1250, 1250, 175, 175, 175, 175, - - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 175, 1251, 1251, 1251, 1251, 1251, - - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 175, 175, 175, 175, - - 1252, 1253, 1254, 1255, 1145, 1256, 1257, 1258, - 16, 1070, 16, 1070, 16, 1070, 16, 1070, - 16, 1070, 1145, 1145, 16, 1070, 16, 1070, - 16, 1070, 16, 1070, 1259, 1051, 1260, 1260, - - 1145, 1258, 1258, 1258, 1258, 1258, 1258, 1258, - 1258, 1258, 1261, 1262, 152, 1263, 1264, 1264, - 1265, 1266, 1266, 1266, 1266, 1266, 1145, 1145, - 1267, 1267, 1267, 1268, 1269, 1270, 1251, 1145, - - 175, 1271, 1257, 1271, 1257, 1271, 1257, 1271, - 1257, 1271, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - - 1257, 1257, 1257, 1271, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - - 1257, 1257, 1257, 1271, 1257, 1271, 1257, 1271, - 1257, 1257, 1257, 1257, 1257, 1257, 1271, 1257, - 1257, 1257, 1257, 1257, 1257, 1272, 1272, 175, - 175, 1273, 1273, 1274, 1274, 1275, 1275, 1276, - - 1277, 1278, 1279, 1278, 1279, 1278, 1279, 1278, - 1279, 1278, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - - 1279, 1279, 1279, 1278, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - - 1279, 1279, 1279, 1278, 1279, 1278, 1279, 1278, - 1279, 1279, 1279, 1279, 1279, 1279, 1278, 1279, - 1279, 1279, 1279, 1279, 1279, 1278, 1278, 1279, - 1279, 1279, 1279, 1280, 1281, 1281, 1281, 1282, - - 175, 175, 175, 175, 175, 1283, 1283, 1283, - 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, - 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, - 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, - - 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, - 1283, 1283, 1283, 1283, 1283, 1284, 175, 175, - 175, 1285, 1285, 1285, 1285, 1285, 1285, 1285, - 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, - - 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, - 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, - 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, - 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, - - 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, - 1285, 1285, 1285, 1285, 1285, 1285, 1285, 175, - 1286, 1286, 1287, 1287, 1287, 1287, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1289, 1289, 1289, 175, 175, 175, 175, 175, + 1211, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 1211, + + 1247, 1247, 1247, 1248, 1249, 1250, 1251, 1209, + 1252, 1253, 1209, 1254, 1255, 1256, 1257, 1257, + 1129, 1129, 1129, 1129, 1129, 1258, 1259, 1129, + 1129, 1129, 1129, 1129, 1129, 1258, 1259, 1129, + + 1129, 1129, 1258, 1259, 1258, 1259, 1245, 1246, + 1245, 1246, 1245, 1246, 1260, 1261, 1260, 1261, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + + 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, + 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, + 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, + 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, + + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + + 1129, 1129, 1129, 1245, 1246, 1245, 1246, 1245, + 1246, 1245, 1246, 1245, 1246, 1263, 1264, 1265, + 1266, 1245, 1246, 1245, 1246, 1245, 1246, 1245, + 1246, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1267, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + + 1258, 1259, 1129, 1129, 1258, 1259, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1258, + 1259, 1258, 1259, 1129, 1258, 1259, 1129, 1129, + 1245, 1246, 1245, 1246, 1129, 1129, 1129, 1129, + + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1268, 1129, 1129, + 1258, 1259, 1129, 1129, 1245, 1246, 1129, 1129, + + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1258, 1259, 1258, 1259, 1129, + 1129, 1129, 1129, 1129, 1258, 1259, 1129, 1129, + 1129, 1129, 1129, 1129, 1258, 1259, 1129, 1129, + + 1129, 1129, 1129, 1129, 1258, 1259, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1258, 1259, 1129, 1129, 1258, 1259, 1258, + + 1259, 1258, 1259, 1258, 1259, 1129, 1129, 1129, + 1129, 1129, 1129, 1258, 1259, 1129, 1129, 1129, + 1129, 1258, 1259, 1258, 1259, 1258, 1259, 1258, + 1259, 1258, 1259, 1258, 1259, 1129, 1129, 1129, + + 1129, 1258, 1259, 1129, 1129, 1129, 1258, 1259, + 1258, 1259, 1258, 1259, 1258, 1259, 1129, 1258, + 1259, 1129, 1129, 1258, 1259, 1129, 1129, 1129, + 1129, 1129, 1129, 1258, 1259, 1258, 1259, 1258, + + 1259, 1258, 1259, 1258, 1259, 1258, 1259, 1129, + 1129, 1129, 1129, 1129, 1129, 1258, 1259, 1258, + 1259, 1258, 1259, 1258, 1259, 1258, 1259, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1269, 1129, + + 1129, 1129, 1129, 1270, 1271, 1270, 1129, 1129, + 1129, 1129, 1129, 1129, 1258, 1259, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1258, + 1259, 1258, 1259, 1129, 1129, 1129, 1129, 1129, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, - 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - - 1181, 1181, 1181, 1181, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, - 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, - - 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, - 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, - 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, - 1291, 1291, 1291, 1291, 1291, 1292, 1292, 175, - - 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, - 1287, 1287, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - - 1286, 1286, 1286, 1286, 1293, 1293, 1293, 1293, - 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, - 1176, 1295, 1295, 1295, 1295, 1295, 1295, 1295, - 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, - - 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, - 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, - 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, - 1291, 1291, 1291, 1291, 1292, 1292, 1296, 1286, - - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1295, 1295, 1295, 1295, 1295, 1295, 1295, - 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, - - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1176, 1176, 1176, 1176, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 175, - - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1176, - 1176, 1176, 1176, 1286, 1286, 1286, 1286, 1286, - - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1176, 1176, - - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1176, + 1177, 1177, 1177, 1177, 1177, 1177, 1182, 1182, + 1182, 1182, 1182, 1182, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1239, 1239, 1239, 1239, 1239, + + 1183, 1183, 1183, 1183, 1239, 1239, 1239, 1239, + 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, + 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, + 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, + + 1255, 1255, 1255, 1255, 1255, 1239, 1239, 1255, + 1255, 1255, 1255, 1255, 1255, 177, 177, 177, + 1239, 1239, 1239, 1239, 1239, 1210, 1210, 1210, + 1210, 1210, 177, 177, 177, 177, 177, 177, + + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 177, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 177, + + 117, 113, 1274, 1275, 1276, 1277, 1278, 117, + 113, 117, 113, 117, 113, 1279, 1280, 1281, + 1282, 993, 995, 996, 1283, 117, 113, 1283, + 993, 993, 993, 993, 1284, 1284, 1285, 1285, + + 1286, 1287, 1286, 1287, 1286, 1287, 1286, 1287, + 1286, 1287, 1286, 1287, 1286, 1287, 1286, 1287, + 1286, 1287, 1286, 1287, 1286, 1287, 1286, 1287, + 1286, 1287, 1286, 1287, 1286, 1287, 1286, 1287, + + 1286, 1287, 1286, 1287, 1288, 1289, 1289, 1289, + 1289, 1289, 1289, 1290, 1291, 1290, 1291, 1292, + 1292, 1292, 1293, 1294, 177, 177, 177, 177, + 177, 1295, 1296, 1296, 1296, 1297, 1295, 1296, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, - 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, - 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, - 1298, 1298, 1298, 1298, 1298, 1298, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - - 1257, 1257, 1257, 1257, 1257, 1257, 1300, 1300, - 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, - 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, - 1300, 1300, 1300, 1300, 1301, 1301, 1301, 1301, - - 1301, 1301, 1301, 1301, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1303, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1304, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 175, 175, 175, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - - 1251, 1251, 1305, 1305, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1305, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - - 1251, 1305, 1251, 1251, 1251, 1305, 1251, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 1306, 1306, 1306, 1306, 1306, 1306, 1307, 1308, - - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 908, 1240, 1245, 1309, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - - 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 804, 804, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 236, 237, 236, 237, 236, 237, 236, 237, - 236, 237, 236, 237, 236, 237, 236, 237, - 236, 237, 236, 237, 236, 237, 236, 237, - 236, 237, 236, 237, 236, 237, 236, 237, - - 240, 241, 236, 237, 236, 237, 236, 237, - 236, 237, 236, 237, 236, 237, 1310, 224, - 1311, 1311, 1311, 1312, 1313, 1313, 1313, 1313, - 1313, 1313, 1313, 1313, 224, 224, 1312, 1314, - - 236, 237, 236, 237, 236, 237, 236, 237, - 236, 237, 236, 237, 236, 237, 236, 237, - 236, 237, 236, 237, 236, 237, 236, 237, - 175, 175, 175, 175, 175, 175, 175, 1313, - - 754, 754, 754, 754, 754, 754, 1315, 1315, - 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, - 390, 390, 911, 1308, 1307, 1307, 1307, 1308, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, - 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, - 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1317, - 1317, 1317, 1317, 1246, 1246, 1246, 1246, 1246, - - 1318, 1318, 941, 942, 941, 942, 941, 942, - 941, 942, 941, 942, 941, 942, 941, 942, - 939, 939, 941, 942, 941, 942, 941, 942, - 941, 942, 941, 942, 941, 942, 941, 942, - - 941, 942, 941, 942, 941, 942, 941, 942, - 941, 942, 941, 942, 941, 942, 941, 942, - 941, 942, 941, 942, 941, 942, 941, 942, - 941, 942, 941, 942, 941, 942, 941, 942, - - 941, 942, 941, 942, 941, 942, 941, 942, - 941, 942, 941, 942, 941, 942, 941, 942, - 1222, 939, 939, 939, 939, 939, 939, 939, - 939, 941, 942, 941, 942, 1319, 941, 942, - - 941, 942, 941, 942, 941, 942, 941, 942, - 1246, 1320, 1320, 941, 942, 1321, 1322, 175, - 1323, 1324, 1226, 1227, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1323, 1324, 1323, 1324, 1323, 1324, 1323, 1324, - 1323, 1324, 1325, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1326, 1326, 1322, 804, 804, 804, 804, 804, - - 735, 735, 1327, 735, 735, 735, 1328, 735, - 735, 735, 735, 1327, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - - 735, 735, 735, 842, 842, 1327, 1327, 842, - 752, 752, 752, 752, 175, 175, 175, 175, - 1294, 1294, 1294, 1294, 1294, 1294, 681, 681, - 1100, 1329, 175, 175, 175, 175, 175, 175, - - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 1330, 1330, 1331, 1331, - 175, 175, 175, 175, 175, 175, 175, 175, - - 884, 884, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 884, 884, 884, 884, - 884, 884, 884, 884, 884, 884, 884, 884, - - 884, 884, 884, 884, 1332, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 906, 906, - 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 175, 175, 175, 175, 175, 175, - - 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, - 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, - 1333, 1333, 431, 431, 431, 431, 431, 431, - 1334, 1334, 1334, 431, 175, 175, 175, 175, - - 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - - 804, 804, 804, 804, 804, 804, 883, 883, - 883, 883, 883, 1335, 1335, 1335, 907, 906, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - - 804, 804, 804, 804, 804, 804, 804, 883, - 883, 883, 883, 883, 883, 883, 883, 883, - 883, 883, 884, 885, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 1336, - - 729, 729, 729, 729, 729, 729, 729, 729, - 729, 729, 729, 729, 729, 729, 729, 729, - 729, 729, 729, 729, 729, 729, 729, 729, - 729, 729, 729, 729, 729, 175, 175, 175, - - 1337, 1337, 1337, 914, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 1338, 914, 914, 1337, 1337, - 1337, 1337, 914, 914, 1337, 914, 914, 914, - - 1339, 911, 911, 911, 911, 911, 911, 1307, - 1308, 1308, 911, 911, 911, 911, 175, 1306, - 849, 850, 851, 852, 853, 854, 855, 856, - 857, 858, 175, 175, 175, 175, 911, 911, - - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 883, 883, 883, 883, 883, 883, 884, - 884, 883, 883, 884, 884, 883, 883, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 804, 804, 804, 883, 804, 804, 804, 804, - 804, 804, 804, 804, 883, 884, 175, 175, - 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 175, 175, 1336, 906, 906, 906, - - 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, - 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, - 1341, 1340, 1340, 1340, 1340, 1340, 1340, 1342, - 1342, 1342, 1340, 717, 175, 175, 175, 175, - - 825, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 825, 825, 825, 825, 825, 825, - 847, 825, 847, 847, 1343, 825, 825, 847, - 847, 825, 825, 825, 825, 825, 847, 847, - - 825, 847, 825, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 825, 825, 860, 859, 859, - - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 887, 1344, 1344, 887, 887, - 1345, 1345, 898, 1346, 1346, 887, 886, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 899, 899, 899, 899, 899, 899, 175, - 175, 899, 899, 899, 899, 899, 899, 175, - 175, 899, 899, 899, 899, 899, 899, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 899, 899, 899, 899, 899, 899, 899, 175, - 899, 899, 899, 899, 899, 899, 899, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 754, 754, 754, 914, 914, 1337, 914, 914, - 1337, 914, 914, 1308, 914, 1347, 175, 175, - 849, 850, 851, 852, 853, 854, 855, 856, - 857, 858, 175, 175, 175, 175, 175, 175, - - 1348, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1348, 1349, 1349, 1349, - - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1348, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1348, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1348, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1348, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1348, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - - 1349, 1349, 1349, 1349, 1348, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - - 1349, 1349, 1349, 1349, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 731, 731, 731, 731, 731, 731, 731, 731, - 731, 731, 731, 731, 731, 731, 731, 731, - - 731, 731, 731, 731, 731, 731, 731, 175, - 175, 175, 175, 733, 733, 733, 733, 733, - 733, 733, 733, 733, 733, 733, 733, 733, - 733, 733, 733, 733, 733, 733, 733, 733, - - 733, 733, 733, 733, 733, 733, 733, 733, - 733, 733, 733, 733, 733, 733, 733, 733, - 733, 733, 733, 733, 733, 733, 733, 733, - 733, 733, 733, 733, 175, 175, 175, 175, - - 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, - 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, - 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, - 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, - - 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, - 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, - 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, - 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, - - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1303, 1303, - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - 1276, 1276, 1276, 1302, 1302, 1302, 1299, 1299, + 1298, 1298, 1298, 1298, 1298, 1298, 177, 1299, + 177, 177, 177, 177, 177, 1299, 177, 177, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, @@ -2884,1886 +2374,2456 @@ static const unsigned short uc_property_trie[] = { 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, - 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, - 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, - 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, - 1300, 1300, 1299, 1299, 1299, 1299, 1299, 1299, - - 1352, 1353, 1354, 1355, 1356, 1357, 1357, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 1358, 1359, 1360, 1361, 1362, - 175, 175, 175, 175, 175, 1363, 1364, 279, - - 279, 279, 279, 279, 279, 279, 279, 279, - 279, 1365, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 252, - 279, 279, 279, 279, 279, 252, 279, 252, - - 279, 279, 252, 279, 279, 252, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 1366, 1366, 1366, 1366, 1366, 1366, - 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, - - 1366, 1366, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 1051, 1260, - - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, + 1300, 1300, 1300, 1300, 1300, 1300, 1301, 1301, + 177, 177, 177, 177, 177, 177, 177, 1302, + 1303, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 1304, + + 739, 739, 739, 739, 739, 739, 739, 739, + 739, 739, 739, 739, 739, 739, 739, 739, + 739, 739, 739, 739, 739, 739, 739, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 739, 739, 739, 739, 739, 739, 739, 177, + 739, 739, 739, 739, 739, 739, 739, 177, + 739, 739, 739, 739, 739, 739, 739, 177, + 739, 739, 739, 739, 739, 739, 739, 177, + + 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, + + 1305, 1305, 1306, 1307, 1306, 1307, 1305, 1305, + 1305, 1306, 1307, 1305, 1306, 1307, 1133, 1133, + 1133, 1133, 1133, 1133, 1133, 1133, 1132, 1308, + 1309, 1310, 1311, 1312, 1306, 1307, 1312, 1312, + + 1313, 1314, 1260, 1261, 1260, 1261, 1260, 1261, + 1260, 1261, 1310, 1310, 1310, 1310, 1315, 1316, + 1310, 1317, 1318, 1319, 1319, 1318, 1318, 1318, + 1318, 1318, 1320, 1320, 177, 177, 177, 177, + + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 177, 1321, 1321, 1321, 1321, 1321, + + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 1321, 1321, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, + 1322, 1322, 1322, 1322, 177, 177, 177, 177, + + 1323, 1324, 1325, 1326, 1206, 1327, 1328, 1329, + 16, 1124, 16, 1124, 16, 1124, 16, 1124, + 16, 1124, 1206, 1206, 16, 1124, 16, 1124, + 16, 1124, 16, 1124, 1330, 1105, 1331, 1331, + + 1206, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1332, 1333, 154, 1334, 1335, 1335, + 1336, 1337, 1337, 1337, 1337, 1337, 1206, 1206, + 1338, 1338, 1338, 1339, 1340, 1341, 1322, 1206, + + 177, 1342, 1343, 1342, 1343, 1342, 1343, 1342, + 1343, 1342, 1343, 1343, 1343, 1343, 1343, 1343, + 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, + 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, + + 1343, 1343, 1343, 1342, 1343, 1343, 1343, 1343, + 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, + 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, + 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, + + 1343, 1343, 1343, 1342, 1343, 1342, 1343, 1342, + 1343, 1343, 1343, 1343, 1343, 1343, 1342, 1343, + 1343, 1343, 1343, 1343, 1343, 1344, 1344, 177, + 177, 1345, 1345, 1346, 1346, 1347, 1347, 1348, + + 1349, 1350, 1351, 1350, 1351, 1350, 1351, 1350, + 1351, 1350, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - 284, 284, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, + 1351, 1351, 1351, 1350, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, - 300, 300, 300, 300, 300, 300, 300, 300, - 284, 284, 284, 284, 284, 284, 284, 284, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1351, 1351, 1351, 1350, 1351, 1350, 1351, 1350, + 1351, 1351, 1351, 1351, 1351, 1351, 1350, 1351, + 1351, 1351, 1351, 1351, 1351, 1350, 1350, 1351, + 1351, 1351, 1351, 1352, 1353, 1354, 1354, 1355, + + 177, 177, 177, 177, 177, 1356, 1356, 1356, + 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, + 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, + 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, + + 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, + 1356, 1356, 1356, 1356, 1356, 1357, 177, 177, + 177, 1358, 1358, 1358, 1358, 1358, 1358, 1358, + 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, + + 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, + 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, + 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, + 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, + + 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, + 1358, 1358, 1358, 1358, 1358, 1358, 1358, 177, + 1359, 1359, 1360, 1360, 1360, 1360, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + + 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, + 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, + 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, + 1362, 1362, 1362, 177, 177, 177, 177, 177, + + 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, + 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + + 1242, 1242, 1242, 1242, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1365, 1365, 177, + + 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, + 1360, 1360, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + + 1359, 1359, 1359, 1359, 1366, 1366, 1366, 1366, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1237, 1368, 1368, 1368, 1368, 1368, 1368, 1368, + 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, + + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1365, 1365, 1369, 1359, + + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1368, 1368, 1368, 1368, 1368, 1368, 1368, + 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, + + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1237, 1237, 1237, 1237, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 177, + + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1237, + 1237, 1237, 1237, 1359, 1359, 1359, 1359, 1359, + + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1237, 1237, + + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1237, + + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + 1371, 1371, 1371, 1371, 1371, 1371, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 1368, 811, 284, 284, - - 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, - 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, - 1370, 1371, 1372, 1373, 1374, 1228, 1228, 1375, - 1376, 1377, 175, 175, 175, 175, 175, 175, - - 151, 151, 151, 151, 927, 927, 927, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1255, 1378, 1378, 1379, 1379, 1051, 1260, 1051, - 1260, 1051, 1260, 1051, 1260, 1051, 1260, 1051, - - 1260, 1051, 1260, 1051, 1260, 1270, 1270, 1380, - 1381, 1255, 1255, 1255, 1255, 1379, 1379, 1379, - 1382, 1383, 1384, 175, 1385, 1386, 9, 9, - 1378, 16, 1070, 16, 1070, 16, 1070, 1387, - - 1255, 1255, 1388, 1389, 1390, 1391, 1392, 175, - 1255, 12, 13, 1255, 175, 175, 175, 175, - 300, 300, 300, 1393, 300, 284, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 284, 284, 1394, - - 175, 9, 1255, 1387, 12, 13, 1255, 1395, - 16, 1070, 1255, 1388, 1382, 1389, 1384, 1396, - 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, - 1405, 1406, 1386, 1385, 1407, 1392, 1408, 9, - - 1255, 1409, 1409, 1409, 1409, 1409, 1409, 1409, - 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, - 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, - 1409, 1409, 1409, 39, 1255, 46, 1410, 1379, - - 1410, 1411, 1411, 1411, 1411, 1411, 1411, 1411, - 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, - 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, - 1411, 1411, 1411, 39, 1392, 46, 1392, 1184, - - 1185, 1254, 16, 1070, 1253, 1280, 1412, 1278, - 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, - 1281, 1412, 1412, 1412, 1412, 1412, 1412, 1412, - 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + + 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, + 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, + 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, + 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, + + 1373, 1373, 1373, 1373, 1373, 1373, 1374, 1374, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1374, 1374, 1375, 1375, 1375, 1375, + + 1375, 1375, 1375, 1375, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1377, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + + 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, + 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, + 1378, 1378, 1378, 1378, 1378, 1379, 1378, 1378, + 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, + + 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, + 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, + 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, + 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, + + 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, + 1378, 1378, 1378, 1378, 1378, 177, 177, 177, + 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, + 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, + + 1380, 1380, 1381, 1381, 1380, 1380, 1380, 1380, + 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, + 1380, 1380, 1380, 1380, 1381, 1380, 1380, 1380, + 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, + + 1380, 1381, 1380, 1380, 1380, 1381, 1380, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, + 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, + + 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, + 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, + 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, + 1383, 1383, 1383, 1383, 1383, 1383, 1384, 1385, + + 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, + 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, + 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, + 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, + + 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, + 1386, 1386, 1386, 1386, 1387, 1388, 1389, 1390, + 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, + 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, + + 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, + 1399, 1400, 1386, 1386, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 240, 241, 240, 241, 240, 241, 240, 241, + 240, 241, 240, 241, 240, 241, 240, 241, + 240, 241, 240, 241, 240, 241, 240, 241, + 240, 241, 240, 241, 240, 241, 240, 241, + + 244, 245, 240, 241, 240, 241, 240, 241, + 240, 241, 240, 241, 240, 241, 1401, 228, + 1402, 1402, 1402, 1403, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 228, 228, 1403, 1405, + + 240, 241, 240, 241, 240, 241, 240, 241, + 240, 241, 240, 241, 240, 241, 240, 241, + 240, 241, 240, 241, 240, 241, 240, 241, + 177, 177, 177, 177, 177, 177, 177, 1404, + + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + + 1406, 1406, 1406, 1406, 1406, 1406, 1407, 1407, + 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, + 1408, 1408, 1409, 1410, 1411, 1411, 1411, 1410, + 177, 177, 177, 177, 177, 177, 177, 177, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, - 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, - 1412, 1412, 1412, 1412, 1412, 1412, 1413, 1413, - - 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, - 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, - 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, - 1414, 1414, 1414, 1414, 1414, 1414, 1414, 175, - - 175, 175, 1414, 1414, 1414, 1414, 1414, 1414, - 175, 175, 1414, 1414, 1414, 1414, 1414, 1414, - 175, 175, 1414, 1414, 1414, 1414, 1414, 1414, - 175, 175, 1414, 1414, 1414, 175, 175, 175, - - 50, 12, 1392, 1410, 1145, 12, 12, 175, - 51, 36, 36, 36, 36, 51, 51, 175, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1415, 1415, 1415, 1416, 51, 1417, 1417, - - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 175, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - - 805, 805, 805, 805, 805, 805, 805, 175, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 175, 805, 805, 175, 805, - - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 175, 175, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 175, 175, - - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 175, 175, 175, 175, 175, - - 1418, 1419, 1418, 175, 175, 175, 175, 1420, - 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, - 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, - 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, - - 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, - 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, - 1420, 1420, 1420, 1420, 175, 175, 175, 1421, - 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, - - 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, - 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, - 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, - 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, - - 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, - 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, - 1422, 1422, 1422, 1422, 1422, 1423, 1423, 1423, - 1423, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1423, 175, 175, 175, 175, 175, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, - 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, - - 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, - 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, - 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, - 1124, 1124, 1124, 1124, 1124, 930, 175, 175, - - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 175, 175, 175, - - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 175, - - 1426, 1426, 1426, 1426, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - - 1425, 1427, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1427, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 175, 1418, - - 735, 735, 735, 735, 175, 175, 175, 175, - 735, 735, 735, 735, 735, 735, 735, 735, - 1428, 1429, 1429, 1429, 1429, 1429, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1413, + 1413, 1413, 1413, 1316, 1316, 1316, 1316, 1316, + + 1414, 1414, 995, 996, 995, 996, 995, 996, + 995, 996, 995, 996, 995, 996, 995, 996, + 993, 993, 995, 996, 995, 996, 995, 996, + 995, 996, 995, 996, 995, 996, 995, 996, + + 995, 996, 995, 996, 995, 996, 995, 996, + 995, 996, 995, 996, 995, 996, 995, 996, + 995, 996, 995, 996, 995, 996, 995, 996, + 995, 996, 995, 996, 995, 996, 995, 996, + + 995, 996, 995, 996, 995, 996, 995, 996, + 995, 996, 995, 996, 995, 996, 995, 996, + 1284, 993, 993, 993, 993, 993, 993, 993, + 993, 995, 996, 995, 996, 1415, 995, 996, + + 995, 996, 995, 996, 995, 996, 995, 996, + 1316, 1416, 1416, 995, 996, 1417, 1418, 177, + 1419, 1420, 1421, 1422, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1419, 1420, 1419, 1420, 1419, 1420, 1419, 1420, + 1419, 1420, 1423, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1424, 1424, 1418, 1425, 1425, 1425, 1425, 1425, + + 1426, 1426, 1427, 1426, 1426, 1426, 1428, 1426, + 1426, 1426, 1426, 1427, 1426, 1426, 1426, 1426, + 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, + 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, + + 1426, 1426, 1426, 1429, 1429, 1427, 1427, 1429, + 1430, 1430, 1430, 1430, 177, 177, 177, 177, + 1367, 1367, 1367, 1367, 1367, 1367, 685, 685, + 1155, 1431, 177, 177, 177, 177, 177, 177, - 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, - 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, - 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, - 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, - - 1430, 1430, 1430, 1430, 1430, 1430, 1431, 1431, + 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, - 1432, 1432, 1432, 1432, 1432, 1432, 1433, 1433, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 175, 175, - - 813, 814, 815, 816, 817, 818, 819, 820, - 821, 822, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1434, 1434, 1434, 1434, 1434, 1434, 252, 252, - 1434, 252, 1434, 1434, 1434, 1434, 1434, 1434, - 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, - 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, - - 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, - 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, - 1434, 1434, 1434, 1434, 1434, 1434, 252, 1434, - 1434, 252, 252, 252, 1434, 252, 252, 1434, - - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 252, 1435, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, + 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, + 1432, 1432, 1432, 1432, 1433, 1433, 1434, 1434, + 177, 177, 177, 177, 177, 177, 177, 177, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1438, 1438, - 1438, 1438, 1436, 1436, 252, 252, 252, 1439, - - 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, - 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, - 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, - 1440, 1440, 252, 252, 252, 252, 252, 1441, - - 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, - 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, - 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, - 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, - - 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, - 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, - 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, - 252, 252, 252, 252, 252, 252, 1442, 1442, - - 1443, 1327, 1327, 1327, 252, 1327, 1327, 252, - 252, 252, 252, 252, 1327, 841, 1327, 737, - 1443, 1443, 1443, 1443, 252, 1443, 1443, 1443, - 252, 1443, 1443, 1443, 1443, 1443, 1443, 1443, - - 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, - 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, - 1443, 1443, 1443, 1443, 252, 252, 252, 252, - 737, 1444, 841, 252, 252, 252, 252, 1328, - - 1445, 1446, 1447, 1448, 1449, 1449, 1449, 1449, - 252, 252, 252, 252, 252, 252, 252, 252, - 1450, 1450, 1450, 1450, 1450, 1450, 1451, 1451, - 1452, 252, 252, 252, 252, 252, 252, 252, - - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 1436, 1436, 392, - - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 252, 252, - 252, 1247, 1247, 1247, 1247, 1247, 1247, 1247, - - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 252, 252, + 1435, 1435, 1436, 1436, 1436, 1436, 1436, 1436, + 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, + 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 252, 252, 252, 252, 252, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, + 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, + 1436, 1436, 1436, 1436, 1435, 1435, 1435, 1435, + 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, + + 1435, 1435, 1435, 1435, 1437, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 1438, 1438, + 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, + 1447, 1448, 177, 177, 177, 177, 177, 177, + + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 435, 435, 435, 435, 435, 435, + 1450, 1450, 1450, 435, 177, 177, 177, 177, + + 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, + 1459, 1460, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + + 1461, 1461, 1461, 1461, 1461, 1461, 1462, 1462, + 1462, 1462, 1462, 1463, 1463, 1463, 1464, 1465, + 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, + 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, + + 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1468, 1469, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 1470, + + 733, 733, 733, 733, 733, 733, 733, 733, + 733, 733, 733, 733, 733, 733, 733, 733, + 733, 733, 733, 733, 733, 733, 733, 733, + 733, 733, 733, 733, 733, 177, 177, 177, + + 1471, 1471, 1471, 1472, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1474, 1472, 1472, 1471, 1471, + 1471, 1471, 1472, 1472, 1471, 1472, 1472, 1472, + + 1475, 1476, 1476, 1476, 1476, 1476, 1476, 1477, + 1478, 1478, 1476, 1476, 1476, 1476, 177, 1479, + 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, + 1488, 1489, 177, 177, 177, 177, 1476, 1476, + + 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, + 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, + 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, + 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, + + 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, + 1490, 1491, 1491, 1491, 1491, 1491, 1491, 1492, + 1492, 1491, 1491, 1492, 1492, 1491, 1491, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1490, 1490, 1490, 1491, 1490, 1490, 1490, 1490, + 1490, 1490, 1490, 1490, 1491, 1492, 177, 177, + 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, + 1501, 1502, 177, 177, 1503, 1504, 1504, 1504, + + 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, + 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, + 1506, 1505, 1505, 1505, 1505, 1505, 1505, 1507, + 1507, 1507, 1505, 721, 177, 177, 177, 177, + + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1509, 1508, 1509, 1509, 1510, 1508, 1508, 1509, + 1509, 1508, 1508, 1508, 1508, 1508, 1509, 1509, + + 1508, 1509, 1508, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 1508, 1508, 1511, 1512, 1512, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - - 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, - 1461, 1462, 1462, 1462, 1462, 1462, 1462, 1462, - 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, - 1462, 1462, 1462, 1462, 1462, 1462, 1462, 252, - - 901, 902, 901, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 902, 902, 902, 902, 902, 902, 902, 902, - 902, 902, 902, 902, 902, 902, 1234, 1463, - 1463, 904, 904, 904, 904, 904, 175, 175, - 175, 175, 1464, 1465, 1466, 1467, 1468, 1469, - 1470, 1471, 1472, 1473, 1473, 1473, 1473, 1473, - 1473, 1473, 1473, 1473, 1473, 1473, 1474, 1475, - 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1337, 1337, 914, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 914, 914, 914, 1337, 1337, 1337, 1337, 914, - 914, 1347, 1338, 911, 911, 1484, 1308, 1308, - 1308, 1308, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 175, 175, 175, 175, 175, 175, 175, - 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, - 1493, 1494, 175, 175, 175, 175, 175, 175, - - 1495, 1495, 1495, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 1344, - 1344, 1344, 1344, 1344, 887, 1344, 1344, 1344, - 1344, 1344, 1344, 886, 886, 175, 1485, 1486, - 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, - 1496, 1345, 1345, 1345, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1344, 1344, 887, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 887, 887, 887, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 887, - 1497, 898, 898, 898, 898, 1345, 1345, 909, - 1496, 175, 175, 175, 175, 175, 175, 175, - 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, - 1493, 1494, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 1344, 887, 1344, 887, 887, - 1344, 1344, 1344, 1344, 1344, 1344, 1497, 1498, - 175, 175, 175, 175, 175, 175, 175, 175, - 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, - 1493, 1494, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 879, 879, 879, 879, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 1500, 1500, 1500, 1501, 1501, 1501, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 1501, 754, 754, 754, 1500, 1501, - 1500, 1501, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 1500, 1501, 1501, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 898, 887, 887, 887, 887, 887, 887, 887, - 887, 887, 887, 887, 887, 887, 887, 887, - 887, 887, 887, 887, 887, 887, 887, 887, - 887, 887, 887, 887, 887, 887, 887, 887, - 887, 887, 887, 887, 887, 887, 887, 887, - 887, 887, 887, 887, 887, 887, 887, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 1344, - 1344, 1344, 1344, 1346, 1346, 1346, 1346, 1346, - 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1502, 1503, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 175, - 175, 1124, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1505, 1506, 1507, - 1507, 1507, 1504, 1504, 1504, 1508, 1505, 1505, - 1505, 1505, 1505, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1504, 1504, 1511, 1511, 1511, - 1511, 1511, 1510, 1510, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1511, 1511, 1511, 1511, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1512, 1512, 1512, 1424, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, - 1513, 1513, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 175, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1514, 175, 1514, 1514, - 175, 175, 1514, 175, 175, 1514, 1514, 175, - 175, 1514, 1514, 1514, 1514, 175, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1515, 1515, - 1515, 1515, 175, 1515, 175, 1515, 1515, 1515, - 1515, 105, 1515, 1515, 175, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - - 1515, 1515, 1515, 1515, 1514, 1514, 175, 1514, - 1514, 1514, 1514, 175, 175, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 175, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 175, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1514, 1514, 175, 1514, 1514, 1514, 1514, 175, - 1514, 1514, 1514, 1514, 1514, 175, 1514, 175, - 175, 175, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 175, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 106, 106, 175, 175, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1516, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1517, 1515, 1515, 1515, 1515, - 1515, 1515, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1516, 1515, 1515, 1515, 1515, - - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1517, 1515, 1515, - 1515, 1515, 1515, 1515, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1516, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1517, - 1515, 1515, 1515, 1515, 1515, 1515, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1516, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1517, 1515, 1515, 1515, 1515, 1515, 1515, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1516, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1517, 1515, 1515, 1515, 1515, - 1515, 1515, 1518, 1221, 175, 175, 1519, 1520, - 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, - 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, - 1527, 1528, 1519, 1520, 1521, 1522, 1523, 1524, - 1525, 1526, 1527, 1528, 1519, 1520, 1521, 1522, - 1523, 1524, 1525, 1526, 1527, 1528, 1519, 1520, - 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, - - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - - 1529, 1529, 1529, 1529, 284, 1529, 1529, 1529, - 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, - 284, 1529, 1529, 284, 1529, 284, 284, 1529, - 284, 1529, 1529, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 284, 1529, 1529, 1529, 1529, - 284, 1529, 284, 1529, 284, 284, 284, 284, - 284, 284, 1529, 284, 284, 284, 284, 1529, - 284, 1529, 284, 1529, 284, 1529, 1529, 1529, - 284, 1529, 1529, 284, 1529, 284, 284, 1529, - 284, 1529, 284, 1529, 284, 1529, 284, 1529, - 284, 1529, 1529, 284, 1529, 284, 284, 1529, - 1529, 1529, 1529, 284, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 284, 1529, 1529, 1529, 1529, - 284, 1529, 1529, 1529, 1529, 284, 1529, 284, - 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 284, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 1529, 284, 284, 284, 284, - 284, 1529, 1529, 1529, 284, 1529, 1529, 1529, - 1529, 1529, 284, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 1529, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 1530, 1530, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, + 1513, 1513, 1513, 1514, 1515, 1515, 1514, 1514, + 1516, 1516, 1513, 1517, 1517, 1514, 1518, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 1519, 1519, 1519, 1519, 1519, 1519, 177, + 177, 1519, 1519, 1519, 1519, 1519, 1519, 177, + 177, 1519, 1519, 1519, 1519, 1519, 1519, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1519, 1519, 1519, 1519, 1519, 1519, 1519, 177, + 1519, 1519, 1519, 1519, 1519, 1519, 1519, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, + 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, + 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, + 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, + + 1520, 1520, 1520, 1521, 1521, 1522, 1521, 1521, + 1522, 1521, 1521, 1523, 1521, 1524, 177, 177, + 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, + 1533, 1534, 177, 177, 177, 177, 177, 177, + + 1535, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1535, 1536, 1536, 1536, + + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1535, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1535, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1535, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1535, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1535, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + + 1536, 1536, 1536, 1536, 1535, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + + 1536, 1536, 1536, 1536, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 735, 735, 735, 735, 735, 735, 735, 735, + 735, 735, 735, 735, 735, 735, 735, 735, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 175, 175, 175, 175, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 175, - 175, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 175, - 175, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 175, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1531, 1531, 1532, 1533, 1534, 1535, 1536, 1537, - 1538, 1539, 1540, 175, 175, 175, 175, 175, - 681, 681, 681, 681, 681, 681, 681, 681, - 681, 681, 681, 681, 681, 681, 681, 681, - 681, 681, 681, 681, 681, 681, 681, 681, - 681, 681, 681, 681, 681, 681, 681, 175, - 1541, 681, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 681, 1541, 681, - 1541, 1541, 681, 1541, 1541, 1541, 681, 1541, - 1541, 1541, 681, 681, 681, 681, 681, 1541, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 681, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 681, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1542, 1542, 175, 175, 175, 175, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 681, 1541, 681, 681, 1541, 1541, 681, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 681, 681, 681, 681, 1541, 1541, - 681, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - - 1293, 1544, 1544, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, - 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, - 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, - 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, - 1293, 1293, 1544, 1544, 1544, 1544, 1544, 1544, - 1544, 1544, 1544, 175, 175, 175, 175, 175, - 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, - 1293, 175, 175, 175, 175, 175, 175, 175, - 1544, 1544, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1151, 1151, 1151, 1151, 1151, 1151, 175, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 175, 175, 175, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1150, 1150, 1151, - 1151, 1151, 1151, 1151, 1150, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 175, 1151, 1151, - 1151, 1151, 1151, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 175, - 1151, 175, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1150, 1151, 1150, 1151, 1150, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1150, - 1151, 1150, 1150, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 175, 1151, 1151, 1151, 1151, 175, 175, 175, - - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 175, 175, - 1542, 1542, 1542, 1542, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 1151, 1151, 1151, 1151, 1151, - - 1545, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1545, 1151, 1151, 1151, 1545, 1151, 1545, - 1151, 1545, 1151, 1545, 1151, 1151, 1151, 1545, - 1151, 1151, 1151, 1151, 1151, 1151, 1545, 1545, - 1151, 1151, 1151, 1151, 1545, 1151, 1545, 1545, - 1151, 1151, 1151, 1151, 1545, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 175, 175, 175, 175, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 1546, 1546, - - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1546, 1546, - - 1083, 1509, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + 735, 735, 735, 735, 735, 735, 735, 177, + 177, 177, 177, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, + + 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 177, 177, 177, 177, + + 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, + 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, + 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, + 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, + + 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, + 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, + 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, + 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, + + 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, + 1373, 1373, 1373, 1373, 1373, 1373, 1377, 1377, + 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, + 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, + + 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, + 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, + 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, + 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, + + 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, + 1539, 1539, 1539, 1376, 1376, 1376, 1372, 1372, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1372, 1372, 1372, 1372, 1372, 1372, + + 1540, 1541, 1542, 1543, 1544, 1545, 1545, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 1546, 1547, 1548, 1549, 1550, + 177, 177, 177, 177, 177, 1551, 1552, 283, + + 283, 283, 283, 283, 283, 283, 283, 283, + 283, 1553, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 256, + 283, 283, 283, 283, 283, 256, 283, 256, + + 283, 283, 256, 283, 283, 256, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 1554, 1554, 1554, 1554, 1554, 1554, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + + 1554, 1554, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 1105, 1331, + + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + 288, 288, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + + 304, 304, 304, 304, 304, 304, 304, 304, + 288, 288, 288, 288, 288, 288, 288, 288, + 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, + 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, + + 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, + 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 1556, 1177, 288, 288, + + 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, + 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, + 1558, 1559, 1560, 1561, 1562, 1563, 1563, 1564, + 1565, 1566, 177, 177, 177, 177, 177, 177, + + 153, 153, 153, 153, 981, 981, 981, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1326, 1567, 1567, 1568, 1568, 1105, 1331, 1105, + 1331, 1105, 1331, 1105, 1331, 1105, 1331, 1105, + + 1331, 1105, 1331, 1105, 1331, 1341, 1341, 1569, + 1570, 1326, 1326, 1326, 1326, 1568, 1568, 1568, + 1571, 1572, 1573, 177, 1574, 1575, 9, 9, + 1567, 16, 1124, 16, 1124, 16, 1124, 1576, + + 1326, 1326, 1577, 1578, 1579, 1580, 1581, 177, + 1326, 12, 13, 1326, 177, 177, 177, 177, + 304, 304, 304, 1582, 304, 288, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 288, 288, 1583, + + 177, 9, 1326, 1576, 12, 13, 1326, 1584, + 16, 1124, 1326, 1577, 1571, 1578, 1573, 1585, + 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, + 1594, 1595, 1575, 1574, 1596, 1581, 1597, 9, + + 1326, 1598, 1598, 1598, 1598, 1598, 1598, 1598, + 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, + 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, + 1598, 1598, 1598, 39, 1326, 46, 1599, 1568, + + 1599, 1600, 1600, 1600, 1600, 1600, 1600, 1600, + 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, + 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, + 1600, 1600, 1600, 39, 1581, 46, 1581, 1245, + + 1246, 1325, 16, 1124, 1324, 1352, 1601, 1350, + 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, + 1353, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1602, 1602, + + 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, + 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, + 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, + 1603, 1603, 1603, 1603, 1603, 1603, 1603, 177, + + 177, 177, 1603, 1603, 1603, 1603, 1603, 1603, + 177, 177, 1603, 1603, 1603, 1603, 1603, 1603, + 177, 177, 1603, 1603, 1603, 1603, 1603, 1603, + 177, 177, 1603, 1603, 1603, 177, 177, 177, + + 50, 12, 1581, 1599, 1206, 12, 12, 177, + 51, 36, 36, 36, 36, 51, 51, 177, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1604, 1604, 1604, 1605, 51, 1606, 1606, + + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 177, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 177, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 177, 1607, 1607, 177, 1607, + + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 177, 177, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 177, 177, + + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 177, 177, 177, 177, 177, + + 1608, 1609, 1608, 177, 177, 177, 177, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 177, 177, 177, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + + 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, + 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, + 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, + 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, + + 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, + 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, + 1612, 1612, 1612, 1612, 1612, 1613, 1613, 1613, + 1613, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1613, 177, 177, 177, 177, 177, + 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, + 1239, 1239, 1239, 1239, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, + 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, + + 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, + 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, + 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, + 1185, 1185, 1185, 1185, 1185, 984, 177, 177, + + 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, + 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, + 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, + 1615, 1615, 1615, 1615, 1615, 177, 177, 177, + + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, + 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, + 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, + 1617, 1617, 1617, 1617, 1617, 1617, 1617, 177, + + 1618, 1618, 1618, 1618, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + + 1619, 1620, 1619, 1619, 1619, 1619, 1619, 1619, + 1619, 1619, 1620, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 177, 1622, + + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + + 1623, 1623, 1623, 1623, 177, 177, 177, 177, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1624, 1625, 1625, 1625, 1625, 1625, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + + 1626, 1626, 1626, 1626, 1626, 1626, 1627, 1627, + 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, + 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, + 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, + + 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, + 1628, 1628, 1628, 1628, 1628, 1628, 1629, 1629, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + + 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, + 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, + 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, + 1631, 1631, 1631, 1631, 1631, 1631, 177, 177, + + 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, + 1640, 1641, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1642, 1642, 1642, 1642, 1642, 1642, 256, 256, + 1642, 256, 1642, 1642, 1642, 1642, 1642, 1642, + 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, + 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, + + 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, + 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, + 1642, 1642, 1642, 1642, 1642, 1642, 256, 1642, + 1642, 256, 256, 256, 1642, 256, 256, 1642, + + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 256, 1644, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1647, 1647, + 1647, 1647, 1648, 1648, 256, 256, 256, 1649, + + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1650, 1650, 256, 256, 256, 256, 256, 1651, + + 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, + 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, + 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, + 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, + + 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, + 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, + 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, + 256, 256, 256, 256, 256, 256, 1653, 1653, + + 1654, 1655, 1655, 1655, 256, 1655, 1655, 256, + 256, 256, 256, 256, 1655, 1656, 1655, 1657, + 1654, 1654, 1654, 1654, 256, 1654, 1654, 1654, + 256, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 256, 256, 256, 256, + 1657, 1658, 1656, 256, 256, 256, 256, 1659, + + 1660, 1661, 1662, 1663, 1664, 1664, 1664, 1664, + 256, 256, 256, 256, 256, 256, 256, 256, + 1665, 1665, 1665, 1665, 1665, 1665, 1666, 1666, + 1667, 256, 256, 256, 256, 256, 256, 256, + + 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, + 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, + 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, + 1668, 1668, 1668, 1668, 1668, 1669, 1669, 1670, + + 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + + 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + 1671, 1671, 1671, 1671, 1671, 1671, 256, 256, + 256, 1672, 1672, 1672, 1672, 1672, 1672, 1672, + + 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, + 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, + 1673, 1673, 1673, 1673, 1673, 1673, 256, 256, + 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, + + 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, + 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, + 1675, 1675, 1675, 256, 256, 256, 256, 256, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1677, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + + 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, + 1686, 1687, 1687, 1687, 1687, 1687, 1687, 1687, + 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, + 1687, 1687, 1687, 1687, 1687, 1687, 1687, 256, + + 1688, 1689, 1688, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, + 1689, 1689, 1689, 1689, 1689, 1689, 1691, 1692, + 1692, 1693, 1693, 1693, 1693, 1693, 177, 177, + 177, 177, 1694, 1695, 1696, 1697, 1698, 1699, + 1700, 1701, 1702, 1703, 1703, 1703, 1703, 1703, + 1703, 1703, 1703, 1703, 1703, 1703, 1704, 1705, + 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1714, 1714, 1715, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1715, 1715, 1715, 1714, 1714, 1714, 1714, 1715, + 1715, 1717, 1718, 1719, 1719, 1720, 1721, 1721, + 1721, 1721, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 177, 177, 177, 177, 177, 177, 177, + 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, + 1731, 1732, 177, 177, 177, 177, 177, 177, + + 1733, 1733, 1733, 1734, 1734, 1734, 1734, 1734, + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1735, + 1735, 1735, 1735, 1735, 1736, 1735, 1735, 1735, + 1735, 1735, 1735, 1737, 1737, 177, 1738, 1739, + 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, + 1748, 1749, 1749, 1749, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1750, 1750, 1751, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1751, 1751, 1751, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1751, + 1753, 1752, 1752, 1752, 1752, 1754, 1754, 1755, + 1756, 177, 177, 177, 177, 177, 177, 177, + 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, + 1765, 1766, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, + 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, + 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, + 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, + 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, + 1767, 1767, 1767, 1768, 1769, 1768, 1769, 1769, + 1768, 1768, 1768, 1768, 1768, 1768, 1770, 1771, + 177, 177, 177, 177, 177, 177, 177, 177, + 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, + 1780, 1781, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1784, 1784, 1784, 1784, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1786, 1786, 1786, 1787, 1787, 1787, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1787, 1785, 1785, 1785, 1786, 1787, + 1786, 1787, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1786, 1787, 1787, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1789, 1790, 1790, 1790, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 1791, + 1791, 1791, 1791, 1792, 1792, 1792, 1792, 1792, + 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1793, 1794, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 177, + 177, 1185, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1796, 1797, 1798, + 1798, 1798, 1795, 1795, 1795, 1799, 1796, 1796, + 1796, 1796, 1796, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1801, 1801, 1801, 1801, 1801, + 1801, 1801, 1801, 1795, 1795, 1802, 1802, 1802, + 1802, 1802, 1801, 1801, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1802, 1802, 1802, 1802, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1803, 1803, 1803, 1614, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1546, 1546, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, + 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, + 1804, 1804, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 177, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1805, 177, 1805, 1805, + 177, 177, 1805, 177, 177, 1805, 1805, 177, + 177, 1805, 1805, 1805, 1805, 177, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1806, 1806, + 1806, 1806, 177, 1806, 177, 1806, 1806, 1806, + 1806, 1807, 1806, 1806, 177, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + + 1806, 1806, 1806, 1806, 1805, 1805, 177, 1805, + 1805, 1805, 1805, 177, 177, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 177, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 177, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1805, 1805, 177, 1805, 1805, 1805, 1805, 177, + 1805, 1805, 1805, 1805, 1805, 177, 1805, 177, + 177, 177, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 177, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1178, 1178, 177, 177, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1808, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1809, 1806, 1806, 1806, 1806, + 1806, 1806, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1808, 1806, 1806, 1806, 1806, + + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1809, 1806, 1806, + 1806, 1806, 1806, 1806, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1808, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1809, + 1806, 1806, 1806, 1806, 1806, 1806, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1808, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1809, 1806, 1806, 1806, 1806, 1806, 1806, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1808, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1809, 1806, 1806, 1806, 1806, + 1806, 1806, 1810, 1811, 177, 177, 1812, 1813, + 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, + 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, + 1820, 1821, 1812, 1813, 1814, 1815, 1816, 1817, + 1818, 1819, 1820, 1821, 1812, 1813, 1814, 1815, + 1816, 1817, 1818, 1819, 1820, 1821, 1812, 1813, + 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, + + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + + 1822, 1822, 1822, 1822, 288, 1822, 1822, 1822, + 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, + 288, 1822, 1822, 288, 1822, 288, 288, 1822, + 288, 1822, 1822, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 288, 1822, 1822, 1822, 1822, + 288, 1822, 288, 1822, 288, 288, 288, 288, + 288, 288, 1822, 288, 288, 288, 288, 1822, + 288, 1822, 288, 1822, 288, 1822, 1822, 1822, + 288, 1822, 1822, 288, 1822, 288, 288, 1822, + 288, 1822, 288, 1822, 288, 1822, 288, 1822, + 288, 1822, 1822, 288, 1822, 288, 288, 1822, + 1822, 1822, 1822, 288, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 288, 1822, 1822, 1822, 1822, + 288, 1822, 1822, 1822, 1822, 288, 1822, 288, + 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 288, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 1822, 288, 288, 288, 288, + 288, 1822, 1822, 1822, 288, 1822, 1822, 1822, + 1822, 1822, 288, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 1822, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 1823, 1823, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 177, 177, 177, 177, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 177, + 177, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 177, + 177, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 177, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1824, 1824, 1825, 1826, 1827, 1828, 1829, 1830, + 1831, 1832, 1833, 177, 177, 177, 177, 177, + 685, 685, 685, 685, 685, 685, 685, 685, + 685, 685, 685, 685, 685, 685, 685, 685, + 685, 685, 685, 685, 685, 685, 685, 685, + 685, 685, 685, 685, 685, 685, 685, 177, + 1834, 685, 1834, 1834, 1834, 1834, 1834, 1834, + 1834, 1834, 1834, 1834, 1834, 685, 1834, 685, + 1834, 1834, 685, 1834, 1834, 1834, 685, 1834, + 1834, 1834, 685, 685, 685, 685, 685, 1834, + 1834, 1834, 1834, 1834, 1834, 1834, 1834, 685, + 1834, 1834, 1834, 1834, 1834, 1834, 1834, 685, + 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, + 1834, 1834, 1835, 1835, 177, 177, 177, 177, + 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, + 1834, 685, 1834, 685, 685, 1834, 1834, 685, + 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, + 1834, 1834, 685, 685, 685, 685, 1834, 1834, + 685, 1834, 1834, 1834, 1834, 1834, 1834, 1834, + 1834, 1834, 1834, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 1836, 1836, + 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, + 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, + 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, + + 1837, 1838, 1838, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, + 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, + 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, + 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, + 1366, 1366, 1838, 1838, 1838, 1838, 1838, 1838, + 1838, 1838, 1838, 177, 177, 177, 177, 177, + 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, + 1366, 177, 177, 177, 177, 177, 177, 177, + 1838, 1838, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1212, 1212, 1212, 1212, 1212, 1212, 177, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 177, 177, 177, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1211, 1211, 1212, + 1212, 1212, 1212, 1212, 1211, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 177, 1212, 1212, + 1212, 1212, 1212, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 177, + 1212, 177, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1211, 1212, 1211, 1212, 1211, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1211, + 1212, 1211, 1211, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 177, 1212, 1212, 1212, 1212, 177, 177, 177, + + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 177, 177, + 1835, 1835, 1835, 1835, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 1212, 1212, 1212, 1212, 1212, + + 1839, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1839, 1212, 1212, 1212, 1839, 1212, 1839, + 1212, 1839, 1212, 1839, 1212, 1212, 1212, 1839, + 1212, 1212, 1212, 1212, 1212, 1212, 1839, 1839, + 1212, 1212, 1212, 1212, 1839, 1212, 1839, 1839, + 1212, 1212, 1212, 1212, 1839, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 177, 177, 177, 177, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 1840, 1840, + + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1840, 1840, + + 1138, 1800, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1840, 1840, }; #define GET_PROP_INDEX(ucs4) \ @@ -4775,488 +4835,427 @@ static const unsigned short uc_property_trie[] = { (uc_property_trie[uc_property_trie[ucs2>>5] + (ucs2 & 0x1f)]) static const Properties uc_properties[] = { - { 9, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 21, 0 }, - { 9, 8, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 5, 17, 0 }, - { 9, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 34, 0 }, - { 9, 8, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 5, 35, 0 }, - { 9, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 5, 35, 0 }, - { 9, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 33, 0 }, - { 9, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 21, 0 }, - { 9, 8, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 21, 0 }, - { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 32, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 6, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 0 }, - { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0 }, - { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 13, 3, 0 }, - { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 0, 0 }, - { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 2, 0 }, - { 26, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0 }, - { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 11, 8, 0 }, - { 20, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 16, 0 }, - { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 10, 8, 0 }, - { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0 }, - { 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 8, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 0, 8, 0 }, - { 26, 10, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 32, 0, 0, 32, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 21, 10, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 0, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0 }, - { 22, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 2, 0 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 19, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -32, -32, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 17, 0 }, - { 22, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 0 }, - { 9, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 35, 0 }, - { 6, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 4, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 23, 10, 0, 0, -1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 0 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 17, 0 }, - { 29, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0 }, - { 26, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0 }, - { 5, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 18, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 743, 743, 775, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 0, 12, 0 }, - { 5, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 24, 10, 0, 0, -1, -16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 0 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 16, 13, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 121, 121, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 19, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -232, -232, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 98, 98, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -121, 0, 0, -121, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -300, -300, -268, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 195, 195, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 210, 0, 0, 210, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 206, 0, 0, 206, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 205, 0, 0, 205, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 79, 0, 0, 79, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 202, 0, 0, 202, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 203, 0, 0, 203, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 207, 0, 0, 207, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 97, 97, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 211, 0, 0, 211, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 209, 0, 0, 209, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 163, 163, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 213, 0, 0, 213, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 130, 130, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 214, 0, 0, 214, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 218, 0, 0, 218, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 217, 0, 0, 217, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 219, 0, 0, 219, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 56, 56, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 2, 0, 1, 2, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 16, 0, 0, 0, -1, 0, 1, -1, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -2, -1, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -79, -79, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 109, 109, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -97, 0, 0, -97, 0, 0, 0, 0, 4, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -56, 0, 0, -56, 0, 0, 0, 0, 4, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 4, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -130, 0, 0, -130, 0, 0, 0, 0, 6, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 10795, 0, 0, 10795, 0, 0, 0, 0, 8, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 8, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -163, 0, 0, -163, 0, 0, 0, 0, 8, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 10792, 0, 0, 10792, 0, 0, 0, 0, 8, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 10815, 10815, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -195, 0, 0, -195, 0, 0, 0, 0, 9, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 69, 0, 0, 69, 0, 0, 0, 0, 9, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 71, 0, 0, 71, 0, 0, 0, 0, 9, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 9, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 10783, 10783, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 10780, 10780, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 10782, 10782, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -210, -210, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -206, -206, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -205, -205, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -202, -202, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -203, -203, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -207, -207, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 3, 3, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -209, -209, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -211, -211, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 10743, 10743, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 10749, 10749, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -213, -213, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -214, -214, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 10727, 10727, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -218, -218, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -69, -69, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -217, -217, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -71, -71, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -219, -219, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 0 }, - { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 18, 0 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 18, 0 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 0 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 232, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 216, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 202, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 240, 0, -1, 0, 0, 84, 84, 116, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 28 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 4, 28 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 28 }, - { 0, 17, 232, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 28 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 28 }, - { 0, 17, 233, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 4, 28 }, - { 0, 17, 234, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 4, 28 }, - { 0, 17, 233, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 4, 28 }, - { 0, 17, 234, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 4, 28 }, - { 0, 17, 233, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 28 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 28 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 10, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 1 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 1 }, + { 9, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 21, 2 }, + { 9, 8, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 5, 17, 2 }, + { 9, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 34, 2 }, + { 9, 8, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 5, 35, 2 }, + { 9, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 5, 35, 2 }, + { 9, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 33, 2 }, + { 9, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 21, 2 }, + { 9, 8, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 21, 2 }, + { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 32, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 6, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 2 }, + { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 2 }, + { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 13, 3, 2 }, + { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 0, 2 }, + { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 2, 2 }, + { 26, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 2 }, + { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 11, 8, 2 }, + { 20, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 16, 2 }, + { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 10, 8, 2 }, + { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 2 }, + { 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 8, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 0, 8, 2 }, + { 26, 10, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 14, 0, 0, 0, -1, 0, 32, 0, 0, 32, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 21, 10, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 0, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 2 }, + { 22, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 2, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 19, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, -32, -32, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 17, 2 }, + { 22, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 2 }, + { 9, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 35, 2 }, + { 6, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 4, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 23, 10, 0, 0, -1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 2 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 17, 2 }, + { 29, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 2 }, + { 26, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 2 }, + { 5, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 18, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 743, 743, 775, 0, 0, 0, 0, 1, 0, 7, 6, 12, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 0, 12, 2 }, + { 5, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 24, 10, 0, 0, -1, -16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 2 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 16, 13, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 121, 121, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 19, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -232, -232, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 98, 98, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -121, 0, 0, -121, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -300, -300, -268, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 195, 195, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 210, 0, 0, 210, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 206, 0, 0, 206, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 205, 0, 0, 205, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 79, 0, 0, 79, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 202, 0, 0, 202, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 203, 0, 0, 203, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 207, 0, 0, 207, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 97, 97, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 211, 0, 0, 211, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 209, 0, 0, 209, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 163, 163, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 213, 0, 0, 213, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 130, 130, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 214, 0, 0, 214, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 218, 0, 0, 218, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 217, 0, 0, 217, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 219, 0, 0, 219, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 56, 56, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 2, 0, 1, 2, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 16, 0, 0, 0, -1, 0, 1, -1, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -2, -1, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -79, -79, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 109, 109, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -97, 0, 0, -97, 0, 0, 0, 0, 4, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -56, 0, 0, -56, 0, 0, 0, 0, 4, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 4, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -130, 0, 0, -130, 0, 0, 0, 0, 6, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 10795, 0, 0, 10795, 0, 0, 0, 0, 8, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 8, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -163, 0, 0, -163, 0, 0, 0, 0, 8, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 10792, 0, 0, 10792, 0, 0, 0, 0, 8, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 10815, 10815, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -195, 0, 0, -195, 0, 0, 0, 0, 9, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 69, 0, 0, 69, 0, 0, 0, 0, 9, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 71, 0, 0, 71, 0, 0, 0, 0, 9, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 9, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 10783, 10783, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 10780, 10780, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 10782, 10782, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -210, -210, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -206, -206, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -205, -205, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -202, -202, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -203, -203, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -207, -207, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 3, 3, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -209, -209, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -211, -211, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 10743, 10743, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 10749, 10749, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -213, -213, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -214, -214, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 10727, 10727, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -218, -218, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -69, -69, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -217, -217, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -71, -71, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -219, -219, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 3 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 2 }, + { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 18, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 18, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 36 }, + { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 2 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 232, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 216, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 202, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 240, 0, -1, 0, 0, 84, 84, 116, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 1 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 4, 1 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 1 }, + { 0, 17, 232, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 1 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 1 }, + { 0, 17, 233, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 4, 1 }, + { 0, 17, 234, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 4, 1 }, + { 0, 17, 233, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 4, 1 }, + { 0, 17, 234, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 4, 1 }, + { 0, 17, 233, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 1 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 1 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 10, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 4 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 4 }, { 13, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 130, 130, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 38, 0, 0, 38, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 37, 0, 0, 37, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 64, 0, 0, 64, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 63, 0, 0, 63, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 101, 101, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 32, 0, 0, 32, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -38, -38, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -37, -37, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 105, 105, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -32, -32, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -31, -31, 1, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -64, -64, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -63, -63, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 8, 0, 0, 8, 0, 0, 0, 0, 10, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -62, -62, -30, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -57, -57, -25, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -47, -47, -15, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -54, -54, -22, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -8, -8, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 6, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 6, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -86, -86, -54, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -80, -80, -48, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 7, 7, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -60, 0, 0, -60, 0, 0, 0, 0, 5, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -96, -96, -64, 0, 0, 0, 0, 5, 0, 7, 6, 12, 1 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 7, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -7, 0, 0, -7, 0, 0, 0, 0, 7, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -130, 0, 0, -130, 0, 0, 0, 0, 8, 0, 7, 7, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 80, 0, 0, 80, 0, 0, 0, 0, 4, 0, 7, 7, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 80, 0, 0, 80, 0, 0, 0, 0, 1, 0, 7, 7, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 32, 0, 0, 32, 0, 0, 0, 0, 1, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -32, -32, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -80, -80, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -80, -80, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 2 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 2 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 2 }, - { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 6, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 6, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 4, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 15, 0, 0, 15, 0, 0, 0, 0, 1, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -15, -15, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 8, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 9, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 10, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 11, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 11, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 12, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 12, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 48, 0, 0, 48, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 3 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 3 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 12, 3 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, -48, -48, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 65, 62, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 12, 8, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 3 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 9, 3 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 130, 130, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 38, 0, 0, 38, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 37, 0, 0, 37, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 64, 0, 0, 64, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 63, 0, 0, 63, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 101, 101, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 32, 0, 0, 32, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -38, -38, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -37, -37, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 105, 105, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -32, -32, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -31, -31, 1, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -64, -64, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -63, -63, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 8, 0, 0, 8, 0, 0, 0, 0, 10, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -62, -62, -30, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -57, -57, -25, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -47, -47, -15, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -54, -54, -22, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -8, -8, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 6, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 6, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 46 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 46 }, + { 15, 0, 0, 0, -1, 0, 0, -86, -86, -54, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -80, -80, -48, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 7, 7, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -60, 0, 0, -60, 0, 0, 0, 0, 5, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -96, -96, -64, 0, 0, 0, 0, 5, 0, 7, 6, 12, 4 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 7, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -7, 0, 0, -7, 0, 0, 0, 0, 7, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -130, 0, 0, -130, 0, 0, 0, 0, 8, 0, 7, 7, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 80, 0, 0, 80, 0, 0, 0, 0, 4, 0, 7, 7, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 80, 0, 0, 80, 0, 0, 0, 0, 1, 0, 7, 7, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 32, 0, 0, 32, 0, 0, 0, 0, 1, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -32, -32, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -80, -80, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -80, -80, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 5 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 5 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 5 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 5 }, + { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 5 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 6, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 6, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 4, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 15, 0, 0, 15, 0, 0, 0, 0, 1, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -15, -15, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 8, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 9, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 10, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 11, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 11, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 12, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 12, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 48, 0, 0, 48, 0, 0, 0, 0, 1, 0, 7, 7, 12, 6 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 6 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 6 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 12, 6 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, -48, -48, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 65, 62, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 6 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 12, 8, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 6 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 9, 6 }, { 13, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 4 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 4 }, - { 0, 17, 222, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 4 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 4 }, - { 0, 17, 228, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 4 }, - { 0, 17, 10, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 11, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 12, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 13, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 14, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 15, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 16, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 17, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 18, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 19, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 19, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 4 }, - { 0, 17, 20, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 21, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 22, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 20, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 17, 4 }, - { 0, 17, 23, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 4 }, - { 0, 17, 24, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 25, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 4 }, - { 0, 17, 18, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 4 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 13, 4 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 4 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 0, 12, 4 }, - { 10, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 3, 4, 4, 12, 5 }, - { 10, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 4, 4, 12, 5 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 7 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 7 }, + { 0, 17, 222, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 7 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 7 }, + { 0, 17, 228, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 7 }, + { 0, 17, 10, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 11, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 12, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 13, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 14, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 15, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 16, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 17, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 18, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 19, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 19, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 7 }, + { 0, 17, 20, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 21, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 22, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 20, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 17, 7 }, + { 0, 17, 23, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 7 }, + { 0, 17, 24, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 25, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 7 }, + { 0, 17, 18, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 7 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 13, 7 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 7 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 0, 12, 7 }, + { 10, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 3, 4, 4, 12, 8 }, + { 10, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 4, 4, 12, 8 }, { 13, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 5 }, - { 26, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 5 }, - { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 5 }, - { 27, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 10, 5 }, - { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 10, 11, 8, 5 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 5 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 5 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 5 }, - { 0, 17, 30, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 5 }, - { 0, 17, 31, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 5 }, - { 0, 17, 32, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 5 }, - { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0 }, - { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 5 }, - { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 6, 0 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 5 }, - { 17, 13, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 0 }, - { 0, 17, 27, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 28, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 29, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 30, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 31, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 32, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 33, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 34, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 5 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 5 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 5 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 5 }, - { 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 5 }, - { 25, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 25, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 9, 11, 5 }, - { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 5 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 5 }, - { 0, 17, 35, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 5 }, - { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 6, 5 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 5 }, - { 10, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 5 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 5 }, - { 17, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 5 }, - { 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 29, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 5 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 5 }, - { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 12, 6 }, - { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 6 }, - { 10, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 4, 12, 6 }, - { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 6 }, - { 0, 17, 36, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 6 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 6 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 6 }, - { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 6 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 6 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 6 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 7 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 7 }, - { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 7 }, - { 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 18, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 27 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 27 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 27 }, - { 17, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 27 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 27 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 27 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 11, 8, 27 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 12, 6, 27 }, - { 17, 1, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 27 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 0 }, - { 17, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 0 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 18, 1, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 0 }, - { 18, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 0 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 0 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 0 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 5 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 5 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 5 }, - { 0, 17, 27, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 5 }, - { 0, 17, 28, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 5 }, - { 0, 17, 29, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 5 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 8 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 8 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 8 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 8 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 8 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 8 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 4, 4, 21, 8 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 8 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 8 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 8 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 8 }, + { 26, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 8 }, + { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 8 }, + { 27, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 10, 8 }, + { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 10, 11, 8, 8 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 8 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 8 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 8 }, + { 0, 17, 30, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 8 }, + { 0, 17, 31, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 8 }, + { 0, 17, 32, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 8 }, + { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 2 }, + { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 8 }, + { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 6, 2 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 8 }, + { 17, 13, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 2 }, + { 0, 17, 27, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 28, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 29, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 30, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 31, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 32, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 33, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 34, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 8 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 8 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 8 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 8 }, + { 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 8 }, + { 25, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 25, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 9, 11, 8 }, + { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 8 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 8 }, + { 0, 17, 35, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 8 }, + { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 6, 8 }, { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 8 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 17, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 8 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 8 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 8 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 8 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 8 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 8 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 8 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 9 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 9 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 9 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 9 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 9 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 9 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 9 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 9 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 9 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 9 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 9 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 9 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 9, 9 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 10 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 10 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 4, 4, 21, 10 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 10 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 10 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 10 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 10 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 10 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, + { 10, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 8 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 8 }, + { 17, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 8 }, + { 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 29, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 8 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 8 }, + { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 12, 9 }, + { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 9 }, + { 10, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 4, 12, 9 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 9 }, + { 0, 17, 36, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 9 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 9 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 9 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 9 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 9 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 9 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 10 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 10 }, + { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 10 }, + { 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 18, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 66 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 66 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 66 }, + { 17, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 66 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 66 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 66 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 11, 8, 66 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 12, 6, 66 }, + { 17, 1, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 66 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 82 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 82 }, + { 17, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 82 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 82 }, + { 18, 1, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 95 }, + { 18, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 95 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 95 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 95 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 95 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 8 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 8 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 8 }, + { 0, 17, 27, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 8 }, + { 0, 17, 28, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 8 }, + { 0, 17, 29, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 8 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 11 }, { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 11 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 11 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 11 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 11 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 11 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 11 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 4, 4, 21, 11 }, { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 11 }, { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 11 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 11 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 11 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 11 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 17, 2 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 11 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 11 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 11 }, @@ -5267,16 +5266,21 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 11 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 11 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 11 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 11 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 9, 11 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 11 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 11 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 11 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 11 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 11 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 11 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 11 }, { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 12 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 12 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 12 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 12 }, { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 12 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 12 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 12 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 12 }, { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 12 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 12 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 12 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 12 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 12 }, @@ -5287,16 +5291,20 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 12 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 12 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 12 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 12 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 12 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 12 }, { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 12 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 12 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 9, 12 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 13 }, { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 13 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 4, 4, 21, 13 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 13 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 13 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 13 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 13 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 13 }, { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 13 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 13 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 13 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 13 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 13 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 13 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 13 }, { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 13 }, @@ -5306,17 +5314,13 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 13 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 13 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 13 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 13 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 13 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 9, 13 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 14 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 14 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 14 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 14 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 14 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 14 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 14 }, { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 14 }, - { 0, 17, 84, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 14 }, - { 0, 17, 91, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 14 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 14 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 14 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 14 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 14 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 14 }, @@ -5327,17 +5331,16 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 14 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 14 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 14 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 14 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 14 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 14 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 9, 14 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 15 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 15 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 15 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 15 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 15 }, - { 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 15 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 15 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 15 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 15 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 15 }, { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 15 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 15 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 15 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 15 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 15 }, @@ -5348,16 +5351,16 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 15 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 15 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 15 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 15 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 16 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 15 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 15 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 16 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 16 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 16 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 16 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 16 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 16 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 16 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 16 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 16 }, { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 16 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 16 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 16 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 16 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 16 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 16 }, { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 16 }, @@ -5367,22 +5370,38 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 16 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 16 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 16 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 16 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 16 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 4, 4, 21, 17 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 17 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 17 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 17 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 17 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 17 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 30, 18 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 18 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 0, 8, 30, 18 }, - { 0, 17, 103, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 18 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 18 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 30, 18 }, - { 0, 17, 107, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 18 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 18 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 16 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 16 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 9, 16 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 17 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 17 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 17 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 17 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 17 }, + { 0, 17, 84, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 17 }, + { 0, 17, 91, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 17 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 17 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 17 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 17 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 18 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 18 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 18 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 18 }, + { 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 18 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 18 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 18 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 18 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 18 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 18 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 18 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 18 }, @@ -5393,13 +5412,15 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 18 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 18 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 18 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 17, 18 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 30, 19 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 19 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 0, 8, 30, 19 }, - { 0, 17, 118, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 19 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 30, 19 }, - { 0, 17, 122, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 19 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 18 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 19 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 19 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 19 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 19 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 19 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 19 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 19 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 19 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 19 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 19 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 19 }, @@ -5410,920 +5431,1254 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 19 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 19 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 19 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 30, 19 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 7, 8, 12, 20 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 18, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 18, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 4, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 17, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 20 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 20 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 20 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 20 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 17, 20 }, - { 0, 17, 216, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 20 }, - { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 13, 0, 20 }, - { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 13, 1, 20 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7, 4, 4, 21, 20 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 19 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 19 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 4, 4, 21, 20 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 20 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 20 }, - { 0, 17, 129, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 20 }, - { 0, 17, 130, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 20 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 20 }, - { 0, 17, 132, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 20 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7, 4, 4, 17, 20 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 20 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 20 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 20 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 20 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 20 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 20 }, { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 20 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 20 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 20 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 20 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 18, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 18, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 20 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 4, 20 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 30, 21 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 30, 21 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 4, 30, 21 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 4, 30, 21 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 21 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 4, 4, 30, 21 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 30, 21 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 21 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 21 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 30, 21 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 30, 21 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 17, 21 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 21 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 30, 21 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 30, 21 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 21 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 30, 21 }, - { 14, 0, 0, 0, -1, 0, 7264, 0, 0, 7264, 0, 0, 0, 0, 1, 0, 7, 7, 12, 22 }, - { 14, 0, 0, 0, -1, 0, 7264, 0, 0, 7264, 0, 0, 0, 0, 13, 0, 7, 7, 12, 22 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 22 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 22 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 22 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 22 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 22 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 7, 8, 25, 23 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 8, 7, 8, 25, 23 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 7, 8, 26, 23 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 9, 7, 8, 26, 23 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 7, 8, 27, 23 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 10, 7, 8, 27, 23 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 0 }, - { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 17, 24 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 24 }, - { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 13, 0, 24 }, - { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 13, 1, 24 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 25 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 25 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 0 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 12, 17, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 30, 26 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 26 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 4, 4, 30, 26 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 26 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 26 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 26 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 30, 26 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 26 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 9, 26 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 30, 26 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 26 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 11, 6, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 6, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 18, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 0 }, - { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 4, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 0, 17, 228, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 4, 4, 21, 0 }, - { 0, 17, 222, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 0 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 12, 6, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 8, 30, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 30, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 30, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 7, 4, 4, 30, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 30, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 30, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 26 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 7, 4, 4, 21, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 30, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 0 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 30, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 0 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 30, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 30, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 4, 4, 21, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 0 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 0 }, - { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 4, 4, 21, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 12, 17, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 17, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 0 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 0 }, - { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 0 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 0 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 4, 4, 21, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 0 }, - { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 4, 4, 21, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 17, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 28 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 28 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 28 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 2 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 1 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, 5, 5, 0, 0, 1, 1, 0, 8, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 3814, 3814, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 1 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 28 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 28 }, - { 0, 17, 234, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 28 }, - { 0, 17, 214, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 28 }, - { 0, 17, 202, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 28 }, - { 0, 17, 233, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 28 }, - { 15, 0, 0, 0, -1, 0, 0, 112, 112, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 115, 115, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 118, 118, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 121, 121, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 124, 124, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -59, -59, -58, 0, 0, 0, 0, 2, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -7615, 0, 0, -7615, 0, 0, 0, 0, 10, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 10, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 8, 8, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -8, 0, 0, -8, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 127, 127, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 130, 130, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 134, 134, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 138, 138, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 74, 74, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 86, 86, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 100, 100, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 128, 128, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 112, 112, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 126, 126, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 176, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 179, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 182, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 185, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 188, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 191, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 194, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 197, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 176, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 179, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 182, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 185, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 188, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 191, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 194, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 197, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 200, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 203, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 206, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 209, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 212, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 215, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 218, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 221, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 200, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 203, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 206, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 209, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 212, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 215, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 218, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 221, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 224, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 227, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 230, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 233, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 236, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 239, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 242, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 245, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 224, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 227, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 230, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 233, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 236, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 239, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 242, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 245, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 260, 257, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 248, 9, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 266, 263, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 142, 142, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 297, 293, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -74, 0, 0, -74, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -9, 248, 0, -9, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -7205, -7205, -7173, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 272, 269, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 251, 9, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 278, 275, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 145, 145, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 305, 301, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -86, 0, 0, -86, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -9, 251, 0, -9, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 148, 148, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 152, 152, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 155, 155, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -100, 0, 0, -100, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 159, 159, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 163, 163, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 166, 166, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 169, 169, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -112, 0, 0, -112, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -7, 0, 0, -7, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 284, 281, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 254, 9, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 290, 287, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 173, 173, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 313, 309, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -128, 0, 0, -128, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -126, 0, 0, -126, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -9, 254, 0, -9, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 18, 1 }, - { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 17, 0 }, - { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 4, 0 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 4, 20, 0 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 10, 18, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 10, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 0 }, - { 10, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 17, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 17, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 19, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 23, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 13, 3, 0 }, - { 24, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 13, 3, 0 }, - { 21, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 0, 0 }, - { 23, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 0 }, - { 24, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 10, 15, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 15, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 0, 17, 0 }, - { 7, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 35, 0 }, - { 8, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 35, 0 }, - { 10, 11, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 0 }, - { 10, 14, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 0 }, - { 10, 16, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 0 }, - { 10, 12, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 0 }, - { 10, 15, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 0 }, - { 6, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 4, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0 }, - { 23, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 0 }, - { 24, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 5, 0 }, - { 26, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 0, 8, 0 }, - { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 12, 5, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 5, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 0 }, - { 19, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 12, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 0 }, - { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 5, 17, 0 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 3, 4, 4, 22, 0 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 3, 4, 4, 12, 0 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 4, 4, 12, 0 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 20 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 30, 21 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 21 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 0, 8, 30, 21 }, + { 0, 17, 103, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 21 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 21 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 30, 21 }, + { 0, 17, 107, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 21 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 21 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 17, 21 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 30, 22 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 22 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 0, 8, 30, 22 }, + { 0, 17, 118, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 22 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 30, 22 }, + { 0, 17, 122, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 22 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 30, 22 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 7, 8, 12, 23 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 18, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 18, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 4, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 17, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 23 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 23 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 23 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 23 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 17, 23 }, + { 0, 17, 216, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 23 }, + { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 13, 0, 23 }, + { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 13, 1, 23 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7, 4, 4, 21, 23 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 23 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 23 }, + { 0, 17, 129, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 23 }, + { 0, 17, 130, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 23 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 23 }, + { 0, 17, 132, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 23 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7, 4, 4, 17, 23 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 23 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 23 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 23 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 23 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 23 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 23 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 23 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 23 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 18, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 18, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 23 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 4, 23 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 30, 24 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 30, 24 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 4, 30, 24 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 4, 30, 24 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 24 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 4, 4, 30, 24 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 30, 24 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 24 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 24 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 30, 24 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 30, 24 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 17, 24 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 24 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 30, 24 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 30, 24 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 24 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 30, 24 }, + { 14, 0, 0, 0, -1, 0, 7264, 0, 0, 7264, 0, 0, 0, 0, 1, 0, 7, 7, 12, 25 }, + { 14, 0, 0, 0, -1, 0, 7264, 0, 0, 7264, 0, 0, 0, 0, 13, 0, 7, 7, 12, 25 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 25 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 25 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 25 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 25 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 25 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 7, 8, 25, 26 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 8, 7, 8, 25, 26 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 7, 8, 26, 26 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 9, 7, 8, 26, 26 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 7, 8, 27, 26 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 10, 7, 8, 27, 26 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 27 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 27 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 27 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 27 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 27 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 27 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 12, 27 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 27 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 28 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 29 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 29 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 29 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 12, 29 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 29 }, + { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 17, 30 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 30 }, + { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 13, 0, 30 }, + { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 13, 1, 30 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 31 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 2 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 31 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 42 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 42 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 42 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 43 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 43 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 43 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 12, 17, 2 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 44 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 44 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 45 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 45 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 30, 32 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 32 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 4, 4, 30, 32 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 32 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 32 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 32 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 30, 32 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 32 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 9, 32 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 30, 32 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 32 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 33 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 11, 6, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 6, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 33 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 18, 33 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 11, 6, 33 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 6, 33 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 33 }, + { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 4, 33 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 33 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 33 }, + { 0, 17, 228, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 33 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 33 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 47 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 47 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 4, 4, 21, 47 }, + { 0, 17, 222, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 47 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 47 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 47 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 47 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 12, 6, 47 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 8, 30, 48 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 30, 56 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 56 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 30, 56 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 7, 4, 4, 30, 56 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 30, 56 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 30, 56 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 32 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 55 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 55 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 55 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 7, 4, 4, 21, 55 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 55 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 78 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 30, 78 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 78 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 78 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 30, 78 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 78 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 78 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 30, 78 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 78 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 30, 78 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 62 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 4, 4, 21, 62 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 62 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 62 }, + { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 4, 4, 21, 62 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 12, 17, 62 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 62 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 17, 62 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 62 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 62 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 62 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 67 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 67 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 67 }, + { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 67 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 67 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 67 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 67 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 93 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 93 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 4, 4, 21, 93 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 93 }, + { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 4, 4, 21, 93 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 93 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 68 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 68 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 68 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 68 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 17, 68 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 68 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 69 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 69 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 17, 69 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 67 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 1 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 1 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 2 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 2 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 2 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 1 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 5 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 3 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 4 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, 5, 5, 0, 0, 1, 1, 0, 8, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 3814, 3814, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 3 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 3 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 4 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 1 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 1 }, + { 0, 17, 234, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 1 }, + { 0, 17, 214, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 1 }, + { 0, 17, 202, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 1 }, + { 0, 17, 233, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 1 }, + { 15, 0, 0, 0, -1, 0, 0, 112, 112, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 115, 115, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 118, 118, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 121, 121, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 124, 124, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -59, -59, -58, 0, 0, 0, 0, 2, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -7615, 0, 0, -7615, 0, 0, 0, 0, 10, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 10, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 8, 8, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -8, 0, 0, -8, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 127, 127, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 130, 130, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 134, 134, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 138, 138, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 74, 74, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 86, 86, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 100, 100, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 128, 128, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 112, 112, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 126, 126, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 176, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 179, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 182, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 185, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 188, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 191, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 194, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 197, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 176, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 179, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 182, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 185, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 188, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 191, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 194, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 197, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 200, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 203, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 206, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 209, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 212, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 215, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 218, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 221, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 200, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 203, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 206, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 209, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 212, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 215, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 218, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 221, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 224, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 227, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 230, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 233, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 236, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 239, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 242, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 245, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 224, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 227, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 230, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 233, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 236, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 239, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 242, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 245, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 260, 257, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 248, 9, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 266, 263, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 142, 142, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 297, 293, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -74, 0, 0, -74, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -9, 248, 0, -9, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -7205, -7205, -7173, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 272, 269, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 251, 9, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 278, 275, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 145, 145, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 305, 301, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -86, 0, 0, -86, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -9, 251, 0, -9, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 148, 148, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 152, 152, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 155, 155, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -100, 0, 0, -100, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 159, 159, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 163, 163, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 166, 166, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 169, 169, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -112, 0, 0, -112, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -7, 0, 0, -7, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 284, 281, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 254, 9, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 290, 287, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 173, 173, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 313, 309, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -128, 0, 0, -128, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -126, 0, 0, -126, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -9, 254, 0, -9, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 18, 4 }, + { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 17, 2 }, + { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 4, 2 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 4, 20, 2 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 10, 18, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 10, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 2 }, + { 10, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 17, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 17, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 19, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 23, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 13, 3, 2 }, + { 24, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 13, 3, 2 }, + { 21, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 0, 2 }, + { 23, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 2 }, + { 24, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 10, 15, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 15, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 0, 17, 2 }, + { 7, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 35, 2 }, + { 8, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 35, 2 }, + { 10, 11, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 2 }, + { 10, 14, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 2 }, + { 10, 16, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 2 }, + { 10, 12, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 2 }, + { 10, 15, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 2 }, + { 6, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 4, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 2 }, + { 23, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 2 }, + { 24, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 5, 2 }, + { 26, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 0, 8, 2 }, + { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 12, 5, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 5, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 2 }, + { 19, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 12, 0, 12, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 2 }, + { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 5, 17, 2 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 3, 4, 4, 22, 2 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 3, 4, 4, 12, 2 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 4, 4, 12, 2 }, { 13, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 12, 0 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 0 }, - { 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 6, 12, 0 }, - { 5, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 6, 12, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 9, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 9, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 9, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 9, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 9, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 10, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 9, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 9, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 9, 0 }, - { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 28 }, - { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 28 }, - { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 28 }, - { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 28 }, - { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0 }, - { 14, 0, 0, 0, -1, 0, -7517, 0, 0, -7517, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -8383, 0, 0, -8383, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -8262, 0, 0, -8262, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 29, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 28, 0, 0, 28, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 7, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -28, -28, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 4, 0, 0, 0, -1, 0, 16, 0, 0, 16, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 4, 0, 0, 0, -1, 0, 0, -16, -16, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 0 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 0 }, - { 26, 10, 0, 0, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 2016, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 138, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 1824, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 2104, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 2108, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 2106, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -138, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -7, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0 }, - { 5, 10, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 29, 0, 0, 0, -1, 0, 26, 0, 0, 26, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 29, 0, 0, 0, -1, 0, 0, -26, -26, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 14, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 14, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 14, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0 }, - { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 0, 0 }, - { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 1, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 0, 0 }, - { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 1, 0 }, - { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 13, 0, 0 }, - { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 13, 1, 0 }, - { 21, 10, 0, 0, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 0, 0 }, - { 22, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 1, 0 }, - { 21, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 0, 0 }, - { 22, 10, 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 1, 0 }, - { 26, 10, 0, 0, -1, -1824, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -2016, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -2104, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -2106, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -2108, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 48, 0, 0, 48, 0, 0, 0, 0, 8, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -48, -48, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -10743, 0, 0, -10743, 0, 0, 0, 0, 9, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -3814, 0, 0, -3814, 0, 0, 0, 0, 9, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -10727, 0, 0, -10727, 0, 0, 0, 0, 9, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -10795, -10795, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -10792, -10792, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -10780, 0, 0, -10780, 0, 0, 0, 0, 10, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -10749, 0, 0, -10749, 0, 0, 0, 0, 10, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -10783, 0, 0, -10783, 0, 0, 0, 0, 10, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -10782, 0, 0, -10782, 0, 0, 0, 0, 11, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -10815, 0, 0, -10815, 0, 0, 0, 0, 11, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 11, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 11, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 13, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 13, 0, 7, 6, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 0 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -7264, -7264, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 22 }, - { 15, 0, 0, 0, -1, 0, 0, -7264, -7264, 0, 0, 0, 0, 0, 13, 0, 7, 6, 12, 22 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 17, 0 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 3, 0 }, - { 23, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 3, 0 }, - { 24, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 3, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0 }, - { 23, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 13, 3, 0 }, - { 24, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 13, 3, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 6, 0 }, - { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 17, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 19, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0 }, - { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 14, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 1, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 1, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 5, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 14, 0 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 14, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0 }, - { 22, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 0 }, - { 0, 17, 218, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 228, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 222, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 1, 0, 224, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 23 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 14, 0 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 14, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 5, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 5, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 5, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 8, 5, 0 }, - { 0, 17, 8, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 5, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 5, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 8, 14, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 6, 0, 5, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 5, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 14, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 5, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 6, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 14, 23 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 6, 8, 5, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 23 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 14, 23 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 0 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 14, 23 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 14, 0 }, - { 13, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 14, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 5, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 17, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 17, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 2 }, - { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 2 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 2 }, + { 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 6, 12, 3 }, + { 5, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 6, 12, 3 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 10, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 9, 2 }, + { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 1 }, + { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 1 }, + { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 1 }, + { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 1 }, + { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 7, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 2 }, + { 14, 0, 0, 0, -1, 0, -7517, 0, 0, -7517, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -8383, 0, 0, -8383, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -8262, 0, 0, -8262, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 29, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 14, 0, 0, 0, -1, 0, 28, 0, 0, 28, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 6, 12, 2 }, + { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 7, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, -28, -28, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 3 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 4, 0, 0, 0, -1, 0, 16, 0, 0, 16, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 4, 0, 0, 0, -1, 0, 0, -16, -16, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 3 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 3 }, + { 26, 10, 0, 0, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 2016, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 138, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 1824, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 2104, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 2108, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 2106, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -138, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -7, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 2 }, + { 5, 10, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 29, 0, 0, 0, -1, 0, 26, 0, 0, 26, 0, 0, 0, 0, 1, 0, 7, 7, 12, 2 }, + { 29, 0, 0, 0, -1, 0, 0, -26, -26, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 2 }, + { 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 14, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 14, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 14, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 2 }, + { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 0, 2 }, + { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 1, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 2 }, + { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 0, 2 }, + { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 1, 2 }, + { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 13, 0, 2 }, + { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 13, 1, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 54 }, + { 21, 10, 0, 0, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 0, 2 }, + { 22, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 1, 2 }, + { 21, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 0, 2 }, + { 22, 10, 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 1, 2 }, + { 26, 10, 0, 0, -1, -1824, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -2016, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -2104, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -2106, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -2108, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 14, 0, 0, 0, -1, 0, 48, 0, 0, 48, 0, 0, 0, 0, 8, 0, 7, 7, 12, 57 }, + { 15, 0, 0, 0, -1, 0, 0, -48, -48, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 57 }, + { 14, 0, 0, 0, -1, 0, -10743, 0, 0, -10743, 0, 0, 0, 0, 9, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -3814, 0, 0, -3814, 0, 0, 0, 0, 9, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -10727, 0, 0, -10727, 0, 0, 0, 0, 9, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -10795, -10795, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -10792, -10792, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -10780, 0, 0, -10780, 0, 0, 0, 0, 10, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -10749, 0, 0, -10749, 0, 0, 0, 0, 10, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -10783, 0, 0, -10783, 0, 0, 0, 0, 10, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -10782, 0, 0, -10782, 0, 0, 0, 0, 11, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 3 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -10815, 0, 0, -10815, 0, 0, 0, 0, 11, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 8, 0, 7, 7, 12, 46 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 46 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 46 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 46 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 11, 0, 7, 7, 12, 46 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 11, 0, 7, 6, 12, 46 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 46 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 13, 0, 7, 7, 12, 46 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 13, 0, 7, 6, 12, 46 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 46 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 46 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 46 }, + { 15, 0, 0, 0, -1, 0, 0, -7264, -7264, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 25 }, + { 15, 0, 0, 0, -1, 0, 0, -7264, -7264, 0, 0, 0, 0, 0, 13, 0, 7, 6, 12, 25 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 58 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 58 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 58 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 17, 58 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 58 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 3, 2 }, + { 23, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 3, 2 }, + { 24, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 3, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 2 }, { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 2 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 2 }, + { 23, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 13, 3, 2 }, + { 24, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 13, 3, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 6, 2 }, { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 2 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 0 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 0 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 7, 0, 0, 7, 1, 0, 0, 1, 10, 0, 7, 7, 12, 0 }, - { 28, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 9, 0, 0, 9, 1, 0, 0, 1, 12, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 12, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 12, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 11, 0, 0, 11, 1, 0, 0, 1, 13, 0, 7, 7, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 6, 12, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 0 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 0 }, - { 29, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 18, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 12, 6, 0 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 8 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 0 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 0 }, - { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 21 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 21 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 30, 21 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 12, 17, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 0 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 11, 7, 8, 23, 23 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 12, 7, 8, 24, 23 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 17, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 19, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 37 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 2 }, + { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 14, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 1, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 1, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 5, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 14, 2 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 14, 37 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 2 }, + { 22, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 2 }, + { 0, 17, 218, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 228, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 222, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 1, 0, 224, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 26 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 14, 2 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 14, 37 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 5, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 5, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 2 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 5, 34 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 14, 34 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 8, 5, 34 }, + { 0, 17, 8, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 5, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 5, 34 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 8, 14, 34 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 6, 0, 5, 2 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 5, 35 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 14, 35 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 5, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 5, 35 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 6, 8, 14, 35 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 14, 36 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 14, 36 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 14, 26 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 14, 36 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 14, 36 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 6, 8, 5, 35 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 26 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 14, 26 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 2 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 14, 26 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 14, 35 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 14, 37 }, + { 13, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 14, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 14, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 14, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 14, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 14, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 14, 38 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 5, 38 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 38 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 38 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 83 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 83 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 83 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 17, 83 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 70 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 70 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 70 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 6, 70 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 17, 70 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 5 }, + { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 5 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 5 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 5 }, + { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 5 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 84 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 84 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 84 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 84 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 17, 84 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 84 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 2 }, + { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 2 }, + { 14, 0, 0, 0, -1, 0, 7, 0, 0, 7, 1, 0, 0, 1, 10, 0, 7, 7, 12, 3 }, + { 28, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 2 }, + { 14, 0, 0, 0, -1, 0, 9, 0, 0, 9, 1, 0, 0, 1, 12, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 12, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 12, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 13, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 13, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 11, 0, 0, 11, 1, 0, 0, 1, 13, 0, 7, 7, 12, 3 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 6, 12, 3 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 3 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 59 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 59 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 59 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 7, 4, 4, 21, 59 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 59 }, + { 29, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 65 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 18, 65 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 12, 6, 65 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 71 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 71 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 71 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 17, 71 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 11 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 11 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 72 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 72 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 72 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 72 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 17, 72 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 73 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 73 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 73 }, + { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 73 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 73 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 85 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 85 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 85 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 85 }, + { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 85 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 85 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 85 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 17, 85 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 85 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 77 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 77 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 77 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 77 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 17, 77 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 24 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 24 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 30, 24 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 79 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 79 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 79 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 79 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 30, 79 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 86 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 86 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 86 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 12, 17, 86 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 86 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 86 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 27 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 86 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 86 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 86 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 17, 86 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 86 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 11, 7, 8, 23, 26 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 12, 7, 8, 24, 26 }, { 11, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 31, 0 }, { 12, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 25, 22, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 31, 28, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 37, 34, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 44, 40, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 52, 48, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 59, 56, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 71, 68, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 77, 74, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 83, 80, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 89, 86, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 95, 92, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 13, 4 }, - { 0, 17, 26, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 26, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 4 }, - { 28, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 5 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 8, 14, 37 }, + { 15, 0, 0, 0, -1, 0, 0, 25, 22, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 31, 28, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 37, 34, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 44, 40, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 52, 48, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 59, 56, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 71, 68, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 77, 74, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 83, 80, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 89, 86, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 95, 92, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 6 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 13, 7 }, + { 0, 17, 26, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 26, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 7 }, + { 28, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 8 }, { 13, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0 }, - { 27, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 10, 5 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 28 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 10, 11, 8, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 11, 1, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 9, 11, 8, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 10, 0, 8, 0 }, - { 21, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 0, 0 }, - { 22, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 1, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 15, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 14, 0 }, - { 19, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, 14, 0 }, - { 21, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 13, 0, 0 }, - { 22, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 13, 1, 0 }, - { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 11, 1, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 14, 0 }, - { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 10, 1, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 0, 5, 0 }, - { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 11, 5, 0 }, - { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 26, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 20, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 14, 0 }, - { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 5 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 22, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 0, 14, 0 }, - { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 26, 10, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 26, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 14, 0, 0, 0, -1, 0, 32, 0, 0, 32, 0, 0, 0, 0, 1, 0, 7, 7, 14, 0 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -32, -32, 0, 0, 0, 0, 0, 1, 0, 7, 6, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 5, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 23 }, - { 10, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 4, 21, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 29, 0 }, + { 27, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 10, 8 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 1 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 10, 11, 8, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 11, 1, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 1, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 9, 11, 8, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 10, 0, 8, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 2 }, + { 21, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 0, 2 }, + { 22, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 1, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 15, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 14, 2 }, + { 19, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, 14, 2 }, + { 21, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 13, 0, 2 }, + { 22, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 13, 1, 2 }, + { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 11, 1, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 14, 2 }, + { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 10, 1, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 0, 5, 2 }, + { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 11, 5, 2 }, + { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 26, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 20, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 14, 2 }, + { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 8 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 22, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 0, 14, 2 }, + { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 26, 10, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 26, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 14, 0, 0, 0, -1, 0, 32, 0, 0, 32, 0, 0, 0, 0, 1, 0, 7, 7, 14, 3 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 15, 0, 0, 0, -1, 0, 0, -32, -32, 0, 0, 0, 0, 0, 1, 0, 7, 6, 14, 3 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 12, 35 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 5, 2 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 26 }, + { 10, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 4, 21, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 29, 2 }, { 13, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 17, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 17, 0 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 0 }, - { 4, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 1 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 1 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 1 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 8, 12, 0 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 8, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 0 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 40, 0, 0, 40, 0, 0, 0, 0, 5, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 40, 0, 0, 40, 0, 0, 0, 0, 7, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -40, -40, 0, 0, 0, 0, 0, 5, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -40, -40, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 0 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 0 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 0 }, - { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 0 }, - { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 17, 0 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 0 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 0 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 0 }, - { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 0 }, - { 5, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 5, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 5, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 5, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 0 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 12, 17, 0 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 5, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 12, 17, 0 }, - { 5, 10, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 10, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 4, 4, 12, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 17, 0 }, - { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 0 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 0 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 0, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 1, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 6, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 14, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0 }, - { 1, 0, 216, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 21, 0 }, - { 1, 0, 216, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 4, 4, 21, 0 }, - { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 21, 28 }, - { 1, 0, 226, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 4, 4, 21, 0 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 4, 4, 21, 0 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 21, 28 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 21, 28 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 1 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 6, 12, 0 }, - { 26, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 7, 12, 0 }, - { 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 5 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 5 }, - { 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 5, 5, 0, 28, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 14, 0 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 49 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 17, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 17, 2 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 2 }, + { 4, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 4 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 4 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 4 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 74 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 75 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 8, 12, 39 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 39 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 8, 12, 40 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 8, 12, 40 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 50 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 17, 50 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 60 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 60 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 60 }, + { 14, 0, 0, 0, -1, 0, 40, 0, 0, 40, 0, 0, 0, 0, 5, 0, 7, 7, 12, 41 }, + { 14, 0, 0, 0, -1, 0, 40, 0, 0, 40, 0, 0, 0, 0, 7, 0, 7, 7, 12, 41 }, + { 15, 0, 0, 0, -1, 0, 0, -40, -40, 0, 0, 0, 0, 0, 5, 0, 7, 6, 12, 41 }, + { 15, 0, 0, 0, -1, 0, 0, -40, -40, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 41 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 51 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 52 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 53 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 87 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 87 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 87 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 64 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 64 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 64 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 17, 64 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 76 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 76 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 98 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 97 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 61 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 61 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 61 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 61 }, + { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 61 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 61 }, + { 5, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 61 }, + { 5, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 61 }, + { 5, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 61 }, + { 5, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 61 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 61 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 61 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 12, 17, 61 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 61 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 88 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 88 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 88 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 80 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 80 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 89 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 89 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 90 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 90 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 91 }, + { 5, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 4, 4, 21, 94 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 94 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 94 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 94 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 12, 17, 94 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 92 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 92 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 92 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 92 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 92 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 92 }, + { 10, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 4, 4, 12, 92 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 17, 92 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 101 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 96 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 96 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 96 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 96 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 96 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 17, 96 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 12, 17, 96 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 100 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 100 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 100 }, + { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 12, 17, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 17, 100 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 102 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 102 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 102 }, + { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 102 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 102 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 63 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 63 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 17, 63 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 81 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 0, 81 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 1, 81 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 84 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 99 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 99 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 99 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 99 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 6, 8, 14, 35 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 14, 34 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 2 }, + { 1, 0, 216, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 21, 2 }, + { 1, 0, 216, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 4, 4, 21, 2 }, + { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 21, 1 }, + { 1, 0, 226, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 4, 4, 21, 2 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 4, 4, 21, 2 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 21, 1 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 21, 1 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 4 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 2 }, + { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 7, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 6, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 2 }, + { 26, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 2 }, + { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 7, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 2 }, + { 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 8 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 8 }, + { 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 5, 5, 0, 28, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 34 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 14, 2 }, { 13, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 8, 14, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 28 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 8, 14, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 14, 37 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 1 }, { 12, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 0 } }; @@ -6371,7 +6726,39 @@ Q_CORE_EXPORT LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4) Q_CORE_EXPORT Script QT_FASTCALL script(uint ucs4) { - return (Script)qGetProp(ucs4)->script; + switch (qGetProp(ucs4)->script) { + case QChar::Script_Inherited: return Inherited; + case QChar::Script_Common: return Common; + case QChar::Script_Arabic: return Arabic; + case QChar::Script_Armenian: return Armenian; + case QChar::Script_Bengali: return Bengali; + case QChar::Script_Cyrillic: return Cyrillic; + case QChar::Script_Devanagari: return Devanagari; + case QChar::Script_Georgian: return Georgian; + case QChar::Script_Greek: return Greek; + case QChar::Script_Gujarati: return Gujarati; + case QChar::Script_Gurmukhi: return Gurmukhi; + case QChar::Script_Hangul: return Hangul; + case QChar::Script_Hebrew: return Hebrew; + case QChar::Script_Kannada: return Kannada; + case QChar::Script_Khmer: return Khmer; + case QChar::Script_Lao: return Lao; + case QChar::Script_Malayalam: return Malayalam; + case QChar::Script_Myanmar: return Myanmar; + case QChar::Script_Ogham: return Ogham; + case QChar::Script_Oriya: return Oriya; + case QChar::Script_Runic: return Runic; + case QChar::Script_Sinhala: return Sinhala; + case QChar::Script_Syriac: return Syriac; + case QChar::Script_Tamil: return Tamil; + case QChar::Script_Telugu: return Telugu; + case QChar::Script_Thaana: return Thaana; + case QChar::Script_Thai: return Thai; + case QChar::Script_Tibetan: return Tibetan; + case QChar::Script_Nko: return Nko; + default: break; + }; + return Common; } diff --git a/src/corelib/tools/qunicodetables_p.h b/src/corelib/tools/qunicodetables_p.h index 9c02791acc..0aa8c1f784 100644 --- a/src/corelib/tools/qunicodetables_p.h +++ b/src/corelib/tools/qunicodetables_p.h @@ -83,7 +83,7 @@ struct Properties { ushort wordBreakClass : 8; /* 4 used */ ushort sentenceBreakClass : 8; /* 4 used */ ushort lineBreakClass : 8; /* 6 used */ - ushort script : 8; /* 5 used */ + ushort script : 8; /* 7 used */ }; Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4); -- cgit v1.2.3 From 9b0fab6b62df98519ebfab117f14b9d3465d8c68 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Fri, 21 Dec 2012 18:35:58 +0200 Subject: Update Qt internals to use QChar::Script ...and remove the outdated QUnicodeTables::Script enum. QFontEngineData now has one extra slot that never used (engines[QChar::Script_Inherited]). engines[QChar::Script_Unknown], if accessed, would be set with a Box engine instance, and could be used as a minor optimization some time later. In order to preserve the existing behavior, we map all scripts up to Latin to Common. Change-Id: Ide4182a0f8447b4bf25713ecc3fe8097b8fed040 Reviewed-by: Pierre Rossi Reviewed-by: Konstantin Ritt --- src/corelib/tools/qharfbuzz_p.h | 77 ++++++++++++++++++++- src/corelib/tools/qtextboundaryfinder.cpp | 11 ++- src/corelib/tools/qunicodetables.cpp | 37 ---------- src/corelib/tools/qunicodetables_p.h | 111 ------------------------------ src/corelib/tools/qunicodetools.cpp | 6 +- 5 files changed, 84 insertions(+), 158 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qharfbuzz_p.h b/src/corelib/tools/qharfbuzz_p.h index 8330921323..9efbdcb692 100644 --- a/src/corelib/tools/qharfbuzz_p.h +++ b/src/corelib/tools/qharfbuzz_p.h @@ -53,11 +53,86 @@ #ifndef QHARFBUZZ_P_H #define QHARFBUZZ_P_H -#include +#include + #include QT_BEGIN_NAMESPACE +static inline HB_Script script_to_hbscript(uchar script) +{ + switch (script) { + case QChar::Script_Inherited: return HB_Script_Inherited; + case QChar::Script_Common: return HB_Script_Common; + case QChar::Script_Arabic: return HB_Script_Arabic; + case QChar::Script_Armenian: return HB_Script_Armenian; + case QChar::Script_Bengali: return HB_Script_Bengali; + case QChar::Script_Cyrillic: return HB_Script_Cyrillic; + case QChar::Script_Devanagari: return HB_Script_Devanagari; + case QChar::Script_Georgian: return HB_Script_Georgian; + case QChar::Script_Greek: return HB_Script_Greek; + case QChar::Script_Gujarati: return HB_Script_Gujarati; + case QChar::Script_Gurmukhi: return HB_Script_Gurmukhi; + case QChar::Script_Hangul: return HB_Script_Hangul; + case QChar::Script_Hebrew: return HB_Script_Hebrew; + case QChar::Script_Kannada: return HB_Script_Kannada; + case QChar::Script_Khmer: return HB_Script_Khmer; + case QChar::Script_Lao: return HB_Script_Lao; + case QChar::Script_Malayalam: return HB_Script_Malayalam; + case QChar::Script_Myanmar: return HB_Script_Myanmar; + case QChar::Script_Ogham: return HB_Script_Ogham; + case QChar::Script_Oriya: return HB_Script_Oriya; + case QChar::Script_Runic: return HB_Script_Runic; + case QChar::Script_Sinhala: return HB_Script_Sinhala; + case QChar::Script_Syriac: return HB_Script_Syriac; + case QChar::Script_Tamil: return HB_Script_Tamil; + case QChar::Script_Telugu: return HB_Script_Telugu; + case QChar::Script_Thaana: return HB_Script_Thaana; + case QChar::Script_Thai: return HB_Script_Thai; + case QChar::Script_Tibetan: return HB_Script_Tibetan; + case QChar::Script_Nko: return HB_Script_Nko; + default: break; + }; + return HB_Script_Common; +} + +static inline uchar hbscript_to_script(uchar script) +{ + switch (script) { + case HB_Script_Inherited: return QChar::Script_Inherited; + case HB_Script_Common: return QChar::Script_Common; + case HB_Script_Arabic: return QChar::Script_Arabic; + case HB_Script_Armenian: return QChar::Script_Armenian; + case HB_Script_Bengali: return QChar::Script_Bengali; + case HB_Script_Cyrillic: return QChar::Script_Cyrillic; + case HB_Script_Devanagari: return QChar::Script_Devanagari; + case HB_Script_Georgian: return QChar::Script_Georgian; + case HB_Script_Greek: return QChar::Script_Greek; + case HB_Script_Gujarati: return QChar::Script_Gujarati; + case HB_Script_Gurmukhi: return QChar::Script_Gurmukhi; + case HB_Script_Hangul: return QChar::Script_Hangul; + case HB_Script_Hebrew: return QChar::Script_Hebrew; + case HB_Script_Kannada: return QChar::Script_Kannada; + case HB_Script_Khmer: return QChar::Script_Khmer; + case HB_Script_Lao: return QChar::Script_Lao; + case HB_Script_Malayalam: return QChar::Script_Malayalam; + case HB_Script_Myanmar: return QChar::Script_Myanmar; + case HB_Script_Ogham: return QChar::Script_Ogham; + case HB_Script_Oriya: return QChar::Script_Oriya; + case HB_Script_Runic: return QChar::Script_Runic; + case HB_Script_Sinhala: return QChar::Script_Sinhala; + case HB_Script_Syriac: return QChar::Script_Syriac; + case HB_Script_Tamil: return QChar::Script_Tamil; + case HB_Script_Telugu: return QChar::Script_Telugu; + case HB_Script_Thaana: return QChar::Script_Thaana; + case HB_Script_Thai: return QChar::Script_Thai; + case HB_Script_Tibetan: return QChar::Script_Tibetan; + case HB_Script_Nko: return QChar::Script_Nko; + default: break; + }; + return QChar::Script_Common; +} + Q_CORE_EXPORT HB_Bool qShapeItem(HB_ShaperItem *item); // ### temporary diff --git a/src/corelib/tools/qtextboundaryfinder.cpp b/src/corelib/tools/qtextboundaryfinder.cpp index 968a580725..3ffb59b3df 100644 --- a/src/corelib/tools/qtextboundaryfinder.cpp +++ b/src/corelib/tools/qtextboundaryfinder.cpp @@ -41,7 +41,6 @@ #include #include -#include #include QT_BEGIN_NAMESPACE @@ -61,15 +60,15 @@ static void init(QTextBoundaryFinder::BoundaryType type, const QChar *chars, int // correctly assign script, isTab and isObject to the script analysis const ushort *uc = unicode; const ushort *e = uc + length; - int script = QUnicodeTables::Common; - int lastScript = QUnicodeTables::Common; + uchar script = QChar::Script_Common; + uchar lastScript = QChar::Script_Common; const ushort *start = uc; while (uc < e) { - int s = QUnicodeTables::script(*uc); - if (s != QUnicodeTables::Inherited) + int s = QChar::script(*uc); + if (s != QChar::Script_Inherited) script = s; if (*uc == QChar::ObjectReplacementCharacter || *uc == QChar::LineSeparator || *uc == 9) - script = QUnicodeTables::Common; + script = QChar::Script_Common; if (script != lastScript) { if (uc != start) { QUnicodeTools::ScriptItem item; diff --git a/src/corelib/tools/qunicodetables.cpp b/src/corelib/tools/qunicodetables.cpp index 927fb7462b..8b85ff7565 100644 --- a/src/corelib/tools/qunicodetables.cpp +++ b/src/corelib/tools/qunicodetables.cpp @@ -6724,43 +6724,6 @@ Q_CORE_EXPORT LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4) return (LineBreakClass)qGetProp(ucs4)->lineBreakClass; } -Q_CORE_EXPORT Script QT_FASTCALL script(uint ucs4) -{ - switch (qGetProp(ucs4)->script) { - case QChar::Script_Inherited: return Inherited; - case QChar::Script_Common: return Common; - case QChar::Script_Arabic: return Arabic; - case QChar::Script_Armenian: return Armenian; - case QChar::Script_Bengali: return Bengali; - case QChar::Script_Cyrillic: return Cyrillic; - case QChar::Script_Devanagari: return Devanagari; - case QChar::Script_Georgian: return Georgian; - case QChar::Script_Greek: return Greek; - case QChar::Script_Gujarati: return Gujarati; - case QChar::Script_Gurmukhi: return Gurmukhi; - case QChar::Script_Hangul: return Hangul; - case QChar::Script_Hebrew: return Hebrew; - case QChar::Script_Kannada: return Kannada; - case QChar::Script_Khmer: return Khmer; - case QChar::Script_Lao: return Lao; - case QChar::Script_Malayalam: return Malayalam; - case QChar::Script_Myanmar: return Myanmar; - case QChar::Script_Ogham: return Ogham; - case QChar::Script_Oriya: return Oriya; - case QChar::Script_Runic: return Runic; - case QChar::Script_Sinhala: return Sinhala; - case QChar::Script_Syriac: return Syriac; - case QChar::Script_Tamil: return Tamil; - case QChar::Script_Telugu: return Telugu; - case QChar::Script_Thaana: return Thaana; - case QChar::Script_Thai: return Thai; - case QChar::Script_Tibetan: return Tibetan; - case QChar::Script_Nko: return Nko; - default: break; - }; - return Common; -} - static const ushort specialCaseMap[] = { 0x0, // placeholder diff --git a/src/corelib/tools/qunicodetables_p.h b/src/corelib/tools/qunicodetables_p.h index 0aa8c1f784..bcad1d5fe3 100644 --- a/src/corelib/tools/qunicodetables_p.h +++ b/src/corelib/tools/qunicodetables_p.h @@ -89,113 +89,6 @@ struct Properties { Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4); Q_CORE_EXPORT const Properties * QT_FASTCALL properties(ushort ucs2); -// See http://www.unicode.org/reports/tr24/tr24-5.html -enum Script { - Common, - Greek, - Cyrillic, - Armenian, - Hebrew, - Arabic, - Syriac, - Thaana, - Devanagari, - Bengali, - Gurmukhi, - Gujarati, - Oriya, - Tamil, - Telugu, - Kannada, - Malayalam, - Sinhala, - Thai, - Lao, - Tibetan, - Myanmar, - Georgian, - Hangul, - Ogham, - Runic, - Khmer, - Nko, - Inherited, - ScriptCount = Inherited, - Latin = Common, - Ethiopic = Common, - Cherokee = Common, - CanadianAboriginal = Common, - Mongolian = Common, - Hiragana = Common, - Katakana = Common, - Bopomofo = Common, - Han = Common, - Yi = Common, - OldItalic = Common, - Gothic = Common, - Deseret = Common, - Tagalog = Common, - Hanunoo = Common, - Buhid = Common, - Tagbanwa = Common, - Limbu = Common, - TaiLe = Common, - LinearB = Common, - Ugaritic = Common, - Shavian = Common, - Osmanya = Common, - Cypriot = Common, - Braille = Common, - Buginese = Common, - Coptic = Common, - NewTaiLue = Common, - Glagolitic = Common, - Tifinagh = Common, - SylotiNagri = Common, - OldPersian = Common, - Kharoshthi = Common, - Balinese = Common, - Cuneiform = Common, - Phoenician = Common, - PhagsPa = Common, - Sundanese = Common, - Lepcha = Common, - OlChiki = Common, - Vai = Common, - Saurashtra = Common, - KayahLi = Common, - Rejang = Common, - Lycian = Common, - Carian = Common, - Lydian = Common, - Cham = Common, - TaiTham = Common, - TaiViet = Common, - Avestan = Common, - EgyptianHieroglyphs = Common, - Samaritan = Common, - Lisu = Common, - Bamum = Common, - Javanese = Common, - MeeteiMayek = Common, - ImperialAramaic = Common, - OldSouthArabian = Common, - InscriptionalParthian = Common, - InscriptionalPahlavi = Common, - OldTurkic = Common, - Kaithi = Common, - Batak = Common, - Brahmi = Common, - Mandaic = Common, - Chakma = Common, - MeroiticCursive = Common, - MeroiticHieroglyphs = Common, - Miao = Common, - Sharada = Common, - SoraSompeng = Common, - Takri = Common -}; - enum GraphemeBreakClass { GraphemeBreak_Other, GraphemeBreak_CR, @@ -274,10 +167,6 @@ Q_CORE_EXPORT LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4); inline LineBreakClass lineBreakClass(QChar ch) { return lineBreakClass(ch.unicode()); } -Q_CORE_EXPORT Script QT_FASTCALL script(uint ucs4); -inline Script script(QChar ch) -{ return script(ch.unicode()); } - } // namespace QUnicodeTables QT_END_NAMESPACE diff --git a/src/corelib/tools/qunicodetools.cpp b/src/corelib/tools/qunicodetools.cpp index e86fef61e7..8bafb692ca 100644 --- a/src/corelib/tools/qunicodetools.cpp +++ b/src/corelib/tools/qunicodetools.cpp @@ -44,7 +44,7 @@ #include "qunicodetables_p.h" #include "qvarlengtharray.h" -#include +#include "qharfbuzz_p.h" #define FLAG(x) (1 << (x)) @@ -615,7 +615,7 @@ Q_CORE_EXPORT void initCharAttributes(const ushort *string, int length, HB_ScriptItem item; item.pos = items[start].position; item.length = items[i].position - items[start].position; - item.script = (HB_Script)items[start].script; + item.script = script_to_hbscript(items[start].script); item.bidiLevel = 0; // unused scriptItems.append(item); start = i; @@ -624,7 +624,7 @@ Q_CORE_EXPORT void initCharAttributes(const ushort *string, int length, HB_ScriptItem item; item.pos = items[start].position; item.length = length - items[start].position; - item.script = (HB_Script)items[start].script; + item.script = script_to_hbscript(items[start].script); item.bidiLevel = 0; // unused scriptItems.append(item); } -- cgit v1.2.3 From 7ee9551b62b050f7e9aefdc19e19bac5ba263507 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 23 May 2012 21:10:31 +0200 Subject: Add support for multiple arguments to QSharedPointer::create() Requires C++11 rvalue references and variadic templates so we can implement perfect forwarding. Change-Id: I62e47d1ffd0c61e8386f9f246aa79031b7430b46 Reviewed-by: Olivier Goffart --- src/corelib/tools/qsharedpointer.cpp | 31 +++++++++++++++++++++++++++++++ src/corelib/tools/qsharedpointer.h | 3 +++ src/corelib/tools/qsharedpointer_impl.h | 27 +++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qsharedpointer.cpp b/src/corelib/tools/qsharedpointer.cpp index 167771027e..c9456c44c2 100644 --- a/src/corelib/tools/qsharedpointer.cpp +++ b/src/corelib/tools/qsharedpointer.cpp @@ -604,6 +604,37 @@ \sa qSharedPointerObjectCast() */ +/*! + \fn QSharedPointer QSharedPointer::create() + \since 4.6 + + Creates a QSharedPointer object and allocates a new item of type \tt T. The + QSharedPointer internals and the object are allocated in one single memory + allocation, which could help reduce memory fragmentation in a long-running + application. + + This function calls the default constructor for type \tt T. +*/ + +/*! + \fn QSharedPointer QSharedPointer::create(...) + \overload + \since 5.1 + + Creates a QSharedPointer object and allocates a new item of type \tt T. The + QSharedPointer internals and the object are allocated in one single memory + allocation, which could help reduce memory fragmentation in a long-running + application. + + This function will attempt to call a constructor for type \tt T that can + accept all the arguments passed. Arguments will be perfectly-forwarded. + + \note This function is only available with a C++11 compiler that supports + perfect forwarding of an arbitrary number of arguments. If the compiler + does not support the necessary C++11 features, you must use the overload + that calls the default constructor. +*/ + /*! \fn QWeakPointer QSharedPointer::toWeakRef() const diff --git a/src/corelib/tools/qsharedpointer.h b/src/corelib/tools/qsharedpointer.h index cfc5cadbb0..a430153bca 100644 --- a/src/corelib/tools/qsharedpointer.h +++ b/src/corelib/tools/qsharedpointer.h @@ -95,6 +95,9 @@ public: template QSharedPointer dynamicCast() const; template QSharedPointer constCast() const; template QSharedPointer objectCast() const; + + static inline QSharedPointer create(); + static inline QSharedPointer create(...); }; template diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h index 6f3e577e55..6393cc3970 100644 --- a/src/corelib/tools/qsharedpointer_impl.h +++ b/src/corelib/tools/qsharedpointer_impl.h @@ -62,6 +62,10 @@ QT_END_HEADER #include // for qobject_cast #include // for qHash +#if defined(Q_COMPILER_RVALUE_REFS) && defined(Q_COMPILER_VARIADIC_TEMPLATES) +# include // for std::forward +#endif + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -389,6 +393,28 @@ public: QWeakPointer toWeakRef() const; +#if defined(Q_COMPILER_RVALUE_REFS) && defined(Q_COMPILER_VARIADIC_TEMPLATES) + template + static QSharedPointer create(Args && ...arguments) + { + typedef QtSharedPointer::ExternalRefCountWithContiguousData Private; +# ifdef QT_SHAREDPOINTER_TRACK_POINTERS + typename Private::DestroyerFn destroy = &Private::safetyCheckDeleter; +# else + typename Private::DestroyerFn destroy = &Private::deleter; +# endif + QSharedPointer result(Qt::Uninitialized); + result.d = Private::create(&result.value, destroy); + + // now initialize the data + new (result.data()) T(std::forward(arguments)...); + result.d->setQObjectShared(result.value, true); +# ifdef QT_SHAREDPOINTER_TRACK_POINTERS + internalSafetyCheckAdd(result.d, result.value); +# endif + return result; + } +#else static inline QSharedPointer create() { typedef QtSharedPointer::ExternalRefCountWithContiguousData Private; @@ -408,6 +434,7 @@ public: result.d->setQObjectShared(result.value, true); return result; } +#endif private: explicit QSharedPointer(Qt::Initialization) {} -- cgit v1.2.3 From 6769e0783ac0fc54aa542232b24166afc082412e Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Wed, 2 Jan 2013 15:23:15 +0100 Subject: Fix the \since version for QSharedPointer::create(). It is not relevant that it has been part of the class since Qt 4.6. It has always been internal until now. The release where it became public API (5.1) is what is relevant. Change-Id: Ib740f3ed6df190884a94fb2c11dd74cd7edb7b1a Reviewed-by: Venugopal Shivashankar Reviewed-by: Lars Knoll --- src/corelib/tools/qsharedpointer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qsharedpointer.cpp b/src/corelib/tools/qsharedpointer.cpp index c9456c44c2..5455904021 100644 --- a/src/corelib/tools/qsharedpointer.cpp +++ b/src/corelib/tools/qsharedpointer.cpp @@ -606,7 +606,7 @@ /*! \fn QSharedPointer QSharedPointer::create() - \since 4.6 + \since 5.1 Creates a QSharedPointer object and allocates a new item of type \tt T. The QSharedPointer internals and the object are allocated in one single memory -- cgit v1.2.3 From 59eb393cf57015a4dfea94617c863aafb096afa7 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sun, 14 Oct 2012 16:29:39 +0100 Subject: Rename QRegularExpression-related feature defs to QT_NO_REGULAREXPRESSION MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QRegExp and QRegularExpression are totally independent, therefore using two different defines is the right thing to do. Also, document the new define in qfeatures.{txt,h}. Change-Id: Ice4826ea543f4b22f1cc27bf31ed6e043d0c43b0 Reviewed-by: Oswald Buddenhagen Reviewed-by: Thiago Macieira Reviewed-by: Jędrzej Nowacki --- src/corelib/tools/qregularexpression.h | 4 ++-- src/corelib/tools/qstring.cpp | 26 ++++++++++++++++---------- src/corelib/tools/qstring.h | 8 ++++---- src/corelib/tools/qstringlist.cpp | 12 ++++++------ src/corelib/tools/qstringlist.h | 12 ++++++------ 5 files changed, 34 insertions(+), 28 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qregularexpression.h b/src/corelib/tools/qregularexpression.h index 4c95a5b3a0..e312b10ff1 100644 --- a/src/corelib/tools/qregularexpression.h +++ b/src/corelib/tools/qregularexpression.h @@ -42,7 +42,7 @@ #ifndef QREGULAREXPRESSION_H #define QREGULAREXPRESSION_H -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION #include #include @@ -241,6 +241,6 @@ QT_END_NAMESPACE QT_END_HEADER -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION #endif // QREGULAREXPRESSION_H diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 6db4fed0f8..10ef6b34dd 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -2762,13 +2762,17 @@ int QString::lastIndexOf(const QStringRef &str, int from, Qt::CaseSensitivity cs str.size(), cs); } -#ifndef QT_NO_REGEXP + +#if !(defined(QT_NO_REGEXP) && defined(QT_NO_REGULAREXPRESSION)) struct QStringCapture { int pos; int len; int no; }; +#endif + +#ifndef QT_NO_REGEXP /*! \overload replace() @@ -2925,7 +2929,7 @@ QString& QString::replace(const QRegExp &rx, const QString &after) } #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION #ifndef QT_BOOTSTRAPPED /*! \overload replace() @@ -3055,7 +3059,7 @@ QString &QString::replace(const QRegularExpression &re, const QString &after) return *this; } #endif // QT_BOOTSTRAPPED -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION /*! Returns the number of (potentially overlapping) occurrences of @@ -3256,7 +3260,7 @@ int QString::count(const QRegExp& rx) const } #endif // QT_NO_REGEXP -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION #ifndef QT_BOOTSTRAPPED /*! \overload indexOf() @@ -3366,7 +3370,7 @@ int QString::count(const QRegularExpression &re) const return count; } #endif // QT_BOOTSTRAPPED -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION /*! \fn int QString::count() const @@ -3487,7 +3491,7 @@ QString QString::section(const QString &sep, int start, int end, SectionFlags fl return ret; } -#ifndef QT_NO_REGEXP +#if !(defined(QT_NO_REGEXP) && defined(QT_NO_REGULAREXPRESSION)) class qt_section_chunk { public: qt_section_chunk(int l, QString s) { length = l; string = s; } @@ -3537,7 +3541,9 @@ static QString extractSections(const QList §ions, return ret; } +#endif +#ifndef QT_NO_REGEXP /*! \overload section() @@ -3575,7 +3581,7 @@ QString QString::section(const QRegExp ®, int start, int end, SectionFlags fl } #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION #ifndef QT_BOOTSTRAPPED /*! \overload section() @@ -3621,7 +3627,7 @@ QString QString::section(const QRegularExpression &re, int start, int end, Secti return extractSections(sections, start, end, flags); } #endif // QT_BOOTSTRAPPED -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION /*! Returns a substring that contains the \a n leftmost characters @@ -6416,7 +6422,7 @@ QStringList QString::split(const QRegExp &rx, SplitBehavior behavior) const } #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION #ifndef QT_BOOTSTRAPPED /*! \overload @@ -6470,7 +6476,7 @@ QStringList QString::split(const QRegularExpression &re, SplitBehavior behavior) return list; } #endif // QT_BOOTSTRAPPED -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION /*! \enum QString::NormalizationForm diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index b679f0f990..574285fa1e 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -335,7 +335,7 @@ public: inline bool contains(QRegExp &rx) const { return indexOf(rx) != -1; } #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION int indexOf(const QRegularExpression &re, int from = 0) const; int lastIndexOf(const QRegularExpression &re, int from = -1) const; bool contains(const QRegularExpression &re) const; @@ -356,7 +356,7 @@ public: #ifndef QT_NO_REGEXP QString section(const QRegExp ®, int start, int end = -1, SectionFlags flags = SectionDefault) const; #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION QString section(const QRegularExpression &re, int start, int end = -1, SectionFlags flags = SectionDefault) const; #endif QString left(int n) const Q_REQUIRED_RESULT; @@ -432,7 +432,7 @@ public: inline QString &remove(const QRegExp &rx) { return replace(rx, QString()); } #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION QString &replace(const QRegularExpression &re, const QString &after); inline QString &remove(const QRegularExpression &re) { return replace(re, QString()); } @@ -447,7 +447,7 @@ public: #ifndef QT_NO_REGEXP QStringList split(const QRegExp &sep, SplitBehavior behavior = KeepEmptyParts) const Q_REQUIRED_RESULT; #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION QStringList split(const QRegularExpression &sep, SplitBehavior behavior = KeepEmptyParts) const Q_REQUIRED_RESULT; #endif enum NormalizationForm { diff --git a/src/corelib/tools/qstringlist.cpp b/src/corelib/tools/qstringlist.cpp index d56f531e52..35ff2d3d84 100644 --- a/src/corelib/tools/qstringlist.cpp +++ b/src/corelib/tools/qstringlist.cpp @@ -320,7 +320,7 @@ QStringList QtPrivate::QStringList_filter(const QStringList *that, const QRegExp #endif #ifndef QT_BOOTSTRAPPED -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION /*! \fn QStringList QStringList::filter(const QRegularExpression &re) const \overload @@ -338,7 +338,7 @@ QStringList QtPrivate::QStringList_filter(const QStringList *that, const QRegula } return res; } -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION #endif // QT_BOOTSTRAPPED /*! @@ -395,7 +395,7 @@ void QtPrivate::QStringList_replaceInStrings(QStringList *that, const QRegExp &r #endif #ifndef QT_BOOTSTRAPPED -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION /*! \fn QStringList &QStringList::replaceInStrings(const QRegularExpression &re, const QString &after) \overload @@ -424,7 +424,7 @@ void QtPrivate::QStringList_replaceInStrings(QStringList *that, const QRegularEx for (int i = 0; i < that->size(); ++i) (*that)[i].replace(re, after); } -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION #endif // QT_BOOTSTRAPPED /*! @@ -619,7 +619,7 @@ int QtPrivate::QStringList_lastIndexOf(const QStringList *that, QRegExp &rx, int #endif #ifndef QT_BOOTSTRAPPED -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION /*! \fn int QStringList::indexOf(const QRegularExpression &re, int from) const \overload @@ -676,7 +676,7 @@ int QtPrivate::QStringList_lastIndexOf(const QStringList *that, const QRegularEx } return -1; } -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION #endif // QT_BOOTSTRAPPED /*! diff --git a/src/corelib/tools/qstringlist.h b/src/corelib/tools/qstringlist.h index 2448081004..9f7e41d800 100644 --- a/src/corelib/tools/qstringlist.h +++ b/src/corelib/tools/qstringlist.h @@ -99,12 +99,12 @@ public: #endif #ifndef QT_BOOTSTRAPPED -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION inline QStringList filter(const QRegularExpression &re) const; inline QStringList &replaceInStrings(const QRegularExpression &re, const QString &after); inline int indexOf(const QRegularExpression &re, int from = 0) const; inline int lastIndexOf(const QRegularExpression &re, int from = -1) const; -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION #endif // QT_BOOTSTRAPPED #if !defined(Q_NO_USING_KEYWORD) @@ -141,12 +141,12 @@ namespace QtPrivate { #endif #ifndef QT_BOOTSTRAPPED -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION void Q_CORE_EXPORT QStringList_replaceInStrings(QStringList *that, const QRegularExpression &rx, const QString &after); QStringList Q_CORE_EXPORT QStringList_filter(const QStringList *that, const QRegularExpression &re); int Q_CORE_EXPORT QStringList_indexOf(const QStringList *that, const QRegularExpression &re, int from); int Q_CORE_EXPORT QStringList_lastIndexOf(const QStringList *that, const QRegularExpression &re, int from); -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION #endif // QT_BOOTSTRAPPED } @@ -220,7 +220,7 @@ inline int QStringList::lastIndexOf(QRegExp &rx, int from) const #endif #ifndef QT_BOOTSTRAPPED -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION inline QStringList &QStringList::replaceInStrings(const QRegularExpression &rx, const QString &after) { QtPrivate::QStringList_replaceInStrings(this, rx, after); @@ -241,7 +241,7 @@ inline int QStringList::lastIndexOf(const QRegularExpression &rx, int from) cons { return QtPrivate::QStringList_lastIndexOf(this, rx, from); } -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION #endif // QT_BOOTSTRAPPED #ifndef QT_NO_DATASTREAM -- cgit v1.2.3 From 6ecc3e76e822b1545bcbfa78f5caf94156a026d2 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 10 Dec 2012 12:00:53 +0100 Subject: Add API dealing with QMargins to QRect. - Addition of a QMargin to a QRect. - Removal of a QMargin from a QRect. - Remove implementation from Windows platform plugin. Change-Id: Iae54bc13e94a7ece48853b1d3f3de2bfc154d2dd Reviewed-by: Oliver Wolff Reviewed-by: Mitch Curtis --- src/corelib/tools/qmargins.cpp | 59 ++++++++++++++++++++++++++++++++++++++++++ src/corelib/tools/qmargins.h | 37 +++++++++++++++++++++++++- src/corelib/tools/qrect.h | 6 +++++ 3 files changed, 101 insertions(+), 1 deletion(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qmargins.cpp b/src/corelib/tools/qmargins.cpp index 6929433bb5..214466194a 100644 --- a/src/corelib/tools/qmargins.cpp +++ b/src/corelib/tools/qmargins.cpp @@ -157,6 +157,65 @@ QT_BEGIN_NAMESPACE Returns true if \a m1 and \a m2 are different; otherwise returns false. */ +/*! + \fn QRect operator+(const QRect &rectangle, const QMargins &margins) + \relates QRect + + Returns the \a rectangle grown by the \a margins. + + \since 5.1 +*/ + +/*! + \fn QRect operator+(const QMargins &margins, const QRect &rectangle) + \relates QRect + \overload + + Returns the \a rectangle grown by the \a margins. + + \since 5.1 +*/ + +/*! + \fn QRect QRect::marginsAdded(const QMargins &margins) const + + Returns a rectangle grown by the \a margins. + + \sa operator+=(), marginsRemoved(), operator-=() + + \since 5.1 +*/ + +/*! + \fn QRect QRect::operator+=(const QMargins &margins) const + + Adds the \a margins to the rectangle, growing it. + + \sa marginsAdded(), marginsRemoved(), operator-=() + + \since 5.1 +*/ + +/*! + \fn QRect QRect::marginsRemoved(const QMargins &margins) const + + Removes the \a margins from the rectangle, shrinking it. + + \sa marginsAdded(), operator+=(), operator-=() + + \since 5.1 +*/ + +/*! + \fn QRect QRect::operator -=(const QMargins &margins) const + + Returns a rectangle shrunk by the \a margins. + + \sa marginsRemoved(), operator+=(), marginsAdded() + + \since 5.1 +*/ + /***************************************************************************** QMargins stream functions *****************************************************************************/ diff --git a/src/corelib/tools/qmargins.h b/src/corelib/tools/qmargins.h index 8ceccd4419..a933a60fed 100644 --- a/src/corelib/tools/qmargins.h +++ b/src/corelib/tools/qmargins.h @@ -42,7 +42,7 @@ #ifndef QMARGINS_H #define QMARGINS_H -#include +#include QT_BEGIN_HEADER @@ -142,6 +142,41 @@ Q_DECL_CONSTEXPR inline bool operator!=(const QMargins &m1, const QMargins &m2) m1.m_bottom != m2.m_bottom; } +Q_DECL_CONSTEXPR inline QRect operator+(const QRect &rectangle, const QMargins &margins) +{ + return QRect(QPoint(rectangle.left() - margins.left(), rectangle.top() - margins.top()), + QPoint(rectangle.right() + margins.right(), rectangle.bottom() + margins.bottom())); +} + +Q_DECL_CONSTEXPR inline QRect operator+(const QMargins &margins, const QRect &rectangle) +{ + return QRect(QPoint(rectangle.left() - margins.left(), rectangle.top() - margins.top()), + QPoint(rectangle.right() + margins.right(), rectangle.bottom() + margins.bottom())); +} + +inline QRect QRect::marginsAdded(const QMargins &margins) const +{ + return *this + margins; +} + +inline QRect QRect::marginsRemoved(const QMargins &margins) const +{ + return QRect(QPoint(x1 + margins.left(), y1 + margins.top()), + QPoint(x2 - margins.right(), y2 - margins.bottom())); +} + +inline QRect &QRect::operator+=(const QMargins &margins) +{ + *this = marginsAdded(margins); + return *this; +} + +inline QRect &QRect::operator-=(const QMargins &margins) +{ + *this = marginsRemoved(margins); + return *this; +} + #ifndef QT_NO_DEBUG_STREAM Q_CORE_EXPORT QDebug operator<<(QDebug, const QMargins &); #endif diff --git a/src/corelib/tools/qrect.h b/src/corelib/tools/qrect.h index 6e1a819ef3..39b5602abf 100644 --- a/src/corelib/tools/qrect.h +++ b/src/corelib/tools/qrect.h @@ -53,6 +53,7 @@ QT_BEGIN_HEADER QT_BEGIN_NAMESPACE +class QMargins; class Q_CORE_EXPORT QRect { @@ -139,6 +140,11 @@ public: inline QRect intersected(const QRect &other) const; bool intersects(const QRect &r) const; + inline QRect marginsAdded(const QMargins &margins) const; + inline QRect marginsRemoved(const QMargins &margins) const; + inline QRect &operator+=(const QMargins &margins); + inline QRect &operator-=(const QMargins &margins); + #if QT_DEPRECATED_SINCE(5, 0) QT_DEPRECATED QRect unite(const QRect &r) const { return united(r); } QT_DEPRECATED QRect intersect(const QRect &r) const { return intersected(r); } -- cgit v1.2.3 From bc5a2336ab9a681411a81a53d8639b4b79f80073 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 10 Dec 2012 16:53:16 +0100 Subject: Provide operators for QMargins. Provide addition/subtraction for QMargins as well as multiplication and division for int/qreal similar to QPoint. Add unary minus. Change-Id: If4eb831cfd610b34b5ca361619b1636031811d0a Reviewed-by: Oliver Wolff Reviewed-by: Mitch Curtis --- src/corelib/tools/qmargins.cpp | 175 +++++++++++++++++++++++++++++++++++++++++ src/corelib/tools/qmargins.h | 92 ++++++++++++++++++++++ 2 files changed, 267 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qmargins.cpp b/src/corelib/tools/qmargins.cpp index 214466194a..e30675dc63 100644 --- a/src/corelib/tools/qmargins.cpp +++ b/src/corelib/tools/qmargins.cpp @@ -216,6 +216,181 @@ QT_BEGIN_NAMESPACE \since 5.1 */ +/*! + \fn const QMargins operator+(const QMargins &m1, const QMargins &m2) + \relates QMargins + + Returns a QMargins object that is the sum of the given margins, \a m1 + and \a m2; each component is added separately. + + \sa QMargins::operator+=(), QMargins::operator-=() + + \since 5.1 +*/ + +/*! + \fn const QMargins operator-(const QMargins &m1, const QMargins &m2) + \relates QMargins + + Returns a QMargins object that is formed by subtracting \a m2 from + \a m1; each component is subtracted separately. + + \sa QMargins::operator+=(), QMargins::operator-=() + + \since 5.1 +*/ + +/*! + \fn const QMargins operator*(const QMargins &margins, int factor) + \relates QMargins + + Returns a QMargins object that is formed by multiplying each component + of the given \a margins by \a factor. + + \sa QMargins::operator*=(), QMargins::operator/=() + + \since 5.1 +*/ + +/*! + \fn const QMargins operator*(int factor, const QMargins &margins) + \relates QMargins + \overload + + Returns a QMargins object that is formed by multiplying each component + of the given \a margins by \a factor. + + \sa QMargins::operator*=(), QMargins::operator/=() + + \since 5.1 +*/ + +/*! + \fn const QMargins operator*(const QMargins &margins, qreal factor) + \relates QMargins + \overload + + Returns a QMargins object that is formed by multiplying each component + of the given \a margins by \a factor. + + \sa QMargins::operator*=(), QMargins::operator/=() + + \since 5.1 +*/ + +/*! + \fn const QMargins operator*(qreal factor, const QMargins &margins) + \relates QMargins + \overload + + Returns a QMargins object that is formed by multiplying each component + of the given \a margins by \a factor. + + \sa QMargins::operator*=(), QMargins::operator/=() + + \since 5.1 +*/ + +/*! + \fn const QMargins operator/(const QMargins &margins, int divisor) + \relates QMargins + + Returns a QMargins object that is formed by dividing the components of + the given \a margins by the given \a divisor. + + \sa QMargins::operator*=(), QMargins::operator/=() + + \since 5.1 +*/ + +/*! + \fn const QMargins operator/(const QMargins &, qreal) + \relates QMargins + \overload + + Returns a QMargins object that is formed by dividing the components of + the given \a margins by the given \a divisor. + + \sa QMargins::operator*=(), QMargins::operator/=() + + \since 5.1 +*/ + +/*! + \fn QMargins operator-(const QMargins &margins) + \relates QMargins + + Returns a QMargin object that is formed by negating all components of \a margins. + + \since 5.1 +*/ + +/*! + \fn QMargins &operator+=(const QMargins &margins) + + Add each component of \a margins to the respective component of this object + and returns a reference to it. + + \sa operator-=() + + \since 5.1 +*/ + +/*! + \fn QMargins &operator-=(const QMargins &margins) + + Subtract each component of \a margins from the respective component of this object + and returns a reference to it. + + \sa operator+=() + + \since 5.1 +*/ + +/*! + \fn QMargins &operator*=(int factor) + + Multiplies each component of this object by \a factor + and returns a reference to it. + + \sa operator/=() + + \since 5.1 +*/ + +/*! + \fn QMargins &operator*=(qreal factor) + \overload + + Multiplies each component of this object by \a factor + and returns a reference to it. + + \sa operator/=() + + \since 5.1 +*/ + +/*! + \fn QMargins &operator/=(int divisor) + + Divides each component of this object by \a divisor + and returns a reference to it. + + \sa operator*=() + + \since 5.1 +*/ + +/*! + \fn QMargins &operator/=(qreal divisor) + + \overload + + \sa operator*=() + + \since 5.1 +*/ + /***************************************************************************** QMargins stream functions *****************************************************************************/ diff --git a/src/corelib/tools/qmargins.h b/src/corelib/tools/qmargins.h index a933a60fed..dd6fb0261a 100644 --- a/src/corelib/tools/qmargins.h +++ b/src/corelib/tools/qmargins.h @@ -67,6 +67,15 @@ public: void setRight(int right); void setBottom(int bottom); + QMargins &operator+=(const QMargins &margins); + QMargins &operator-=(const QMargins &margins); + QMargins &operator+=(int); + QMargins &operator-=(int); + QMargins &operator*=(int); + QMargins &operator/=(int); + QMargins &operator*=(qreal); + QMargins &operator/=(qreal); + private: int m_left; int m_top; @@ -177,6 +186,89 @@ inline QRect &QRect::operator-=(const QMargins &margins) return *this; } +Q_DECL_CONSTEXPR inline QMargins operator+(const QMargins &m1, const QMargins &m2) +{ + return QMargins(m1.left() + m2.left(), m1.top() + m2.top(), + m1.right() + m2.right(), m1.bottom() + m2.bottom()); +} + +Q_DECL_CONSTEXPR inline QMargins operator-(const QMargins &m1, const QMargins &m2) +{ + return QMargins(m1.left() - m2.left(), m1.top() - m2.top(), + m1.right() - m2.right(), m1.bottom() - m2.bottom()); +} + +Q_DECL_CONSTEXPR inline QMargins operator*(const QMargins &margins, int factor) +{ + return QMargins(margins.left() * factor, margins.top() * factor, + margins.right() * factor, margins.bottom() * factor); +} + +Q_DECL_CONSTEXPR inline QMargins operator*(int factor, const QMargins &margins) +{ + return QMargins(margins.left() * factor, margins.top() * factor, + margins.right() * factor, margins.bottom() * factor); +} + +Q_DECL_CONSTEXPR inline QMargins operator*(const QMargins &margins, qreal factor) +{ + return QMargins(qRound(margins.left() * factor), qRound(margins.top() * factor), + qRound(margins.right() * factor), qRound(margins.bottom() * factor)); +} + +Q_DECL_CONSTEXPR inline QMargins operator*(qreal factor, const QMargins &margins) +{ + return QMargins(qRound(margins.left() * factor), qRound(margins.top() * factor), + qRound(margins.right() * factor), qRound(margins.bottom() * factor)); +} + +Q_DECL_CONSTEXPR inline QMargins operator/(const QMargins &margins, int divisor) +{ + return QMargins(margins.left() / divisor, margins.top() / divisor, + margins.right() / divisor, margins.bottom() / divisor); +} + +Q_DECL_CONSTEXPR inline QMargins operator/(const QMargins &margins, qreal divisor) +{ + return QMargins(qRound(margins.left() / divisor), qRound(margins.top() / divisor), + qRound(margins.right() / divisor), qRound(margins.bottom() / divisor)); +} + +inline QMargins &QMargins::operator+=(const QMargins &margins) +{ + return *this = *this + margins; +} + +inline QMargins &QMargins::operator-=(const QMargins &margins) +{ + return *this = *this - margins; +} + +inline QMargins &QMargins::operator*=(int factor) +{ + return *this = *this * factor; +} + +inline QMargins &QMargins::operator/=(int divisor) +{ + return *this = *this / divisor; +} + +inline QMargins &QMargins::operator*=(qreal factor) +{ + return *this = *this * factor; +} + +inline QMargins &QMargins::operator/=(qreal divisor) +{ + return *this = *this / divisor; +} + +Q_DECL_CONSTEXPR inline QMargins operator-(const QMargins &margins) +{ + return QMargins(-margins.left(), -margins.top(), -margins.right(), -margins.bottom()); +} + #ifndef QT_NO_DEBUG_STREAM Q_CORE_EXPORT QDebug operator<<(QDebug, const QMargins &); #endif -- cgit v1.2.3 From 998899cf3a2501d3bf30ad06ce47a2cf81e1d60b Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sun, 16 Dec 2012 15:05:19 +0100 Subject: Introduce QRegularExpression::NoMatch match type This match type doesn't do any match at all; it's only necessary to properly introduce default constructors for QRegularExpressionMatch and QRegularExpressionMatchIterator (since they return the match type that created them). Change-Id: Ibfe92459c7fdd23129cf3afe073cd443c461ddeb Reviewed-by: Lars Knoll --- src/corelib/tools/qregularexpression.cpp | 17 +++++++++++++++++ src/corelib/tools/qregularexpression.h | 4 +++- 2 files changed, 20 insertions(+), 1 deletion(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 5c6b3ff044..1585389d22 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2012 Giuseppe D'Angelo . +** Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** @@ -725,6 +726,13 @@ QT_BEGIN_NAMESPACE that (in this text) there are other characters beyond the end of the subject string. This can lead to surprising results; see the discussion in the \l{partial matching} section for more details. + + \value NoMatch + No matching is done. This value is returned as the match type by a + default constructed QRegularExpressionMatch or + QRegularExpressionMatchIterator. Using this match type is not very + useful for the user, as no matching ever happens. This enum value + has been introduced in Qt 5.1. */ /*! @@ -1200,6 +1208,15 @@ QRegularExpressionMatchPrivate *QRegularExpressionPrivate::doMatch(const QString return new QRegularExpressionMatchPrivate(re, subject, matchType, matchOptions, 0); } + // skip optimizing and doing the actual matching if NoMatch type was requested + if (matchType == QRegularExpression::NoMatch) { + QRegularExpressionMatchPrivate *priv = new QRegularExpressionMatchPrivate(re, subject, + matchType, matchOptions, + 0); + priv->isValid = true; + return priv; + } + QRegularExpressionMatchPrivate *priv = new QRegularExpressionMatchPrivate(re, subject, matchType, matchOptions, capturingCount); diff --git a/src/corelib/tools/qregularexpression.h b/src/corelib/tools/qregularexpression.h index e312b10ff1..57d03a34e5 100644 --- a/src/corelib/tools/qregularexpression.h +++ b/src/corelib/tools/qregularexpression.h @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2012 Giuseppe D'Angelo . +** Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtCore module of the Qt Toolkit. @@ -99,7 +100,8 @@ public: enum MatchType { NormalMatch = 0, PartialPreferCompleteMatch, - PartialPreferFirstMatch + PartialPreferFirstMatch, + NoMatch }; enum MatchOption { -- cgit v1.2.3 From 0ae529c911fa5dadfa8d8cb666597483c966187e Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sun, 16 Dec 2012 20:18:13 +0100 Subject: Avoid a QVector allocation in QRegularExpressionMatchPrivate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Explicitely pass the number of capturing groups for which the offsets should be reserved in the capturedOffsets vector, instead of relying on it adding 1 (for the implicit capturing group #0). In case 0 is passed, don't allocate any space for that vector. This is being used in case of NoMatch match type or failing match (invalid regexp, out of bounds offset, etc.). Change-Id: I0ec7646d5bd53e7a7973177100b163a5e5030307 Reviewed-by: Jędrzej Nowacki Reviewed-by: Thiago Macieira --- src/corelib/tools/qregularexpression.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 1585389d22..06c696e1e2 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -842,7 +842,7 @@ struct QRegularExpressionMatchPrivate : QSharedData const QString &subject, QRegularExpression::MatchType matchType, QRegularExpression::MatchOptions matchOptions, - int capturingCount); + int capturingCount = 0); QRegularExpressionMatch nextMatch() const; @@ -1201,25 +1201,25 @@ QRegularExpressionMatchPrivate *QRegularExpressionPrivate::doMatch(const QString QRegularExpression re(*const_cast(this)); if (offset < 0 || offset > subject.length()) - return new QRegularExpressionMatchPrivate(re, subject, matchType, matchOptions, 0); + return new QRegularExpressionMatchPrivate(re, subject, matchType, matchOptions); if (!compiledPattern) { qWarning("QRegularExpressionPrivate::doMatch(): called on an invalid QRegularExpression object"); - return new QRegularExpressionMatchPrivate(re, subject, matchType, matchOptions, 0); + return new QRegularExpressionMatchPrivate(re, subject, matchType, matchOptions); } // skip optimizing and doing the actual matching if NoMatch type was requested if (matchType == QRegularExpression::NoMatch) { QRegularExpressionMatchPrivate *priv = new QRegularExpressionMatchPrivate(re, subject, - matchType, matchOptions, - 0); + matchType, matchOptions); priv->isValid = true; return priv; } + // capturingCount doesn't include the implicit "0" capturing group QRegularExpressionMatchPrivate *priv = new QRegularExpressionMatchPrivate(re, subject, matchType, matchOptions, - capturingCount); + capturingCount + 1); // this is mutex protected const pcre16_extra *currentStudyData = const_cast(this)->optimizePattern(); @@ -1328,8 +1328,10 @@ QRegularExpressionMatchPrivate::QRegularExpressionMatchPrivate(const QRegularExp hasMatch(false), hasPartialMatch(false), isValid(false) { Q_ASSERT(capturingCount >= 0); - const int captureOffsetsCount = (capturingCount + 1) * 3; - capturedOffsets.resize(captureOffsetsCount); + if (capturingCount > 0) { + const int captureOffsetsCount = capturingCount * 3; + capturedOffsets.resize(captureOffsetsCount); + } } -- cgit v1.2.3 From 65fba49d639fe2499d66374486f16269e669daf0 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sun, 16 Dec 2012 20:47:47 +0100 Subject: Introduce default ctors for QRegularExpressionMatch(Iterator) This allows to put them in containers, and to enable subsequent features for QString. Change-Id: I3b3fe695ffe6930331ed9f670738376722e0fc36 Reviewed-by: Thiago Macieira --- src/corelib/tools/qregularexpression.cpp | 40 ++++++++++++++++++++++++++++++++ src/corelib/tools/qregularexpression.h | 2 ++ 2 files changed, 42 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 06c696e1e2..e3f39a2662 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -1657,6 +1657,26 @@ QString QRegularExpression::escape(const QString &str) return result; } +/*! + \since 5.1 + + Constructs a valid, empty QRegularExpressionMatch object. The regular + expression is set to a default-constructed one; the match type to + QRegularExpression::NoMatch and the match options to + QRegularExpression::NoMatchOption. + + The object will report no match through the hasMatch() and the + hasPartialMatch() member functions. +*/ +QRegularExpressionMatch::QRegularExpressionMatch() + : d(new QRegularExpressionMatchPrivate(QRegularExpression(), + QString(), + QRegularExpression::NoMatch, + QRegularExpression::NoMatchOption)) +{ + d->isValid = true; +} + /*! Destroys the match result. */ @@ -2000,6 +2020,26 @@ QRegularExpressionMatchIterator::QRegularExpressionMatchIterator(QRegularExpress { } +/*! + \since 5.1 + + Constructs an empty, valid QRegularExpressionMatchIterator object. The + regular expression is set to a default-constructed one; the match type to + QRegularExpression::NoMatch and the match options to + QRegularExpression::NoMatchOption. + + Invoking the hasNext() member function on the constructed object will + return false, as the iterator is not iterating on a valid sequence of + matches. +*/ +QRegularExpressionMatchIterator::QRegularExpressionMatchIterator() + : d(new QRegularExpressionMatchIteratorPrivate(QRegularExpression(), + QRegularExpression::NoMatch, + QRegularExpression::NoMatchOption, + QRegularExpressionMatch())) +{ +} + /*! Destroys the QRegularExpressionMatchIterator object. */ diff --git a/src/corelib/tools/qregularexpression.h b/src/corelib/tools/qregularexpression.h index 57d03a34e5..a5c273e4a2 100644 --- a/src/corelib/tools/qregularexpression.h +++ b/src/corelib/tools/qregularexpression.h @@ -154,6 +154,7 @@ struct QRegularExpressionMatchPrivate; class Q_CORE_EXPORT QRegularExpressionMatch { public: + QRegularExpressionMatch(); ~QRegularExpressionMatch(); QRegularExpressionMatch(const QRegularExpressionMatch &match); QRegularExpressionMatch &operator=(const QRegularExpressionMatch &match); @@ -211,6 +212,7 @@ struct QRegularExpressionMatchIteratorPrivate; class Q_CORE_EXPORT QRegularExpressionMatchIterator { public: + QRegularExpressionMatchIterator(); ~QRegularExpressionMatchIterator(); QRegularExpressionMatchIterator(const QRegularExpressionMatchIterator &iterator); QRegularExpressionMatchIterator &operator=(const QRegularExpressionMatchIterator &iterator); -- cgit v1.2.3 From 9110d4f1ed65f02d8bbcb81ed0634d5a38c2bf9f Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sun, 14 Oct 2012 17:10:43 +0100 Subject: QString::contains overload that returns the match results This convenience overload allows one to write QRegularExpression re1, re2, ...; QRegularExpressionMatch match; QString subject; if (subject.contains(re1, &match)) { // ... } else if (subject.contains(re2, &match)) { // ... } // .. One can then inspect the results of a successful match in each block (as well as extracting the captured substrings, etc.). Change-Id: I0fb8be8b577656e8db994198f8105c26c4fe67b0 Reviewed-by: Lars Knoll Reviewed-by: Thiago Macieira --- src/corelib/tools/qstring.cpp | 27 +++++++++++++++++++++++++++ src/corelib/tools/qstring.h | 2 ++ 2 files changed, 29 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 10ef6b34dd..a3036a3f24 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -3339,6 +3339,33 @@ bool QString::contains(const QRegularExpression &re) const return match.hasMatch(); } +/*! + \overload contains() + \since 5.1 + + Returns true if the regular expression \a re matches somewhere in this + string; otherwise returns false. + + If the match is successful and \a match is not a null pointer, it also + writes the results of the match into the QRegularExpressionMatch object + pointed by \a match. + + \sa QRegularExpression::match() +*/ + +bool QString::contains(const QRegularExpression &re, QRegularExpressionMatch *match) const +{ + if (!re.isValid()) { + qWarning("QString::contains: invalid QRegularExpresssion object"); + return false; + } + QRegularExpressionMatch m = re.match(*this); + bool hasMatch = m.hasMatch(); + if (hasMatch && match) + *match = m; + return hasMatch; +} + /*! \overload count() \since 5.0 diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index 574285fa1e..b7a08928b3 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -72,6 +72,7 @@ QT_BEGIN_NAMESPACE class QCharRef; class QRegExp; class QRegularExpression; +class QRegularExpressionMatch; class QString; class QStringList; class QTextCodec; @@ -339,6 +340,7 @@ public: int indexOf(const QRegularExpression &re, int from = 0) const; int lastIndexOf(const QRegularExpression &re, int from = -1) const; bool contains(const QRegularExpression &re) const; + bool contains(const QRegularExpression &re, QRegularExpressionMatch *match) const; int count(const QRegularExpression &re) const; #endif -- cgit v1.2.3 From d4adcfb8cc1b22d85641d7e4aa03b67850a4c715 Mon Sep 17 00:00:00 2001 From: Ruslan Nigmatullin Date: Fri, 11 Jan 2013 16:10:53 +0400 Subject: Added QMessageAuthenticationCode QMessageAuthenticationCode is HMAC implementation based on QCryptographicHash abilities. HMAC is often used in OAuth and similar authentication protocols. Change-Id: Ifc73947ad06c36a1b770315b7e89ba5c01c5e79e Reviewed-by: Richard J. Moore Reviewed-by: Thiago Macieira --- src/corelib/tools/qmessageauthenticationcode.cpp | 275 +++++++++++++++++++++++ src/corelib/tools/qmessageauthenticationcode.h | 84 +++++++ src/corelib/tools/tools.pri | 2 + 3 files changed, 361 insertions(+) create mode 100644 src/corelib/tools/qmessageauthenticationcode.cpp create mode 100644 src/corelib/tools/qmessageauthenticationcode.h (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qmessageauthenticationcode.cpp b/src/corelib/tools/qmessageauthenticationcode.cpp new file mode 100644 index 0000000000..3950f15502 --- /dev/null +++ b/src/corelib/tools/qmessageauthenticationcode.cpp @@ -0,0 +1,275 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Ruslan Nigmatullin +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qmessageauthenticationcode.h" +#include "qvarlengtharray.h" + +/* + These #defines replace the typedefs needed by the RFC6234 code. Normally + the typedefs would come from from stdint.h, but since this header is not + available on all platforms (MSVC 2008, for example), we #define them to the + Qt equivalents. +*/ +#define uint64_t QT_PREPEND_NAMESPACE(quint64) +#define uint32_t QT_PREPEND_NAMESPACE(quint32) +#define uint8_t QT_PREPEND_NAMESPACE(quint8) +#define int_least16_t QT_PREPEND_NAMESPACE(qint16) + +// Header from rfc6234 with 1 modification: +// sha1.h - commented out '#include ' on line 74 +#include "../../3rdparty/rfc6234/sha.h" + +#undef uint64_t +#undef uint32_t +#undef uint68_t +#undef int_least16_t + +QT_BEGIN_NAMESPACE + +static int qt_hash_block_size(QCryptographicHash::Algorithm method) +{ + switch (method) { + case QCryptographicHash::Md4: + return 64; + case QCryptographicHash::Md5: + return 64; + case QCryptographicHash::Sha1: + return SHA1_Message_Block_Size; + case QCryptographicHash::Sha224: + return SHA224_Message_Block_Size; + case QCryptographicHash::Sha256: + return SHA256_Message_Block_Size; + case QCryptographicHash::Sha384: + return SHA384_Message_Block_Size; + case QCryptographicHash::Sha512: + return SHA512_Message_Block_Size; + } + return 0; +} + +class QMessageAuthenticationCodePrivate +{ +public: + QMessageAuthenticationCodePrivate(QCryptographicHash::Algorithm m) + : messageHash(m), method(m), messageHashInited(false) + { + } + + QByteArray key; + QByteArray result; + QCryptographicHash messageHash; + QCryptographicHash::Algorithm method; + bool messageHashInited; + + void initMessageHash(); +}; + +void QMessageAuthenticationCodePrivate::initMessageHash() +{ + if (messageHashInited) + return; + messageHashInited = true; + + const int blockSize = qt_hash_block_size(method); + + if (key.size() > blockSize) { + QCryptographicHash hash(method); + hash.addData(key); + key = hash.result(); + hash.reset(); + } + + if (key.size() < blockSize) { + const int size = key.size(); + key.resize(blockSize); + memset(key.data() + size, 0, blockSize - size); + } + + QVarLengthArray iKeyPad(blockSize); + const char * const keyData = key.constData(); + + for (int i = 0; i < blockSize; ++i) + iKeyPad[i] = keyData[i] ^ 0x36; + + messageHash.addData(iKeyPad.data(), iKeyPad.size()); +} + +/*! + \class QMessageAuthenticationCode + \inmodule QtCore + + \brief The QMessageAuthenticationCode class provides a way to generate + hash-based message authentication codes. + + \since 5.1 + + \ingroup tools + \reentrant + + QMessageAuthenticationCode supports all cryptographic hashes which are supported by + QCryptographicHash. + + To generate message authentication code, pass hash algorithm QCryptographicHash::Algorithm + to constructor, then set key and message by setKey() and addData() functions. Result + can be acquired by result() function. + \snippet qmessageauthenticationcode/main.cpp 0 + \dots + \snippet qmessageauthenticationcode/main.cpp 1 + + Alternatively, this effect can be achieved by providing message, + key and method to hash() method. + \snippet qmessageauthenticationcode/main.cpp 2 + + \sa QCryptographicHash +*/ + +/*! + Constructs an object that can be used to create a cryptographic hash from data + using method \a method and key \a key. +*/ +QMessageAuthenticationCode::QMessageAuthenticationCode(QCryptographicHash::Algorithm method, + const QByteArray &key) + : d(new QMessageAuthenticationCodePrivate(method)) +{ + d->key = key; +} + +/*! + Destroys the object. +*/ +QMessageAuthenticationCode::~QMessageAuthenticationCode() +{ + delete d; +} + +/*! + Resets message data. Calling this method doesn't affect the key. +*/ +void QMessageAuthenticationCode::reset() +{ + d->result.clear(); + d->messageHash.reset(); + d->messageHashInited = false; +} + +/*! + Sets secret \a key. Calling this method automatically resets the object state. +*/ +void QMessageAuthenticationCode::setKey(const QByteArray &key) +{ + reset(); + d->key = key; +} + +/*! + Adds the first \a length chars of \a data to the message. +*/ +void QMessageAuthenticationCode::addData(const char *data, int length) +{ + d->initMessageHash(); + d->messageHash.addData(data, length); +} + +/*! + \overload addData() +*/ +void QMessageAuthenticationCode::addData(const QByteArray &data) +{ + d->initMessageHash(); + d->messageHash.addData(data); +} + +/*! + Reads the data from the open QIODevice \a device until it ends + and adds it to message. Returns true if reading was successful. + + \note \a device must be already opened. + */ +bool QMessageAuthenticationCode::addData(QIODevice *device) +{ + d->initMessageHash(); + return d->messageHash.addData(device); +} + +/*! + Returns the final authentication code. + + \sa QByteArray::toHex() +*/ +QByteArray QMessageAuthenticationCode::result() const +{ + if (!d->result.isEmpty()) + return d->result; + + d->initMessageHash(); + + const int blockSize = qt_hash_block_size(d->method); + + QByteArray hashedMessage = d->messageHash.result(); + + QVarLengthArray oKeyPad(blockSize); + const char * const keyData = d->key.constData(); + + for (int i = 0; i < blockSize; ++i) + oKeyPad[i] = keyData[i] ^ 0x5c; + + QCryptographicHash hash(d->method); + hash.addData(oKeyPad.data(), oKeyPad.size()); + hash.addData(hashedMessage); + + d->result = hash.result(); + return d->result; +} + +/*! + Returns the authentication code for the message \a message using + the key \a key and the method \a method. +*/ +QByteArray QMessageAuthenticationCode::hash(const QByteArray &message, const QByteArray &key, + QCryptographicHash::Algorithm method) +{ + QMessageAuthenticationCode mac(method); + mac.setKey(key); + mac.addData(message); + return mac.result(); +} + +QT_END_NAMESPACE diff --git a/src/corelib/tools/qmessageauthenticationcode.h b/src/corelib/tools/qmessageauthenticationcode.h new file mode 100644 index 0000000000..e84a1c84b4 --- /dev/null +++ b/src/corelib/tools/qmessageauthenticationcode.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Ruslan Nigmatullin +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMESSAGEAUTHENTICATIONCODE_H +#define QMESSAGEAUTHENTICATIONCODE_H + +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + + +class QMessageAuthenticationCodePrivate; +class QIODevice; + +class Q_CORE_EXPORT QMessageAuthenticationCode +{ +public: + explicit QMessageAuthenticationCode(QCryptographicHash::Algorithm method, + const QByteArray &key = QByteArray()); + ~QMessageAuthenticationCode(); + + void reset(); + + void setKey(const QByteArray &key); + + void addData(const char *data, int length); + void addData(const QByteArray &data); + bool addData(QIODevice *device); + + QByteArray result() const; + + static QByteArray hash(const QByteArray &message, const QByteArray &key, + QCryptographicHash::Algorithm method); + +private: + Q_DISABLE_COPY(QMessageAuthenticationCode) + QMessageAuthenticationCodePrivate *d; +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri index 564aff9ab9..bed71c6d25 100644 --- a/src/corelib/tools/tools.pri +++ b/src/corelib/tools/tools.pri @@ -29,6 +29,7 @@ HEADERS += \ tools/qlocale_data_p.h \ tools/qmap.h \ tools/qmargins.h \ + tools/qmessageauthenticationcode.h \ tools/qcontiguouscache.h \ tools/qpodlist_p.h \ tools/qpair.h \ @@ -82,6 +83,7 @@ SOURCES += \ tools/qpoint.cpp \ tools/qmap.cpp \ tools/qmargins.cpp \ + tools/qmessageauthenticationcode.cpp \ tools/qcontiguouscache.cpp \ tools/qrect.cpp \ tools/qregexp.cpp \ -- cgit v1.2.3 From dbfa6518890f4e6c4af6da92df45803ecfe0309a Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 21 Dec 2012 10:35:20 -0800 Subject: Doc: Update the info on the QSharedPointer internals Some of it still referred to classes that were cleaned up in Qt 5.0 Change-Id: Ief4ed4b4fce074884f755b0d18a526ac40ad1b0b Reviewed-by: Olivier Goffart --- src/corelib/tools/qsharedpointer.cpp | 55 ++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 31 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qsharedpointer.cpp b/src/corelib/tools/qsharedpointer.cpp index 5455904021..76f1cc69c4 100644 --- a/src/corelib/tools/qsharedpointer.cpp +++ b/src/corelib/tools/qsharedpointer.cpp @@ -136,23 +136,11 @@ \omit \secton1 QSharedPointer internals - QSharedPointer is in reality implemented by two ancestor classes: - QtSharedPointer::Basic and QtSharedPointer::ExternalRefCount. The reason - for having that split is now mostly legacy: in the beginning, - QSharedPointer was meant to support both internal reference counting and - external reference counting. - - QtSharedPointer::Basic implements the basic functionality that is shared - between internal- and external-reference counting. That is, it's mostly - the accessor functions into QSharedPointer. Those are all inherited by - QSharedPointer, which adds another level of shared functionality (the - constructors and assignment operators). The Basic class has one member - variable, which is the actual pointer being tracked. - - QtSharedPointer::ExternalRefCount implements the actual reference - counting and introduces the d-pointer for QSharedPointer. That d-pointer - itself is shared with other QSharedPointer objects as well as - QWeakPointer. + QSharedPointer has two "private" members: the pointer itself being tracked + and a d-pointer. Those members are private to the class, but QSharedPointer + is friends with QWeakPointer and other QSharedPointer with different + template arguments. (On some compilers, template friends are not supported, + so the members are technically public) The reason for keeping the pointer value itself outside the d-pointer is because of multiple inheritance needs. If you have two QSharedPointer @@ -178,17 +166,19 @@ QSharedObject instances that are attached to this Data. When the strong reference count decreases to zero, the object is deleted - (see below for information on custom deleters). The strong reference - count can also exceptionally be -1, indicating that there are no - QSharedPointers attached to an object, which is tracked too. The only - case where this is possible is that of QWeakPointers tracking a QObject. + (see below for information on custom deleters). The strong reference count + can also exceptionally be -1, indicating that there are no QSharedPointers + attached to an object, which is tracked too. The only case where this is + possible is that of QWeakPointers and QPointers tracking a QObject. Note + that QWeakPointers tracking a QObject is a deprecated feature as of Qt 5.0, + kept only for compatibility with Qt 4.x. The weak reference count controls the lifetime of the d-pointer itself. It can be thought of as an internal/intrusive reference count for ExternalRefCountData itself. This count is equal to the number of - QSharedPointers and QWeakPointers that are tracking this object. (In case - the object tracked derives from QObject, this number is increased by 1, - since QObjectPrivate tracks it too). + QSharedPointers and QWeakPointers that are tracking this object. In case + the object is a QObject being tracked by QPointer, this number is increased + by 1, since QObjectPrivate tracks it too. The third member is a pointer to the function that is used to delete the pointer being tracked. That happens when the destroy() function is called. @@ -199,18 +189,21 @@ \section3 QtSharedPointer::ExternalRefCountWithCustomDeleter - This class derives from ExternalRefCountData and is a - template class. As template parameters, it has the type of the pointer - being tracked (\tt T) and a \tt Deleter, which is anything. It adds two - fields to its parent class, matching those template parameters: a member - of type \tt Deleter and a member of type \tt T*. + This class derives from ExternalRefCountData and is a template class. As + template parameters, it has the type of the pointer being tracked (\tt T) + and a \tt Deleter, which is anything. It adds two fields to its parent + class, matching those template parameters: a member of type \tt Deleter and + a member of type \tt T*. Those members are actually inside a template + struct of type CustomDeleter, which is partially-specialized for normal + deletion. See below for more details on that. The purpose of this class is to store the pointer to be deleted and the deleter code along with the d-pointer. This allows the last strong reference to call any arbitrary function that disposes of the object. For example, this allows calling QObject::deleteLater() on a given object. - The pointer to the object is kept here to avoid the extra cost of keeping - the deleter in the generic case. + The pointer to the object is kept here because it needs to match the actual + deleter function's parameters, regardless of what template argument the + last QSharedPointer instance had. This class is never instantiated directly: the constructors and destructor are private and, in C++11, deleted. Only the create() function -- cgit v1.2.3 From 12d90d62023419dca6fcd55f4045058fac6fe50b Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sun, 20 Jan 2013 19:03:39 +0000 Subject: Add a note for merging QString::contains(QRE, QREM) overloads in Qt 6 Change-Id: I19609b192618287dbac0de2e893e3e9b40d6a969 Reviewed-by: Lars Knoll --- src/corelib/tools/qstring.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index b7a08928b3..8d449560f2 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -340,7 +340,7 @@ public: int indexOf(const QRegularExpression &re, int from = 0) const; int lastIndexOf(const QRegularExpression &re, int from = -1) const; bool contains(const QRegularExpression &re) const; - bool contains(const QRegularExpression &re, QRegularExpressionMatch *match) const; + bool contains(const QRegularExpression &re, QRegularExpressionMatch *match) const; // ### Qt 6: merge overloads int count(const QRegularExpression &re) const; #endif -- cgit v1.2.3 From f8b681deed6298fa7c2ed7ada4752116432289cf Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 19 Jan 2013 08:26:04 -0800 Subject: Don't clear the pointer in QScopedPointer's destructor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It helps in valgrinding applications. It's the difference between: ==17609== Address 0x38 is not stack'd, malloc'd or (recently) free'd and ==19789== Address 0x598f478 is 56 bytes inside a block of size 112 free'd ==19789== at 0x4A0736C: operator delete(void*) (vg_replace_malloc.c:480) ==19789== by 0x53A77CD: QObjectPrivate::~QObjectPrivate() (qobject.cpp:239) ==19789== by 0x53B4EB5: QScopedPointerDeleter::cleanup(QObjectData*) (qscopedpointer.h:63) ==19789== by 0x53B3980: QScopedPointer >::~QScopedPointer() (qscopedpointer.h:99) ==19789== by 0x53A8EEC: QObject::~QObject() (qobject.cpp:750) Change-Id: If42107c94401a96c05caa511442d6bd010fd4e29 Reviewed-by: Olivier Goffart Reviewed-by: Jędrzej Nowacki --- src/corelib/tools/qscopedpointer.h | 1 - 1 file changed, 1 deletion(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qscopedpointer.h b/src/corelib/tools/qscopedpointer.h index fbe2aa87c1..adbf03b082 100644 --- a/src/corelib/tools/qscopedpointer.h +++ b/src/corelib/tools/qscopedpointer.h @@ -97,7 +97,6 @@ public: { T *oldD = this->d; Cleanup::cleanup(oldD); - this->d = 0; } inline T &operator*() const -- cgit v1.2.3 From 1309d9a9d68af902821d0ba5f76aa6e994aa6963 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Thu, 3 Jan 2013 16:32:13 +0200 Subject: Use stub function gettimeofday for VxWorks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Vxworks does not have gettimeofday function, use function implementation from qfunctions_vxworks.h/cpp instead. Change-Id: Iad2a71c8484ba00dd9406706b1c136297260de4b Reviewed-by: Samuel Rødal --- src/corelib/tools/qelapsedtimer_unix.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qelapsedtimer_unix.cpp b/src/corelib/tools/qelapsedtimer_unix.cpp index b8f2180a5b..d88af616e5 100644 --- a/src/corelib/tools/qelapsedtimer_unix.cpp +++ b/src/corelib/tools/qelapsedtimer_unix.cpp @@ -43,8 +43,12 @@ #define _POSIX_C_SOURCE 200809L #include "qelapsedtimer.h" +#ifdef Q_OS_VXWORKS +#include "qfunctions_vxworks.h" +#else #include #include +#endif #include #include -- cgit v1.2.3 From 45be71bf7d7c855e74b84d2fabb4e626afc57a22 Mon Sep 17 00:00:00 2001 From: Roman Pasechnik Date: Thu, 10 Jan 2013 14:45:18 +0200 Subject: Added initializer list constructors for Qt associative containers. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Affected: QSet, QMap, QMultiMap, QHash, QMultiHash. Task-number: QTBUG-25679 Change-Id: I01f3ecfbca805f4c053a75232188bd2a77fdb1f2 Reviewed-by: Thiago Macieira Reviewed-by: Jędrzej Nowacki --- src/corelib/tools/qhash.cpp | 20 ++++++++++++++++++++ src/corelib/tools/qhash.h | 21 +++++++++++++++++++++ src/corelib/tools/qmap.cpp | 20 ++++++++++++++++++++ src/corelib/tools/qmap.h | 19 +++++++++++++++++++ src/corelib/tools/qset.h | 11 +++++++++++ src/corelib/tools/qset.qdoc | 10 ++++++++++ 6 files changed, 101 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp index 0103a208f3..b8cd076cb6 100644 --- a/src/corelib/tools/qhash.cpp +++ b/src/corelib/tools/qhash.cpp @@ -924,6 +924,16 @@ void QHashData::checkSanity() \sa clear() */ +/*! \fn QHash::QHash(std::initializer_list > list) + \since 5.1 + + Constructs a hash with a copy of each of the elements in the + initializer list \a list. + + This function is only available if the program is being + compiled in C++11 mode. +*/ + /*! \fn QHash::QHash(const QHash &other) Constructs a copy of \a other. @@ -1981,6 +1991,16 @@ void QHashData::checkSanity() Constructs an empty hash. */ +/*! \fn QMultiHash::QMultiHash(std::initializer_list > list) + \since 5.1 + + Constructs a multi hash with a copy of each of the elements in the + initializer list \a list. + + This function is only available if the program is being + compiled in C++11 mode. +*/ + /*! \fn QMultiHash::QMultiHash(const QHash &other) Constructs a copy of \a other (which can be a QHash or a diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h index 98965b9121..69a8afe195 100644 --- a/src/corelib/tools/qhash.h +++ b/src/corelib/tools/qhash.h @@ -48,6 +48,10 @@ #include #include +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include +#endif + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -285,6 +289,15 @@ class QHash public: inline QHash() : d(const_cast(&QHashData::shared_null)) { } +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QHash(std::initializer_list > list) + : d(const_cast(&QHashData::shared_null)) + { + reserve(list.size()); + for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } +#endif inline QHash(const QHash &other) : d(other.d) { d->ref.ref(); if (!d->sharable) detach(); } inline ~QHash() { if (!d->ref.deref()) freeData(d); } @@ -921,6 +934,14 @@ class QMultiHash : public QHash { public: QMultiHash() {} +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QMultiHash(std::initializer_list > list) + { + this->reserve(list.size()); + for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } +#endif QMultiHash(const QHash &other) : QHash(other) {} inline void swap(QMultiHash &other) { QHash::swap(other); } // prevent QMultiHash<->QHash swaps diff --git a/src/corelib/tools/qmap.cpp b/src/corelib/tools/qmap.cpp index 75104e4825..a4c28b5bd4 100644 --- a/src/corelib/tools/qmap.cpp +++ b/src/corelib/tools/qmap.cpp @@ -538,6 +538,16 @@ void QMapDataBase::freeData(QMapDataBase *d) \sa toStdMap() */ +/*! \fn QMap::QMap(std::initializer_list > list) + \since 5.1 + + Constructs a map with a copy of each of the elements in the + initializer list \a list. + + This function is only available if the program is being + compiled in C++11 mode. +*/ + /*! \fn std::map QMap::toStdMap() const Returns an STL map equivalent to this QMap. @@ -1576,6 +1586,16 @@ void QMapDataBase::freeData(QMapDataBase *d) Constructs an empty map. */ +/*! \fn QMultiMap::QMultiMap(std::initializer_list > list) + \since 5.1 + + Constructs a multi map with a copy of each of the elements in the + initializer list \a list. + + This function is only available if the program is being + compiled in C++11 mode. +*/ + /*! \fn QMultiMap::QMultiMap(const QMap &other) Constructs a copy of \a other (which can be a QMap or a diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h index b0ec6fb3c6..93134a43dd 100644 --- a/src/corelib/tools/qmap.h +++ b/src/corelib/tools/qmap.h @@ -54,6 +54,10 @@ #include #include +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include +#endif + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -327,6 +331,14 @@ class QMap public: inline QMap() : d(static_cast *>(const_cast(&QMapDataBase::shared_null))) { } +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QMap(std::initializer_list > list) + : d(static_cast *>(const_cast(&QMapDataBase::shared_null))) + { + for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } +#endif QMap(const QMap &other); inline ~QMap() { if (!d->ref.deref()) d->destroy(); } @@ -960,6 +972,13 @@ class QMultiMap : public QMap { public: QMultiMap() {} +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QMultiMap(std::initializer_list > list) + { + for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } +#endif QMultiMap(const QMap &other) : QMap(other) {} inline void swap(QMultiMap &other) { QMap::swap(other); } diff --git a/src/corelib/tools/qset.h b/src/corelib/tools/qset.h index 6fdc8e6281..ee91336c51 100644 --- a/src/corelib/tools/qset.h +++ b/src/corelib/tools/qset.h @@ -43,6 +43,9 @@ #define QSET_H #include +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include +#endif QT_BEGIN_HEADER @@ -56,6 +59,14 @@ class QSet public: inline QSet() {} +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QSet(std::initializer_list list) + { + reserve(list.size()); + for (typename std::initializer_list::const_iterator it = list.begin(); it != list.end(); ++it) + insert(*it); + } +#endif inline QSet(const QSet &other) : q_hash(other.q_hash) {} inline QSet &operator=(const QSet &other) diff --git a/src/corelib/tools/qset.qdoc b/src/corelib/tools/qset.qdoc index ef7a4c4f52..cd90b4949b 100644 --- a/src/corelib/tools/qset.qdoc +++ b/src/corelib/tools/qset.qdoc @@ -103,6 +103,16 @@ \sa clear() */ +/*! \fn QSet::QSet(std::initializer_list list) + \since 5.1 + + Constructs a set with a copy of each of the elements in the + initializer list \a list. + + This function is only available if the program is being + compiled in C++11 mode. +*/ + /*! \fn QSet::QSet(const QSet &other) -- cgit v1.2.3 From e335fb7254ad6c2ce08eda0d092ea524a302c2e0 Mon Sep 17 00:00:00 2001 From: Laszlo Papp Date: Thu, 2 Aug 2012 07:18:35 +0100 Subject: Add static dotProduct methods to the QPoint(F) classes Change-Id: I66ac9433b74341a83569a60038ea2f7a025e81b1 Reviewed-by: Gunnar Sletta --- src/corelib/tools/qpoint.cpp | 18 ++++++++++++++++++ src/corelib/tools/qpoint.h | 12 ++++++++++++ 2 files changed, 30 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qpoint.cpp b/src/corelib/tools/qpoint.cpp index b3dd918a35..784d96bf1c 100644 --- a/src/corelib/tools/qpoint.cpp +++ b/src/corelib/tools/qpoint.cpp @@ -222,6 +222,15 @@ QT_BEGIN_NAMESPACE \sa operator/=() */ +/*! + \fn static int QPoint::dotProduct(const QPoint &p1, const QPoint &p2) + \since 5.1 + + \snippet code/src_corelib_tools_qpoint.cpp 16 + + Returns the dot product of \a p1 and \a p2. +*/ + /*! \fn bool operator==(const QPoint &p1, const QPoint &p2) \relates QPoint @@ -711,6 +720,15 @@ QDebug operator<<(QDebug d, const QPointF &p) \sa QPointF() */ +/*! + \fn static qreal QPointF::dotProduct(const QPointF &p1, const QPointF &p2) + \since 5.1 + + \snippet code/src_corelib_tools_qpoint.cpp 17 + + Returns the dot product of \a p1 and \a p2. +*/ + /*! \fn bool operator==(const QPointF &p1, const QPointF &p2) \relates QPointF diff --git a/src/corelib/tools/qpoint.h b/src/corelib/tools/qpoint.h index b6446e8c9f..cb7a5ecd23 100644 --- a/src/corelib/tools/qpoint.h +++ b/src/corelib/tools/qpoint.h @@ -76,6 +76,8 @@ public: inline QPoint &operator/=(qreal divisor); + Q_DECL_CONSTEXPR static inline int dotProduct(const QPoint &p1, const QPoint &p2); + friend Q_DECL_CONSTEXPR inline bool operator==(const QPoint &, const QPoint &); friend Q_DECL_CONSTEXPR inline bool operator!=(const QPoint &, const QPoint &); friend Q_DECL_CONSTEXPR inline const QPoint operator+(const QPoint &, const QPoint &); @@ -153,6 +155,9 @@ inline QPoint &QPoint::operator*=(double factor) inline QPoint &QPoint::operator*=(int factor) { xp = xp*factor; yp = yp*factor; return *this; } +Q_DECL_CONSTEXPR inline int QPoint::dotProduct(const QPoint &p1, const QPoint &p2) +{ return p1.xp * p2.xp + p1.yp * p2.yp; } + Q_DECL_CONSTEXPR inline bool operator==(const QPoint &p1, const QPoint &p2) { return p1.xp == p2.xp && p1.yp == p2.yp; } @@ -233,6 +238,8 @@ public: inline QPointF &operator*=(qreal c); inline QPointF &operator/=(qreal c); + Q_DECL_CONSTEXPR static inline qreal dotProduct(const QPointF &p1, const QPointF &p2); + friend Q_DECL_CONSTEXPR inline bool operator==(const QPointF &, const QPointF &); friend Q_DECL_CONSTEXPR inline bool operator!=(const QPointF &, const QPointF &); friend Q_DECL_CONSTEXPR inline const QPointF operator+(const QPointF &, const QPointF &); @@ -330,6 +337,11 @@ inline QPointF &QPointF::operator*=(qreal c) xp*=c; yp*=c; return *this; } +Q_DECL_CONSTEXPR inline qreal QPointF::dotProduct(const QPointF &p1, const QPointF &p2) +{ + return p1.xp * p2.xp + p1.yp * p2.yp; +} + Q_DECL_CONSTEXPR inline bool operator==(const QPointF &p1, const QPointF &p2) { return qFuzzyIsNull(p1.xp - p2.xp) && qFuzzyIsNull(p1.yp - p2.yp); -- cgit v1.2.3 From bf5f2a9e3e3bf70c373b65bf95a332f4e1c514f9 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 10 Aug 2012 16:14:48 +0200 Subject: Switch to struct timespec everywhere instead of timeval This avoids an extra division by 1000 when getting the current time. This can't overflow, under normal circumstances, even on 32-bit: when adding two values less than 1 billion, the result is less than 2 billion, which is less than 2^31. Change-Id: I6f8e1aadfe2fcf6ac8da584eab4c1e61aee51cbb Reviewed-by: David Faure (KDE) Reviewed-by: Thiago Macieira --- src/corelib/tools/qelapsedtimer_mac.cpp | 6 +++--- src/corelib/tools/qelapsedtimer_unix.cpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qelapsedtimer_mac.cpp b/src/corelib/tools/qelapsedtimer_mac.cpp index 611098779c..19056d1bd9 100644 --- a/src/corelib/tools/qelapsedtimer_mac.cpp +++ b/src/corelib/tools/qelapsedtimer_mac.cpp @@ -76,14 +76,14 @@ static qint64 absoluteToMSecs(qint64 cpuTime) return absoluteToNSecs(cpuTime) / 1000000; } -timeval qt_gettime() Q_DECL_NOTHROW +timespec qt_gettime() Q_DECL_NOTHROW { - timeval tv; + timespec tv; uint64_t cpu_time = mach_absolute_time(); uint64_t nsecs = absoluteToNSecs(cpu_time); tv.tv_sec = nsecs / 1000000000ull; - tv.tv_usec = (nsecs / 1000) - (tv.tv_sec * 1000000); + tv.tv_nsec = nsecs - (tv.tv_sec * 1000000000ull); return tv; } diff --git a/src/corelib/tools/qelapsedtimer_unix.cpp b/src/corelib/tools/qelapsedtimer_unix.cpp index b0dbb1f047..f81a723aa5 100644 --- a/src/corelib/tools/qelapsedtimer_unix.cpp +++ b/src/corelib/tools/qelapsedtimer_unix.cpp @@ -172,14 +172,14 @@ static inline void do_gettime(qint64 *sec, qint64 *frac) } // used in qcore_unix.cpp and qeventdispatcher_unix.cpp -timeval qt_gettime() Q_DECL_NOTHROW +struct timespec qt_gettime() Q_DECL_NOTHROW { qint64 sec, frac; do_gettime(&sec, &frac); - timeval tv; + timespec tv; tv.tv_sec = sec; - tv.tv_usec = frac / 1000; + tv.tv_nsec = frac; return tv; } -- cgit v1.2.3 From 70a9caf4de9ddac52783a276a6cdd196eb5fef44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20K=C3=BCmmel?= Date: Wed, 10 Oct 2012 16:35:44 +0200 Subject: QVarLengthArray: add squeeze function Add function to move back data to the stack. Change-Id: Ic78a368459bce68629e29602e4eeae2e1afe398b Reviewed-by: Thiago Macieira --- src/corelib/tools/qvarlengtharray.h | 5 +++++ src/corelib/tools/qvarlengtharray.qdoc | 20 +++++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h index 5e57de5767..095e6e929e 100644 --- a/src/corelib/tools/qvarlengtharray.h +++ b/src/corelib/tools/qvarlengtharray.h @@ -103,6 +103,7 @@ public: inline bool isEmpty() const { return (s == 0); } inline void resize(int size); inline void clear() { resize(0); } + inline void squeeze(); inline int capacity() const { return a; } inline void reserve(int size); @@ -243,6 +244,10 @@ Q_OUTOFLINE_TEMPLATE void QVarLengthArray::append(const T *abuf, in } } +template +Q_INLINE_TEMPLATE void QVarLengthArray::squeeze() +{ realloc(s, s); } + template Q_OUTOFLINE_TEMPLATE void QVarLengthArray::realloc(int asize, int aalloc) { diff --git a/src/corelib/tools/qvarlengtharray.qdoc b/src/corelib/tools/qvarlengtharray.qdoc index 5e78946892..93aa5e993e 100644 --- a/src/corelib/tools/qvarlengtharray.qdoc +++ b/src/corelib/tools/qvarlengtharray.qdoc @@ -210,7 +210,7 @@ initialized. For other types, the elements are initialized with a \l{default-constructed value}. - \sa size() + \sa size(), squeeze() */ /*! \fn int QVarLengthArray::capacity() const @@ -223,7 +223,7 @@ need to call this function. If you want to know how many items are in the array, call size(). - \sa reserve() + \sa reserve(), squeeze() */ /*! \fn void QVarLengthArray::reserve(int size) @@ -240,7 +240,21 @@ rarely ever need to call this function. If you want to change the size of the array, call resize(). - \sa capacity() + \sa capacity(), squeeze() +*/ + +/*! \fn void QVarLengthArray::squeeze() + \since 5.1 + + Releases any memory not required to store the items. + If the container can fit its storage on the stack allocation, + it will free the heap allocation and copy the elements back to the stack. + + The sole purpose of this function is to provide a means of fine + tuning QVarLengthArray's memory usage. In general, you will rarely ever + need to call this function. + + \sa reserve(), capacity(), resize() */ /*! \fn T &QVarLengthArray::operator[](int i) -- cgit v1.2.3 From 07e3bcdc106ac42703ae0fb88b6cac2d2bfdd072 Mon Sep 17 00:00:00 2001 From: Sergio Ahumada Date: Sat, 26 Jan 2013 21:42:12 +0100 Subject: Remove QT_{BEGIN,END}_HEADER macro usage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The macro was made empty in ba3dc5f3b56d1fab6fe37fe7ae08096d7dc68bcb and is no longer necessary or used. Discussed-on: http://lists.qt-project.org/pipermail/development/2013-January/009284.html Change-Id: Id2bb2e2cabde059305d4af5f12593344ba30f001 Reviewed-by: Laszlo Papp Reviewed-by: Jędrzej Nowacki Reviewed-by: hjk --- src/corelib/tools/qalgorithms.h | 4 ---- src/corelib/tools/qarraydata.h | 4 ---- src/corelib/tools/qarraydataops.h | 4 ---- src/corelib/tools/qarraydatapointer.h | 4 ---- src/corelib/tools/qbitarray.h | 4 ---- src/corelib/tools/qbytearray.h | 4 ---- src/corelib/tools/qbytearraymatcher.h | 4 ---- src/corelib/tools/qcache.h | 4 ---- src/corelib/tools/qchar.h | 4 ---- src/corelib/tools/qcollator_p.h | 4 ---- src/corelib/tools/qcontainerfwd.h | 4 ---- src/corelib/tools/qcontiguouscache.h | 4 ---- src/corelib/tools/qcryptographichash.h | 4 ---- src/corelib/tools/qdatetime.h | 4 ---- src/corelib/tools/qeasingcurve.h | 4 ---- src/corelib/tools/qelapsedtimer.h | 4 ---- src/corelib/tools/qfreelist_p.h | 4 ---- src/corelib/tools/qhash.h | 4 ---- src/corelib/tools/qiterator.h | 4 ---- src/corelib/tools/qline.h | 4 ---- src/corelib/tools/qlinkedlist.h | 4 ---- src/corelib/tools/qlist.h | 4 ---- src/corelib/tools/qlocale.h | 4 ---- src/corelib/tools/qmap.h | 4 ---- src/corelib/tools/qmargins.h | 4 ---- src/corelib/tools/qmessageauthenticationcode.h | 4 ---- src/corelib/tools/qpair.h | 4 ---- src/corelib/tools/qpodlist_p.h | 4 ---- src/corelib/tools/qpoint.h | 4 ---- src/corelib/tools/qqueue.h | 4 ---- src/corelib/tools/qrect.h | 4 ---- src/corelib/tools/qrefcount.h | 4 ---- src/corelib/tools/qregexp.h | 4 ---- src/corelib/tools/qregularexpression.h | 4 ---- src/corelib/tools/qscopedpointer.h | 2 -- src/corelib/tools/qscopedpointer_p.h | 2 -- src/corelib/tools/qscopedvaluerollback.h | 2 -- src/corelib/tools/qset.h | 4 ---- src/corelib/tools/qshareddata.h | 4 ---- src/corelib/tools/qsharedpointer.h | 4 ---- src/corelib/tools/qsharedpointer_impl.h | 6 ------ src/corelib/tools/qsimd_p.h | 4 ---- src/corelib/tools/qsize.h | 4 ---- src/corelib/tools/qstack.h | 4 ---- src/corelib/tools/qstring.h | 4 ---- src/corelib/tools/qstringbuilder.h | 4 ---- src/corelib/tools/qstringlist.h | 4 ---- src/corelib/tools/qstringmatcher.h | 4 ---- src/corelib/tools/qtextboundaryfinder.h | 4 ---- src/corelib/tools/qtimeline.h | 4 ---- src/corelib/tools/qvarlengtharray.h | 4 ---- src/corelib/tools/qvector.h | 4 ---- 52 files changed, 204 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qalgorithms.h b/src/corelib/tools/qalgorithms.h index 936ebd1cbb..e3b76886f1 100644 --- a/src/corelib/tools/qalgorithms.h +++ b/src/corelib/tools/qalgorithms.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -520,6 +518,4 @@ Q_OUTOFLINE_TEMPLATE RandomAccessIterator qBinaryFindHelper(RandomAccessIterator QT_END_NAMESPACE -QT_END_HEADER - #endif // QALGORITHMS_H diff --git a/src/corelib/tools/qarraydata.h b/src/corelib/tools/qarraydata.h index aab01c5f41..27f2606954 100644 --- a/src/corelib/tools/qarraydata.h +++ b/src/corelib/tools/qarraydata.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE struct Q_CORE_EXPORT QArrayData @@ -361,6 +359,4 @@ namespace QtPrivate { QT_END_NAMESPACE -QT_END_HEADER - #endif // include guard diff --git a/src/corelib/tools/qarraydataops.h b/src/corelib/tools/qarraydataops.h index 6c95e9364d..3cd8c51c07 100644 --- a/src/corelib/tools/qarraydataops.h +++ b/src/corelib/tools/qarraydataops.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE namespace QtPrivate { @@ -423,6 +421,4 @@ struct QArrayDataOps QT_END_NAMESPACE -QT_END_HEADER - #endif // include guard diff --git a/src/corelib/tools/qarraydatapointer.h b/src/corelib/tools/qarraydatapointer.h index 52d054b035..533f7a306f 100644 --- a/src/corelib/tools/qarraydatapointer.h +++ b/src/corelib/tools/qarraydatapointer.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE template @@ -219,6 +217,4 @@ namespace std } } -QT_END_HEADER - #endif // include guard diff --git a/src/corelib/tools/qbitarray.h b/src/corelib/tools/qbitarray.h index e622d6515c..1103712627 100644 --- a/src/corelib/tools/qbitarray.h +++ b/src/corelib/tools/qbitarray.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -176,6 +174,4 @@ Q_DECLARE_SHARED(QBitArray) QT_END_NAMESPACE -QT_END_HEADER - #endif // QBITARRAY_H diff --git a/src/corelib/tools/qbytearray.h b/src/corelib/tools/qbytearray.h index 8d03951073..f3cc301a49 100644 --- a/src/corelib/tools/qbytearray.h +++ b/src/corelib/tools/qbytearray.h @@ -66,8 +66,6 @@ #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -610,8 +608,6 @@ Q_DECLARE_SHARED(QByteArray) QT_END_NAMESPACE -QT_END_HEADER - #ifdef QT_USE_QSTRINGBUILDER #include #endif diff --git a/src/corelib/tools/qbytearraymatcher.h b/src/corelib/tools/qbytearraymatcher.h index 370116e643..da6a337a69 100644 --- a/src/corelib/tools/qbytearraymatcher.h +++ b/src/corelib/tools/qbytearraymatcher.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -97,6 +95,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QBYTEARRAYMATCHER_H diff --git a/src/corelib/tools/qcache.h b/src/corelib/tools/qcache.h index 2d2b9f3d45..5890a94dc2 100644 --- a/src/corelib/tools/qcache.h +++ b/src/corelib/tools/qcache.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -200,6 +198,4 @@ void QCache::trim(int m) QT_END_NAMESPACE -QT_END_HEADER - #endif // QCACHE_H diff --git a/src/corelib/tools/qchar.h b/src/corelib/tools/qchar.h index 3679a597ff..8afa05bb00 100644 --- a/src/corelib/tools/qchar.h +++ b/src/corelib/tools/qchar.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -526,6 +524,4 @@ Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QChar &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QCHAR_H diff --git a/src/corelib/tools/qcollator_p.h b/src/corelib/tools/qcollator_p.h index 4420c6592e..51de205565 100644 --- a/src/corelib/tools/qcollator_p.h +++ b/src/corelib/tools/qcollator_p.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QCollatorPrivate; @@ -119,6 +117,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QCOLLATOR_P_H diff --git a/src/corelib/tools/qcontainerfwd.h b/src/corelib/tools/qcontainerfwd.h index c4866253ee..6b79e40635 100644 --- a/src/corelib/tools/qcontainerfwd.h +++ b/src/corelib/tools/qcontainerfwd.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -65,6 +63,4 @@ template class QVector; QT_END_NAMESPACE -QT_END_HEADER - #endif // QCONTAINERFWD_H diff --git a/src/corelib/tools/qcontiguouscache.h b/src/corelib/tools/qcontiguouscache.h index 1075284491..d601ddb819 100644 --- a/src/corelib/tools/qcontiguouscache.h +++ b/src/corelib/tools/qcontiguouscache.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #undef QT_QCONTIGUOUSCACHE_DEBUG @@ -464,6 +462,4 @@ inline T QContiguousCache::takeLast() QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/tools/qcryptographichash.h b/src/corelib/tools/qcryptographichash.h index 1a7e3751e8..847ba9c3f7 100644 --- a/src/corelib/tools/qcryptographichash.h +++ b/src/corelib/tools/qcryptographichash.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -84,6 +82,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/tools/qdatetime.h b/src/corelib/tools/qdatetime.h index ae545eda4f..d1cc10c877 100644 --- a/src/corelib/tools/qdatetime.h +++ b/src/corelib/tools/qdatetime.h @@ -48,8 +48,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -296,6 +294,4 @@ Q_CORE_EXPORT uint qHash(const QTime &key, uint seed = 0) Q_DECL_NOTHROW; QT_END_NAMESPACE -QT_END_HEADER - #endif // QDATETIME_H diff --git a/src/corelib/tools/qeasingcurve.h b/src/corelib/tools/qeasingcurve.h index cb8519d204..2e65754989 100644 --- a/src/corelib/tools/qeasingcurve.h +++ b/src/corelib/tools/qeasingcurve.h @@ -50,8 +50,6 @@ # include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -142,6 +140,4 @@ Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QEasingCurve &); QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/tools/qelapsedtimer.h b/src/corelib/tools/qelapsedtimer.h index 3fb9c6bffe..b06afe4ab4 100644 --- a/src/corelib/tools/qelapsedtimer.h +++ b/src/corelib/tools/qelapsedtimer.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -89,6 +87,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QELAPSEDTIMER_H diff --git a/src/corelib/tools/qfreelist_p.h b/src/corelib/tools/qfreelist_p.h index 3de0d0b204..5e90a03d7f 100644 --- a/src/corelib/tools/qfreelist_p.h +++ b/src/corelib/tools/qfreelist_p.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -288,6 +286,4 @@ inline void QFreeList::release(int id) QT_END_NAMESPACE -QT_END_HEADER - #endif // QFREELIST_P_H diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h index 69a8afe195..5d9238f453 100644 --- a/src/corelib/tools/qhash.h +++ b/src/corelib/tools/qhash.h @@ -52,8 +52,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QBitArray; @@ -1055,6 +1053,4 @@ Q_DECLARE_MUTABLE_ASSOCIATIVE_ITERATOR(Hash) QT_END_NAMESPACE -QT_END_HEADER - #endif // QHASH_H diff --git a/src/corelib/tools/qiterator.h b/src/corelib/tools/qiterator.h index ad2d8bae41..3b86edd750 100644 --- a/src/corelib/tools/qiterator.h +++ b/src/corelib/tools/qiterator.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #define Q_DECLARE_SEQUENTIAL_ITERATOR(C) \ @@ -190,6 +188,4 @@ public: \ QT_END_NAMESPACE -QT_END_HEADER - #endif // QITERATOR_H diff --git a/src/corelib/tools/qline.h b/src/corelib/tools/qline.h index cf87067b61..69e8a8245a 100644 --- a/src/corelib/tools/qline.h +++ b/src/corelib/tools/qline.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -421,6 +419,4 @@ Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QLineF &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QLINE_H diff --git a/src/corelib/tools/qlinkedlist.h b/src/corelib/tools/qlinkedlist.h index 383d6eb990..b9ca1b964a 100644 --- a/src/corelib/tools/qlinkedlist.h +++ b/src/corelib/tools/qlinkedlist.h @@ -48,8 +48,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -501,6 +499,4 @@ Q_DECLARE_MUTABLE_SEQUENTIAL_ITERATOR(LinkedList) QT_END_NAMESPACE -QT_END_HEADER - #endif // QLINKEDLIST_H diff --git a/src/corelib/tools/qlist.h b/src/corelib/tools/qlist.h index 98326e5e00..0592c24e9f 100644 --- a/src/corelib/tools/qlist.h +++ b/src/corelib/tools/qlist.h @@ -57,8 +57,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -910,6 +908,4 @@ Q_DECLARE_MUTABLE_SEQUENTIAL_ITERATOR(List) QT_END_NAMESPACE -QT_END_HEADER - #endif // QLIST_H diff --git a/src/corelib/tools/qlocale.h b/src/corelib/tools/qlocale.h index 4283a31c43..cb008da0c9 100644 --- a/src/corelib/tools/qlocale.h +++ b/src/corelib/tools/qlocale.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -843,6 +841,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QLocale &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QLOCALE_H diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h index 93134a43dd..280696c534 100644 --- a/src/corelib/tools/qmap.h +++ b/src/corelib/tools/qmap.h @@ -58,8 +58,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE /* @@ -1091,6 +1089,4 @@ Q_DECLARE_MUTABLE_ASSOCIATIVE_ITERATOR(Map) QT_END_NAMESPACE -QT_END_HEADER - #endif // QMAP_H diff --git a/src/corelib/tools/qmargins.h b/src/corelib/tools/qmargins.h index 41437c7244..0d68be961e 100644 --- a/src/corelib/tools/qmargins.h +++ b/src/corelib/tools/qmargins.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -275,6 +273,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QMargins &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QMARGINS_H diff --git a/src/corelib/tools/qmessageauthenticationcode.h b/src/corelib/tools/qmessageauthenticationcode.h index e84a1c84b4..77c22152e4 100644 --- a/src/corelib/tools/qmessageauthenticationcode.h +++ b/src/corelib/tools/qmessageauthenticationcode.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -79,6 +77,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/tools/qpair.h b/src/corelib/tools/qpair.h index 65622f78cb..96b1b65e33 100644 --- a/src/corelib/tools/qpair.h +++ b/src/corelib/tools/qpair.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -108,6 +106,4 @@ Q_OUTOFLINE_TEMPLATE QPair qMakePair(const T1 &x, const T2 &y) QT_END_NAMESPACE -QT_END_HEADER - #endif // QPAIR_H diff --git a/src/corelib/tools/qpodlist_p.h b/src/corelib/tools/qpodlist_p.h index f307e279e8..cfe4cab9ae 100644 --- a/src/corelib/tools/qpodlist_p.h +++ b/src/corelib/tools/qpodlist_p.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -109,6 +107,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPODLIST_P_H diff --git a/src/corelib/tools/qpoint.h b/src/corelib/tools/qpoint.h index cb7a5ecd23..4e0f4d5a4e 100644 --- a/src/corelib/tools/qpoint.h +++ b/src/corelib/tools/qpoint.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -405,6 +403,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug d, const QPointF &p); QT_END_NAMESPACE -QT_END_HEADER - #endif // QPOINT_H diff --git a/src/corelib/tools/qqueue.h b/src/corelib/tools/qqueue.h index ed275a121a..b83021434e 100644 --- a/src/corelib/tools/qqueue.h +++ b/src/corelib/tools/qqueue.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -64,6 +62,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QQUEUE_H diff --git a/src/corelib/tools/qrect.h b/src/corelib/tools/qrect.h index 16c737852b..62ebdd10cd 100644 --- a/src/corelib/tools/qrect.h +++ b/src/corelib/tools/qrect.h @@ -49,8 +49,6 @@ #error qrect.h must be included before any header file that defines topLeft #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QMargins; @@ -792,6 +790,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QRectF &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QRECT_H diff --git a/src/corelib/tools/qrefcount.h b/src/corelib/tools/qrefcount.h index 4036bc6508..84314b1fcc 100644 --- a/src/corelib/tools/qrefcount.h +++ b/src/corelib/tools/qrefcount.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -112,6 +110,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/tools/qregexp.h b/src/corelib/tools/qregexp.h index f5003fed0a..acf59d7196 100644 --- a/src/corelib/tools/qregexp.h +++ b/src/corelib/tools/qregexp.h @@ -46,8 +46,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -129,8 +127,6 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QRegExp &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_REGEXP #endif // QREGEXP_H diff --git a/src/corelib/tools/qregularexpression.h b/src/corelib/tools/qregularexpression.h index a5c273e4a2..a056b4f01b 100644 --- a/src/corelib/tools/qregularexpression.h +++ b/src/corelib/tools/qregularexpression.h @@ -49,8 +49,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QRegularExpressionMatch; @@ -243,8 +241,6 @@ Q_DECLARE_SHARED(QRegularExpressionMatchIterator) QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_REGULAREXPRESSION #endif // QREGULAREXPRESSION_H diff --git a/src/corelib/tools/qscopedpointer.h b/src/corelib/tools/qscopedpointer.h index f7ac8da572..2155c56e27 100644 --- a/src/corelib/tools/qscopedpointer.h +++ b/src/corelib/tools/qscopedpointer.h @@ -46,7 +46,6 @@ #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE template @@ -238,6 +237,5 @@ private: }; QT_END_NAMESPACE -QT_END_HEADER #endif // QSCOPEDPOINTER_H diff --git a/src/corelib/tools/qscopedpointer_p.h b/src/corelib/tools/qscopedpointer_p.h index f92ce0a454..06ebac1853 100644 --- a/src/corelib/tools/qscopedpointer_p.h +++ b/src/corelib/tools/qscopedpointer_p.h @@ -55,7 +55,6 @@ #include "QtCore/qscopedpointer.h" -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -145,6 +144,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER #endif diff --git a/src/corelib/tools/qscopedvaluerollback.h b/src/corelib/tools/qscopedvaluerollback.h index 8d6293c514..dfaf1984be 100644 --- a/src/corelib/tools/qscopedvaluerollback.h +++ b/src/corelib/tools/qscopedvaluerollback.h @@ -44,7 +44,6 @@ #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE template @@ -75,6 +74,5 @@ private: }; QT_END_NAMESPACE -QT_END_HEADER #endif // QSCOPEDVALUEROLLBACK_H diff --git a/src/corelib/tools/qset.h b/src/corelib/tools/qset.h index ee91336c51..d5c3637293 100644 --- a/src/corelib/tools/qset.h +++ b/src/corelib/tools/qset.h @@ -47,8 +47,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -366,6 +364,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSET_H diff --git a/src/corelib/tools/qshareddata.h b/src/corelib/tools/qshareddata.h index 276fef4446..00bf4cba2a 100644 --- a/src/corelib/tools/qshareddata.h +++ b/src/corelib/tools/qshareddata.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -281,6 +279,4 @@ template Q_DECLARE_TYPEINFO_BODY(QExplicitlySharedDataPointer, Q_ QT_END_NAMESPACE -QT_END_HEADER - #endif // QSHAREDDATA_H diff --git a/src/corelib/tools/qsharedpointer.h b/src/corelib/tools/qsharedpointer.h index ccfffb5b18..7d1f00814d 100644 --- a/src/corelib/tools/qsharedpointer.h +++ b/src/corelib/tools/qsharedpointer.h @@ -50,8 +50,6 @@ # include #else -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -152,8 +150,6 @@ template QWeakPointer qWeakPointerCast(const QWeakPointer< QT_END_NAMESPACE -QT_END_HEADER - #endif // Q_QDOC #endif // QSHAREDPOINTER_H diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h index 0d3d410bf5..f6ef7cd55d 100644 --- a/src/corelib/tools/qsharedpointer_impl.h +++ b/src/corelib/tools/qsharedpointer_impl.h @@ -50,10 +50,8 @@ // this header, as we have a "qt_sync_stop_processing" below, which in turn // is here because this file contains a template mess and duplicates the // classes found in qsharedpointer.h -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE QT_END_NAMESPACE -QT_END_HEADER #pragma qt_sync_stop_processing #endif @@ -66,8 +64,6 @@ QT_END_HEADER # include // for std::forward #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -889,6 +885,4 @@ template Q_DECLARE_TYPEINFO_BODY(QSharedPointer, Q_MOVABLE_TYPE); QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h index 2d0e554de8..1a9c25837e 100644 --- a/src/corelib/tools/qsimd_p.h +++ b/src/corelib/tools/qsimd_p.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - /* * qt_module_config.prf defines the QT_COMPILER_SUPPORTS_XXX macros. * They mean the compiler supports the necessary flags and the headers @@ -251,6 +249,4 @@ inline uint qCpuHasFeature(CPUFeatures feature) QT_END_NAMESPACE -QT_END_HEADER - #endif // QSIMD_P_H diff --git a/src/corelib/tools/qsize.h b/src/corelib/tools/qsize.h index bb2cfaff29..76f2ae05f1 100644 --- a/src/corelib/tools/qsize.h +++ b/src/corelib/tools/qsize.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -379,6 +377,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QSizeF &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QSIZE_H diff --git a/src/corelib/tools/qstack.h b/src/corelib/tools/qstack.h index 158e1af6b2..135c4dd527 100644 --- a/src/corelib/tools/qstack.h +++ b/src/corelib/tools/qstack.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -77,6 +75,4 @@ inline const T &QStack::top() const QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTACK_H diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index f7631b4143..35f8a3dc8e 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -64,8 +64,6 @@ namespace std #error qstring.h must be included before any header file that defines truncate #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -1390,8 +1388,6 @@ QT_DEPRECATED inline QString escape(const QString &plain) { QT_END_NAMESPACE -QT_END_HEADER - #if defined(QT_USE_FAST_OPERATOR_PLUS) || defined(QT_USE_QSTRINGBUILDER) #include #endif diff --git a/src/corelib/tools/qstringbuilder.h b/src/corelib/tools/qstringbuilder.h index 67d5bde2ce..e09b02b5a9 100644 --- a/src/corelib/tools/qstringbuilder.h +++ b/src/corelib/tools/qstringbuilder.h @@ -54,8 +54,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -429,6 +427,4 @@ QString &operator+=(QString &a, const QStringBuilder &b) QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTRINGBUILDER_H diff --git a/src/corelib/tools/qstringlist.h b/src/corelib/tools/qstringlist.h index 597e1f7a6b..a962b7c528 100644 --- a/src/corelib/tools/qstringlist.h +++ b/src/corelib/tools/qstringlist.h @@ -49,8 +49,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -257,6 +255,4 @@ inline QDataStream &operator<<(QDataStream &out, const QStringList &list) QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTRINGLIST_H diff --git a/src/corelib/tools/qstringmatcher.h b/src/corelib/tools/qstringmatcher.h index 1634255f2e..792b97591a 100644 --- a/src/corelib/tools/qstringmatcher.h +++ b/src/corelib/tools/qstringmatcher.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -97,6 +95,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTRINGMATCHER_H diff --git a/src/corelib/tools/qtextboundaryfinder.h b/src/corelib/tools/qtextboundaryfinder.h index e05547359f..81cd0dddf0 100644 --- a/src/corelib/tools/qtextboundaryfinder.h +++ b/src/corelib/tools/qtextboundaryfinder.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -111,7 +109,5 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QTextBoundaryFinder::BoundaryReasons) QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/tools/qtimeline.h b/src/corelib/tools/qtimeline.h index 6b5c479cb1..be2a4ae734 100644 --- a/src/corelib/tools/qtimeline.h +++ b/src/corelib/tools/qtimeline.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -156,7 +154,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h index 095e6e929e..3a2028057d 100644 --- a/src/corelib/tools/qvarlengtharray.h +++ b/src/corelib/tools/qvarlengtharray.h @@ -50,8 +50,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -420,6 +418,4 @@ bool operator!=(const QVarLengthArray &l, const QVarLengthArray #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QRegion; @@ -814,6 +812,4 @@ Q_TEMPLATE_EXTERN template class Q_CORE_EXPORT QVector; QT_END_NAMESPACE -QT_END_HEADER - #endif // QVECTOR_H -- cgit v1.2.3 From 159e17bc5b83f46d3c0a78aacd6b91c2da12ab30 Mon Sep 17 00:00:00 2001 From: Keith Gardner Date: Sat, 19 Jan 2013 21:35:16 -0600 Subject: QStringRef: Added a trimmed() function. Change-Id: I67c5d10f29f420e0aea95cf32b5d3c17c141899c Reviewed-by: Oswald Buddenhagen Reviewed-by: Friedemann Kleint Reviewed-by: Olivier Goffart --- src/corelib/tools/qstring.cpp | 31 +++++++++++++++++++++++++++++++ src/corelib/tools/qstring.h | 2 ++ 2 files changed, 33 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 8583bcf70f..ed8cb734f5 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -9193,6 +9193,37 @@ QVector QStringRef::toUcs4() const return v; } +/*! + Returns a string that has whitespace removed from the start and + the end. + + Whitespace means any character for which QChar::isSpace() returns + true. This includes the ASCII characters '\\t', '\\n', '\\v', + '\\f', '\\r', and ' '. + + Unlike QString::simplified(), trimmed() leaves internal whitespace alone. + + \since 5.1 + + \sa QString::trimmed() +*/ +QStringRef QStringRef::trimmed() const +{ + if (m_size == 0 || m_string == 0) + return *this; + const QChar *s = m_string->constData() + m_position; + int start = 0; + int end = m_size - 1; + while (start <= end && s[start].isSpace()) // skip white space from start + start++; + if (start <= end) { // only white space + while (end && s[end].isSpace()) // skip white space from end + end--; + } + int l = end - start + 1; + Q_ASSERT(l >= 0); + return QStringRef(m_string, m_position + start, l); +} /*! \obsolete diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index 35f8a3dc8e..1e45da060c 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -1273,6 +1273,8 @@ public: int localeAwareCompare(const QStringRef &s) const; static int localeAwareCompare(const QStringRef &s1, const QString &s2); static int localeAwareCompare(const QStringRef &s1, const QStringRef &s2); + + QStringRef trimmed() const Q_REQUIRED_RESULT; }; Q_DECLARE_TYPEINFO(QStringRef, Q_PRIMITIVE_TYPE); -- cgit v1.2.3 From 4c5b503f335706916a88b44e86c40de34006d887 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 28 Jan 2013 20:15:00 -0800 Subject: Remove unused variables and functions from the source code Change-Id: I5f37414ee4846b4fe774361f49367bc0d5874039 Reviewed-by: Frederik Gladhorn Reviewed-by: Olivier Goffart --- src/corelib/tools/qdatetime.cpp | 5 ----- 1 file changed, 5 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 72e1819e90..5d1f8e7855 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -93,11 +93,6 @@ static inline QDate fixedDate(int y, int m, int d) return result; } -static inline qint64 floordiv(qint64 a, qint64 b) -{ - return (a - (a < 0 ? b-1 : 0)) / b; -} - static inline qint64 floordiv(qint64 a, int b) { return (a - (a < 0 ? b-1 : 0)) / b; -- cgit v1.2.3 From d0804ff2dd3d289a0f0c58aa30c4334e66ea9be0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Martsum?= Date: Tue, 29 Jan 2013 16:22:01 +0100 Subject: Provide better error if min (or max) is defined in QDateTime This is better than getting a regular compiler error without knowing where min was previously defined. Change-Id: I5a86599cdf76a9a8d87a51e119543206d9f835c1 Reviewed-by: Mitch Curtis Reviewed-by: Thiago Macieira --- src/corelib/tools/qdatetime.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qdatetime.h b/src/corelib/tools/qdatetime.h index d1cc10c877..d1d7f5792e 100644 --- a/src/corelib/tools/qdatetime.h +++ b/src/corelib/tools/qdatetime.h @@ -118,6 +118,9 @@ QT_DEPRECATED inline bool setYMD(int y, int m, int d) inline qint64 toJulianDay() const { return jd; } private: +#if defined(min) || defined(max) +#error min or max defined, cannot continue. If this is caused by an #include of windows.h, NOMINMAX can be defined. +#endif static inline qint64 nullJd() { return std::numeric_limits::min(); } static inline qint64 minJd() { return Q_INT64_C(-784350574879); } static inline qint64 maxJd() { return Q_INT64_C( 784354017364); } -- cgit v1.2.3 From 53f9e77140a07eb8f36eeea460f13a54dad7330e Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sat, 19 Jan 2013 00:35:21 +0000 Subject: QRegularExpression: add method for extracting the capturing group names It may be useful to know which named capturing groups are defined in an regular expression, and for each of them, what's the corresponding index. This commit adds the needed method to QRegularExpression. Note that extracting the information doesn't happen while holding the mutex in the private -- pcre_fullinfo just reads information from the compiled pattern, so that's thread-safe. Task-number: QTBUG-29079 Change-Id: I50c00ee860f06427c2e6ea10417d5c0733cc8303 Reviewed-by: Lars Knoll Reviewed-by: Thiago Macieira --- src/corelib/tools/qregularexpression.cpp | 48 ++++++++++++++++++++++++++++++++ src/corelib/tools/qregularexpression.h | 2 ++ 2 files changed, 50 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 503185dab5..510b7112af 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -1496,6 +1496,54 @@ int QRegularExpression::captureCount() const return d->capturingCount; } +/*! + \since 5.1 + + Returns a list of captureCount() elements, containing the names of the named + capturing groups in the pattern string. The list is sorted such that the + i-th element of the list is the name of the i-th capturing group, if it has + a name, or an empty string if the capturing group is unnamed. + + If the regular expression is not valid, returns an empty list. + + \sa isValid(), QRegularExpressionMatch::captured(), QString::isEmpty() +*/ +QStringList QRegularExpression::namedCaptureGroups() const +{ + if (!isValid()) // isValid() will compile the pattern + return QStringList(); + + // namedCapturingTable will point to a table of + // namedCapturingTableEntryCount entries, each one of which + // contains one ushort followed by the name, NUL terminated. + // The ushort is the numerical index of the name in the pattern. + // The length of each entry is namedCapturingTableEntrySize. + ushort *namedCapturingTable; + int namedCapturingTableEntryCount; + int namedCapturingTableEntrySize; + + pcre16_fullinfo(d->compiledPattern, 0, PCRE_INFO_NAMETABLE, &namedCapturingTable); + pcre16_fullinfo(d->compiledPattern, 0, PCRE_INFO_NAMECOUNT, &namedCapturingTableEntryCount); + pcre16_fullinfo(d->compiledPattern, 0, PCRE_INFO_NAMEENTRYSIZE, &namedCapturingTableEntrySize); + + QStringList result; + + // no QList::resize nor fill is available. The +1 is for the implicit group #0 + result.reserve(d->capturingCount + 1); + for (int i = 0; i < d->capturingCount + 1; ++i) + result.append(QString()); + + for (int i = 0; i < namedCapturingTableEntryCount; ++i) { + const ushort * const currentNamedCapturingTableRow = namedCapturingTable + + namedCapturingTableEntrySize * i; + + const int index = *currentNamedCapturingTableRow; + result[index] = QString::fromUtf16(currentNamedCapturingTableRow + 1); + } + + return result; +} + /*! Returns true if the regular expression is a valid regular expression (that is, it contains no syntax errors, etc.), or false otherwise. Use diff --git a/src/corelib/tools/qregularexpression.h b/src/corelib/tools/qregularexpression.h index a056b4f01b..97dbee9256 100644 --- a/src/corelib/tools/qregularexpression.h +++ b/src/corelib/tools/qregularexpression.h @@ -46,6 +46,7 @@ #ifndef QT_NO_REGULAREXPRESSION #include +#include #include #include @@ -94,6 +95,7 @@ public: QString errorString() const; int captureCount() const; + QStringList namedCaptureGroups() const; enum MatchType { NormalMatch = 0, -- cgit v1.2.3 From 20bde28448583eecb1e37b9492eb4dc73b1409fe Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Sun, 3 Feb 2013 11:33:26 +0000 Subject: Add support for SHA3 to QCryptographicHash. This commit adds SHA3 support to QCryptographicHash. Two implementations are provided, one optimised for 32 bit and one for 64 bits. The code has been written to make it easy to add further implementations, for example ones using NEON instructions on ARM. Change-Id: I3be9c45bbd4fcc2771d697e7f7ae74e48a831e8f Reviewed-by: Thiago Macieira Reviewed-by: Lars Knoll --- src/corelib/tools/qcryptographichash.cpp | 97 +++++++++++++++++++++++- src/corelib/tools/qcryptographichash.h | 7 +- src/corelib/tools/qmessageauthenticationcode.cpp | 8 ++ src/corelib/tools/tools.pri | 3 +- 4 files changed, 109 insertions(+), 6 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qcryptographichash.cpp b/src/corelib/tools/qcryptographichash.cpp index 3f17fe15aa..6704f14eb1 100644 --- a/src/corelib/tools/qcryptographichash.cpp +++ b/src/corelib/tools/qcryptographichash.cpp @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2013 Richard J. Moore . ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtCore module of the Qt Toolkit. @@ -47,6 +48,41 @@ #include "../../3rdparty/md4/md4.cpp" #include "../../3rdparty/sha1/sha1.cpp" +typedef unsigned char BitSequence; +typedef unsigned long long DataLength; +typedef enum { SUCCESS = 0, FAIL = 1, BAD_HASHLEN = 2 } HashReturn; + +#include "../../3rdparty/sha3/KeccakSponge.c" +typedef spongeState hashState; + +#include "../../3rdparty/sha3/KeccakNISTInterface.c" + +/* + This lets us choose between SHA3 implementations at build time. + */ +typedef spongeState SHA3Context; +typedef HashReturn (SHA3Init)(hashState *state, int hashbitlen); +typedef HashReturn (SHA3Update)(hashState *state, const BitSequence *data, DataLength databitlen); +typedef HashReturn (SHA3Final)(hashState *state, BitSequence *hashval); + +#if QT_POINTER_SIZE == 8 // 64 bit version + +#include "../../3rdparty/sha3/KeccakF-1600-opt64.c" + +static SHA3Init * const sha3Init = Init; +static SHA3Update * const sha3Update = Update; +static SHA3Final * const sha3Final = Final; + +#else // 32 bit optimised fallback + +#include "../../3rdparty/sha3/KeccakF-1600-opt32.c" + +static SHA3Init * const sha3Init = Init; +static SHA3Update * const sha3Update = Update; +static SHA3Final * const sha3Final = Final; + +#endif + /* These #defines replace the typedefs needed by the RFC6234 code. Normally the typedefs would come from from stdint.h, but since this header is not @@ -115,6 +151,7 @@ public: SHA256Context sha256Context; SHA384Context sha384Context; SHA512Context sha512Context; + SHA3Context sha3Context; }; QByteArray result; }; @@ -141,10 +178,14 @@ public: \value Md4 Generate an MD4 hash sum \value Md5 Generate an MD5 hash sum \value Sha1 Generate an SHA-1 hash sum - \value Sha224 Generate an SHA-224 hash sum. Introduced in Qt 5.0 - \value Sha256 Generate an SHA-256 hash sum. Introduced in Qt 5.0 - \value Sha384 Generate an SHA-384 hash sum. Introduced in Qt 5.0 - \value Sha512 Generate an SHA-512 hash sum. Introduced in Qt 5.0 + \value Sha224 Generate an SHA-224 hash sum (SHA-2). Introduced in Qt 5.0 + \value Sha256 Generate an SHA-256 hash sum (SHA-2). Introduced in Qt 5.0 + \value Sha384 Generate an SHA-384 hash sum (SHA-2). Introduced in Qt 5.0 + \value Sha512 Generate an SHA-512 hash sum (SHA-2). Introduced in Qt 5.0 + \value Sha3_224 Generate an SHA3-224 hash sum. Introduced in Qt 5.1 + \value Sha3_256 Generate an SHA3-256 hash sum. Introduced in Qt 5.1 + \value Sha3_384 Generate an SHA3-384 hash sum. Introduced in Qt 5.1 + \value Sha3_512 Generate an SHA3-512 hash sum. Introduced in Qt 5.1 */ /*! @@ -192,6 +233,18 @@ void QCryptographicHash::reset() case Sha512: SHA512Reset(&d->sha512Context); break; + case Sha3_224: + sha3Init(&d->sha3Context, 224); + break; + case Sha3_256: + sha3Init(&d->sha3Context, 256); + break; + case Sha3_384: + sha3Init(&d->sha3Context, 384); + break; + case Sha3_512: + sha3Init(&d->sha3Context, 512); + break; } d->result.clear(); } @@ -224,6 +277,18 @@ void QCryptographicHash::addData(const char *data, int length) case Sha512: SHA512Input(&d->sha512Context, reinterpret_cast(data), length); break; + case Sha3_224: + sha3Update(&d->sha3Context, reinterpret_cast(data), length*8); + break; + case Sha3_256: + sha3Update(&d->sha3Context, reinterpret_cast(data), length*8); + break; + case Sha3_384: + sha3Update(&d->sha3Context, reinterpret_cast(data), length*8); + break; + case Sha3_512: + sha3Update(&d->sha3Context, reinterpret_cast(data), length*8); + break; } d->result.clear(); } @@ -313,6 +378,30 @@ QByteArray QCryptographicHash::result() const SHA512Result(©, reinterpret_cast(d->result.data())); break; } + case Sha3_224: { + SHA3Context copy = d->sha3Context; + d->result.resize(224/8); + sha3Final(©, reinterpret_cast(d->result.data())); + break; + } + case Sha3_256: { + SHA3Context copy = d->sha3Context; + d->result.resize(256/8); + sha3Final(©, reinterpret_cast(d->result.data())); + break; + } + case Sha3_384: { + SHA3Context copy = d->sha3Context; + d->result.resize(384/8); + sha3Final(©, reinterpret_cast(d->result.data())); + break; + } + case Sha3_512: { + SHA3Context copy = d->sha3Context; + d->result.resize(512/8); + sha3Final(©, reinterpret_cast(d->result.data())); + break; + } } return d->result; } diff --git a/src/corelib/tools/qcryptographichash.h b/src/corelib/tools/qcryptographichash.h index 847ba9c3f7..d4e75c4667 100644 --- a/src/corelib/tools/qcryptographichash.h +++ b/src/corelib/tools/qcryptographichash.h @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2013 Richard J. Moore . ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtCore module of the Qt Toolkit. @@ -60,7 +61,11 @@ public: Sha224, Sha256, Sha384, - Sha512 + Sha512, + Sha3_224, + Sha3_256, + Sha3_384, + Sha3_512 }; explicit QCryptographicHash(Algorithm method); diff --git a/src/corelib/tools/qmessageauthenticationcode.cpp b/src/corelib/tools/qmessageauthenticationcode.cpp index 3950f15502..becaaaa704 100644 --- a/src/corelib/tools/qmessageauthenticationcode.cpp +++ b/src/corelib/tools/qmessageauthenticationcode.cpp @@ -81,6 +81,14 @@ static int qt_hash_block_size(QCryptographicHash::Algorithm method) return SHA384_Message_Block_Size; case QCryptographicHash::Sha512: return SHA512_Message_Block_Size; + case QCryptographicHash::Sha3_224: + return 144; + case QCryptographicHash::Sha3_256: + return 136; + case QCryptographicHash::Sha3_384: + return 104; + case QCryptographicHash::Sha3_512: + return 72; } return 0; } diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri index bed71c6d25..9b80b7c4fe 100644 --- a/src/corelib/tools/tools.pri +++ b/src/corelib/tools/tools.pri @@ -148,7 +148,8 @@ SOURCES += ../3rdparty/harfbuzz/src/harfbuzz-buffer.c \ HEADERS += tools/qharfbuzz_p.h INCLUDEPATH += ../3rdparty/md5 \ - ../3rdparty/md4 + ../3rdparty/md4 \ + ../3rdparty/sha3 # Note: libm should be present by default becaue this is C++ !macx-icc:!vxworks:unix:LIBS_PRIVATE += -lm -- cgit v1.2.3 From 4aa86461ebdc9e949ba5ca4b3c41deeb87536475 Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Mon, 4 Feb 2013 17:08:24 +0100 Subject: Ensure QDateTime can handle QDate's full range of julian dates. Currently, using QDate::maxJd() in tests will fail. This patch changes some ints to qint64s to prevent overflows where necessary. Change-Id: I61ebf8f233411a7544689fd5bfa9c3abee54e933 Reviewed-by: Thiago Macieira --- src/corelib/tools/qdatetime.cpp | 10 +++++----- src/corelib/tools/qdatetime_p.h | 3 +++ 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 5d1f8e7855..83db1c3cc9 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -2404,9 +2404,9 @@ uint QDateTime::toTime_t() const (Qt::UTC). On systems that do not support time zones this function will behave as if local time were Qt::UTC. - Note that there are possible values for \a msecs that lie outside the - valid range of QDateTime, both negative and positive. The behavior of - this function is undefined for those values. + Note that passing the minimum of \c qint64 + (\c{std::numeric_limits::min()}) to \a msecs will result in + undefined behavior. \sa toMSecsSinceEpoch(), setTime_t() */ @@ -4010,7 +4010,7 @@ static QDateTimePrivate::Spec utcToLocal(QDate &date, QTime &time) time = QTime(); return QDateTimePrivate::LocalUnknown; } else { - int deltaDays = fakeDate.daysTo(date); + qint64 deltaDays = fakeDate.daysTo(date); date = QDate(brokenDown->tm_year + 1900, brokenDown->tm_mon + 1, brokenDown->tm_mday); time = QTime(brokenDown->tm_hour, brokenDown->tm_min, brokenDown->tm_sec, time.msec()); date = date.addDays(deltaDays); @@ -4078,7 +4078,7 @@ static void localToUtc(QDate &date, QTime &time, int isdst) date = QDate(1970, 1, 1); time = QTime(); } else { - int deltaDays = fakeDate.daysTo(date); + qint64 deltaDays = fakeDate.daysTo(date); date = QDate(brokenDown->tm_year + 1900, brokenDown->tm_mon + 1, brokenDown->tm_mday); time = QTime(brokenDown->tm_hour, brokenDown->tm_min, brokenDown->tm_sec, time.msec()); date = date.addDays(deltaDays); diff --git a/src/corelib/tools/qdatetime_p.h b/src/corelib/tools/qdatetime_p.h index 4f61e34bf9..c70571d509 100644 --- a/src/corelib/tools/qdatetime_p.h +++ b/src/corelib/tools/qdatetime_p.h @@ -101,6 +101,9 @@ public: void getUTC(QDate &outDate, QTime &outTime) const; static QDateTime addMSecs(const QDateTime &dt, qint64 msecs); static void addMSecs(QDate &utcDate, QTime &utcTime, qint64 msecs); + + static inline qint64 minJd() { return QDate::minJd(); } + static inline qint64 maxJd() { return QDate::maxJd(); } }; #ifndef QT_BOOTSTRAPPED -- cgit v1.2.3 From 8f00f2020b37388ab309fdf39e85a3b3c9814e1d Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 11 Feb 2013 18:05:52 -0800 Subject: Leave some Qt 6 remarks for QStringRef QStringRef could have been trivial. The destructor is empty, the copy constructor copies exactly the members and has an empty body and all the members are POD. Both functions should be removed or defaulted in Qt 6. When the destructor is defaulted, we can make the constructor constexpr. We can't do that now because QStringRef is exported and some nasty compilers (MSVC) like to export all functions, even inline ones, and then call them without emitting a local copy. Change-Id: Ie7509fd1a3f737a6c9156ea078d13bb347fc6be0 Reviewed-by: Olivier Goffart --- src/corelib/tools/qstring.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index 1e45da060c..9cde603c0b 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -1173,13 +1173,17 @@ class Q_CORE_EXPORT QStringRef { int m_position; int m_size; public: + // ### Qt 6: make this constructor constexpr, after the destructor is made trivial inline QStringRef():m_string(0), m_position(0), m_size(0){} inline QStringRef(const QString *string, int position, int size); inline QStringRef(const QString *string); + + // ### Qt 6: remove this copy constructor, the implicit one is fine inline QStringRef(const QStringRef &other) :m_string(other.m_string), m_position(other.m_position), m_size(other.m_size) {} + // ### Qt 6: remove this destructor, the implicit one is fine inline ~QStringRef(){} inline const QString *string() const { return m_string; } inline int position() const { return m_position; } -- cgit v1.2.3 From bcd04af4e8c6bbd4aba19369ac718df78cf88e9c Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Wed, 30 Jan 2013 22:38:48 +0000 Subject: QRegularExpression: don't use study data when getting the pattern info Information about the pattern (number of capturing groups, newline settings, etc.) are grabbed when the pattern is compiled the first time. Studying (=> optimizing) is always done later, after a certain amount of usages. In case this ever changes, add an assert. Besides, we're not grabbing any info that require studying the pattern first. Change-Id: Ica15fa21f7bf13213288d7090d3396a89900078e Reviewed-by: Thiago Macieira --- src/corelib/tools/qregularexpression.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 510b7112af..706856c70b 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -979,12 +979,13 @@ void QRegularExpressionPrivate::compilePattern() void QRegularExpressionPrivate::getPatternInfo() { Q_ASSERT(compiledPattern); + Q_ASSERT(studyData == 0); pcre16_fullinfo(compiledPattern, 0, PCRE_INFO_CAPTURECOUNT, &capturingCount); // detect the settings for the newline unsigned long int patternNewlineSetting; - pcre16_fullinfo(compiledPattern, studyData, PCRE_INFO_OPTIONS, &patternNewlineSetting); + pcre16_fullinfo(compiledPattern, 0, PCRE_INFO_OPTIONS, &patternNewlineSetting); patternNewlineSetting &= PCRE_NEWLINE_CR | PCRE_NEWLINE_LF | PCRE_NEWLINE_CRLF | PCRE_NEWLINE_ANY | PCRE_NEWLINE_ANYCRLF; if (patternNewlineSetting == 0) { -- cgit v1.2.3 From d57731b0d7ac78c2adc9f7a58a52b3c782e15d20 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Wed, 30 Jan 2013 23:19:08 +0000 Subject: QRegularExpression: print a warning if (?J) is used in a pattern (?J) inside a pattern string can be used to allow or disallow duplicated capturing group names in the pattern string itself. Although PCRE supports duplicated names, in Qt we don't yet. Change-Id: I21cd0c41273cd7ef42870ced3a0fad6ba7035cbc Reviewed-by: Thiago Macieira --- src/corelib/tools/qregularexpression.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 706856c70b..9f29c1b576 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -1013,6 +1013,14 @@ void QRegularExpressionPrivate::getPatternInfo() usingCrLfNewlines = (patternNewlineSetting == PCRE_NEWLINE_CRLF) || (patternNewlineSetting == PCRE_NEWLINE_ANY) || (patternNewlineSetting == PCRE_NEWLINE_ANYCRLF); + + int hasJOptionChanged; + pcre16_fullinfo(compiledPattern, 0, PCRE_INFO_JCHANGED, &hasJOptionChanged); + if (hasJOptionChanged) { + qWarning("QRegularExpressionPrivate::getPatternInfo(): the pattern '%s'\n" + " is using the (?J) option; duplicate capturing group names are not supported by Qt", + qPrintable(pattern)); + } } -- cgit v1.2.3 From ad0a4eaf8dede47a971eaa1a2b3b3bd3debbcf6c Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Thu, 7 Feb 2013 16:49:04 +0000 Subject: Improve QRegularExpression captureCount / namedCaptureGroups docs We need to clarify what's the status of the implicit capturing group #0 in both of this methods. The former doesn't include it, while the latter does for convenience/consistency in the way we count the capturing groups. (Note that this last behavior is actually autotested.) Change-Id: I2170842c2a6dffa34fa56389ceead61a92c07cd1 Reviewed-by: Thiago Macieira --- src/corelib/tools/qregularexpression.cpp | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 9f29c1b576..19b492a505 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -1496,6 +1496,8 @@ void QRegularExpression::setPatternOptions(PatternOptions options) Returns the number of capturing groups inside the pattern string, or -1 if the regular expression is not valid. + \note The implicit capturing group 0 is \e{not} included in the returned number. + \sa isValid() */ int QRegularExpression::captureCount() const @@ -1508,10 +1510,27 @@ int QRegularExpression::captureCount() const /*! \since 5.1 - Returns a list of captureCount() elements, containing the names of the named - capturing groups in the pattern string. The list is sorted such that the - i-th element of the list is the name of the i-th capturing group, if it has - a name, or an empty string if the capturing group is unnamed. + Returns a list of captureCount() + 1 elements, containing the names of the + named capturing groups in the pattern string. The list is sorted such that + the element of the list at position \c{i} is the name of the \c{i}-th + capturing group, if it has a name, or an empty string if that capturing + group is unnamed. + + For instance, given the regular expression + + \code + (?\d\d)-(?\d\d)-(?\d\d\d\d) (\w+) (?\w+) + \endcode + + namedCaptureGroups() will return the following list: + + \code + ("", "day", "month", "year", "", "name") + \endcode + + which corresponds to the fact that the capturing group #0 (corresponding to + the whole match) has no name, the capturing group #1 has name "day", the + capturing group #2 has name "month", etc. If the regular expression is not valid, returns an empty list. -- cgit v1.2.3 From cc7239da8d1ab95e68e12a64df3ca3051419cb34 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sun, 10 Feb 2013 10:57:43 +0100 Subject: Make it possible to use QPointer This is possible with QWeakPointer, so allow it for migrating code too. In the process, replace the QPointerBase with a member variable for simplicity. The functionality of the QPointerBase is replaced by a TypeSelector template. Change-Id: I3b4c77bdeda2b863cc33e84a3da8a25bae928c8c Reviewed-by: Thiago Macieira Reviewed-by: Olivier Goffart --- src/corelib/tools/qsharedpointer_impl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h index f6ef7cd55d..3121bcdf40 100644 --- a/src/corelib/tools/qsharedpointer_impl.h +++ b/src/corelib/tools/qsharedpointer_impl.h @@ -639,7 +639,7 @@ private: public: #else template friend class QSharedPointer; - friend class QPointerBase; + template friend class QPointer; #endif template -- cgit v1.2.3 From 8ec2c0a70e387689d555876875a75391b9cf4e44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Nowacki?= Date: Thu, 14 Feb 2013 09:43:22 +0100 Subject: Revert "Provide better error if min (or max) is defined in QDateTime" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit d0804ff2dd3d289a0f0c58aa30c4334e66ea9be0. The commit breaks JSC which is used by QtWebKit, QtScript and indirectly by QtQuick1, which blocks integration stable->dev. JSC should be fixed upstream, but until then we need to revert the change. Change-Id: I3f7b8be08b68181e08422d2cb00d7cd70a7fc07f Reviewed-by: Simon Hausmann Reviewed-by: Thorbjørn Lund Martsum Reviewed-by: Frederik Gladhorn --- src/corelib/tools/qdatetime.h | 3 --- 1 file changed, 3 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qdatetime.h b/src/corelib/tools/qdatetime.h index d1d7f5792e..d1cc10c877 100644 --- a/src/corelib/tools/qdatetime.h +++ b/src/corelib/tools/qdatetime.h @@ -118,9 +118,6 @@ QT_DEPRECATED inline bool setYMD(int y, int m, int d) inline qint64 toJulianDay() const { return jd; } private: -#if defined(min) || defined(max) -#error min or max defined, cannot continue. If this is caused by an #include of windows.h, NOMINMAX can be defined. -#endif static inline qint64 nullJd() { return std::numeric_limits::min(); } static inline qint64 minJd() { return Q_INT64_C(-784350574879); } static inline qint64 maxJd() { return Q_INT64_C( 784354017364); } -- cgit v1.2.3 From b26c9da89220a26227353d67cfe6c25ec6ddc0ee Mon Sep 17 00:00:00 2001 From: Keith Gardner Date: Sat, 2 Feb 2013 13:08:15 -0600 Subject: QLocalePrivate: Generalized numberToCLocale. Modified QLocalPrivate::numberToCLocale to take a const QChar * and an integer instead of a QString. This allows for passing QStrings and QStringRefs into the same function. Updated the QLocalePrivate::stringToDouble, QLocalePrivate::stringToLongLong, and QLocalePrivate::stringToUnsLongLong to use this new function signature. Change-Id: Ifee5dfcd9b743e1d3b9123a65007c89e8ed93e83 Reviewed-by: Oswald Buddenhagen Reviewed-by: Lars Knoll --- src/corelib/tools/qlocale.cpp | 30 ++++++++++++++++++++++++------ src/corelib/tools/qlocale_p.h | 2 +- 2 files changed, 25 insertions(+), 7 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp index 39257158a4..6c35f45cdb 100644 --- a/src/corelib/tools/qlocale.cpp +++ b/src/corelib/tools/qlocale.cpp @@ -2892,12 +2892,12 @@ QString QLocalePrivate::unsLongLongToString(const QChar zero, const QChar group, number. We can't detect junk here, since we don't even know the base of the number. */ -bool QLocalePrivate::numberToCLocale(const QString &num, +bool QLocalePrivate::numberToCLocale(const QChar *str, int len, GroupSeparatorMode group_sep_mode, CharBuff *result) const { - const QChar *uc = num.unicode(); - int l = num.length(); + const QChar *uc = str; + int l = len; int idx = 0; // Skip whitespace @@ -3043,7 +3043,13 @@ double QLocalePrivate::stringToDouble(const QString &number, bool *ok, GroupSeparatorMode group_sep_mode) const { CharBuff buff; - if (!numberToCLocale(group().unicode() == 0xa0 ? number.trimmed() : number, + // Do not use the ternary operator - triggers msvc2012 bug in optimized builds + QString trimmedNumber; + if (group().unicode() == 0xa0) + trimmedNumber = number.trimmed(); + else + trimmedNumber = number; + if (!numberToCLocale(trimmedNumber.unicode(), trimmedNumber.size(), group_sep_mode, &buff)) { if (ok != 0) *ok = false; @@ -3056,7 +3062,13 @@ qlonglong QLocalePrivate::stringToLongLong(const QString &number, int base, bool *ok, GroupSeparatorMode group_sep_mode) const { CharBuff buff; - if (!numberToCLocale(group().unicode() == 0xa0 ? number.trimmed() : number, + // Do not use the ternary operator - triggers msvc2012 bug in optimized builds + QString trimmedNumber; + if (group().unicode() == 0xa0) + trimmedNumber = number.trimmed(); + else + trimmedNumber = number; + if (!numberToCLocale(trimmedNumber.unicode(), trimmedNumber.size(), group_sep_mode, &buff)) { if (ok != 0) *ok = false; @@ -3070,7 +3082,13 @@ qulonglong QLocalePrivate::stringToUnsLongLong(const QString &number, int base, bool *ok, GroupSeparatorMode group_sep_mode) const { CharBuff buff; - if (!numberToCLocale(group().unicode() == 0xa0 ? number.trimmed() : number, + // Do not use the ternary operator - triggers msvc2012 bug in optimized builds + QString trimmedNumber; + if (group().unicode() == 0xa0) + trimmedNumber = number.trimmed(); + else + trimmedNumber = number; + if (!numberToCLocale(trimmedNumber.unicode(), trimmedNumber.size(), group_sep_mode, &buff)) { if (ok != 0) *ok = false; diff --git a/src/corelib/tools/qlocale_p.h b/src/corelib/tools/qlocale_p.h index 3746cd56e6..5389fd2384 100644 --- a/src/corelib/tools/qlocale_p.h +++ b/src/corelib/tools/qlocale_p.h @@ -317,7 +317,7 @@ public: static quint64 bytearrayToUnsLongLong(const char *num, int base, bool *ok); typedef QVarLengthArray CharBuff; - bool numberToCLocale(const QString &num, + bool numberToCLocale(const QChar *str, int len, GroupSeparatorMode group_sep_mode, CharBuff *result) const; inline char digitToCLocale(QChar c) const; -- cgit v1.2.3 From 0768920dbdabef25eb7d41e8dbba891704b24f09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Sat, 16 Feb 2013 14:56:50 +0100 Subject: Remove ifdefs for supporting Mac OS <= 10.5 Qt5 requires Mac OS 10.6, so we can remove checks such as if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 Change-Id: Iea21727a277291148704ecf9677ed0b68c24920f Reviewed-by: Thiago Macieira --- src/corelib/tools/qlocale_mac.mm | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qlocale_mac.mm b/src/corelib/tools/qlocale_mac.mm index 0dc6f389b3..b3dff3a83a 100644 --- a/src/corelib/tools/qlocale_mac.mm +++ b/src/corelib/tools/qlocale_mac.mm @@ -345,7 +345,6 @@ static QString macFormatCurrency(const QSystemLocale::CurrencyToStringArgument & static QVariant macQuoteString(QSystemLocale::QueryType type, const QStringRef &str) { -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 if (QSysInfo::MacintoshVersion < QSysInfo::MV_10_6) return QVariant(); @@ -363,7 +362,6 @@ static QVariant macQuoteString(QSystemLocale::QueryType type, const QStringRef & default: break; } -#endif return QVariant(); } #endif //QT_NO_SYSTEMLOCALE -- cgit v1.2.3 From cfc09b656420a42a9f4b8e7b8b3ebe4fc4a426a2 Mon Sep 17 00:00:00 2001 From: Keith Gardner Date: Sat, 2 Feb 2013 13:37:31 -0600 Subject: QLocale: Added QStringRef overloads to toInt(), toUInt(), etc... Added the following function overloads to QLocale: toShort, toUShort, toInt, toUInt, toLong, toULong, toLongLong, toULongLong, toFloat, and toDouble. Change-Id: I8cd90ca08b88338b08a73a72492f4c91c4f46ea4 Reviewed-by: Oswald Buddenhagen Reviewed-by: Thiago Macieira --- src/corelib/tools/qlocale.cpp | 276 ++++++++++++++++++++++++++++++++++++++++++ src/corelib/tools/qlocale.h | 10 ++ src/corelib/tools/qlocale_p.h | 4 + 3 files changed, 290 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp index 6c35f45cdb..454025f54d 100644 --- a/src/corelib/tools/qlocale.cpp +++ b/src/corelib/tools/qlocale.cpp @@ -1326,6 +1326,224 @@ double QLocale::toDouble(const QString &s, bool *ok) const return d->stringToDouble(s, ok, mode); } +/*! + Returns the short int represented by the localized string \a s. + + If the conversion fails the function returns 0. + + If \a ok is not null, failure is reported by setting *ok to false, and + success by setting *ok to true. + + This function ignores leading and trailing whitespace. + + \sa toUShort(), toString() + + \since 5.1 +*/ + +short QLocale::toShort(const QStringRef &s, bool *ok) const +{ + qlonglong i = toLongLong(s, ok); + if (i < SHRT_MIN || i > SHRT_MAX) { + if (ok) + *ok = false; + return 0; + } + return short(i); +} + +/*! + Returns the unsigned short int represented by the localized string \a s. + + If the conversion fails the function returns 0. + + If \a ok is not null, failure is reported by setting *ok to false, and + success by setting *ok to true. + + This function ignores leading and trailing whitespace. + + \sa toShort(), toString() + + \since 5.1 +*/ + +ushort QLocale::toUShort(const QStringRef &s, bool *ok) const +{ + qulonglong i = toULongLong(s, ok); + if (i > USHRT_MAX) { + if (ok) + *ok = false; + return 0; + } + return ushort(i); +} + +/*! + Returns the int represented by the localized string \a s. + + If the conversion fails the function returns 0. + + If \a ok is not null, failure is reported by setting *ok to false, and + success by setting *ok to true. + + This function ignores leading and trailing whitespace. + + \sa toUInt(), toString() + + \since 5.1 +*/ + +int QLocale::toInt(const QStringRef &s, bool *ok) const +{ + qlonglong i = toLongLong(s, ok); + if (i < INT_MIN || i > INT_MAX) { + if (ok) + *ok = false; + return 0; + } + return int(i); +} + +/*! + Returns the unsigned int represented by the localized string \a s. + + If the conversion fails the function returns 0. + + If \a ok is not null, failure is reported by setting *ok to false, and + success by setting *ok to true. + + This function ignores leading and trailing whitespace. + + \sa toInt(), toString() + + \since 5.1 +*/ + +uint QLocale::toUInt(const QStringRef &s, bool *ok) const +{ + qulonglong i = toULongLong(s, ok); + if (i > UINT_MAX) { + if (ok) + *ok = false; + return 0; + } + return uint(i); +} + +/*! + Returns the long long int represented by the localized string \a s. + + If the conversion fails the function returns 0. + + If \a ok is not null, failure is reported by setting *ok to false, and + success by setting *ok to true. + + This function ignores leading and trailing whitespace. + + \sa toInt(), toULongLong(), toDouble(), toString() + + \since 5.1 +*/ + + +qlonglong QLocale::toLongLong(const QStringRef &s, bool *ok) const +{ + QLocalePrivate::GroupSeparatorMode mode + = d->m_numberOptions & RejectGroupSeparator + ? QLocalePrivate::FailOnGroupSeparators + : QLocalePrivate::ParseGroupSeparators; + + return d->stringToLongLong(s, 10, ok, mode); +} + +/*! + Returns the unsigned long long int represented by the localized + string \a s. + + If the conversion fails the function returns 0. + + If \a ok is not null, failure is reported by setting *ok to false, and + success by setting *ok to true. + + This function ignores leading and trailing whitespace. + + \sa toLongLong(), toInt(), toDouble(), toString() + + \since 5.1 +*/ + +qulonglong QLocale::toULongLong(const QStringRef &s, bool *ok) const +{ + QLocalePrivate::GroupSeparatorMode mode + = d->m_numberOptions & RejectGroupSeparator + ? QLocalePrivate::FailOnGroupSeparators + : QLocalePrivate::ParseGroupSeparators; + + return d->stringToUnsLongLong(s, 10, ok, mode); +} + +/*! + Returns the float represented by the localized string \a s, or 0.0 + if the conversion failed. + + If \a ok is not null, reports failure by setting + *ok to false and success by setting *ok to true. + + This function ignores leading and trailing whitespace. + + \sa toDouble(), toInt(), toString() + + \since 5.1 +*/ + +float QLocale::toFloat(const QStringRef &s, bool *ok) const +{ + bool myOk; + double d = toDouble(s, &myOk); + if (!myOk || d > QT_MAX_FLOAT || d < -QT_MAX_FLOAT) { + if (ok) + *ok = false; + return 0.0; + } + if (ok) + *ok = true; + return float(d); +} + +/*! + Returns the double represented by the localized string \a s, or + 0.0 if the conversion failed. + + If \a ok is not null, reports failure by setting + *ok to false and success by setting *ok to true. + + Unlike QString::toDouble(), this function does not fall back to + the "C" locale if the string cannot be interpreted in this + locale. + + \snippet code/src_corelib_tools_qlocale.cpp 3 + + Notice that the last conversion returns 1234.0, because '.' is the + thousands group separator in the German locale. + + This function ignores leading and trailing whitespace. + + \sa toFloat(), toInt(), toString() + + \since 5.1 +*/ + +double QLocale::toDouble(const QStringRef &s, bool *ok) const +{ + QLocalePrivate::GroupSeparatorMode mode + = d->m_numberOptions & RejectGroupSeparator + ? QLocalePrivate::FailOnGroupSeparators + : QLocalePrivate::ParseGroupSeparators; + + return d->stringToDouble(s, ok, mode); +} + + /*! Returns a localized string representation of \a i. @@ -3098,6 +3316,64 @@ qulonglong QLocalePrivate::stringToUnsLongLong(const QString &number, int base, return bytearrayToUnsLongLong(buff.constData(), base, ok); } +double QLocalePrivate::stringToDouble(const QStringRef &number, bool *ok, + GroupSeparatorMode group_sep_mode) const +{ + CharBuff buff; + QStringRef trimmedNumber; + // Do not use the ternary operator - triggers msvc2012 bug in optimized builds + if (group().unicode() == 0xa0) + trimmedNumber = number.trimmed(); + else + trimmedNumber = number; + if (!numberToCLocale(trimmedNumber.unicode(), trimmedNumber.size(), + group_sep_mode, &buff)) { + if (ok != 0) + *ok = false; + return 0.0; + } + return bytearrayToDouble(buff.constData(), ok); +} + +qlonglong QLocalePrivate::stringToLongLong(const QStringRef &number, int base, + bool *ok, GroupSeparatorMode group_sep_mode) const +{ + CharBuff buff; + QStringRef trimmedNumber; + // Do not use the ternary operator - triggers msvc2012 bug in optimized builds + if (group().unicode() == 0xa0) + trimmedNumber = number.trimmed(); + else + trimmedNumber = number; + if (!numberToCLocale(trimmedNumber.unicode(), trimmedNumber.size(), + group_sep_mode, &buff)) { + if (ok != 0) + *ok = false; + return 0; + } + + return bytearrayToLongLong(buff.constData(), base, ok); +} + +qulonglong QLocalePrivate::stringToUnsLongLong(const QStringRef &number, int base, + bool *ok, GroupSeparatorMode group_sep_mode) const +{ + CharBuff buff; + QStringRef trimmedNumber; + // Do not use the ternary operator - triggers msvc2012 bug in optimized builds + if (group().unicode() == 0xa0) + trimmedNumber = number.trimmed(); + else + trimmedNumber = number; + if (!numberToCLocale(trimmedNumber.unicode(), trimmedNumber.size(), + group_sep_mode, &buff)) { + if (ok != 0) + *ok = false; + return 0; + } + + return bytearrayToUnsLongLong(buff.constData(), base, ok); +} double QLocalePrivate::bytearrayToDouble(const char *num, bool *ok, bool *overflow) { diff --git a/src/corelib/tools/qlocale.h b/src/corelib/tools/qlocale.h index cb008da0c9..f7f30ea0d5 100644 --- a/src/corelib/tools/qlocale.h +++ b/src/corelib/tools/qlocale.h @@ -67,6 +67,7 @@ class Q_CORE_EXPORT QLocale Q_ENUMS(Country) Q_ENUMS(MeasurementSystem) friend class QString; + friend class QStringRef; friend class QByteArray; friend class QIntValidator; friend class QDoubleValidatorPrivate; @@ -710,6 +711,15 @@ public: float toFloat(const QString &s, bool *ok = 0) const; double toDouble(const QString &s, bool *ok = 0) const; + short toShort(const QStringRef &s, bool *ok = 0) const; + ushort toUShort(const QStringRef &s, bool *ok = 0) const; + int toInt(const QStringRef &s, bool *ok = 0) const; + uint toUInt(const QStringRef &s, bool *ok = 0) const; + qlonglong toLongLong(const QStringRef &s, bool *ok = 0) const; + qulonglong toULongLong(const QStringRef &s, bool *ok = 0) const; + float toFloat(const QStringRef &s, bool *ok = 0) const; + double toDouble(const QStringRef &s, bool *ok = 0) const; + QString toString(qlonglong i) const; QString toString(qulonglong i) const; inline QString toString(short i) const; diff --git a/src/corelib/tools/qlocale_p.h b/src/corelib/tools/qlocale_p.h index 5389fd2384..3c3d7c7054 100644 --- a/src/corelib/tools/qlocale_p.h +++ b/src/corelib/tools/qlocale_p.h @@ -311,6 +311,10 @@ public: qint64 stringToLongLong(const QString &num, int base, bool *ok, GroupSeparatorMode group_sep_mode) const; quint64 stringToUnsLongLong(const QString &num, int base, bool *ok, GroupSeparatorMode group_sep_mode) const; + double stringToDouble(const QStringRef &num, bool *ok, GroupSeparatorMode group_sep_mode) const; + qint64 stringToLongLong(const QStringRef &num, int base, bool *ok, GroupSeparatorMode group_sep_mode) const; + quint64 stringToUnsLongLong(const QStringRef &num, int base, bool *ok, GroupSeparatorMode group_sep_mode) const; + static double bytearrayToDouble(const char *num, bool *ok, bool *overflow = 0); static qint64 bytearrayToLongLong(const char *num, int base, bool *ok, bool *overflow = 0); -- cgit v1.2.3 From 436c65ba2129f9e4aad2b4258351a0381a7b0bac Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Wed, 6 Feb 2013 11:58:20 +0100 Subject: Fix compilation with Clang on MacOS. Apparently Clang does not like methods to be declared static inline, and then have their definition somewhere else. Error messages: ../../../include/QtCore/../../src/corelib/tools/qpoint.h:156:37: error: conflicting types for 'dotProduct' Q_DECL_CONSTEXPR inline int QPoint::dotProduct(const QPoint &p1, const QPoint &p2) ^ ../../../include/QtCore/../../src/corelib/tools/qpoint.h:77:40: note: previous declaration is here Q_DECL_CONSTEXPR static inline int dotProduct(const QPoint &p1, const QPoint &p2); ^ ../../../include/QtCore/../../src/corelib/tools/qpoint.h:338:40: error: conflicting types for 'dotProduct' Q_DECL_CONSTEXPR inline qreal QPointF::dotProduct(const QPointF &p1, const QPointF &p2) ^ ../../../include/QtCore/../../src/corelib/tools/qpoint.h:239:42: note: previous declaration is here Q_DECL_CONSTEXPR static inline qreal dotProduct(const QPointF &p1, const QPointF &p2); ^ Change-Id: I041b96d79506d2898daf40d70b37f02459de35bd Reviewed-by: Lars Knoll Reviewed-by: Thiago Macieira --- src/corelib/tools/qpoint.h | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qpoint.h b/src/corelib/tools/qpoint.h index 4e0f4d5a4e..69403ebc53 100644 --- a/src/corelib/tools/qpoint.h +++ b/src/corelib/tools/qpoint.h @@ -74,7 +74,8 @@ public: inline QPoint &operator/=(qreal divisor); - Q_DECL_CONSTEXPR static inline int dotProduct(const QPoint &p1, const QPoint &p2); + Q_DECL_CONSTEXPR static inline int dotProduct(const QPoint &p1, const QPoint &p2) + { return p1.xp * p2.xp + p1.yp * p2.yp; } friend Q_DECL_CONSTEXPR inline bool operator==(const QPoint &, const QPoint &); friend Q_DECL_CONSTEXPR inline bool operator!=(const QPoint &, const QPoint &); @@ -153,9 +154,6 @@ inline QPoint &QPoint::operator*=(double factor) inline QPoint &QPoint::operator*=(int factor) { xp = xp*factor; yp = yp*factor; return *this; } -Q_DECL_CONSTEXPR inline int QPoint::dotProduct(const QPoint &p1, const QPoint &p2) -{ return p1.xp * p2.xp + p1.yp * p2.yp; } - Q_DECL_CONSTEXPR inline bool operator==(const QPoint &p1, const QPoint &p2) { return p1.xp == p2.xp && p1.yp == p2.yp; } @@ -236,7 +234,8 @@ public: inline QPointF &operator*=(qreal c); inline QPointF &operator/=(qreal c); - Q_DECL_CONSTEXPR static inline qreal dotProduct(const QPointF &p1, const QPointF &p2); + Q_DECL_CONSTEXPR static inline qreal dotProduct(const QPointF &p1, const QPointF &p2) + { return p1.xp * p2.xp + p1.yp * p2.yp; } friend Q_DECL_CONSTEXPR inline bool operator==(const QPointF &, const QPointF &); friend Q_DECL_CONSTEXPR inline bool operator!=(const QPointF &, const QPointF &); @@ -335,11 +334,6 @@ inline QPointF &QPointF::operator*=(qreal c) xp*=c; yp*=c; return *this; } -Q_DECL_CONSTEXPR inline qreal QPointF::dotProduct(const QPointF &p1, const QPointF &p2) -{ - return p1.xp * p2.xp + p1.yp * p2.yp; -} - Q_DECL_CONSTEXPR inline bool operator==(const QPointF &p1, const QPointF &p2) { return qFuzzyIsNull(p1.xp - p2.xp) && qFuzzyIsNull(p1.yp - p2.yp); -- cgit v1.2.3 From 3b5600f6ee9f2982c5a93250e577f87a34fe32d1 Mon Sep 17 00:00:00 2001 From: Keith Gardner Date: Fri, 28 Dec 2012 16:35:39 -0600 Subject: QStringRef: Added toInt(), toUInt(), etc... functions to QStringRef. Added the following functions to QStringRef: toShort, toUShort, toInt, toUInt, toLong, toULong, toLongLong, toULongLong, toFloat, and toDouble. These functions use the corresponding functions found in QLocale. Updated tst_qstringref.cpp to exercise the new functionality. Change-Id: I38668a0cc7da0c101a62613fd16cb5a98286617f Reviewed-by: Oswald Buddenhagen Reviewed-by: Thiago Macieira --- src/corelib/tools/qstring.cpp | 319 ++++++++++++++++++++++++++++++++++++++++++ src/corelib/tools/qstring.h | 10 ++ 2 files changed, 329 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 0be0a84459..bbe7628d38 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -9225,6 +9225,325 @@ QStringRef QStringRef::trimmed() const return QStringRef(m_string, m_position + start, l); } +/*! + Returns the string converted to a \c{long long} using base \a + base, which is 10 by default and must be between 2 and 36, or 0. + Returns 0 if the conversion fails. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. + + If \a base is 0, the C language convention is used: If the string + begins with "0x", base 16 is used; if the string begins with "0", + base 8 is used; otherwise, base 10 is used. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toLongLong() + + \sa QString::toLongLong() + + \since 5.1 +*/ + +qint64 QStringRef::toLongLong(bool *ok, int base) const +{ +#if defined(QT_CHECK_RANGE) + if (base != 0 && (base < 2 || base > 36)) { + qWarning("QString::toLongLong: Invalid base (%d)", base); + base = 10; + } +#endif + + QLocale c_locale(QLocale::C); + return c_locale.d->stringToLongLong(*this, base, ok, QLocalePrivate::FailOnGroupSeparators); +} + +/*! + Returns the string converted to an \c{unsigned long long} using base \a + base, which is 10 by default and must be between 2 and 36, or 0. + Returns 0 if the conversion fails. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. + + If \a base is 0, the C language convention is used: If the string + begins with "0x", base 16 is used; if the string begins with "0", + base 8 is used; otherwise, base 10 is used. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toULongLong() + + \sa QString::toULongLong() + + \since 5.1 +*/ + +quint64 QStringRef::toULongLong(bool *ok, int base) const +{ +#if defined(QT_CHECK_RANGE) + if (base != 0 && (base < 2 || base > 36)) { + qWarning("QString::toULongLong: Invalid base (%d)", base); + base = 10; + } +#endif + + QLocale c_locale(QLocale::C); + return c_locale.d->stringToUnsLongLong(*this, base, ok, QLocalePrivate::FailOnGroupSeparators); +} + +/*! + \fn long QStringRef::toLong(bool *ok, int base) const + + Returns the string converted to a \c long using base \a + base, which is 10 by default and must be between 2 and 36, or 0. + Returns 0 if the conversion fails. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. + + If \a base is 0, the C language convention is used: If the string + begins with "0x", base 16 is used; if the string begins with "0", + base 8 is used; otherwise, base 10 is used. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toLong() + + \sa QString::toLong() + + \since 5.1 +*/ + +long QStringRef::toLong(bool *ok, int base) const +{ + qint64 v = toLongLong(ok, base); + if (v < LONG_MIN || v > LONG_MAX) { + if (ok) + *ok = false; + v = 0; + } + return long(v); +} + +/*! + \fn ulong QStringRef::toULong(bool *ok, int base) const + + Returns the string converted to an \c{unsigned long} using base \a + base, which is 10 by default and must be between 2 and 36, or 0. + Returns 0 if the conversion fails. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. + + If \a base is 0, the C language convention is used: If the string + begins with "0x", base 16 is used; if the string begins with "0", + base 8 is used; otherwise, base 10 is used. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toULong() + + \sa QString::toULong() + + \since 5.1 +*/ + +ulong QStringRef::toULong(bool *ok, int base) const +{ + quint64 v = toULongLong(ok, base); + if (v > ULONG_MAX) { + if (ok) + *ok = false; + v = 0; + } + return ulong(v); +} + + +/*! + Returns the string converted to an \c int using base \a + base, which is 10 by default and must be between 2 and 36, or 0. + Returns 0 if the conversion fails. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. + + If \a base is 0, the C language convention is used: If the string + begins with "0x", base 16 is used; if the string begins with "0", + base 8 is used; otherwise, base 10 is used. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toInt() + + \sa QString::toInt() + + \since 5.1 +*/ + +int QStringRef::toInt(bool *ok, int base) const +{ + qint64 v = toLongLong(ok, base); + if (v < INT_MIN || v > INT_MAX) { + if (ok) + *ok = false; + v = 0; + } + return int(v); +} + +/*! + Returns the string converted to an \c{unsigned int} using base \a + base, which is 10 by default and must be between 2 and 36, or 0. + Returns 0 if the conversion fails. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. + + If \a base is 0, the C language convention is used: If the string + begins with "0x", base 16 is used; if the string begins with "0", + base 8 is used; otherwise, base 10 is used. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toUInt() + + \sa QString::toUInt() + + \since 5.1 +*/ + +uint QStringRef::toUInt(bool *ok, int base) const +{ + quint64 v = toULongLong(ok, base); + if (v > UINT_MAX) { + if (ok) + *ok = false; + v = 0; + } + return uint(v); +} + +/*! + Returns the string converted to a \c short using base \a + base, which is 10 by default and must be between 2 and 36, or 0. + Returns 0 if the conversion fails. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. + + If \a base is 0, the C language convention is used: If the string + begins with "0x", base 16 is used; if the string begins with "0", + base 8 is used; otherwise, base 10 is used. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toShort() + + \sa QString::toShort() + + \since 5.1 +*/ + +short QStringRef::toShort(bool *ok, int base) const +{ + long v = toLongLong(ok, base); + if (v < SHRT_MIN || v > SHRT_MAX) { + if (ok) + *ok = false; + v = 0; + } + return short(v); +} + +/*! + Returns the string converted to an \c{unsigned short} using base \a + base, which is 10 by default and must be between 2 and 36, or 0. + Returns 0 if the conversion fails. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. + + If \a base is 0, the C language convention is used: If the string + begins with "0x", base 16 is used; if the string begins with "0", + base 8 is used; otherwise, base 10 is used. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toUShort() + + \sa QString::toUShort() + + \since 5.1 +*/ + +ushort QStringRef::toUShort(bool *ok, int base) const +{ + ulong v = toULongLong(ok, base); + if (v > USHRT_MAX) { + if (ok) + *ok = false; + v = 0; + } + return ushort(v); +} + + +/*! + Returns the string converted to a \c double value. + + Returns 0.0 if the conversion fails. + + If a conversion error occurs, \c{*}\a{ok} is set to false; + otherwise \c{*}\a{ok} is set to true. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toDouble() + + For historic reasons, this function does not handle + thousands group separators. If you need to convert such numbers, + use QLocale::toDouble(). + + \sa QString::toDouble() + + \since 5.1 +*/ + +double QStringRef::toDouble(bool *ok) const +{ + QLocale c_locale(QLocale::C); + return c_locale.d->stringToDouble(*this, ok, QLocalePrivate::FailOnGroupSeparators); +} + +/*! + Returns the string converted to a \c float value. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. Returns 0.0 if the conversion fails. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toFloat() + + \sa QString::toFloat() + + \since 5.1 +*/ + +float QStringRef::toFloat(bool *ok) const +{ + bool myOk; + double d = toDouble(&myOk); + if (!myOk) { + if (ok != 0) + *ok = false; + return 0.0; + } + if (qIsInf(d)) + return float(d); + if (d > QT_MAX_FLOAT || d < -QT_MAX_FLOAT) { + if (ok != 0) + *ok = false; + return 0.0; + } + if (ok) + *ok = true; + return float(d); +} + /*! \obsolete \fn QString Qt::escape(const QString &plain) diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index 9cde603c0b..d152e6795e 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -1279,6 +1279,16 @@ public: static int localeAwareCompare(const QStringRef &s1, const QStringRef &s2); QStringRef trimmed() const Q_REQUIRED_RESULT; + short toShort(bool *ok = 0, int base = 10) const; + ushort toUShort(bool *ok = 0, int base = 10) const; + int toInt(bool *ok = 0, int base = 10) const; + uint toUInt(bool *ok = 0, int base = 10) const; + long toLong(bool *ok = 0, int base = 10) const; + ulong toULong(bool *ok = 0, int base = 10) const; + qlonglong toLongLong(bool *ok = 0, int base = 10) const; + qulonglong toULongLong(bool *ok = 0, int base = 10) const; + float toFloat(bool *ok = 0) const; + double toDouble(bool *ok = 0) const; }; Q_DECLARE_TYPEINFO(QStringRef, Q_PRIMITIVE_TYPE); -- cgit v1.2.3 From 44cb71d6fdb0b7285d4ef74a1ef778323aa9e5ee Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 22 Feb 2013 17:53:33 -0800 Subject: Compile only the SHA-1 code into qdoc There's no need to compile the other codecs if they never get used. It's possible that a whole-program optimisation would remove the dead code away, but it's not very likely. Change-Id: I75d7618c174566beec2fab44f60a9f7120133775 Reviewed-by: Richard J. Moore --- src/corelib/tools/qcryptographichash.cpp | 60 +++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 17 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qcryptographichash.cpp b/src/corelib/tools/qcryptographichash.cpp index 6704f14eb1..fdf2d1a620 100644 --- a/src/corelib/tools/qcryptographichash.cpp +++ b/src/corelib/tools/qcryptographichash.cpp @@ -41,12 +41,16 @@ ****************************************************************************/ #include +#include + +#include "../../3rdparty/sha1/sha1.cpp" +#ifndef QT_CRYPTOGRAPHICHASH_ONLY_SHA1 +// qdoc only needs SHA-1 #include "../../3rdparty/md5/md5.h" #include "../../3rdparty/md5/md5.cpp" #include "../../3rdparty/md4/md4.h" #include "../../3rdparty/md4/md4.cpp" -#include "../../3rdparty/sha1/sha1.cpp" typedef unsigned char BitSequence; typedef unsigned long long DataLength; @@ -124,8 +128,6 @@ static int SHA384_512AddLength(SHA512Context *context, unsigned int length); #undef uint68_t #undef int_least16_t -#include - static inline int SHA224_256AddLength(SHA256Context *context, unsigned int length) { QT_PREPEND_NAMESPACE(quint32) addTemp; @@ -136,6 +138,7 @@ static inline int SHA384_512AddLength(SHA512Context *context, unsigned int lengt QT_PREPEND_NAMESPACE(quint64) addTemp; return SHA384_512AddLengthM(context, length); } +#endif // QT_CRYPTOGRAPHICHASH_ONLY_SHA1 QT_BEGIN_NAMESPACE @@ -144,14 +147,16 @@ class QCryptographicHashPrivate public: QCryptographicHash::Algorithm method; union { + Sha1State sha1Context; +#ifndef QT_CRYPTOGRAPHICHASH_ONLY_SHA1 MD5Context md5Context; md4_context md4Context; - Sha1State sha1Context; SHA224Context sha224Context; SHA256Context sha256Context; SHA384Context sha384Context; SHA512Context sha512Context; SHA3Context sha3Context; +#endif }; QByteArray result; }; @@ -212,15 +217,21 @@ QCryptographicHash::~QCryptographicHash() void QCryptographicHash::reset() { switch (d->method) { + case Sha1: + sha1InitState(&d->sha1Context); + break; +#ifdef QT_CRYPTOGRAPHICHASH_ONLY_SHA1 + default: + Q_ASSERT_X(false, "QCryptographicHash", "Method not compiled in"); + Q_UNREACHABLE(); + break; +#else case Md4: md4_init(&d->md4Context); break; case Md5: MD5Init(&d->md5Context); break; - case Sha1: - sha1InitState(&d->sha1Context); - break; case Sha224: SHA224Reset(&d->sha224Context); break; @@ -245,6 +256,7 @@ void QCryptographicHash::reset() case Sha3_512: sha3Init(&d->sha3Context, 512); break; +#endif } d->result.clear(); } @@ -256,15 +268,21 @@ void QCryptographicHash::reset() void QCryptographicHash::addData(const char *data, int length) { switch (d->method) { + case Sha1: + sha1Update(&d->sha1Context, (const unsigned char *)data, length); + break; +#ifdef QT_CRYPTOGRAPHICHASH_ONLY_SHA1 + default: + Q_ASSERT_X(false, "QCryptographicHash", "Method not compiled in"); + Q_UNREACHABLE(); + break; +#else case Md4: md4_update(&d->md4Context, (const unsigned char *)data, length); break; case Md5: MD5Update(&d->md5Context, (const unsigned char *)data, length); break; - case Sha1: - sha1Update(&d->sha1Context, (const unsigned char *)data, length); - break; case Sha224: SHA224Input(&d->sha224Context, reinterpret_cast(data), length); break; @@ -289,6 +307,7 @@ void QCryptographicHash::addData(const char *data, int length) case Sha3_512: sha3Update(&d->sha3Context, reinterpret_cast(data), length*8); break; +#endif } d->result.clear(); } @@ -335,6 +354,19 @@ QByteArray QCryptographicHash::result() const return d->result; switch (d->method) { + case Sha1: { + Sha1State copy = d->sha1Context; + d->result.resize(20); + sha1FinalizeState(©); + sha1ToHash(©, (unsigned char *)d->result.data()); + break; + } +#ifdef QT_CRYPTOGRAPHICHASH_ONLY_SHA1 + default: + Q_ASSERT_X(false, "QCryptographicHash", "Method not compiled in"); + Q_UNREACHABLE(); + break; +#else case Md4: { md4_context copy = d->md4Context; d->result.resize(MD4_RESULTLEN); @@ -347,13 +379,6 @@ QByteArray QCryptographicHash::result() const MD5Final(©, (unsigned char *)d->result.data()); break; } - case Sha1: { - Sha1State copy = d->sha1Context; - d->result.resize(20); - sha1FinalizeState(©); - sha1ToHash(©, (unsigned char *)d->result.data()); - break; - } case Sha224: { SHA224Context copy = d->sha224Context; d->result.resize(SHA224HashSize); @@ -402,6 +427,7 @@ QByteArray QCryptographicHash::result() const sha3Final(©, reinterpret_cast(d->result.data())); break; } +#endif } return d->result; } -- cgit v1.2.3 From 996db96d5eb4927a130605e8c1820d7e1b303191 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Tue, 26 Feb 2013 12:41:59 +0200 Subject: Fix QString::toUcs4() returns incorrectly resized QVector ...when the string contains surrogate code points. Task-number: QTBUG-25536 Change-Id: I07251fee641c14f33175678768ddbe551dbe2bb1 Reviewed-by: Thiago Macieira --- src/corelib/tools/qstring.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index bbe7628d38..3089cfef8b 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -966,20 +966,21 @@ const QString::Null QString::null = { }; \sa utf16(), toLatin1(), toUtf8(), toLocal8Bit() */ -// ### replace with QCharIterator int QString::toUcs4_helper(const ushort *uc, int length, uint *out) { int i = 0; - for (; i < length; ++i) { - uint u = uc[i]; - if (QChar::isHighSurrogate(u) && i + 1 < length) { - ushort low = uc[i+1]; + const ushort *const e = uc + length; + while (uc < e) { + uint u = *uc; + if (QChar::isHighSurrogate(u) && uc + 1 < e) { + ushort low = uc[1]; if (QChar::isLowSurrogate(low)) { - ++i; + ++uc; u = QChar::surrogateToUcs4(u, low); } } - *out++ = u; + out[i++] = u; + ++uc; } return i; } -- cgit v1.2.3 From d93b2ef968f70fe2dd66f0879cc13ad4170e8553 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 22 Dec 2012 13:10:53 -0800 Subject: Mark all qtbase headers that aren't clean QtCore has a few headers that, though public, aren't meant to be included directly. Those are the atomic headers, the three _impl.h headers and qt_windows.h. QtGui includes two OpenGL headers that don't compile on their own. Other libraries should not have headers like that (but they do, something we need to fix eventually). Change-Id: I55e4eb057748f47df927ee618f9409acbc189cc1 Reviewed-by: Sean Harmer Reviewed-by: Gunnar Sletta Reviewed-by: Thiago Macieira --- src/corelib/tools/qsharedpointer_impl.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h index 3121bcdf40..5e30cf3ecb 100644 --- a/src/corelib/tools/qsharedpointer_impl.h +++ b/src/corelib/tools/qsharedpointer_impl.h @@ -45,6 +45,11 @@ #error Do not include qsharedpointer_impl.h directly #endif +#if 0 +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + #if 0 // These macros are duplicated here to make syncqt not complain a about // this header, as we have a "qt_sync_stop_processing" below, which in turn -- cgit v1.2.3 From 2f31bbd9ccd4d6e7e6ed1dd89ab5648f69a2e8b4 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Mon, 4 Mar 2013 10:02:56 +0200 Subject: Fix potential issue in QTBF itemization code Since 5.0, script is QChar::Script which isn't of 1:1 mapping to HB_Script Change-Id: I2d88f929d7d3c3c994076a4e92ea22370962c41c Reviewed-by: Lars Knoll --- src/corelib/tools/qunicodetools.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qunicodetools.cpp b/src/corelib/tools/qunicodetools.cpp index 0181e765f7..01aa1c4d52 100644 --- a/src/corelib/tools/qunicodetools.cpp +++ b/src/corelib/tools/qunicodetools.cpp @@ -611,7 +611,7 @@ Q_CORE_EXPORT void initCharAttributes(const ushort *string, int length, scriptItems.reserve(numItems); int start = 0; for (int i = start + 1; i < numItems; ++i) { - if (items[i].script == items[start].script) + if (script_to_hbscript(items[i].script) == script_to_hbscript(items[start].script)) continue; HB_ScriptItem item; item.pos = items[start].position; -- cgit v1.2.3 From 97fcf3bc987a18f32233fea550eb4a5a22e2b822 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Mon, 4 Mar 2013 10:16:42 +0100 Subject: Introducing the Qt Android port MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Based on the Necessitas project by Bogdan Vatra. Contributors to the Qt5 project: BogDan Vatra Eskil Abrahamsen Blomfeldt hjk Oswald Buddenhagen Paul Olav Tvete Robin Burchell Samuel Rødal Yoann Lopes The full history of the Qt5 port can be found in refs/old-heads/android, SHA-1 249ca9ca2c7d876b91b31df9434dde47f9065d0d Change-Id: Iff1a7b2dbb707c986f2639e65e39ed8f22430120 Reviewed-by: Oswald Buddenhagen Reviewed-by: Lars Knoll --- src/corelib/tools/qstring.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index d152e6795e..ac49bdcdf6 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -49,7 +49,7 @@ #include -#if defined(Q_OS_LINUX_ANDROID) +#if defined(Q_OS_ANDROID) // std::wstring is disabled on android's glibc, as bionic lacks certain features // that libstdc++ checks for (like mbcslen). namespace std -- cgit v1.2.3 From b1c3f71a7b1c31a1995d86a07f7113fad0468ac5 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Tue, 5 Mar 2013 01:12:23 +0200 Subject: QLocale: Add some more languages and scripts Change-Id: Iab23128c1567974154cdcce7412b2e1468bb8462 Reviewed-by: Lars Knoll --- src/corelib/tools/qlocale.h | 125 +++++- src/corelib/tools/qlocale.qdoc | 149 +++++++- src/corelib/tools/qlocale_data_p.h | 751 ++++++++++++++++++++++++++++++------- 3 files changed, 869 insertions(+), 156 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qlocale.h b/src/corelib/tools/qlocale.h index f7f30ea0d5..6199cdb19b 100644 --- a/src/corelib/tools/qlocale.h +++ b/src/corelib/tools/qlocale.h @@ -206,7 +206,7 @@ public: Turkish = 125, Turkmen = 126, Tahitian = 127, - Uigur = 128, + Uighur = 128, Ukrainian = 129, Urdu = 130, Uzbek = 131, @@ -339,6 +339,57 @@ public: Kako = 258, Meta = 259, Ngiemboon = 260, + Aragonese = 261, + Akkadian = 262, + AncientEgyptian = 263, + AncientGreek = 264, + Aramaic = 265, + Balinese = 266, + Bamun = 267, + BatakToba = 268, + Buginese = 269, + Buhid = 270, + Carian = 271, + Chakma = 272, + ClassicalMandaic = 273, + Coptic = 274, + Dogri = 275, + EasternCham = 276, + EasternKayah = 277, + Etruscan = 278, + Gothic = 279, + Hanunoo = 280, + Ingush = 281, + LargeFloweryMiao = 282, + Lepcha = 283, + Limbu = 284, + Lisu = 285, + Lu = 286, + Lycian = 287, + Lydian = 288, + Mandingo = 289, + Manipuri = 290, + Meroitic = 291, + NorthernThai = 292, + OldIrish = 293, + OldNorse = 294, + OldPersian = 295, + OldTurkish = 296, + Pahlavi = 297, + Parthian = 298, + Phoenician = 299, + PrakritLanguage = 300, + Rejang = 301, + Sabaean = 302, + Samaritan = 303, + Santali = 304, + Saurashtra = 305, + Sora = 306, + Sylheti = 307, + Tagbanwa = 308, + TaiDam = 309, + TaiNua = 310, + Ugaritic = 311, Norwegian = NorwegianBokmal, Moldavian = Romanian, SerboCroatian = Serbian, @@ -352,7 +403,8 @@ public: RhaetoRomance = Romansh, Chewa = Nyanja, Frisian = WesternFrisian, - LastLanguage = Ngiemboon + Uigur = Uighur, + LastLanguage = Ugaritic }; enum Script { @@ -392,9 +444,76 @@ public: SyriacScript = 33, YiScript = 34, VaiScript = 35, + AvestanScript = 36, + BalineseScript = 37, + BamumScript = 38, + BatakScript = 39, + BopomofoScript = 40, + BrahmiScript = 41, + BugineseScript = 42, + BuhidScript = 43, + CanadianAboriginalScript = 44, + CarianScript = 45, + ChakmaScript = 46, + ChamScript = 47, + CopticScript = 48, + CypriotScript = 49, + EgyptianHieroglyphsScript = 50, + FraserScript = 51, + GlagoliticScript = 52, + GothicScript = 53, + HanScript = 54, + HangulScript = 55, + HanunooScript = 56, + ImperialAramaicScript = 57, + InscriptionalPahlaviScript = 58, + InscriptionalParthianScript = 59, + JavaneseScript = 60, + KaithiScript = 61, + KatakanaScript = 62, + KayahLiScript = 63, + KharoshthiScript = 64, + LannaScript = 65, + LepchaScript = 66, + LimbuScript = 67, + LinearBScript = 68, + LycianScript = 69, + LydianScript = 70, + MandaeanScript = 71, + MeiteiMayekScript = 72, + MeroiticScript = 73, + MeroiticCursiveScript = 74, + NkoScript = 75, + NewTaiLueScript = 76, + OghamScript = 77, + OlChikiScript = 78, + OldItalicScript = 79, + OldPersianScript = 80, + OldSouthArabianScript = 81, + OrkhonScript = 82, + OsmanyaScript = 83, + PhagsPaScript = 84, + PhoenicianScript = 85, + PollardPhoneticScript = 86, + RejangScript = 87, + RunicScript = 88, + SamaritanScript = 89, + SaurashtraScript = 90, + SharadaScript = 91, + ShavianScript = 92, + SoraSompengScript = 93, + CuneiformScript = 94, + SundaneseScript = 95, + SylotiNagriScript = 96, + TagalogScript = 97, + TagbanwaScript = 98, + TaiLeScript = 99, + TaiVietScript = 100, + TakriScript = 101, + UgariticScript = 102, SimplifiedChineseScript = SimplifiedHanScript, TraditionalChineseScript = TraditionalHanScript, - LastScript = VaiScript + LastScript = UgariticScript }; enum Country { AnyCountry = 0, diff --git a/src/corelib/tools/qlocale.qdoc b/src/corelib/tools/qlocale.qdoc index 8c76833fc1..770c72e476 100644 --- a/src/corelib/tools/qlocale.qdoc +++ b/src/corelib/tools/qlocale.qdoc @@ -289,7 +289,8 @@ \value Turkish \value Turkmen \value Twi Obsolete, please use Akan - \value Uigur + \value Uighur + \value Uigur Obsolete, please use Uighur \value Ukrainian \value Urdu \value Uzbek @@ -401,6 +402,57 @@ \value Kako \value Meta \value Ngiemboon + \value Aragonese + \value Akkadian + \value AncientEgyptian + \value AncientGreek + \value Aramaic + \value Balinese + \value Bamun + \value BatakToba + \value Buginese + \value Buhid + \value Carian + \value Chakma + \value ClassicalMandaic + \value Coptic + \value Dogri + \value EasternCham + \value EasternKayah + \value Etruscan + \value Gothic + \value Hanunoo + \value Ingush + \value LargeFloweryMiao + \value Lepcha + \value Limbu + \value Lisu + \value Lu + \value Lycian + \value Lydian + \value Mandingo + \value Manipuri + \value Meroitic + \value NorthernThai + \value OldIrish + \value OldNorse + \value OldPersian + \value OldTurkish + \value Pahlavi + \value Parthian + \value Phoenician + \value PrakritLanguage + \value Rejang + \value Sabaean + \value Samaritan + \value Santali + \value Saurashtra + \value Sora + \value Sylheti + \value Tagbanwa + \value TaiDam + \value TaiNua + \value Ugaritic \omitvalue LastLanguage \sa language(), languageToString() @@ -686,42 +738,109 @@ \value AnyScript \value ArabicScript - \value CyrillicScript - \value DeseretScript - \value GurmukhiScript - \value SimplifiedHanScript same as SimplifiedChineseScript - \value SimplifiedChineseScript same as SimplifiedHanScript - \value TraditionalHanScript same as TraditionalChineseScript - \value TraditionalChineseScript same as TraditionalHanScript - \value LatinScript - \value MongolianScript - \value TifinaghScript \value ArmenianScript + \value AvestanScript + \value BalineseScript + \value BamumScript + \value BatakScript \value BengaliScript + \value BopomofoScript + \value BrahmiScript + \value BugineseScript + \value BuhidScript + \value CanadianAboriginalScript + \value CarianScript + \value ChakmaScript + \value ChamScript \value CherokeeScript + \value CopticScript + \value CypriotScript + \value CyrillicScript + \value DeseretScript \value DevanagariScript + \value EgyptianHieroglyphsScript \value EthiopicScript + \value FraserScript \value GeorgianScript + \value GlagoliticScript + \value GothicScript \value GreekScript \value GujaratiScript + \value GurmukhiScript + \value HanScript + \value HangulScript + \value HanunooScript \value HebrewScript + \value ImperialAramaicScript + \value InscriptionalPahlaviScript + \value InscriptionalParthianScript \value JapaneseScript - \value KhmerScript + \value JavaneseScript + \value KaithiScript \value KannadaScript + \value KatakanaScript + \value KayahLiScript + \value KharoshthiScript + \value KhmerScript \value KoreanScript + \value LannaScript \value LaoScript + \value LatinScript + \value LepchaScript + \value LimbuScript + \value LinearBScript + \value LycianScript + \value LydianScript \value MalayalamScript + \value MandaeanScript + \value MeiteiMayekScript + \value MeroiticScript + \value MeroiticCursiveScript + \value MongolianScript \value MyanmarScript + \value NkoScript + \value NewTaiLueScript + \value OghamScript + \value OlChikiScript + \value OldItalicScript + \value OldPersianScript + \value OldSouthArabianScript \value OriyaScript + \value OrkhonScript + \value OsmanyaScript + \value PhagsPaScript + \value PhoenicianScript + \value PollardPhoneticScript + \value RejangScript + \value RunicScript + \value SamaritanScript + \value SaurashtraScript + \value SharadaScript + \value ShavianScript + \value SimplifiedHanScript same as SimplifiedChineseScript + \value SimplifiedChineseScript same as SimplifiedHanScript + \value SinhalaScript + \value SoraSompengScript + \value CuneiformScript + \value SundaneseScript + \value SylotiNagriScript + \value SyriacScript + \value TagalogScript + \value TagbanwaScript + \value TaiLeScript + \value TaiVietScript + \value TakriScript \value TamilScript \value TeluguScript \value ThaanaScript \value ThaiScript \value TibetanScript - \value SinhalaScript - \value SyriacScript - \value YiScript + \value TifinaghScript + \value TraditionalHanScript same as TraditionalChineseScript + \value TraditionalChineseScript same as TraditionalHanScript + \value UgariticScript \value VaiScript + \value YiScript \omitvalue LastScript \sa script(), scriptToString(), languageToString() diff --git a/src/corelib/tools/qlocale_data_p.h b/src/corelib/tools/qlocale_data_p.h index c7e9e83dbd..1f1a6ef4c7 100644 --- a/src/corelib/tools/qlocale_data_p.h +++ b/src/corelib/tools/qlocale_data_p.h @@ -77,7 +77,7 @@ static const int ImperialMeasurementSystemsCount = // GENERATED PART STARTS HERE /* - This part of the file was generated on 2012-11-23 from the + This part of the file was generated on 2012-12-19 from the Common Locale Data Repository v22.1 http://www.unicode.org/cldr/ @@ -172,6 +172,7 @@ static const QLocaleId likely_subtags[] = { { 52, 0, 0 }, { 52, 7, 101 }, // id -> id_Latn_ID { 149, 0, 0 }, { 149, 7, 157 }, // ig -> ig_Latn_NG { 168, 0, 0 }, { 168, 34, 44 }, // ii -> ii_Yiii_CN + { 281, 0, 0 }, { 281, 2, 178 }, // inh -> inh_Cyrl_RU { 51, 0, 0 }, { 51, 7, 99 }, // is -> is_Latn_IS { 58, 0, 0 }, { 58, 7, 106 }, // it -> it_Latn_IT { 59, 0, 0 }, { 59, 19, 108 }, // ja -> ja_Jpan_JP @@ -273,6 +274,7 @@ static const QLocaleId likely_subtags[] = { { 99, 0, 0 }, { 99, 13, 100 }, // sa -> sa_Deva_IN { 248, 0, 0 }, { 248, 2, 178 }, // sah -> sah_Cyrl_RU { 179, 0, 0 }, { 179, 7, 111 }, // saq -> saq_Latn_KE + { 304, 0, 0 }, { 304, 7, 100 }, // sat -> sat_Latn_IN { 249, 0, 0 }, { 249, 7, 210 }, // sbp -> sbp_Latn_TZ { 105, 0, 0 }, { 105, 1, 100 }, // sd -> sd_Arab_IN { 173, 0, 0 }, { 173, 7, 161 }, // se -> se_Latn_NO @@ -334,7 +336,9 @@ static const QLocaleId likely_subtags[] = { { 0, 1, 100 }, { 130, 1, 100 }, // und_Arab_IN -> ur_Arab_IN { 0, 1, 157 }, { 47, 1, 157 }, // und_Arab_NG -> ha_Arab_NG { 0, 1, 163 }, { 130, 1, 163 }, // und_Arab_PK -> ur_Arab_PK + { 0, 57, 0 }, { 265, 57, 102 }, // und_Armi -> arc_Armi_IR { 0, 10, 0 }, { 9, 10, 11 }, // und_Armn -> hy_Armn_AM + { 0, 36, 0 }, { 255, 36, 102 }, // und_Avst -> ae_Avst_IR { 0, 0, 27 }, { 142, 7, 27 }, // und_BA -> bs_Latn_BA { 0, 0, 18 }, { 15, 11, 18 }, // und_BD -> bn_Beng_BD { 0, 0, 21 }, { 30, 7, 21 }, // und_BE -> nl_Latn_BE @@ -349,7 +353,14 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 30 }, { 91, 7, 30 }, // und_BR -> pt_Latn_BR { 0, 0, 25 }, { 16, 31, 25 }, // und_BT -> dz_Tibt_BT { 0, 0, 20 }, { 22, 2, 20 }, // und_BY -> be_Cyrl_BY + { 0, 37, 0 }, { 266, 37, 101 }, // und_Bali -> ban_Bali_ID + { 0, 38, 0 }, { 267, 38, 37 }, // und_Bamu -> bax_Bamu_CM + { 0, 39, 0 }, { 268, 39, 101 }, // und_Batk -> bbc_Batk_ID { 0, 11, 0 }, { 15, 11, 18 }, // und_Beng -> bn_Beng_BD + { 0, 40, 0 }, { 25, 40, 208 }, // und_Bopo -> zh_Bopo_TW + { 0, 41, 0 }, { 300, 41, 100 }, // und_Brah -> pra_Brah_IN + { 0, 42, 0 }, { 269, 42, 101 }, // und_Bugi -> bug_Bugi_ID + { 0, 43, 0 }, { 270, 43, 170 }, // und_Buhd -> bku_Buhd_PH { 0, 0, 49 }, { 113, 7, 49 }, // und_CD -> sw_Latn_CD { 0, 0, 41 }, { 37, 7, 41 }, // und_CF -> fr_Latn_CF { 0, 0, 50 }, { 37, 7, 50 }, // und_CG -> fr_Latn_CG @@ -365,7 +376,13 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 39 }, { 91, 7, 39 }, // und_CV -> pt_Latn_CV { 0, 0, 56 }, { 43, 16, 56 }, // und_CY -> el_Grek_CY { 0, 0, 57 }, { 28, 7, 57 }, // und_CZ -> cs_Latn_CZ + { 0, 46, 0 }, { 272, 46, 18 }, // und_Cakm -> ccp_Cakm_BD + { 0, 44, 0 }, { 221, 44, 38 }, // und_Cans -> cr_Cans_CA + { 0, 45, 0 }, { 271, 45, 217 }, // und_Cari -> xcr_Cari_TR + { 0, 47, 0 }, { 276, 47, 232 }, // und_Cham -> cjm_Cham_VN { 0, 12, 0 }, { 190, 12, 225 }, // und_Cher -> chr_Cher_US + { 0, 48, 0 }, { 274, 48, 64 }, // und_Copt -> cop_Copt_EG + { 0, 49, 0 }, { 264, 49, 56 }, // und_Cprt -> grc_Cprt_CY { 0, 2, 0 }, { 96, 2, 178 }, // und_Cyrl -> ru_Cyrl_RU { 0, 2, 27 }, { 100, 2, 27 }, // und_Cyrl_BA -> sr_Cyrl_BA { 0, 2, 81 }, { 2, 2, 81 }, // und_Cyrl_GE -> ab_Cyrl_GE @@ -382,6 +399,7 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 236 }, { 8, 1, 236 }, // und_EH -> ar_Arab_EH { 0, 0, 67 }, { 122, 14, 67 }, // und_ER -> ti_Ethi_ER { 0, 0, 197 }, { 111, 7, 197 }, // und_ES -> es_Latn_ES + { 0, 50, 0 }, { 263, 50, 64 }, // und_Egyp -> egy_Egyp_EG { 0, 14, 0 }, { 7, 14, 69 }, // und_Ethi -> am_Ethi_ET { 0, 0, 73 }, { 36, 7, 73 }, // und_FI -> fi_Latn_FI { 0, 0, 71 }, { 34, 7, 71 }, // und_FO -> fo_Latn_FO @@ -398,6 +416,8 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 90 }, { 111, 7, 90 }, // und_GT -> es_Latn_GT { 0, 0, 92 }, { 91, 7, 92 }, // und_GW -> pt_Latn_GW { 0, 15, 0 }, { 41, 15, 81 }, // und_Geor -> ka_Geor_GE + { 0, 52, 0 }, { 219, 52, 33 }, // und_Glag -> cu_Glag_BG + { 0, 53, 0 }, { 279, 53, 222 }, // und_Goth -> got_Goth_UA { 0, 16, 0 }, { 43, 16, 85 }, // und_Grek -> el_Grek_GR { 0, 17, 0 }, { 46, 17, 100 }, // und_Gujr -> gu_Gujr_IN { 0, 4, 0 }, { 92, 4, 100 }, // und_Guru -> pa_Guru_IN @@ -406,6 +426,9 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 54 }, { 27, 7, 54 }, // und_HR -> hr_Latn_HR { 0, 0, 94 }, { 222, 7, 94 }, // und_HT -> ht_Latn_HT { 0, 0, 98 }, { 50, 7, 98 }, // und_HU -> hu_Latn_HU + { 0, 55, 0 }, { 66, 55, 114 }, // und_Hang -> ko_Hang_KR + { 0, 54, 0 }, { 25, 5, 44 }, // und_Hani -> zh_Hans_CN + { 0, 56, 0 }, { 280, 56, 170 }, // und_Hano -> hnn_Hano_PH { 0, 5, 0 }, { 25, 5, 44 }, // und_Hans -> zh_Hans_CN { 0, 6, 0 }, { 25, 6, 208 }, // und_Hant -> zh_Hant_TW { 0, 18, 0 }, { 48, 18, 105 }, // und_Hebr -> he_Hebr_IL @@ -417,8 +440,10 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 102 }, { 89, 1, 102 }, // und_IR -> fa_Arab_IR { 0, 0, 99 }, { 51, 7, 99 }, // und_IS -> is_Latn_IS { 0, 0, 106 }, { 58, 7, 106 }, // und_IT -> it_Latn_IT + { 0, 79, 0 }, { 278, 79, 106 }, // und_Ital -> ett_Ital_IT { 0, 0, 109 }, { 8, 1, 109 }, // und_JO -> ar_Arab_JO { 0, 0, 108 }, { 59, 19, 108 }, // und_JP -> ja_Jpan_JP + { 0, 60, 0 }, { 60, 60, 101 }, // und_Java -> jv_Java_ID { 0, 19, 0 }, { 59, 19, 108 }, // und_Jpan -> ja_Jpan_JP { 0, 0, 116 }, { 65, 2, 116 }, // und_KG -> ky_Cyrl_KG { 0, 0, 36 }, { 23, 20, 36 }, // und_KH -> km_Khmr_KH @@ -427,9 +452,13 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 114 }, { 66, 22, 114 }, // und_KR -> ko_Kore_KR { 0, 0, 115 }, { 8, 1, 115 }, // und_KW -> ar_Arab_KW { 0, 0, 110 }, { 96, 2, 110 }, // und_KZ -> ru_Cyrl_KZ + { 0, 63, 0 }, { 277, 63, 147 }, // und_Kali -> eky_Kali_MM + { 0, 62, 0 }, { 59, 62, 108 }, // und_Kana -> ja_Kana_JP + { 0, 64, 0 }, { 300, 64, 163 }, // und_Khar -> pra_Khar_PK { 0, 20, 0 }, { 23, 20, 36 }, // und_Khmr -> km_Khmr_KH { 0, 21, 0 }, { 61, 21, 100 }, // und_Knda -> kn_Knda_IN { 0, 22, 0 }, { 66, 22, 114 }, // und_Kore -> ko_Kore_KR + { 0, 61, 0 }, { 17, 61, 100 }, // und_Kthi -> bh_Kthi_IN { 0, 0, 117 }, { 69, 23, 117 }, // und_LA -> lo_Laoo_LA { 0, 0, 119 }, { 8, 1, 119 }, // und_LB -> ar_Arab_LB { 0, 0, 123 }, { 42, 7, 123 }, // und_LI -> de_Latn_LI @@ -439,6 +468,7 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 125 }, { 37, 7, 125 }, // und_LU -> fr_Latn_LU { 0, 0, 118 }, { 71, 7, 118 }, // und_LV -> lv_Latn_LV { 0, 0, 122 }, { 8, 1, 122 }, // und_LY -> ar_Arab_LY + { 0, 65, 0 }, { 292, 65, 211 }, // und_Lana -> nod_Lana_TH { 0, 23, 0 }, { 69, 23, 117 }, // und_Laoo -> lo_Laoo_LA { 0, 7, 44 }, { 139, 7, 44 }, // und_Latn_CN -> za_Latn_CN { 0, 7, 56 }, { 125, 7, 56 }, // und_Latn_CY -> tr_Latn_CY @@ -450,6 +480,12 @@ static const QLocaleId likely_subtags[] = { { 0, 7, 136 }, { 37, 7, 136 }, // und_Latn_MR -> fr_Latn_MR { 0, 7, 207 }, { 37, 7, 207 }, // und_Latn_SY -> fr_Latn_SY { 0, 7, 216 }, { 37, 7, 216 }, // und_Latn_TN -> fr_Latn_TN + { 0, 66, 0 }, { 283, 66, 100 }, // und_Lepc -> lep_Lepc_IN + { 0, 67, 0 }, { 284, 67, 100 }, // und_Limb -> lif_Limb_IN + { 0, 68, 0 }, { 264, 68, 85 }, // und_Linb -> grc_Linb_GR + { 0, 51, 0 }, { 285, 51, 44 }, // und_Lisu -> lis_Lisu_CN + { 0, 69, 0 }, { 287, 69, 217 }, // und_Lyci -> xlc_Lyci_TR + { 0, 70, 0 }, { 288, 70, 217 }, // und_Lydi -> xld_Lydi_TR { 0, 0, 145 }, { 8, 1, 145 }, // und_MA -> ar_Arab_MA { 0, 0, 142 }, { 37, 7, 142 }, // und_MC -> fr_Latn_MC { 0, 0, 141 }, { 95, 7, 141 }, // und_MD -> ro_Latn_MD @@ -469,8 +505,12 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 139 }, { 111, 7, 139 }, // und_MX -> es_Latn_MX { 0, 0, 130 }, { 76, 7, 130 }, // und_MY -> ms_Latn_MY { 0, 0, 146 }, { 91, 7, 146 }, // und_MZ -> pt_Latn_MZ + { 0, 71, 0 }, { 273, 71, 102 }, // und_Mand -> myz_Mand_IR + { 0, 74, 0 }, { 291, 74, 201 }, // und_Merc -> xmr_Merc_SD + { 0, 73, 0 }, { 291, 73, 201 }, // und_Mero -> xmr_Mero_SD { 0, 24, 0 }, { 77, 24, 100 }, // und_Mlym -> ml_Mlym_IN { 0, 8, 0 }, { 82, 8, 44 }, // und_Mong -> mn_Mong_CN + { 0, 72, 0 }, { 290, 72, 100 }, // und_Mtei -> mni_Mtei_IN { 0, 25, 0 }, { 21, 25, 147 }, // und_Mymr -> my_Mymr_MM { 0, 0, 148 }, { 228, 7, 148 }, // und_NA -> kj_Latn_NA { 0, 0, 153 }, { 37, 7, 153 }, // und_NC -> fr_Latn_NC @@ -479,8 +519,13 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 151 }, { 30, 7, 151 }, // und_NL -> nl_Latn_NL { 0, 0, 161 }, { 85, 7, 161 }, // und_NO -> nb_Latn_NO { 0, 0, 150 }, { 84, 13, 150 }, // und_NP -> ne_Deva_NP + { 0, 75, 0 }, { 289, 75, 91 }, // und_Nkoo -> man_Nkoo_GN { 0, 0, 162 }, { 8, 1, 162 }, // und_OM -> ar_Arab_OM + { 0, 77, 0 }, { 293, 77, 104 }, // und_Ogam -> sga_Ogam_IE + { 0, 78, 0 }, { 304, 78, 100 }, // und_Olck -> sat_Olck_IN + { 0, 82, 0 }, { 296, 82, 143 }, // und_Orkh -> otk_Orkh_MN { 0, 26, 0 }, { 87, 26, 100 }, // und_Orya -> or_Orya_IN + { 0, 83, 0 }, { 110, 83, 194 }, // und_Osma -> so_Osma_SO { 0, 0, 166 }, { 111, 7, 166 }, // und_PA -> es_Latn_PA { 0, 0, 169 }, { 111, 7, 169 }, // und_PE -> es_Latn_PE { 0, 0, 77 }, { 37, 7, 77 }, // und_PF -> fr_Latn_PF @@ -492,12 +537,18 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 165 }, { 8, 1, 165 }, // und_PS -> ar_Arab_PS { 0, 0, 173 }, { 91, 7, 173 }, // und_PT -> pt_Latn_PT { 0, 0, 168 }, { 45, 7, 168 }, // und_PY -> gn_Latn_PY + { 0, 58, 0 }, { 297, 58, 102 }, // und_Phli -> pal_Phli_IR + { 0, 85, 0 }, { 299, 85, 119 }, // und_Phnx -> phn_Phnx_LB + { 0, 86, 0 }, { 282, 86, 44 }, // und_Plrd -> hmd_Plrd_CN + { 0, 59, 0 }, { 298, 59, 102 }, // und_Prti -> xpr_Prti_IR { 0, 0, 175 }, { 8, 1, 175 }, // und_QA -> ar_Arab_QA { 0, 0, 176 }, { 37, 7, 176 }, // und_RE -> fr_Latn_RE { 0, 0, 177 }, { 95, 7, 177 }, // und_RO -> ro_Latn_RO { 0, 0, 243 }, { 100, 2, 243 }, // und_RS -> sr_Cyrl_RS { 0, 0, 178 }, { 96, 2, 178 }, // und_RU -> ru_Cyrl_RU { 0, 0, 179 }, { 64, 7, 179 }, // und_RW -> rw_Latn_RW + { 0, 87, 0 }, { 301, 87, 101 }, // und_Rjng -> rej_Rjng_ID + { 0, 88, 0 }, { 294, 88, 205 }, // und_Runr -> non_Runr_SE { 0, 0, 186 }, { 8, 1, 186 }, // und_SA -> ar_Arab_SA { 0, 0, 188 }, { 37, 7, 188 }, // und_SC -> fr_Latn_SC { 0, 0, 201 }, { 8, 1, 201 }, // und_SD -> ar_Arab_SD @@ -512,7 +563,16 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 185 }, { 91, 7, 185 }, // und_ST -> pt_Latn_ST { 0, 0, 65 }, { 111, 7, 65 }, // und_SV -> es_Latn_SV { 0, 0, 207 }, { 8, 1, 207 }, // und_SY -> ar_Arab_SY + { 0, 89, 0 }, { 303, 89, 105 }, // und_Samr -> smp_Samr_IL + { 0, 81, 0 }, { 302, 81, 237 }, // und_Sarb -> xsa_Sarb_YE + { 0, 90, 0 }, { 305, 90, 100 }, // und_Saur -> saz_Saur_IN + { 0, 92, 0 }, { 31, 92, 224 }, // und_Shaw -> en_Shaw_GB + { 0, 91, 0 }, { 99, 91, 100 }, // und_Shrd -> sa_Shrd_IN { 0, 32, 0 }, { 106, 32, 198 }, // und_Sinh -> si_Sinh_LK + { 0, 93, 0 }, { 306, 93, 100 }, // und_Sora -> srb_Sora_IN + { 0, 95, 0 }, { 112, 95, 101 }, // und_Sund -> su_Sund_ID + { 0, 96, 0 }, { 307, 96, 18 }, // und_Sylo -> syl_Sylo_BD + { 0, 33, 0 }, { 151, 33, 207 }, // und_Syrc -> syr_Syrc_SY { 0, 0, 42 }, { 37, 7, 42 }, // und_TD -> fr_Latn_TD { 0, 0, 212 }, { 37, 7, 212 }, // und_TG -> fr_Latn_TG { 0, 0, 211 }, { 120, 30, 211 }, // und_TH -> th_Thai_TH @@ -524,9 +584,15 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 217 }, { 125, 7, 217 }, // und_TR -> tr_Latn_TR { 0, 0, 208 }, { 25, 6, 208 }, // und_TW -> zh_Hant_TW { 0, 0, 210 }, { 113, 7, 210 }, // und_TZ -> sw_Latn_TZ + { 0, 98, 0 }, { 308, 98, 170 }, // und_Tagb -> tbw_Tagb_PH + { 0, 101, 0 }, { 275, 101, 100 }, // und_Takr -> doi_Takr_IN + { 0, 99, 0 }, { 310, 99, 44 }, // und_Tale -> tdd_Tale_CN + { 0, 76, 0 }, { 286, 76, 44 }, // und_Talu -> khb_Talu_CN { 0, 27, 0 }, { 117, 27, 100 }, // und_Taml -> ta_Taml_IN + { 0, 100, 0 }, { 309, 100, 232 }, // und_Tavt -> blt_Tavt_VN { 0, 28, 0 }, { 119, 28, 100 }, // und_Telu -> te_Telu_IN { 0, 9, 0 }, { 183, 9, 216 }, // und_Tfng -> shi_Tfng_TN + { 0, 97, 0 }, { 166, 97, 170 }, // und_Tglg -> fil_Tglg_PH { 0, 29, 0 }, { 143, 29, 131 }, // und_Thaa -> dv_Thaa_MV { 0, 30, 0 }, { 120, 30, 211 }, // und_Thai -> th_Thai_TH { 0, 31, 0 }, { 121, 31, 44 }, // und_Tibt -> bo_Tibt_CN @@ -534,6 +600,7 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 221 }, { 113, 7, 221 }, // und_UG -> sw_Latn_UG { 0, 0, 227 }, { 111, 7, 227 }, // und_UY -> es_Latn_UY { 0, 0, 228 }, { 131, 2, 228 }, // und_UZ -> uz_Cyrl_UZ + { 0, 102, 0 }, { 311, 102, 207 }, // und_Ugar -> uga_Ugar_SY { 0, 0, 230 }, { 70, 7, 230 }, // und_VA -> la_Latn_VA { 0, 0, 231 }, { 111, 7, 231 }, // und_VE -> es_Latn_VE { 0, 0, 232 }, { 132, 7, 232 }, // und_VN -> vi_Latn_VN @@ -541,6 +608,8 @@ static const QLocaleId likely_subtags[] = { { 0, 35, 0 }, { 252, 35, 121 }, // und_Vaii -> vai_Vaii_LR { 0, 0, 235 }, { 37, 7, 235 }, // und_WF -> fr_Latn_WF { 0, 0, 183 }, { 97, 7, 183 }, // und_WS -> sm_Latn_WS + { 0, 80, 0 }, { 295, 80, 102 }, // und_Xpeo -> peo_Xpeo_IR + { 0, 94, 0 }, { 262, 94, 103 }, // und_Xsux -> akk_Xsux_IQ { 0, 0, 237 }, { 8, 1, 237 }, // und_YE -> ar_Arab_YE { 0, 0, 138 }, { 37, 7, 138 }, // und_YT -> fr_Latn_YT { 0, 34, 0 }, { 168, 34, 44 }, // und_Yiii -> ii_Yiii_CN @@ -563,6 +632,7 @@ static const QLocaleId likely_subtags[] = { { 139, 0, 0 }, { 139, 7, 44 }, // za -> za_Latn_CN { 25, 0, 0 }, { 25, 5, 44 }, // zh -> zh_Hans_CN { 25, 0, 97 }, { 25, 6, 97 }, // zh_HK -> zh_Hant_HK + { 25, 54, 0 }, { 25, 5, 44 }, // zh_Hani -> zh_Hans_CN { 25, 6, 0 }, { 25, 6, 208 }, // zh_Hant -> zh_Hant_TW { 25, 0, 126 }, { 25, 6, 126 }, // zh_MO -> zh_Hant_MO { 25, 0, 208 }, { 25, 6, 208 }, // zh_TW -> zh_Hant_TW @@ -698,7 +768,7 @@ static const quint16 locale_index[] = { 332, // Turkish 0, // Turkmen 0, // Tahitian - 0, // Uigur + 0, // Uighur 334, // Ukrainian 335, // Urdu 337, // Uzbek @@ -831,6 +901,57 @@ static const quint16 locale_index[] = { 435, // Kako 436, // Meta 437, // Ngiemboon + 0, // Aragonese + 0, // Akkadian + 0, // AncientEgyptian + 0, // AncientGreek + 0, // Aramaic + 0, // Balinese + 0, // Bamun + 0, // BatakToba + 0, // Buginese + 0, // Buhid + 0, // Carian + 0, // Chakma + 0, // ClassicalMandaic + 0, // Coptic + 0, // Dogri + 0, // EasternCham + 0, // EasternKayah + 0, // Etruscan + 0, // Gothic + 0, // Hanunoo + 0, // Ingush + 0, // LargeFloweryMiao + 0, // Lepcha + 0, // Limbu + 0, // Lisu + 0, // Lu + 0, // Lycian + 0, // Lydian + 0, // Mandingo + 0, // Manipuri + 0, // Meroitic + 0, // NorthernThai + 0, // OldIrish + 0, // OldNorse + 0, // OldPersian + 0, // OldTurkish + 0, // Pahlavi + 0, // Parthian + 0, // Phoenician + 0, // PrakritLanguage + 0, // Rejang + 0, // Sabaean + 0, // Samaritan + 0, // Santali + 0, // Saurashtra + 0, // Sora + 0, // Sylheti + 0, // Tagbanwa + 0, // TaiDam + 0, // TaiNua + 0, // Ugaritic 0 // trailing 0 }; @@ -5275,7 +5396,7 @@ static const char language_name_list[] = "Turkish\0" "Turkmen\0" "Tahitian\0" -"Uigur\0" +"Uighur\0" "Ukrainian\0" "Urdu\0" "Uzbek\0" @@ -5408,6 +5529,57 @@ static const char language_name_list[] = "Kako\0" "Meta\0" "Ngiemboon\0" +"Aragonese\0" +"Akkadian\0" +"AncientEgyptian\0" +"AncientGreek\0" +"Aramaic\0" +"Balinese\0" +"Bamun\0" +"BatakToba\0" +"Buginese\0" +"Buhid\0" +"Carian\0" +"Chakma\0" +"ClassicalMandaic\0" +"Coptic\0" +"Dogri\0" +"EasternCham\0" +"EasternKayah\0" +"Etruscan\0" +"Gothic\0" +"Hanunoo\0" +"Ingush\0" +"LargeFloweryMiao\0" +"Lepcha\0" +"Limbu\0" +"Lisu\0" +"Lu\0" +"Lycian\0" +"Lydian\0" +"Mandingo\0" +"Manipuri\0" +"Meroitic\0" +"NorthernThai\0" +"OldIrish\0" +"OldNorse\0" +"OldPersian\0" +"OldTurkish\0" +"Pahlavi\0" +"Parthian\0" +"Phoenician\0" +"PrakritLanguage\0" +"Rejang\0" +"Sabaean\0" +"Samaritan\0" +"Santali\0" +"Saurashtra\0" +"Sora\0" +"Sylheti\0" +"Tagbanwa\0" +"TaiDam\0" +"TaiNua\0" +"Ugaritic\0" ; static const quint16 language_name_index[] = { @@ -5539,139 +5711,190 @@ static const quint16 language_name_index[] = { 1023, // Turkish 1031, // Turkmen 1039, // Tahitian - 1048, // Uigur - 1054, // Ukrainian - 1064, // Urdu - 1069, // Uzbek - 1075, // Vietnamese - 1086, // Volapuk - 1094, // Welsh - 1100, // Wolof - 1106, // Xhosa - 1112, // Yiddish - 1120, // Yoruba - 1127, // Zhuang - 1134, // Zulu - 1139, // NorwegianNynorsk - 1156, // Bosnian - 1164, // Divehi - 1171, // Manx - 1176, // Cornish - 1184, // Akan - 1189, // Konkani - 1197, // Ga - 1200, // Igbo - 1205, // Kamba - 1211, // Syriac - 1218, // Blin - 1223, // Geez - 1228, // Koro - 1233, // Sidamo - 1240, // Atsam - 1246, // Tigre - 1252, // Jju - 1256, // Friulian - 1265, // Venda - 1271, // Ewe - 1275, // Walamo - 1282, // Hawaiian - 1291, // Tyap - 1296, // Nyanja - 1303, // Filipino - 1312, // Swiss German - 1325, // Sichuan Yi - 1336, // Kpelle - 1343, // Low German - 1354, // South Ndebele - 1368, // Northern Sotho - 1383, // Northern Sami - 1397, // Taroko - 1404, // Gusii - 1410, // Taita - 1416, // Fulah - 1422, // Kikuyu - 1429, // Samburu - 1437, // Sena - 1442, // North Ndebele - 1456, // Rombo - 1462, // Tachelhit - 1472, // Kabyle - 1479, // Nyankole - 1488, // Bena - 1493, // Vunjo - 1499, // Bambara - 1507, // Embu - 1512, // Cherokee - 1521, // Morisyen - 1530, // Makonde - 1538, // Langi - 1544, // Ganda - 1550, // Bemba - 1556, // Kabuverdianu - 1569, // Meru - 1574, // Kalenjin - 1583, // Nama - 1588, // Machame - 1596, // Colognian - 1606, // Masai - 1612, // Soga - 1617, // Luyia - 1623, // Asu - 1627, // Teso - 1632, // Saho - 1637, // Koyra Chiini - 1650, // Rwa - 1654, // Luo - 1658, // Chiga - 1664, // Central Morocco Tamazight - 1690, // Koyraboro Senni - 1706, // Shambala - 1715, // Bodo - 1720, // Avaric - 1727, // Chamorro - 1736, // Chechen - 1744, // Church - 1751, // Chuvash - 1759, // Cree - 1764, // Haitian - 1772, // Herero - 1779, // Hiri Motu - 1789, // Kanuri - 1796, // Komi - 1801, // Kongo - 1807, // Kwanyama - 1816, // Limburgish - 1827, // LubaKatanga - 1839, // Luxembourgish - 1853, // Navaho - 1860, // Ndonga - 1867, // Ojibwa - 1874, // Pali - 1879, // Walloon - 1887, // Aghem - 1893, // Basaa - 1899, // Zarma - 1905, // Duala - 1911, // JolaFonyi - 1921, // Ewondo - 1928, // Bafia - 1934, // MakhuwaMeetto - 1948, // Mundang - 1956, // Kwasio - 1963, // Nuer - 1968, // Sakha - 1974, // Sangu - 1980, // Congo Swahili - 1994, // Tasawaq - 2002, // Vai - 2006, // Walser - 2013, // Yangben - 2021, // Avestan - 2029, // Asturian - 2038, // Ngomba - 2045, // Kako - 2050, // Meta - 2055, // Ngiemboon + 1048, // Uighur + 1055, // Ukrainian + 1065, // Urdu + 1070, // Uzbek + 1076, // Vietnamese + 1087, // Volapuk + 1095, // Welsh + 1101, // Wolof + 1107, // Xhosa + 1113, // Yiddish + 1121, // Yoruba + 1128, // Zhuang + 1135, // Zulu + 1140, // NorwegianNynorsk + 1157, // Bosnian + 1165, // Divehi + 1172, // Manx + 1177, // Cornish + 1185, // Akan + 1190, // Konkani + 1198, // Ga + 1201, // Igbo + 1206, // Kamba + 1212, // Syriac + 1219, // Blin + 1224, // Geez + 1229, // Koro + 1234, // Sidamo + 1241, // Atsam + 1247, // Tigre + 1253, // Jju + 1257, // Friulian + 1266, // Venda + 1272, // Ewe + 1276, // Walamo + 1283, // Hawaiian + 1292, // Tyap + 1297, // Nyanja + 1304, // Filipino + 1313, // Swiss German + 1326, // Sichuan Yi + 1337, // Kpelle + 1344, // Low German + 1355, // South Ndebele + 1369, // Northern Sotho + 1384, // Northern Sami + 1398, // Taroko + 1405, // Gusii + 1411, // Taita + 1417, // Fulah + 1423, // Kikuyu + 1430, // Samburu + 1438, // Sena + 1443, // North Ndebele + 1457, // Rombo + 1463, // Tachelhit + 1473, // Kabyle + 1480, // Nyankole + 1489, // Bena + 1494, // Vunjo + 1500, // Bambara + 1508, // Embu + 1513, // Cherokee + 1522, // Morisyen + 1531, // Makonde + 1539, // Langi + 1545, // Ganda + 1551, // Bemba + 1557, // Kabuverdianu + 1570, // Meru + 1575, // Kalenjin + 1584, // Nama + 1589, // Machame + 1597, // Colognian + 1607, // Masai + 1613, // Soga + 1618, // Luyia + 1624, // Asu + 1628, // Teso + 1633, // Saho + 1638, // Koyra Chiini + 1651, // Rwa + 1655, // Luo + 1659, // Chiga + 1665, // Central Morocco Tamazight + 1691, // Koyraboro Senni + 1707, // Shambala + 1716, // Bodo + 1721, // Avaric + 1728, // Chamorro + 1737, // Chechen + 1745, // Church + 1752, // Chuvash + 1760, // Cree + 1765, // Haitian + 1773, // Herero + 1780, // Hiri Motu + 1790, // Kanuri + 1797, // Komi + 1802, // Kongo + 1808, // Kwanyama + 1817, // Limburgish + 1828, // LubaKatanga + 1840, // Luxembourgish + 1854, // Navaho + 1861, // Ndonga + 1868, // Ojibwa + 1875, // Pali + 1880, // Walloon + 1888, // Aghem + 1894, // Basaa + 1900, // Zarma + 1906, // Duala + 1912, // JolaFonyi + 1922, // Ewondo + 1929, // Bafia + 1935, // MakhuwaMeetto + 1949, // Mundang + 1957, // Kwasio + 1964, // Nuer + 1969, // Sakha + 1975, // Sangu + 1981, // Congo Swahili + 1995, // Tasawaq + 2003, // Vai + 2007, // Walser + 2014, // Yangben + 2022, // Avestan + 2030, // Asturian + 2039, // Ngomba + 2046, // Kako + 2051, // Meta + 2056, // Ngiemboon + 2066, // Aragonese + 2076, // Akkadian + 2085, // AncientEgyptian + 2101, // AncientGreek + 2114, // Aramaic + 2122, // Balinese + 2131, // Bamun + 2137, // BatakToba + 2147, // Buginese + 2156, // Buhid + 2162, // Carian + 2169, // Chakma + 2176, // ClassicalMandaic + 2193, // Coptic + 2200, // Dogri + 2206, // EasternCham + 2218, // EasternKayah + 2231, // Etruscan + 2240, // Gothic + 2247, // Hanunoo + 2255, // Ingush + 2262, // LargeFloweryMiao + 2279, // Lepcha + 2286, // Limbu + 2292, // Lisu + 2297, // Lu + 2300, // Lycian + 2307, // Lydian + 2314, // Mandingo + 2323, // Manipuri + 2332, // Meroitic + 2341, // NorthernThai + 2354, // OldIrish + 2363, // OldNorse + 2372, // OldPersian + 2383, // OldTurkish + 2394, // Pahlavi + 2402, // Parthian + 2411, // Phoenician + 2422, // PrakritLanguage + 2438, // Rejang + 2445, // Sabaean + 2453, // Samaritan + 2463, // Santali + 2471, // Saurashtra + 2482, // Sora + 2487, // Sylheti + 2495, // Tagbanwa + 2504, // TaiDam + 2511, // TaiNua + 2518, // Ugaritic }; static const char script_name_list[] = @@ -5711,6 +5934,73 @@ static const char script_name_list[] = "Syriac\0" "Yi\0" "Vai\0" +"Avestan\0" +"Balinese\0" +"Bamum\0" +"Batak\0" +"Bopomofo\0" +"Brahmi\0" +"Buginese\0" +"Buhid\0" +"CanadianAboriginal\0" +"Carian\0" +"Chakma\0" +"Cham\0" +"Coptic\0" +"Cypriot\0" +"Egyptian Hieroglyphs\0" +"Fraser\0" +"Glagolitic\0" +"Gothic\0" +"Han\0" +"Hangul\0" +"Hanunoo\0" +"Imperial Aramaic\0" +"Inscriptional Pahlavi\0" +"Inscriptional Parthian\0" +"Javanese\0" +"Kaithi\0" +"Katakana\0" +"Kayah Li\0" +"Kharoshthi\0" +"Lanna\0" +"Lepcha\0" +"Limbu\0" +"Linear B\0" +"Lycian\0" +"Lydian\0" +"Mandaean\0" +"Meitei Mayek\0" +"Meroitic\0" +"Meroitic Cursive\0" +"Nko\0" +"New Tai Lue\0" +"Ogham\0" +"Ol Chiki\0" +"Old Italic\0" +"Old Persian\0" +"Old South Arabian\0" +"Orkhon\0" +"Osmanya\0" +"Phags Pa\0" +"Phoenician\0" +"Pollard Phonetic\0" +"Rejang\0" +"Runic\0" +"Samaritan\0" +"Saurashtra\0" +"Sharada\0" +"Shavian\0" +"Sora Sompeng\0" +"Cuneiform\0" +"Sundanese\0" +"Syloti Nagri\0" +"Tagalog\0" +"Tagbanwa\0" +"Tai Le\0" +"Tai Viet\0" +"Takri\0" +"Ugaritic\0" ; static const quint16 script_name_index[] = { @@ -5750,6 +6040,73 @@ static const quint16 script_name_index[] = { 273, // Syriac 280, // Yi 283, // Vai + 287, // Avestan + 295, // Balinese + 304, // Bamum + 310, // Batak + 316, // Bopomofo + 325, // Brahmi + 332, // Buginese + 341, // Buhid + 347, // CanadianAboriginal + 366, // Carian + 373, // Chakma + 380, // Cham + 385, // Coptic + 392, // Cypriot + 400, // Egyptian Hieroglyphs + 421, // Fraser + 428, // Glagolitic + 439, // Gothic + 446, // Han + 450, // Hangul + 457, // Hanunoo + 465, // Imperial Aramaic + 482, // Inscriptional Pahlavi + 504, // Inscriptional Parthian + 527, // Javanese + 536, // Kaithi + 543, // Katakana + 552, // Kayah Li + 561, // Kharoshthi + 572, // Lanna + 578, // Lepcha + 585, // Limbu + 591, // Linear B + 600, // Lycian + 607, // Lydian + 614, // Mandaean + 623, // Meitei Mayek + 636, // Meroitic + 645, // Meroitic Cursive + 662, // Nko + 666, // New Tai Lue + 678, // Ogham + 684, // Ol Chiki + 693, // Old Italic + 704, // Old Persian + 716, // Old South Arabian + 734, // Orkhon + 741, // Osmanya + 749, // Phags Pa + 758, // Phoenician + 769, // Pollard Phonetic + 786, // Rejang + 793, // Runic + 799, // Samaritan + 809, // Saurashtra + 820, // Sharada + 828, // Shavian + 836, // Sora Sompeng + 849, // Cuneiform + 859, // Sundanese + 869, // Syloti Nagri + 882, // Tagalog + 890, // Tagbanwa + 899, // Tai Le + 906, // Tai Viet + 915, // Takri + 921, // Ugaritic }; static const char country_name_list[] = @@ -6401,7 +6758,7 @@ static const unsigned char language_code_list[] = "tr\0" // Turkish "tk\0" // Turkmen "ty\0" // Tahitian -"ug\0" // Uigur +"ug\0" // Uighur "uk\0" // Ukrainian "ur\0" // Urdu "uz\0" // Uzbek @@ -6534,6 +6891,57 @@ static const unsigned char language_code_list[] = "kkj" // Kako "mgo" // Meta "nnh" // Ngiemboon +"an\0" // Aragonese +"akk" // Akkadian +"egy" // AncientEgyptian +"grc" // AncientGreek +"arc" // Aramaic +"ban" // Balinese +"bax" // Bamun +"bbc" // BatakToba +"bug" // Buginese +"bku" // Buhid +"xcr" // Carian +"ccp" // Chakma +"myz" // ClassicalMandaic +"cop" // Coptic +"doi" // Dogri +"cjm" // EasternCham +"eky" // EasternKayah +"ett" // Etruscan +"got" // Gothic +"hnn" // Hanunoo +"inh" // Ingush +"hmd" // LargeFloweryMiao +"lep" // Lepcha +"lif" // Limbu +"lis" // Lisu +"khb" // Lu +"xlc" // Lycian +"xld" // Lydian +"man" // Mandingo +"mni" // Manipuri +"xmr" // Meroitic +"nod" // NorthernThai +"sga" // OldIrish +"non" // OldNorse +"peo" // OldPersian +"otk" // OldTurkish +"pal" // Pahlavi +"xpr" // Parthian +"phn" // Phoenician +"pra" // PrakritLanguage +"rej" // Rejang +"xsa" // Sabaean +"smp" // Samaritan +"sat" // Santali +"saz" // Saurashtra +"srb" // Sora +"syl" // Sylheti +"tbw" // Tagbanwa +"blt" // TaiDam +"tdd" // TaiNua +"uga" // Ugaritic ; static const unsigned char script_code_list[] = @@ -6570,9 +6978,76 @@ static const unsigned char script_code_list[] = "Thai" // Thai "Tibt" // Tibetan "Sinh" // Sinhala -"Syri" // Syriac +"Syrc" // Syriac "Yiii" // Yi "Vaii" // Vai +"Avst" // Avestan +"Bali" // Balinese +"Bamu" // Bamum +"Batk" // Batak +"Bopo" // Bopomofo +"Brah" // Brahmi +"Bugi" // Buginese +"Buhd" // Buhid +"Cans" // CanadianAboriginal +"Cari" // Carian +"Cakm" // Chakma +"Cham" // Cham +"Copt" // Coptic +"Cprt" // Cypriot +"Egyp" // Egyptian Hieroglyphs +"Lisu" // Fraser +"Glag" // Glagolitic +"Goth" // Gothic +"Hani" // Han +"Hang" // Hangul +"Hano" // Hanunoo +"Armi" // Imperial Aramaic +"Phli" // Inscriptional Pahlavi +"Prti" // Inscriptional Parthian +"Java" // Javanese +"Kthi" // Kaithi +"Kana" // Katakana +"Kali" // Kayah Li +"Khar" // Kharoshthi +"Lana" // Lanna +"Lepc" // Lepcha +"Limb" // Limbu +"Linb" // Linear B +"Lyci" // Lycian +"Lydi" // Lydian +"Mand" // Mandaean +"Mtei" // Meitei Mayek +"Mero" // Meroitic +"Merc" // Meroitic Cursive +"Nkoo" // Nko +"Talu" // New Tai Lue +"Ogam" // Ogham +"Olck" // Ol Chiki +"Ital" // Old Italic +"Xpeo" // Old Persian +"Sarb" // Old South Arabian +"Orkh" // Orkhon +"Osma" // Osmanya +"Phag" // Phags Pa +"Phnx" // Phoenician +"Plrd" // Pollard Phonetic +"Rjng" // Rejang +"Runr" // Runic +"Samr" // Samaritan +"Saur" // Saurashtra +"Shrd" // Sharada +"Shaw" // Shavian +"Sora" // Sora Sompeng +"Xsux" // Cuneiform +"Sund" // Sundanese +"Sylo" // Syloti Nagri +"Tglg" // Tagalog +"Tagb" // Tagbanwa +"Tale" // Tai Le +"Tavt" // Tai Viet +"Takr" // Takri +"Ugar" // Ugaritic ; static const unsigned char country_code_list[] = "ZZ\0" // AnyCountry -- cgit v1.2.3 From ca6a4258d0816b3608295eb40ac89cfd82bab5bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lund=20Martsum?= Date: Fri, 5 Oct 2012 15:58:56 +0200 Subject: QMap - add insert overload that provide a hint This adds a fast insert on QMap when providing a correct hint. Change-Id: I256bba342932c1d4f24c6e65074e1bf47b519537 Reviewed-by: Thiago Macieira Reviewed-by: Lars Knoll --- src/corelib/tools/qmap.cpp | 26 ++++++++++++++++++ src/corelib/tools/qmap.h | 67 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qmap.cpp b/src/corelib/tools/qmap.cpp index a4c28b5bd4..21ac059a01 100644 --- a/src/corelib/tools/qmap.cpp +++ b/src/corelib/tools/qmap.cpp @@ -981,6 +981,32 @@ void QMapDataBase::freeData(QMapDataBase *d) \sa insertMulti() */ +/*! \fn QMap::iterator QMap::insert(const_iterator pos, const Key &key, const T &value) + \overload + \since 5.1 + Inserts a new item with the key \a key and value \a value and with hint \a pos + suggesting where to do the insert. + + If constBegin() is used as hint it indicates that the \a key is less than any key in the map + while constEnd() suggests that the \a key is (strictly) larger than any key in the map. + Otherwise the hint should meet the condition (\a pos - 1).key() < \a key <= pos.key(). + If the hint \a pos is wrong it is ignored and a regular insert is done. + + If there is already an item with the key \a key, that item's value + is replaced with \a value. + + If there are multiple items with the key \a key, then exactly one of them + is replaced with \a value. + + When creating a map from sorted data inserting the largest key first with constBegin() + is faster than inserting in sorted order with constEnd() + + \b {Note:} Be careful with the hint. Providing an iterator from an older shared instance might + crash but there is also a risk that it will silently corrupt both the map and the \a pos map. + + \sa insertMulti() +*/ + /*! \fn QMap::iterator QMap::insertMulti(const Key &key, const T &value) Inserts a new item with the key \a key and a value of \a value. diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h index 280696c534..31a891b0c2 100644 --- a/src/corelib/tools/qmap.h +++ b/src/corelib/tools/qmap.h @@ -538,6 +538,7 @@ public: iterator upperBound(const Key &key); const_iterator upperBound(const Key &key) const; iterator insert(const Key &key, const T &value); + iterator insert(const_iterator pos, const Key &key, const T &value); iterator insertMulti(const Key &key, const T &value); QMap &unite(const QMap &other); @@ -662,6 +663,72 @@ Q_INLINE_TEMPLATE typename QMap::iterator QMap::insert(const Key return iterator(z); } +template +typename QMap::iterator QMap::insert(const_iterator pos, const Key &akey, const T &avalue) +{ + if (d->ref.isShared()) + return this->insert(akey, avalue); + + if (pos == constEnd()) { + // Hint is that the Node is larger than (or equal to) the largest value. + Node *n = static_cast(pos.i->left); + if (n) { + while (n->right) + n = static_cast(n->right); + + if (!qMapLessThanKey(n->key, akey)) + return this->insert(akey, avalue); // ignore hint + // This can be optimized by checking equal too. + // we can overwrite if previous node key is strictly smaller + // (or there is no previous node) + + Node *z = d->createNode(akey, avalue, n, false); // insert right most + return iterator(z); + } + return this->insert(akey, avalue); + } else { + // Hint indicates that the node should be less (or equal to) the hint given + // but larger than the previous value. + Node *next = const_cast(pos.i); + if (qMapLessThanKey(next->key, akey)) + return this->insert(akey, avalue); // ignore hint + + if (pos == constBegin()) { + // There is no previous value + // Maybe overwrite left most value + if (!qMapLessThanKey(akey, next->key)) { + next->value = avalue; // overwrite current iterator + return iterator(next); + } + // insert left most. + Node *z = d->createNode(akey, avalue, begin().i, true); + return iterator(z); + } else { + Node *prev = const_cast(pos.i->previousNode()); + if (!qMapLessThanKey(prev->key, akey)) { + return this->insert(akey, avalue); // ignore hint + } + // Hint is ok + if (!qMapLessThanKey(akey, next->key)) { + next->value = avalue; // overwrite current iterator + return iterator(next); + } + + // we need to insert (not overwrite) + if (prev->right == 0) { + Node *z = d->createNode(akey, avalue, prev, false); + return iterator(z); + } + if (next->left == 0) { + Node *z = d->createNode(akey, avalue, next, true); + return iterator(z); + } + Q_ASSERT(false); // We should have prev->right == 0 or next->left == 0. + return this->insert(akey, avalue); + } + } +} + template Q_INLINE_TEMPLATE typename QMap::iterator QMap::insertMulti(const Key &akey, const T &avalue) -- cgit v1.2.3 From f0533ba8c22d6366f9d4fb8e8ce18554cd0d01e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Martsum?= Date: Tue, 15 Jan 2013 16:09:44 +0100 Subject: QMap - add multiInsert with hint This provides a fast multiInsert in QMap (and a fast insert in QMultiMap) when providing a correct hint. Change-Id: I3c864c3a7842765fe63f8ecb4b54d0e8c9fd22d7 Reviewed-by: Thiago Macieira --- src/corelib/tools/qmap.cpp | 37 +++++++++++++++++++++++++++++++ src/corelib/tools/qmap.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qmap.cpp b/src/corelib/tools/qmap.cpp index 21ac059a01..e5de4a1bfd 100644 --- a/src/corelib/tools/qmap.cpp +++ b/src/corelib/tools/qmap.cpp @@ -1019,6 +1019,26 @@ void QMapDataBase::freeData(QMapDataBase *d) \sa insert(), values() */ +/*! \fn QMap::iterator QMap::insertMulti(const_iterator pos, const Key &key, const T &value) + \overload + \since 5.1 + Inserts a new item with the key \a key and value \a value and with hint \a pos + suggesting where to do the insert. + + If constBegin() is used as hint it indicates that the \a key is less than any key in the map + while constEnd() suggests that the \a key is larger than any key in the map. + Otherwise the hint should meet the condition (\a pos - 1).key() < \a key <= pos.key(). + If the hint \a pos is wrong it is ignored and a regular insertMulti is done. + + If there is already an item with the same key in the map, this function will simply create a new one. + + \b {Note:} Be careful with the hint. Providing an iterator from an older shared instance might + crash but there is also a risk that it will silently corrupt both the map and the \a pos map. + + \sa insert() +*/ + + /*! \fn QMap &QMap::unite(const QMap &other) Inserts all the items in the \a other map into this map. If a @@ -1655,6 +1675,23 @@ void QMapDataBase::freeData(QMapDataBase *d) \sa replace() */ +/*! \fn QMultiMap::iterator QMultiMap::insert(QMap::const_iterator pos, const Key &key, const T &value) + + \since 5.1 + Inserts a new item with the key \a key and value \a value and with hint \a pos + suggesting where to do the insert. + + If constBegin() is used as hint it indicates that the \a key is less than any key in the map + while constEnd() suggests that the \a key is larger than any key in the map. + Otherwise the hint should meet the condition (\a pos - 1).key() < \a key <= pos.key(). + If the hint \a pos is wrong it is ignored and a regular insert is done. + + If there is already an item with the same key in the map, this function will simply create a new one. + + \b {Note:} Be careful with the hint. Providing an iterator from an older shared instance might + crash but there is also a risk that it will silently corrupt both the map and the \a pos map. +*/ + /*! \fn QMultiMap &QMultiMap::operator+=(const QMultiMap &other) Inserts all the items in the \a other map into this map and diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h index 31a891b0c2..449fcbca0a 100644 --- a/src/corelib/tools/qmap.h +++ b/src/corelib/tools/qmap.h @@ -540,6 +540,7 @@ public: iterator insert(const Key &key, const T &value); iterator insert(const_iterator pos, const Key &key, const T &value); iterator insertMulti(const Key &key, const T &value); + iterator insertMulti(const_iterator pos, const Key &akey, const T &avalue); QMap &unite(const QMap &other); // STL compatibility @@ -746,6 +747,57 @@ Q_INLINE_TEMPLATE typename QMap::iterator QMap::insertMulti(cons return iterator(z); } +template +typename QMap::iterator QMap::insertMulti(const_iterator pos, const Key &akey, const T &avalue) +{ + if (d->ref.isShared()) + return this->insertMulti(akey, avalue); + + if (pos == constEnd()) { + // Hint is that the Node is larger than (or equal to) the largest value. + Node *n = static_cast(pos.i->left); + if (n) { + while (n->right) + n = static_cast(n->right); + + if (!qMapLessThanKey(n->key, akey)) + return this->insertMulti(akey, avalue); // ignore hint + Node *z = d->createNode(akey, avalue, n, false); // insert right most + return iterator(z); + } + return this->insertMulti(akey, avalue); + } else { + // Hint indicates that the node should be less (or equal to) the hint given + // but larger than the previous value. + Node *next = const_cast(pos.i); + if (qMapLessThanKey(next->key, akey)) + return this->insertMulti(akey, avalue); // ignore hint + + if (pos == constBegin()) { + // There is no previous value (insert left most) + Node *z = d->createNode(akey, avalue, begin().i, true); + return iterator(z); + } else { + Node *prev = const_cast(pos.i->previousNode()); + if (!qMapLessThanKey(prev->key, akey)) + return this->insertMulti(akey, avalue); // ignore hint + + // Hint is ok - do insert + if (prev->right == 0) { + Node *z = d->createNode(akey, avalue, prev, false); + return iterator(z); + } + if (next->left == 0) { + Node *z = d->createNode(akey, avalue, next, true); + return iterator(z); + } + Q_ASSERT(false); // We should have prev->right == 0 or next->left == 0. + return this->insertMulti(akey, avalue); + } + } +} + + template Q_INLINE_TEMPLATE typename QMap::const_iterator QMap::constFind(const Key &akey) const { @@ -1051,6 +1103,8 @@ public: { return QMap::insert(key, value); } inline typename QMap::iterator insert(const Key &key, const T &value) { return QMap::insertMulti(key, value); } + inline typename QMap::iterator insert(typename QMap::const_iterator pos, const Key &key, const T &value) + { return QMap::insertMulti(pos, key, value); } inline QMultiMap &operator+=(const QMultiMap &other) { this->unite(other); return *this; } -- cgit v1.2.3 From 510660080de6fab87e117de2663c33eff5ae451b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Martsum?= Date: Wed, 13 Feb 2013 17:48:49 +0100 Subject: QVector - add remove functions This patch adds the functions removeFirst() and removeLast(). Functions that QList has. Beside making these functions, pop_back and pop_front are redirected to these rather than calling erase. Change-Id: Ifc5f8a78e33f436f06f21095a920ec5d4311fd6f Reviewed-by: Thiago Macieira --- src/corelib/tools/qvector.cpp | 24 ++++++++++++++++++++++-- src/corelib/tools/qvector.h | 6 ++++-- 2 files changed, 26 insertions(+), 4 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qvector.cpp b/src/corelib/tools/qvector.cpp index efc4b6a446..5ece011f0b 100644 --- a/src/corelib/tools/qvector.cpp +++ b/src/corelib/tools/qvector.cpp @@ -544,6 +544,26 @@ \sa insert(), replace(), fill() */ +/*! \fn void QVector::removeFirst() + \since 5.1 + Removes the first item in the vector. Calling this function is + equivalent to calling remove(0). The vector must not be empty. If + the vector can be empty, call isEmpty() before calling this + function. + + \sa remove(), isEmpty() +*/ + +/*! \fn void QVector::removeLast() + \since 5.1 + Removes the last item in the vector. Calling this function is + equivalent to calling remove(size() - 1). The vector must not be + empty. If the vector can be empty, call isEmpty() before calling + this function. + + \sa remove(), removeFirst(), isEmpty() +*/ + /*! \fn QVector &QVector::fill(const T &value, int size = -1) Assigns \a value to all items in the vector. If \a size is @@ -773,13 +793,13 @@ /*! \fn void QVector::pop_front() This function is provided for STL compatibility. It is equivalent - to erase(begin()). + to removeFirst(). */ /*! \fn void QVector::pop_back() This function is provided for STL compatibility. It is equivalent - to erase(end() - 1). + to removeLast(). */ /*! \fn T& QVector::front() diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h index 7d5cf91324..f6fe316a15 100644 --- a/src/corelib/tools/qvector.h +++ b/src/corelib/tools/qvector.h @@ -138,6 +138,8 @@ public: void replace(int i, const T &t); void remove(int i); void remove(int i, int n); + inline void removeFirst() { Q_ASSERT(!isEmpty()); erase(d->begin()); } + inline void removeLast() { Q_ASSERT(!isEmpty()); erase(d->end() - 1); } QVector &fill(const T &t, int size = -1); @@ -198,8 +200,8 @@ public: typedef int size_type; inline void push_back(const T &t) { append(t); } inline void push_front(const T &t) { prepend(t); } - void pop_back() { Q_ASSERT(!isEmpty()); erase(d->end() - 1); } - void pop_front() { Q_ASSERT(!isEmpty()); erase(d->begin()); } + void pop_back() { removeLast(); } + void pop_front() { removeFirst(); } inline bool empty() const { return d->size == 0; } inline T& front() { return first(); } -- cgit v1.2.3 From ab52e722926d495e29263e59a466ad5ff0106275 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Martsum?= Date: Sat, 16 Feb 2013 20:20:35 +0100 Subject: QVector - add functions takeFirst and takeLast This patch adds takeFirst and takeLast which are functions that QList also has. Change-Id: I761f90b529774edc8fa96e07c6fcf76226123b20 Reviewed-by: Thiago Macieira --- src/corelib/tools/qvector.cpp | 26 ++++++++++++++++++++++++-- src/corelib/tools/qvector.h | 2 ++ 2 files changed, 26 insertions(+), 2 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qvector.cpp b/src/corelib/tools/qvector.cpp index 5ece011f0b..e72c1964a2 100644 --- a/src/corelib/tools/qvector.cpp +++ b/src/corelib/tools/qvector.cpp @@ -551,7 +551,7 @@ the vector can be empty, call isEmpty() before calling this function. - \sa remove(), isEmpty() + \sa remove(), takeFirst(), isEmpty() */ /*! \fn void QVector::removeLast() @@ -561,9 +561,31 @@ empty. If the vector can be empty, call isEmpty() before calling this function. - \sa remove(), removeFirst(), isEmpty() + \sa remove(), takeLast(), removeFirst(), isEmpty() */ +/*! \fn T QVector::takeFirst() + + Removes the first item in the vector and returns it. This function + assumes the vector is not empty. To avoid failure, call isEmpty() + before calling this function. + + \sa takeLast(), removeFirst() +*/ + +/*! \fn T QVector::takeLast() + + Removes the last item in the list and returns it. This function + assumes the vector is not empty. To avoid failure, call isEmpty() + before calling this function. + + If you don't use the return value, removeLast() is more + efficient. + + \sa takeFirst(), removeLast() +*/ + + /*! \fn QVector &QVector::fill(const T &value, int size = -1) Assigns \a value to all items in the vector. If \a size is diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h index f6fe316a15..e2c28e4060 100644 --- a/src/corelib/tools/qvector.h +++ b/src/corelib/tools/qvector.h @@ -140,6 +140,8 @@ public: void remove(int i, int n); inline void removeFirst() { Q_ASSERT(!isEmpty()); erase(d->begin()); } inline void removeLast() { Q_ASSERT(!isEmpty()); erase(d->end() - 1); } + inline T takeFirst() { Q_ASSERT(!isEmpty()); T r = first(); removeFirst(); return r; } + inline T takeLast() { Q_ASSERT(!isEmpty()); T r = last(); removeLast(); return r; } QVector &fill(const T &t, int size = -1); -- cgit v1.2.3 From 3222db0937aaf1ae5681bc124406ec37f550bc7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Martsum?= Date: Thu, 10 Jan 2013 19:42:59 +0100 Subject: QVector - removeLast optimize In case somebody uses QVector as a stack, it is not fair to have takeLast, removeLast and pop_back to do way too much work. This is still very slow compared to std::vector::pop_back (mostly due implicit sharing), however it is more than a factor faster than before. Change-Id: I636872675e80c8ca0c8ebc94b04f587a2dcd6d8d Reviewed-by: Thiago Macieira --- src/corelib/tools/qvector.h | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h index e2c28e4060..a06fb7b4eb 100644 --- a/src/corelib/tools/qvector.h +++ b/src/corelib/tools/qvector.h @@ -139,7 +139,7 @@ public: void remove(int i); void remove(int i, int n); inline void removeFirst() { Q_ASSERT(!isEmpty()); erase(d->begin()); } - inline void removeLast() { Q_ASSERT(!isEmpty()); erase(d->end() - 1); } + inline void removeLast(); inline T takeFirst() { Q_ASSERT(!isEmpty()); T r = first(); removeFirst(); return r; } inline T takeLast() { Q_ASSERT(!isEmpty()); T r = last(); removeLast(); return r; } @@ -557,6 +557,22 @@ void QVector::append(const T &t) ++d->size; } +template +inline void QVector::removeLast() +{ + Q_ASSERT(!isEmpty()); + + if (d->alloc) { + if (d->ref.isShared()) { + reallocData(d->size - 1, int(d->alloc)); + return; + } + if (QTypeInfo::isComplex) + (d->data() + d->size - 1)->~T(); + --d->size; + } +} + template typename QVector::iterator QVector::insert(iterator before, size_type n, const T &t) { @@ -606,6 +622,7 @@ typename QVector::iterator QVector::erase(iterator abegin, iterator aend) // FIXME we could do a proper realloc, which copy constructs only needed data. // FIXME we ara about to delete data maybe it is good time to shrink? + // FIXME the shrink is also an issue in removeLast, that is just a copy + reduce of this. if (d->alloc) { detach(); abegin = d->begin() + itemsUntouched; -- cgit v1.2.3 From 6b821a3dc80b7203a8c9def42294924e5d718068 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sun, 10 Mar 2013 17:23:18 +0100 Subject: QRegularExpression: refactor the handling of the study data Consider the following situation: - threads A and B have shallow copies of the same QRegularExpression - threads A and B both call match() on a string - thread A calls optimizePattern(), which doesn't optimize - thread B calls optimizePattern(), which does optimize, and sets studyData - thread A uses studyData (set by B) A needs to properly acquire the memory pointed by studyData (which, in turn, needs to be released by B). This commit implements that. (Before, we used to return a copy of the current studyData from optimizePattern(), so A didn't see that B optimized the pattern and set studyData). Change-Id: I9e4741a3d3229905c247491a07099519815680bb Reviewed-by: Thiago Macieira --- src/corelib/tools/qregularexpression.cpp | 41 +++++++++++++++++++------------- 1 file changed, 24 insertions(+), 17 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 19b492a505..a50c7da6cc 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -50,6 +50,7 @@ #include #include #include +#include #include @@ -801,7 +802,7 @@ struct QRegularExpressionPrivate : QSharedData void cleanCompiledPattern(); void compilePattern(); void getPatternInfo(); - pcre16_extra *optimizePattern(); + void optimizePattern(); QRegularExpressionMatchPrivate *doMatch(const QString &subject, int offset, @@ -827,7 +828,7 @@ struct QRegularExpressionPrivate : QSharedData // objects themselves; when the private is copied (i.e. a detach happened) // they are set to 0 pcre16 *compiledPattern; - pcre16_extra *studyData; + QAtomicPointer studyData; const char *errorString; int errorOffset; int capturingCount; @@ -934,10 +935,10 @@ QRegularExpressionPrivate::QRegularExpressionPrivate(const QRegularExpressionPri void QRegularExpressionPrivate::cleanCompiledPattern() { pcre16_free(compiledPattern); - pcre16_free_study(studyData); + pcre16_free_study(studyData.load()); usedCount = 0; compiledPattern = 0; - studyData = 0; + studyData.store(0); usingCrLfNewlines = false; errorOffset = -1; capturingCount = 0; @@ -967,7 +968,7 @@ void QRegularExpressionPrivate::compilePattern() return; Q_ASSERT(errorCode == 0); - Q_ASSERT(studyData == 0); // studying (=>optimizing) is always done later + Q_ASSERT(studyData.load() == 0); // studying (=>optimizing) is always done later errorOffset = -1; getPatternInfo(); @@ -979,7 +980,7 @@ void QRegularExpressionPrivate::compilePattern() void QRegularExpressionPrivate::getPatternInfo() { Q_ASSERT(compiledPattern); - Q_ASSERT(studyData == 0); + Q_ASSERT(studyData.load() == 0); pcre16_fullinfo(compiledPattern, 0, PCRE_INFO_CAPTURECOUNT, &capturingCount); @@ -1101,17 +1102,18 @@ static bool isJitEnabled() leaving studyData to NULL); but before calling pcre16_exec to perform the match, another thread performs the studying and sets studyData to something else. Although the assignment to studyData is itself atomic, the release of - the memory pointed by studyData isn't. Therefore, the current studyData - value is returned and used by doMatch. + the memory pointed by studyData isn't. Therefore, we work on a local copy + (localStudyData) before using storeRelease on studyData. In doMatch there's + the corresponding loadAcquire. */ -pcre16_extra *QRegularExpressionPrivate::optimizePattern() +void QRegularExpressionPrivate::optimizePattern() { Q_ASSERT(compiledPattern); QMutexLocker lock(&mutex); - if (studyData || (++usedCount != qt_qregularexpression_optimize_after_use_count)) - return studyData; + if (studyData.load() || (++usedCount != qt_qregularexpression_optimize_after_use_count)) + return; static const bool enableJit = isJitEnabled(); @@ -1120,15 +1122,15 @@ pcre16_extra *QRegularExpressionPrivate::optimizePattern() studyOptions |= PCRE_STUDY_JIT_COMPILE; const char *err; - studyData = pcre16_study(compiledPattern, studyOptions, &err); + pcre16_extra * const localStudyData = pcre16_study(compiledPattern, studyOptions, &err); - if (studyData && studyData->flags & PCRE_EXTRA_EXECUTABLE_JIT) - pcre16_assign_jit_stack(studyData, qtPcreCallback, 0); + if (localStudyData && localStudyData->flags & PCRE_EXTRA_EXECUTABLE_JIT) + pcre16_assign_jit_stack(localStudyData, qtPcreCallback, 0); - if (!studyData && err) + if (!localStudyData && err) qWarning("QRegularExpressionPrivate::optimizePattern(): pcre_study failed: %s", err); - return studyData; + studyData.storeRelease(localStudyData); } /*! @@ -1231,7 +1233,12 @@ QRegularExpressionMatchPrivate *QRegularExpressionPrivate::doMatch(const QString capturingCount + 1); // this is mutex protected - const pcre16_extra *currentStudyData = const_cast(this)->optimizePattern(); + const_cast(this)->optimizePattern(); + + // work with a local copy of the study data, as we are running pcre_exec + // potentially more than once, and we don't want to run call it + // with different study data + const pcre16_extra * const currentStudyData = studyData.loadAcquire(); int pcreOptions = convertToPcreOptions(matchOptions); -- cgit v1.2.3 From 4d2bf663ebca19402fda5527535b93d5cdde6e27 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 7 Mar 2013 15:06:33 +0100 Subject: interpret format argument of QString::sprintf() as UTF-8 we expect our source code to be utf-8 throughout, so it doesn't make sense to expect the specifier to be latin-1, as that limits the effective charset to ascii. Change-Id: I22335509ba6c5805d8b264cfd01d7f9a4cf7ef76 Reviewed-by: Lars Knoll --- src/corelib/tools/qstring.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 75ef07a96e..eb8750838b 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -5461,8 +5461,10 @@ QString &QString::vsprintf(const char* cformat, va_list ap) const char *c = cformat; for (;;) { // Copy non-escape chars to result + const char *cb = c; while (*c != '\0' && *c != '%') - result.append(QLatin1Char(*c++)); + c++; + result.append(QString::fromUtf8(cb, (int)(c - cb))); if (*c == '\0') break; -- cgit v1.2.3 From 0194fa135b1d84a8c8d70ed8a0ff46eef0289fb7 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sun, 10 Mar 2013 10:55:27 +0200 Subject: Hide Harfbuzz from the outer world Don't export, don't generate private headers, don't mention HB in API. Change-Id: I048ebd178bf4afaf9fda710a00933b95274cf910 Reviewed-by: Josh Faust Reviewed-by: Lars Knoll --- src/corelib/tools/qharfbuzz_p.h | 227 +++++++++++++++++++++++++++++++++++- src/corelib/tools/qunicodetools.cpp | 3 +- src/corelib/tools/tools.pri | 2 +- 3 files changed, 227 insertions(+), 5 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qharfbuzz_p.h b/src/corelib/tools/qharfbuzz_p.h index 9a0156f673..27ddb44e91 100644 --- a/src/corelib/tools/qharfbuzz_p.h +++ b/src/corelib/tools/qharfbuzz_p.h @@ -54,7 +54,230 @@ #define QHARFBUZZ_P_H #include -#include + +#if defined(QT_BUILD_CORE_LIB) +# include +#else +// a minimal set of HB types required for Qt libs other than Core +extern "C" { + +typedef enum { + /* no error */ + HB_Err_Ok = 0x0000, + HB_Err_Not_Covered = 0xFFFF, + + /* _hb_err() is called whenever returning the following errors, + * and in a couple places for HB_Err_Not_Covered too. */ + + /* programmer error */ + HB_Err_Invalid_Argument = 0x1A66, + + /* font error */ + HB_Err_Invalid_SubTable_Format = 0x157F, + HB_Err_Invalid_SubTable = 0x1570, + HB_Err_Read_Error = 0x6EAD, + + /* system error */ + HB_Err_Out_Of_Memory = 0xDEAD +} HB_Error; + +typedef QT_PREPEND_NAMESPACE(qint8) hb_int8; +typedef QT_PREPEND_NAMESPACE(quint8) hb_uint8; +typedef QT_PREPEND_NAMESPACE(qint16) hb_int16; +typedef QT_PREPEND_NAMESPACE(quint16) hb_uint16; +typedef QT_PREPEND_NAMESPACE(qint32) hb_int32; +typedef QT_PREPEND_NAMESPACE(quint32) hb_uint32; + +typedef hb_uint8 HB_Bool; +typedef hb_uint8 HB_Byte; +typedef hb_uint16 HB_UShort; +typedef hb_uint32 HB_UInt; +typedef hb_int8 HB_Char; +typedef hb_int16 HB_Short; +typedef hb_int32 HB_Int; +typedef hb_uint16 HB_UChar16; +typedef hb_uint32 HB_UChar32; +typedef hb_uint32 HB_Glyph; +typedef hb_int32 HB_Fixed; /* 26.6 */ +typedef hb_int32 HB_16Dot16; /* 16.16 */ +typedef hb_uint32 HB_Tag; + +typedef struct { + HB_Fixed x; + HB_Fixed y; +} HB_FixedPoint; + +typedef enum { + HB_Script_Common, + HB_Script_Greek, + HB_Script_Cyrillic, + HB_Script_Armenian, + HB_Script_Hebrew, + HB_Script_Arabic, + HB_Script_Syriac, + HB_Script_Thaana, + HB_Script_Devanagari, + HB_Script_Bengali, + HB_Script_Gurmukhi, + HB_Script_Gujarati, + HB_Script_Oriya, + HB_Script_Tamil, + HB_Script_Telugu, + HB_Script_Kannada, + HB_Script_Malayalam, + HB_Script_Sinhala, + HB_Script_Thai, + HB_Script_Lao, + HB_Script_Tibetan, + HB_Script_Myanmar, + HB_Script_Georgian, + HB_Script_Hangul, + HB_Script_Ogham, + HB_Script_Runic, + HB_Script_Khmer, + HB_Script_Nko, + HB_Script_Inherited, + HB_ScriptCount = HB_Script_Inherited +} HB_Script; + +typedef enum { + HB_NoJustification= 0, /* Justification can't be applied after this glyph */ + HB_Arabic_Space = 1, /* This glyph represents a space inside arabic text */ + HB_Character = 2, /* Inter-character justification point follows this glyph */ + HB_Space = 4, /* This glyph represents a blank outside an Arabic run */ + HB_Arabic_Normal = 7, /* Normal Middle-Of-Word glyph that connects to the right (begin) */ + HB_Arabic_Waw = 8, /* Next character is final form of Waw/Ain/Qaf/Fa */ + HB_Arabic_BaRa = 9, /* Next two chars are Ba + Ra/Ya/AlefMaksura */ + HB_Arabic_Alef = 10, /* Next character is final form of Alef/Tah/Lam/Kaf/Gaf */ + HB_Arabic_HaaDal = 11, /* Next character is final form of Haa/Dal/Taa Marbutah */ + HB_Arabic_Seen = 12, /* Initial or Medial form Of Seen/Sad */ + HB_Arabic_Kashida = 13 /* Kashida(U+640) in middle of word */ +} HB_JustificationClass; + +#ifdef __xlC__ +typedef unsigned hb_bitfield; +#else +typedef hb_uint8 hb_bitfield; +#endif + +typedef struct { + hb_bitfield justification :4; /* Justification class */ + hb_bitfield clusterStart :1; /* First glyph of representation of cluster */ + hb_bitfield mark :1; /* needs to be positioned around base char */ + hb_bitfield zeroWidth :1; /* ZWJ, ZWNJ etc, with no width */ + hb_bitfield dontPrint :1; + hb_bitfield combiningClass :8; +} HB_GlyphAttributes; + +typedef void * HB_GDEF; +typedef void * HB_GSUB; +typedef void * HB_GPOS; +typedef void * HB_Buffer; + +typedef HB_Error (*HB_GetFontTableFunc)(void *font, HB_Tag tag, HB_Byte *buffer, HB_UInt *length); + +typedef struct HB_FaceRec_ { + HB_Bool isSymbolFont; + + HB_GDEF gdef; + HB_GSUB gsub; + HB_GPOS gpos; + HB_Bool supported_scripts[HB_ScriptCount]; + HB_Buffer buffer; + HB_Script current_script; + int current_flags; /* HB_ShaperFlags */ + HB_Bool has_opentype_kerning; + HB_Bool glyphs_substituted; + HB_GlyphAttributes *tmpAttributes; + unsigned int *tmpLogClusters; + int length; + int orig_nglyphs; + void *font_for_init; + HB_GetFontTableFunc get_font_table_func; +} HB_FaceRec; + +typedef struct { + HB_Fixed x, y; + HB_Fixed width, height; + HB_Fixed xOffset, yOffset; +} HB_GlyphMetrics; + +typedef enum { + HB_FontAscent +} HB_FontMetric; + +struct HB_Font_; +typedef struct HB_Font_ *HB_Font; +typedef struct HB_FaceRec_ *HB_Face; + +typedef struct { + HB_Bool (*convertStringToGlyphIndices)(HB_Font font, const HB_UChar16 *string, hb_uint32 length, HB_Glyph *glyphs, hb_uint32 *numGlyphs, HB_Bool rightToLeft); + void (*getGlyphAdvances)(HB_Font font, const HB_Glyph *glyphs, hb_uint32 numGlyphs, HB_Fixed *advances, int flags /*HB_ShaperFlag*/); + HB_Bool (*canRender)(HB_Font font, const HB_UChar16 *string, hb_uint32 length); + /* implementation needs to make sure to load a scaled glyph, so /no/ FT_LOAD_NO_SCALE */ + HB_Error (*getPointInOutline)(HB_Font font, HB_Glyph glyph, int flags /*HB_ShaperFlag*/, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints); + void (*getGlyphMetrics)(HB_Font font, HB_Glyph glyph, HB_GlyphMetrics *metrics); + HB_Fixed (*getFontMetric)(HB_Font font, HB_FontMetric metric); +} HB_FontClass; + +typedef struct HB_Font_ { + const HB_FontClass *klass; + + /* Metrics */ + HB_UShort x_ppem, y_ppem; + HB_16Dot16 x_scale, y_scale; + + void *userData; +} HB_FontRec; + +typedef enum { + HB_LeftToRight = 0, + HB_RightToLeft = 1 +} HB_StringToGlyphsFlags; + +typedef enum { + HB_ShaperFlag_Default = 0, + HB_ShaperFlag_NoKerning = 1, + HB_ShaperFlag_UseDesignMetrics = 2 +} HB_ShaperFlag; + +typedef struct +{ + hb_uint32 pos; + hb_uint32 length; + HB_Script script; + hb_uint8 bidiLevel; +} HB_ScriptItem; + +typedef struct HB_ShaperItem_ HB_ShaperItem; + +struct HB_ShaperItem_ { + const HB_UChar16 *string; /* input: the Unicode UTF16 text to be shaped */ + hb_uint32 stringLength; /* input: the length of the input in 16-bit words */ + HB_ScriptItem item; /* input: the current run to be shaped: a run of text all in the same script that is a substring of */ + HB_Font font; /* input: the font: scale, units and function pointers supplying glyph indices and metrics */ + HB_Face face; /* input: the shaper state; current script, access to the OpenType tables , etc. */ + int shaperFlags; /* input (unused) should be set to 0; intended to support flags defined in HB_ShaperFlag */ + HB_Bool glyphIndicesPresent; /* input: true if the array contains glyph indices ready to be shaped */ + hb_uint32 initialGlyphCount; /* input: if glyphIndicesPresent is true, the number of glyph indices in the array */ + + hb_uint32 num_glyphs; /* input: capacity of output arrays , , , , and ; */ + /* output: required capacity (may be larger than actual capacity) */ + + HB_Glyph *glyphs; /* output: indices of shaped glyphs */ + HB_GlyphAttributes *attributes; /* output: glyph attributes */ + HB_Fixed *advances; /* output: advances */ + HB_FixedPoint *offsets; /* output: offsets */ + unsigned short *log_clusters; /* output: for each output glyph, the index in the input of the start of its logical cluster */ + + /* internal */ + HB_Bool kerning_applied; /* output: true if kerning was applied by the shaper */ +}; + +} + +#endif // QT_BUILD_CORE_LIB + QT_BEGIN_NAMESPACE @@ -144,4 +367,4 @@ Q_DECLARE_TYPEINFO(HB_FixedPoint, Q_PRIMITIVE_TYPE); QT_END_NAMESPACE -#endif +#endif // QHARFBUZZ_P_H diff --git a/src/corelib/tools/qunicodetools.cpp b/src/corelib/tools/qunicodetools.cpp index 01aa1c4d52..3102035684 100644 --- a/src/corelib/tools/qunicodetools.cpp +++ b/src/corelib/tools/qunicodetools.cpp @@ -44,8 +44,7 @@ #include "qunicodetables_p.h" #include "qvarlengtharray.h" -#include -#include +#include "qharfbuzz_p.h" #define FLAG(x) (1 << (x)) diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri index 9b80b7c4fe..c6e12c59eb 100644 --- a/src/corelib/tools/tools.pri +++ b/src/corelib/tools/tools.pri @@ -134,7 +134,7 @@ pcre { LIBS_PRIVATE += -lpcre16 } -DEFINES += HB_EXPORT=Q_CORE_EXPORT +INCLUDEPATH += ../3rdparty/harfbuzz/src HEADERS += ../3rdparty/harfbuzz/src/harfbuzz.h SOURCES += ../3rdparty/harfbuzz/src/harfbuzz-buffer.c \ ../3rdparty/harfbuzz/src/harfbuzz-gdef.c \ -- cgit v1.2.3 From 75614792fa2370b6b0402117bfef8efc364b7b67 Mon Sep 17 00:00:00 2001 From: Jan Arve Saether Date: Tue, 12 Mar 2013 11:24:37 +0100 Subject: Fixed bug in QTimeLine::setPaused(false) The problem was that the elapsed timer was not restarted, causing the currentTime() not being adjusted for the time it was paused. Task-number: QTBUG-30108 Change-Id: Ib9b2c5a0dea52762109e0b25f1068dd7c88e15ba Reviewed-by: Richard Moe Gustavsen --- src/corelib/tools/qtimeline.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qtimeline.cpp b/src/corelib/tools/qtimeline.cpp index 390effb6c2..976c03aef4 100644 --- a/src/corelib/tools/qtimeline.cpp +++ b/src/corelib/tools/qtimeline.cpp @@ -744,7 +744,10 @@ void QTimeLine::setPaused(bool paused) d->timerId = 0; d->setState(Paused); } else if (!paused && d->state == Paused) { + // Same as resume() d->timerId = startTimer(d->updateInterval); + d->startTime = d->currentTime; + d->timer.start(); d->setState(Running); } } -- cgit v1.2.3 From a0c4a712263dbacd2c8d95da64e00bd213d05cbf Mon Sep 17 00:00:00 2001 From: El Mehdi Fekari Date: Fri, 8 Mar 2013 16:08:23 +0100 Subject: Inital port of QSystemLocale on BlackBerry 10 Change-Id: Ic177e2867d9fa3dbaec221766964ac28656a2662 Reviewed-by: Rafael Roquetto --- src/corelib/tools/qlocale_blackberry.cpp | 313 +++++++++++++++++++++++++++++++ src/corelib/tools/qlocale_blackberry.h | 99 ++++++++++ src/corelib/tools/qlocale_p.h | 26 --- src/corelib/tools/qlocale_unix.cpp | 101 ---------- src/corelib/tools/tools.pri | 4 + 5 files changed, 416 insertions(+), 127 deletions(-) create mode 100644 src/corelib/tools/qlocale_blackberry.cpp create mode 100644 src/corelib/tools/qlocale_blackberry.h (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qlocale_blackberry.cpp b/src/corelib/tools/qlocale_blackberry.cpp new file mode 100644 index 0000000000..01576dd732 --- /dev/null +++ b/src/corelib/tools/qlocale_blackberry.cpp @@ -0,0 +1,313 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qlocale_blackberry.h" +#include "qlocale_p.h" + +#include "qdatetime.h" + +#include "qcoreapplication.h" +#include "private/qcore_unix_p.h" + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_SYSTEMLOCALE + +static const char ppsUomPath[] = "/pps/services/locale/uom"; +static const char ppsRegionLocalePath[] = "/pps/services/locale/settings"; +static const char ppsLanguageLocalePath[] = "/pps/services/confstr/_CS_LOCALE"; +static const char ppsHourFormatPath[] = "/pps/system/settings"; + +static const size_t ppsBufferSize = 256; + +QBBSystemLocaleData::QBBSystemLocaleData() + : languageNotifier(0) + , regionNotifier(0) + , measurementNotifier(0) + , hourNotifier(0) + , languageFd(-1) + , regionFd(-1) + , measurementFd(-1) + , hourFd(-1) +{ + // we cannot call this directly, because by the time this constructor is + // called, the event dispatcher has not yet been created, causing the + // subsequent call to QSocketNotifier constructor to fail. + QMetaObject::invokeMethod(this, "installSocketNotifiers", Qt::QueuedConnection); + + readLangageLocale(); + readRegionLocale(); + readMeasurementSystem(); + readHourFormat(); +} + +QBBSystemLocaleData::~QBBSystemLocaleData() +{ + if (measurementFd != -1) + qt_safe_close(measurementFd); + + if (languageFd != -1) + qt_safe_close(languageFd); + + if (regionFd != -1) + qt_safe_close(regionFd); + + if (hourFd != -1) + qt_safe_close(hourFd); +} + +uint QBBSystemLocaleData::measurementSystem() +{ + return m_measurementSystem; +} + +QVariant QBBSystemLocaleData::timeFormat(QLocale::FormatType formatType) +{ + return getCorrectFormat(regionLocale().timeFormat(formatType), formatType); +} + +QVariant QBBSystemLocaleData::dateTimeFormat(QLocale::FormatType formatType) +{ + return getCorrectFormat(regionLocale().dateTimeFormat(formatType), formatType); +} + +QLocale QBBSystemLocaleData::languageLocale() +{ + if (!lc_langage.isEmpty()) + return QLocale(QLatin1String(lc_langage)); + + return QLocale::c(); +} + +QLocale QBBSystemLocaleData::regionLocale() +{ + if (!lc_region.isEmpty()) + return QLocale(QLatin1String(lc_region)); + + return QLocale::c(); +} + +void QBBSystemLocaleData::installSocketNotifiers() +{ + Q_ASSERT(!languageNotifier || !regionNotifier || !measurementNotifier || !hourNotifier); + Q_ASSERT(QCoreApplication::instance()); + + languageNotifier = new QSocketNotifier(languageFd, QSocketNotifier::Read, this); + QObject::connect(languageNotifier, SIGNAL(activated(int)), this, SLOT(readLangageLocale())); + + regionNotifier = new QSocketNotifier(regionFd, QSocketNotifier::Read, this); + QObject::connect(regionNotifier, SIGNAL(activated(int)), this, SLOT(readRegionLocale())); + + measurementNotifier = new QSocketNotifier(measurementFd, QSocketNotifier::Read, this); + QObject::connect(measurementNotifier, SIGNAL(activated(int)), this, SLOT(readMeasurementSystem())); + + hourNotifier = new QSocketNotifier(hourFd, QSocketNotifier::Read, this); + QObject::connect(hourNotifier, SIGNAL(activated(int)), this, SLOT(readHourFormat())); +} + +void QBBSystemLocaleData::readLangageLocale() +{ + lc_langage = readPpsValue(ppsLanguageLocalePath, "_CS_LOCALE", &languageFd); +} + +void QBBSystemLocaleData::readRegionLocale() +{ + lc_region = readPpsValue(ppsRegionLocalePath, "region", ®ionFd); +} + +void QBBSystemLocaleData::readMeasurementSystem() +{ + QByteArray measurement = readPpsValue(ppsUomPath, "uom", &measurementFd); + m_measurementSystem = (qstrcmp(measurement, "imperial") == 0) ? QLocale::ImperialSystem : QLocale::MetricSystem; +} + +void QBBSystemLocaleData::readHourFormat() +{ + QByteArray hourFormat = readPpsValue(ppsHourFormatPath, "hourFormat", &hourFd); + is24HourFormat = (qstrcmp(hourFormat, "24") == 0); +} + +QByteArray QBBSystemLocaleData::readPpsValue(const char *ppsPath, const char *ppsObject, int *ppsFd) +{ + QByteArray result; + if (!ppsPath || !ppsObject) + return result; + + *ppsFd = qt_safe_open(ppsPath, O_RDONLY); + if (*ppsFd == -1) { + qWarning("Failed to open Locale pps, errno=%d", errno); + return result; + } + + char buffer[ppsBufferSize]; + + int bytes = qt_safe_read(*ppsFd, buffer, ppsBufferSize - 1); + if (bytes == -1) { + qWarning("Failed to read Locale pps, errno=%d", errno); + return result; + } + // ensure data is null terminated + buffer[bytes] = '\0'; + + pps_decoder_t ppsDecoder; + pps_decoder_initialize(&ppsDecoder, 0); + if (pps_decoder_parse_pps_str(&ppsDecoder, buffer) == PPS_DECODER_OK) { + pps_decoder_push(&ppsDecoder, 0); + const char *ppsBuff; + if (pps_decoder_get_string(&ppsDecoder, ppsObject, &ppsBuff) == PPS_DECODER_OK) { + result = ppsBuff; + } else { + int val; + if (pps_decoder_get_int(&ppsDecoder, ppsObject, &val) == PPS_DECODER_OK) + result = QByteArray::number(val); + } + } + + pps_decoder_cleanup(&ppsDecoder); + + return result; +} + +QString QBBSystemLocaleData::getCorrectFormat(const QString &baseFormat, QLocale::FormatType formatType) +{ + QString format = baseFormat; + if (is24HourFormat) { + if (format.contains(QStringLiteral("AP"), Qt::CaseInsensitive)) { + format.replace(QStringLiteral("AP"), QStringLiteral(""), Qt::CaseInsensitive); + format.replace(QStringLiteral("h"), QStringLiteral("H"), Qt::CaseSensitive); + } + + } else { + + if (!format.contains(QStringLiteral("AP"), Qt::CaseInsensitive)) { + format.contains(QStringLiteral("HH"), Qt::CaseSensitive) ? + format.replace(QStringLiteral("HH"), QStringLiteral("hh"), Qt::CaseSensitive) : + format.replace(QStringLiteral("H"), QStringLiteral("h"), Qt::CaseSensitive); + + formatType == QLocale::LongFormat ? format.append(QStringLiteral(" AP t")) : format.append(QStringLiteral(" AP")); + } + } + + return format; +} + +Q_GLOBAL_STATIC(QBBSystemLocaleData, bbSysLocaleData) + +QLocale QSystemLocale::fallbackUiLocale() const +{ + return bbSysLocaleData()->languageLocale(); +} + +QVariant QSystemLocale::query(QueryType type, QVariant in) const +{ + QBBSystemLocaleData *d = bbSysLocaleData(); + + QReadLocker locker(&d->lock); + + const QLocale &lc_language = d->languageLocale(); + const QLocale &lc_region = d->regionLocale(); + + switch (type) { + case DecimalPoint: + return lc_region.decimalPoint(); + case GroupSeparator: + return lc_region.groupSeparator(); + case NegativeSign: + return lc_region.negativeSign(); + case PositiveSign: + return lc_region.positiveSign(); + case DateFormatLong: + return lc_region.dateFormat(QLocale::LongFormat); + case DateFormatShort: + return lc_region.dateFormat(QLocale::ShortFormat); + case TimeFormatLong: + return d->timeFormat(QLocale::LongFormat); + case TimeFormatShort: + return d->timeFormat(QLocale::ShortFormat); + case DateTimeFormatLong: + return d->dateTimeFormat(QLocale::LongFormat); + case DateTimeFormatShort: + return d->dateTimeFormat(QLocale::ShortFormat); + case DayNameLong: + return lc_language.dayName(in.toInt(), QLocale::LongFormat); + case DayNameShort: + return lc_language.dayName(in.toInt(), QLocale::ShortFormat); + case MonthNameLong: + return lc_language.monthName(in.toInt(), QLocale::LongFormat); + case MonthNameShort: + return lc_language.monthName(in.toInt(), QLocale::ShortFormat); + case DateToStringLong: + return lc_region.toString(in.toDate(), QLocale::LongFormat); + case DateToStringShort: + return lc_region.toString(in.toDate(), QLocale::ShortFormat); + case TimeToStringLong: + return lc_region.toString(in.toTime(), QLocale::LongFormat); + case TimeToStringShort: + return lc_region.toString(in.toTime(), QLocale::ShortFormat); + case DateTimeToStringShort: + return lc_region.toString(in.toDateTime(), d->dateTimeFormat(QLocale::ShortFormat).toString()); + case DateTimeToStringLong: + return lc_region.toString(in.toDateTime(), d->dateTimeFormat(QLocale::LongFormat).toString()); + case MeasurementSystem: + return d->measurementSystem(); + case ZeroDigit: + return lc_region.zeroDigit(); + case CountryId: + return lc_region.country(); + case LanguageId: + return lc_language.language(); + case AMText: + return lc_language.amText(); + case PMText: + return lc_language.pmText(); + default: + break; + } + return QVariant(); +} + +#endif + +QT_END_NAMESPACE diff --git a/src/corelib/tools/qlocale_blackberry.h b/src/corelib/tools/qlocale_blackberry.h new file mode 100644 index 0000000000..8e9560d6c1 --- /dev/null +++ b/src/corelib/tools/qlocale_blackberry.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOCALE_BLACKBERRY_H +#define QLOCALE_BLACKBERRY_H + +#include "qsocketnotifier.h" +#include "qreadwritelock.h" +#include "qlocale.h" + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_SYSTEMLOCALE + +class QBBSystemLocaleData : public QObject +{ + Q_OBJECT + +public: + QBBSystemLocaleData(); + virtual ~QBBSystemLocaleData(); + uint measurementSystem(); + QVariant timeFormat(QLocale::FormatType); + QVariant dateTimeFormat(QLocale::FormatType); + QLocale languageLocale(); + QLocale regionLocale(); + + QReadWriteLock lock; + +public Q_SLOTS: + void installSocketNotifiers(); + void readLangageLocale(); + void readRegionLocale(); + void readMeasurementSystem(); + void readHourFormat(); + +private: + QByteArray readPpsValue(const char* ppsPath, const char* ppsObject, int* ppsFd); + QString getCorrectFormat(const QString &baseFormat, QLocale::FormatType typeFormat); + + QByteArray lc_langage; + QByteArray lc_region; + uint m_measurementSystem; + bool is24HourFormat; + + QSocketNotifier *languageNotifier; + QSocketNotifier *regionNotifier; + QSocketNotifier *measurementNotifier; + QSocketNotifier *hourNotifier; + + int languageFd; + int regionFd; + int measurementFd; + int hourFd; +}; +#endif // QT_NO_SYSTEMLOCALE + +QT_END_NAMESPACE + +#endif // QLOCALE_BLACKBERRY_H + diff --git a/src/corelib/tools/qlocale_p.h b/src/corelib/tools/qlocale_p.h index 3c3d7c7054..ff44dcc163 100644 --- a/src/corelib/tools/qlocale_p.h +++ b/src/corelib/tools/qlocale_p.h @@ -59,10 +59,6 @@ #include "qlocale.h" -#if defined(Q_OS_BLACKBERRY) -#include "qsocketnotifier.h" -#endif - QT_BEGIN_NAMESPACE #ifndef QT_NO_SYSTEMLOCALE @@ -377,28 +373,6 @@ inline char QLocalePrivate::digitToCLocale(QChar in) const return 0; } -#if defined(Q_OS_BLACKBERRY) -class QQNXLocaleData: public QObject -{ - Q_OBJECT -public: - QQNXLocaleData(); - virtual ~QQNXLocaleData(); - -public Q_SLOTS: - void updateMeasurementSystem(); - void installSocketNotifier(); - -private: - void initialize(); - -public: - uint ppsMeasurement; - QSocketNotifier *ppsNotifier; - int ppsFd; -}; -#endif - QString qt_readEscapedFormatString(const QString &format, int *idx); bool qt_splitLocaleName(const QString &name, QString &lang, QString &script, QString &cntry); int qt_repeatCount(const QString &s, int i); diff --git a/src/corelib/tools/qlocale_unix.cpp b/src/corelib/tools/qlocale_unix.cpp index fb9e3f1a8b..4e443cd79b 100644 --- a/src/corelib/tools/qlocale_unix.cpp +++ b/src/corelib/tools/qlocale_unix.cpp @@ -47,99 +47,8 @@ #include "qvariant.h" #include "qreadwritelock.h" -#if defined(Q_OS_BLACKBERRY) -#include -#include - -#include -#include -#include -#endif - QT_BEGIN_NAMESPACE -#if defined(Q_OS_BLACKBERRY) -static const char ppsServicePath[] = "/pps/services/locale/uom"; -static const size_t ppsBufferSize = 256; - -QQNXLocaleData::QQNXLocaleData() - :ppsNotifier(0) - ,ppsFd(-1) -{ - initialize(); - - // we cannot call this directly, because by the time this constructor is - // called, the event dispatcher has not yet been created, causing the - // subsequent call to QSocketNotifier constructor to fail. - QMetaObject::invokeMethod(this, "installSocketNotifier", Qt::QueuedConnection); -} - -QQNXLocaleData::~QQNXLocaleData() -{ - if (ppsFd != -1) - qt_safe_close(ppsFd); -} - -void QQNXLocaleData::updateMeasurementSystem() -{ - char buffer[ppsBufferSize]; - - errno = 0; - int bytes = qt_safe_read(ppsFd, buffer, ppsBufferSize - 1); - if (bytes == -1) { - qWarning("Failed to read Locale pps, errno=%d", errno); - return; - } - // ensure data is null terminated - buffer[bytes] = '\0'; - - pps_decoder_t ppsDecoder; - pps_decoder_initialize(&ppsDecoder, 0); - if (pps_decoder_parse_pps_str(&ppsDecoder, buffer) == PPS_DECODER_OK) { - pps_decoder_push(&ppsDecoder, 0); - const char *measurementBuff; - if (pps_decoder_get_string(&ppsDecoder, "uom", &measurementBuff) == PPS_DECODER_OK) { - if (qstrcmp(measurementBuff, "imperial") == 0) { - pps_decoder_cleanup(&ppsDecoder); - ppsMeasurement = QLocale::ImperialSystem; - return; - } - } - } - - pps_decoder_cleanup(&ppsDecoder); - ppsMeasurement = QLocale::MetricSystem; -} - -void QQNXLocaleData::initialize() -{ - errno = 0; - ppsFd = qt_safe_open(ppsServicePath, O_RDONLY); - if (ppsFd == -1) { - qWarning("Failed to open Locale pps, errno=%d", errno); - return; - } - - updateMeasurementSystem(); -} - -void QQNXLocaleData::installSocketNotifier() -{ - if (!QCoreApplication::instance() || ppsFd == -1) { - qWarning("QQNXLocaleData: Failed to create socket notifier, locale updates may not work."); - return; - } - - if (ppsNotifier) { - qWarning("QQNXLocaleData: socket notifier already created."); - return; - } - - ppsNotifier = new QSocketNotifier(ppsFd, QSocketNotifier::Read, this); - QObject::connect(ppsNotifier, SIGNAL(activated(int)), this, SLOT(updateMeasurementSystem())); -} -#endif - #ifndef QT_NO_SYSTEMLOCALE struct QSystemLocaleData { @@ -194,11 +103,7 @@ void QSystemLocaleData::readEnvironment() lc_messages = QLocale(QString::fromLatin1(lc_messages_var)); } - Q_GLOBAL_STATIC(QSystemLocaleData, qSystemLocaleData) -#if defined(Q_OS_BLACKBERRY) - Q_GLOBAL_STATIC(QQNXLocaleData, qqnxLocaleData) -#endif #endif @@ -230,9 +135,6 @@ QLocale QSystemLocale::fallbackUiLocale() const QVariant QSystemLocale::query(QueryType type, QVariant in) const { QSystemLocaleData *d = qSystemLocaleData(); -#if defined(Q_OS_BLACKBERRY) - QQNXLocaleData *qnxd = qqnxLocaleData(); -#endif if (type == LocaleChanged) { d->readEnvironment(); @@ -320,9 +222,6 @@ QVariant QSystemLocale::query(QueryType type, QVariant in) const return QLocale::MetricSystem; if (meas_locale.compare(QLatin1String("Other"), Qt::CaseInsensitive) == 0) return QLocale::MetricSystem; -#if defined(Q_OS_BLACKBERRY) - return qnxd->ppsMeasurement; -#endif return QVariant((int)QLocale(meas_locale).measurementSystem()); } case UILanguages: { diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri index c6e12c59eb..bb152987e6 100644 --- a/src/corelib/tools/tools.pri +++ b/src/corelib/tools/tools.pri @@ -106,6 +106,10 @@ SOURCES += \ SOURCES += tools/qelapsedtimer_mac.cpp OBJECTIVE_SOURCES += tools/qlocale_mac.mm } +else:blackberry { + SOURCES += tools/qelapsedtimer_unix.cpp tools/qlocale_blackberry.cpp + HEADERS += tools/qlocale_blackberry.h +} else:unix:SOURCES += tools/qelapsedtimer_unix.cpp tools/qlocale_unix.cpp else:win32:SOURCES += tools/qelapsedtimer_win.cpp tools/qlocale_win.cpp else:integrity:SOURCES += tools/qelapsedtimer_unix.cpp tools/qlocale_unix.cpp -- cgit v1.2.3 From c20422af13fb30751eaa58e8755c7a9a7fd20a50 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Tue, 12 Mar 2013 18:37:07 +0200 Subject: Move Unicode script itemization code from text engine to UnicodeTools This is still the same trivial implementation with the only difference in that that it properly handles surrogate pairs and combining marks. This temporarily makes QTextEngine::itemize() insignificatly slower due to using intermediate buffer, until refactoring is done. Change-Id: I7987d6306b0b5cdb21b837968e292dd70abfe223 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/corelib/tools/qtextboundaryfinder.cpp | 39 +++++++++------------------ src/corelib/tools/qunicodetools.cpp | 45 +++++++++++++++++++++++++++++++ src/corelib/tools/qunicodetools_p.h | 3 +++ 3 files changed, 60 insertions(+), 27 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qtextboundaryfinder.cpp b/src/corelib/tools/qtextboundaryfinder.cpp index 51b4ece4b1..5e8aed579d 100644 --- a/src/corelib/tools/qtextboundaryfinder.cpp +++ b/src/corelib/tools/qtextboundaryfinder.cpp @@ -53,39 +53,24 @@ public: static void init(QTextBoundaryFinder::BoundaryType type, const QChar *chars, int length, QCharAttributes *attributes) { + const ushort *string = reinterpret_cast(chars); + QVarLengthArray scriptItems; + { + QVarLengthArray scripts(length); - const ushort *string = reinterpret_cast(chars); - const ushort *unicode = string; - // correctly assign script, isTab and isObject to the script analysis - const ushort *uc = unicode; - const ushort *e = uc + length; - uchar script = QChar::Script_Common; - uchar lastScript = QChar::Script_Common; - const ushort *start = uc; - while (uc < e) { - int s = QChar::script(*uc); - if (s != QChar::Script_Inherited) - script = s; - if (*uc == QChar::ObjectReplacementCharacter || *uc == QChar::LineSeparator || *uc == 9) - script = QChar::Script_Common; - if (script != lastScript) { - if (uc != start) { + QUnicodeTools::initScripts(string, length, scripts.data()); + + int start = 0; + for (int i = start + 1; i <= length; ++i) { + if (i == length || scripts[i] != scripts[start]) { QUnicodeTools::ScriptItem item; - item.position = start - string; - item.script = lastScript; + item.position = start; + item.script = scripts[start]; scriptItems.append(item); - start = uc; + start = i; } - lastScript = script; } - ++uc; - } - if (uc != start) { - QUnicodeTools::ScriptItem item; - item.position = start - string; - item.script = lastScript; - scriptItems.append(item); } QUnicodeTools::CharAttributeOptions options = 0; diff --git a/src/corelib/tools/qunicodetools.cpp b/src/corelib/tools/qunicodetools.cpp index 3102035684..4d5c978fd5 100644 --- a/src/corelib/tools/qunicodetools.cpp +++ b/src/corelib/tools/qunicodetools.cpp @@ -635,6 +635,51 @@ Q_CORE_EXPORT void initCharAttributes(const ushort *string, int length, } } + +// ---------------------------------------------------------------------------- +// +// The Unicode script property. See http://www.unicode.org/reports/tr24/ (some very old version) +// +// ---------------------------------------------------------------------------- + +Q_CORE_EXPORT void initScripts(const ushort *string, int length, uchar *scripts) +{ + int sor = 0; + int eor = -1; + uchar script = QChar::Script_Common; + for (int i = 0; i < length; ++i) { + eor = i; + uint ucs4 = string[i]; + if (QChar::isHighSurrogate(ucs4) && i + 1 < length) { + ushort low = string[i + 1]; + if (QChar::isLowSurrogate(low)) { + ucs4 = QChar::surrogateToUcs4(ucs4, low); + ++i; + } + } + + const QUnicodeTables::Properties *prop = QUnicodeTables::properties(ucs4); + + if (Q_LIKELY(prop->script == script || prop->script == QChar::Script_Inherited)) + continue; + + // Never break between a combining mark (gc= Mc, Mn or Me) and its base character. + // Thus, a combining mark — whatever its script property value is — should inherit + // the script property value of its base character. + static const int test = (FLAG(QChar::Mark_NonSpacing) | FLAG(QChar::Mark_SpacingCombining) | FLAG(QChar::Mark_Enclosing)); + if (Q_UNLIKELY(FLAG(prop->category) & test)) + continue; + + while (sor < eor) + scripts[sor++] = script; + + script = prop->script; + } + eor = length; + while (sor < eor) + scripts[sor++] = script; +} + } // namespace QUnicodeTools QT_END_NAMESPACE diff --git a/src/corelib/tools/qunicodetools_p.h b/src/corelib/tools/qunicodetools_p.h index 5a4f1659c4..5db3126159 100644 --- a/src/corelib/tools/qunicodetools_p.h +++ b/src/corelib/tools/qunicodetools_p.h @@ -96,6 +96,9 @@ Q_CORE_EXPORT void initCharAttributes(const ushort *string, int length, const ScriptItem *items, int numItems, QCharAttributes *attributes, CharAttributeOptions options = DefaultOptionsCompat); + +Q_CORE_EXPORT void initScripts(const ushort *string, int length, uchar *scripts); + } // namespace QUnicodeTools QT_END_NAMESPACE -- cgit v1.2.3 From b11317a64339f5a4bcffc8234ecaf15c7fb416f2 Mon Sep 17 00:00:00 2001 From: Axel Waggershauser Date: Fri, 15 Mar 2013 00:42:15 +0100 Subject: Whitespace cleanup: remove trailing whitespace Remove all trailing whitespace from the following list of files: *.cpp *.h *.conf *.qdoc *.pro *.pri *.mm *.rc *.pl *.qps *.xpm *.txt *README excluding 3rdparty, test-data and auto generated code. Note A): the only non 3rdparty c++-files that still have trailing whitespace after this change are: * src/corelib/codecs/cp949codetbl_p.h * src/corelib/codecs/qjpunicode.cpp * src/corelib/codecs/qbig5codec.cpp * src/corelib/xml/qxmlstream_p.h * src/tools/qdoc/qmlparser/qqmljsgrammar.cpp * src/tools/uic/ui4.cpp * tests/auto/other/qtokenautomaton/tokenizers/* * tests/benchmarks/corelib/tools/qstring/data.cpp * util/lexgen/tokenizer.cpp Note B): in about 30 files some overlapping 'leading tab' and 'TAB character in non-leading whitespace' issues have been fixed to make the sanity bot happy. Plus some general ws-fixes here and there as asked for during review. Change-Id: Ia713113c34d82442d6ce4d93d8b1cf545075d11d Reviewed-by: Oswald Buddenhagen --- src/corelib/tools/qalgorithms.qdoc | 20 +++++++++---------- src/corelib/tools/qbitarray.cpp | 6 +++--- src/corelib/tools/qbytearray.cpp | 32 +++++++++++++++---------------- src/corelib/tools/qcontiguouscache.cpp | 4 ++-- src/corelib/tools/qcryptographichash.cpp | 4 ++-- src/corelib/tools/qhash.cpp | 2 +- src/corelib/tools/qiterator.qdoc | 24 +++++++++++------------ src/corelib/tools/qline.cpp | 6 +++--- src/corelib/tools/qmargins.cpp | 2 +- src/corelib/tools/qpair.qdoc | 2 +- src/corelib/tools/qregexp.cpp | 2 +- src/corelib/tools/qringbuffer_p.h | 2 +- src/corelib/tools/qset.qdoc | 20 +++++++++---------- src/corelib/tools/qshareddata.cpp | 6 +++--- src/corelib/tools/qtextboundaryfinder.cpp | 2 +- src/corelib/tools/qvector.cpp | 2 +- 16 files changed, 68 insertions(+), 68 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qalgorithms.qdoc b/src/corelib/tools/qalgorithms.qdoc index b4558722cb..cc544af868 100644 --- a/src/corelib/tools/qalgorithms.qdoc +++ b/src/corelib/tools/qalgorithms.qdoc @@ -70,7 +70,7 @@ \snippet code/doc_src_qalgorithms.cpp 1 Different algorithms can have different requirements for the - iterators they accept. For example, qFill() accepts two + iterators they accept. For example, qFill() accepts two \l {forward iterators}. The iterator types required are specified for each algorithm. If an iterator of the wrong type is passed (for example, if QList::ConstIterator is passed as an \l {output @@ -369,7 +369,7 @@ of \a value in the variable passed as a reference in argument \a n. This is the same as qSort(\a{container}.begin(), \a{container}.end()); */ -/*! +/*! \fn void qStableSort(RandomAccessIterator begin, RandomAccessIterator end) \relates @@ -393,7 +393,7 @@ of \a value in the variable passed as a reference in argument \a n. \sa qSort(), {random access iterators} */ -/*! +/*! \fn void qStableSort(RandomAccessIterator begin, RandomAccessIterator end, LessThan lessThan) \relates @@ -406,7 +406,7 @@ of \a value in the variable passed as a reference in argument \a n. in case-insensitive alphabetical order: \snippet code/doc_src_qalgorithms.cpp 16 - + Note that earlier versions of Qt allowed using a lessThan function that took its arguments by non-const reference. From 4.3 and on this is no longer possible, the arguments has to be passed by const reference or value. @@ -423,7 +423,7 @@ of \a value in the variable passed as a reference in argument \a n. property is often useful when sorting user-visible data. */ -/*! +/*! \fn void qStableSort(Container &container) \relates @@ -470,7 +470,7 @@ of \a value in the variable passed as a reference in argument \a n. specified by the \a lessThan object. */ -/*! +/*! \fn void qLowerBound(const Container &container, const T &value) \relates @@ -520,7 +520,7 @@ of \a value in the variable passed as a reference in argument \a n. specified by the \a lessThan object. */ -/*! +/*! \fn void qUpperBound(const Container &container, const T &value) \relates @@ -568,7 +568,7 @@ of \a value in the variable passed as a reference in argument \a n. specified by the \a lessThan object. */ -/*! +/*! \fn void qBinaryFind(const Container &container, const T &value) \relates @@ -578,7 +578,7 @@ of \a value in the variable passed as a reference in argument \a n. */ -/*! +/*! \fn void qDeleteAll(ForwardIterator begin, ForwardIterator end) \relates @@ -601,7 +601,7 @@ of \a value in the variable passed as a reference in argument \a n. \sa {forward iterators} */ -/*! +/*! \fn void qDeleteAll(const Container &c) \relates diff --git a/src/corelib/tools/qbitarray.cpp b/src/corelib/tools/qbitarray.cpp index 66ae7d21c2..2b459b2b1b 100644 --- a/src/corelib/tools/qbitarray.cpp +++ b/src/corelib/tools/qbitarray.cpp @@ -173,7 +173,7 @@ int QBitArray::count(bool on) const while (len >= 24) { quint32 v = quint32(bits[0]) | (quint32(bits[1]) << 8) | (quint32(bits[2]) << 16); quint32 c = ((v & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f; - c += (((v & 0xfff000) >> 12) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f; + c += (((v & 0xfff000) >> 12) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f; len -= 24; bits += 3; numBits += int(c); @@ -467,7 +467,7 @@ QBitArray &QBitArray::operator&=(const QBitArray &other) resize(qMax(size(), other.size())); uchar *a1 = reinterpret_cast(d.data()) + 1; const uchar *a2 = reinterpret_cast(other.d.constData()) + 1; - int n = other.d.size() -1 ; + int n = other.d.size() -1 ; int p = d.size() - 1 - n; while (n-- > 0) *a1++ &= *a2++; @@ -496,7 +496,7 @@ QBitArray &QBitArray::operator|=(const QBitArray &other) resize(qMax(size(), other.size())); uchar *a1 = reinterpret_cast(d.data()) + 1; const uchar *a2 = reinterpret_cast(other.d.constData()) + 1; - int n = other.d.size() - 1; + int n = other.d.size() - 1; while (n-- > 0) *a1++ |= *a2++; return *this; diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp index 950d291986..dc3f5f3be9 100644 --- a/src/corelib/tools/qbytearray.cpp +++ b/src/corelib/tools/qbytearray.cpp @@ -397,7 +397,7 @@ static const quint16 crc_tbl[16] = { 0xc60c, 0xd68d, 0xe70e, 0xf78f }; -/*! +/*! \relates QByteArray Returns the CRC-16 checksum of the first \a len bytes of \a data. @@ -422,7 +422,7 @@ quint16 qChecksum(const char *data, uint len) return ~crc & 0xffff; } -/*! +/*! \fn QByteArray qCompress(const QByteArray& data, int compressionLevel) \relates QByteArray @@ -1370,7 +1370,7 @@ QByteArray::QByteArray(int size, char ch) } /*! - \internal + \internal Constructs a byte array of size \a size with uninitialized contents. */ @@ -1904,7 +1904,7 @@ QByteArray &QByteArray::replace(const QByteArray &before, const QByteArray &afte QByteArray aft = after; if (after.d == d) aft.detach(); - + return replace(before.constData(), before.size(), aft.constData(), aft.size()); } @@ -1921,7 +1921,7 @@ QByteArray &QByteArray::replace(const char *c, const QByteArray &after) QByteArray aft = after; if (after.d == d) aft.detach(); - + return replace(c, qstrlen(c), aft.constData(), aft.size()); } @@ -1954,7 +1954,7 @@ QByteArray &QByteArray::replace(const char *before, int bsize, const char *after memcpy(copy, before, bsize); b = copy; } - + QByteArrayMatcher matcher(before, bsize); int index = 0; int len = d->size; @@ -2044,8 +2044,8 @@ QByteArray &QByteArray::replace(const char *before, int bsize, const char *after ::free((char *)a); if (b != before) ::free((char *)b); - - + + return *this; } @@ -2274,7 +2274,7 @@ int QByteArray::indexOf(const char *c, int from) const const int ol = qstrlen(c); if (ol == 1) return indexOf(*c, from); - + const int l = d->size; if (from > d->size || ol + from > l) return -1; @@ -3580,7 +3580,7 @@ QByteArray QByteArray::toBase64() const return tmp; } -/*! +/*! \fn QByteArray &QByteArray::setNum(int n, int base) Sets the byte array to the printed value of \a n in base \a base (10 @@ -3597,21 +3597,21 @@ QByteArray QByteArray::toBase64() const \sa number(), toInt() */ -/*! +/*! \fn QByteArray &QByteArray::setNum(uint n, int base) \overload \sa toUInt() */ -/*! +/*! \fn QByteArray &QByteArray::setNum(short n, int base) \overload \sa toShort() */ -/*! +/*! \fn QByteArray &QByteArray::setNum(ushort n, int base) \overload @@ -3677,7 +3677,7 @@ QByteArray &QByteArray::setNum(qulonglong n, int base) return *this; } -/*! +/*! \overload Sets the byte array to the printed value of \a n, formatted in format @@ -3736,7 +3736,7 @@ QByteArray &QByteArray::setNum(double n, char f, int prec) return *this; } -/*! +/*! \fn QByteArray &QByteArray::setNum(float n, char f, int prec) \overload @@ -3806,7 +3806,7 @@ QByteArray QByteArray::number(qulonglong n, int base) return s; } -/*! +/*! \overload Returns a byte array that contains the printed value of \a n, diff --git a/src/corelib/tools/qcontiguouscache.cpp b/src/corelib/tools/qcontiguouscache.cpp index bfef234ae4..b92c4d3fe9 100644 --- a/src/corelib/tools/qcontiguouscache.cpp +++ b/src/corelib/tools/qcontiguouscache.cpp @@ -313,8 +313,8 @@ MyRecord record(int row) const In most cases it is better to use either at() or insert(). - \note This non-const overload of operator[] requires QContiguousCache - to make a deep copy. Use at() for read-only access to a non-const + \note This non-const overload of operator[] requires QContiguousCache + to make a deep copy. Use at() for read-only access to a non-const QContiguousCache. \sa insert(), at() diff --git a/src/corelib/tools/qcryptographichash.cpp b/src/corelib/tools/qcryptographichash.cpp index fdf2d1a620..32f5f0b33a 100644 --- a/src/corelib/tools/qcryptographichash.cpp +++ b/src/corelib/tools/qcryptographichash.cpp @@ -308,7 +308,7 @@ void QCryptographicHash::addData(const char *data, int length) sha3Update(&d->sha3Context, reinterpret_cast(data), length*8); break; #endif - } + } d->result.clear(); } @@ -350,7 +350,7 @@ bool QCryptographicHash::addData(QIODevice* device) */ QByteArray QCryptographicHash::result() const { - if (!d->result.isEmpty()) + if (!d->result.isEmpty()) return d->result; switch (d->method) { diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp index b8cd076cb6..ed756cbeb6 100644 --- a/src/corelib/tools/qhash.cpp +++ b/src/corelib/tools/qhash.cpp @@ -574,7 +574,7 @@ void QHashData::checkSanity() \fn uint qHash(const QPair &key, uint seed = 0) \since 5.0 \relates QHash - + Returns the hash value for the \a key, using \a seed to seed the calculation. Types \c T1 and \c T2 must be supported by qHash(). diff --git a/src/corelib/tools/qiterator.qdoc b/src/corelib/tools/qiterator.qdoc index 798d25e050..25914967a9 100644 --- a/src/corelib/tools/qiterator.qdoc +++ b/src/corelib/tools/qiterator.qdoc @@ -25,7 +25,7 @@ ** ****************************************************************************/ -/*! +/*! \class QListIterator \inmodule QtCore @@ -78,7 +78,7 @@ \sa QMutableListIterator, QList::const_iterator */ -/*! +/*! \class QLinkedListIterator \inmodule QtCore @@ -126,7 +126,7 @@ \sa QMutableLinkedListIterator, QLinkedList::const_iterator */ -/*! +/*! \class QVectorIterator \inmodule QtCore \brief The QVectorIterator class provides a Java-style const iterator for QVector and QStack. @@ -178,7 +178,7 @@ \sa QMutableVectorIterator, QVector::const_iterator */ -/*! +/*! \class QSetIterator \inmodule QtCore \brief The QSetIterator class provides a Java-style const iterator for QSet. @@ -225,7 +225,7 @@ \sa QMutableSetIterator, QSet::const_iterator */ -/*! +/*! \class QMutableListIterator \inmodule QtCore @@ -291,7 +291,7 @@ \sa QListIterator, QList::iterator */ -/*! +/*! \class QMutableLinkedListIterator \inmodule QtCore @@ -352,7 +352,7 @@ \sa QLinkedListIterator, QLinkedList::iterator */ -/*! +/*! \class QMutableVectorIterator \inmodule QtCore @@ -418,7 +418,7 @@ \sa QVectorIterator, QVector::iterator */ -/*! +/*! \class QMutableSetIterator \inmodule QtCore \since 4.2 @@ -869,7 +869,7 @@ \sa remove(), setValue() */ -/*! +/*! \class QMapIterator \inmodule QtCore @@ -921,7 +921,7 @@ \sa QMutableMapIterator, QMap::const_iterator */ -/*! +/*! \class QHashIterator \inmodule QtCore @@ -973,7 +973,7 @@ \sa QMutableHashIterator, QHash::const_iterator */ -/*! +/*! \class QMutableMapIterator \inmodule QtCore @@ -1038,7 +1038,7 @@ \sa QMapIterator, QMap::iterator */ -/*! +/*! \class QMutableHashIterator \inmodule QtCore diff --git a/src/corelib/tools/qline.cpp b/src/corelib/tools/qline.cpp index 5d8368e930..3fb958fae6 100644 --- a/src/corelib/tools/qline.cpp +++ b/src/corelib/tools/qline.cpp @@ -374,7 +374,7 @@ QDataStream &operator>>(QDataStream &stream, QLine &line) \value UnboundedIntersection The two lines intersect, but not within the range defined by their lengths. This will be the case - if the lines are not parallel. + if the lines are not parallel. intersect() will also return this value if the intersect point is within the start and end point of only one of the lines. @@ -499,9 +499,9 @@ QDataStream &operator>>(QDataStream &stream, QLine &line) Sets the length of the line to the given \a length. QLineF will move the end point - p2() - of the line to give the line its new length. - + If the line is a null line, the length will remain zero regardless - of the length specified. + of the length specified. \sa length(), isNull() */ diff --git a/src/corelib/tools/qmargins.cpp b/src/corelib/tools/qmargins.cpp index 6e7b541110..2cdc3f3f03 100644 --- a/src/corelib/tools/qmargins.cpp +++ b/src/corelib/tools/qmargins.cpp @@ -51,7 +51,7 @@ QT_BEGIN_NAMESPACE \ingroup painting \since 4.6 - \brief The QMargins class defines the four margins of a rectangle. + \brief The QMargins class defines the four margins of a rectangle. QMargin defines a set of four margins; left, top, right and bottom, that describe the size of the borders surrounding a rectangle. diff --git a/src/corelib/tools/qpair.qdoc b/src/corelib/tools/qpair.qdoc index 55353dc258..b0caf1aaf0 100644 --- a/src/corelib/tools/qpair.qdoc +++ b/src/corelib/tools/qpair.qdoc @@ -31,7 +31,7 @@ \brief The QPair class is a template class that stores a pair of items. \ingroup tools - + QPair\ can be used in your application if the STL \c pair type is not available. It stores one value of type T1 and one value of type T2. It can be used as a return value for a diff --git a/src/corelib/tools/qregexp.cpp b/src/corelib/tools/qregexp.cpp index cbb3580024..83e87ff637 100644 --- a/src/corelib/tools/qregexp.cpp +++ b/src/corelib/tools/qregexp.cpp @@ -298,7 +298,7 @@ int qFindString(const QChar *haystack, int haystackLen, int from, Square brackets mean match any character contained in the square brackets. The character set abbreviations described above can appear in a character set in square brackets. Except for the - character set abbreviations and the following two exceptions, + character set abbreviations and the following two exceptions, characters do not have special meanings in square brackets. \table diff --git a/src/corelib/tools/qringbuffer_p.h b/src/corelib/tools/qringbuffer_p.h index 9c952fea21..b17c6d2f40 100644 --- a/src/corelib/tools/qringbuffer_p.h +++ b/src/corelib/tools/qringbuffer_p.h @@ -375,7 +375,7 @@ public: --tailBuffer; } bufferSize -= qba.length(); - return qba; + return qba; } // append a new buffer to the end diff --git a/src/corelib/tools/qset.qdoc b/src/corelib/tools/qset.qdoc index cd90b4949b..c1351943e1 100644 --- a/src/corelib/tools/qset.qdoc +++ b/src/corelib/tools/qset.qdoc @@ -130,7 +130,7 @@ \fn QSet &QSet::operator=(const QSet &other) Assigns the \a other set to this set and returns a reference to - this set. + this set. */ /*! @@ -306,7 +306,7 @@ Returns a non-const iterator positioned at the item \a value in the set. If the set contains no item \a value, the function - returns end(). + returns end(). */ /*! \fn QSet::const_iterator QSet::constFind(const T &value) const @@ -351,7 +351,7 @@ \overload Returns a non-const \l{STL-style iterators}{STL-style iterator} positioned at the first - item in the set. + item in the set. */ /*! \fn QSet::const_iterator QSet::cbegin() const @@ -496,7 +496,7 @@ /*! \fn QSet &QSet::subtract(const QSet &other) - Removes all items from this set that are contained in the + Removes all items from this set that are contained in the \a other set. Returns a reference to this set. \sa operator-=(), unite(), intersect() @@ -506,7 +506,7 @@ \fn bool QSet::empty() const Returns true if the set is empty. This function is provided - for STL compatibility. It is equivalent to isEmpty(). + for STL compatibility. It is equivalent to isEmpty(). */ /*! @@ -529,7 +529,7 @@ /*! \fn QSet &QSet::operator-=(const T &value) - Removes the occurrence of item \a value from the set, if + Removes the occurrence of item \a value from the set, if it is found, and returns a reference to the set. If the \a value is not contained the set, nothing is removed. @@ -559,7 +559,7 @@ \overload Same as intersect(\e{other}), if we consider \e{other} to be a set - that contains the singleton \a value. + that contains the singleton \a value. */ @@ -575,7 +575,7 @@ \fn QSet QSet::operator|(const QSet &other) const \fn QSet QSet::operator+(const QSet &other) const - Returns a new QSet that is the union of this set and the + Returns a new QSet that is the union of this set and the \a other set. \sa unite(), operator|=(), operator&(), operator-() @@ -622,7 +622,7 @@ iterators are slightly faster, and can improve code readability. QSet\::iterator allows you to iterate over a QSet\ and - modify it as you go (using QSet::erase()). However, + modify it as you go (using QSet::erase()). However, The default QSet::iterator constructor creates an uninitialized iterator. You must initialize it using a function like @@ -701,7 +701,7 @@ \sa QSet::begin(), QSet::end() */ -/*! +/*! \fn QSet::iterator::iterator(typename Hash::iterator i) \fn QSet::const_iterator::const_iterator(typename Hash::const_iterator i) diff --git a/src/corelib/tools/qshareddata.cpp b/src/corelib/tools/qshareddata.cpp index 8205560781..cee0c1d450 100644 --- a/src/corelib/tools/qshareddata.cpp +++ b/src/corelib/tools/qshareddata.cpp @@ -43,7 +43,7 @@ QT_BEGIN_NAMESPACE -/*! +/*! \class QSharedData \inmodule QtCore \brief The QSharedData class is a base class for shared data objects. @@ -66,7 +66,7 @@ QT_BEGIN_NAMESPACE \a other is ignored. */ -/*! +/*! \class QSharedDataPointer \inmodule QtCore \brief The QSharedDataPointer class represents a pointer to an implicitly shared object. @@ -395,7 +395,7 @@ QT_BEGIN_NAMESPACE return the proper polymorphic type. */ -/*! +/*! \class QExplicitlySharedDataPointer \inmodule QtCore \brief The QExplicitlySharedDataPointer class represents a pointer to an explicitly shared object. diff --git a/src/corelib/tools/qtextboundaryfinder.cpp b/src/corelib/tools/qtextboundaryfinder.cpp index 5e8aed579d..eb861b7289 100644 --- a/src/corelib/tools/qtextboundaryfinder.cpp +++ b/src/corelib/tools/qtextboundaryfinder.cpp @@ -84,7 +84,7 @@ static void init(QTextBoundaryFinder::BoundaryType type, const QChar *chars, int QUnicodeTools::initCharAttributes(string, length, scriptItems.data(), scriptItems.count(), attributes, options); } -/*! +/*! \class QTextBoundaryFinder \inmodule QtCore diff --git a/src/corelib/tools/qvector.cpp b/src/corelib/tools/qvector.cpp index e72c1964a2..725cf894c6 100644 --- a/src/corelib/tools/qvector.cpp +++ b/src/corelib/tools/qvector.cpp @@ -435,7 +435,7 @@ Same as at(\a i). */ -/*! +/*! \fn void QVector::append(const T &value) Inserts \a value at the end of the vector. -- cgit v1.2.3 From d1b4857d1718ef50dba64c8700253fed5d187ab2 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sun, 10 Mar 2013 13:34:52 -0700 Subject: Make sure that we #include qconfig.h before testing for features. This is mandatory in public headers (qiodevice.h, qopengl*, etc.), but it's a good idea even in private headers, in case someone includes that header first somewhere. In particular, all platformsupport API is private. Change-Id: If287baa5d9ed14e93c1666efa0e6332c4c1cd9a4 Reviewed-by: Lars Knoll Reviewed-by: Oswald Buddenhagen --- src/corelib/tools/qregexp.h | 2 ++ src/corelib/tools/qregularexpression.h | 2 ++ 2 files changed, 4 insertions(+) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qregexp.h b/src/corelib/tools/qregexp.h index acf59d7196..26b0b78317 100644 --- a/src/corelib/tools/qregexp.h +++ b/src/corelib/tools/qregexp.h @@ -42,6 +42,8 @@ #ifndef QREGEXP_H #define QREGEXP_H +#include + #ifndef QT_NO_REGEXP #include diff --git a/src/corelib/tools/qregularexpression.h b/src/corelib/tools/qregularexpression.h index 97dbee9256..5059ea6431 100644 --- a/src/corelib/tools/qregularexpression.h +++ b/src/corelib/tools/qregularexpression.h @@ -43,6 +43,8 @@ #ifndef QREGULAREXPRESSION_H #define QREGULAREXPRESSION_H +#include + #ifndef QT_NO_REGULAREXPRESSION #include -- cgit v1.2.3 From 0d866c35d65ba39b1df79238fb9634c026453aa1 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 16 Mar 2013 09:17:57 +0200 Subject: QLocalePrivate: Add convenience language/script/country to code helpers Change-Id: Id9126a95f1b3a75f510e642ab08c68cefaf3d142 Reviewed-by: Lars Knoll Reviewed-by: John Layt --- src/corelib/tools/qlocale.cpp | 20 ++++++++++---------- src/corelib/tools/qlocale_p.h | 12 ++++++++---- 2 files changed, 18 insertions(+), 14 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp index 454025f54d..63028cff66 100644 --- a/src/corelib/tools/qlocale.cpp +++ b/src/corelib/tools/qlocale.cpp @@ -164,14 +164,14 @@ QLocale::Country QLocalePrivate::codeToCountry(const QString &code) return QLocale::AnyCountry; } -QString QLocalePrivate::languageCode() const +QString QLocalePrivate::languageToCode(QLocale::Language language) { - if (m_data->m_language_id == QLocale::AnyLanguage) + if (language == QLocale::AnyLanguage) return QString(); - if (m_data->m_language_id == QLocale::C) + if (language == QLocale::C) return QLatin1String("C"); - const unsigned char *c = language_code_list + 3*(uint(m_data->m_language_id)); + const unsigned char *c = language_code_list + 3*(uint(language)); QString code(c[2] == 0 ? 2 : 3, Qt::Uninitialized); @@ -183,20 +183,20 @@ QString QLocalePrivate::languageCode() const return code; } -QString QLocalePrivate::scriptCode() const +QString QLocalePrivate::scriptToCode(QLocale::Script script) { - if (m_data->m_script_id == QLocale::AnyScript || m_data->m_script_id > QLocale::LastScript) + if (script == QLocale::AnyScript || script > QLocale::LastScript) return QString(); - const unsigned char *c = script_code_list + 4*(uint(m_data->m_script_id)); + const unsigned char *c = script_code_list + 4*(uint(script)); return QString::fromLatin1((const char *)c, 4); } -QString QLocalePrivate::countryCode() const +QString QLocalePrivate::countryToCode(QLocale::Country country) { - if (m_data->m_country_id == QLocale::AnyCountry) + if (country == QLocale::AnyCountry) return QString(); - const unsigned char *c = country_code_list + 3*(uint(m_data->m_country_id)); + const unsigned char *c = country_code_list + 3*(uint(country)); QString code(c[2] == 0 ? 2 : 3, Qt::Uninitialized); diff --git a/src/corelib/tools/qlocale_p.h b/src/corelib/tools/qlocale_p.h index ff44dcc163..4c0432bba7 100644 --- a/src/corelib/tools/qlocale_p.h +++ b/src/corelib/tools/qlocale_p.h @@ -234,10 +234,14 @@ public: QString bcp47Name() const; - QString languageCode() const; // ### QByteArray::fromRawData would be more optimal - QString scriptCode() const; - QString countryCode() const; - + // ### QByteArray::fromRawData would be more optimal + inline QString languageCode() const { return QLocalePrivate::languageToCode(QLocale::Language(m_data->m_language_id)); } + inline QString scriptCode() const { return QLocalePrivate::scriptToCode(QLocale::Script(m_data->m_script_id)); } + inline QString countryCode() const { return QLocalePrivate::countryToCode(QLocale::Country(m_data->m_country_id)); } + + static QString languageToCode(QLocale::Language language); + static QString scriptToCode(QLocale::Script script); + static QString countryToCode(QLocale::Country country); static QLocale::Language codeToLanguage(const QString &code); static QLocale::Script codeToScript(const QString &code); static QLocale::Country codeToCountry(const QString &code); -- cgit v1.2.3