Support for UTF-8 Identifiers
authorEdward Slavin <eslavin@nvidia.com>
Thu, 7 Dec 2023 15:23:44 +0000 (10:23 -0500)
committerEdward Slavin <eslavin@nvidia.com>
Wed, 3 Jan 2024 21:25:14 +0000 (16:25 -0500)
- Added UTF-8 character class support to Path parser
- Added UTF-8 based validation rules for SDF identifier methods
- Added UTF-8 support to lex-based text file format lexer
- Added tests for UTF-8 based identifiers

14 files changed:
pxr/usd/sdf/path.cpp
pxr/usd/sdf/pathParser.h
pxr/usd/sdf/schema.cpp
pxr/usd/sdf/testenv/testSdfParsing.py
pxr/usd/sdf/testenv/testSdfParsing.testenv/217_utf8_identifiers.sdf [new file with mode: 0644]
pxr/usd/sdf/testenv/testSdfParsing.testenv/218_utf8_bad_identifier.sdf [new file with mode: 0644]
pxr/usd/sdf/testenv/testSdfParsing.testenv/219_utf8_bad_type_name.sdf [new file with mode: 0644]
pxr/usd/sdf/testenv/testSdfParsing.testenv/baseline/217_utf8_identifiers.sdf [new file with mode: 0644]
pxr/usd/sdf/testenv/testSdfPath.py
pxr/usd/sdf/testenv/testSdfPath2.py
pxr/usd/sdf/testenv/testSdfPathParser.cpp
pxr/usd/sdf/textFileFormat.lex.cpp
pxr/usd/sdf/textFileFormat.ll
pxr/usd/sdf/tokens.h

index 987876571c585b291710a637198c2660f5d4fc08..949e2900dcf3e6e93a3cba3861ad3e57175d4443 100644 (file)
@@ -34,6 +34,7 @@
 #include "pxr/base/tf/staticData.h"
 #include "pxr/base/tf/stl.h"
 #include "pxr/base/tf/stringUtils.h"
+#include "pxr/base/tf/unicodeUtils.h"
 #include "pxr/base/tf/type.h"
 
 #include "pxr/base/trace/trace.h"
@@ -117,6 +118,7 @@ private:
 
 } // anon
 
+static inline bool _IsValidIdentifier(const std::string_view& name);
 static inline bool _IsValidIdentifier(TfToken const &name);
 
 // XXX: Enable this define to make bad path strings
@@ -1787,48 +1789,90 @@ SdfPath::MakeRelativePath(const SdfPath & anchor) const
     return result;
 }
 
-static inline bool _IsValidIdentifier(TfToken const &name)
+static
+inline bool 
+_IsValidIdentifier(const std::string_view& name)
 {
-    return TfIsValidIdentifier(name.GetString());
+    // empty strings are not valid identifiers
+    if (name.empty())
+    {
+        return false;
+    }
+
+    TfUtf8CodePointView view {name};
+    bool first = true;
+    for (const uint32_t codePoint : view)
+    {
+        bool result = first ? 
+            ((codePoint == SDF_UNDERSCORE_CODE_POINT) ||
+                TfIsUtf8CodePointXidStart(codePoint))
+            : TfIsUtf8CodePointXidContinue(codePoint);
+
+        if (!result)
+        {
+            return false;
+        }
+
+        first = false;
+    }
+
+    return true;
 }
 
-bool
-SdfPath::IsValidIdentifier(const std::string &name)
+static
+inline bool 
+_IsValidIdentifier(TfToken const &name)
 {
-    return TfIsValidIdentifier(name);
+    return _IsValidIdentifier(name.GetString());
 }
 
-// We use our own _IsAlpha and _IsAlnum here for two reasons.  One, we want to
-// ensure that they follow C/Python identifier rules and are not subject to
-// various locale differences.  And two, since we are not consulting a locale,
-// it is faster.
-static constexpr bool _IsAlpha(int x) {
-    return ('a' <= (x|32)) && ((x|32) <= 'z');
-}
-static constexpr bool _IsAlnum(int x) {
-    return _IsAlpha(x) || (('0' <= x) && (x <= '9'));
+bool
+SdfPath::IsValidIdentifier(const std::string &name)
+{
+    return _IsValidIdentifier(name);
 }
 
 bool
 SdfPath::IsValidNamespacedIdentifier(const std::string &name)
 {
+    // empty strings are not valid identifiers
+    if (name.empty())
+    {
+        return false;
+    }
+
     // A valid C/Python identifier except we also allow the namespace delimiter
     // and if we tokenize on that delimiter then all tokens are valid C/Python
-    // identifiers.  That means following a delimiter there must be an '_' or
-    // alphabetic character.
-    constexpr char delim = SDF_PATH_NS_DELIMITER_CHAR;
-    for (char const *p = name.c_str(); *p; ++p) {
-        if (!_IsAlpha(*p) && *p != '_') {
+    // identifiers.
+    std::string_view remainder {name};
+    while (!remainder.empty()) {
+        const auto index = remainder.find(':');
+        
+        // can't start with ':'
+        if (index == 0) {
             return false;
         }
-        for (++p; _IsAlnum(*p) ||*p == '_'; ++p) {
-            /* consume identifier */
+
+        // can't end with ':'
+        if (index == remainder.size() - 1) {
+            return false;
         }
-        if (*p != delim) {
-            return !*p;
+
+        // substring must be a valid identifier
+        if (!_IsValidIdentifier(remainder.substr(0, index))) {
+            return false;
         }
+
+        // if ':' wasn't found, we are done
+        if (index == std::string_view::npos) {
+            break;
+        }
+
+        // otherwise check the next substring
+        remainder = remainder.substr(index + 1);
     }
-    return false;
+
+    return true;
 }
 
 std::vector<std::string>
@@ -1840,40 +1884,53 @@ SdfPath::TokenizeIdentifier(const std::string &name)
     const char namespaceDelimiter =
         SdfPathTokens->namespaceDelimiter.GetText()[0];
 
-    std::string::const_iterator first = name.begin();
-    std::string::const_iterator last = name.end();
-
-    // Not empty and first character is alpha or '_'.
-    if (first == last || !(isalpha(*first) || (*first == '_')))
+    // Empty or last character is namespace delimiter
+    if (name.empty() || name.back() == namespaceDelimiter)
+    {
         return result;
-    // Last character is not the namespace delimiter.
-    if (*(last - 1) == namespaceDelimiter)
+    }
+
+    TfUtf8CodePointView view {name};
+    TfUtf8CodePointIterator iterator = view.begin();
+    TfUtf8CodePointIterator anchor = iterator;
+    
+    // Check first character is in XidStart or '_'
+    if(!TfIsUtf8CodePointXidStart(*iterator) &&
+        *iterator != SDF_UNDERSCORE_CODE_POINT)
+    {
         return result;
+    }
 
     // Count delimiters and reserve space in result.
-    result.reserve(1 + std::count(first, last, namespaceDelimiter));
+    result.reserve(1 + std::count(name.begin(), name.end(),
+        namespaceDelimiter));
 
-    std::string::const_iterator anchor = first;
-    for (++first; first != last; ++first) {
+    for (++iterator; iterator != view.end(); ++iterator)
+    {
         // Allow a namespace delimiter.
-        if (*first == namespaceDelimiter) {
+        if (*iterator == SDF_NAMESPACE_DELIMITER_CODE_POINT)
+        {
             // Record token.
-            result.push_back(std::string(anchor, first));
+            result.push_back(std::string(anchor.GetBase(), iterator.GetBase()));
 
             // Skip delimiter.  We know we will not go beyond the end of
             // the string because we checked before the loop that the
             // last character was not the delimiter.
-            anchor = ++first;
+            anchor = ++iterator;
 
             // First character.
-            if (!(isalpha(*first) || (*first == '_'))) {
+            if (!TfIsUtf8CodePointXidStart(*iterator) && 
+                *iterator != SDF_UNDERSCORE_CODE_POINT)
+            {
                 TfReset(result);
                 return result;
             }
         }
-        else {
-            // Next character 
-            if (!(isalnum(*first) || (*first == '_'))) {
+        else
+        {
+            // Next character
+            if (!TfIsUtf8CodePointXidContinue(*iterator))
+            {
                 TfReset(result);
                 return result;
             }
@@ -1881,7 +1938,7 @@ SdfPath::TokenizeIdentifier(const std::string &name)
     }
 
     // Record the last token.
-    result.push_back(std::string(anchor, first));
+    result.push_back(std::string(anchor.GetBase(), iterator.GetBase()));
 
     return result;
 }
index 1bb6f1c09f2a1bd9bf53e85180283d7fe9cd8051..d4ae61eae92ddd6533c8f4a44c5ba01d38a30646 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "pxr/pxr.h"
 #include "pxr/base/tf/stringUtils.h"
+#include "pxr/base/tf/unicodeUtils.h"
 #include "pxr/usd/sdf/path.h"
 
 #include "pxr/base/tf/pxrPEGTL/pegtl.h"
@@ -39,6 +40,60 @@ namespace Sdf_PathParser {
 
 namespace PEGTL_NS = tao::TAO_PEGTL_NAMESPACE;
 
+////////////////////////////////////////////////////////////////////////
+// Helper rules for parsing UTF8 content
+struct XidStart
+{
+    template <typename ParseInput>
+    static bool match(ParseInput& in)
+    {
+        if (!in.empty())
+        {
+            // peek at the next character in the input
+            // if the size is not 0, it was a valid code point
+            auto utf8_char = tao::TAO_PEGTL_NAMESPACE::internal::peek_utf8::peek(in);
+            if (utf8_char.size != 0)
+            {
+                // valid utf8_char, data has the code point
+                if (TfIsUtf8CodePointXidStart(static_cast<uint32_t>(utf8_char.data)))
+                {
+                    // it has the property we want, consume the input
+                    in.bump(utf8_char.size);
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+};
+
+struct XidContinue
+{
+    template <typename ParseInput>
+    static bool match(ParseInput& in)
+    {
+        if (!in.empty())
+        {
+            // peek at the next character in the input
+            // if the size is not 0, it was a valid code point
+            auto utf8_char = tao::TAO_PEGTL_NAMESPACE::internal::peek_utf8::peek(in);
+            if (utf8_char.size != 0)
+            {
+                // valid utf8_char, data has the code point
+                if (TfIsUtf8CodePointXidContinue(static_cast<uint32_t>(utf8_char.data)))
+                {
+                    // it has the property we want, consume the input
+                    in.bump(utf8_char.size); 
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+};
+
 ////////////////////////////////////////////////////////////////////////
 // SdfPath grammar:
 
@@ -51,21 +106,31 @@ struct ReflexiveRelative : Dot {};
 
 struct DotDots : PEGTL_NS::list<DotDot, Slash> {};
 
-struct PrimName : PEGTL_NS::identifier {};
+// valid identifiers start with an '_' character or anything in the XidStart
+// character class, then continue with zero or more characters in the
+// XidContinue character class
+struct Utf8IdentifierStart : PEGTL_NS::sor<
+    PEGTL_NS::one<'_'>,
+    XidStart> {};
+struct Utf8Identifier : PEGTL_NS::seq<
+    Utf8IdentifierStart,
+    PEGTL_NS::star<XidContinue>> {};
+
+struct PrimName : Utf8Identifier {};
 
 // XXX This replicates old behavior where '-' chars are allowed in variant set
 // names in SdfPaths, but variant sets in layers cannot have '-' in their names.
 // For now we preserve the behavior. Internal bug USD-8321 tracks removing
 // support for '-' characters in variant set names in SdfPath.
 struct VariantSetName :
-    PEGTL_NS::seq<PEGTL_NS::identifier_first,
+    PEGTL_NS::seq<Utf8IdentifierStart,
     PEGTL_NS::star<PEGTL_NS::sor<
-    PEGTL_NS::identifier_other, PEGTL_NS::one<'-'>>>> {};
+    XidContinue, PEGTL_NS::one<'-'>>>> {};
 
 struct VariantName :
     PEGTL_NS::seq<PEGTL_NS::opt<
     PEGTL_NS::one<'.'>>, PEGTL_NS::star<
-    PEGTL_NS::sor<PEGTL_NS::identifier_other,
+    PEGTL_NS::sor<XidContinue,
     PEGTL_NS::one<'|', '-'>>>> {};
 
 struct VarSelOpen : PEGTL_NS::pad<PEGTL_NS::one<'{'>, PEGTL_NS::blank> {};
@@ -88,7 +153,7 @@ struct PrimElts : PEGTL_NS::seq<
     LookaheadList<PrimName, PEGTL_NS::sor<Slash, VariantSelections>>,
     PEGTL_NS::opt<VariantSelections>> {};
 
-struct PropertyName : PEGTL_NS::list<PEGTL_NS::identifier, PEGTL_NS::one<':'>> {};
+struct PropertyName : PEGTL_NS::list<Utf8Identifier, PEGTL_NS::one<':'>> {};
 
 struct MapperPath;
 struct TargetPath;
index 145c1705645397fe5f29db4c9f0ffc4eff3f1598..78794d08543d26a1c9a0e194204fb4db43930ed0 100644 (file)
@@ -28,6 +28,7 @@
 #include "pxr/usd/sdf/layerOffset.h"
 #include "pxr/usd/sdf/parserValueContext.h"
 #include "pxr/usd/sdf/pathExpression.h"
+#include "pxr/usd/sdf/pathParser.h"
 #include "pxr/usd/sdf/payload.h"
 #include "pxr/usd/sdf/reference.h"
 #include "pxr/usd/sdf/schemaTypeRegistration.h"
@@ -41,6 +42,7 @@
 #include "pxr/base/tf/diagnostic.h"
 #include "pxr/base/tf/envSetting.h"
 #include "pxr/base/tf/instantiateSingleton.h"
+#include "pxr/base/tf/unicodeUtils.h"
 #include "pxr/base/trace/trace.h"
 #include "pxr/base/vt/dictionary.h"
 
@@ -1287,28 +1289,34 @@ SdfSchemaBase::IsValidNamespacedIdentifier(const std::string& identifier)
 SdfAllowed
 SdfSchemaBase::IsValidVariantIdentifier(const std::string& identifier)
 {
-    // Allow [[:alnum:]_|\-]+ with an optional leading dot.
-
-    std::string::const_iterator first = identifier.begin();
-    std::string::const_iterator last = identifier.end();
-
-    // Allow optional leading dot.
-    if (first != last && *first == '.') {
-        ++first;
-    }
+    // use the path parser rules to determine validity of variant name
+    Sdf_PathParser::PPContext context;
+    bool result = false;
+    try
+    {
+        result = Sdf_PathParser::PEGTL_NS::parse<
+            Sdf_PathParser::PEGTL_NS::must<Sdf_PathParser::VariantName,
+            Sdf_PathParser::PEGTL_NS::eof>>(
+                Sdf_PathParser::PEGTL_NS::string_input<> {identifier, ""}, context);
 
-    for (; first != last; ++first) {
-        char c = *first;
-        if (!(isalnum(c) || (c == '_') || (c == '|') || (c == '-'))) {
+        if (!result)
+        {
             return SdfAllowed(TfStringPrintf(
-                    "\"%s\" is not a valid variant "
-                    "name due to '%c' at index %d",
-                    identifier.c_str(),
-                    c,
-                    (int)(first - identifier.begin())));
+                "\"%s\" is not a valid variant name",
+                identifier.c_str()));
         }
     }
+    catch(const Sdf_PathParser::PEGTL_NS::parse_error& e)
+    {
+        return SdfAllowed(TfStringPrintf(
+            "\"%s\" is not a valid variant "
+            "name due to '%s'",
+            identifier.c_str(),
+            e.what()));
 
+        return false;
+    }
+    
     return true;
 }
 
index 12eead870bdf21a84aaf645e426a051e7be1b804..42e7deb4c47f4d1ab2427e2d1f934254da3f6d9a 100644 (file)
@@ -64,6 +64,9 @@ class TestSdfParsing(unittest.TestCase):
         # This will mean that your new test runs first and you can spot
         # failures much quicker.
         testFiles = '''
+        219_utf8_bad_type_name.sdf
+        218_utf8_bad_identifier.sdf
+        217_utf8_identifiers.sdf
         216_bad_variant_in_relocates_path.sdf
         215_bad_variant_in_specializes_path.sdf
         214_bad_variant_in_inherits_path.sdf
diff --git a/pxr/usd/sdf/testenv/testSdfParsing.testenv/217_utf8_identifiers.sdf b/pxr/usd/sdf/testenv/testSdfParsing.testenv/217_utf8_identifiers.sdf
new file mode 100644 (file)
index 0000000..da89681
--- /dev/null
@@ -0,0 +1,23 @@
+#sdf 1.4.32
+(
+    defaultPrim = "_Süßigkeiten"
+    doc = """Tests UTF-8 content in prim names and custom data."""
+)
+
+def Xform "_Süßigkeiten" (
+    customData = {
+        int "存在する" = 7
+    }
+)
+{
+    custom double3 xformOp:translate = (4, 5, 6)
+    uniform token[] xformOpOrder = ["xformOp:translate"]
+    string utf8_情報 = "._جيد"
+
+    def Sphere "ⅈ573"
+    {
+        float3[] extent = [(-2, -2, -2), (2, 2, 2)]
+        color3f[] primvars:displayColor = [(0, 0, 1)]
+        double radius = 2
+    }
+}
\ No newline at end of file
diff --git a/pxr/usd/sdf/testenv/testSdfParsing.testenv/218_utf8_bad_identifier.sdf b/pxr/usd/sdf/testenv/testSdfParsing.testenv/218_utf8_bad_identifier.sdf
new file mode 100644 (file)
index 0000000..4873ac6
--- /dev/null
@@ -0,0 +1,25 @@
+#sdf 1.4.32
+(
+    defaultPrim = "_Süßigkeiten"
+    doc = """Tests UTF-8 content in prim names and custom data."""
+)
+
+# this prim has a bad identifier name (XID_Start, 3 XID_Continue, neither)
+def Xform "㤼01৪∫" (
+    customData = {
+        int "存在する" = 7
+    }
+)
+{
+    custom double3 xformOp:translate = (4, 5, 6)
+    uniform token[] xformOpOrder = ["xformOp:translate"]
+    string utf8_情報 = "._جيد"
+
+    def Sphere "ⅈ573"
+    {
+        float3[] extent = [(-2, -2, -2), (2, 2, 2)]
+        color3f[] primvars:displayColor = [(0, 0, 1)]
+        double radius = 2
+    }
+}
+
diff --git a/pxr/usd/sdf/testenv/testSdfParsing.testenv/219_utf8_bad_type_name.sdf b/pxr/usd/sdf/testenv/testSdfParsing.testenv/219_utf8_bad_type_name.sdf
new file mode 100644 (file)
index 0000000..66288d7
--- /dev/null
@@ -0,0 +1,25 @@
+#sdf 1.4.32
+(
+    defaultPrim = "_Süßigkeiten"
+    doc = """Tests UTF-8 content in prim names and custom data."""
+)
+
+def Xform "_Süßigkeiten" (
+    customData = {
+        int "存在する" = 7
+    }
+)
+{
+    # this type name is a bad identifier
+    # has a character in XID_Start, 3 in XID_Continue, and 1 in neither
+    custom 㤼01৪∫ xformOp:translate = (4, 5, 6)
+    uniform token[] xformOpOrder = ["xformOp:translate"]
+    string utf8_情報 = "._جيد"
+
+    def Sphere "ⅈ573"
+    {
+        float3[] extent = [(-2, -2, -2), (2, 2, 2)]
+        color3f[] primvars:displayColor = [(0, 0, 1)]
+        double radius = 2
+    }
+}
\ No newline at end of file
diff --git a/pxr/usd/sdf/testenv/testSdfParsing.testenv/baseline/217_utf8_identifiers.sdf b/pxr/usd/sdf/testenv/testSdfParsing.testenv/baseline/217_utf8_identifiers.sdf
new file mode 100644 (file)
index 0000000..c2a524d
--- /dev/null
@@ -0,0 +1,24 @@
+#sdf 1.4.32
+(
+    defaultPrim = "_Süßigkeiten"
+    doc = "Tests UTF-8 content in prim names and custom data."
+)
+
+def Xform "_Süßigkeiten" (
+    customData = {
+        int "存在する" = 7
+    }
+)
+{
+    string utf8_情報 = "._جيد"
+    custom double3 xformOp:translate = (4, 5, 6)
+    uniform token[] xformOpOrder = ["xformOp:translate"]
+
+    def Sphere "ⅈ573"
+    {
+        float3[] extent = [(-2, -2, -2), (2, 2, 2)]
+        color3f[] primvars:displayColor = [(0, 0, 1)]
+        double radius = 2
+    }
+}
+
index b45eb2a36f7ae95b1629def1abafaf6645a4a285..9d1589e89af8ff7266271becc59dcbf929f6574e 100644 (file)
@@ -63,7 +63,6 @@ class TestSdfPath(unittest.TestCase):
             123test
             /Foo:Bar
             /Foo.bar.mapper[/Targ.attr].arg:name:space
-            /root_utf8_umlaute_ß_3
             '''.split()
         for badPath in badPaths:
             self.assertTrue(Sdf.Path(badPath).isEmpty)
@@ -115,10 +114,14 @@ class TestSdfPath(unittest.TestCase):
             "Foo.bar[targ.attr].boom",
             "/A/B/C.rel3[/Blah].attr3",
             "A/B.rel2[/A/B/C.rel3[/Blah].attr3].attr2",
-            "/A.rel1[/A/B.rel2[/A/B/C.rel3[/Blah].attr3].attr2].attr1"
+            "/A.rel1[/A/B.rel2[/A/B/C.rel3[/Blah].attr3].attr2].attr1",
+            "/root_utf8_umlaute_ß_3",
+            "Süßigkeiten.bar",
+            "/ß34/情報/información",
+            "情報._جيد"
         ]
-        testAbsolute = [True, False, False, False, False, False, True, False, False, False, True, False, False, False, True, False, True]
-        testProperty = [True, False, False, True, True, True, False, True, False, True, True, True, True, True, True, True, True]
+        testAbsolute = [True, False, False, False, False, False, True, False, False, False, True, False, False, False, True, False, True, True, False, True, False]
+        testProperty = [True, False, False, True, True, True, False, True, False, True, True, True, True, True, True, True, True, False, True, False, True]
         testElements = [
             ["Foo", "Bar", ".baz"],
             ["Foo"],
@@ -136,7 +139,11 @@ class TestSdfPath(unittest.TestCase):
             ["Foo", ".bar", "[targ.attr]", ".boom"],
             ["A", "B", "C", ".rel3", "[/Blah]", ".attr3"],
             ["A", "B", ".rel2", "[/A/B/C.rel3[/Blah].attr3]", ".attr2"],
-            ["A", ".rel1", "[/A/B.rel2[/A/B/C.rel3[/Blah].attr3].attr2]", ".attr1"]
+            ["A", ".rel1", "[/A/B.rel2[/A/B/C.rel3[/Blah].attr3].attr2]", ".attr1"],
+            ["root_utf8_umlaute_ß_3"],
+            ["Süßigkeiten", ".bar"],
+            ["ß34", "情報", "información"],
+            ["情報", "._جيد"]
         ]
         
         # Test IsAbsolutePath and IsPropertyPath
index 72309e67b0d94202cd551d0ca8d90623f0158080..3964c6f286c30b272b419a08de577d7e81d96b3a 100644 (file)
@@ -504,11 +504,18 @@ class TestSdfPath2(unittest.TestCase):
         self.assertEqual(p.StripAllVariantSelections(), Sdf.Path('/foo/bar/baz/frob'))
         p = Sdf.Path('/foo{bond=connery}bar{captain=picard}baz/frob{doctor=tennent}')
         self.assertEqual(p.StripAllVariantSelections(), Sdf.Path('/foo/bar/baz/frob'))
+        p = Sdf.Path('/ᄆfoo{刷ꡟ=鞏bar}bar/baz/𓌘ascii𓋏')
+        self.assertEqual(p.StripAllVariantSelections(), Sdf.Path('/ᄆfoo/bar/baz/𓌘ascii𓋏'))
         
         self.assertEqual(Sdf.Path.TokenizeIdentifier(""), [])
         self.assertEqual(Sdf.Path.TokenizeIdentifier("foo"), ["foo"])
         self.assertEqual(Sdf.Path.TokenizeIdentifier("foo::baz"), [])
         self.assertEqual(Sdf.Path.TokenizeIdentifier("foo:bar:baz"), ["foo","bar","baz"])
+        self.assertEqual(Sdf.Path.TokenizeIdentifier("ᄆfoo::鞏bar"), [])
+        self.assertEqual(Sdf.Path.TokenizeIdentifier("ᄆfoo:鞏bar:ascii𓋏"), ["ᄆfoo", "鞏bar", "ascii𓋏"])
+        self.assertEqual(Sdf.Path.TokenizeIdentifier(":"), [])
+        self.assertEqual(Sdf.Path.TokenizeIdentifier(":abcdef"), [])
+        self.assertEqual(Sdf.Path.TokenizeIdentifier("0:abc"), [])
         
         self.assertEqual(Sdf.Path.JoinIdentifier([]), "")
         self.assertEqual(Sdf.Path.JoinIdentifier(["foo"]), "foo")
index 451794a9e9eb76f374f13e06127201c99e222593..30abbf7e8f691a1dd7404737bc53c944da8349d4 100644 (file)
@@ -163,6 +163,7 @@ int main()
         "foo.mapper",
         "foo.mapper.expression",
         "foo.mapper.mapper[/A.b]",
+        "/root_utf8_umlaute_ß_3",
         NULL
     };
 
@@ -221,7 +222,8 @@ int main()
         "foo{a=:}",
         "foo{a=x:}",
         "Foo.attr.mapper[/Bar].arg:baz",
-        "/root_utf8_umlaute_ß_3", // Move to "good" when we support utf-8.
+        "/foo😀", // valid UTF-8 string that isn't an identifier
+        "/foo/bar/_∂baz", // valid UTF-8 string that isn't an identifier
         NULL
     };
 
index 938232df621835c66f40ed1692599c248a135167..34b9318e1dc094aa4ca8ea08e0b0a5c188e19d40 100644 (file)
@@ -359,7 +359,7 @@ typedef int yy_state_type;
 
 #define yytext_ptr yytext_r
 
-static yyconst flex_int16_t yy_nxt[][55] =
+static yyconst flex_int16_t yy_nxt[][61] =
     {
     {
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -367,46 +367,51 @@ static yyconst flex_int16_t yy_nxt[][55] =
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0
     },
 
     {
         5,    6,    7,    8,    9,   10,   11,   12,   13,    6,
         6,   14,   15,   16,   17,   17,   12,   18,    6,   19,
        20,   20,   20,   20,   20,   20,   20,   21,   20,   20,
-       20,   22,   23,   20,   24,   25,   20,   20,   20,   20,
 
-       26,   27,   20,   20,   28,   29,   30,   31,   32,   33,
-       34,   35,   20,   20,   20
+       20,   22,   20,   23,   20,   24,   25,   20,   20,   20,
+       20,   26,   20,   27,   20,   20,   28,   29,   30,   31,
+       32,   33,   34,   35,   20,   20,   20,    6,   36,   37,
+       38
     },
 
     {
         5,    6,    7,    8,    9,   10,   11,   12,   13,    6,
         6,   14,   15,   16,   17,   17,   12,   18,    6,   19,
        20,   20,   20,   20,   20,   20,   20,   21,   20,   20,
-       20,   22,   23,   20,   24,   25,   20,   20,   20,   20,
-       26,   27,   20,   20,   28,   29,   30,   31,   32,   33,
-       34,   35,   20,   20,   20
+       20,   22,   20,   23,   20,   24,   25,   20,   20,   20,
+       20,   26,   20,   27,   20,   20,   28,   29,   30,   31,
+       32,   33,   34,   35,   20,   20,   20,    6,   36,   37,
+
+       38
     },
 
     {
-        5,   36,   36,   37,   38,   36,   36,   36,   36,   39,
-       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
-
-       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
-       36,   40,   36,   36,   36,   36,   36,   36,   36,   36,
-       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
-       36,   36,   36,   36,   36
+        5,   39,   39,   40,   41,   39,   39,   39,   39,   42,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   43,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39
     },
 
     {
-        5,   36,   36,   37,   38,   36,   36,   36,   36,   39,
-       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
-       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
-       36,   40,   36,   36,   36,   36,   36,   36,   36,   36,
-       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
-       36,   36,   36,   36,   36
+        5,   39,   39,   40,   41,   39,   39,   39,   39,   42,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
 
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   43,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39
     },
 
     {
@@ -415,7 +420,9 @@ static yyconst flex_int16_t yy_nxt[][55] =
        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5
+
+       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
+       -5
     },
 
     {
@@ -423,57 +430,63 @@ static yyconst flex_int16_t yy_nxt[][55] =
        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-
        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6
+       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
+       -6
     },
 
     {
-        5,   -7,   41,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+        5,   -7,   44,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+
        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
-       -7,   -7,   -7,   -7,   -7
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7
     },
 
     {
         5,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
-
        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+
        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
-       -8,   -8,   -8,   -8,   -8
+       -8
     },
 
     {
-        5,   -9,   -9,   42,   -9,   -9,   -9,   -9,   -9,   -9,
+        5,   -9,   -9,   45,   -9,   -9,   -9,   -9,   -9,   -9,
        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
-       -9,   -9,   -9,   -9,   -9
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9
 
     },
 
     {
-        5,   43,   43,  -10,  -10,   44,   43,   43,   43,   43,
-       43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
-       43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
-       43,   45,   43,   43,   43,   43,   43,   43,   43,   43,
-       43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
-       43,   43,   43,   43,   43
-    },
-
-    {
-        5,   46,   46,  -11,  -11,   46,   46,   46,   46,   46,
+        5,   46,   46,  -10,  -10,   47,   46,   46,   46,   46,
        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
+       46,   48,   46,   46,   46,   46,   46,   46,   46,   46,
        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
-
        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
-       46,   46,   46,   46,   46
+       46
+    },
+
+    {
+        5,   49,   49,  -11,  -11,   49,   49,   49,   49,   49,
+       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
+       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
+
+       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
+       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
+       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
+       49
     },
 
     {
@@ -482,94 +495,105 @@ static yyconst flex_int16_t yy_nxt[][55] =
       -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
       -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
       -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
-      -12,  -12,  -12,  -12,  -12
+      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
+
+      -12
     },
 
     {
-        5,   47,   47,  -13,  -13,   47,   47,   47,   48,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   49,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47
+        5,   50,   50,  -13,  -13,   50,   50,   50,   51,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   52,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50
     },
 
     {
         5,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
-      -14,  -14,   50,  -14,   51,   52,  -14,  -14,  -14,  -14,
+      -14,  -14,   53,  -14,   54,   55,  -14,  -14,  -14,  -14,
+
       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
-       53,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
-      -14,  -14,  -14,  -14,  -14
-
+      -14,   56,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
+      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
+      -14
     },
 
     {
         5,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
-      -15,  -15,  -15,  -15,   54,   54,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,   57,   57,  -15,  -15,  -15,  -15,
       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
-      -15,  -15,  -15,  -15,  -15
+
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15
     },
 
     {
-        5,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,   55,
-      -16,  -16,  -16,   56,  -16,  -16,  -16,  -16,  -16,  -16,
+        5,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,   58,
+      -16,  -16,  -16,   59,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
-
       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
-      -16,  -16,  -16,  -16,  -16
+      -16
     },
 
     {
         5,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
-      -17,  -17,   57,  -17,   58,   58,  -17,  -17,  -17,  -17,
-      -17,  -17,  -17,  -17,   59,  -17,  -17,  -17,  -17,  -17,
-      -17,  -17,  -17,  -17,  -17,  -17,   59,  -17,  -17,  -17,
+
+      -17,  -17,   60,  -17,   61,   61,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,   62,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,   62,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
-      -17,  -17,  -17,  -17,  -17
+      -17
     },
 
     {
-        5,   60,   60,  -18,  -18,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,  -18,   61,   60,
+        5,   63,   63,  -18,  -18,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,  -18,   64,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
 
-       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63
     },
 
     {
-        5,   62,   62,  -19,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   63,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62
+        5,   65,   65,  -19,   65,   65,   65,   65,   65,   65,
+       65,   65,   65,   65,   65,   65,   65,   65,   65,   66,
+       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
+       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
+       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
+       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
+       65
 
     },
 
     {
         5,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
-      -20,  -20,  -20,  -20,   64,   64,   65,  -20,  -20,  -20,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -20,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -20,  -20,  -20,  -20,   67,   67,   68,  -20,  -20,  -20,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -20,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -20,   69,   70,
+       71
     },
 
     {
         5,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
-      -21,  -21,  -21,  -21,   64,   64,   65,  -21,  -21,  -21,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -21,   64,   64,   64,   64,   64,   64,   64,   64,
+      -21,  -21,  -21,  -21,   67,   67,   68,  -21,  -21,  -21,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   66,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,  -21,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   72,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -21,   69,   70,
+       71
     },
 
     {
@@ -577,133 +601,149 @@ static yyconst flex_int16_t yy_nxt[][55] =
       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
-      -22,  -22,  -22,  -22,   67,  -22,  -22,  -22,  -22,  -22,
-      -22,  -22,  -22,  -22,  -22
+      -22,  -22,  -22,  -22,  -22,  -22,   73,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+
+      -22
     },
 
     {
         5,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
-      -23,  -23,  -23,  -23,   64,   64,   65,  -23,  -23,  -23,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -23,   64,   64,   64,   68,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   69,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -23,  -23,  -23,  -23,   67,   67,   68,  -23,  -23,  -23,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -23,   67,   67,   67,   67,   74,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   75,   67,
+       67,   67,   67,   67,   67,   67,   67,  -23,   69,   70,
+       71
     },
 
     {
         5,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
-      -24,  -24,  -24,  -24,   64,   64,   65,  -24,  -24,  -24,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -24,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   70,   64,   64,   71,   64,   64,   64,   64,
-       72,   64,   64,   64,   64
+      -24,  -24,  -24,  -24,   67,   67,   68,  -24,  -24,  -24,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -24,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   76,   67,   67,   77,   67,   67,
+       67,   67,   78,   67,   67,   67,   67,  -24,   69,   70,
+       71
     },
 
     {
         5,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
-      -25,  -25,  -25,  -25,   64,   64,   65,  -25,  -25,  -25,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -25,   64,   64,   64,   64,   73,   64,   64,   64,
-       74,   64,   64,   64,   64,   75,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -25,  -25,  -25,  -25,   67,   67,   68,  -25,  -25,  -25,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -25,   67,   67,   67,   67,   67,   79,   67,   67,
+       67,   80,   67,   67,   67,   67,   67,   81,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67,  -25,   69,   70,
+       71
     },
 
     {
         5,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
-      -26,  -26,  -26,  -26,   64,   64,   65,  -26,  -26,  -26,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -26,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   76,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -26,  -26,  -26,  -26,   67,   67,   68,  -26,  -26,  -26,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -26,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   82,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -26,   69,   70,
+       71
     },
 
     {
         5,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
-      -27,  -27,  -27,  -27,   64,   64,   65,  -27,  -27,  -27,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -27,   64,   64,   64,   64,   64,   64,   64,   64,
-       77,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+      -27,  -27,  -27,  -27,   67,   67,   68,  -27,  -27,  -27,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -27,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   83,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -27,   69,   70,
+       71
     },
 
     {
         5,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
-      -28,  -28,  -28,  -28,   64,   64,   65,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,   67,   67,   68,  -28,  -28,  -28,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -28,   67,   84,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -28,   78,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -28,   69,   70,
+       71
     },
 
     {
         5,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
-      -29,  -29,  -29,  -29,   64,   64,   65,  -29,  -29,  -29,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -29,   64,   64,   64,   64,   64,   79,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   80,   64,   64,   64
+      -29,  -29,  -29,  -29,   67,   67,   68,  -29,  -29,  -29,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -29,   67,   67,   67,   67,   67,   67,   85,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   86,   67,   67,   67,  -29,   69,   70,
+       71
 
     },
 
     {
         5,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
-      -30,  -30,  -30,  -30,   64,   64,   65,  -30,  -30,  -30,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -30,   81,   64,   64,   64,   82,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   83,   64,   64,
-       64,   64,   64,   64,   64
+      -30,  -30,  -30,  -30,   67,   67,   68,  -30,  -30,  -30,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -30,   67,   87,   67,   67,   67,   88,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   89,
+       67,   67,   67,   67,   67,   67,   67,  -30,   69,   70,
+       71
     },
 
     {
         5,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
-      -31,  -31,  -31,  -31,   64,   64,   65,  -31,  -31,  -31,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -31,   64,   64,   64,   64,   84,   64,   64,   64,
+      -31,  -31,  -31,  -31,   67,   67,   68,  -31,  -31,  -31,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   85,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,  -31,   67,   67,   67,   67,   67,   90,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   91,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -31,   69,   70,
+       71
     },
 
     {
         5,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
-      -32,  -32,  -32,  -32,   64,   64,   65,  -32,  -32,  -32,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -32,   64,   64,   86,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   87,   64,   64,   64,
-       88,   64,   64,   89,   64
+      -32,  -32,  -32,  -32,   67,   67,   68,  -32,  -32,  -32,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -32,   67,   67,   67,   92,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   93,   67,
+       67,   67,   94,   67,   67,   95,   67,  -32,   69,   70,
+
+       71
     },
 
     {
         5,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
-      -33,  -33,  -33,  -33,   64,   64,   65,  -33,  -33,  -33,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -33,   64,   64,   64,   64,   64,   64,   64,   64,
-       90,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -33,  -33,  -33,  -33,   67,   67,   68,  -33,  -33,  -33,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -33,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   96,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -33,   69,   70,
+       71
     },
 
     {
         5,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
-      -34,  -34,  -34,  -34,   64,   64,   65,  -34,  -34,  -34,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -34,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   91,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -34,  -34,  -34,  -34,   67,   67,   68,  -34,  -34,  -34,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -34,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   97,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -34,   69,   70,
+       71
     },
 
     {
         5,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
-      -35,  -35,  -35,  -35,   64,   64,   65,  -35,  -35,  -35,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -35,   92,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -35,  -35,  -35,  -35,   67,   67,   68,  -35,  -35,  -35,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -35,   67,   98,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67,  -35,   69,   70,
+       71
     },
 
     {
@@ -711,37 +751,41 @@ static yyconst flex_int16_t yy_nxt[][55] =
       -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,  -36,  -36,
-      -36,  -36,  -36,  -36,  -36
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,   99,  -36,  -36,
+      -36
     },
 
     {
         5,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+
       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
-      -37,  -37,  -37,  -37,  -37
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  100,  -37,  -37,
+      -37
     },
 
     {
         5,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
-
       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+
       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
-      -38,  -38,  -38,  -38,  -38
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  101,  -38,  -38,
+      -38
     },
 
     {
         5,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
-      -39,  -39,  -39,   93,  -39,  -39,  -39,  -39,  -39,  -39,
       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
-      -39,  -39,  -39,  -39,  -39
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+      -39
 
     },
 
@@ -750,574 +794,640 @@ static yyconst flex_int16_t yy_nxt[][55] =
       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
-      -40,  -40,  -40,  -40,   67,  -40,  -40,  -40,  -40,  -40,
-      -40,  -40,  -40,  -40,  -40
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40
     },
 
     {
-        5,  -41,   41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
-      -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
+        5,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
 
       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
-      -41,  -41,  -41,  -41,  -41
+      -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
+      -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
+      -41
     },
 
     {
         5,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
+      -42,  -42,  -42,  102,  -42,  -42,  -42,  -42,  -42,  -42,
       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
-      -42,  -42,  -42,  -42,  -42
+
+      -42
     },
 
     {
-        5,   43,   43,  -43,  -43,   94,   43,   43,   43,   43,
-       43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
-
-       43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
-       43,   45,   43,   43,   43,   43,   43,   43,   43,   43,
-       43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
-       43,   43,   43,   43,   43
+        5,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,   73,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43
     },
 
     {
-        5,   95,   95,   95,   95,   96,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-       95,   95,   95,   95,   95
+        5,  -44,   44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
 
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44
     },
 
     {
-        5,   43,   43,  -45,   43,   43,   43,   43,   43,   43,
-       43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
-       43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
-       43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
-       43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
-       43,   43,   43,   43,   43
+        5,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
+      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
+      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
+      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
+      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
+
+      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
+      -45
     },
 
     {
-        5,   46,   46,  -46,  -46,   46,   46,   46,   46,   46,
+        5,   46,   46,  -46,  -46,  103,   46,   46,   46,   46,
        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
+       46,   48,   46,   46,   46,   46,   46,   46,   46,   46,
        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
-
        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
-       46,   46,   46,   46,   46
+       46
     },
 
     {
-        5,   47,   47,  -47,  -47,   47,   47,   47,   97,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   49,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47
+        5,  104,  104,  104,  104,  105,  104,  104,  104,  104,
+
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104
     },
 
     {
-        5,   98,   98,   98,   98,   98,   98,   98,   99,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+        5,   46,   46,  -48,   46,   46,   46,   46,   46,   46,
+       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
+       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
+       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
 
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98
+       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
+       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
+       46
     },
 
     {
-        5,   47,   47,  -49,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47
+        5,   49,   49,  -49,  -49,   49,   49,   49,   49,   49,
+       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
+       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
+       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
+       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
+       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
+       49
 
     },
 
     {
-        5,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
-      -50,  -50,  -50,  -50,   54,   54,  -50,  -50,  -50,  -50,
-      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
-      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
-      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
-      -50,  -50,  -50,  -50,  -50
+        5,   50,   50,  -50,  -50,   50,   50,   50,  106,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   52,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50
     },
 
     {
-        5,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
-      -51,  -51,   57,  -51,   52,   52,  -51,  -51,  -51,  -51,
-      -51,  -51,  -51,  -51,   59,  -51,  -51,  -51,  -51,  -51,
-      -51,  -51,  -51,  -51,  -51,  -51,   59,  -51,  -51,  -51,
+        5,  107,  107,  107,  107,  107,  107,  107,  108,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
 
-      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
-      -51,  -51,  -51,  -51,  -51
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      107
     },
 
     {
-        5,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
-      -52,  -52,   57,  -52,   52,   52,  -52,  -52,  -52,  -52,
-      -52,  -52,  -52,  -52,   59,  -52,  -52,  -52,  -52,  -52,
-      -52,  -52,  -52,  -52,  -52,  -52,   59,  -52,  -52,  -52,
-      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
-      -52,  -52,  -52,  -52,  -52
+        5,   50,   50,  -52,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+
+       50
     },
 
     {
         5,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,   57,   57,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
-
       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
-      -53,  -53,  -53,  -53,  100,  -53,  -53,  -53,  -53,  -53,
-      -53,  -53,  -53,  -53,  -53
+      -53
     },
 
     {
         5,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
-      -54,  -54,  -54,  -54,   54,   54,  -54,  -54,  -54,  -54,
-      -54,  -54,  -54,  -54,  101,  -54,  -54,  -54,  -54,  -54,
-      -54,  -54,  -54,  -54,  -54,  -54,  101,  -54,  -54,  -54,
-      -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
-      -54,  -54,  -54,  -54,  -54
+      -54,  -54,   60,  -54,   55,   55,  -54,  -54,  -54,  -54,
 
+      -54,  -54,  -54,  -54,   62,  -54,  -54,  -54,  -54,  -54,
+      -54,  -54,  -54,  -54,  -54,  -54,  -54,   62,  -54,  -54,
+      -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
+      -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
+      -54
     },
 
     {
         5,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,   60,  -55,   55,   55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,   62,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,   62,  -55,  -55,
       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+
       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
-      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
-      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
-      -55,  -55,  -55,  -55,  -55
+      -55
     },
 
     {
-        5,  102,  102,  -56,  -56,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102
+        5,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  109,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56
     },
 
     {
         5,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
-      -57,  -57,  -57,  -57,  103,  103,  -57,  -57,  -57,  -57,
-      -57,  -57,  -57,  -57,   59,  -57,  -57,  -57,  -57,  -57,
-      -57,  -57,  -57,  -57,  -57,  -57,   59,  -57,  -57,  -57,
+
+      -57,  -57,  -57,  -57,   57,   57,  -57,  -57,  -57,  -57,
+      -57,  -57,  -57,  -57,  110,  -57,  -57,  -57,  -57,  -57,
+      -57,  -57,  -57,  -57,  -57,  -57,  -57,  110,  -57,  -57,
+      -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
       -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
-      -57,  -57,  -57,  -57,  -57
+      -57
     },
 
     {
         5,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
-      -58,  -58,   57,  -58,   58,   58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
 
-      -58,  -58,  -58,  -58,   59,  -58,  -58,  -58,  -58,  -58,
-      -58,  -58,  -58,  -58,  -58,  -58,   59,  -58,  -58,  -58,
       -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
-      -58,  -58,  -58,  -58,  -58
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58
     },
 
     {
-        5,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
-      104,  104,  -59,  -59,  105,  105,  -59,  -59,  -59,  -59,
-      -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
-      -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
-      -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
-      -59,  -59,  -59,  -59,  -59
+        5,  111,  111,  -59,  -59,  111,  111,  111,  111,  111,
+      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
+      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
+      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
+      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
+      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
+      111
 
     },
 
     {
-        5,   60,   60,  -60,  -60,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,  -60,   61,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60
+        5,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
+      -60,  -60,  -60,  -60,  112,  112,  -60,  -60,  -60,  -60,
+      -60,  -60,  -60,  -60,   62,  -60,  -60,  -60,  -60,  -60,
+      -60,  -60,  -60,  -60,  -60,  -60,  -60,   62,  -60,  -60,
+      -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
+      -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
+      -60
     },
 
     {
         5,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
-      -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
-      -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
-      -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
+      -61,  -61,   60,  -61,   61,   61,  -61,  -61,  -61,  -61,
+      -61,  -61,  -61,  -61,   62,  -61,  -61,  -61,  -61,  -61,
 
+      -61,  -61,  -61,  -61,  -61,  -61,  -61,   62,  -61,  -61,
+      -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
       -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
-      -61,  -61,  -61,  -61,  -61
+      -61
     },
 
     {
-        5,   62,   62,  -62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,  106,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62
+        5,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
+      113,  113,  -62,  -62,  114,  114,  -62,  -62,  -62,  -62,
+      -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
+      -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
+      -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
+      -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
+
+      -62
     },
 
     {
-        5,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,
-      -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  107,
-
-      -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,
-      -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,
-      -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,
-      -63,  -63,  -63,  -63,  -63
+        5,   63,   63,  -63,  -63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,  -63,   64,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63
     },
 
     {
         5,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,
-      -64,  -64,  -64,  -64,   64,   64,   65,  -64,  -64,  -64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,
 
+      -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,
+      -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,
+      -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,
+      -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,
+      -64
     },
 
     {
-        5,  -65,  -65,  -65,  -65,  -65,  -65,  -65,  -65,  -65,
-      -65,  -65,  -65,  -65,  -65,  -65,  108,  -65,  -65,  -65,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  -65,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109
+        5,   65,   65,  -65,   65,   65,   65,   65,   65,   65,
+       65,   65,   65,   65,   65,   65,   65,   65,   65,  115,
+       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
+       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
+       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
+
+       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
+       65
     },
 
     {
         5,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
-      -66,  -66,  -66,  -66,   64,   64,   65,  -66,  -66,  -66,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -66,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,  110,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  116,
+      -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
+      -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
+      -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
+      -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
+      -66
     },
 
     {
         5,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,
-      -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,
-      -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,
-      -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,
-      -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,
-      -67,  -67,  -67,  -67,  -67
+
+      -67,  -67,  -67,  -67,   67,   67,   68,  -67,  -67,  -67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -67,   69,   70,
+       71
     },
 
     {
         5,  -68,  -68,  -68,  -68,  -68,  -68,  -68,  -68,  -68,
-      -68,  -68,  -68,  -68,   64,   64,   65,  -68,  -68,  -68,
+      -68,  -68,  -68,  -68,  -68,  -68,  117,  -68,  -68,  -68,
+      118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
+      118,  -68,  118,  118,  118,  118,  118,  118,  118,  118,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -68,   64,   64,   64,  111,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
+      118,  118,  118,  118,  118,  118,  118,  -68,  119,  120,
+      121
     },
 
     {
         5,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,
-      -69,  -69,  -69,  -69,   64,   64,   65,  -69,  -69,  -69,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -69,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,  112,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,
+      -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,
+      -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,
+      -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,
+      -69,  -69,  -69,  -69,  -69,  -69,  -69,  122,  -69,  -69,
+      -69
 
     },
 
     {
         5,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,
-      -70,  -70,  -70,  -70,   64,   64,   65,  -70,  -70,  -70,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -70,  113,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,
+      -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,
+      -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,
+      -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,
+      -70,  -70,  -70,  -70,  -70,  -70,  -70,  123,  -70,  -70,
+      -70
     },
 
     {
         5,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,
-      -71,  -71,  -71,  -71,   64,   64,   65,  -71,  -71,  -71,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -71,   64,   64,   64,   64,   64,   64,   64,   64,
+      -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,
+      -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,
 
-       64,   64,   64,   64,  114,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,
+      -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,
+      -71,  -71,  -71,  -71,  -71,  -71,  -71,  124,  -71,  -71,
+      -71
     },
 
     {
         5,  -72,  -72,  -72,  -72,  -72,  -72,  -72,  -72,  -72,
-      -72,  -72,  -72,  -72,   64,   64,   65,  -72,  -72,  -72,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -72,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  115,   64,
-       64,   64,   64,   64,   64
+      -72,  -72,  -72,  -72,   67,   67,   68,  -72,  -72,  -72,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -72,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,  125,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -72,   69,   70,
+
+       71
     },
 
     {
         5,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,
-      -73,  -73,  -73,  -73,   64,   64,   65,  -73,  -73,  -73,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -73,   64,   64,   64,   64,   64,  116,   64,   64,
-       64,   64,  117,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,
+      -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,
+      -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,
+      -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,
+      -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,
+      -73
     },
 
     {
         5,  -74,  -74,  -74,  -74,  -74,  -74,  -74,  -74,  -74,
-      -74,  -74,  -74,  -74,   64,   64,   65,  -74,  -74,  -74,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -74,   64,   64,  118,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  119,   64,
-       64,   64,   64,   64,   64
+      -74,  -74,  -74,  -74,   67,   67,   68,  -74,  -74,  -74,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -74,   67,   67,   67,   67,  126,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -74,   69,   70,
+       71
     },
 
     {
         5,  -75,  -75,  -75,  -75,  -75,  -75,  -75,  -75,  -75,
-      -75,  -75,  -75,  -75,   64,   64,   65,  -75,  -75,  -75,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -75,   64,   64,  120,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -75,  -75,  -75,  -75,   67,   67,   68,  -75,  -75,  -75,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -75,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,  127,   67,
+
+       67,   67,   67,   67,   67,   67,   67,  -75,   69,   70,
+       71
     },
 
     {
         5,  -76,  -76,  -76,  -76,  -76,  -76,  -76,  -76,  -76,
-      -76,  -76,  -76,  -76,   64,   64,   65,  -76,  -76,  -76,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -76,   64,   64,   64,   64,   64,   64,   64,  121,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -76,  -76,  -76,  -76,   67,   67,   68,  -76,  -76,  -76,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -76,   67,  128,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -76,   69,   70,
+       71
     },
 
     {
         5,  -77,  -77,  -77,  -77,  -77,  -77,  -77,  -77,  -77,
-      -77,  -77,  -77,  -77,   64,   64,   65,  -77,  -77,  -77,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -77,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,  122,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+      -77,  -77,  -77,  -77,   67,   67,   68,  -77,  -77,  -77,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -77,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,  129,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -77,   69,   70,
+       71
     },
 
     {
         5,  -78,  -78,  -78,  -78,  -78,  -78,  -78,  -78,  -78,
-      -78,  -78,  -78,  -78,   64,   64,   65,  -78,  -78,  -78,
+      -78,  -78,  -78,  -78,   67,   67,   68,  -78,  -78,  -78,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -78,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -78,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,  123,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      130,   67,   67,   67,   67,   67,   67,  -78,   69,   70,
+       71
     },
 
     {
         5,  -79,  -79,  -79,  -79,  -79,  -79,  -79,  -79,  -79,
-      -79,  -79,  -79,  -79,   64,   64,   65,  -79,  -79,  -79,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -79,   64,   64,   64,   64,   64,  124,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -79,  -79,  -79,  -79,   67,   67,   68,  -79,  -79,  -79,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -79,   67,   67,   67,   67,   67,   67,  131,   67,
+       67,   67,   67,   67,  132,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -79,   69,   70,
+       71
 
     },
 
     {
         5,  -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,
-      -80,  -80,  -80,  -80,   64,   64,   65,  -80,  -80,  -80,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -80,   64,   64,   64,   64,  125,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -80,  -80,  -80,  -80,   67,   67,   68,  -80,  -80,  -80,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -80,   67,   67,   67,  133,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      134,   67,   67,   67,   67,   67,   67,  -80,   69,   70,
+       71
     },
 
     {
         5,  -81,  -81,  -81,  -81,  -81,  -81,  -81,  -81,  -81,
-      -81,  -81,  -81,  -81,   64,   64,   65,  -81,  -81,  -81,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -81,   64,   64,   64,   64,   64,   64,   64,   64,
+      -81,  -81,  -81,  -81,   67,   67,   68,  -81,  -81,  -81,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,  126,   64
+       67,  -81,   67,   67,   67,  135,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -81,   69,   70,
+       71
     },
 
     {
         5,  -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,
-      -82,  -82,  -82,  -82,   64,   64,   65,  -82,  -82,  -82,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -82,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,  127,   64,   64,
-       64,   64,   64,   64,   64
+      -82,  -82,  -82,  -82,   67,   67,   68,  -82,  -82,  -82,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -82,   67,   67,   67,   67,   67,   67,   67,   67,
+      136,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -82,   69,   70,
+
+       71
     },
 
     {
         5,  -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,
-      -83,  -83,  -83,  -83,   64,   64,   65,  -83,  -83,  -83,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -83,   64,   64,   64,   64,  128,   64,   64,   64,
-       64,   64,   64,   64,   64,  129,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -83,  -83,  -83,  -83,   67,   67,   68,  -83,  -83,  -83,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -83,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,  137,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -83,   69,   70,
+       71
     },
 
     {
         5,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
-      -84,  -84,  -84,  -84,   64,   64,   65,  -84,  -84,  -84,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -84,   64,   64,   64,   64,   64,  130,   64,   64,
-       64,   64,  131,   64,   64,  132,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -84,  -84,  -84,  -84,   67,   67,   68,  -84,  -84,  -84,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -84,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,  138,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -84,   69,   70,
+       71
     },
 
     {
         5,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
-      -85,  -85,  -85,  -85,   64,   64,   65,  -85,  -85,  -85,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -85,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,  133,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -85,  -85,  -85,  -85,   67,   67,   68,  -85,  -85,  -85,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -85,   67,   67,   67,   67,   67,   67,  139,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67,  -85,   69,   70,
+       71
     },
 
     {
         5,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-      -86,  -86,  -86,  -86,   64,   64,   65,  -86,  -86,  -86,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -86,  134,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -86,  -86,  -86,  -86,   67,   67,   68,  -86,  -86,  -86,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -86,   67,   67,   67,   67,   67,  140,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -86,   69,   70,
+       71
     },
 
     {
         5,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,
-      -87,  -87,  -87,  -87,   64,   64,   65,  -87,  -87,  -87,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -87,   64,   64,   64,   64,  135,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+      -87,  -87,  -87,  -87,   67,   67,   68,  -87,  -87,  -87,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -87,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,  141,   67,  -87,   69,   70,
+       71
     },
 
     {
         5,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,
-      -88,  -88,  -88,  -88,   64,   64,   65,  -88,  -88,  -88,
+      -88,  -88,  -88,  -88,   67,   67,   68,  -88,  -88,  -88,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -88,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -88,   64,  136,   64,   64,   64,  137,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  142,
+       67,   67,   67,   67,   67,   67,   67,  -88,   69,   70,
+       71
     },
 
     {
         5,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,
-      -89,  -89,  -89,  -89,   64,   64,   65,  -89,  -89,  -89,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -89,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,  138,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -89,  -89,  -89,  -89,   67,   67,   68,  -89,  -89,  -89,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -89,   67,   67,   67,   67,   67,  143,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  144,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -89,   69,   70,
+       71
 
     },
 
     {
         5,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
-      -90,  -90,  -90,  -90,   64,   64,   65,  -90,  -90,  -90,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -90,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,  139,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      -90,  -90,  -90,  -90,   67,   67,   68,  -90,  -90,  -90,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -90,   67,   67,   67,   67,   67,   67,  145,   67,
+       67,   67,   67,   67,  146,   67,   67,  147,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -90,   69,   70,
+       71
     },
 
     {
         5,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,
-      -91,  -91,  -91,  -91,   64,   64,   65,  -91,  -91,  -91,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -91,   64,   64,   64,   64,   64,   64,   64,   64,
+      -91,  -91,  -91,  -91,   67,   67,   68,  -91,  -91,  -91,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-      140,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,  -91,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  148,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -91,   69,   70,
+       71
     },
 
     {
         5,  -92,  -92,  -92,  -92,  -92,  -92,  -92,  -92,  -92,
-      -92,  -92,  -92,  -92,   64,   64,   65,  -92,  -92,  -92,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,  -92,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,  141,   64,   64,
-       64,   64,   64,   64,   64
+      -92,  -92,  -92,  -92,   67,   67,   68,  -92,  -92,  -92,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -92,   67,  149,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -92,   69,   70,
+
+       71
     },
 
     {
         5,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
-      -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
-
-      -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
-      -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
-      -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
-      -93,  -93,  -93,  -93,  -93
+      -93,  -93,  -93,  -93,   67,   67,   68,  -93,  -93,  -93,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -93,   67,   67,   67,   67,   67,  150,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -93,   69,   70,
+       71
     },
 
     {
         5,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,
-      -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,
-      -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,
-      -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,
-      -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,
-      -94,  -94,  -94,  -94,  -94
+      -94,  -94,  -94,  -94,   67,   67,   68,  -94,  -94,  -94,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -94,   67,   67,  151,   67,   67,   67,  152,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -94,   69,   70,
+       71
     },
 
     {
         5,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,
-      -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,
-      -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,
-      -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,
-      -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,
-      -95,  -95,  -95,  -95,  -95
+      -95,  -95,  -95,  -95,   67,   67,   68,  -95,  -95,  -95,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -95,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,  153,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67,  -95,   69,   70,
+       71
     },
 
     {
-        5,  142,  142,  142,  142,  143,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  144,  142,  142,  142,  142,  142,  142,  142,  142,
-
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142
+        5,  -96,  -96,  -96,  -96,  -96,  -96,  -96,  -96,  -96,
+      -96,  -96,  -96,  -96,   67,   67,   68,  -96,  -96,  -96,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -96,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,  154,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -96,   69,   70,
+       71
     },
 
     {
         5,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,
-      -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,
-      -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,
-      -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,
-      -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,
-      -97,  -97,  -97,  -97,  -97
+
+      -97,  -97,  -97,  -97,   67,   67,   68,  -97,  -97,  -97,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -97,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  155,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  -97,   69,   70,
+       71
     },
 
     {
         5,  -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,
-      -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,
+      -98,  -98,  -98,  -98,   67,   67,   68,  -98,  -98,  -98,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  -98,   67,   67,   67,   67,   67,   67,   67,   67,
 
-      -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,
-      -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,
-      -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,
-      -98,  -98,  -98,  -98,  -98
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  156,
+       67,   67,   67,   67,   67,   67,   67,  -98,   69,   70,
+       71
     },
 
     {
-        5,  145,  145,  145,  145,  145,  145,  145,  146,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  147,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145
+        5,  -99,  -99,  -99,  -99,  -99,  -99,  -99,  -99,  -99,
+      -99,  -99,  -99,  -99,  157,  157,  158,  -99,  -99,  -99,
+      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
+      157,  -99,  157,  157,  157,  157,  157,  157,  157,  157,
+      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
+      157,  157,  157,  157,  157,  157,  157,  -99,   69,   70,
+       71
 
     },
 
@@ -1325,57 +1435,64 @@ static yyconst flex_int16_t yy_nxt[][55] =
         5, -100, -100, -100, -100, -100, -100, -100, -100, -100,
      -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
      -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
-     -100, -100, -100, -100, -100, -100, -100,  148, -100, -100,
      -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
-     -100, -100, -100, -100, -100
+     -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+     -100, -100, -100, -100, -100, -100, -100,   99, -100, -100,
+     -100
     },
 
     {
         5, -101, -101, -101, -101, -101, -101, -101, -101, -101,
-      149,  149, -101, -101,  150,  150, -101, -101, -101, -101,
      -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
      -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
 
      -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
-     -101, -101, -101, -101, -101
+     -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+     -101, -101, -101, -101, -101, -101, -101,  159, -101, -101,
+     -101
     },
 
     {
-        5,  102,  102, -102, -102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102
+        5, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+     -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+     -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+     -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+     -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+     -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+
+     -102
     },
 
     {
         5, -103, -103, -103, -103, -103, -103, -103, -103, -103,
-     -103, -103, -103, -103,  103,  103, -103, -103, -103, -103,
-
-     -103, -103, -103, -103,   59, -103, -103, -103, -103, -103,
-     -103, -103, -103, -103, -103, -103,   59, -103, -103, -103,
      -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
-     -103, -103, -103, -103, -103
+     -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+     -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+     -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+     -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+     -103
     },
 
     {
         5, -104, -104, -104, -104, -104, -104, -104, -104, -104,
-     -104, -104, -104, -104,  105,  105, -104, -104, -104, -104,
      -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+
      -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
      -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
-     -104, -104, -104, -104, -104
-
+     -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+     -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+     -104
     },
 
     {
-        5, -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, -105,
-     -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
-     -105, -105, -105, -105, -105
+        5,  160,  160,  160,  160,  161,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  162,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160
     },
 
     {
@@ -1383,2582 +1500,3187 @@ static yyconst flex_int16_t yy_nxt[][55] =
      -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, -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
     },
 
     {
-        5,  151,  151, -107,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  152,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  153,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151
+        5, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+
+     -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+     -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+     -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+     -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+     -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+     -107
     },
 
     {
-        5, -108, -108, -108, -108, -108, -108, -108, -108, -108,
-     -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+        5,  163,  163,  163,  163,  163,  163,  163,  164,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  165,  163,  163,  163,  163,  163,  163,  163,  163,
 
-      154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
-      154, -108,  154,  154,  154,  154,  154,  154,  154,  154,
-      154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
-      154,  154,  154,  154,  154
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163
     },
 
     {
         5, -109, -109, -109, -109, -109, -109, -109, -109, -109,
-     -109, -109, -109, -109,  155,  155,  156, -109, -109, -109,
-      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
-      155, -109,  155,  155,  155,  155,  155,  155,  155,  155,
-      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
-      155,  155,  155,  155,  155
+     -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+     -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+     -109, -109, -109, -109, -109, -109, -109, -109,  166, -109,
+     -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+     -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+     -109
 
     },
 
     {
         5, -110, -110, -110, -110, -110, -110, -110, -110, -110,
-     -110, -110, -110, -110,   64,   64,   65, -110, -110, -110,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -110,   64,   64,   64,   64,  157,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      167,  167, -110, -110,  168,  168, -110, -110, -110, -110,
+     -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+     -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+     -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+     -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+     -110
     },
 
     {
-        5, -111, -111, -111, -111, -111, -111, -111, -111, -111,
-     -111, -111, -111, -111,   64,   64,   65, -111, -111, -111,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -111,   64,   64,   64,   64,   64,   64,   64,   64,
+        5,  111,  111, -111, -111,  111,  111,  111,  111,  111,
+      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
+      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
+      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
+      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
+      111
     },
 
     {
         5, -112, -112, -112, -112, -112, -112, -112, -112, -112,
-     -112, -112, -112, -112,   64,   64,   65, -112, -112, -112,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -112,   64,   64,   64,   64,  158,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -112, -112, -112, -112,  112,  112, -112, -112, -112, -112,
+     -112, -112, -112, -112,   62, -112, -112, -112, -112, -112,
+     -112, -112, -112, -112, -112, -112, -112,   62, -112, -112,
+     -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+     -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+
+     -112
     },
 
     {
         5, -113, -113, -113, -113, -113, -113, -113, -113, -113,
-     -113, -113, -113, -113,   64,   64,   65, -113, -113, -113,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -113,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  159,   64,
-       64,   64,   64,   64,   64
+     -113, -113, -113, -113,  114,  114, -113, -113, -113, -113,
+     -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+     -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+     -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+     -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+     -113
     },
 
     {
         5, -114, -114, -114, -114, -114, -114, -114, -114, -114,
-     -114, -114, -114, -114,   64,   64,   65, -114, -114, -114,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -114,   64,   64,   64,   64,   64,  160,   64,   64,
-       64,   64,   64,   64,  161,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -114, -114, -114, -114,  114,  114, -114, -114, -114, -114,
 
+     -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+     -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+     -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+     -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+     -114
     },
 
     {
         5, -115, -115, -115, -115, -115, -115, -115, -115, -115,
-     -115, -115, -115, -115,   64,   64,   65, -115, -115, -115,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -115,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  162,
-       64,   64,   64,   64,   64
+     -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+     -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+     -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+     -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+
+     -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+     -115
     },
 
     {
-        5, -116, -116, -116, -116, -116, -116, -116, -116, -116,
-     -116, -116, -116, -116,   64,   64,   65, -116, -116, -116,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -116,  163,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+        5,  169,  169, -116,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  170,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  171,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169
     },
 
     {
         5, -117, -117, -117, -117, -117, -117, -117, -117, -117,
-     -117, -117, -117, -117,   64,   64,   65, -117, -117, -117,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -117,   64,   64,   64,   64,  164,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+     -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172, -117,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172, -117, -117, -117,
+     -117
     },
 
     {
         5, -118, -118, -118, -118, -118, -118, -118, -118, -118,
-     -118, -118, -118, -118,   64,   64,   65, -118, -118, -118,
+     -118, -118, -118, -118,  173,  173,  158, -118, -118, -118,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173, -118,  173,  173,  173,  173,  173,  173,  173,  173,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -118,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  165,
-       64,   64,   64,   64,   64
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173, -118,  174,  175,
+      176
     },
 
     {
         5, -119, -119, -119, -119, -119, -119, -119, -119, -119,
-     -119, -119, -119, -119,   64,   64,   65, -119, -119, -119,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -119,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,  166,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+     -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+     -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+     -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+     -119, -119, -119, -119, -119, -119, -119,  177, -119, -119,
+     -119
 
     },
 
     {
         5, -120, -120, -120, -120, -120, -120, -120, -120, -120,
-     -120, -120, -120, -120,   64,   64,   65, -120, -120, -120,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -120,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+     -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+     -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+     -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+     -120, -120, -120, -120, -120, -120, -120,  178, -120, -120,
+     -120
     },
 
     {
         5, -121, -121, -121, -121, -121, -121, -121, -121, -121,
-     -121, -121, -121, -121,   64,   64,   65, -121, -121, -121,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -121,   64,   64,   64,   64,  167,   64,   64,   64,
+     -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+     -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+     -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+     -121, -121, -121, -121, -121, -121, -121,  179, -121, -121,
+     -121
     },
 
     {
         5, -122, -122, -122, -122, -122, -122, -122, -122, -122,
-     -122, -122, -122, -122,   64,   64,   65, -122, -122, -122,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -122,   64,   64,   64,  168,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -122, -122, -122, -122,  157,  157,  158, -122, -122, -122,
+      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
+      157, -122,  157,  157,  157,  157,  157,  157,  157,  157,
+      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
+      157,  157,  157,  157,  157,  157,  157, -122,   69,   70,
+
+       71
     },
 
     {
         5, -123, -123, -123, -123, -123, -123, -123, -123, -123,
-     -123, -123, -123, -123,   64,   64,   65, -123, -123, -123,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -123,   64,   64,   64,   64,  169,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+     -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+     -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+     -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+     -123, -123, -123, -123, -123, -123, -123,  122, -123, -123,
+     -123
     },
 
     {
         5, -124, -124, -124, -124, -124, -124, -124, -124, -124,
-     -124, -124, -124, -124,   64,   64,   65, -124, -124, -124,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -124,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  170,   64,
-       64,   64,   64,   64,   64
+     -124, -124, -124, -124, -124, -124, -124, -124, -124, -124,
 
+     -124, -124, -124, -124, -124, -124, -124, -124, -124, -124,
+     -124, -124, -124, -124, -124, -124, -124, -124, -124, -124,
+     -124, -124, -124, -124, -124, -124, -124, -124, -124, -124,
+     -124, -124, -124, -124, -124, -124, -124,  180, -124, -124,
+     -124
     },
 
     {
         5, -125, -125, -125, -125, -125, -125, -125, -125, -125,
-     -125, -125, -125, -125,   64,   64,   65, -125, -125, -125,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -125,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,  171,   64,   64,
-       64,   64,   64,   64,   64
+     -125, -125, -125, -125,   67,   67,   68, -125, -125, -125,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -125,   67,   67,   67,   67,   67,  181,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -125,   69,   70,
+       71
     },
 
     {
         5, -126, -126, -126, -126, -126, -126, -126, -126, -126,
-     -126, -126, -126, -126,   64,   64,   65, -126, -126, -126,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -126,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,  172,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -126, -126, -126, -126,   67,   67,   68, -126, -126, -126,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -126,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -126,   69,   70,
+       71
     },
 
     {
         5, -127, -127, -127, -127, -127, -127, -127, -127, -127,
-     -127, -127, -127, -127,   64,   64,   65, -127, -127, -127,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -127,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,  173,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+     -127, -127, -127, -127,   67,   67,   68, -127, -127, -127,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -127,   67,   67,   67,   67,   67,  182,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -127,   69,   70,
+       71
     },
 
     {
         5, -128, -128, -128, -128, -128, -128, -128, -128, -128,
-     -128, -128, -128, -128,   64,   64,   65, -128, -128, -128,
+     -128, -128, -128, -128,   67,   67,   68, -128, -128, -128,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -128,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -128,   64,   64,   64,   64,   64,  174,   64,   64,
-       64,   64,   64,   64,   64,   64,  175,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      183,   67,   67,   67,   67,   67,   67, -128,   69,   70,
+       71
     },
 
     {
         5, -129, -129, -129, -129, -129, -129, -129, -129, -129,
-     -129, -129, -129, -129,   64,   64,   65, -129, -129, -129,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -129,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,  176,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -129, -129, -129, -129,   67,   67,   68, -129, -129, -129,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -129,   67,   67,   67,   67,   67,   67,  184,   67,
+       67,   67,   67,   67,   67,   67,  185,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -129,   69,   70,
+       71
 
     },
 
     {
         5, -130, -130, -130, -130, -130, -130, -130, -130, -130,
-     -130, -130, -130, -130,   64,   64,   65, -130, -130, -130,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -130,   64,   64,   64,   64,  177,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -130, -130, -130, -130,   67,   67,   68, -130, -130, -130,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -130,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  186,   67,   67,   67,   67,   67, -130,   69,   70,
+       71
     },
 
     {
         5, -131, -131, -131, -131, -131, -131, -131, -131, -131,
-     -131, -131, -131, -131,   64,   64,   65, -131, -131, -131,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -131,   64,   64,   64,   64,   64,   64,   64,   64,
+     -131, -131, -131, -131,   67,   67,   68, -131, -131, -131,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,  178,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67, -131,   67,  187,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -131,   69,   70,
+       71
     },
 
     {
         5, -132, -132, -132, -132, -132, -132, -132, -132, -132,
-     -132, -132, -132, -132,   64,   64,   65, -132, -132, -132,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -132,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,  179,   64,   64,
-       64,   64,   64,   64,   64
+     -132, -132, -132, -132,   67,   67,   68, -132, -132, -132,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -132,   67,   67,   67,   67,   67,  188,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -132,   69,   70,
+
+       71
     },
 
     {
         5, -133, -133, -133, -133, -133, -133, -133, -133, -133,
-     -133, -133, -133, -133,   64,   64,   65, -133, -133, -133,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -133,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  180,
-       64,   64,   64,   64,   64
+     -133, -133, -133, -133,   67,   67,   68, -133, -133, -133,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -133,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  189,   67,   67,   67,   67,   67, -133,   69,   70,
+       71
     },
 
     {
         5, -134, -134, -134, -134, -134, -134, -134, -134, -134,
-     -134, -134, -134, -134,   64,   64,   65, -134, -134, -134,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -134,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,  181,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -134, -134, -134, -134,   67,   67,   68, -134, -134, -134,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -134,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,  190,   67,
+       67,   67,   67,   67,   67,   67,   67, -134,   69,   70,
+       71
     },
 
     {
         5, -135, -135, -135, -135, -135, -135, -135, -135, -135,
-     -135, -135, -135, -135,   64,   64,   65, -135, -135, -135,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -135,   64,   64,  182,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -135, -135, -135, -135,   67,   67,   68, -135, -135, -135,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -135,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -135,   69,   70,
+       71
     },
 
     {
         5, -136, -136, -136, -136, -136, -136, -136, -136, -136,
-     -136, -136, -136, -136,   64,   64,   65, -136, -136, -136,
-       64,   64,   64,   64,   64,   64,  183,   64,   64,   64,
-       64, -136,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -136, -136, -136, -136,   67,   67,   68, -136, -136, -136,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -136,   67,   67,   67,   67,   67,  191,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -136,   69,   70,
+       71
     },
 
     {
         5, -137, -137, -137, -137, -137, -137, -137, -137, -137,
-     -137, -137, -137, -137,   64,   64,   65, -137, -137, -137,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -137,   64,   64,   64,   64,   64,  184,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+     -137, -137, -137, -137,   67,   67,   68, -137, -137, -137,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -137,   67,   67,   67,   67,  192,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -137,   69,   70,
+       71
     },
 
     {
         5, -138, -138, -138, -138, -138, -138, -138, -138, -138,
-     -138, -138, -138, -138,   64,   64,   65, -138, -138, -138,
+     -138, -138, -138, -138,   67,   67,   68, -138, -138, -138,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -138,   67,   67,   67,   67,   67,  193,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -138,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,  185,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -138,   69,   70,
+       71
     },
 
     {
         5, -139, -139, -139, -139, -139, -139, -139, -139, -139,
-     -139, -139, -139, -139,   64,   64,   65, -139, -139, -139,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -139,   64,   64,   64,   64,  186,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -139, -139, -139, -139,   67,   67,   68, -139, -139, -139,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -139,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      194,   67,   67,   67,   67,   67,   67, -139,   69,   70,
+       71
 
     },
 
     {
         5, -140, -140, -140, -140, -140, -140, -140, -140, -140,
-     -140, -140, -140, -140,   64,   64,   65, -140, -140, -140,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -140,   64,   64,   64,   64,   64,  187,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -140, -140, -140, -140,   67,   67,   68, -140, -140, -140,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -140,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  195,
+       67,   67,   67,   67,   67,   67,   67, -140,   69,   70,
+       71
     },
 
     {
         5, -141, -141, -141, -141, -141, -141, -141, -141, -141,
-     -141, -141, -141, -141,   64,   64,   65, -141, -141, -141,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -141,   64,   64,   64,   64,   64,   64,   64,   64,
+     -141, -141, -141, -141,   67,   67,   68, -141, -141, -141,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-      188,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,  189,   64
+       67, -141,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,  196,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -141,   69,   70,
+       71
     },
 
     {
-        5,  142,  142,  142,  142,  143,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  144,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142
+        5, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+     -142, -142, -142, -142,   67,   67,   68, -142, -142, -142,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -142,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,  197,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -142,   69,   70,
+
+       71
     },
 
     {
-        5,  142,  142,  142,  142,  190,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142
+        5, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+     -143, -143, -143, -143,   67,   67,   68, -143, -143, -143,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -143,   67,   67,   67,   67,   67,   67,  198,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,  199,   67,
+       67,   67,   67,   67,   67,   67,   67, -143,   69,   70,
+       71
     },
 
     {
-        5,  142,  142,  142,  191,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142
+        5, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+     -144, -144, -144, -144,   67,   67,   68, -144, -144, -144,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -144,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,  200,   67,
+       67,   67,   67,   67,   67,   67,   67, -144,   69,   70,
+       71
     },
 
     {
-        5,  145,  145,  145,  145,  145,  145,  145,  146,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  147,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145
+        5, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+     -145, -145, -145, -145,   67,   67,   68, -145, -145, -145,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -145,   67,   67,   67,   67,   67,  201,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -145,   69,   70,
+       71
     },
 
     {
-        5,  145,  145,  145,  145,  145,  145,  145,  192,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145
+        5, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+     -146, -146, -146, -146,   67,   67,   68, -146, -146, -146,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -146,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  202,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -146,   69,   70,
+       71
     },
 
     {
-        5,  145,  145,  145,  193,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145
+        5, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+
+     -147, -147, -147, -147,   67,   67,   68, -147, -147, -147,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -147,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  203,
+       67,   67,   67,   67,   67,   67,   67, -147,   69,   70,
+       71
     },
 
     {
         5, -148, -148, -148, -148, -148, -148, -148, -148, -148,
-     -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+     -148, -148, -148, -148,   67,   67,   68, -148, -148, -148,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -148,   67,   67,   67,   67,   67,   67,   67,   67,
 
-     -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
-     -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
-     -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
-     -148, -148, -148, -148, -148
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  204,   67,   67,   67,   67,   67, -148,   69,   70,
+       71
     },
 
     {
         5, -149, -149, -149, -149, -149, -149, -149, -149, -149,
-     -149, -149, -149, -149,  150,  150, -149, -149, -149, -149,
-     -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
-     -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
-     -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
-     -149, -149, -149, -149, -149
+     -149, -149, -149, -149,   67,   67,   68, -149, -149, -149,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -149,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,  205,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -149,   69,   70,
+       71
 
     },
 
     {
         5, -150, -150, -150, -150, -150, -150, -150, -150, -150,
-     -150, -150, -150, -150,  150,  150, -150, -150, -150, -150,
-     -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
-     -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
-     -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
-     -150, -150, -150, -150, -150
+     -150, -150, -150, -150,   67,   67,   68, -150, -150, -150,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -150,   67,   67,   67,  206,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -150,   69,   70,
+       71
     },
 
     {
-        5,  151,  151, -151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  152,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  153,  151,  151,  151,  151,  151,  151,  151,  151,
+        5, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+     -151, -151, -151, -151,   67,   67,   68, -151, -151, -151,
+       67,   67,   67,   67,   67,   67,  207,   67,   67,   67,
 
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151
+       67, -151,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -151,   69,   70,
+       71
     },
 
     {
-        5,  151,  151, -152,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  194,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151
+        5, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+     -152, -152, -152, -152,   67,   67,   68, -152, -152, -152,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -152,   67,   67,   67,   67,   67,   67,  208,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -152,   69,   70,
+
+       71
     },
 
     {
-        5,  151,  151, -153,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  195,
-
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  153,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151
+        5, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+     -153, -153, -153, -153,   67,   67,   68, -153, -153, -153,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -153,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,  209,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -153,   69,   70,
+       71
     },
 
     {
         5, -154, -154, -154, -154, -154, -154, -154, -154, -154,
-     -154, -154, -154, -154,  196,  196,  197, -154, -154, -154,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196, -154,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196
+     -154, -154, -154, -154,   67,   67,   68, -154, -154, -154,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -154,   67,   67,   67,   67,   67,  210,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -154,   69,   70,
+       71
     },
 
     {
         5, -155, -155, -155, -155, -155, -155, -155, -155, -155,
-     -155, -155, -155, -155,  155,  155,  156, -155, -155, -155,
-      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
-      155, -155,  155,  155,  155,  155,  155,  155,  155,  155,
-      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
-      155,  155,  155,  155,  155
+     -155, -155, -155, -155,   67,   67,   68, -155, -155, -155,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -155,   67,   67,   67,   67,   67,   67,  211,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -155,   69,   70,
+       71
     },
 
     {
         5, -156, -156, -156, -156, -156, -156, -156, -156, -156,
-     -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109, -156,  109,  109,  109,  109,  109,  109,  109,  109,
-
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109
+     -156, -156, -156, -156,   67,   67,   68, -156, -156, -156,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -156,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  212,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,  213,   67, -156,   69,   70,
+       71
     },
 
     {
         5, -157, -157, -157, -157, -157, -157, -157, -157, -157,
-     -157, -157, -157, -157,   64,   64,   65, -157, -157, -157,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -157,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+     -157, -157, -157, -157,  157,  157,  158, -157, -157, -157,
+      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
+      157, -157,  157,  157,  157,  157,  157,  157,  157,  157,
+      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
+      157,  157,  157,  157,  157,  157,  157, -157,   69,   70,
+       71
     },
 
     {
         5, -158, -158, -158, -158, -158, -158, -158, -158, -158,
-     -158, -158, -158, -158,   64,   64,   65, -158, -158, -158,
+     -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+      118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
+      118, -158,  118,  118,  118,  118,  118,  118,  118,  118,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -158,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,  198,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
+      118,  118,  118,  118,  118,  118,  118, -158,  119,  120,
+      121
     },
 
     {
         5, -159, -159, -159, -159, -159, -159, -159, -159, -159,
-     -159, -159, -159, -159,   64,   64,   65, -159, -159, -159,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -159,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  199,   64,
-       64,   64,   64,   64,   64
+     -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+     -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+     -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+     -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+     -159, -159, -159, -159, -159, -159, -159,   99, -159, -159,
+     -159
 
     },
 
     {
-        5, -160, -160, -160, -160, -160, -160, -160, -160, -160,
-     -160, -160, -160, -160,   64,   64,   65, -160, -160, -160,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -160,   64,   64,   64,   64,   64,   64,   64,   64,
-      200,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+        5,  160,  160,  160,  160,  161,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  162,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160
     },
 
     {
-        5, -161, -161, -161, -161, -161, -161, -161, -161, -161,
-     -161, -161, -161, -161,   64,   64,   65, -161, -161, -161,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -161,   64,   64,   64,   64,  201,   64,   64,   64,
+        5,  160,  160,  160,  160,  214,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160
     },
 
     {
-        5, -162, -162, -162, -162, -162, -162, -162, -162, -162,
-     -162, -162, -162, -162,   64,   64,   65, -162, -162, -162,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -162,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,  202,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+        5,  160,  160,  160,  215,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+
+      160
     },
 
     {
-        5, -163, -163, -163, -163, -163, -163, -163, -163, -163,
-     -163, -163, -163, -163,   64,   64,   65, -163, -163, -163,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -163,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-      203,   64,   64,   64,   64
+        5,  163,  163,  163,  163,  163,  163,  163,  164,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  165,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163
     },
 
     {
-        5, -164, -164, -164, -164, -164, -164, -164, -164, -164,
-     -164, -164, -164, -164,   64,   64,   65, -164, -164, -164,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -164,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  204,
-       64,   64,   64,   64,   64
+        5,  163,  163,  163,  163,  163,  163,  163,  216,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
 
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163
     },
 
     {
-        5, -165, -165, -165, -165, -165, -165, -165, -165, -165,
-     -165, -165, -165, -165,   64,   64,   65, -165, -165, -165,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -165,   64,   64,   64,   64,   64,   64,   64,   64,
-      205,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+        5,  163,  163,  163,  217,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163
     },
 
     {
         5, -166, -166, -166, -166, -166, -166, -166, -166, -166,
-     -166, -166, -166, -166,   64,   64,   65, -166, -166, -166,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -166,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,  206,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+     -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+     -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+     -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+     -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+     -166
     },
 
     {
         5, -167, -167, -167, -167, -167, -167, -167, -167, -167,
-     -167, -167, -167, -167,   64,   64,   65, -167, -167, -167,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -167,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,  207,   64,   64,
-       64,   64,   64,   64,   64
+
+     -167, -167, -167, -167,  168,  168, -167, -167, -167, -167,
+     -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+     -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+     -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+     -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+     -167
     },
 
     {
         5, -168, -168, -168, -168, -168, -168, -168, -168, -168,
-     -168, -168, -168, -168,   64,   64,   65, -168, -168, -168,
+     -168, -168, -168, -168,  168,  168, -168, -168, -168, -168,
+     -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+     -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -168,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+     -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+     -168
     },
 
     {
-        5, -169, -169, -169, -169, -169, -169, -169, -169, -169,
-     -169, -169, -169, -169,   64,   64,   65, -169, -169, -169,
-       64,   64,  208,   64,   64,   64,   64,   64,   64,   64,
-       64, -169,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+        5,  169,  169, -169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  170,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  171,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169
 
     },
 
     {
-        5, -170, -170, -170, -170, -170, -170, -170, -170, -170,
-     -170, -170, -170, -170,   64,   64,   65, -170, -170, -170,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -170,   64,   64,   64,   64,  209,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+        5,  169,  169, -170,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  218,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169
     },
 
     {
-        5, -171, -171, -171, -171, -171, -171, -171, -171, -171,
-     -171, -171, -171, -171,   64,   64,   65, -171, -171, -171,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -171,   64,   64,   64,   64,   64,   64,   64,   64,
+        5,  169,  169, -171,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  219,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+      169,  171,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169
     },
 
     {
         5, -172, -172, -172, -172, -172, -172, -172, -172, -172,
-     -172, -172, -172, -172,   64,   64,   65, -172, -172, -172,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -172,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,  210,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -172, -172, -172, -172,  220,  220,  221, -172, -172, -172,
+      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
+      220, -172,  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, -172, -172, -172,
+
+     -172
     },
 
     {
         5, -173, -173, -173, -173, -173, -173, -173, -173, -173,
-     -173, -173, -173, -173,   64,   64,   65, -173, -173, -173,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -173,   64,   64,   64,   64,   64,   64,   64,   64,
-      211,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -173, -173, -173, -173,  173,  173,  158, -173, -173, -173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173, -173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173, -173,  174,  175,
+      176
     },
 
     {
         5, -174, -174, -174, -174, -174, -174, -174, -174, -174,
-     -174, -174, -174, -174,   64,   64,   65, -174, -174, -174,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -174,   64,   64,   64,   64,   64,   64,   64,   64,
-      212,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
 
+     -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+     -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+     -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+     -174, -174, -174, -174, -174, -174, -174,  222, -174, -174,
+     -174
     },
 
     {
         5, -175, -175, -175, -175, -175, -175, -175, -175, -175,
-     -175, -175, -175, -175,   64,   64,   65, -175, -175, -175,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -175,   64,   64,   64,   64,  213,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+     -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+     -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+     -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+
+     -175, -175, -175, -175, -175, -175, -175,  223, -175, -175,
+     -175
     },
 
     {
         5, -176, -176, -176, -176, -176, -176, -176, -176, -176,
-     -176, -176, -176, -176,   64,   64,   65, -176, -176, -176,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -176,   64,   64,   64,   64,  214,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+     -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+     -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+     -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+     -176, -176, -176, -176, -176, -176, -176,  224, -176, -176,
+     -176
     },
 
     {
         5, -177, -177, -177, -177, -177, -177, -177, -177, -177,
-     -177, -177, -177, -177,   64,   64,   65, -177, -177, -177,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -177,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,  215,   64,   64,
-       64,   64,   64,   64,   64
+
+     -177, -177, -177, -177,  173,  173,  158, -177, -177, -177,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173, -177,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173, -177,  174,  175,
+      176
     },
 
     {
         5, -178, -178, -178, -178, -178, -178, -178, -178, -178,
-     -178, -178, -178, -178,   64,   64,   65, -178, -178, -178,
+     -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+     -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+     -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -178,   64,   64,  216,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+     -178, -178, -178, -178, -178, -178, -178,  177, -178, -178,
+     -178
     },
 
     {
         5, -179, -179, -179, -179, -179, -179, -179, -179, -179,
-     -179, -179, -179, -179,   64,   64,   65, -179, -179, -179,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -179,   64,   64,   64,  217,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+     -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+     -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+     -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+     -179, -179, -179, -179, -179, -179, -179,  225, -179, -179,
+     -179
 
     },
 
     {
         5, -180, -180, -180, -180, -180, -180, -180, -180, -180,
-     -180, -180, -180, -180,   64,   64,   65, -180, -180, -180,
-       64,   64,   64,   64,   64,   64,   64,   64,  218,   64,
-       64, -180,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+     -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+     -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+     -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+     -180, -180, -180, -180, -180, -180, -180,  122, -180, -180,
+     -180
     },
 
     {
         5, -181, -181, -181, -181, -181, -181, -181, -181, -181,
-     -181, -181, -181, -181,   64,   64,   65, -181, -181, -181,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -181,   64,   64,   64,   64,  219,   64,   64,   64,
+     -181, -181, -181, -181,   67,   67,   68, -181, -181, -181,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67, -181,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -181,   69,   70,
+       71
     },
 
     {
         5, -182, -182, -182, -182, -182, -182, -182, -182, -182,
-     -182, -182, -182, -182,   64,   64,   65, -182, -182, -182,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -182,   64,   64,   64,   64,   64,   64,   64,   64,
-      220,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -182, -182, -182, -182,   67,   67,   68, -182, -182, -182,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -182,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,  226,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -182,   69,   70,
+
+       71
     },
 
     {
         5, -183, -183, -183, -183, -183, -183, -183, -183, -183,
-     -183, -183, -183, -183,   64,   64,   65, -183, -183, -183,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -183,  221,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -183, -183, -183, -183,   67,   67,   68, -183, -183, -183,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -183,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      227,   67,   67,   67,   67,   67,   67, -183,   69,   70,
+       71
     },
 
     {
         5, -184, -184, -184, -184, -184, -184, -184, -184, -184,
-     -184, -184, -184, -184,   64,   64,   65, -184, -184, -184,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -184,   64,   64,   64,   64,   64,   64,   64,   64,
-      222,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -184, -184, -184, -184,   67,   67,   68, -184, -184, -184,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -184,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  228,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -184,   69,   70,
+       71
     },
 
     {
         5, -185, -185, -185, -185, -185, -185, -185, -185, -185,
-     -185, -185, -185, -185,   64,   64,   65, -185, -185, -185,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -185,   64,   64,   64,   64,  223,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -185, -185, -185, -185,   67,   67,   68, -185, -185, -185,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -185,   67,   67,   67,   67,   67,  229,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -185,   69,   70,
+       71
     },
 
     {
         5, -186, -186, -186, -186, -186, -186, -186, -186, -186,
-     -186, -186, -186, -186,   64,   64,   65, -186, -186, -186,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  224,
-       64, -186,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -186, -186, -186, -186,   67,   67,   68, -186, -186, -186,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -186,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  230,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -186,   69,   70,
+       71
     },
 
     {
         5, -187, -187, -187, -187, -187, -187, -187, -187, -187,
-     -187, -187, -187, -187,   64,   64,   65, -187, -187, -187,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -187,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,  225,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+     -187, -187, -187, -187,   67,   67,   68, -187, -187, -187,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -187,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,  231,   67,   67,   67,   67, -187,   69,   70,
+       71
     },
 
     {
         5, -188, -188, -188, -188, -188, -188, -188, -188, -188,
-     -188, -188, -188, -188,   64,   64,   65, -188, -188, -188,
+     -188, -188, -188, -188,   67,   67,   68, -188, -188, -188,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -188,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -188,  226,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  232,   67,   67,   67,   67,   67, -188,   69,   70,
+       71
     },
 
     {
         5, -189, -189, -189, -189, -189, -189, -189, -189, -189,
-     -189, -189, -189, -189,   64,   64,   65, -189, -189, -189,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -189,   64,   64,   64,   64,   64,   64,   64,   64,
-      227,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -189, -189, -189, -189,   67,   67,   68, -189, -189, -189,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -189,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  233,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -189,   69,   70,
+       71
 
     },
 
     {
-        5,  142,  142,  142,  142,  228,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142
+        5, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+     -190, -190, -190, -190,   67,   67,   68, -190, -190, -190,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -190,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,  234,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -190,   69,   70,
+       71
     },
 
     {
-        5,  142,  142,  142,  142,  143,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  144,  142,  142,  142,  142,  142,  142,  142,  142,
+        5, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+     -191, -191, -191, -191,   67,   67,   68, -191, -191, -191,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-      142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
-      142,  142,  142,  142,  142
+       67, -191,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  235,
+       67,   67,   67,   67,   67,   67,   67, -191,   69,   70,
+       71
     },
 
     {
-        5,  145,  145,  145,  145,  145,  145,  145,  229,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145
+        5, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+     -192, -192, -192, -192,   67,   67,   68, -192, -192, -192,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -192,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -192,   69,   70,
+
+       71
     },
 
     {
-        5,  145,  145,  145,  145,  145,  145,  145,  146,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  147,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  145
+        5, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+     -193, -193, -193, -193,   67,   67,   68, -193, -193, -193,
+       67,   67,  236,   67,   67,   67,   67,   67,   67,   67,
+       67, -193,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -193,   69,   70,
+       71
     },
 
     {
-        5,  151,  151, -194,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  230,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151
+        5, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+     -194, -194, -194, -194,   67,   67,   68, -194, -194, -194,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -194,   67,   67,   67,   67,   67,  237,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -194,   69,   70,
+       71
     },
 
     {
-        5,  151,  151, -195,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  231,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151
+        5, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+     -195, -195, -195, -195,   67,   67,   68, -195, -195, -195,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -195,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -195,   69,   70,
+       71
     },
 
     {
         5, -196, -196, -196, -196, -196, -196, -196, -196, -196,
-     -196, -196, -196, -196,  196,  196,  197, -196, -196, -196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196, -196,  196,  196,  196,  196,  196,  196,  196,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196
+     -196, -196, -196, -196,   67,   67,   68, -196, -196, -196,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -196,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  238,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -196,   69,   70,
+       71
     },
 
     {
         5, -197, -197, -197, -197, -197, -197, -197, -197, -197,
-     -197, -197, -197, -197, -197, -197,  108, -197, -197, -197,
-     -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
-     -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
-     -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
-     -197, -197, -197, -197, -197
+
+     -197, -197, -197, -197,   67,   67,   68, -197, -197, -197,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -197,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  239,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -197,   69,   70,
+       71
     },
 
     {
         5, -198, -198, -198, -198, -198, -198, -198, -198, -198,
-     -198, -198, -198, -198,   64,   64,   65, -198, -198, -198,
+     -198, -198, -198, -198,   67,   67,   68, -198, -198, -198,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -198,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -198,   64,   64,   64,  232,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,  240,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -198,   69,   70,
+       71
     },
 
     {
         5, -199, -199, -199, -199, -199, -199, -199, -199, -199,
-     -199, -199, -199, -199,   64,   64,   65, -199, -199, -199,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -199,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -199, -199, -199, -199,   67,   67,   68, -199, -199, -199,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -199,   67,   67,   67,   67,   67,  241,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -199,   69,   70,
+       71
 
     },
 
     {
         5, -200, -200, -200, -200, -200, -200, -200, -200, -200,
-     -200, -200, -200, -200,   64,   64,   65, -200, -200, -200,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -200,   64,   64,   64,   64,   64,   64,  233,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -200, -200, -200, -200,   67,   67,   68, -200, -200, -200,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -200,   67,   67,   67,   67,   67,  242,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -200,   69,   70,
+       71
     },
 
     {
         5, -201, -201, -201, -201, -201, -201, -201, -201, -201,
-     -201, -201, -201, -201,   64,   64,   65, -201, -201, -201,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -201,   64,   64,  234,   64,   64,   64,   64,   64,
+     -201, -201, -201, -201,   67,   67,   68, -201, -201, -201,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67, -201,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  243,
+       67,   67,   67,   67,   67,   67,   67, -201,   69,   70,
+       71
     },
 
     {
         5, -202, -202, -202, -202, -202, -202, -202, -202, -202,
-     -202, -202, -202, -202,   64,   64,   65, -202, -202, -202,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -202,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,  235,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -202, -202, -202, -202,   67,   67,   68, -202, -202, -202,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -202,   67,   67,   67,  244,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -202,   69,   70,
+
+       71
     },
 
     {
         5, -203, -203, -203, -203, -203, -203, -203, -203, -203,
-     -203, -203, -203, -203,   64,   64,   65, -203, -203, -203,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -203,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,  236,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -203, -203, -203, -203,   67,   67,   68, -203, -203, -203,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -203,   67,   67,   67,   67,  245,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -203,   69,   70,
+       71
     },
 
     {
         5, -204, -204, -204, -204, -204, -204, -204, -204, -204,
-     -204, -204, -204, -204,   64,   64,   65, -204, -204, -204,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -204,   64,   64,   64,   64,  237,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -204, -204, -204, -204,   67,   67,   68, -204, -204, -204,
 
+       67,   67,   67,   67,   67,   67,   67,   67,  246,   67,
+       67, -204,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -204,   69,   70,
+       71
     },
 
     {
         5, -205, -205, -205, -205, -205, -205, -205, -205, -205,
-     -205, -205, -205, -205,   64,   64,   65, -205, -205, -205,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -205,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,  238,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -205, -205, -205, -205,   67,   67,   68, -205, -205, -205,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -205,   67,   67,   67,   67,   67,  247,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -205,   69,   70,
+       71
     },
 
     {
         5, -206, -206, -206, -206, -206, -206, -206, -206, -206,
-     -206, -206, -206, -206,   64,   64,   65, -206, -206, -206,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -206,  239,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -206, -206, -206, -206,   67,   67,   68, -206, -206, -206,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -206,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  248,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -206,   69,   70,
+       71
     },
 
     {
         5, -207, -207, -207, -207, -207, -207, -207, -207, -207,
-     -207, -207, -207, -207,   64,   64,   65, -207, -207, -207,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -207,   64,   64,   64,   64,   64,   64,   64,   64,
-      240,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+     -207, -207, -207, -207,   67,   67,   68, -207, -207, -207,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -207,   67,  249,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -207,   69,   70,
+       71
     },
 
     {
         5, -208, -208, -208, -208, -208, -208, -208, -208, -208,
-     -208, -208, -208, -208,   64,   64,   65, -208, -208, -208,
+     -208, -208, -208, -208,   67,   67,   68, -208, -208, -208,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -208,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -208,   64,   64,   64,   64,   64,   64,   64,  241,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,  250,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -208,   69,   70,
+       71
     },
 
     {
         5, -209, -209, -209, -209, -209, -209, -209, -209, -209,
-     -209, -209, -209, -209,   64,   64,   65, -209, -209, -209,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -209,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  242,
-       64,   64,   64,   64,   64
+     -209, -209, -209, -209,   67,   67,   68, -209, -209, -209,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -209,   67,   67,   67,   67,   67,  251,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -209,   69,   70,
+       71
 
     },
 
     {
         5, -210, -210, -210, -210, -210, -210, -210, -210, -210,
-     -210, -210, -210, -210,   64,   64,   65, -210, -210, -210,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -210,  243,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -210, -210, -210, -210,   67,   67,   68, -210, -210, -210,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  252,
+       67, -210,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -210,   69,   70,
+       71
     },
 
     {
         5, -211, -211, -211, -211, -211, -211, -211, -211, -211,
-     -211, -211, -211, -211,   64,   64,   65, -211, -211, -211,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -211,   64,   64,   64,   64,   64,   64,   64,   64,
+     -211, -211, -211, -211,   67,   67,   68, -211, -211, -211,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,  244,   64,
-       64,   64,   64,   64,   64
+       67, -211,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  253,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -211,   69,   70,
+       71
     },
 
     {
         5, -212, -212, -212, -212, -212, -212, -212, -212, -212,
-     -212, -212, -212, -212,   64,   64,   65, -212, -212, -212,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -212,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,  245,   64,   64
+     -212, -212, -212, -212,   67,   67,   68, -212, -212, -212,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -212,   67,  254,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -212,   69,   70,
+
+       71
     },
 
     {
         5, -213, -213, -213, -213, -213, -213, -213, -213, -213,
-     -213, -213, -213, -213,   64,   64,   65, -213, -213, -213,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -213,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,  246,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -213, -213, -213, -213,   67,   67,   68, -213, -213, -213,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -213,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  255,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -213,   69,   70,
+       71
     },
 
     {
-        5, -214, -214, -214, -214, -214, -214, -214, -214, -214,
-     -214, -214, -214, -214,   64,   64,   65, -214, -214, -214,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -214,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,  247,   64,   64,
-       64,   64,   64,   64,   64
+        5,  160,  160,  160,  160,  256,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
 
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160
     },
 
     {
-        5, -215, -215, -215, -215, -215, -215, -215, -215, -215,
-     -215, -215, -215, -215,   64,   64,   65, -215, -215, -215,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -215,   64,   64,   64,   64,  248,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+        5,  160,  160,  160,  160,  161,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  162,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160
     },
 
     {
-        5, -216, -216, -216, -216, -216, -216, -216, -216, -216,
-     -216, -216, -216, -216,   64,   64,   65, -216, -216, -216,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -216,  249,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+        5,  163,  163,  163,  163,  163,  163,  163,  257,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163
     },
 
     {
-        5, -217, -217, -217, -217, -217, -217, -217, -217, -217,
-     -217, -217, -217, -217,   64,   64,   65, -217, -217, -217,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -217,   64,   64,   64,   64,  250,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+        5,  163,  163,  163,  163,  163,  163,  163,  164,  163,
+
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  165,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
+      163
     },
 
     {
-        5, -218, -218, -218, -218, -218, -218, -218, -218, -218,
-     -218, -218, -218, -218,   64,   64,   65, -218, -218, -218,
+        5,  169,  169, -218,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  258,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -218,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,  251,   64,   64,
-       64,   64,   64,   64,   64
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169
     },
 
     {
-        5, -219, -219, -219, -219, -219, -219, -219, -219, -219,
-     -219, -219, -219, -219,   64,   64,   65, -219, -219, -219,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -219,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+        5,  169,  169, -219,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  259,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169
 
     },
 
     {
         5, -220, -220, -220, -220, -220, -220, -220, -220, -220,
-     -220, -220, -220, -220,   64,   64,   65, -220, -220, -220,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -220,  252,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -220, -220, -220, -220,  220,  220,  221, -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,  220,
+      220,  220,  220,  220,  220,  220,  220, -220, -220, -220,
+     -220
     },
 
     {
         5, -221, -221, -221, -221, -221, -221, -221, -221, -221,
-     -221, -221, -221, -221,   64,   64,   65, -221, -221, -221,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -221,   64,   64,   64,   64,   64,   64,   64,   64,
+     -221, -221, -221, -221, -221, -221,  117, -221, -221, -221,
+     -221, -221, -221, -221, -221, -221, -221, -221, -221, -221,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,  253,   64
+     -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
     },
 
     {
         5, -222, -222, -222, -222, -222, -222, -222, -222, -222,
-     -222, -222, -222, -222,   64,   64,   65, -222, -222, -222,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -222,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,  254,   64,   64
+     -222, -222, -222, -222,  173,  173,  158, -222, -222, -222,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173, -222,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173, -222,  174,  175,
+
+      176
     },
 
     {
         5, -223, -223, -223, -223, -223, -223, -223, -223, -223,
-     -223, -223, -223, -223,   64,   64,   65, -223, -223, -223,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -223,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  255,
-       64,   64,   64,   64,   64
+     -223, -223, -223, -223, -223, -223, -223, -223, -223, -223,
+     -223, -223, -223, -223, -223, -223, -223, -223, -223, -223,
+     -223, -223, -223, -223, -223, -223, -223, -223, -223, -223,
+     -223, -223, -223, -223, -223, -223, -223, -223, -223, -223,
+     -223, -223, -223, -223, -223, -223, -223,  222, -223, -223,
+     -223
     },
 
     {
         5, -224, -224, -224, -224, -224, -224, -224, -224, -224,
-     -224, -224, -224, -224,   64,   64,   65, -224, -224, -224,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -224,  256,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -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, -224, -224, -224, -224, -224, -224, -224, -224,
+     -224, -224, -224, -224, -224, -224, -224,  260, -224, -224,
+     -224
     },
 
     {
         5, -225, -225, -225, -225, -225, -225, -225, -225, -225,
-     -225, -225, -225, -225,   64,   64,   65, -225, -225, -225,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -225,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,  257,   64,   64,
-       64,   64,   64,   64,   64
+     -225, -225, -225, -225, -225, -225, -225, -225, -225, -225,
+     -225, -225, -225, -225, -225, -225, -225, -225, -225, -225,
+     -225, -225, -225, -225, -225, -225, -225, -225, -225, -225,
+     -225, -225, -225, -225, -225, -225, -225, -225, -225, -225,
+
+     -225, -225, -225, -225, -225, -225, -225,  177, -225, -225,
+     -225
     },
 
     {
         5, -226, -226, -226, -226, -226, -226, -226, -226, -226,
-     -226, -226, -226, -226,   64,   64,   65, -226, -226, -226,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -226,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,  258,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -226, -226, -226, -226,   67,   67,   68, -226, -226, -226,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -226,   67,   67,   67,   67,  261,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -226,   69,   70,
+       71
     },
 
     {
         5, -227, -227, -227, -227, -227, -227, -227, -227, -227,
-     -227, -227, -227, -227,   64,   64,   65, -227, -227, -227,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -227,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,  259,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+     -227, -227, -227, -227,   67,   67,   68, -227, -227, -227,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -227,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -227,   69,   70,
+       71
     },
 
     {
         5, -228, -228, -228, -228, -228, -228, -228, -228, -228,
-     -228, -228, -228, -228, -228, -228, -228, -228, -228, -228,
+     -228, -228, -228, -228,   67,   67,   68, -228, -228, -228,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -228,   67,   67,   67,   67,   67,   67,   67,  262,
 
-     -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, -228, -228, -228
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -228,   69,   70,
+       71
     },
 
     {
         5, -229, -229, -229, -229, -229, -229, -229, -229, -229,
-     -229, -229, -229, -229, -229, -229, -229, -229, -229, -229,
-     -229, -229, -229, -229, -229, -229, -229, -229, -229, -229,
-     -229, -229, -229, -229, -229, -229, -229, -229, -229, -229,
-     -229, -229, -229, -229, -229, -229, -229, -229, -229, -229,
-     -229, -229, -229, -229, -229
+     -229, -229, -229, -229,   67,   67,   68, -229, -229, -229,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -229,   67,   67,   67,  263,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -229,   69,   70,
+       71
 
     },
 
     {
         5, -230, -230, -230, -230, -230, -230, -230, -230, -230,
-     -230, -230, -230, -230, -230, -230, -230, -230, -230,  260,
-     -230, -230, -230, -230, -230, -230, -230, -230, -230, -230,
-     -230, -230, -230, -230, -230, -230, -230, -230, -230, -230,
-     -230, -230, -230, -230, -230, -230, -230, -230, -230, -230,
-     -230, -230, -230, -230, -230
+     -230, -230, -230, -230,   67,   67,   68, -230, -230, -230,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -230,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,  264,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -230,   69,   70,
+       71
     },
 
     {
-        5,  151,  151, -231,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  261,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
+        5, -231, -231, -231, -231, -231, -231, -231, -231, -231,
+     -231, -231, -231, -231,   67,   67,   68, -231, -231, -231,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151
+       67, -231,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,  265,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -231,   69,   70,
+       71
     },
 
     {
         5, -232, -232, -232, -232, -232, -232, -232, -232, -232,
-     -232, -232, -232, -232,   64,   64,   65, -232, -232, -232,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -232,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -232, -232, -232, -232,   67,   67,   68, -232, -232, -232,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -232,   67,   67,   67,   67,   67,  266,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -232,   69,   70,
+
+       71
     },
 
     {
         5, -233, -233, -233, -233, -233, -233, -233, -233, -233,
-     -233, -233, -233, -233,   64,   64,   65, -233, -233, -233,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -233,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -233, -233, -233, -233,   67,   67,   68, -233, -233, -233,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -233,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  267,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -233,   69,   70,
+       71
     },
 
     {
         5, -234, -234, -234, -234, -234, -234, -234, -234, -234,
-     -234, -234, -234, -234,   64,   64,   65, -234, -234, -234,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -234,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  262,
-       64,   64,   64,   64,   64
+     -234, -234, -234, -234,   67,   67,   68, -234, -234, -234,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -234,   67,  268,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -234,   69,   70,
+       71
     },
 
     {
         5, -235, -235, -235, -235, -235, -235, -235, -235, -235,
-     -235, -235, -235, -235,   64,   64,   65, -235, -235, -235,
-       64,   64,   64,  263,   64,   64,   64,   64,   64,   64,
-       64, -235,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -235, -235, -235, -235,   67,   67,   68, -235, -235, -235,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -235,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  269,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -235,   69,   70,
+       71
     },
 
     {
         5, -236, -236, -236, -236, -236, -236, -236, -236, -236,
-     -236, -236, -236, -236,   64,   64,   65, -236, -236, -236,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -236,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  264,
-       64,   64,   64,   64,   64
+     -236, -236, -236, -236,   67,   67,   68, -236, -236, -236,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -236,   67,   67,   67,   67,   67,   67,   67,   67,
+      270,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -236,   69,   70,
+       71
     },
 
     {
         5, -237, -237, -237, -237, -237, -237, -237, -237, -237,
-     -237, -237, -237, -237,   64,   64,   65, -237, -237, -237,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -237,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+     -237, -237, -237, -237,   67,   67,   68, -237, -237, -237,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -237,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  271,   67,   67,   67,   67,   67, -237,   69,   70,
+       71
     },
 
     {
         5, -238, -238, -238, -238, -238, -238, -238, -238, -238,
-     -238, -238, -238, -238,   64,   64,   65, -238, -238, -238,
+     -238, -238, -238, -238,   67,   67,   68, -238, -238, -238,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -238,   67,  272,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -238,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,  265,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -238,   69,   70,
+       71
     },
 
     {
         5, -239, -239, -239, -239, -239, -239, -239, -239, -239,
-     -239, -239, -239, -239,   64,   64,   65, -239, -239, -239,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -239,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,  266,   64
+     -239, -239, -239, -239,   67,   67,   68, -239, -239, -239,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -239,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      273,   67,   67,   67,   67,   67,   67, -239,   69,   70,
+       71
 
     },
 
     {
         5, -240, -240, -240, -240, -240, -240, -240, -240, -240,
-     -240, -240, -240, -240,   64,   64,   65, -240, -240, -240,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -240,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  267,
-       64,   64,   64,   64,   64
+     -240, -240, -240, -240,   67,   67,   68, -240, -240, -240,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -240,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,  274,   67,   67, -240,   69,   70,
+       71
     },
 
     {
         5, -241, -241, -241, -241, -241, -241, -241, -241, -241,
-     -241, -241, -241, -241,   64,   64,   65, -241, -241, -241,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -241,   64,   64,   64,   64,   64,   64,   64,   64,
+     -241, -241, -241, -241,   67,   67,   68, -241, -241, -241,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-      268,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67, -241,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,  275,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -241,   69,   70,
+       71
     },
 
     {
         5, -242, -242, -242, -242, -242, -242, -242, -242, -242,
-     -242, -242, -242, -242,   64,   64,   65, -242, -242, -242,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -242,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -242, -242, -242, -242,   67,   67,   68, -242, -242, -242,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -242,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  276,
+       67,   67,   67,   67,   67,   67,   67, -242,   69,   70,
+
+       71
     },
 
     {
         5, -243, -243, -243, -243, -243, -243, -243, -243, -243,
-     -243, -243, -243, -243,   64,   64,   65, -243, -243, -243,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -243,   64,   64,   64,  269,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -243, -243, -243, -243,   67,   67,   68, -243, -243, -243,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -243,   67,   67,   67,   67,   67,  277,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -243,   69,   70,
+       71
     },
 
     {
         5, -244, -244, -244, -244, -244, -244, -244, -244, -244,
-     -244, -244, -244, -244,   64,   64,   65, -244, -244, -244,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -244,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  270,   64,
-       64,   64,   64,   64,   64
+     -244, -244, -244, -244,   67,   67,   68, -244, -244, -244,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -244,   67,  278,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -244,   69,   70,
+       71
     },
 
     {
         5, -245, -245, -245, -245, -245, -245, -245, -245, -245,
-     -245, -245, -245, -245,   64,   64,   65, -245, -245, -245,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  271,
-       64, -245,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -245, -245, -245, -245,   67,   67,   68, -245, -245, -245,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -245,   67,   67,   67,   67,   67,  279,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -245,   69,   70,
+       71
     },
 
     {
         5, -246, -246, -246, -246, -246, -246, -246, -246, -246,
-     -246, -246, -246, -246,   64,   64,   65, -246, -246, -246,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -246,   64,   64,   64,  272,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -246, -246, -246, -246,   67,   67,   68, -246, -246, -246,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -246,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  280,
+       67,   67,   67,   67,   67,   67,   67, -246,   69,   70,
+       71
     },
 
     {
         5, -247, -247, -247, -247, -247, -247, -247, -247, -247,
-     -247, -247, -247, -247,   64,   64,   65, -247, -247, -247,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -247,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  273,
-       64,   64,   64,   64,   64
+
+     -247, -247, -247, -247,   67,   67,   68, -247, -247, -247,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -247,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -247,   69,   70,
+       71
     },
 
     {
         5, -248, -248, -248, -248, -248, -248, -248, -248, -248,
-     -248, -248, -248, -248,   64,   64,   65, -248, -248, -248,
+     -248, -248, -248, -248,   67,   67,   68, -248, -248, -248,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -248,   67,  281,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -248,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,  274,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -248,   69,   70,
+       71
     },
 
     {
         5, -249, -249, -249, -249, -249, -249, -249, -249, -249,
-     -249, -249, -249, -249,   64,   64,   65, -249, -249, -249,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -249,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  275,
-       64,   64,   64,   64,   64
+     -249, -249, -249, -249,   67,   67,   68, -249, -249, -249,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -249,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,  282,   67, -249,   69,   70,
+       71
 
     },
 
     {
         5, -250, -250, -250, -250, -250, -250, -250, -250, -250,
-     -250, -250, -250, -250,   64,   64,   65, -250, -250, -250,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -250,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,  276,   64,   64,
-       64,   64,   64,   64,   64
+     -250, -250, -250, -250,   67,   67,   68, -250, -250, -250,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -250,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,  283,   67,   67, -250,   69,   70,
+       71
     },
 
     {
         5, -251, -251, -251, -251, -251, -251, -251, -251, -251,
-     -251, -251, -251, -251,   64,   64,   65, -251, -251, -251,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -251,   64,   64,   64,   64,   64,   64,   64,   64,
+     -251, -251, -251, -251,   67,   67,   68, -251, -251, -251,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-      277,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67, -251,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  284,   67,   67,   67,   67,   67, -251,   69,   70,
+       71
     },
 
     {
         5, -252, -252, -252, -252, -252, -252, -252, -252, -252,
-     -252, -252, -252, -252,   64,   64,   65, -252, -252, -252,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -252,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,  278,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -252, -252, -252, -252,   67,   67,   68, -252, -252, -252,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -252,   67,  285,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -252,   69,   70,
+
+       71
     },
 
     {
         5, -253, -253, -253, -253, -253, -253, -253, -253, -253,
-     -253, -253, -253, -253,   64,   64,   65, -253, -253, -253,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -253,   64,   64,   64,   64,  279,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -253, -253, -253, -253,   67,   67,   68, -253, -253, -253,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -253,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  286,
+       67,   67,   67,   67,   67,   67,   67, -253,   69,   70,
+       71
     },
 
     {
         5, -254, -254, -254, -254, -254, -254, -254, -254, -254,
-     -254, -254, -254, -254,   64,   64,   65, -254, -254, -254,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  280,
-       64, -254,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -254, -254, -254, -254,   67,   67,   68, -254, -254, -254,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -254,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,  287,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -254,   69,   70,
+       71
     },
 
     {
         5, -255, -255, -255, -255, -255, -255, -255, -255, -255,
-     -255, -255, -255, -255,   64,   64,   65, -255, -255, -255,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -255,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,  281,   64,   64,
-       64,   64,   64,   64,   64
+     -255, -255, -255, -255,   67,   67,   68, -255, -255, -255,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -255,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,  288,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -255,   69,   70,
+       71
     },
 
     {
         5, -256, -256, -256, -256, -256, -256, -256, -256, -256,
-     -256, -256, -256, -256,   64,   64,   65, -256, -256, -256,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -256,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,  282,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -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
     },
 
     {
         5, -257, -257, -257, -257, -257, -257, -257, -257, -257,
-     -257, -257, -257, -257,   64,   64,   65, -257, -257, -257,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -257,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,  283,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+     -257, -257, -257, -257, -257, -257, -257, -257, -257, -257,
+     -257, -257, -257, -257, -257, -257, -257, -257, -257, -257,
+     -257, -257, -257, -257, -257, -257, -257, -257, -257, -257,
+     -257, -257, -257, -257, -257, -257, -257, -257, -257, -257,
+     -257, -257, -257, -257, -257, -257, -257, -257, -257, -257,
+     -257
     },
 
     {
         5, -258, -258, -258, -258, -258, -258, -258, -258, -258,
-     -258, -258, -258, -258,   64,   64,   65, -258, -258, -258,
+     -258, -258, -258, -258, -258, -258, -258, -258, -258,  289,
+     -258, -258, -258, -258, -258, -258, -258, -258, -258, -258,
+     -258, -258, -258, -258, -258, -258, -258, -258, -258, -258,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -258,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  284,
-       64,   64,   64,   64,   64
+     -258, -258, -258, -258, -258, -258, -258, -258, -258, -258,
+     -258, -258, -258, -258, -258, -258, -258, -258, -258, -258,
+     -258
     },
 
     {
-        5, -259, -259, -259, -259, -259, -259, -259, -259, -259,
-     -259, -259, -259, -259,   64,   64,   65, -259, -259, -259,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -259,   64,   64,   64,   64,   64,   64,  285,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+        5,  169,  169, -259,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  290,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169
 
     },
 
     {
         5, -260, -260, -260, -260, -260, -260, -260, -260, -260,
-     -260, -260, -260, -260, -260, -260, -260, -260, -260,  286,
      -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
      -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
      -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
-     -260, -260, -260, -260, -260
+     -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
+     -260, -260, -260, -260, -260, -260, -260,  222, -260, -260,
+     -260
     },
 
     {
-        5,  151,  151, -261,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  287,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  153,  151,  151,  151,  151,  151,  151,  151,  151,
+        5, -261, -261, -261, -261, -261, -261, -261, -261, -261,
+     -261, -261, -261, -261,   67,   67,   68, -261, -261, -261,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151
+       67, -261,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -261,   69,   70,
+       71
     },
 
     {
         5, -262, -262, -262, -262, -262, -262, -262, -262, -262,
-     -262, -262, -262, -262,   64,   64,   65, -262, -262, -262,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -262,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -262, -262, -262, -262,   67,   67,   68, -262, -262, -262,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -262,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -262,   69,   70,
+
+       71
     },
 
     {
         5, -263, -263, -263, -263, -263, -263, -263, -263, -263,
-     -263, -263, -263, -263,   64,   64,   65, -263, -263, -263,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -263,  288,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -263, -263, -263, -263,   67,   67,   68, -263, -263, -263,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -263,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  291,   67,   67,   67,   67,   67, -263,   69,   70,
+       71
     },
 
     {
         5, -264, -264, -264, -264, -264, -264, -264, -264, -264,
-     -264, -264, -264, -264,   64,   64,   65, -264, -264, -264,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -264,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -264, -264, -264, -264,   67,   67,   68, -264, -264, -264,
 
+       67,   67,   67,  292,   67,   67,   67,   67,   67,   67,
+       67, -264,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -264,   69,   70,
+       71
     },
 
     {
         5, -265, -265, -265, -265, -265, -265, -265, -265, -265,
-     -265, -265, -265, -265,   64,   64,   65, -265, -265, -265,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -265,  289,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -265, -265, -265, -265,   67,   67,   68, -265, -265, -265,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -265,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,  293,   67,   67,   67,   67,   67, -265,   69,   70,
+       71
     },
 
     {
         5, -266, -266, -266, -266, -266, -266, -266, -266, -266,
-     -266, -266, -266, -266,   64,   64,   65, -266, -266, -266,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-      290, -266,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -266, -266, -266, -266,   67,   67,   68, -266, -266, -266,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -266,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -266,   69,   70,
+       71
     },
 
     {
         5, -267, -267, -267, -267, -267, -267, -267, -267, -267,
-     -267, -267, -267, -267,   64,   64,   65, -267, -267, -267,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -267,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  291,   64,
-       64,   64,   64,   64,   64
+
+     -267, -267, -267, -267,   67,   67,   68, -267, -267, -267,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -267,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,  294,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -267,   69,   70,
+       71
     },
 
     {
         5, -268, -268, -268, -268, -268, -268, -268, -268, -268,
-     -268, -268, -268, -268,   64,   64,   65, -268, -268, -268,
+     -268, -268, -268, -268,   67,   67,   68, -268, -268, -268,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -268,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -268,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,  292,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,  295,   67, -268,   69,   70,
+       71
     },
 
     {
         5, -269, -269, -269, -269, -269, -269, -269, -269, -269,
-     -269, -269, -269, -269,   64,   64,   65, -269, -269, -269,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -269,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -269, -269, -269, -269,   67,   67,   68, -269, -269, -269,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -269,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  296,   67,   67,   67,   67,   67, -269,   69,   70,
+       71
 
     },
 
     {
         5, -270, -270, -270, -270, -270, -270, -270, -270, -270,
-     -270, -270, -270, -270,   64,   64,   65, -270, -270, -270,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -270,   64,   64,   64,   64,   64,   64,   64,   64,
-      293,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -270, -270, -270, -270,   67,   67,   68, -270, -270, -270,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -270,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  297,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -270,   69,   70,
+       71
     },
 
     {
         5, -271, -271, -271, -271, -271, -271, -271, -271, -271,
-     -271, -271, -271, -271,   64,   64,   65, -271, -271, -271,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -271,   64,   64,   64,   64,   64,   64,   64,   64,
+     -271, -271, -271, -271,   67,   67,   68, -271, -271, -271,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-      294,   64,   64,   64,   64
+       67, -271,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -271,   69,   70,
+       71
     },
 
     {
         5, -272, -272, -272, -272, -272, -272, -272, -272, -272,
-     -272, -272, -272, -272,   64,   64,   65, -272, -272, -272,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -272,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -272, -272, -272, -272,   67,   67,   68, -272, -272, -272,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -272,   67,   67,   67,   67,  298,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -272,   69,   70,
+
+       71
     },
 
     {
         5, -273, -273, -273, -273, -273, -273, -273, -273, -273,
-     -273, -273, -273, -273,   64,   64,   65, -273, -273, -273,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -273,   64,   64,   64,   64,   64,   64,   64,   64,
-      295,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -273, -273, -273, -273,   67,   67,   68, -273, -273, -273,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -273,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      299,   67,   67,   67,   67,   67,   67, -273,   69,   70,
+       71
     },
 
     {
         5, -274, -274, -274, -274, -274, -274, -274, -274, -274,
-     -274, -274, -274, -274,   64,   64,   65, -274, -274, -274,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -274,   64,   64,  296,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -274, -274, -274, -274,   67,   67,   68, -274, -274, -274,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  300,
+       67, -274,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -274,   69,   70,
+       71
     },
 
     {
         5, -275, -275, -275, -275, -275, -275, -275, -275, -275,
-     -275, -275, -275, -275,   64,   64,   65, -275, -275, -275,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -275,   64,   64,   64,   64,  297,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -275, -275, -275, -275,   67,   67,   68, -275, -275, -275,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -275,   67,   67,   67,   67,  301,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -275,   69,   70,
+       71
     },
 
     {
         5, -276, -276, -276, -276, -276, -276, -276, -276, -276,
-     -276, -276, -276, -276,   64,   64,   65, -276, -276, -276,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -276,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -276, -276, -276, -276,   67,   67,   68, -276, -276, -276,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -276,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  302,   67,   67,   67,   67,   67, -276,   69,   70,
+       71
     },
 
     {
         5, -277, -277, -277, -277, -277, -277, -277, -277, -277,
-     -277, -277, -277, -277,   64,   64,   65, -277, -277, -277,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -277,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,  298,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+     -277, -277, -277, -277,   67,   67,   68, -277, -277, -277,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -277,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,  303,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -277,   69,   70,
+       71
     },
 
     {
         5, -278, -278, -278, -278, -278, -278, -278, -278, -278,
-     -278, -278, -278, -278,   64,   64,   65, -278, -278, -278,
+     -278, -278, -278, -278,   67,   67,   68, -278, -278, -278,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -278,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -278,   64,   64,   64,   64,   64,   64,   64,   64,
-      299,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  304,   67,   67,   67,   67,   67, -278,   69,   70,
+       71
     },
 
     {
         5, -279, -279, -279, -279, -279, -279, -279, -279, -279,
-     -279, -279, -279, -279,   64,   64,   65, -279, -279, -279,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -279,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,  300,   64,   64,
-       64,   64,   64,   64,   64
+     -279, -279, -279, -279,   67,   67,   68, -279, -279, -279,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -279,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  305,
+       67,   67,   67,   67,   67,   67,   67, -279,   69,   70,
+       71
 
     },
 
     {
         5, -280, -280, -280, -280, -280, -280, -280, -280, -280,
-     -280, -280, -280, -280,   64,   64,   65, -280, -280, -280,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -280,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-      301,   64,   64,   64,   64
+     -280, -280, -280, -280,   67,   67,   68, -280, -280, -280,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -280,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  306,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -280,   69,   70,
+       71
     },
 
     {
         5, -281, -281, -281, -281, -281, -281, -281, -281, -281,
-     -281, -281, -281, -281,   64,   64,   65, -281, -281, -281,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -281,   64,   64,   64,   64,   64,   64,   64,   64,
+     -281, -281, -281, -281,   67,   67,   68, -281, -281, -281,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,  302,   64
+       67, -281,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,  307,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -281,   69,   70,
+       71
     },
 
     {
         5, -282, -282, -282, -282, -282, -282, -282, -282, -282,
-     -282, -282, -282, -282,   64,   64,   65, -282, -282, -282,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -282,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,  303,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -282, -282, -282, -282,   67,   67,   68, -282, -282, -282,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -282,   67,   67,   67,   67,   67,  308,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -282,   69,   70,
+
+       71
     },
 
     {
         5, -283, -283, -283, -283, -283, -283, -283, -283, -283,
-     -283, -283, -283, -283,   64,   64,   65, -283, -283, -283,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -283,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -283, -283, -283, -283,   67,   67,   68, -283, -283, -283,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  309,
+       67, -283,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -283,   69,   70,
+       71
     },
 
     {
         5, -284, -284, -284, -284, -284, -284, -284, -284, -284,
-     -284, -284, -284, -284,   64,   64,   65, -284, -284, -284,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  304,
-       64, -284,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  305,   64,
-       64,   64,   64,   64,   64
+     -284, -284, -284, -284,   67,   67,   68, -284, -284, -284,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -284,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  310,
+       67,   67,   67,   67,   67,   67,   67, -284,   69,   70,
+       71
     },
 
     {
         5, -285, -285, -285, -285, -285, -285, -285, -285, -285,
-     -285, -285, -285, -285,   64,   64,   65, -285, -285, -285,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -285,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -285, -285, -285, -285,   67,   67,   68, -285, -285, -285,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -285,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,  311,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -285,   69,   70,
+       71
     },
 
     {
         5, -286, -286, -286, -286, -286, -286, -286, -286, -286,
-     -286, -286, -286, -286, -286, -286, -286, -286, -286, -286,
-     -286, -286, -286, -286, -286, -286, -286, -286, -286, -286,
-     -286, -286, -286, -286, -286, -286, -286, -286, -286, -286,
-
-     -286, -286, -286, -286, -286, -286, -286, -286, -286, -286,
-     -286, -286, -286, -286, -286
+     -286, -286, -286, -286,   67,   67,   68, -286, -286, -286,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -286,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,  312,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -286,   69,   70,
+       71
     },
 
     {
-        5,  151,  151, -287,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  306,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151
+        5, -287, -287, -287, -287, -287, -287, -287, -287, -287,
+
+     -287, -287, -287, -287,   67,   67,   68, -287, -287, -287,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -287,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  313,   67,   67,   67,   67,   67, -287,   69,   70,
+       71
     },
 
     {
         5, -288, -288, -288, -288, -288, -288, -288, -288, -288,
-     -288, -288, -288, -288,   64,   64,   65, -288, -288, -288,
+     -288, -288, -288, -288,   67,   67,   68, -288, -288, -288,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -288,   67,   67,   67,   67,   67,   67,   67,  314,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -288,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  307,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -288,   69,   70,
+       71
     },
 
     {
         5, -289, -289, -289, -289, -289, -289, -289, -289, -289,
-     -289, -289, -289, -289,   64,   64,   65, -289, -289, -289,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -289,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,  308,   64,   64,
-       64,   64,   64,   64,   64
+     -289, -289, -289, -289, -289, -289, -289, -289, -289,  315,
+     -289, -289, -289, -289, -289, -289, -289, -289, -289, -289,
+     -289, -289, -289, -289, -289, -289, -289, -289, -289, -289,
+     -289, -289, -289, -289, -289, -289, -289, -289, -289, -289,
+     -289, -289, -289, -289, -289, -289, -289, -289, -289, -289,
+     -289
 
     },
 
     {
-        5, -290, -290, -290, -290, -290, -290, -290, -290, -290,
-     -290, -290, -290, -290,   64,   64,   65, -290, -290, -290,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -290,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,  309,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+        5,  169,  169, -290,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  316,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  171,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169
     },
 
     {
         5, -291, -291, -291, -291, -291, -291, -291, -291, -291,
-     -291, -291, -291, -291,   64,   64,   65, -291, -291, -291,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -291,   64,   64,   64,   64,   64,   64,   64,   64,
+     -291, -291, -291, -291,   67,   67,   68, -291, -291, -291,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67, -291,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -291,   69,   70,
+       71
     },
 
     {
         5, -292, -292, -292, -292, -292, -292, -292, -292, -292,
-     -292, -292, -292, -292,   64,   64,   65, -292, -292, -292,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -292,   64,   64,   64,  310,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -292, -292, -292, -292,   67,   67,   68, -292, -292, -292,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -292,   67,  317,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -292,   69,   70,
+
+       71
     },
 
     {
         5, -293, -293, -293, -293, -293, -293, -293, -293, -293,
-     -293, -293, -293, -293,   64,   64,   65, -293, -293, -293,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -293,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,  311,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -293, -293, -293, -293,   67,   67,   68, -293, -293, -293,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -293,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -293,   69,   70,
+       71
     },
 
     {
         5, -294, -294, -294, -294, -294, -294, -294, -294, -294,
-     -294, -294, -294, -294,   64,   64,   65, -294, -294, -294,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -294,   64,  312,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -294, -294, -294, -294,   67,   67,   68, -294, -294, -294,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -294,   67,  318,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -294,   69,   70,
+       71
     },
 
     {
         5, -295, -295, -295, -295, -295, -295, -295, -295, -295,
-     -295, -295, -295, -295,   64,   64,   65, -295, -295, -295,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -295,   64,   64,   64,   64,  313,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -295, -295, -295, -295,   67,   67,   68, -295, -295, -295,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      319, -295,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -295,   69,   70,
+       71
     },
 
     {
         5, -296, -296, -296, -296, -296, -296, -296, -296, -296,
-     -296, -296, -296, -296,   64,   64,   65, -296, -296, -296,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -296,   64,   64,   64,   64,  314,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -296, -296, -296, -296,   67,   67,   68, -296, -296, -296,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -296,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      320,   67,   67,   67,   67,   67,   67, -296,   69,   70,
+       71
     },
 
     {
         5, -297, -297, -297, -297, -297, -297, -297, -297, -297,
-     -297, -297, -297, -297,   64,   64,   65, -297, -297, -297,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -297,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  315,   64,
-       64,   64,   64,   64,   64
+
+     -297, -297, -297, -297,   67,   67,   68, -297, -297, -297,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -297,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,  321,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -297,   69,   70,
+       71
     },
 
     {
         5, -298, -298, -298, -298, -298, -298, -298, -298, -298,
-     -298, -298, -298, -298,   64,   64,   65, -298, -298, -298,
+     -298, -298, -298, -298,   67,   67,   68, -298, -298, -298,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -298,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -298,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  316,   64,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -298,   69,   70,
+       71
     },
 
     {
         5, -299, -299, -299, -299, -299, -299, -299, -299, -299,
-     -299, -299, -299, -299,   64,   64,   65, -299, -299, -299,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -299,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,  317
+     -299, -299, -299, -299,   67,   67,   68, -299, -299, -299,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -299,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  322,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -299,   69,   70,
+       71
 
     },
 
     {
         5, -300, -300, -300, -300, -300, -300, -300, -300, -300,
-     -300, -300, -300, -300,   64,   64,   65, -300, -300, -300,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -300,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  318,   64,
-       64,   64,   64,   64,   64
+     -300, -300, -300, -300,   67,   67,   68, -300, -300, -300,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -300,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,  323,   67,   67,   67,   67, -300,   69,   70,
+       71
     },
 
     {
         5, -301, -301, -301, -301, -301, -301, -301, -301, -301,
-     -301, -301, -301, -301,   64,   64,   65, -301, -301, -301,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -301,   64,  319,   64,   64,   64,   64,   64,   64,
+     -301, -301, -301, -301,   67,   67,   68, -301, -301, -301,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67, -301,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -301,   69,   70,
+       71
     },
 
     {
         5, -302, -302, -302, -302, -302, -302, -302, -302, -302,
-     -302, -302, -302, -302,   64,   64,   65, -302, -302, -302,
-      320,   64,   64,   64,   64,  321,   64,   64,   64,   64,
-       64, -302,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -302, -302, -302, -302,   67,   67,   68, -302, -302, -302,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -302,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  324,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -302,   69,   70,
+
+       71
     },
 
     {
         5, -303, -303, -303, -303, -303, -303, -303, -303, -303,
-     -303, -303, -303, -303,   64,   64,   65, -303, -303, -303,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -303,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,  322,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -303, -303, -303, -303,   67,   67,   68, -303, -303, -303,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -303,   67,   67,   67,  325,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -303,   69,   70,
+       71
     },
 
     {
         5, -304, -304, -304, -304, -304, -304, -304, -304, -304,
-     -304, -304, -304, -304,   64,   64,   65, -304, -304, -304,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -304,   64,   64,   64,   64,  323,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -304, -304, -304, -304,   67,   67,   68, -304, -304, -304,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -304,   67,   67,   67,   67,   67,  326,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -304,   69,   70,
+       71
     },
 
     {
         5, -305, -305, -305, -305, -305, -305, -305, -305, -305,
-     -305, -305, -305, -305,   64,   64,   65, -305, -305, -305,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -305,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -305, -305, -305, -305,   67,   67,   68, -305, -305, -305,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -305,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -305,   69,   70,
+       71
     },
 
     {
-        5,  151,  151, -306,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  230,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  151,  151
+        5, -306, -306, -306, -306, -306, -306, -306, -306, -306,
+     -306, -306, -306, -306,   67,   67,   68, -306, -306, -306,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -306,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,  327,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -306,   69,   70,
+       71
     },
 
     {
         5, -307, -307, -307, -307, -307, -307, -307, -307, -307,
-     -307, -307, -307, -307,   64,   64,   65, -307, -307, -307,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -307,  324,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+     -307, -307, -307, -307,   67,   67,   68, -307, -307, -307,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -307,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  328,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -307,   69,   70,
+       71
     },
 
     {
         5, -308, -308, -308, -308, -308, -308, -308, -308, -308,
-     -308, -308, -308, -308,   64,   64,   65, -308, -308, -308,
+     -308, -308, -308, -308,   67,   67,   68, -308, -308, -308,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -308,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -308,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,  325,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  329,
+       67,   67,   67,   67,   67,   67,   67, -308,   69,   70,
+       71
     },
 
     {
         5, -309, -309, -309, -309, -309, -309, -309, -309, -309,
-     -309, -309, -309, -309,   64,   64,   65, -309, -309, -309,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -309,   64,   64,   64,   64,   64,   64,   64,   64,
-      326,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -309, -309, -309, -309,   67,   67,   68, -309, -309, -309,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -309,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,  330,   67,   67,   67,   67, -309,   69,   70,
+       71
 
     },
 
     {
         5, -310, -310, -310, -310, -310, -310, -310, -310, -310,
-     -310, -310, -310, -310,   64,   64,   65, -310, -310, -310,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -310,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,  327,   64,   64,
-       64,   64,   64,   64,   64
+     -310, -310, -310, -310,   67,   67,   68, -310, -310, -310,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -310,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,  331,   67, -310,   69,   70,
+       71
     },
 
     {
         5, -311, -311, -311, -311, -311, -311, -311, -311, -311,
-     -311, -311, -311, -311,   64,   64,   65, -311, -311, -311,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -311,   64,   64,   64,   64,   64,   64,   64,   64,
+     -311, -311, -311, -311,   67,   67,   68, -311, -311, -311,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,  328,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67, -311,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,  332,   67,
+       67,   67,   67,   67,   67,   67,   67, -311,   69,   70,
+       71
     },
 
     {
         5, -312, -312, -312, -312, -312, -312, -312, -312, -312,
-     -312, -312, -312, -312,   64,   64,   65, -312, -312, -312,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -312,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  329,   64,
-       64,   64,   64,   64,   64
+     -312, -312, -312, -312,   67,   67,   68, -312, -312, -312,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -312,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -312,   69,   70,
+
+       71
     },
 
     {
         5, -313, -313, -313, -313, -313, -313, -313, -313, -313,
-     -313, -313, -313, -313,   64,   64,   65, -313, -313, -313,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -313,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  330,   64,
-       64,   64,   64,   64,   64
+     -313, -313, -313, -313,   67,   67,   68, -313, -313, -313,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  333,
+       67, -313,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      334,   67,   67,   67,   67,   67,   67, -313,   69,   70,
+       71
     },
 
     {
         5, -314, -314, -314, -314, -314, -314, -314, -314, -314,
-     -314, -314, -314, -314,   64,   64,   65, -314, -314, -314,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -314,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  331,   64,
-       64,   64,   64,   64,   64
+     -314, -314, -314, -314,   67,   67,   68, -314, -314, -314,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -314,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -314,   69,   70,
+       71
     },
 
     {
         5, -315, -315, -315, -315, -315, -315, -315, -315, -315,
-     -315, -315, -315, -315,   64,   64,   65, -315, -315, -315,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -315,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -315, -315, -315, -315, -315, -315, -315, -315, -315, -315,
+     -315, -315, -315, -315, -315, -315, -315, -315, -315, -315,
+     -315, -315, -315, -315, -315, -315, -315, -315, -315, -315,
+     -315, -315, -315, -315, -315, -315, -315, -315, -315, -315,
+
+     -315, -315, -315, -315, -315, -315, -315, -315, -315, -315,
+     -315
     },
 
     {
-        5, -316, -316, -316, -316, -316, -316, -316, -316, -316,
-     -316, -316, -316, -316,   64,   64,   65, -316, -316, -316,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -316,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+        5,  169,  169, -316,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  335,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169
     },
 
     {
         5, -317, -317, -317, -317, -317, -317, -317, -317, -317,
-     -317, -317, -317, -317,   64,   64,   65, -317, -317, -317,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -317,   64,   64,   64,   64,  332,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+     -317, -317, -317, -317,   67,   67,   68, -317, -317, -317,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -317,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  336,   67,   67,   67,   67,   67, -317,   69,   70,
+       71
     },
 
     {
         5, -318, -318, -318, -318, -318, -318, -318, -318, -318,
-     -318, -318, -318, -318,   64,   64,   65, -318, -318, -318,
+     -318, -318, -318, -318,   67,   67,   68, -318, -318, -318,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -318,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -318,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  337,
+       67,   67,   67,   67,   67,   67,   67, -318,   69,   70,
+       71
     },
 
     {
         5, -319, -319, -319, -319, -319, -319, -319, -319, -319,
-     -319, -319, -319, -319,   64,   64,   65, -319, -319, -319,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -319,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  333,   64,
-       64,   64,   64,   64,   64
+     -319, -319, -319, -319,   67,   67,   68, -319, -319, -319,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -319,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,  338,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -319,   69,   70,
+       71
 
     },
 
     {
         5, -320, -320, -320, -320, -320, -320, -320, -320, -320,
-     -320, -320, -320, -320,   64,   64,   65, -320, -320, -320,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -320,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,  334,   64,   64,
-       64,   64,   64,   64,   64
+     -320, -320, -320, -320,   67,   67,   68, -320, -320, -320,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -320,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -320,   69,   70,
+       71
     },
 
     {
         5, -321, -321, -321, -321, -321, -321, -321, -321, -321,
-     -321, -321, -321, -321,   64,   64,   65, -321, -321, -321,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -321,   64,   64,   64,   64,   64,   64,   64,   64,
+     -321, -321, -321, -321,   67,   67,   68, -321, -321, -321,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-      335,   64,   64,   64,   64
+       67, -321,   67,   67,   67,   67,  339,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -321,   69,   70,
+       71
     },
 
     {
         5, -322, -322, -322, -322, -322, -322, -322, -322, -322,
-     -322, -322, -322, -322,   64,   64,   65, -322, -322, -322,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -322,   64,   64,   64,   64,  336,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -322, -322, -322, -322,   67,   67,   68, -322, -322, -322,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -322,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  340,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -322,   69,   70,
+
+       71
     },
 
     {
         5, -323, -323, -323, -323, -323, -323, -323, -323, -323,
-     -323, -323, -323, -323,   64,   64,   65, -323, -323, -323,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -323,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  337,
-       64,   64,   64,   64,   64
+     -323, -323, -323, -323,   67,   67,   68, -323, -323, -323,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -323,   67,   67,  341,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -323,   69,   70,
+       71
     },
 
     {
         5, -324, -324, -324, -324, -324, -324, -324, -324, -324,
-     -324, -324, -324, -324,   64,   64,   65, -324, -324, -324,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -324,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -324, -324, -324, -324,   67,   67,   68, -324, -324, -324,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -324,   67,   67,   67,   67,   67,  342,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -324,   69,   70,
+       71
     },
 
     {
         5, -325, -325, -325, -325, -325, -325, -325, -325, -325,
-     -325, -325, -325, -325,   64,   64,   65, -325, -325, -325,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -325,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -325, -325, -325, -325,   67,   67,   68, -325, -325, -325,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -325,   67,   67,   67,   67,   67,  343,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -325,   69,   70,
+       71
     },
 
     {
         5, -326, -326, -326, -326, -326, -326, -326, -326, -326,
-     -326, -326, -326, -326,   64,   64,   65, -326, -326, -326,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -326,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  338,
-       64,   64,   64,   64,   64
+     -326, -326, -326, -326,   67,   67,   68, -326, -326, -326,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -326,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      344,   67,   67,   67,   67,   67,   67, -326,   69,   70,
+       71
     },
 
     {
         5, -327, -327, -327, -327, -327, -327, -327, -327, -327,
-     -327, -327, -327, -327,   64,   64,   65, -327, -327, -327,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -327,   64,   64,   64,   64,  339,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+     -327, -327, -327, -327,   67,   67,   68, -327, -327, -327,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -327,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      345,   67,   67,   67,   67,   67,   67, -327,   69,   70,
+       71
     },
 
     {
         5, -328, -328, -328, -328, -328, -328, -328, -328, -328,
-     -328, -328, -328, -328,   64,   64,   65, -328, -328, -328,
+     -328, -328, -328, -328,   67,   67,   68, -328, -328, -328,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -328,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -328,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,  346, -328,   69,   70,
+       71
     },
 
     {
         5, -329, -329, -329, -329, -329, -329, -329, -329, -329,
-     -329, -329, -329, -329,   64,   64,   65, -329, -329, -329,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -329,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  340,
-       64,   64,   64,   64,   64
+     -329, -329, -329, -329,   67,   67,   68, -329, -329, -329,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -329,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      347,   67,   67,   67,   67,   67,   67, -329,   69,   70,
+       71
 
     },
 
     {
         5, -330, -330, -330, -330, -330, -330, -330, -330, -330,
-     -330, -330, -330, -330,   64,   64,   65, -330, -330, -330,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -330,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -330, -330, -330, -330,   67,   67,   68, -330, -330, -330,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -330,   67,   67,  348,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -330,   69,   70,
+       71
     },
 
     {
         5, -331, -331, -331, -331, -331, -331, -331, -331, -331,
-     -331, -331, -331, -331,   64,   64,   65, -331, -331, -331,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -331,   64,   64,   64,   64,   64,   64,   64,   64,
+     -331, -331, -331, -331,   67,   67,   68, -331, -331, -331,
+      349,   67,   67,   67,   67,  350,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67, -331,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -331,   69,   70,
+       71
     },
 
     {
         5, -332, -332, -332, -332, -332, -332, -332, -332, -332,
-     -332, -332, -332, -332,   64,   64,   65, -332, -332, -332,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -332,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  341,   64,
-       64,   64,   64,   64,   64
+     -332, -332, -332, -332,   67,   67,   68, -332, -332, -332,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -332,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,  351,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -332,   69,   70,
+
+       71
     },
 
     {
         5, -333, -333, -333, -333, -333, -333, -333, -333, -333,
-     -333, -333, -333, -333,   64,   64,   65, -333, -333, -333,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -333,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  342,
-       64,   64,   64,   64,   64
+     -333, -333, -333, -333,   67,   67,   68, -333, -333, -333,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -333,   67,   67,   67,   67,   67,  352,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -333,   69,   70,
+       71
     },
 
     {
         5, -334, -334, -334, -334, -334, -334, -334, -334, -334,
-     -334, -334, -334, -334,   64,   64,   65, -334, -334, -334,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -334,   64,   64,   64,   64,   64,   64,  343,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -334, -334, -334, -334,   67,   67,   68, -334, -334, -334,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -334,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -334,   69,   70,
+       71
     },
 
     {
-        5, -335, -335, -335, -335, -335, -335, -335, -335, -335,
-     -335, -335, -335, -335,   64,   64,   65, -335, -335, -335,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -335,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,  344,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+        5,  169,  169, -335,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  258,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169
     },
 
     {
         5, -336, -336, -336, -336, -336, -336, -336, -336, -336,
-     -336, -336, -336, -336,   64,   64,   65, -336, -336, -336,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -336,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,  345,   64,
-       64,   64,   64,   64,   64
+     -336, -336, -336, -336,   67,   67,   68, -336, -336, -336,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -336,   67,  353,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -336,   69,   70,
+       71
     },
 
     {
         5, -337, -337, -337, -337, -337, -337, -337, -337, -337,
-     -337, -337, -337, -337,   64,   64,   65, -337, -337, -337,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -337,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  346,   64,
-       64,   64,   64,   64,   64
+
+     -337, -337, -337, -337,   67,   67,   68, -337, -337, -337,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -337,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,  354,   67, -337,   69,   70,
+       71
     },
 
     {
         5, -338, -338, -338, -338, -338, -338, -338, -338, -338,
-     -338, -338, -338, -338,   64,   64,   65, -338, -338, -338,
+     -338, -338, -338, -338,   67,   67,   68, -338, -338, -338,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -338,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -338,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,  355,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -338,   69,   70,
+       71
     },
 
     {
         5, -339, -339, -339, -339, -339, -339, -339, -339, -339,
-     -339, -339, -339, -339,   64,   64,   65, -339, -339, -339,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -339,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,  347,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -339, -339, -339, -339,   67,   67,   68, -339, -339, -339,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -339,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  356,
+       67,   67,   67,   67,   67,   67,   67, -339,   69,   70,
+       71
 
     },
 
     {
         5, -340, -340, -340, -340, -340, -340, -340, -340, -340,
-     -340, -340, -340, -340,   64,   64,   65, -340, -340, -340,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -340,   64,   64,   64,   64,   64,   64,   64,   64,
-      348,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -340, -340, -340, -340,   67,   67,   68, -340, -340, -340,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -340,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,  357,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -340,   69,   70,
+       71
     },
 
     {
         5, -341, -341, -341, -341, -341, -341, -341, -341, -341,
-     -341, -341, -341, -341,   64,   64,   65, -341, -341, -341,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -341,   64,   64,   64,   64,   64,   64,   64,   64,
+     -341, -341, -341, -341,   67,   67,   68, -341, -341, -341,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67, -341,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      358,   67,   67,   67,   67,   67,   67, -341,   69,   70,
+       71
     },
 
     {
         5, -342, -342, -342, -342, -342, -342, -342, -342, -342,
-     -342, -342, -342, -342,   64,   64,   65, -342, -342, -342,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -342,   64,   64,   64,   64,   64,   64,   64,   64,
-      349,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -342, -342, -342, -342,   67,   67,   68, -342, -342, -342,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -342,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      359,   67,   67,   67,   67,   67,   67, -342,   69,   70,
+
+       71
     },
 
     {
         5, -343, -343, -343, -343, -343, -343, -343, -343, -343,
-     -343, -343, -343, -343,   64,   64,   65, -343, -343, -343,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -343,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-      350,   64,   64,   64,   64
+     -343, -343, -343, -343,   67,   67,   68, -343, -343, -343,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -343,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      360,   67,   67,   67,   67,   67,   67, -343,   69,   70,
+       71
     },
 
     {
         5, -344, -344, -344, -344, -344, -344, -344, -344, -344,
-     -344, -344, -344, -344,   64,   64,   65, -344, -344, -344,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -344,   64,   64,  351,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -344, -344, -344, -344,   67,   67,   68, -344, -344, -344,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -344,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -344,   69,   70,
+       71
     },
 
     {
         5, -345, -345, -345, -345, -345, -345, -345, -345, -345,
-     -345, -345, -345, -345,   64,   64,   65, -345, -345, -345,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -345,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -345, -345, -345, -345,   67,   67,   68, -345, -345, -345,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -345,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -345,   69,   70,
+       71
     },
 
     {
         5, -346, -346, -346, -346, -346, -346, -346, -346, -346,
-     -346, -346, -346, -346,   64,   64,   65, -346, -346, -346,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -346,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -346, -346, -346, -346,   67,   67,   68, -346, -346, -346,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -346,   67,   67,   67,   67,   67,  361,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -346,   69,   70,
+       71
     },
 
     {
         5, -347, -347, -347, -347, -347, -347, -347, -347, -347,
-     -347, -347, -347, -347,   64,   64,   65, -347, -347, -347,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -347,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+     -347, -347, -347, -347,   67,   67,   68, -347, -347, -347,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -347,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -347,   69,   70,
+       71
     },
 
     {
         5, -348, -348, -348, -348, -348, -348, -348, -348, -348,
-     -348, -348, -348, -348,   64,   64,   65, -348, -348, -348,
+     -348, -348, -348, -348,   67,   67,   68, -348, -348, -348,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -348,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -348,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  352,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      362,   67,   67,   67,   67,   67,   67, -348,   69,   70,
+       71
     },
 
     {
         5, -349, -349, -349, -349, -349, -349, -349, -349, -349,
-     -349, -349, -349, -349,   64,   64,   65, -349, -349, -349,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -349,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  353,
-       64,   64,   64,   64,   64
+     -349, -349, -349, -349,   67,   67,   68, -349, -349, -349,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -349,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  363,
+       67,   67,   67,   67,   67,   67,   67, -349,   69,   70,
+       71
 
     },
 
     {
         5, -350, -350, -350, -350, -350, -350, -350, -350, -350,
-     -350, -350, -350, -350,   64,   64,   65, -350, -350, -350,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -350,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,  354,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -350, -350, -350, -350,   67,   67,   68, -350, -350, -350,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -350,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,  364,   67,   67,   67,   67, -350,   69,   70,
+       71
     },
 
     {
         5, -351, -351, -351, -351, -351, -351, -351, -351, -351,
-     -351, -351, -351, -351,   64,   64,   65, -351, -351, -351,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -351,   64,   64,   64,   64,   64,   64,   64,   64,
+     -351, -351, -351, -351,   67,   67,   68, -351, -351, -351,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  355,
-       64,   64,   64,   64,   64
+       67, -351,   67,   67,   67,   67,   67,  365,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -351,   69,   70,
+       71
     },
 
     {
         5, -352, -352, -352, -352, -352, -352, -352, -352, -352,
-     -352, -352, -352, -352,   64,   64,   65, -352, -352, -352,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -352,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-      356,   64,   64,   64,   64
+     -352, -352, -352, -352,   67,   67,   68, -352, -352, -352,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -352,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  366,   67,   67,   67,   67,   67, -352,   69,   70,
+
+       71
     },
 
     {
         5, -353, -353, -353, -353, -353, -353, -353, -353, -353,
-     -353, -353, -353, -353,   64,   64,   65, -353, -353, -353,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -353,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-      357,   64,   64,   64,   64
+     -353, -353, -353, -353,   67,   67,   68, -353, -353, -353,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -353,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -353,   69,   70,
+       71
     },
 
     {
         5, -354, -354, -354, -354, -354, -354, -354, -354, -354,
-     -354, -354, -354, -354,   64,   64,   65, -354, -354, -354,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -354,   64,   64,   64,   64,  358,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -354, -354, -354, -354,   67,   67,   68, -354, -354, -354,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -354,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -354,   69,   70,
+       71
     },
 
     {
         5, -355, -355, -355, -355, -355, -355, -355, -355, -355,
-     -355, -355, -355, -355,   64,   64,   65, -355, -355, -355,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -355,   64,   64,   64,   64,   64,   64,   64,   64,
-      359,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -355, -355, -355, -355,   67,   67,   68, -355, -355, -355,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -355,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,  367,   67,   67,   67,   67,   67, -355,   69,   70,
+       71
     },
 
     {
         5, -356, -356, -356, -356, -356, -356, -356, -356, -356,
-     -356, -356, -356, -356,   64,   64,   65, -356, -356, -356,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -356,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  360,
-       64,   64,   64,   64,   64
+     -356, -356, -356, -356,   67,   67,   68, -356, -356, -356,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -356,   67,   67,   67,   67,   67,  368,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -356,   69,   70,
+       71
     },
 
     {
         5, -357, -357, -357, -357, -357, -357, -357, -357, -357,
-     -357, -357, -357, -357,   64,   64,   65, -357, -357, -357,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -357,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  361,
-       64,   64,   64,   64,   64
+
+     -357, -357, -357, -357,   67,   67,   68, -357, -357, -357,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -357,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -357,   69,   70,
+       71
     },
 
     {
         5, -358, -358, -358, -358, -358, -358, -358, -358, -358,
-     -358, -358, -358, -358,   64,   64,   65, -358, -358, -358,
+     -358, -358, -358, -358,   67,   67,   68, -358, -358, -358,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -358,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -358,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,  362,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  369,   67,   67,   67,   67,   67, -358,   69,   70,
+       71
     },
 
     {
         5, -359, -359, -359, -359, -359, -359, -359, -359, -359,
-     -359, -359, -359, -359,   64,   64,   65, -359, -359, -359,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -359,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,  363,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -359, -359, -359, -359,   67,   67,   68, -359, -359, -359,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -359,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -359,   69,   70,
+       71
 
     },
 
     {
         5, -360, -360, -360, -360, -360, -360, -360, -360, -360,
-     -360, -360, -360, -360,   64,   64,   65, -360, -360, -360,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -360,   64,   64,   64,   64,   64,   64,   64,   64,
-      364,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -360, -360, -360, -360,   67,   67,   68, -360, -360, -360,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -360,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -360,   69,   70,
+       71
     },
 
     {
         5, -361, -361, -361, -361, -361, -361, -361, -361, -361,
-     -361, -361, -361, -361,   64,   64,   65, -361, -361, -361,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -361,   64,   64,   64,   64,   64,   64,   64,   64,
+     -361, -361, -361, -361,   67,   67,   68, -361, -361, -361,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-      365,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67, -361,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      370,   67,   67,   67,   67,   67,   67, -361,   69,   70,
+       71
     },
 
     {
         5, -362, -362, -362, -362, -362, -362, -362, -362, -362,
-     -362, -362, -362, -362,   64,   64,   65, -362, -362, -362,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -362,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,  366,
-       64,   64,   64,   64,   64
+     -362, -362, -362, -362,   67,   67,   68, -362, -362, -362,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -362,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  371,   67,   67,   67,   67,   67, -362,   69,   70,
+
+       71
     },
 
     {
         5, -363, -363, -363, -363, -363, -363, -363, -363, -363,
-     -363, -363, -363, -363,   64,   64,   65, -363, -363, -363,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -363,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,  367,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -363, -363, -363, -363,   67,   67,   68, -363, -363, -363,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -363,   67,   67,   67,   67,   67,   67,   67,  372,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -363,   69,   70,
+       71
     },
 
     {
         5, -364, -364, -364, -364, -364, -364, -364, -364, -364,
-     -364, -364, -364, -364,   64,   64,   65, -364, -364, -364,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -364,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,  368,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -364, -364, -364, -364,   67,   67,   68, -364, -364, -364,
 
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -364,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,  373,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -364,   69,   70,
+       71
     },
 
     {
         5, -365, -365, -365, -365, -365, -365, -365, -365, -365,
-     -365, -365, -365, -365,   64,   64,   65, -365, -365, -365,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -365,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,  369,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -365, -365, -365, -365,   67,   67,   68, -365, -365, -365,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -365,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+      374,   67,   67,   67,   67,   67,   67, -365,   69,   70,
+       71
     },
 
     {
         5, -366, -366, -366, -366, -366, -366, -366, -366, -366,
-     -366, -366, -366, -366,   64,   64,   65, -366, -366, -366,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -366,   64,   64,   64,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,  370,   64,
-       64,   64,   64,   64,   64
+     -366, -366, -366, -366,   67,   67,   68, -366, -366, -366,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -366,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      375,   67,   67,   67,   67,   67,   67, -366,   69,   70,
+       71
     },
 
     {
         5, -367, -367, -367, -367, -367, -367, -367, -367, -367,
-     -367, -367, -367, -367,   64,   64,   65, -367, -367, -367,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -367,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+
+     -367, -367, -367, -367,   67,   67,   68, -367, -367, -367,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -367,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -367,   69,   70,
+       71
     },
 
     {
         5, -368, -368, -368, -368, -368, -368, -368, -368, -368,
-     -368, -368, -368, -368,   64,   64,   65, -368, -368, -368,
+     -368, -368, -368, -368,   67,   67,   68, -368, -368, -368,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -368,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -368,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,  371,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+       67,   67,   67,   67,   67,   67,  376,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -368,   69,   70,
+       71
     },
 
     {
         5, -369, -369, -369, -369, -369, -369, -369, -369, -369,
-     -369, -369, -369, -369,   64,   64,   65, -369, -369, -369,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -369,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,  372,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -369, -369, -369, -369,   67,   67,   68, -369, -369, -369,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -369,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  377,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -369,   69,   70,
+       71
 
     },
 
     {
         5, -370, -370, -370, -370, -370, -370, -370, -370, -370,
-     -370, -370, -370, -370,   64,   64,   65, -370, -370, -370,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -370,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -370, -370, -370, -370,   67,   67,   68, -370, -370, -370,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -370,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -370,   69,   70,
+       71
     },
 
     {
         5, -371, -371, -371, -371, -371, -371, -371, -371, -371,
-     -371, -371, -371, -371,   64,   64,   65, -371, -371, -371,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -371,   64,   64,   64,   64,   64,   64,   64,   64,
+     -371, -371, -371, -371,   67,   67,   68, -371, -371, -371,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
 
-       64,   64,   64,   64,   64,   64,   64,   64,  373,   64,
-       64,   64,   64,   64,   64
+       67, -371,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  378,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -371,   69,   70,
+       71
     },
 
     {
         5, -372, -372, -372, -372, -372, -372, -372, -372, -372,
-     -372, -372, -372, -372,   64,   64,   65, -372, -372, -372,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -372,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,  374,   64,
-       64,   64,   64,   64,   64
+     -372, -372, -372, -372,   67,   67,   68, -372, -372, -372,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -372,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,  379,   67,   67,   67,   67, -372,   69,   70,
+
+       71
     },
 
     {
         5, -373, -373, -373, -373, -373, -373, -373, -373, -373,
-     -373, -373, -373, -373,   64,   64,   65, -373, -373, -373,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -373,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -373, -373, -373, -373,   67,   67,   68, -373, -373, -373,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -373,   67,   67,   67,  380,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -373,   69,   70,
+       71
     },
 
     {
         5, -374, -374, -374, -374, -374, -374, -374, -374, -374,
-     -374, -374, -374, -374,   64,   64,   65, -374, -374, -374,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64, -374,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64
+     -374, -374, -374, -374,   67,   67,   68, -374, -374, -374,
+
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -374,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -374,   69,   70,
+       71
+    },
+
+    {
+        5, -375, -375, -375, -375, -375, -375, -375, -375, -375,
+     -375, -375, -375, -375,   67,   67,   68, -375, -375, -375,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -375,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67, -375,   69,   70,
+       71
+    },
+
+    {
+        5, -376, -376, -376, -376, -376, -376, -376, -376, -376,
+     -376, -376, -376, -376,   67,   67,   68, -376, -376, -376,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -376,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -376,   69,   70,
+       71
+    },
+
+    {
+        5, -377, -377, -377, -377, -377, -377, -377, -377, -377,
+
+     -377, -377, -377, -377,   67,   67,   68, -377, -377, -377,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -377,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  381,   67,   67,   67,   67,   67, -377,   69,   70,
+       71
+    },
+
+    {
+        5, -378, -378, -378, -378, -378, -378, -378, -378, -378,
+     -378, -378, -378, -378,   67,   67,   68, -378, -378, -378,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -378,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  382,   67,   67,   67,   67,   67, -378,   69,   70,
+       71
+    },
+
+    {
+        5, -379, -379, -379, -379, -379, -379, -379, -379, -379,
+     -379, -379, -379, -379,   67,   67,   68, -379, -379, -379,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -379,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,  383,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -379,   69,   70,
+       71
+
+    },
+
+    {
+        5, -380, -380, -380, -380, -380, -380, -380, -380, -380,
+     -380, -380, -380, -380,   67,   67,   68, -380, -380, -380,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -380,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  384,   67,   67,   67,   67,   67, -380,   69,   70,
+       71
+    },
+
+    {
+        5, -381, -381, -381, -381, -381, -381, -381, -381, -381,
+     -381, -381, -381, -381,   67,   67,   68, -381, -381, -381,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67, -381,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,  385,   67,   67,   67,   67, -381,   69,   70,
+       71
+    },
+
+    {
+        5, -382, -382, -382, -382, -382, -382, -382, -382, -382,
+     -382, -382, -382, -382,   67,   67,   68, -382, -382, -382,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -382,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,  386,   67,   67,   67,   67, -382,   69,   70,
+
+       71
+    },
+
+    {
+        5, -383, -383, -383, -383, -383, -383, -383, -383, -383,
+     -383, -383, -383, -383,   67,   67,   68, -383, -383, -383,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -383,   67,   67,   67,   67,   67,  387,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -383,   69,   70,
+       71
+    },
+
+    {
+        5, -384, -384, -384, -384, -384, -384, -384, -384, -384,
+     -384, -384, -384, -384,   67,   67,   68, -384, -384, -384,
+
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -384,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  388,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -384,   69,   70,
+       71
+    },
+
+    {
+        5, -385, -385, -385, -385, -385, -385, -385, -385, -385,
+     -385, -385, -385, -385,   67,   67,   68, -385, -385, -385,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -385,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,  389,   67,   67,   67,   67,   67, -385,   69,   70,
+       71
+    },
+
+    {
+        5, -386, -386, -386, -386, -386, -386, -386, -386, -386,
+     -386, -386, -386, -386,   67,   67,   68, -386, -386, -386,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -386,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  390,   67,   67,   67,   67,   67, -386,   69,   70,
+       71
+    },
+
+    {
+        5, -387, -387, -387, -387, -387, -387, -387, -387, -387,
+
+     -387, -387, -387, -387,   67,   67,   68, -387, -387, -387,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -387,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,  391,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -387,   69,   70,
+       71
+    },
+
+    {
+        5, -388, -388, -388, -388, -388, -388, -388, -388, -388,
+     -388, -388, -388, -388,   67,   67,   68, -388, -388, -388,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -388,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67,  392,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -388,   69,   70,
+       71
+    },
+
+    {
+        5, -389, -389, -389, -389, -389, -389, -389, -389, -389,
+     -389, -389, -389, -389,   67,   67,   68, -389, -389, -389,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -389,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  393,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -389,   69,   70,
+       71
+
+    },
+
+    {
+        5, -390, -390, -390, -390, -390, -390, -390, -390, -390,
+     -390, -390, -390, -390,   67,   67,   68, -390, -390, -390,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -390,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  394,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -390,   69,   70,
+       71
+    },
+
+    {
+        5, -391, -391, -391, -391, -391, -391, -391, -391, -391,
+     -391, -391, -391, -391,   67,   67,   68, -391, -391, -391,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67, -391,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,  395,   67,   67,   67,   67,   67, -391,   69,   70,
+       71
+    },
+
+    {
+        5, -392, -392, -392, -392, -392, -392, -392, -392, -392,
+     -392, -392, -392, -392,   67,   67,   68, -392, -392, -392,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -392,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,  396,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -392,   69,   70,
+
+       71
+    },
+
+    {
+        5, -393, -393, -393, -393, -393, -393, -393, -393, -393,
+     -393, -393, -393, -393,   67,   67,   68, -393, -393, -393,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -393,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  397,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -393,   69,   70,
+       71
+    },
+
+    {
+        5, -394, -394, -394, -394, -394, -394, -394, -394, -394,
+     -394, -394, -394, -394,   67,   67,   68, -394, -394, -394,
+
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -394,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,  398,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -394,   69,   70,
+       71
+    },
+
+    {
+        5, -395, -395, -395, -395, -395, -395, -395, -395, -395,
+     -395, -395, -395, -395,   67,   67,   68, -395, -395, -395,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -395,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+      399,   67,   67,   67,   67,   67,   67, -395,   69,   70,
+       71
+    },
 
+    {
+        5, -396, -396, -396, -396, -396, -396, -396, -396, -396,
+     -396, -396, -396, -396,   67,   67,   68, -396, -396, -396,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -396,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -396,   69,   70,
+       71
+    },
+
+    {
+        5, -397, -397, -397, -397, -397, -397, -397, -397, -397,
+
+     -397, -397, -397, -397,   67,   67,   68, -397, -397, -397,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -397,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,  400,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -397,   69,   70,
+       71
+    },
+
+    {
+        5, -398, -398, -398, -398, -398, -398, -398, -398, -398,
+     -398, -398, -398, -398,   67,   67,   68, -398, -398, -398,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -398,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   67,   67,  401,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -398,   69,   70,
+       71
+    },
+
+    {
+        5, -399, -399, -399, -399, -399, -399, -399, -399, -399,
+     -399, -399, -399, -399,   67,   67,   68, -399, -399, -399,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -399,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -399,   69,   70,
+       71
+
+    },
+
+    {
+        5, -400, -400, -400, -400, -400, -400, -400, -400, -400,
+     -400, -400, -400, -400,   67,   67,   68, -400, -400, -400,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -400,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      402,   67,   67,   67,   67,   67,   67, -400,   69,   70,
+       71
+    },
+
+    {
+        5, -401, -401, -401, -401, -401, -401, -401, -401, -401,
+     -401, -401, -401, -401,   67,   67,   68, -401, -401, -401,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67, -401,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+      403,   67,   67,   67,   67,   67,   67, -401,   69,   70,
+       71
+    },
+
+    {
+        5, -402, -402, -402, -402, -402, -402, -402, -402, -402,
+     -402, -402, -402, -402,   67,   67,   68, -402, -402, -402,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -402,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -402,   69,   70,
+
+       71
+    },
+
+    {
+        5, -403, -403, -403, -403, -403, -403, -403, -403, -403,
+     -403, -403, -403, -403,   67,   67,   68, -403, -403, -403,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67, -403,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67, -403,   69,   70,
+       71
     },
 
     } ;
@@ -3987,49 +4709,53 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[375] =
+static yyconst flex_int16_t yy_accept[404] =
     {   0,
         0,    0,    0,    0,   70,   68,    1,    7,    7,   68,
-        2,   67,   68,   67,   67,   68,   62,   68,   67,   49,
-       49,   68,   49,   49,   49,   49,   49,   49,   49,   49,
-       49,   49,   49,   49,   49,    5,    5,    5,    5,    5,
-        1,    7,    0,    0,    0,    2,    0,    0,    0,    0,
-       61,   63,    0,   65,    4,    3,   64,   62,    0,    0,
-       52,    0,   53,   49,    0,   49,   68,   49,   49,   49,
-       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
-       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
-       49,   49,    6,   56,   58,    0,   55,   57,    0,    0,
-
-        0,    3,   64,    0,   64,   53,    0,    0,   51,   49,
-        8,   49,   49,   49,   49,   16,   49,   49,   49,   20,
-       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
-       34,   49,   49,   49,   49,   49,   49,   49,   49,   49,
-       49,    0,    0,    0,    0,    0,    0,   66,    0,   65,
-        0,    0,    0,   50,   51,    0,   24,   49,   49,   49,
-       49,   49,   49,   49,   49,   49,   49,   22,   49,   49,
-       26,   49,   49,   49,   49,   49,   49,   49,   49,   49,
-       49,   49,   49,   49,   49,   49,   49,   49,   49,    0,
-        0,    0,    0,    0,    0,   50,    0,   49,   10,   49,
-
-       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
-       49,   49,   49,   49,   49,   49,   49,   49,   37,   49,
-       49,   49,   49,   49,   49,   49,   49,   60,   59,   54,
-        0,    9,   11,   49,   13,   49,   17,   49,   49,   49,
-       49,   25,   49,   49,   49,   49,   49,   49,   49,   49,
-       49,   49,   49,   49,   49,   49,   49,   49,   49,   54,
-       54,   12,   49,   15,   49,   49,   49,   49,   27,   49,
-       49,   30,   49,   49,   49,   35,   49,   49,   49,   49,
-       49,   49,   44,   49,   48,   54,   54,   49,   49,   49,
-       21,   49,   49,   49,   49,   49,   49,   49,   49,   49,
-
-       49,   49,   49,   49,   47,   54,   49,   49,   49,   49,
-       49,   49,   49,   49,   33,   36,   49,   38,   49,   49,
-       49,   49,   49,   14,   18,   49,   49,   28,   49,   31,
-       32,   49,   49,   49,   49,   49,   45,   19,   49,   49,
-       40,   49,   49,   49,   43,   46,   23,   49,   49,   49,
-       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
-       49,   49,   49,   49,   49,   49,   42,   49,   49,   41,
-       49,   49,   29,   39
+        2,   67,   68,   67,   67,   68,   62,   68,   67,   50,
+       50,   68,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   68,   68,   68,    5,    5,
+        5,    5,    5,    1,    7,    0,    0,    0,    2,    0,
+        0,    0,    0,   61,   63,    0,   65,    4,    3,   64,
+       62,    0,    0,   52,    0,   53,   50,    0,    0,    0,
+        0,   50,   68,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,    0,
+
+        0,    6,   56,   58,    0,   55,   57,    0,    0,    0,
+        3,   64,    0,   64,   53,    0,    0,   51,    0,    0,
+        0,   50,    0,    0,   50,    8,   50,   50,   50,   50,
+       16,   50,   50,   50,   20,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   34,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,    0,    0,    0,
+        0,    0,    0,    0,    0,   66,    0,   65,    0,    0,
+        0,   49,   51,    0,    0,    0,   51,    0,    0,    0,
+       24,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   22,   50,   50,   26,   50,   50,   50,   50,   50,
+
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,    0,    0,    0,    0,    0,    0,   49,
+        0,   51,    0,    0,    0,   50,   10,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   37,   50,   50,   50,
+       50,   50,   50,   50,   50,   60,   59,   54,    0,    0,
+        9,   11,   50,   13,   50,   17,   50,   50,   50,   50,
+       25,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   54,   54,
+       12,   50,   15,   50,   50,   50,   50,   27,   50,   50,
+
+       30,   50,   50,   50,   35,   50,   50,   50,   50,   50,
+       50,   44,   50,   48,   54,   54,   50,   50,   50,   21,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   47,   54,   50,   50,   50,   50,   50,
+       50,   50,   50,   33,   36,   50,   38,   50,   50,   50,
+       50,   50,   14,   18,   50,   50,   28,   50,   31,   32,
+       50,   50,   50,   50,   50,   45,   19,   50,   50,   40,
+       50,   50,   50,   43,   46,   23,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   42,   50,   50,   41,   50,
+
+       50,   29,   39
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -4043,24 +4769,24 @@ static yyconst flex_int32_t yy_ec[256] =
         7,   18,    1,   19,   20,   21,   22,   23,   24,   25,
        21,   21,   21,   21,   21,   26,   21,   27,   21,   28,
        21,   21,   29,   21,   30,   21,   21,   21,   21,   21,
-        7,   31,    7,    1,   21,    1,   32,   33,   34,   35,
-
-       36,   37,   38,   39,   40,   21,   41,   42,   43,   44,
-       45,   46,   21,   47,   48,   49,   50,   51,   21,   52,
-       53,   54,    7,    1,    7,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        7,   31,    7,    1,   32,    1,   33,   34,   35,   36,
+
+       37,   38,   39,   40,   41,   42,   43,   44,   45,   46,
+       47,   48,   42,   49,   50,   51,   52,   53,   42,   54,
+       55,   56,    7,    1,    7,    1,    1,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,    1,    1,   58,   58,   58,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   59,   59,   59,   59,   59,   59,   59,
+       59,   59,   59,   59,   59,   59,   59,   59,   59,   60,
+       60,   60,   60,   60,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1
     } ;
 
@@ -4103,6 +4829,7 @@ static yyconst flex_int32_t yy_ec[256] =
 #include "pxr/base/tf/stringUtils.h"
 #include "pxr/usd/sdf/textParserContext.h"
 #include "pxr/usd/sdf/parserHelpers.h"
+#include "pxr/usd/sdf/schema.h"
 
 // Token table from yacc file
 #include "textFileFormat.tab.h"
@@ -4128,9 +4855,19 @@ PXR_NAMESPACE_USING_DIRECTIVE
 #define YY_EXTRA_TYPE Sdf_TextParserContext *
 
 /* Configuration options for flex */
+/* character classes
+  * defines UTF-8 encoded byte values for standard ASCII
+  * and multi-byte UTF-8 character sets
+  * valid multi-byte UTF-8 sequences are as follows:
+  * For an n-byte encoded UTF-8 character, the last n-1 bytes range [\x80-\xbf]
+  * 2-byte UTF-8 characters, first byte in range [\xc2-\xdf]
+  * 3-byte UTF-8 characters, first byte in range [\xe0-\xef]
+  * 4-byte UTF-8 characters, first byte in range [\xf0-\xf4]
+  * ASCII characters span [\x41-\x5a] (upper case) [\x61-\x7a] (lower case) [\x30-39] (digits)
+  */
 /* States */
 
-#line 4111 "pxr/usd/sdf/textFileFormat.lex.cpp"
+#line 4847 "pxr/usd/sdf/textFileFormat.lex.cpp"
 
 #define INITIAL 0
 #define SLASHTERIX_COMMENT 1
@@ -4395,13 +5132,13 @@ YY_DECL
                }
 
        {
-#line 67 "pxr/usd/sdf/textFileFormat.ll"
+#line 97 "pxr/usd/sdf/textFileFormat.ll"
 
 
     /* skip over whitespace and comments */
     /* handle the first line # comment specially, since it contains the
        magic token */
-#line 4382 "pxr/usd/sdf/textFileFormat.lex.cpp"
+#line 5118 "pxr/usd/sdf/textFileFormat.lex.cpp"
 
        while ( 1 )             /* loops until end-of-file is reached */
                {
@@ -4448,12 +5185,12 @@ do_action:      /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 72 "pxr/usd/sdf/textFileFormat.ll"
+#line 102 "pxr/usd/sdf/textFileFormat.ll"
 {}
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 73 "pxr/usd/sdf/textFileFormat.ll"
+#line 103 "pxr/usd/sdf/textFileFormat.ll"
 {
         if (yyextra->sdfLineNo == 1) {
             (*yylval_param) = std::string(yytext, yyleng);
@@ -4463,23 +5200,23 @@ YY_RULE_SETUP
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 79 "pxr/usd/sdf/textFileFormat.ll"
+#line 109 "pxr/usd/sdf/textFileFormat.ll"
 {}
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 80 "pxr/usd/sdf/textFileFormat.ll"
+#line 110 "pxr/usd/sdf/textFileFormat.ll"
 BEGIN SLASHTERIX_COMMENT ;
        YY_BREAK
 case 5:
 /* rule 5 can match eol */
 YY_RULE_SETUP
-#line 81 "pxr/usd/sdf/textFileFormat.ll"
+#line 111 "pxr/usd/sdf/textFileFormat.ll"
 ;
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 82 "pxr/usd/sdf/textFileFormat.ll"
+#line 112 "pxr/usd/sdf/textFileFormat.ll"
 BEGIN INITIAL ;
        YY_BREAK
 /* newline is returned as TOK_NL
@@ -4489,7 +5226,7 @@ BEGIN INITIAL ;
 case 7:
 /* rule 7 can match eol */
 YY_RULE_SETUP
-#line 88 "pxr/usd/sdf/textFileFormat.ll"
+#line 118 "pxr/usd/sdf/textFileFormat.ll"
 {
         yyextra->sdfLineNo++;
         return TOK_NL;
@@ -4499,241 +5236,275 @@ YY_RULE_SETUP
        can make use of it. */
 case 8:
 YY_RULE_SETUP
-#line 95 "pxr/usd/sdf/textFileFormat.ll"
+#line 125 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_ADD; }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 96 "pxr/usd/sdf/textFileFormat.ll"
+#line 126 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_APPEND; }
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 97 "pxr/usd/sdf/textFileFormat.ll"
+#line 127 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_CLASS; }
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 98 "pxr/usd/sdf/textFileFormat.ll"
+#line 128 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_CONFIG; }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 99 "pxr/usd/sdf/textFileFormat.ll"
+#line 129 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_CONNECT; }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 100 "pxr/usd/sdf/textFileFormat.ll"
+#line 130 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_CUSTOM; }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 101 "pxr/usd/sdf/textFileFormat.ll"
+#line 131 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_CUSTOMDATA; }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 102 "pxr/usd/sdf/textFileFormat.ll"
+#line 132 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_DEFAULT; }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 103 "pxr/usd/sdf/textFileFormat.ll"
+#line 133 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_DEF; }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 104 "pxr/usd/sdf/textFileFormat.ll"
+#line 134 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_DELETE; }
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 105 "pxr/usd/sdf/textFileFormat.ll"
+#line 135 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_DICTIONARY; }
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 106 "pxr/usd/sdf/textFileFormat.ll"
+#line 136 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_DISPLAYUNIT; }
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 107 "pxr/usd/sdf/textFileFormat.ll"
+#line 137 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_DOC; }
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 108 "pxr/usd/sdf/textFileFormat.ll"
+#line 138 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_INHERITS; }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 109 "pxr/usd/sdf/textFileFormat.ll"
+#line 139 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_KIND; }
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 110 "pxr/usd/sdf/textFileFormat.ll"
+#line 140 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_NAMECHILDREN; }
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 111 "pxr/usd/sdf/textFileFormat.ll"
+#line 141 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_NONE; }
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 112 "pxr/usd/sdf/textFileFormat.ll"
+#line 142 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_OFFSET; }
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 113 "pxr/usd/sdf/textFileFormat.ll"
+#line 143 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_OVER; }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 114 "pxr/usd/sdf/textFileFormat.ll"
+#line 144 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_PAYLOAD; }
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 115 "pxr/usd/sdf/textFileFormat.ll"
+#line 145 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_PERMISSION; }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 116 "pxr/usd/sdf/textFileFormat.ll"
+#line 146 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_PREFIX_SUBSTITUTIONS; }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 117 "pxr/usd/sdf/textFileFormat.ll"
+#line 147 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_PREPEND; }
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 118 "pxr/usd/sdf/textFileFormat.ll"
+#line 148 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_PROPERTIES; }
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 119 "pxr/usd/sdf/textFileFormat.ll"
+#line 149 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_REFERENCES; }
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 120 "pxr/usd/sdf/textFileFormat.ll"
+#line 150 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_RELOCATES; }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 121 "pxr/usd/sdf/textFileFormat.ll"
+#line 151 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_REL; }
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 122 "pxr/usd/sdf/textFileFormat.ll"
+#line 152 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_REORDER; }
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 123 "pxr/usd/sdf/textFileFormat.ll"
+#line 153 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_ROOTPRIMS; }
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 124 "pxr/usd/sdf/textFileFormat.ll"
+#line 154 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_SCALE; }
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 125 "pxr/usd/sdf/textFileFormat.ll"
+#line 155 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_SUBLAYERS; }
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 126 "pxr/usd/sdf/textFileFormat.ll"
+#line 156 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_SUFFIX_SUBSTITUTIONS; }
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 127 "pxr/usd/sdf/textFileFormat.ll"
+#line 157 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_SPECIALIZES; }
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 128 "pxr/usd/sdf/textFileFormat.ll"
+#line 158 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_SYMMETRYARGUMENTS; }
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 129 "pxr/usd/sdf/textFileFormat.ll"
+#line 159 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_SYMMETRYFUNCTION; }
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 130 "pxr/usd/sdf/textFileFormat.ll"
+#line 160 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_TIME_SAMPLES; }
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 131 "pxr/usd/sdf/textFileFormat.ll"
+#line 161 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_UNIFORM; }
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 132 "pxr/usd/sdf/textFileFormat.ll"
+#line 162 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_VARIANTSET; }
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 133 "pxr/usd/sdf/textFileFormat.ll"
+#line 163 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_VARIANTSETS; }
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 134 "pxr/usd/sdf/textFileFormat.ll"
+#line 164 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_VARIANTS; }
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 135 "pxr/usd/sdf/textFileFormat.ll"
+#line 165 "pxr/usd/sdf/textFileFormat.ll"
 { (*yylval_param) = std::string(yytext, yyleng); return TOK_VARYING; }
        YY_BREAK
-/* unquoted C/Python identifier */
+/* unquoted C++ namespaced identifier -- see bug 10775 */
 case 49:
 YY_RULE_SETUP
-#line 138 "pxr/usd/sdf/textFileFormat.ll"
+#line 168 "pxr/usd/sdf/textFileFormat.ll"
 {
         (*yylval_param) = std::string(yytext, yyleng);
-        return TOK_IDENTIFIER;
+        return TOK_CXX_NAMESPACED_IDENTIFIER;
     }
        YY_BREAK
-/* unquoted C++ namespaced identifier -- see bug 10775 */
+/* In a Unicode enabled scheme, 'identifiers' are generally
+  * categorized as something that begins with something in the
+  * XID_Start category followed by zero or more things in the
+  * XID_Continue category.  Since the number of characters in
+  * these classes are large, we can't explicitly validate them
+  * here easily, so the lex rule is pretty permissive with some
+  * further validation done in code prior to calling what was
+  * read an 'identifier'.  Note this rule will also match
+  * standard ASCII strings because the UTF-8 encoded byte 
+  * representation is the same for these characters.
+  * However, unlike the path lexer, we can guarantee that 
+  * prim names aren't something special to be called out here
+  * so we can be a little more specific about the kinds of strings
+  * we match, particularly to not collide with the pure digit match rule
+  * below
+  */
 case 50:
 YY_RULE_SETUP
-#line 144 "pxr/usd/sdf/textFileFormat.ll"
+#line 189 "pxr/usd/sdf/textFileFormat.ll"
 {
-        (*yylval_param) = std::string(yytext, yyleng);
-        return TOK_CXX_NAMESPACED_IDENTIFIER;
+    std::string matched = std::string(yytext, yyleng);
+
+    // we perform an extra validation step here
+    // to make sure what we matched is actually a valid
+    // identifier because we can overmatch UTF-8 characters
+    // based on this definition
+    if (!SdfSchema::IsValidIdentifier(matched)) {
+        return TOK_SYNTAX_ERROR;
     }
+
+    (*yylval_param) = matched;
+    return TOK_IDENTIFIER;
+}
        YY_BREAK
-/* unquoted namespaced identifier.  matches any number of colon
-     * delimited C/Python identifiers */
+/* unquoted namespaced identifiers match any number of colon 
+  * delimited identifiers
+  */
 case 51:
 YY_RULE_SETUP
-#line 151 "pxr/usd/sdf/textFileFormat.ll"
+#line 207 "pxr/usd/sdf/textFileFormat.ll"
 {
-        (*yylval_param) = std::string(yytext, yyleng);
-        return TOK_NAMESPACED_IDENTIFIER;
+    std::string matched = std::string(yytext, yyleng);
+
+    // like for regular identifiers, we do a validation
+    // check here to prevent overmatching UTF-8 characters
+    if (!SdfSchema::IsValidNamespacedIdentifier(matched)) {
+        return TOK_SYNTAX_ERROR;
     }
+
+    (*yylval_param) = matched;
+    return TOK_NAMESPACED_IDENTIFIER;
+}
        YY_BREAK
 /* scene paths */
 case 52:
 YY_RULE_SETUP
-#line 157 "pxr/usd/sdf/textFileFormat.ll"
+#line 221 "pxr/usd/sdf/textFileFormat.ll"
 {
         (*yylval_param) = Sdf_EvalQuotedString(yytext, yyleng, 1);
         return TOK_PATHREF;
@@ -4742,7 +5513,7 @@ YY_RULE_SETUP
 /* Single '@'-delimited asset references */
 case 53:
 YY_RULE_SETUP
-#line 163 "pxr/usd/sdf/textFileFormat.ll"
+#line 227 "pxr/usd/sdf/textFileFormat.ll"
 {
         TfErrorMark m;
         (*yylval_param) = 
@@ -4753,7 +5524,7 @@ YY_RULE_SETUP
 /* Triple '@'-delimited asset references. */
 case 54:
 YY_RULE_SETUP
-#line 171 "pxr/usd/sdf/textFileFormat.ll"
+#line 235 "pxr/usd/sdf/textFileFormat.ll"
 {
         TfErrorMark m;
         (*yylval_param) = 
@@ -4766,10 +5537,10 @@ YY_RULE_SETUP
        them from the beginning of triply-quoted strings.
        Ex: "Foo \"foo\"" */
 case 55:
-#line 183 "pxr/usd/sdf/textFileFormat.ll"
+#line 247 "pxr/usd/sdf/textFileFormat.ll"
 case 56:
 YY_RULE_SETUP
-#line 183 "pxr/usd/sdf/textFileFormat.ll"
+#line 247 "pxr/usd/sdf/textFileFormat.ll"
 {  /* " //<- unfreak out coloring code */
         (*yylval_param) = Sdf_EvalQuotedString(yytext, yyleng, 1);
         return TOK_STRING;
@@ -4784,7 +5555,7 @@ YY_LINENO_REWIND_TO(yy_bp + 2);
 yyg->yy_c_buf_p = yy_cp = yy_bp + 2;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 190 "pxr/usd/sdf/textFileFormat.ll"
+#line 254 "pxr/usd/sdf/textFileFormat.ll"
 {  /* ' // <- keep syntax coloring from freaking out */
         (*yylval_param) = std::string();
         return TOK_STRING;
@@ -4797,7 +5568,7 @@ YY_LINENO_REWIND_TO(yy_bp + 2);
 yyg->yy_c_buf_p = yy_cp = yy_bp + 2;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 194 "pxr/usd/sdf/textFileFormat.ll"
+#line 258 "pxr/usd/sdf/textFileFormat.ll"
 {
         (*yylval_param) = std::string();
         return TOK_STRING;
@@ -4807,11 +5578,11 @@ YY_RULE_SETUP
        Ex: """A\n\"B\"\nC""" */
 case 59:
 /* rule 59 can match eol */
-#line 202 "pxr/usd/sdf/textFileFormat.ll"
+#line 266 "pxr/usd/sdf/textFileFormat.ll"
 case 60:
 /* rule 60 can match eol */
 YY_RULE_SETUP
-#line 202 "pxr/usd/sdf/textFileFormat.ll"
+#line 266 "pxr/usd/sdf/textFileFormat.ll"
 {  /* " //<- unfreak out coloring code */
 
         unsigned int numlines = 0;
@@ -4825,7 +5596,7 @@ YY_RULE_SETUP
      * don't know at this point what the final stored type will be. */
 case 61:
 YY_RULE_SETUP
-#line 213 "pxr/usd/sdf/textFileFormat.ll"
+#line 277 "pxr/usd/sdf/textFileFormat.ll"
 {
         (*yylval_param) = double(-0.0);
         return TOK_NUMBER;
@@ -4834,7 +5605,7 @@ YY_RULE_SETUP
 /* Positive integers: store as uint64_t if in range, otherwise double. */
 case 62:
 YY_RULE_SETUP
-#line 219 "pxr/usd/sdf/textFileFormat.ll"
+#line 283 "pxr/usd/sdf/textFileFormat.ll"
 {
         bool outOfRange = false;
         (*yylval_param) = TfStringToUInt64(yytext, &outOfRange);
@@ -4853,7 +5624,7 @@ YY_RULE_SETUP
 /* Negative integers: store as long. */
 case 63:
 YY_RULE_SETUP
-#line 235 "pxr/usd/sdf/textFileFormat.ll"
+#line 299 "pxr/usd/sdf/textFileFormat.ll"
 {
         bool outOfRange = false;
         (*yylval_param) = TfStringToInt64(yytext, &outOfRange);
@@ -4871,10 +5642,10 @@ YY_RULE_SETUP
        YY_BREAK
 /* Numbers with decimal places or exponents: store as double. */
 case 64:
-#line 252 "pxr/usd/sdf/textFileFormat.ll"
+#line 316 "pxr/usd/sdf/textFileFormat.ll"
 case 65:
 YY_RULE_SETUP
-#line 252 "pxr/usd/sdf/textFileFormat.ll"
+#line 316 "pxr/usd/sdf/textFileFormat.ll"
 {
         (*yylval_param) = TfStringToDouble(yytext);
         return TOK_NUMBER;
@@ -4886,7 +5657,7 @@ YY_RULE_SETUP
      * identifiers. */
 case 66:
 YY_RULE_SETUP
-#line 261 "pxr/usd/sdf/textFileFormat.ll"
+#line 325 "pxr/usd/sdf/textFileFormat.ll"
 {
         (*yylval_param) = -std::numeric_limits<double>::infinity();
         return TOK_NUMBER;
@@ -4897,7 +5668,7 @@ YY_RULE_SETUP
      */
 case 67:
 YY_RULE_SETUP
-#line 269 "pxr/usd/sdf/textFileFormat.ll"
+#line 333 "pxr/usd/sdf/textFileFormat.ll"
 {
         return yytext[0];
     }
@@ -4908,17 +5679,17 @@ YY_RULE_SETUP
      */
 case 68:
 YY_RULE_SETUP
-#line 277 "pxr/usd/sdf/textFileFormat.ll"
+#line 341 "pxr/usd/sdf/textFileFormat.ll"
 {
         return TOK_SYNTAX_ERROR;
     }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 281 "pxr/usd/sdf/textFileFormat.ll"
+#line 345 "pxr/usd/sdf/textFileFormat.ll"
 ECHO;
        YY_BREAK
-#line 4899 "pxr/usd/sdf/textFileFormat.lex.cpp"
+#line 5669 "pxr/usd/sdf/textFileFormat.lex.cpp"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(SLASHTERIX_COMMENT):
        yyterminate();
@@ -6036,7 +6807,7 @@ void textFileFormatYyfree (void * ptr , yyscan_t yyscanner)
 
 #define YYTABLES_NAME "yytables"
 
-#line 281 "pxr/usd/sdf/textFileFormat.ll"
+#line 345 "pxr/usd/sdf/textFileFormat.ll"
 
 
 
index 628aea93aa830797962696168715c01a907a4cf6..fa032f101b58a6382a0fb103105bb2674a6787aa 100644 (file)
@@ -29,6 +29,7 @@
 #include "pxr/base/tf/stringUtils.h"
 #include "pxr/usd/sdf/textParserContext.h"
 #include "pxr/usd/sdf/parserHelpers.h"
+#include "pxr/usd/sdf/schema.h"
 
 // Token table from yacc file
 #include "textFileFormat.tab.h"
@@ -61,6 +62,36 @@ PXR_NAMESPACE_USING_DIRECTIVE
 %option reentrant
 %option bison-bridge
 
+/* character classes
+  * defines UTF-8 encoded byte values for standard ASCII
+  * and multi-byte UTF-8 character sets
+  * valid multi-byte UTF-8 sequences are as follows:
+  * For an n-byte encoded UTF-8 character, the last n-1 bytes range [\x80-\xbf]
+  * 2-byte UTF-8 characters, first byte in range [\xc2-\xdf]
+  * 3-byte UTF-8 characters, first byte in range [\xe0-\xef]
+  * 4-byte UTF-8 characters, first byte in range [\xf0-\xf4]
+  * ASCII characters span [\x41-\x5a] (upper case) [\x61-\x7a] (lower case) [\x30-39] (digits)
+  */
+ALPHA1      [\x41-\x5a]
+ALPHA2      [\x61-\x7a]
+DIGIT       [\x30-\x39]
+UEND        [\x80-\xbf]
+U2PRE       [\xc2-\xdf]
+U3PRE       [\xe0-\xef]
+U4PRE       [\xf0-\xf4]
+UNDER       [_]
+DASH        [\-]
+BAR         [\|]
+ALPHA       {ALPHA1}|{ALPHA2}
+ALPHANUM    {ALPHA}|{DIGIT}
+UTF8X       {U2PRE}{UEND}|{U3PRE}{UEND}{UEND}|{U4PRE}{UEND}{UEND}{UEND}
+UTF8        {ALPHANUM}|{UTF8X}
+UTF8NODIG   {ALPHA}|{UTF8X}
+UTF8U       {UTF8}|{UNDER}
+UTF8NODIGU  {UTF8NODIG}|{UNDER}
+UTF8UD      {UTF8U}|{DASH}
+UTF8UDB     {UTF8UD}|{BAR}
+
 /* States */
 %x SLASHTERIX_COMMENT
 
@@ -134,25 +165,59 @@ PXR_NAMESPACE_USING_DIRECTIVE
 "variants"            { (*yylval_param) = std::string(yytext, yyleng); return TOK_VARIANTS; }
 "varying"             { (*yylval_param) = std::string(yytext, yyleng); return TOK_VARYING; }
 
-    /* unquoted C/Python identifier */
-[[:alpha:]_][[:alnum:]_]* {
-        (*yylval_param) = std::string(yytext, yyleng);
-        return TOK_IDENTIFIER;
-    }
-
-    /* unquoted C++ namespaced identifier -- see bug 10775 */
+ /* unquoted C++ namespaced identifier -- see bug 10775 */
 [[:alpha:]_][[:alnum:]_]*(::[[:alpha:]_][[:alnum:]_]*)+ {
         (*yylval_param) = std::string(yytext, yyleng);
         return TOK_CXX_NAMESPACED_IDENTIFIER;
     }
 
-    /* unquoted namespaced identifier.  matches any number of colon
-     * delimited C/Python identifiers */
-[[:alpha:]_][[:alnum:]_]*(:[[:alpha:]_][[:alnum:]_]*)+ {
-        (*yylval_param) = std::string(yytext, yyleng);
-        return TOK_NAMESPACED_IDENTIFIER;
+ /* In a Unicode enabled scheme, 'identifiers' are generally
+  * categorized as something that begins with something in the
+  * XID_Start category followed by zero or more things in the
+  * XID_Continue category.  Since the number of characters in
+  * these classes are large, we can't explicitly validate them
+  * here easily, so the lex rule is pretty permissive with some
+  * further validation done in code prior to calling what was
+  * read an 'identifier'.  Note this rule will also match
+  * standard ASCII strings because the UTF-8 encoded byte 
+  * representation is the same for these characters.
+  * However, unlike the path lexer, we can guarantee that 
+  * prim names aren't something special to be called out here
+  * so we can be a little more specific about the kinds of strings
+  * we match, particularly to not collide with the pure digit match rule
+  * below
+  */
+{UTF8NODIGU}{UTF8U}* {
+    std::string matched = std::string(yytext, yyleng);
+
+    // we perform an extra validation step here
+    // to make sure what we matched is actually a valid
+    // identifier because we can overmatch UTF-8 characters
+    // based on this definition
+    if (!SdfSchema::IsValidIdentifier(matched)) {
+        return TOK_SYNTAX_ERROR;
     }
 
+    (*yylval_param) = matched;
+    return TOK_IDENTIFIER;
+}
+
+ /* unquoted namespaced identifiers match any number of colon 
+  * delimited identifiers
+  */
+{UTF8NODIGU}{UTF8U}*(:{UTF8NODIGU}{UTF8U}*)+ {
+    std::string matched = std::string(yytext, yyleng);
+
+    // like for regular identifiers, we do a validation
+    // check here to prevent overmatching UTF-8 characters
+    if (!SdfSchema::IsValidNamespacedIdentifier(matched)) {
+        return TOK_SYNTAX_ERROR;
+    }
+
+    (*yylval_param) = matched;
+    return TOK_NAMESPACED_IDENTIFIER;
+}
+
     /* scene paths */
 \<[^\<\>\r\n]*\> {
         (*yylval_param) = Sdf_EvalQuotedString(yytext, yyleng, 1);
index 60fc1b5ca3d87d3b6674e9f4fa779b3eb9a28689..1a42de86e793c2c1883111225acba877730f166c 100644 (file)
@@ -79,6 +79,10 @@ TF_DECLARE_PUBLIC_TOKENS(SdfMetadataDisplayGroupTokens,
                          SDF_API,
                          SDF_METADATA_DISPLAYGROUP_TOKENS);
 
+// constants for identifier validation
+constexpr uint32_t SDF_NAMESPACE_DELIMITER_CODE_POINT = 0x003Au;
+constexpr uint32_t SDF_UNDERSCORE_CODE_POINT = 0x005Fu;
+
 PXR_NAMESPACE_CLOSE_SCOPE
 
 #endif // PXR_USD_SDF_TOKENS_H