[Python-checkins] cpython: PEP 448: additional unpacking generalizations (closes #2292)

benjamin.peterson python-checkins at python.org
Wed May 6 02:16:52 CEST 2015


https://hg.python.org/cpython/rev/a65f685ba8c0
changeset:   95886:a65f685ba8c0
user:        Benjamin Peterson <benjamin at python.org>
date:        Tue May 05 20:16:41 2015 -0400
summary:
  PEP 448: additional unpacking generalizations (closes #2292)

Patch by Neil Girdhar.

files:
  Grammar/Grammar                      |    24 +-
  Include/Python-ast.h                 |    18 +-
  Include/dictobject.h                 |     4 +
  Include/opcode.h                     |     5 +
  Lib/importlib/_bootstrap_external.py |     3 +-
  Lib/opcode.py                        |     6 +
  Lib/test/test_ast.py                 |    56 +-
  Lib/test/test_extcall.py             |    22 +
  Lib/test/test_grammar.py             |     6 +-
  Lib/test/test_parser.py              |    12 +
  Lib/test/test_syntax.py              |    16 +-
  Lib/test/test_unpack_ex.py           |   183 +-
  Misc/ACKS                            |     1 +
  Misc/NEWS                            |     2 +
  Modules/parsermodule.c               |   279 +-
  Objects/dictobject.c                 |     6 +-
  Parser/Python.asdl                   |     9 +-
  Python/Python-ast.c                  |   105 +-
  Python/ast.c                         |   340 +-
  Python/ceval.c                       |   164 +-
  Python/compile.c                     |   321 +-
  Python/graminit.c                    |   156 +-
  Python/importlib_external.h          |  3003 ++++++-------
  Python/opcode_targets.h              |    10 +-
  Python/symtable.c                    |    26 +-
  Tools/parser/unparse.py              |    27 +-
  26 files changed, 2675 insertions(+), 2129 deletions(-)


diff --git a/Grammar/Grammar b/Grammar/Grammar
--- a/Grammar/Grammar
+++ b/Grammar/Grammar
@@ -111,17 +111,29 @@
 sliceop: ':' [test]
 exprlist: (expr|star_expr) (',' (expr|star_expr))* [',']
 testlist: test (',' test)* [',']
-dictorsetmaker: ( (test ':' test (comp_for | (',' test ':' test)* [','])) |
-                  (test (comp_for | (',' test)* [','])) )
+dictorsetmaker: ( ((test ':' test | '**' expr)
+                   (comp_for | (',' (test ':' test | '**' expr))* [','])) |
+                  ((test | star_expr)
+                   (comp_for | (',' (test | star_expr))* [','])) )
 
 classdef: 'class' NAME ['(' [arglist] ')'] ':' suite
 
-arglist: (argument ',')* (argument [',']
-                         |'*' test (',' argument)* [',' '**' test]
-                         |'**' test)
+arglist: argument (',' argument)*  [',']
+
 # The reason that keywords are test nodes instead of NAME is that using NAME
 # results in an ambiguity. ast.c makes sure it's a NAME.
-argument: test [comp_for] | test '=' test  # Really [keyword '='] test
+# "test '=' test" is really "keyword '=' test", but we have no such token.
+# These need to be in a single rule to avoid grammar that is ambiguous
+# to our LL(1) parser. Even though 'test' includes '*expr' in star_expr,
+# we explicitly match '*' here, too, to give it proper precedence.
+# Illegal combinations and orderings are blocked in ast.c:
+# multiple (test comp_for) arguements are blocked; keyword unpackings
+# that precede iterable unpackings are blocked; etc.
+argument: ( test [comp_for] |
+            test '=' test |
+            '**' expr |
+            star_expr )
+
 comp_iter: comp_for | comp_if
 comp_for: 'for' exprlist 'in' or_test [comp_iter]
 comp_if: 'if' test_nocond [comp_iter]
diff --git a/Include/Python-ast.h b/Include/Python-ast.h
--- a/Include/Python-ast.h
+++ b/Include/Python-ast.h
@@ -84,8 +84,6 @@
             identifier name;
             asdl_seq *bases;
             asdl_seq *keywords;
-            expr_ty starargs;
-            expr_ty kwargs;
             asdl_seq *body;
             asdl_seq *decorator_list;
         } ClassDef;
@@ -263,8 +261,6 @@
             expr_ty func;
             asdl_seq *args;
             asdl_seq *keywords;
-            expr_ty starargs;
-            expr_ty kwargs;
         } Call;
         
         struct {
@@ -406,11 +402,10 @@
 stmt_ty _Py_FunctionDef(identifier name, arguments_ty args, asdl_seq * body,
                         asdl_seq * decorator_list, expr_ty returns, int lineno,
                         int col_offset, PyArena *arena);
-#define ClassDef(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) _Py_ClassDef(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
+#define ClassDef(a0, a1, a2, a3, a4, a5, a6, a7) _Py_ClassDef(a0, a1, a2, a3, a4, a5, a6, a7)
 stmt_ty _Py_ClassDef(identifier name, asdl_seq * bases, asdl_seq * keywords,
-                     expr_ty starargs, expr_ty kwargs, asdl_seq * body,
-                     asdl_seq * decorator_list, int lineno, int col_offset,
-                     PyArena *arena);
+                     asdl_seq * body, asdl_seq * decorator_list, int lineno,
+                     int col_offset, PyArena *arena);
 #define Return(a0, a1, a2, a3) _Py_Return(a0, a1, a2, a3)
 stmt_ty _Py_Return(expr_ty value, int lineno, int col_offset, PyArena *arena);
 #define Delete(a0, a1, a2, a3) _Py_Delete(a0, a1, a2, a3)
@@ -504,10 +499,9 @@
 #define Compare(a0, a1, a2, a3, a4, a5) _Py_Compare(a0, a1, a2, a3, a4, a5)
 expr_ty _Py_Compare(expr_ty left, asdl_int_seq * ops, asdl_seq * comparators,
                     int lineno, int col_offset, PyArena *arena);
-#define Call(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Call(a0, a1, a2, a3, a4, a5, a6, a7)
-expr_ty _Py_Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, expr_ty
-                 starargs, expr_ty kwargs, int lineno, int col_offset, PyArena
-                 *arena);
+#define Call(a0, a1, a2, a3, a4, a5) _Py_Call(a0, a1, a2, a3, a4, a5)
+expr_ty _Py_Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, int
+                 lineno, int col_offset, PyArena *arena);
 #define Num(a0, a1, a2, a3) _Py_Num(a0, a1, a2, a3)
 expr_ty _Py_Num(object n, int lineno, int col_offset, PyArena *arena);
 #define Str(a0, a1, a2, a3) _Py_Str(a0, a1, a2, a3)
diff --git a/Include/dictobject.h b/Include/dictobject.h
--- a/Include/dictobject.h
+++ b/Include/dictobject.h
@@ -105,6 +105,10 @@
                                    PyObject *other,
                                    int override);
 
+#ifndef Py_LIMITED_API
+PyAPI_FUNC(PyObject *) _PyDictView_Intersect(PyObject* self, PyObject *other);
+#endif
+
 /* PyDict_MergeFromSeq2 updates/merges from an iterable object producing
    iterable objects of length 2.  If override is true, the last occurrence
    of a key wins, else the first.  The Python dict constructor dict(seq2)
diff --git a/Include/opcode.h b/Include/opcode.h
--- a/Include/opcode.h
+++ b/Include/opcode.h
@@ -111,6 +111,11 @@
 #define SET_ADD             	146
 #define MAP_ADD             	147
 #define LOAD_CLASSDEREF     	148
+#define BUILD_LIST_UNPACK   	149
+#define BUILD_MAP_UNPACK    	150
+#define BUILD_MAP_UNPACK_WITH_CALL	151
+#define BUILD_TUPLE_UNPACK  	152
+#define BUILD_SET_UNPACK    	153
 
 /* EXCEPT_HANDLER is a special, implicit block type which is created when
    entering an except handler. It is not an opcode but we define it here
diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py
--- a/Lib/importlib/_bootstrap_external.py
+++ b/Lib/importlib/_bootstrap_external.py
@@ -220,12 +220,13 @@
 #     Python 3.4a4  3300 (more changes to __qualname__ computation)
 #     Python 3.4rc2 3310 (alter __qualname__ computation)
 #     Python 3.5a0  3320 (matrix multiplication operator)
+#     Python 3.5b1  3330 (PEP 448: Additional Unpacking Generalizations)
 #
 # MAGIC must change whenever the bytecode emitted by the compiler may no
 # longer be understood by older implementations of the eval loop (usually
 # due to the addition of new opcodes).
 
-MAGIC_NUMBER = (3320).to_bytes(2, 'little') + b'\r\n'
+MAGIC_NUMBER = (3330).to_bytes(2, 'little') + b'\r\n'
 _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little')  # For import.c
 
 _PYCACHE = '__pycache__'
diff --git a/Lib/opcode.py b/Lib/opcode.py
--- a/Lib/opcode.py
+++ b/Lib/opcode.py
@@ -200,4 +200,10 @@
 def_op('EXTENDED_ARG', 144)
 EXTENDED_ARG = 144
 
+def_op('BUILD_LIST_UNPACK', 149)
+def_op('BUILD_MAP_UNPACK', 150)
+def_op('BUILD_MAP_UNPACK_WITH_CALL', 151)
+def_op('BUILD_TUPLE_UNPACK', 152)
+def_op('BUILD_SET_UNPACK', 153)
+
 del def_op, name_op, jrel_op, jabs_op
diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py
--- a/Lib/test/test_ast.py
+++ b/Lib/test/test_ast.py
@@ -427,17 +427,17 @@
         self.assertEqual(ast.dump(node),
             "Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load()), "
             "args=[Name(id='eggs', ctx=Load()), Str(s='and cheese')], "
-            "keywords=[], starargs=None, kwargs=None))])"
+            "keywords=[]))])"
         )
         self.assertEqual(ast.dump(node, annotate_fields=False),
             "Module([Expr(Call(Name('spam', Load()), [Name('eggs', Load()), "
-            "Str('and cheese')], [], None, None))])"
+            "Str('and cheese')], []))])"
         )
         self.assertEqual(ast.dump(node, include_attributes=True),
             "Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load(), "
             "lineno=1, col_offset=0), args=[Name(id='eggs', ctx=Load(), "
             "lineno=1, col_offset=5), Str(s='and cheese', lineno=1, "
-            "col_offset=11)], keywords=[], starargs=None, kwargs=None, "
+            "col_offset=11)], keywords=[], "
             "lineno=1, col_offset=0), lineno=1, col_offset=0)])"
         )
 
@@ -453,16 +453,16 @@
     def test_fix_missing_locations(self):
         src = ast.parse('write("spam")')
         src.body.append(ast.Expr(ast.Call(ast.Name('spam', ast.Load()),
-                                          [ast.Str('eggs')], [], None, None)))
+                                          [ast.Str('eggs')], [])))
         self.assertEqual(src, ast.fix_missing_locations(src))
         self.assertEqual(ast.dump(src, include_attributes=True),
             "Module(body=[Expr(value=Call(func=Name(id='write', ctx=Load(), "
             "lineno=1, col_offset=0), args=[Str(s='spam', lineno=1, "
-            "col_offset=6)], keywords=[], starargs=None, kwargs=None, "
+            "col_offset=6)], keywords=[], "
             "lineno=1, col_offset=0), lineno=1, col_offset=0), "
             "Expr(value=Call(func=Name(id='spam', ctx=Load(), lineno=1, "
             "col_offset=0), args=[Str(s='eggs', lineno=1, col_offset=0)], "
-            "keywords=[], starargs=None, kwargs=None, lineno=1, "
+            "keywords=[], lineno=1, "
             "col_offset=0), lineno=1, col_offset=0)])"
         )
 
@@ -487,8 +487,7 @@
         node = ast.parse('foo()', mode='eval')
         d = dict(ast.iter_fields(node.body))
         self.assertEqual(d.pop('func').id, 'foo')
-        self.assertEqual(d, {'keywords': [], 'kwargs': None,
-                             'args': [], 'starargs': None})
+        self.assertEqual(d, {'keywords': [], 'args': []})
 
     def test_iter_child_nodes(self):
         node = ast.parse("spam(23, 42, eggs='leek')", mode='eval')
@@ -604,8 +603,7 @@
         self._check_arguments(fac, self.stmt)
 
     def test_classdef(self):
-        def cls(bases=None, keywords=None, starargs=None, kwargs=None,
-                body=None, decorator_list=None):
+        def cls(bases=None, keywords=None, body=None, decorator_list=None):
             if bases is None:
                 bases = []
             if keywords is None:
@@ -614,16 +612,12 @@
                 body = [ast.Pass()]
             if decorator_list is None:
                 decorator_list = []
-            return ast.ClassDef("myclass", bases, keywords, starargs,
-                                kwargs, body, decorator_list)
+            return ast.ClassDef("myclass", bases, keywords,
+                                body, decorator_list)
         self.stmt(cls(bases=[ast.Name("x", ast.Store())]),
                   "must have Load context")
         self.stmt(cls(keywords=[ast.keyword("x", ast.Name("x", ast.Store()))]),
                   "must have Load context")
-        self.stmt(cls(starargs=ast.Name("x", ast.Store())),
-                  "must have Load context")
-        self.stmt(cls(kwargs=ast.Name("x", ast.Store())),
-                  "must have Load context")
         self.stmt(cls(body=[]), "empty body on ClassDef")
         self.stmt(cls(body=[None]), "None disallowed")
         self.stmt(cls(decorator_list=[ast.Name("x", ast.Store())]),
@@ -854,20 +848,12 @@
         func = ast.Name("x", ast.Load())
         args = [ast.Name("y", ast.Load())]
         keywords = [ast.keyword("w", ast.Name("z", ast.Load()))]
-        stararg = ast.Name("p", ast.Load())
-        kwarg = ast.Name("q", ast.Load())
-        call = ast.Call(ast.Name("x", ast.Store()), args, keywords, stararg,
-                        kwarg)
+        call = ast.Call(ast.Name("x", ast.Store()), args, keywords)
         self.expr(call, "must have Load context")
-        call = ast.Call(func, [None], keywords, stararg, kwarg)
+        call = ast.Call(func, [None], keywords)
         self.expr(call, "None disallowed")
         bad_keywords = [ast.keyword("w", ast.Name("z", ast.Store()))]
-        call = ast.Call(func, args, bad_keywords, stararg, kwarg)
-        self.expr(call, "must have Load context")
-        call = ast.Call(func, args, keywords, ast.Name("z", ast.Store()), kwarg)
-        self.expr(call, "must have Load context")
-        call = ast.Call(func, args, keywords, stararg,
-                        ast.Name("w", ast.Store()))
+        call = ast.Call(func, args, bad_keywords)
         self.expr(call, "must have Load context")
 
     def test_num(self):
@@ -957,8 +943,8 @@
 ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], ('arg', (1, 7), 'args', None), [], [], None, []), [('Pass', (1, 14))], [], None)]),
 ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, [], [], ('arg', (1, 8), 'kwargs', None), []), [('Pass', (1, 17))], [], None)]),
 ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [('arg', (1, 6), 'a', None), ('arg', (1, 9), 'b', None), ('arg', (1, 14), 'c', None), ('arg', (1, 22), 'd', None), ('arg', (1, 28), 'e', None)], ('arg', (1, 35), 'args', None), [('arg', (1, 41), 'f', None)], [('Num', (1, 43), 42)], ('arg', (1, 49), 'kwargs', None), [('Num', (1, 11), 1), ('NameConstant', (1, 16), None), ('List', (1, 24), [], ('Load',)), ('Dict', (1, 30), [], [])]), [('Pass', (1, 58))], [], None)]),
-('Module', [('ClassDef', (1, 0), 'C', [], [], None, None, [('Pass', (1, 8))], [])]),
-('Module', [('ClassDef', (1, 0), 'C', [('Name', (1, 8), 'object', ('Load',))], [], None, None, [('Pass', (1, 17))], [])]),
+('Module', [('ClassDef', (1, 0), 'C', [], [], [('Pass', (1, 8))], [])]),
+('Module', [('ClassDef', (1, 0), 'C', [('Name', (1, 8), 'object', ('Load',))], [], [('Pass', (1, 17))], [])]),
 ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, [], [], None, []), [('Return', (1, 8), ('Num', (1, 15), 1))], [], None)]),
 ('Module', [('Delete', (1, 0), [('Name', (1, 4), 'v', ('Del',))])]),
 ('Module', [('Assign', (1, 0), [('Name', (1, 0), 'v', ('Store',))], ('Num', (1, 4), 1))]),
@@ -968,7 +954,7 @@
 ('Module', [('If', (1, 0), ('Name', (1, 3), 'v', ('Load',)), [('Pass', (1, 5))], [])]),
 ('Module', [('With', (1, 0), [('withitem', ('Name', (1, 5), 'x', ('Load',)), ('Name', (1, 10), 'y', ('Store',)))], [('Pass', (1, 13))])]),
 ('Module', [('With', (1, 0), [('withitem', ('Name', (1, 5), 'x', ('Load',)), ('Name', (1, 10), 'y', ('Store',))), ('withitem', ('Name', (1, 13), 'z', ('Load',)), ('Name', (1, 18), 'q', ('Store',)))], [('Pass', (1, 21))])]),
-('Module', [('Raise', (1, 0), ('Call', (1, 6), ('Name', (1, 6), 'Exception', ('Load',)), [('Str', (1, 16), 'string')], [], None, None), None)]),
+('Module', [('Raise', (1, 0), ('Call', (1, 6), ('Name', (1, 6), 'Exception', ('Load',)), [('Str', (1, 16), 'string')], []), None)]),
 ('Module', [('Try', (1, 0), [('Pass', (2, 2))], [('ExceptHandler', (3, 0), ('Name', (3, 7), 'Exception', ('Load',)), None, [('Pass', (4, 2))])], [], [])]),
 ('Module', [('Try', (1, 0), [('Pass', (2, 2))], [], [], [('Pass', (4, 2))])]),
 ('Module', [('Assert', (1, 0), ('Name', (1, 7), 'v', ('Load',)), None)]),
@@ -998,14 +984,14 @@
 ('Expression', ('BinOp', (1, 0), ('Name', (1, 0), 'a', ('Load',)), ('Add',), ('Name', (1, 4), 'b', ('Load',)))),
 ('Expression', ('UnaryOp', (1, 0), ('Not',), ('Name', (1, 4), 'v', ('Load',)))),
 ('Expression', ('Lambda', (1, 0), ('arguments', [], None, [], [], None, []), ('NameConstant', (1, 7), None))),
-('Expression', ('Dict', (1, 0), [('Num', (1, 2), 1)], [('Num', (1, 4), 2)])),
+('Expression', ('Dict', (1, 2), [('Num', (1, 2), 1)], [('Num', (1, 4), 2)])),
 ('Expression', ('Dict', (1, 0), [], [])),
-('Expression', ('Set', (1, 0), [('NameConstant', (1, 1), None)])),
-('Expression', ('Dict', (1, 0), [('Num', (2, 6), 1)], [('Num', (4, 10), 2)])),
+('Expression', ('Set', (1, 1), [('NameConstant', (1, 1), None)])),
+('Expression', ('Dict', (2, 6), [('Num', (2, 6), 1)], [('Num', (4, 10), 2)])),
 ('Expression', ('ListComp', (1, 1), ('Name', (1, 1), 'a', ('Load',)), [('comprehension', ('Name', (1, 7), 'b', ('Store',)), ('Name', (1, 12), 'c', ('Load',)), [('Name', (1, 17), 'd', ('Load',))])])),
 ('Expression', ('GeneratorExp', (1, 1), ('Name', (1, 1), 'a', ('Load',)), [('comprehension', ('Name', (1, 7), 'b', ('Store',)), ('Name', (1, 12), 'c', ('Load',)), [('Name', (1, 17), 'd', ('Load',))])])),
 ('Expression', ('Compare', (1, 0), ('Num', (1, 0), 1), [('Lt',), ('Lt',)], [('Num', (1, 4), 2), ('Num', (1, 8), 3)])),
-('Expression', ('Call', (1, 0), ('Name', (1, 0), 'f', ('Load',)), [('Num', (1, 2), 1), ('Num', (1, 4), 2)], [('keyword', 'c', ('Num', (1, 8), 3))], ('Name', (1, 11), 'd', ('Load',)), ('Name', (1, 15), 'e', ('Load',)))),
+('Expression', ('Call', (1, 0), ('Name', (1, 0), 'f', ('Load',)), [('Num', (1, 2), 1), ('Num', (1, 4), 2), ('Starred', (1, 10), ('Name', (1, 11), 'd', ('Load',)), ('Load',))], [('keyword', 'c', ('Num', (1, 8), 3)), ('keyword', None, ('Name', (1, 15), 'e', ('Load',)))])),
 ('Expression', ('Num', (1, 0), 10)),
 ('Expression', ('Str', (1, 0), 'string')),
 ('Expression', ('Attribute', (1, 0), ('Name', (1, 0), 'a', ('Load',)), 'b', ('Load',))),
@@ -1016,6 +1002,6 @@
 ('Expression', ('Tuple', (1, 0), [('Num', (1, 0), 1), ('Num', (1, 2), 2), ('Num', (1, 4), 3)], ('Load',))),
 ('Expression', ('Tuple', (1, 1), [('Num', (1, 1), 1), ('Num', (1, 3), 2), ('Num', (1, 5), 3)], ('Load',))),
 ('Expression', ('Tuple', (1, 0), [], ('Load',))),
-('Expression', ('Call', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Name', (1, 0), 'a', ('Load',)), 'b', ('Load',)), 'c', ('Load',)), 'd', ('Load',)), [('Subscript', (1, 8), ('Attribute', (1, 8), ('Name', (1, 8), 'a', ('Load',)), 'b', ('Load',)), ('Slice', ('Num', (1, 12), 1), ('Num', (1, 14), 2), None), ('Load',))], [], None, None)),
+('Expression', ('Call', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Name', (1, 0), 'a', ('Load',)), 'b', ('Load',)), 'c', ('Load',)), 'd', ('Load',)), [('Subscript', (1, 8), ('Attribute', (1, 8), ('Name', (1, 8), 'a', ('Load',)), 'b', ('Load',)), ('Slice', ('Num', (1, 12), 1), ('Num', (1, 14), 2), None), ('Load',))], [])),
 ]
 main()
diff --git a/Lib/test/test_extcall.py b/Lib/test/test_extcall.py
--- a/Lib/test/test_extcall.py
+++ b/Lib/test/test_extcall.py
@@ -34,17 +34,37 @@
     (1, 2, 3, 4, 5) {}
     >>> f(1, 2, 3, *[4, 5])
     (1, 2, 3, 4, 5) {}
+    >>> f(*[1, 2, 3], 4, 5)
+    (1, 2, 3, 4, 5) {}
     >>> f(1, 2, 3, *UserList([4, 5]))
     (1, 2, 3, 4, 5) {}
+    >>> f(1, 2, 3, *[4, 5], *[6, 7])
+    (1, 2, 3, 4, 5, 6, 7) {}
+    >>> f(1, *[2, 3], 4, *[5, 6], 7)
+    (1, 2, 3, 4, 5, 6, 7) {}
+    >>> f(*UserList([1, 2]), *UserList([3, 4]), 5, *UserList([6, 7]))
+    (1, 2, 3, 4, 5, 6, 7) {}
 
 Here we add keyword arguments
 
     >>> f(1, 2, 3, **{'a':4, 'b':5})
     (1, 2, 3) {'a': 4, 'b': 5}
+    >>> f(1, 2, **{'a': -1, 'b': 5}, **{'a': 4, 'c': 6})
+    Traceback (most recent call last):
+        ...
+    TypeError: f() got multiple values for keyword argument 'a'
+    >>> f(1, 2, **{'a': -1, 'b': 5}, a=4, c=6)
+    Traceback (most recent call last):
+        ...
+    TypeError: f() got multiple values for keyword argument 'a'
     >>> f(1, 2, 3, *[4, 5], **{'a':6, 'b':7})
     (1, 2, 3, 4, 5) {'a': 6, 'b': 7}
     >>> f(1, 2, 3, x=4, y=5, *(6, 7), **{'a':8, 'b': 9})
     (1, 2, 3, 6, 7) {'a': 8, 'b': 9, 'x': 4, 'y': 5}
+    >>> f(1, 2, 3, *[4, 5], **{'c': 8}, **{'a':6, 'b':7})
+    (1, 2, 3, 4, 5) {'a': 6, 'b': 7, 'c': 8}
+    >>> f(1, 2, 3, *(4, 5), x=6, y=7, **{'a':8, 'b': 9})
+    (1, 2, 3, 4, 5) {'a': 8, 'b': 9, 'x': 6, 'y': 7}
 
     >>> f(1, 2, 3, **UserDict(a=4, b=5))
     (1, 2, 3) {'a': 4, 'b': 5}
@@ -52,6 +72,8 @@
     (1, 2, 3, 4, 5) {'a': 6, 'b': 7}
     >>> f(1, 2, 3, x=4, y=5, *(6, 7), **UserDict(a=8, b=9))
     (1, 2, 3, 6, 7) {'a': 8, 'b': 9, 'x': 4, 'y': 5}
+    >>> f(1, 2, 3, *(4, 5), x=6, y=7, **UserDict(a=8, b=9))
+    (1, 2, 3, 4, 5) {'a': 8, 'b': 9, 'x': 6, 'y': 7}
 
 Examples with invalid arguments (TypeErrors). We're also testing the function
 names in the exception messages.
diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py
--- a/Lib/test/test_grammar.py
+++ b/Lib/test/test_grammar.py
@@ -296,8 +296,12 @@
             return args, kwargs
         self.assertEqual(f(1, x=2, *[3, 4], y=5), ((1, 3, 4),
                                                     {'x':2, 'y':5}))
-        self.assertRaises(SyntaxError, eval, "f(1, *(2,3), 4)")
+        self.assertEqual(f(1, *(2,3), 4), ((1, 2, 3, 4), {}))
         self.assertRaises(SyntaxError, eval, "f(1, x=2, *(3,4), x=5)")
+        self.assertEqual(f(**{'eggs':'scrambled', 'spam':'fried'}),
+                         ((), {'eggs':'scrambled', 'spam':'fried'}))
+        self.assertEqual(f(spam='fried', **{'eggs':'scrambled'}),
+                         ((), {'eggs':'scrambled', 'spam':'fried'}))
 
         # argument annotation tests
         def f(x) -> list: pass
diff --git a/Lib/test/test_parser.py b/Lib/test/test_parser.py
--- a/Lib/test/test_parser.py
+++ b/Lib/test/test_parser.py
@@ -313,7 +313,12 @@
                          "except Exception as e:\n"
                          "    raise ValueError from e\n")
 
+    def test_list_displays(self):
+        self.check_expr('[]')
+        self.check_expr('[*{2}, 3, *[4]]')
+
     def test_set_displays(self):
+        self.check_expr('{*{2}, 3, *[4]}')
         self.check_expr('{2}')
         self.check_expr('{2,}')
         self.check_expr('{2, 3}')
@@ -325,6 +330,13 @@
         self.check_expr('{a:b,}')
         self.check_expr('{a:b, c:d}')
         self.check_expr('{a:b, c:d,}')
+        self.check_expr('{**{}}')
+        self.check_expr('{**{}, 3:4, **{5:6, 7:8}}')
+
+    def test_argument_unpacking(self):
+        self.check_expr('f(a, *b, *c, *d)')
+        self.check_expr('f(**a, **b)')
+        self.check_expr('f(2, *a, *b, **b, **c, **d)')
 
     def test_set_comprehensions(self):
         self.check_expr('{x for x in seq}')
diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py
--- a/Lib/test/test_syntax.py
+++ b/Lib/test/test_syntax.py
@@ -141,6 +141,9 @@
 >>> f(x for x in L, 1)
 Traceback (most recent call last):
 SyntaxError: Generator expression must be parenthesized if not sole argument
+>>> f(x for x in L, y for y in L)
+Traceback (most recent call last):
+SyntaxError: Generator expression must be parenthesized if not sole argument
 >>> f((x for x in L), 1)
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 
@@ -582,7 +585,18 @@
                           subclass=IndentationError)
 
     def test_kwargs_last(self):
-        self._check_error("int(base=10, '2')", "non-keyword arg")
+        self._check_error("int(base=10, '2')",
+                          "positional argument follows keyword argument")
+
+    def test_kwargs_last2(self):
+        self._check_error("int(**{base: 10}, '2')",
+                          "positional argument follows "
+                          "keyword argument unpacking")
+
+    def test_kwargs_last3(self):
+        self._check_error("int(**{base: 10}, *['2'])",
+                          "iterable argument unpacking follows "
+                          "keyword argument unpacking")
 
 def test_main():
     support.run_unittest(SyntaxTestCase)
diff --git a/Lib/test/test_unpack_ex.py b/Lib/test/test_unpack_ex.py
--- a/Lib/test/test_unpack_ex.py
+++ b/Lib/test/test_unpack_ex.py
@@ -71,8 +71,185 @@
     >>> a == 0 and b == [1, 2, 3] and c == 4 and d == [0, 1, 2, 3] and e == 4
     True
 
+Assignment unpacking
+
+    >>> a, b, *c = range(5)
+    >>> a, b, c
+    (0, 1, [2, 3, 4])
+    >>> *a, b, c = a, b, *c
+    >>> a, b, c
+    ([0, 1, 2], 3, 4)
+
+Set display element unpacking
+
+    >>> a = [1, 2, 3]
+    >>> sorted({1, *a, 0, 4})
+    [0, 1, 2, 3, 4]
+
+    >>> {1, *1, 0, 4}
+    Traceback (most recent call last):
+      ...
+    TypeError: 'int' object is not iterable
+
+Dict display element unpacking
+
+    >>> kwds = {'z': 0, 'w': 12}
+    >>> sorted({'x': 1, 'y': 2, **kwds}.items())
+    [('w', 12), ('x', 1), ('y', 2), ('z', 0)]
+
+    >>> sorted({**{'x': 1}, 'y': 2, **{'z': 3}}.items())
+    [('x', 1), ('y', 2), ('z', 3)]
+
+    >>> sorted({**{'x': 1}, 'y': 2, **{'x': 3}}.items())
+    [('x', 3), ('y', 2)]
+
+    >>> sorted({**{'x': 1}, **{'x': 3}, 'x': 4}.items())
+    [('x', 4)]
+
+    >>> {**{}}
+    {}
+
+    >>> a = {}
+    >>> {**a}[0] = 1
+    >>> a
+    {}
+
+    >>> {**1}
+    Traceback (most recent call last):
+    ...
+    TypeError: 'int' object is not a mapping
+
+    >>> {**[]}
+    Traceback (most recent call last):
+    ...
+    TypeError: 'list' object is not a mapping
+
+    >>> len(eval("{" + ", ".join("**{{{}: {}}}".format(i, i)
+    ...                          for i in range(1000)) + "}"))
+    1000
+
+List comprehension element unpacking
+
+    >>> a, b, c = [0, 1, 2], 3, 4
+    >>> [*a, b, c]
+    [0, 1, 2, 3, 4]
+
+    >>> l = [a, (3, 4), {5}, {6: None}, (i for i in range(7, 10))]
+    >>> [*item for item in l]
+    Traceback (most recent call last):
+    ...
+    SyntaxError: iterable unpacking cannot be used in comprehension
+
+    >>> [*[0, 1] for i in range(10)]
+    Traceback (most recent call last):
+    ...
+    SyntaxError: iterable unpacking cannot be used in comprehension
+
+    >>> [*'a' for i in range(10)]
+    Traceback (most recent call last):
+    ...
+    SyntaxError: iterable unpacking cannot be used in comprehension
+
+    >>> [*[] for i in range(10)]
+    Traceback (most recent call last):
+    ...
+    SyntaxError: iterable unpacking cannot be used in comprehension
+
+Generator expression in function arguments
+
+    >>> list(*x for x in (range(5) for i in range(3)))
+    Traceback (most recent call last):
+    ...
+        list(*x for x in (range(5) for i in range(3)))
+                  ^
+    SyntaxError: invalid syntax
+
+    >>> dict(**x for x in [{1:2}])
+    Traceback (most recent call last):
+    ...
+        dict(**x for x in [{1:2}])
+                   ^
+    SyntaxError: invalid syntax
+
+Iterable argument unpacking
+
+    >>> print(*[1], *[2], 3)
+    1 2 3
+
+Make sure that they don't corrupt the passed-in dicts.
+
+    >>> def f(x, y):
+    ...     print(x, y)
+    ...
+    >>> original_dict = {'x': 1}
+    >>> f(**original_dict, y=2)
+    1 2
+    >>> original_dict
+    {'x': 1}
+
 Now for some failures
 
+Make sure the raised errors are right for keyword argument unpackings
+
+    >>> from collections.abc import MutableMapping
+    >>> class CrazyDict(MutableMapping):
+    ...     def __init__(self):
+    ...         self.d = {}
+    ...
+    ...     def __iter__(self):
+    ...         for x in self.d.__iter__():
+    ...             if x == 'c':
+    ...                 self.d['z'] = 10
+    ...             yield x
+    ...
+    ...     def __getitem__(self, k):
+    ...         return self.d[k]
+    ...
+    ...     def __len__(self):
+    ...         return len(self.d)
+    ...
+    ...     def __setitem__(self, k, v):
+    ...         self.d[k] = v
+    ...
+    ...     def __delitem__(self, k):
+    ...         del self.d[k]
+    ...
+    >>> d = CrazyDict()
+    >>> d.d = {chr(ord('a') + x): x for x in range(5)}
+    >>> e = {**d}
+    Traceback (most recent call last):
+    ...
+    RuntimeError: dictionary changed size during iteration
+
+    >>> d.d = {chr(ord('a') + x): x for x in range(5)}
+    >>> def f(**kwargs): print(kwargs)
+    >>> f(**d)
+    Traceback (most recent call last):
+    ...
+    RuntimeError: dictionary changed size during iteration
+
+Overridden parameters
+
+    >>> f(x=5, **{'x': 3}, y=2)
+    Traceback (most recent call last):
+      ...
+    TypeError: f() got multiple values for keyword argument 'x'
+
+    >>> f(**{'x': 3}, x=5, y=2)
+    Traceback (most recent call last):
+      ...
+    TypeError: f() got multiple values for keyword argument 'x'
+
+    >>> f(**{'x': 3}, **{'x': 5}, y=2)
+    Traceback (most recent call last):
+      ...
+    TypeError: f() got multiple values for keyword argument 'x'
+
+    >>> f(**{1: 3}, **{1: 5})
+    Traceback (most recent call last):
+      ...
+    TypeError: f() keywords must be strings
+
 Unpacking non-sequence
 
     >>> a, *b = 7
@@ -138,17 +315,17 @@
     >>> *a # doctest:+ELLIPSIS
     Traceback (most recent call last):
       ...
-    SyntaxError: can use starred expression only as assignment target
+    SyntaxError: can't use starred expression here
 
     >>> *1 # doctest:+ELLIPSIS
     Traceback (most recent call last):
       ...
-    SyntaxError: can use starred expression only as assignment target
+    SyntaxError: can't use starred expression here
 
     >>> x = *a # doctest:+ELLIPSIS
     Traceback (most recent call last):
       ...
-    SyntaxError: can use starred expression only as assignment target
+    SyntaxError: can't use starred expression here
 
 Some size constraints (all fail.)
 
diff --git a/Misc/ACKS b/Misc/ACKS
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -493,6 +493,7 @@
 Michael Gilfix
 Julian Gindi
 Yannick Gingras
+Neil Girdhar
 Matt Giuca
 Wim Glenn
 Michael Goderbauer
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,8 @@
 Core and Builtins
 -----------------
 
+- Issue #2292: PEP 448: Additional Unpacking Generalizations.
+
 - Issue #24096: Make warnings.warn_explicit more robust against mutation of the
   warnings.filters list.
 
diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c
--- a/Modules/parsermodule.c
+++ b/Modules/parsermodule.c
@@ -23,6 +23,11 @@
  *  that lint detects are gone, but there are still warnings with
  *  Py_[X]DECREF() and Py_[X]INCREF() macros.  The lint annotations
  *  look like "NOTE(...)".
+ *
+ *  To debug parser errors like
+ *      "parser.ParserError: Expected node type 12, got 333."
+ *  decode symbol numbers using the automatically-generated files
+ *  Lib/symbol.h and Include/token.h.
  */
 
 #include "Python.h"                     /* general Python API             */
@@ -1087,30 +1092,56 @@
     return (res);
 }
 
-
-/*  X (',' X) [',']
- */
+/*  X (',' X) [','] */
 static int
-validate_repeating_list(node *tree, int ntype, int (*vfunc)(node *),
-                        const char *const name)
+validate_repeating_list_variable(node *tree,
+                                 int list_node_type,
+                                 int (*validate_child_func_inc)(node *, int *),
+                                 int *pos,
+                                 const char *const list_node_type_name)
 {
     int nch = NCH(tree);
-    int res = (nch && validate_ntype(tree, ntype)
-               && vfunc(CHILD(tree, 0)));
-
-    if (!res && !PyErr_Occurred())
-        (void) validate_numnodes(tree, 1, name);
+    int res = (nch && validate_ntype(tree, list_node_type));
+
+    if (!res && !PyErr_Occurred()) {
+        /* Unconditionally raise. */
+        (void) validate_numnodes(tree, 1, list_node_type_name);
+    }
     else {
-        if (is_even(nch))
-            res = validate_comma(CHILD(tree, --nch));
-        if (res && nch > 1) {
-            int pos = 1;
-            for ( ; res && pos < nch; pos += 2)
-                res = (validate_comma(CHILD(tree, pos))
-                       && vfunc(CHILD(tree, pos + 1)));
+        for ( ; res && *pos < nch; ) {
+            res = validate_child_func_inc(tree, pos);
+            if (!res || *pos >= nch)
+                break;
+            res = validate_comma(CHILD(tree, (*pos)++));
         }
     }
-    return (res);
+    return res;
+}
+
+/*  X (',' X) [','] */
+static int
+validate_repeating_list(node *tree,
+                        int list_node_type,
+                        int (*validate_child_func)(node *),
+                        const char *const list_node_type_name)
+{
+    int nch = NCH(tree);
+    int res = (nch && validate_ntype(tree, list_node_type));
+    int pos = 0;
+
+    if (!res && !PyErr_Occurred()) {
+        /* Unconditionally raise. */
+        (void) validate_numnodes(tree, 1, list_node_type_name);
+    }
+    else {
+        for ( ; res && pos < nch; ) {
+            res = validate_child_func(CHILD(tree, pos++));
+            if (!res || pos >= nch)
+                break;
+            res = validate_comma(CHILD(tree, pos++));
+        }
+    }
+    return res;
 }
 
 
@@ -2451,9 +2482,9 @@
 
             if (res && (nch == 3)) {
                 if (TYPE(CHILD(tree, 1))==yield_expr)
-                        res = validate_yield_expr(CHILD(tree, 1));
+                    res = validate_yield_expr(CHILD(tree, 1));
                 else
-                        res = validate_testlist_comp(CHILD(tree, 1));
+                    res = validate_testlist_comp(CHILD(tree, 1));
             }
             break;
           case LSQB:
@@ -2493,39 +2524,28 @@
 
 
 /*  testlist_comp:
- *    test ( comp_for | (',' test)* [','] )
+ *    (test|star_expr) ( comp_for | (',' (test|star_expr))* [','] )
  */
 static int
 validate_testlist_comp(node *tree)
 {
     int nch = NCH(tree);
-    int ok = nch;
-
-    if (nch == 0)
+    int ok;
+
+    if (nch == 0) {
         err_string("missing child nodes of testlist_comp");
+        return 0;
+    }
+
+    if (nch == 2 && TYPE(CHILD(tree, 1)) == comp_for) {
+        ok = (validate_test(CHILD(tree, 0))
+                && validate_comp_for(CHILD(tree, 1)));
+    }
     else {
-        ok = validate_test_or_star_expr(CHILD(tree, 0));
-    }
-
-    /*
-     *  comp_for | (',' test)* [',']
-     */
-    if (nch == 2 && TYPE(CHILD(tree, 1)) == comp_for)
-        ok = validate_comp_for(CHILD(tree, 1));
-    else {
-        /*  (',' test)* [',']  */
-        int i = 1;
-        while (ok && nch - i >= 2) {
-            ok = (validate_comma(CHILD(tree, i))
-                  && validate_test_or_star_expr(CHILD(tree, i+1)));
-            i += 2;
-        }
-        if (ok && i == nch-1)
-            ok = validate_comma(CHILD(tree, i));
-        else if (i != nch) {
-            ok = 0;
-            err_string("illegal trailing nodes for testlist_comp");
-        }
+        ok = validate_repeating_list(tree,
+                testlist_comp,
+                validate_test_or_star_expr,
+                "testlist_comp");
     }
     return ok;
 }
@@ -2732,9 +2752,6 @@
     }
     ok = 1;
     if (nch-i > 0) {
-        /*
-         * argument | '*' test [',' '**' test] | '**' test
-         */
         int sym = TYPE(CHILD(tree, i));
 
         if (sym == argument) {
@@ -2745,30 +2762,7 @@
                 ok = 0;
             }
         }
-        else if (sym == STAR) {
-            ok = validate_star(CHILD(tree, i));
-            if (ok && (nch-i == 2))
-                ok = validate_test(CHILD(tree, i+1));
-            else if (ok && (nch-i == 5))
-                ok = (validate_test(CHILD(tree, i+1))
-                      && validate_comma(CHILD(tree, i+2))
-                      && validate_doublestar(CHILD(tree, i+3))
-                      && validate_test(CHILD(tree, i+4)));
-            else {
-                err_string("illegal use of '*' in arglist");
-                ok = 0;
-            }
-        }
-        else if (sym == DOUBLESTAR) {
-            if (nch-i == 2)
-                ok = (validate_doublestar(CHILD(tree, i))
-                      && validate_test(CHILD(tree, i+1)));
-            else {
-                err_string("illegal use of '**' in arglist");
-                ok = 0;
-            }
-        }
-        else {
+       else {
             err_string("illegal arglist specification");
             ok = 0;
         }
@@ -2778,9 +2772,10 @@
 
 
 
-/*  argument:
- *
- *  [test '='] test [comp_for]
+/*  argument: ( test [comp_for] |
+ *              test '=' test |
+ *              '**' expr |
+ *              star_expr )
  */
 static int
 validate_argument(node *tree)
@@ -2788,14 +2783,24 @@
     int nch = NCH(tree);
     int res = (validate_ntype(tree, argument)
                && ((nch == 1) || (nch == 2) || (nch == 3)));
-    if (res)
-        res = validate_test(CHILD(tree, 0));
-    if (res && (nch == 2))
-        res = validate_comp_for(CHILD(tree, 1));
-    else if (res && (nch == 3))
-        res = (validate_equal(CHILD(tree, 1))
-               && validate_test(CHILD(tree, 2)));
-
+
+    if (res) {
+        if (TYPE(CHILD(tree, 0)) == DOUBLESTAR) {
+            res = validate_expr(CHILD(tree, 1));
+        }
+        else if (nch == 1) {
+            res = validate_test_or_star_expr(CHILD(tree, 0));
+        }
+        else if (nch == 2) {
+            res = (validate_test(CHILD(tree, 0))
+                    && validate_comp_for(CHILD(tree, 1)));
+        }
+        else if (res && (nch == 3)) {
+            res = (validate_test(CHILD(tree, 0))
+                    && validate_equal(CHILD(tree, 1))
+                    && validate_test(CHILD(tree, 2)));
+        }
+    }
     return (res);
 }
 
@@ -2948,11 +2953,44 @@
                                     validate_expr_or_star_expr, "exprlist"));
 }
 
+/* Incrementing validate functions returns nonzero iff success (like other
+ * validate functions, and advance *i by the length of the matched pattern. */
+
+/* test ':' test */
+static int
+validate_test_colon_test_inc(node *tree, int *i)
+{
+    return (validate_test(CHILD(tree, (*i)++))
+            && validate_colon(CHILD(tree, (*i)++))
+            && validate_test(CHILD(tree, (*i)++)));
+}
+
+/* test ':' test | '**' expr */
+static int
+validate_dict_element_inc(node *tree, int *i)
+{
+    int nch = NCH(tree);
+    int res = 0;
+    if (nch - *i >= 2) {
+        if (TYPE(CHILD(tree, *i+1)) == COLON) {
+            /* test ':' test */
+            res = validate_test_colon_test_inc(tree, i);
+        } else {
+            /* '**' expr */
+            res = (validate_doublestar(CHILD(tree, (*i)++))
+                    && validate_expr(CHILD(tree, (*i)++)));
+        }
+    }
+    return res;
+}
+
 /*
  *  dictorsetmaker:
  *
- *  (test ':' test (comp_for | (',' test ':' test)* [','])) |
- *  (test (comp_for | (',' test)* [',']))
+ *   ( ((test ':' test | '**' expr)
+ *      (comp_for | (',' (test ':' test | '**' expr))* [','])) |
+ *     ((test | '*' test)
+ *      (comp_for | (',' (test | '*' test))* [','])) )
  */
 static int
 validate_dictorsetmaker(node *tree)
@@ -2966,65 +3004,44 @@
         return 0;
 
     if (nch - i < 1) {
+        /* Unconditionally raise. */
         (void) validate_numnodes(tree, 1, "dictorsetmaker");
         return 0;
     }
 
-    res = validate_test(CHILD(tree, i++));
-    if (!res)
-        return 0;
-
-    if (nch - i >= 2 && TYPE(CHILD(tree, i)) == COLON) {
+    if (nch - i >= 2
+        && ((TYPE(CHILD(tree, i+1)) == COLON) ||
+            (TYPE(CHILD(tree, i)) == DOUBLESTAR))) {
         /* Dictionary display or dictionary comprehension. */
-        res = (validate_colon(CHILD(tree, i++))
-               && validate_test(CHILD(tree, i++)));
-        if (!res)
-            return 0;
-
-        if (nch - i >= 1 && TYPE(CHILD(tree, i)) == comp_for) {
+        if (nch - i >= 4 && TYPE(CHILD(tree, i+3)) == comp_for) {
             /* Dictionary comprehension. */
-            res = validate_comp_for(CHILD(tree, i++));
+            res = (validate_test_colon_test_inc(tree, &i)
+                    && validate_comp_for(CHILD(tree, i++)));
             if (!res)
                 return 0;
+        } else {
+            /* Dictionary display. */
+            return validate_repeating_list_variable(
+                    tree,
+                    dictorsetmaker,
+                    validate_dict_element_inc,
+                    &i,
+                    "dictorsetmaker");
         }
-        else {
-            /* Dictionary display. */
-            while (nch - i >= 4) {
-                res = (validate_comma(CHILD(tree, i++))
-                       && validate_test(CHILD(tree, i++))
-                       && validate_colon(CHILD(tree, i++))
-                       && validate_test(CHILD(tree, i++)));
-                if (!res)
-                    return 0;
-            }
-            if (nch - i == 1) {
-                res = validate_comma(CHILD(tree, i++));
-                if (!res)
-                    return 0;
-            }
-        }
-    }
-    else {
+    } else {
         /* Set display or set comprehension. */
-        if (nch - i >= 1 && TYPE(CHILD(tree, i)) == comp_for) {
+        if (nch - i >= 2 && TYPE(CHILD(tree, i + 1)) == comp_for) {
             /* Set comprehension. */
-            res = validate_comp_for(CHILD(tree, i++));
+            res = (validate_test(CHILD(tree, i++))
+                   && validate_comp_for(CHILD(tree, i++)));
             if (!res)
                 return 0;
-        }
-        else {
+        } else {
             /* Set display. */
-            while (nch - i >= 2) {
-                res = (validate_comma(CHILD(tree, i++))
-                       && validate_test(CHILD(tree, i++)));
-                if (!res)
-                    return 0;
-            }
-            if (nch - i == 1) {
-                res = validate_comma(CHILD(tree, i++));
-                if (!res)
-                    return 0;
-            }
+           return validate_repeating_list(tree,
+                                          dictorsetmaker,
+                                          validate_test_or_star_expr,
+                                          "dictorsetmaker");
         }
     }
 
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -3412,8 +3412,8 @@
     return result;
 }
 
-static PyObject*
-dictviews_and(PyObject* self, PyObject *other)
+PyObject*
+_PyDictView_Intersect(PyObject* self, PyObject *other)
 {
     PyObject *result = PySet_New(self);
     PyObject *tmp;
@@ -3487,7 +3487,7 @@
     0,                                  /*nb_invert*/
     0,                                  /*nb_lshift*/
     0,                                  /*nb_rshift*/
-    (binaryfunc)dictviews_and,          /*nb_and*/
+    (binaryfunc)_PyDictView_Intersect,  /*nb_and*/
     (binaryfunc)dictviews_xor,          /*nb_xor*/
     (binaryfunc)dictviews_or,           /*nb_or*/
 };
diff --git a/Parser/Python.asdl b/Parser/Python.asdl
--- a/Parser/Python.asdl
+++ b/Parser/Python.asdl
@@ -14,8 +14,6 @@
           | ClassDef(identifier name,
              expr* bases,
              keyword* keywords,
-             expr? starargs,
-             expr? kwargs,
              stmt* body,
              expr* decorator_list)
           | Return(expr? value)
@@ -64,8 +62,7 @@
          -- need sequences for compare to distinguish between
          -- x < 4 < 3 and (x < 4) < 3
          | Compare(expr left, cmpop* ops, expr* comparators)
-         | Call(expr func, expr* args, keyword* keywords,
-             expr? starargs, expr? kwargs)
+         | Call(expr func, expr* args, keyword* keywords)
          | Num(object n) -- a number as a PyObject.
          | Str(string s) -- need to specify raw, unicode, etc?
          | Bytes(bytes s)
@@ -109,8 +106,8 @@
     arg = (identifier arg, expr? annotation)
            attributes (int lineno, int col_offset)
 
-    -- keyword arguments supplied to call
-    keyword = (identifier arg, expr value)
+    -- keyword arguments supplied to call (NULL identifier for **kwargs)
+    keyword = (identifier? arg, expr value)
 
     -- import name with optional 'as' alias.
     alias = (identifier name, identifier? asname)
diff --git a/Python/Python-ast.c b/Python/Python-ast.c
--- a/Python/Python-ast.c
+++ b/Python/Python-ast.c
@@ -48,14 +48,10 @@
 static PyTypeObject *ClassDef_type;
 _Py_IDENTIFIER(bases);
 _Py_IDENTIFIER(keywords);
-_Py_IDENTIFIER(starargs);
-_Py_IDENTIFIER(kwargs);
 static char *ClassDef_fields[]={
     "name",
     "bases",
     "keywords",
-    "starargs",
-    "kwargs",
     "body",
     "decorator_list",
 };
@@ -254,8 +250,6 @@
     "func",
     "args",
     "keywords",
-    "starargs",
-    "kwargs",
 };
 static PyTypeObject *Num_type;
 _Py_IDENTIFIER(n);
@@ -812,7 +806,7 @@
     FunctionDef_type = make_type("FunctionDef", stmt_type, FunctionDef_fields,
                                  5);
     if (!FunctionDef_type) return 0;
-    ClassDef_type = make_type("ClassDef", stmt_type, ClassDef_fields, 7);
+    ClassDef_type = make_type("ClassDef", stmt_type, ClassDef_fields, 5);
     if (!ClassDef_type) return 0;
     Return_type = make_type("Return", stmt_type, Return_fields, 1);
     if (!Return_type) return 0;
@@ -884,7 +878,7 @@
     if (!YieldFrom_type) return 0;
     Compare_type = make_type("Compare", expr_type, Compare_fields, 3);
     if (!Compare_type) return 0;
-    Call_type = make_type("Call", expr_type, Call_fields, 5);
+    Call_type = make_type("Call", expr_type, Call_fields, 3);
     if (!Call_type) return 0;
     Num_type = make_type("Num", expr_type, Num_fields, 1);
     if (!Num_type) return 0;
@@ -1207,9 +1201,9 @@
 }
 
 stmt_ty
-ClassDef(identifier name, asdl_seq * bases, asdl_seq * keywords, expr_ty
-         starargs, expr_ty kwargs, asdl_seq * body, asdl_seq * decorator_list,
-         int lineno, int col_offset, PyArena *arena)
+ClassDef(identifier name, asdl_seq * bases, asdl_seq * keywords, asdl_seq *
+         body, asdl_seq * decorator_list, int lineno, int col_offset, PyArena
+         *arena)
 {
     stmt_ty p;
     if (!name) {
@@ -1224,8 +1218,6 @@
     p->v.ClassDef.name = name;
     p->v.ClassDef.bases = bases;
     p->v.ClassDef.keywords = keywords;
-    p->v.ClassDef.starargs = starargs;
-    p->v.ClassDef.kwargs = kwargs;
     p->v.ClassDef.body = body;
     p->v.ClassDef.decorator_list = decorator_list;
     p->lineno = lineno;
@@ -1885,8 +1877,8 @@
 }
 
 expr_ty
-Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, expr_ty starargs,
-     expr_ty kwargs, int lineno, int col_offset, PyArena *arena)
+Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, int lineno, int
+     col_offset, PyArena *arena)
 {
     expr_ty p;
     if (!func) {
@@ -1901,8 +1893,6 @@
     p->v.Call.func = func;
     p->v.Call.args = args;
     p->v.Call.keywords = keywords;
-    p->v.Call.starargs = starargs;
-    p->v.Call.kwargs = kwargs;
     p->lineno = lineno;
     p->col_offset = col_offset;
     return p;
@@ -2276,11 +2266,6 @@
 keyword(identifier arg, expr_ty value, PyArena *arena)
 {
     keyword_ty p;
-    if (!arg) {
-        PyErr_SetString(PyExc_ValueError,
-                        "field arg is required for keyword");
-        return NULL;
-    }
     if (!value) {
         PyErr_SetString(PyExc_ValueError,
                         "field value is required for keyword");
@@ -2442,16 +2427,6 @@
         if (_PyObject_SetAttrId(result, &PyId_keywords, value) == -1)
             goto failed;
         Py_DECREF(value);
-        value = ast2obj_expr(o->v.ClassDef.starargs);
-        if (!value) goto failed;
-        if (_PyObject_SetAttrId(result, &PyId_starargs, value) == -1)
-            goto failed;
-        Py_DECREF(value);
-        value = ast2obj_expr(o->v.ClassDef.kwargs);
-        if (!value) goto failed;
-        if (_PyObject_SetAttrId(result, &PyId_kwargs, value) == -1)
-            goto failed;
-        Py_DECREF(value);
         value = ast2obj_list(o->v.ClassDef.body, ast2obj_stmt);
         if (!value) goto failed;
         if (_PyObject_SetAttrId(result, &PyId_body, value) == -1)
@@ -2964,16 +2939,6 @@
         if (_PyObject_SetAttrId(result, &PyId_keywords, value) == -1)
             goto failed;
         Py_DECREF(value);
-        value = ast2obj_expr(o->v.Call.starargs);
-        if (!value) goto failed;
-        if (_PyObject_SetAttrId(result, &PyId_starargs, value) == -1)
-            goto failed;
-        Py_DECREF(value);
-        value = ast2obj_expr(o->v.Call.kwargs);
-        if (!value) goto failed;
-        if (_PyObject_SetAttrId(result, &PyId_kwargs, value) == -1)
-            goto failed;
-        Py_DECREF(value);
         break;
     case Num_kind:
         result = PyType_GenericNew(Num_type, NULL, NULL);
@@ -3875,8 +3840,6 @@
         identifier name;
         asdl_seq* bases;
         asdl_seq* keywords;
-        expr_ty starargs;
-        expr_ty kwargs;
         asdl_seq* body;
         asdl_seq* decorator_list;
 
@@ -3939,26 +3902,6 @@
             PyErr_SetString(PyExc_TypeError, "required field \"keywords\" missing from ClassDef");
             return 1;
         }
-        if (exists_not_none(obj, &PyId_starargs)) {
-            int res;
-            tmp = _PyObject_GetAttrId(obj, &PyId_starargs);
-            if (tmp == NULL) goto failed;
-            res = obj2ast_expr(tmp, &starargs, arena);
-            if (res != 0) goto failed;
-            Py_CLEAR(tmp);
-        } else {
-            starargs = NULL;
-        }
-        if (exists_not_none(obj, &PyId_kwargs)) {
-            int res;
-            tmp = _PyObject_GetAttrId(obj, &PyId_kwargs);
-            if (tmp == NULL) goto failed;
-            res = obj2ast_expr(tmp, &kwargs, arena);
-            if (res != 0) goto failed;
-            Py_CLEAR(tmp);
-        } else {
-            kwargs = NULL;
-        }
         if (_PyObject_HasAttrId(obj, &PyId_body)) {
             int res;
             Py_ssize_t len;
@@ -4007,8 +3950,8 @@
             PyErr_SetString(PyExc_TypeError, "required field \"decorator_list\" missing from ClassDef");
             return 1;
         }
-        *out = ClassDef(name, bases, keywords, starargs, kwargs, body,
-                        decorator_list, lineno, col_offset, arena);
+        *out = ClassDef(name, bases, keywords, body, decorator_list, lineno,
+                        col_offset, arena);
         if (*out == NULL) goto failed;
         return 0;
     }
@@ -5506,8 +5449,6 @@
         expr_ty func;
         asdl_seq* args;
         asdl_seq* keywords;
-        expr_ty starargs;
-        expr_ty kwargs;
 
         if (_PyObject_HasAttrId(obj, &PyId_func)) {
             int res;
@@ -5568,28 +5509,7 @@
             PyErr_SetString(PyExc_TypeError, "required field \"keywords\" missing from Call");
             return 1;
         }
-        if (exists_not_none(obj, &PyId_starargs)) {
-            int res;
-            tmp = _PyObject_GetAttrId(obj, &PyId_starargs);
-            if (tmp == NULL) goto failed;
-            res = obj2ast_expr(tmp, &starargs, arena);
-            if (res != 0) goto failed;
-            Py_CLEAR(tmp);
-        } else {
-            starargs = NULL;
-        }
-        if (exists_not_none(obj, &PyId_kwargs)) {
-            int res;
-            tmp = _PyObject_GetAttrId(obj, &PyId_kwargs);
-            if (tmp == NULL) goto failed;
-            res = obj2ast_expr(tmp, &kwargs, arena);
-            if (res != 0) goto failed;
-            Py_CLEAR(tmp);
-        } else {
-            kwargs = NULL;
-        }
-        *out = Call(func, args, keywords, starargs, kwargs, lineno, col_offset,
-                    arena);
+        *out = Call(func, args, keywords, lineno, col_offset, arena);
         if (*out == NULL) goto failed;
         return 0;
     }
@@ -6737,7 +6657,7 @@
     identifier arg;
     expr_ty value;
 
-    if (_PyObject_HasAttrId(obj, &PyId_arg)) {
+    if (exists_not_none(obj, &PyId_arg)) {
         int res;
         tmp = _PyObject_GetAttrId(obj, &PyId_arg);
         if (tmp == NULL) goto failed;
@@ -6745,8 +6665,7 @@
         if (res != 0) goto failed;
         Py_CLEAR(tmp);
     } else {
-        PyErr_SetString(PyExc_TypeError, "required field \"arg\" missing from keyword");
-        return 1;
+        arg = NULL;
     }
     if (_PyObject_HasAttrId(obj, &PyId_value)) {
         int res;
diff --git a/Python/ast.c b/Python/ast.c
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -235,9 +235,7 @@
     case Call_kind:
         return validate_expr(exp->v.Call.func, Load) &&
             validate_exprs(exp->v.Call.args, Load, 0) &&
-            validate_keywords(exp->v.Call.keywords) &&
-            (!exp->v.Call.starargs || validate_expr(exp->v.Call.starargs, Load)) &&
-            (!exp->v.Call.kwargs || validate_expr(exp->v.Call.kwargs, Load));
+            validate_keywords(exp->v.Call.keywords);
     case Num_kind: {
         PyObject *n = exp->v.Num.n;
         if (!PyLong_CheckExact(n) && !PyFloat_CheckExact(n) &&
@@ -322,9 +320,7 @@
         return validate_body(stmt->v.ClassDef.body, "ClassDef") &&
             validate_exprs(stmt->v.ClassDef.bases, Load, 0) &&
             validate_keywords(stmt->v.ClassDef.keywords) &&
-            validate_exprs(stmt->v.ClassDef.decorator_list, Load, 0) &&
-            (!stmt->v.ClassDef.starargs || validate_expr(stmt->v.ClassDef.starargs, Load)) &&
-            (!stmt->v.ClassDef.kwargs || validate_expr(stmt->v.ClassDef.kwargs, Load));
+            validate_exprs(stmt->v.ClassDef.decorator_list, Load, 0);
     case Return_kind:
         return !stmt->v.Return.value || validate_expr(stmt->v.Return.value, Load);
     case Delete_kind:
@@ -848,7 +844,8 @@
 };
 
 static int
-forbidden_name(struct compiling *c, identifier name, const node *n, int full_checks)
+forbidden_name(struct compiling *c, identifier name, const node *n,
+               int full_checks)
 {
     assert(PyUnicode_Check(name));
     if (PyUnicode_CompareWithASCIIString(name, "__debug__") == 0) {
@@ -1445,7 +1442,7 @@
         name_expr = NULL;
     }
     else if (NCH(n) == 5) { /* Call with no arguments */
-        d = Call(name_expr, NULL, NULL, NULL, NULL, LINENO(n),
+        d = Call(name_expr, NULL, NULL, LINENO(n),
                  n->n_col_offset, c->c_arena);
         if (!d)
             return NULL;
@@ -1735,16 +1732,22 @@
 static expr_ty
 ast_for_itercomp(struct compiling *c, const node *n, int type)
 {
-    /* testlist_comp: test ( comp_for | (',' test)* [','] )
-       argument: [test '='] test [comp_for]       # Really [keyword '='] test */
+    /* testlist_comp: (test|star_expr)
+     *                ( comp_for | (',' (test|star_expr))* [','] ) */
     expr_ty elt;
     asdl_seq *comps;
+    node *ch;
 
     assert(NCH(n) > 1);
 
-    elt = ast_for_expr(c, CHILD(n, 0));
+    ch = CHILD(n, 0);
+    elt = ast_for_expr(c, ch);
     if (!elt)
         return NULL;
+    if (elt->kind == Starred_kind) {
+        ast_error(c, ch, "iterable unpacking cannot be used in comprehension");
+        return NULL;
+    }
 
     comps = ast_for_comprehension(c, CHILD(n, 1));
     if (!comps)
@@ -1761,23 +1764,59 @@
         return NULL;
 }
 
+/* Fills in the key, value pair corresponding to the dict element.  In case
+ * of an unpacking, key is NULL.  *i is advanced by the number of ast
+ * elements.  Iff successful, nonzero is returned.
+ */
+static int
+ast_for_dictelement(struct compiling *c, const node *n, int *i,
+                    expr_ty *key, expr_ty *value)
+{
+    expr_ty expression;
+    if (TYPE(CHILD(n, *i)) == DOUBLESTAR) {
+        assert(NCH(n) - *i >= 2);
+
+        expression = ast_for_expr(c, CHILD(n, *i + 1));
+        if (!expression)
+            return 0;
+        *key = NULL;
+        *value = expression;
+
+        *i += 2;
+    }
+    else {
+        assert(NCH(n) - *i >= 3);
+
+        expression = ast_for_expr(c, CHILD(n, *i));
+        if (!expression)
+            return 0;
+        *key = expression;
+
+        REQ(CHILD(n, *i + 1), COLON);
+
+        expression = ast_for_expr(c, CHILD(n, *i + 2));
+        if (!expression)
+            return 0;
+        *value = expression;
+
+        *i += 3;
+    }
+    return 1;
+}
+
 static expr_ty
 ast_for_dictcomp(struct compiling *c, const node *n)
 {
     expr_ty key, value;
     asdl_seq *comps;
-
-    assert(NCH(n) > 3);
-    REQ(CHILD(n, 1), COLON);
-
-    key = ast_for_expr(c, CHILD(n, 0));
-    if (!key)
+    int i = 0;
+
+    if (!ast_for_dictelement(c, n, &i, &key, &value))
         return NULL;
-    value = ast_for_expr(c, CHILD(n, 2));
-    if (!value)
-        return NULL;
-
-    comps = ast_for_comprehension(c, CHILD(n, 3));
+    assert(key);
+    assert(NCH(n) - i >= 1);
+
+    comps = ast_for_comprehension(c, CHILD(n, i));
     if (!comps)
         return NULL;
 
@@ -1785,6 +1824,39 @@
 }
 
 static expr_ty
+ast_for_dictdisplay(struct compiling *c, const node *n)
+{
+    int i;
+    int j;
+    int size;
+    asdl_seq *keys, *values;
+
+    size = (NCH(n) + 1) / 3; /* +1 in case no trailing comma */
+    keys = _Py_asdl_seq_new(size, c->c_arena);
+    if (!keys)
+        return NULL;
+
+    values = _Py_asdl_seq_new(size, c->c_arena);
+    if (!values)
+        return NULL;
+
+    j = 0;
+    for (i = 0; i < NCH(n); i++) {
+        expr_ty key, value;
+
+        if (!ast_for_dictelement(c, n, &i, &key, &value))
+            return NULL;
+        asdl_seq_SET(keys, j, key);
+        asdl_seq_SET(values, j, value);
+
+        j++;
+    }
+    keys->size = j;
+    values->size = j;
+    return Dict(keys, values, LINENO(n), n->n_col_offset, c->c_arena);
+}
+
+static expr_ty
 ast_for_genexp(struct compiling *c, const node *n)
 {
     assert(TYPE(n) == (testlist_comp) || TYPE(n) == (argument));
@@ -1805,6 +1877,27 @@
     return ast_for_itercomp(c, n, COMP_SETCOMP);
 }
 
+static expr_ty
+ast_for_setdisplay(struct compiling *c, const node *n)
+{
+    int i;
+    int size;
+    asdl_seq *elts;
+
+    assert(TYPE(n) == (dictorsetmaker));
+    size = (NCH(n) + 1) / 2; /* +1 in case no trailing comma */
+    elts = _Py_asdl_seq_new(size, c->c_arena);
+    if (!elts)
+        return NULL;
+    for (i = 0; i < NCH(n); i += 2) {
+        expr_ty expression;
+        expression = ast_for_expr(c, CHILD(n, i));
+        if (!expression)
+            return NULL;
+        asdl_seq_SET(elts, i / 2, expression);
+    }
+    return Set(elts, LINENO(n), n->n_col_offset, c->c_arena);
+}
 
 static expr_ty
 ast_for_atom(struct compiling *c, const node *n)
@@ -1915,62 +2008,42 @@
         else
             return ast_for_listcomp(c, ch);
     case LBRACE: {
-        /* dictorsetmaker: test ':' test (',' test ':' test)* [','] |
-         *                 test (gen_for | (',' test)* [','])  */
-        int i, size;
-        asdl_seq *keys, *values;
-
+        /* dictorsetmaker: ( ((test ':' test | '**' test)
+         *                    (comp_for | (',' (test ':' test | '**' test))* [','])) |
+         *                   ((test | '*' test)
+         *                    (comp_for | (',' (test | '*' test))* [','])) ) */
         ch = CHILD(n, 1);
         if (TYPE(ch) == RBRACE) {
-            /* it's an empty dict */
+            /* It's an empty dict. */
             return Dict(NULL, NULL, LINENO(n), n->n_col_offset, c->c_arena);
-        } else if (NCH(ch) == 1 || TYPE(CHILD(ch, 1)) == COMMA) {
-            /* it's a simple set */
-            asdl_seq *elts;
-            size = (NCH(ch) + 1) / 2; /* +1 in case no trailing comma */
-            elts = _Py_asdl_seq_new(size, c->c_arena);
-            if (!elts)
-                return NULL;
-            for (i = 0; i < NCH(ch); i += 2) {
-                expr_ty expression;
-                expression = ast_for_expr(c, CHILD(ch, i));
-                if (!expression)
+        }
+        else {
+            int is_dict = (TYPE(CHILD(ch, 0)) == DOUBLESTAR);
+            if (NCH(ch) == 1 ||
+                    (NCH(ch) > 1 &&
+                     TYPE(CHILD(ch, 1)) == COMMA)) {
+                /* It's a set display. */
+                return ast_for_setdisplay(c, ch);
+            }
+            else if (NCH(ch) > 1 &&
+                    TYPE(CHILD(ch, 1)) == comp_for) {
+                /* It's a set comprehension. */
+                return ast_for_setcomp(c, ch);
+            }
+            else if (NCH(ch) > 3 - is_dict &&
+                    TYPE(CHILD(ch, 3 - is_dict)) == comp_for) {
+                /* It's a dictionary comprehension. */
+                if (is_dict) {
+                    ast_error(c, n, "dict unpacking cannot be used in "
+                            "dict comprehension");
                     return NULL;
-                asdl_seq_SET(elts, i / 2, expression);
+                }
+                return ast_for_dictcomp(c, ch);
             }
-            return Set(elts, LINENO(n), n->n_col_offset, c->c_arena);
-        } else if (TYPE(CHILD(ch, 1)) == comp_for) {
-            /* it's a set comprehension */
-            return ast_for_setcomp(c, ch);
-        } else if (NCH(ch) > 3 && TYPE(CHILD(ch, 3)) == comp_for) {
-            return ast_for_dictcomp(c, ch);
-        } else {
-            /* it's a dict */
-            size = (NCH(ch) + 1) / 4; /* +1 in case no trailing comma */
-            keys = _Py_asdl_seq_new(size, c->c_arena);
-            if (!keys)
-                return NULL;
-
-            values = _Py_asdl_seq_new(size, c->c_arena);
-            if (!values)
-                return NULL;
-
-            for (i = 0; i < NCH(ch); i += 4) {
-                expr_ty expression;
-
-                expression = ast_for_expr(c, CHILD(ch, i));
-                if (!expression)
-                    return NULL;
-
-                asdl_seq_SET(keys, i / 4, expression);
-
-                expression = ast_for_expr(c, CHILD(ch, i + 2));
-                if (!expression)
-                    return NULL;
-
-                asdl_seq_SET(values, i / 4, expression);
+            else {
+                /* It's a dictionary display. */
+                return ast_for_dictdisplay(c, ch);
             }
-            return Dict(keys, values, LINENO(n), n->n_col_offset, c->c_arena);
         }
     }
     default:
@@ -2106,7 +2179,7 @@
     REQ(n, trailer);
     if (TYPE(CHILD(n, 0)) == LPAR) {
         if (NCH(n) == 2)
-            return Call(left_expr, NULL, NULL, NULL, NULL, LINENO(n),
+            return Call(left_expr, NULL, NULL, LINENO(n),
                         n->n_col_offset, c->c_arena);
         else
             return ast_for_call(c, CHILD(n, 1), left_expr);
@@ -2415,15 +2488,14 @@
 ast_for_call(struct compiling *c, const node *n, expr_ty func)
 {
     /*
-      arglist: (argument ',')* (argument [',']| '*' test [',' '**' test]
-               | '**' test)
-      argument: [test '='] (test) [comp_for]        # Really [keyword '='] test
+      arglist: argument (',' argument)*  [',']
+      argument: ( test [comp_for] | '*' test | test '=' test | '**' test )
     */
 
     int i, nargs, nkeywords, ngens;
+    int ndoublestars;
     asdl_seq *args;
     asdl_seq *keywords;
-    expr_ty vararg = NULL, kwarg = NULL;
 
     REQ(n, arglist);
 
@@ -2437,7 +2509,10 @@
                 nargs++;
             else if (TYPE(CHILD(ch, 1)) == comp_for)
                 ngens++;
+            else if (TYPE(CHILD(ch, 0)) == STAR)
+                nargs++;
             else
+                /* TYPE(CHILD(ch, 0)) == DOUBLESTAR or keyword argument */
                 nkeywords++;
         }
     }
@@ -2458,41 +2533,82 @@
     keywords = _Py_asdl_seq_new(nkeywords, c->c_arena);
     if (!keywords)
         return NULL;
-    nargs = 0;
-    nkeywords = 0;
+
+    nargs = 0;  /* positional arguments + iterable argument unpackings */
+    nkeywords = 0;  /* keyword arguments + keyword argument unpackings */
+    ndoublestars = 0;  /* just keyword argument unpackings */
     for (i = 0; i < NCH(n); i++) {
         node *ch = CHILD(n, i);
         if (TYPE(ch) == argument) {
             expr_ty e;
+            node *chch = CHILD(ch, 0);
             if (NCH(ch) == 1) {
-                if (nkeywords) {
-                    ast_error(c, CHILD(ch, 0),
-                              "non-keyword arg after keyword arg");
-                    return NULL;
+                if (TYPE(chch) == star_expr) {
+                    /* an iterable argument unpacking */
+                    expr_ty starred;
+                    if (ndoublestars) {
+                        ast_error(c, chch,
+                                "iterable argument unpacking follows "
+                                "keyword argument unpacking");
+                        return NULL;
+                    }
+                    e = ast_for_expr(c, CHILD(chch, 1));
+                    if (!e)
+                        return NULL;
+                    starred = Starred(e, Load, LINENO(chch),
+                            chch->n_col_offset,
+                            c->c_arena);
+                    if (!starred)
+                        return NULL;
+                    asdl_seq_SET(args, nargs++, starred);
                 }
-                if (vararg) {
-                    ast_error(c, CHILD(ch, 0),
-                              "only named arguments may follow *expression");
-                    return NULL;
+                else {
+                    /* a positional argument */
+                    if (nkeywords) {
+                        if (ndoublestars) {
+                            ast_error(c, chch,
+                                    "positional argument follows "
+                                    "keyword argument unpacking");
+                        }
+                        else {
+                            ast_error(c, chch,
+                                    "positional argument follows "
+                                    "keyword argument");
+                        }
+                        return NULL;
+                    }
+                    e = ast_for_expr(c, chch);
+                    if (!e)
+                        return NULL;
+                    asdl_seq_SET(args, nargs++, e);
                 }
-                e = ast_for_expr(c, CHILD(ch, 0));
+            }
+            else if (TYPE(chch) == DOUBLESTAR) {
+                /* a keyword argument unpacking */
+                keyword_ty kw;
+                i++;
+                e = ast_for_expr(c, CHILD(ch, 1));
                 if (!e)
                     return NULL;
-                asdl_seq_SET(args, nargs++, e);
+                kw = keyword(NULL, e, c->c_arena);
+                asdl_seq_SET(keywords, nkeywords++, kw);
+                ndoublestars++;
             }
             else if (TYPE(CHILD(ch, 1)) == comp_for) {
+                /* the lone generator expression */
                 e = ast_for_genexp(c, ch);
                 if (!e)
                     return NULL;
                 asdl_seq_SET(args, nargs++, e);
             }
             else {
+                /* a keyword argument */
                 keyword_ty kw;
                 identifier key, tmp;
                 int k;
 
-                /* CHILD(ch, 0) is test, but must be an identifier? */
-                e = ast_for_expr(c, CHILD(ch, 0));
+                /* chch is test, but must be an identifier? */
+                e = ast_for_expr(c, chch);
                 if (!e)
                     return NULL;
                 /* f(lambda x: x[0] = 3) ends up getting parsed with
@@ -2501,19 +2617,24 @@
                  * then is very confusing.
                  */
                 if (e->kind == Lambda_kind) {
-                    ast_error(c, CHILD(ch, 0), "lambda cannot contain assignment");
+                    ast_error(c, chch,
+                            "lambda cannot contain assignment");
                     return NULL;
-                } else if (e->kind != Name_kind) {
-                    ast_error(c, CHILD(ch, 0), "keyword can't be an expression");
+                }
+                else if (e->kind != Name_kind) {
+                    ast_error(c, chch,
+                            "keyword can't be an expression");
                     return NULL;
-                } else if (forbidden_name(c, e->v.Name.id, ch, 1)) {
+                }
+                else if (forbidden_name(c, e->v.Name.id, ch, 1)) {
                     return NULL;
                 }
                 key = e->v.Name.id;
                 for (k = 0; k < nkeywords; k++) {
                     tmp = ((keyword_ty)asdl_seq_GET(keywords, k))->arg;
-                    if (!PyUnicode_Compare(tmp, key)) {
-                        ast_error(c, CHILD(ch, 0), "keyword argument repeated");
+                    if (tmp && !PyUnicode_Compare(tmp, key)) {
+                        ast_error(c, chch,
+                                "keyword argument repeated");
                         return NULL;
                     }
                 }
@@ -2526,21 +2647,9 @@
                 asdl_seq_SET(keywords, nkeywords++, kw);
             }
         }
-        else if (TYPE(ch) == STAR) {
-            vararg = ast_for_expr(c, CHILD(n, i+1));
-            if (!vararg)
-                return NULL;
-            i++;
-        }
-        else if (TYPE(ch) == DOUBLESTAR) {
-            kwarg = ast_for_expr(c, CHILD(n, i+1));
-            if (!kwarg)
-                return NULL;
-            i++;
-        }
     }
 
-    return Call(func, args, keywords, vararg, kwarg, func->lineno, func->col_offset, c->c_arena);
+    return Call(func, args, keywords, func->lineno, func->col_offset, c->c_arena);
 }
 
 static expr_ty
@@ -3520,8 +3629,8 @@
             return NULL;
         if (forbidden_name(c, classname, CHILD(n, 3), 0))
             return NULL;
-        return ClassDef(classname, NULL, NULL, NULL, NULL, s, decorator_seq,
-                        LINENO(n), n->n_col_offset, c->c_arena);
+        return ClassDef(classname, NULL, NULL, s, decorator_seq, LINENO(n),
+                        n->n_col_offset, c->c_arena);
     }
 
     if (TYPE(CHILD(n, 3)) == RPAR) { /* class NAME '(' ')' ':' suite */
@@ -3533,8 +3642,8 @@
             return NULL;
         if (forbidden_name(c, classname, CHILD(n, 3), 0))
             return NULL;
-        return ClassDef(classname, NULL, NULL, NULL, NULL, s, decorator_seq,
-                        LINENO(n), n->n_col_offset, c->c_arena);
+        return ClassDef(classname, NULL, NULL, s, decorator_seq, LINENO(n),
+                        n->n_col_offset, c->c_arena);
     }
 
     /* class NAME '(' arglist ')' ':' suite */
@@ -3559,8 +3668,7 @@
     if (forbidden_name(c, classname, CHILD(n, 1), 0))
         return NULL;
 
-    return ClassDef(classname, call->v.Call.args, call->v.Call.keywords,
-                    call->v.Call.starargs, call->v.Call.kwargs, s,
+    return ClassDef(classname, call->v.Call.args, call->v.Call.keywords, s,
                     decorator_seq, LINENO(n), n->n_col_offset, c->c_arena);
 }
 
diff --git a/Python/ceval.c b/Python/ceval.c
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -12,8 +12,10 @@
 #include "Python.h"
 
 #include "code.h"
+#include "dictobject.h"
 #include "frameobject.h"
 #include "opcode.h"
+#include "setobject.h"
 #include "structmember.h"
 
 #include <ctype.h>
@@ -2379,6 +2381,43 @@
             DISPATCH();
         }
 
+        TARGET_WITH_IMPL(BUILD_TUPLE_UNPACK, _build_list_unpack)
+        TARGET(BUILD_LIST_UNPACK)
+        _build_list_unpack: {
+            int convert_to_tuple = opcode == BUILD_TUPLE_UNPACK;
+            int i;
+            PyObject *sum = PyList_New(0);
+            PyObject *return_value;
+            if (sum == NULL)
+                goto error;
+
+            for (i = oparg; i > 0; i--) {
+                PyObject *none_val;
+
+                none_val = _PyList_Extend((PyListObject *)sum, PEEK(i));
+                if (none_val == NULL) {
+                    Py_DECREF(sum);
+                    goto error;
+                }
+                Py_DECREF(none_val);
+            }
+
+            if (convert_to_tuple) {
+                return_value = PyList_AsTuple(sum);
+                Py_DECREF(sum);
+                if (return_value == NULL)
+                    goto error;
+            }
+            else {
+                return_value = sum;
+            }
+
+            while (oparg--)
+                Py_DECREF(POP());
+            PUSH(return_value);
+            DISPATCH();
+        }
+
         TARGET(BUILD_SET) {
             PyObject *set = PySet_New(NULL);
             int err = 0;
@@ -2398,14 +2437,127 @@
             DISPATCH();
         }
 
+        TARGET(BUILD_SET_UNPACK) {
+            int i;
+            PyObject *sum = PySet_New(NULL);
+            if (sum == NULL)
+                goto error;
+
+            for (i = oparg; i > 0; i--) {
+                if (_PySet_Update(sum, PEEK(i)) < 0) {
+                    Py_DECREF(sum);
+                    goto error;
+                }
+            }
+
+            while (oparg--)
+                Py_DECREF(POP());
+            PUSH(sum);
+            DISPATCH();
+        }
+
         TARGET(BUILD_MAP) {
             PyObject *map = _PyDict_NewPresized((Py_ssize_t)oparg);
             if (map == NULL)
                 goto error;
+            while (--oparg >= 0) {
+                int err;
+                PyObject *key = TOP();
+                PyObject *value = SECOND();
+                STACKADJ(-2);
+                err = PyDict_SetItem(map, key, value);
+                Py_DECREF(value);
+                Py_DECREF(key);
+                if (err != 0) {
+                    Py_DECREF(map);
+                    goto error;
+                }
+            }
             PUSH(map);
             DISPATCH();
         }
 
+        TARGET_WITH_IMPL(BUILD_MAP_UNPACK_WITH_CALL, _build_map_unpack)
+        TARGET(BUILD_MAP_UNPACK)
+        _build_map_unpack: {
+            int with_call = opcode == BUILD_MAP_UNPACK_WITH_CALL;
+            int num_maps;
+            int function_location;
+            int i;
+            PyObject *sum = PyDict_New();
+            if (sum == NULL)
+                goto error;
+            if (with_call) {
+                num_maps = oparg & 0xff;
+                function_location = (oparg>>8) & 0xff;
+            }
+            else {
+                num_maps = oparg;
+            }
+
+            for (i = num_maps; i > 0; i--) {
+                PyObject *arg = PEEK(i);
+                if (with_call) {
+                    PyObject *intersection = _PyDictView_Intersect(sum, arg);
+
+                    if (intersection == NULL) {
+                        if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
+                            PyObject *func = (
+                                    PEEK(function_location + num_maps));
+                            PyErr_Format(PyExc_TypeError,
+                                    "%.200s%.200s argument after ** "
+                                    "must be a mapping, not %.200s",
+                                    PyEval_GetFuncName(func),
+                                    PyEval_GetFuncDesc(func),
+                                    arg->ob_type->tp_name);
+                        }
+                        Py_DECREF(sum);
+                        goto error;
+                    }
+
+                    if (PySet_GET_SIZE(intersection)) {
+                        Py_ssize_t idx = 0;
+                        PyObject *key;
+                        PyObject *func = PEEK(function_location + num_maps);
+                        Py_hash_t hash;
+                        _PySet_NextEntry(intersection, &idx, &key, &hash);
+                        if (!PyUnicode_Check(key)) {
+                            PyErr_Format(PyExc_TypeError,
+                                    "%.200s%.200s keywords must be strings",
+                                    PyEval_GetFuncName(func),
+                                    PyEval_GetFuncDesc(func));
+                        } else {
+                            PyErr_Format(PyExc_TypeError,
+                                    "%.200s%.200s got multiple "
+                                    "values for keyword argument '%U'",
+                                    PyEval_GetFuncName(func),
+                                    PyEval_GetFuncDesc(func),
+                                    key);
+                        }
+                        Py_DECREF(intersection);
+                        Py_DECREF(sum);
+                        goto error;
+                    }
+                    Py_DECREF(intersection);
+                }
+
+                if (PyDict_Update(sum, arg) < 0) {
+                    if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
+                        PyErr_Format(PyExc_TypeError,
+                                "'%.200s' object is not a mapping",
+                                arg->ob_type->tp_name);
+                    }
+                    Py_DECREF(sum);
+                    goto error;
+                }
+            }
+
+            while (num_maps--)
+                Py_DECREF(POP());
+            PUSH(sum);
+            DISPATCH();
+        }
+
         TARGET(STORE_MAP) {
             PyObject *key = TOP();
             PyObject *value = SECOND();
@@ -3050,6 +3202,7 @@
             goto dispatch_opcode;
         }
 
+
 #if USE_COMPUTED_GOTOS
         _unknown_opcode:
 #endif
@@ -4557,6 +4710,12 @@
             kwdict = d;
         }
     }
+    if (nk > 0) {
+        kwdict = update_keyword_args(kwdict, nk, pp_stack, func);
+        if (kwdict == NULL)
+            goto ext_call_fail;
+    }
+
     if (flags & CALL_FLAG_VAR) {
         stararg = EXT_POP(*pp_stack);
         if (!PyTuple_Check(stararg)) {
@@ -4578,11 +4737,6 @@
         }
         nstar = PyTuple_GET_SIZE(stararg);
     }
-    if (nk > 0) {
-        kwdict = update_keyword_args(kwdict, nk, pp_stack, func);
-        if (kwdict == NULL)
-            goto ext_call_fail;
-    }
     callargs = update_star_args(na, nstar, stararg, pp_stack);
     if (callargs == NULL)
         goto ext_call_fail;
diff --git a/Python/compile.c b/Python/compile.c
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -195,9 +195,7 @@
 static int compiler_with(struct compiler *, stmt_ty, int);
 static int compiler_call_helper(struct compiler *c, Py_ssize_t n,
                                 asdl_seq *args,
-                                asdl_seq *keywords,
-                                expr_ty starargs,
-                                expr_ty kwargs);
+                                asdl_seq *keywords);
 static int compiler_try_except(struct compiler *, stmt_ty);
 static int compiler_set_qualname(struct compiler *);
 
@@ -672,7 +670,8 @@
         PyObject *mangled, *capsule;
 
         capsule = PyList_GET_ITEM(c->c_stack, stack_size - 1);
-        parent = (struct compiler_unit *)PyCapsule_GetPointer(capsule, COMPILER_CAPSULE_NAME_COMPILER_UNIT);
+        parent = (struct compiler_unit *)PyCapsule_GetPointer(
+                capsule, COMPILER_CAPSULE_NAME_COMPILER_UNIT);
         assert(parent);
 
         if (u->u_scope_type == COMPILER_SCOPE_FUNCTION || u->u_scope_type == COMPILER_SCOPE_CLASS) {
@@ -973,6 +972,13 @@
         case BUILD_LIST:
         case BUILD_SET:
             return 1-oparg;
+        case BUILD_LIST_UNPACK:
+        case BUILD_TUPLE_UNPACK:
+        case BUILD_SET_UNPACK:
+        case BUILD_MAP_UNPACK:
+            return 1 - oparg;
+        case BUILD_MAP_UNPACK_WITH_CALL:
+            return 1 - (oparg & 0xFF);
         case BUILD_MAP:
             return 1;
         case LOAD_ATTR:
@@ -1821,9 +1827,7 @@
     /* 5. generate the rest of the code for the call */
     if (!compiler_call_helper(c, 2,
                               s->v.ClassDef.bases,
-                              s->v.ClassDef.keywords,
-                              s->v.ClassDef.starargs,
-                              s->v.ClassDef.kwargs))
+                              s->v.ClassDef.keywords))
         return 0;
 
     /* 6. apply decorators */
@@ -2871,67 +2875,145 @@
 }
 
 static int
+starunpack_helper(struct compiler *c, asdl_seq *elts,
+                  int single_op, int inner_op, int outer_op)
+{
+    Py_ssize_t n = asdl_seq_LEN(elts);
+    Py_ssize_t i, nsubitems = 0, nseen = 0;
+    for (i = 0; i < n; i++) {
+        expr_ty elt = asdl_seq_GET(elts, i);
+        if (elt->kind == Starred_kind) {
+            if (nseen) {
+                ADDOP_I(c, inner_op, nseen);
+                nseen = 0;
+                nsubitems++;
+            }
+            VISIT(c, expr, elt->v.Starred.value);
+            nsubitems++;
+        }
+        else {
+            VISIT(c, expr, elt);
+            nseen++;
+        }
+    }
+    if (nsubitems) {
+        if (nseen) {
+            ADDOP_I(c, inner_op, nseen);
+            nsubitems++;
+        }
+        ADDOP_I(c, outer_op, nsubitems);
+    }
+    else
+        ADDOP_I(c, single_op, nseen);
+    return 1;
+}
+
+static int
+assignment_helper(struct compiler *c, asdl_seq *elts)
+{
+    Py_ssize_t n = asdl_seq_LEN(elts);
+    Py_ssize_t i;
+    int seen_star = 0;
+    for (i = 0; i < n; i++) {
+        expr_ty elt = asdl_seq_GET(elts, i);
+        if (elt->kind == Starred_kind && !seen_star) {
+            if ((i >= (1 << 8)) ||
+                (n-i-1 >= (INT_MAX >> 8)))
+                return compiler_error(c,
+                    "too many expressions in "
+                    "star-unpacking assignment");
+            ADDOP_I(c, UNPACK_EX, (i + ((n-i-1) << 8)));
+            seen_star = 1;
+            asdl_seq_SET(elts, i, elt->v.Starred.value);
+        }
+        else if (elt->kind == Starred_kind) {
+            return compiler_error(c,
+                "two starred expressions in assignment");
+        }
+    }
+    if (!seen_star) {
+        ADDOP_I(c, UNPACK_SEQUENCE, n);
+    }
+    VISIT_SEQ(c, expr, elts);
+    return 1;
+}
+
+static int
 compiler_list(struct compiler *c, expr_ty e)
 {
-    Py_ssize_t n = asdl_seq_LEN(e->v.List.elts);
+    asdl_seq *elts = e->v.List.elts;
     if (e->v.List.ctx == Store) {
-        int i, seen_star = 0;
-        for (i = 0; i < n; i++) {
-            expr_ty elt = asdl_seq_GET(e->v.List.elts, i);
-            if (elt->kind == Starred_kind && !seen_star) {
-                if ((i >= (1 << 8)) ||
-                    (n-i-1 >= (INT_MAX >> 8)))
-                    return compiler_error(c,
-                        "too many expressions in "
-                        "star-unpacking assignment");
-                ADDOP_I(c, UNPACK_EX, (i + ((n-i-1) << 8)));
-                seen_star = 1;
-                asdl_seq_SET(e->v.List.elts, i, elt->v.Starred.value);
-            } else if (elt->kind == Starred_kind) {
-                return compiler_error(c,
-                    "two starred expressions in assignment");
-            }
-        }
-        if (!seen_star) {
-            ADDOP_I(c, UNPACK_SEQUENCE, n);
-        }
+        return assignment_helper(c, elts);
     }
-    VISIT_SEQ(c, expr, e->v.List.elts);
-    if (e->v.List.ctx == Load) {
-        ADDOP_I(c, BUILD_LIST, n);
+    else if (e->v.List.ctx == Load) {
+        return starunpack_helper(c, elts,
+                                 BUILD_LIST, BUILD_TUPLE, BUILD_LIST_UNPACK);
     }
+    else
+        VISIT_SEQ(c, expr, elts);
     return 1;
 }
 
 static int
 compiler_tuple(struct compiler *c, expr_ty e)
 {
-    Py_ssize_t n = asdl_seq_LEN(e->v.Tuple.elts);
+    asdl_seq *elts = e->v.Tuple.elts;
     if (e->v.Tuple.ctx == Store) {
-        int i, seen_star = 0;
-        for (i = 0; i < n; i++) {
-            expr_ty elt = asdl_seq_GET(e->v.Tuple.elts, i);
-            if (elt->kind == Starred_kind && !seen_star) {
-                if ((i >= (1 << 8)) ||
-                    (n-i-1 >= (INT_MAX >> 8)))
-                    return compiler_error(c,
-                        "too many expressions in "
-                        "star-unpacking assignment");
-                ADDOP_I(c, UNPACK_EX, (i + ((n-i-1) << 8)));
-                seen_star = 1;
-                asdl_seq_SET(e->v.Tuple.elts, i, elt->v.Starred.value);
-            } else if (elt->kind == Starred_kind) {
-                return compiler_error(c,
-                    "two starred expressions in assignment");
-            }
+        return assignment_helper(c, elts);
+    }
+    else if (e->v.Tuple.ctx == Load) {
+        return starunpack_helper(c, elts,
+                                 BUILD_TUPLE, BUILD_TUPLE, BUILD_TUPLE_UNPACK);
+    }
+    else
+        VISIT_SEQ(c, expr, elts);
+    return 1;
+}
+
+static int
+compiler_set(struct compiler *c, expr_ty e)
+{
+    return starunpack_helper(c, e->v.Set.elts, BUILD_SET,
+                             BUILD_SET, BUILD_SET_UNPACK);
+}
+
+static int
+compiler_dict(struct compiler *c, expr_ty e)
+{
+    Py_ssize_t i, n, containers, elements;
+    int is_unpacking = 0;
+    n = asdl_seq_LEN(e->v.Dict.values);
+    containers = 0;
+    elements = 0;
+    for (i = 0; i < n; i++) {
+        is_unpacking = (expr_ty)asdl_seq_GET(e->v.Dict.keys, i) == NULL;
+        if (elements == 0xFFFF || (elements && is_unpacking)) {
+            ADDOP_I(c, BUILD_MAP, elements);
+            containers++;
+            elements = 0;
         }
-        if (!seen_star) {
-            ADDOP_I(c, UNPACK_SEQUENCE, n);
+        if (is_unpacking) {
+            VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.values, i));
+            containers++;
+        }
+        else {
+            VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.values, i));
+            VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.keys, i));
+            elements++;
         }
     }
-    VISIT_SEQ(c, expr, e->v.Tuple.elts);
-    if (e->v.Tuple.ctx == Load) {
-        ADDOP_I(c, BUILD_TUPLE, n);
+    if (elements || containers == 0) {
+        ADDOP_I(c, BUILD_MAP, elements);
+        containers++;
+    }
+    /* If there is more than one dict, they need to be merged into a new
+     * dict.  If there is one dict and it's an unpacking, then it needs
+     * to be copied into a new dict." */
+    while (containers > 1 || is_unpacking) {
+        int oparg = containers < 255 ? containers : 255;
+        ADDOP_I(c, BUILD_MAP_UNPACK, oparg);
+        containers -= (oparg - 1);
+        is_unpacking = 0;
     }
     return 1;
 }
@@ -2987,9 +3069,7 @@
     VISIT(c, expr, e->v.Call.func);
     return compiler_call_helper(c, 0,
                                 e->v.Call.args,
-                                e->v.Call.keywords,
-                                e->v.Call.starargs,
-                                e->v.Call.kwargs);
+                                e->v.Call.keywords);
 }
 
 /* shared code between compiler_call and compiler_class */
@@ -2997,26 +3077,102 @@
 compiler_call_helper(struct compiler *c,
                      Py_ssize_t n, /* Args already pushed */
                      asdl_seq *args,
-                     asdl_seq *keywords,
-                     expr_ty starargs,
-                     expr_ty kwargs)
+                     asdl_seq *keywords)
 {
     int code = 0;
-
-    n += asdl_seq_LEN(args);
-    VISIT_SEQ(c, expr, args);
-    if (keywords) {
-        VISIT_SEQ(c, keyword, keywords);
-        n |= asdl_seq_LEN(keywords) << 8;
+    Py_ssize_t nelts, i, nseen, nkw;
+
+    /* the number of tuples and dictionaries on the stack */
+    Py_ssize_t nsubargs = 0, nsubkwargs = 0;
+
+    nkw = 0;
+    nseen = 0;  /* the number of positional arguments on the stack */
+    nelts = asdl_seq_LEN(args);
+    for (i = 0; i < nelts; i++) {
+        expr_ty elt = asdl_seq_GET(args, i);
+        if (elt->kind == Starred_kind) {
+            /* A star-arg. If we've seen positional arguments,
+               pack the positional arguments into a
+               tuple. */
+            if (nseen) {
+                ADDOP_I(c, BUILD_TUPLE, nseen);
+                nseen = 0;
+                nsubargs++;
+            }
+            VISIT(c, expr, elt->v.Starred.value);
+            nsubargs++;
+        }
+        else if (nsubargs) {
+            /* We've seen star-args already, so we
+               count towards items-to-pack-into-tuple. */
+            VISIT(c, expr, elt);
+            nseen++;
+        }
+        else {
+            /* Positional arguments before star-arguments
+               are left on the stack. */
+            VISIT(c, expr, elt);
+            n++;
+        }
     }
-    if (starargs) {
-        VISIT(c, expr, starargs);
+    if (nseen) {
+        /* Pack up any trailing positional arguments. */
+        ADDOP_I(c, BUILD_TUPLE, nseen);
+        nsubargs++;
+    }
+    if (nsubargs) {
         code |= 1;
+        if (nsubargs > 1) {
+            /* If we ended up with more than one stararg, we need
+               to concatenate them into a single sequence. */
+            ADDOP_I(c, BUILD_LIST_UNPACK, nsubargs);
+        }
     }
-    if (kwargs) {
-        VISIT(c, expr, kwargs);
+
+    /* Same dance again for keyword arguments */
+    nseen = 0;  /* the number of keyword arguments on the stack following */
+    nelts = asdl_seq_LEN(keywords);
+    for (i = 0; i < nelts; i++) {
+        keyword_ty kw = asdl_seq_GET(keywords, i);
+        if (kw->arg == NULL) {
+            /* A keyword argument unpacking. */
+            if (nseen) {
+                ADDOP_I(c, BUILD_MAP, nseen);
+                nseen = 0;
+                nsubkwargs++;
+            }
+            VISIT(c, expr, kw->value);
+            nsubkwargs++;
+        }
+        else if (nsubkwargs) {
+            /* A keyword argument and we already have a dict. */
+            VISIT(c, expr, kw->value);
+            ADDOP_O(c, LOAD_CONST, kw->arg, consts);
+            nseen++;
+        }
+        else {
+            /* keyword argument */
+            VISIT(c, keyword, kw)
+            nkw++;
+        }
+    }
+    if (nseen) {
+        /* Pack up any trailing keyword arguments. */
+        ADDOP_I(c, BUILD_MAP, nseen);
+        nsubkwargs++;
+    }
+    if (nsubkwargs) {
         code |= 2;
+        if (nsubkwargs > 1) {
+            /* Pack it all up */
+            int function_pos = n + (code & 1) + nkw + 1;
+            ADDOP_I(c, BUILD_MAP_UNPACK_WITH_CALL, nsubkwargs | (function_pos << 8));
+        }
     }
+    assert(n < 1<<8);
+    assert(nkw < 1<<24);
+    n |= nkw << 8;
+
     switch (code) {
     case 0:
         ADDOP_I(c, CALL_FUNCTION, n);
@@ -3141,8 +3297,9 @@
 }
 
 static int
-compiler_comprehension(struct compiler *c, expr_ty e, int type, identifier name,
-                       asdl_seq *generators, expr_ty elt, expr_ty val)
+compiler_comprehension(struct compiler *c, expr_ty e, int type,
+                       identifier name, asdl_seq *generators, expr_ty elt,
+                       expr_ty val)
 {
     PyCodeObject *co = NULL;
     expr_ty outermost_iter;
@@ -3399,8 +3556,6 @@
 static int
 compiler_visit_expr(struct compiler *c, expr_ty e)
 {
-    Py_ssize_t i, n;
-
     /* If expr e has a different line number than the last expr/stmt,
        set a new line number for the next instruction.
     */
@@ -3427,23 +3582,9 @@
     case IfExp_kind:
         return compiler_ifexp(c, e);
     case Dict_kind:
-        n = asdl_seq_LEN(e->v.Dict.values);
-        /* BUILD_MAP parameter is only used to preallocate the dictionary,
-           it doesn't need to be exact */
-        ADDOP_I(c, BUILD_MAP, (n>0xFFFF ? 0xFFFF : n));
-        for (i = 0; i < n; i++) {
-            VISIT(c, expr,
-                (expr_ty)asdl_seq_GET(e->v.Dict.values, i));
-            VISIT(c, expr,
-                (expr_ty)asdl_seq_GET(e->v.Dict.keys, i));
-            ADDOP(c, STORE_MAP);
-        }
-        break;
+        return compiler_dict(c, e);
     case Set_kind:
-        n = asdl_seq_LEN(e->v.Set.elts);
-        VISIT_SEQ(c, expr, e->v.Set.elts);
-        ADDOP_I(c, BUILD_SET, n);
-        break;
+        return compiler_set(c, e);
     case GeneratorExp_kind:
         return compiler_genexp(c, e);
     case ListComp_kind:
@@ -3554,7 +3695,7 @@
                 "starred assignment target must be in a list or tuple");
         default:
             return compiler_error(c,
-                "can use starred expression only as assignment target");
+                "can't use starred expression here");
         }
         break;
     case Name_kind:
diff --git a/Python/graminit.c b/Python/graminit.c
--- a/Python/graminit.c
+++ b/Python/graminit.c
@@ -1569,60 +1569,78 @@
     {2, arcs_71_1},
     {2, arcs_71_2},
 };
-static arc arcs_72_0[1] = {
+static arc arcs_72_0[3] = {
     {24, 1},
+    {32, 2},
+    {48, 3},
 };
 static arc arcs_72_1[4] = {
-    {25, 2},
-    {159, 3},
-    {30, 4},
+    {25, 4},
+    {159, 5},
+    {30, 6},
     {0, 1},
 };
 static arc arcs_72_2[1] = {
-    {24, 5},
+    {104, 7},
 };
-static arc arcs_72_3[1] = {
+static arc arcs_72_3[3] = {
+    {159, 5},
+    {30, 6},
     {0, 3},
 };
-static arc arcs_72_4[2] = {
-    {24, 6},
-    {0, 4},
+static arc arcs_72_4[1] = {
+    {24, 7},
 };
-static arc arcs_72_5[3] = {
-    {159, 3},
-    {30, 7},
+static arc arcs_72_5[1] = {
     {0, 5},
 };
-static arc arcs_72_6[2] = {
-    {30, 4},
+static arc arcs_72_6[3] = {
+    {24, 8},
+    {48, 8},
     {0, 6},
 };
-static arc arcs_72_7[2] = {
-    {24, 8},
+static arc arcs_72_7[3] = {
+    {159, 5},
+    {30, 9},
     {0, 7},
 };
-static arc arcs_72_8[1] = {
-    {25, 9},
+static arc arcs_72_8[2] = {
+    {30, 6},
+    {0, 8},
 };
-static arc arcs_72_9[1] = {
+static arc arcs_72_9[3] = {
     {24, 10},
+    {32, 11},
+    {0, 9},
 };
-static arc arcs_72_10[2] = {
-    {30, 7},
-    {0, 10},
+static arc arcs_72_10[1] = {
+    {25, 12},
 };
-static state states_72[11] = {
-    {1, arcs_72_0},
+static arc arcs_72_11[1] = {
+    {104, 13},
+};
+static arc arcs_72_12[1] = {
+    {24, 13},
+};
+static arc arcs_72_13[2] = {
+    {30, 9},
+    {0, 13},
+};
+static state states_72[14] = {
+    {3, arcs_72_0},
     {4, arcs_72_1},
     {1, arcs_72_2},
-    {1, arcs_72_3},
-    {2, arcs_72_4},
-    {3, arcs_72_5},
-    {2, arcs_72_6},
-    {2, arcs_72_7},
-    {1, arcs_72_8},
-    {1, arcs_72_9},
-    {2, arcs_72_10},
+    {3, arcs_72_3},
+    {1, arcs_72_4},
+    {1, arcs_72_5},
+    {3, arcs_72_6},
+    {3, arcs_72_7},
+    {2, arcs_72_8},
+    {3, arcs_72_9},
+    {1, arcs_72_10},
+    {1, arcs_72_11},
+    {1, arcs_72_12},
+    {2, arcs_72_13},
 };
 static arc arcs_73_0[1] = {
     {163, 1},
@@ -1660,67 +1678,47 @@
     {1, arcs_73_6},
     {1, arcs_73_7},
 };
-static arc arcs_74_0[3] = {
+static arc arcs_74_0[1] = {
     {164, 1},
-    {31, 2},
-    {32, 3},
 };
 static arc arcs_74_1[2] = {
-    {30, 4},
+    {30, 2},
     {0, 1},
 };
-static arc arcs_74_2[1] = {
-    {24, 5},
+static arc arcs_74_2[2] = {
+    {164, 1},
+    {0, 2},
 };
-static arc arcs_74_3[1] = {
-    {24, 6},
+static state states_74[3] = {
+    {1, arcs_74_0},
+    {2, arcs_74_1},
+    {2, arcs_74_2},
 };
-static arc arcs_74_4[4] = {
-    {164, 1},
-    {31, 2},
-    {32, 3},
-    {0, 4},
-};
-static arc arcs_74_5[2] = {
-    {30, 7},
-    {0, 5},
-};
-static arc arcs_74_6[1] = {
-    {0, 6},
-};
-static arc arcs_74_7[2] = {
-    {164, 5},
-    {32, 3},
-};
-static state states_74[8] = {
-    {3, arcs_74_0},
-    {2, arcs_74_1},
-    {1, arcs_74_2},
-    {1, arcs_74_3},
-    {4, arcs_74_4},
-    {2, arcs_74_5},
-    {1, arcs_74_6},
-    {2, arcs_74_7},
-};
-static arc arcs_75_0[1] = {
+static arc arcs_75_0[3] = {
     {24, 1},
+    {32, 2},
+    {48, 3},
 };
 static arc arcs_75_1[3] = {
-    {159, 2},
-    {29, 3},
+    {159, 3},
+    {29, 4},
     {0, 1},
 };
 static arc arcs_75_2[1] = {
-    {0, 2},
+    {104, 3},
 };
 static arc arcs_75_3[1] = {
-    {24, 2},
+    {0, 3},
 };
-static state states_75[4] = {
-    {1, arcs_75_0},
+static arc arcs_75_4[1] = {
+    {24, 3},
+};
+static state states_75[5] = {
+    {3, arcs_75_0},
     {3, arcs_75_1},
     {1, arcs_75_2},
     {1, arcs_75_3},
+    {1, arcs_75_4},
 };
 static arc arcs_76_0[2] = {
     {159, 1},
@@ -1964,14 +1962,14 @@
      "\000\040\040\200\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"},
     {327, "testlist", 0, 3, states_71,
      "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"},
-    {328, "dictorsetmaker", 0, 11, states_72,
-     "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"},
+    {328, "dictorsetmaker", 0, 14, states_72,
+     "\000\040\040\200\001\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"},
     {329, "classdef", 0, 8, states_73,
      "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000"},
-    {330, "arglist", 0, 8, states_74,
+    {330, "arglist", 0, 3, states_74,
      "\000\040\040\200\001\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"},
-    {331, "argument", 0, 4, states_75,
-     "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"},
+    {331, "argument", 0, 5, states_75,
+     "\000\040\040\200\001\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"},
     {332, "comp_iter", 0, 2, states_76,
      "\000\000\000\000\000\000\000\000\000\000\000\040\002\000\000\000\000\000\000\000\000\000"},
     {333, "comp_for", 0, 6, states_77,
diff --git a/Python/importlib_external.h b/Python/importlib_external.h
--- a/Python/importlib_external.h
+++ b/Python/importlib_external.h
@@ -261,7 +261,7 @@
     5,0,0,0,218,13,95,119,114,105,116,101,95,97,116,111,
     109,105,99,99,0,0,0,115,26,0,0,0,0,5,24,1,
     9,1,33,1,3,3,21,1,19,1,20,1,13,1,3,1,
-    17,1,13,1,5,1,114,55,0,0,0,105,248,12,0,0,
+    17,1,13,1,5,1,114,55,0,0,0,105,2,13,0,0,
     233,2,0,0,0,114,13,0,0,0,115,2,0,0,0,13,
     10,90,11,95,95,112,121,99,97,99,104,101,95,95,122,4,
     111,112,116,45,122,3,46,112,121,122,4,46,112,121,99,78,
@@ -371,7 +371,7 @@
     90,15,97,108,109,111,115,116,95,102,105,108,101,110,97,109,
     101,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
     218,17,99,97,99,104,101,95,102,114,111,109,95,115,111,117,
-    114,99,101,240,0,0,0,115,46,0,0,0,0,18,12,1,
+    114,99,101,241,0,0,0,115,46,0,0,0,0,18,12,1,
     9,1,7,1,12,1,6,1,12,1,18,1,18,1,24,1,
     12,1,12,1,12,1,36,1,12,1,18,1,9,2,12,1,
     12,1,12,1,12,1,21,1,21,1,114,79,0,0,0,99,
@@ -450,7 +450,7 @@
     118,101,108,90,13,98,97,115,101,95,102,105,108,101,110,97,
     109,101,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
     0,218,17,115,111,117,114,99,101,95,102,114,111,109,95,99,
-    97,99,104,101,28,1,0,0,115,44,0,0,0,0,9,18,
+    97,99,104,101,29,1,0,0,115,44,0,0,0,0,9,18,
     1,12,1,18,1,18,1,12,1,9,1,15,1,15,1,12,
     1,9,1,15,1,12,1,22,1,15,1,9,1,12,1,22,
     1,12,1,9,1,12,1,19,1,114,85,0,0,0,99,1,
@@ -487,7 +487,7 @@
     0,114,36,0,0,0,90,9,101,120,116,101,110,115,105,111,
     110,218,11,115,111,117,114,99,101,95,112,97,116,104,114,4,
     0,0,0,114,4,0,0,0,114,5,0,0,0,218,15,95,
-    103,101,116,95,115,111,117,114,99,101,102,105,108,101,61,1,
+    103,101,116,95,115,111,117,114,99,101,102,105,108,101,62,1,
     0,0,115,20,0,0,0,0,7,18,1,4,1,24,1,35,
     1,4,1,3,1,16,1,19,1,21,1,114,91,0,0,0,
     99,1,0,0,0,0,0,0,0,1,0,0,0,11,0,0,
@@ -502,7 +502,7 @@
     0,114,79,0,0,0,114,66,0,0,0,114,74,0,0,0,
     41,1,218,8,102,105,108,101,110,97,109,101,114,4,0,0,
     0,114,4,0,0,0,114,5,0,0,0,218,11,95,103,101,
-    116,95,99,97,99,104,101,100,80,1,0,0,115,16,0,0,
+    116,95,99,97,99,104,101,100,81,1,0,0,115,16,0,0,
     0,0,1,21,1,3,1,14,1,13,1,8,1,21,1,4,
     2,114,95,0,0,0,99,1,0,0,0,0,0,0,0,2,
     0,0,0,11,0,0,0,67,0,0,0,115,60,0,0,0,
@@ -517,7 +517,7 @@
     39,0,0,0,114,41,0,0,0,114,40,0,0,0,41,2,
     114,35,0,0,0,114,42,0,0,0,114,4,0,0,0,114,
     4,0,0,0,114,5,0,0,0,218,10,95,99,97,108,99,
-    95,109,111,100,101,92,1,0,0,115,12,0,0,0,0,2,
+    95,109,111,100,101,93,1,0,0,115,12,0,0,0,0,2,
     3,1,19,1,13,1,11,3,10,1,114,97,0,0,0,218,
     9,118,101,114,98,111,115,105,116,121,114,29,0,0,0,99,
     1,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,
@@ -538,7 +538,7 @@
     116,100,101,114,114,41,3,114,75,0,0,0,114,98,0,0,
     0,218,4,97,114,103,115,114,4,0,0,0,114,4,0,0,
     0,114,5,0,0,0,218,16,95,118,101,114,98,111,115,101,
-    95,109,101,115,115,97,103,101,104,1,0,0,115,8,0,0,
+    95,109,101,115,115,97,103,101,105,1,0,0,115,8,0,0,
     0,0,2,18,1,15,1,10,1,114,105,0,0,0,99,1,
     0,0,0,0,0,0,0,3,0,0,0,11,0,0,0,3,
     0,0,0,115,84,0,0,0,100,1,0,135,0,0,102,1,
@@ -577,7 +577,7 @@
     6,107,119,97,114,103,115,41,1,218,6,109,101,116,104,111,
     100,114,4,0,0,0,114,5,0,0,0,218,19,95,99,104,
     101,99,107,95,110,97,109,101,95,119,114,97,112,112,101,114,
-    120,1,0,0,115,10,0,0,0,0,1,12,1,12,1,15,
+    121,1,0,0,115,10,0,0,0,0,1,12,1,12,1,15,
     1,22,1,122,40,95,99,104,101,99,107,95,110,97,109,101,
     46,60,108,111,99,97,108,115,62,46,95,99,104,101,99,107,
     95,110,97,109,101,95,119,114,97,112,112,101,114,99,2,0,
@@ -596,7 +596,7 @@
     218,8,95,95,100,105,99,116,95,95,218,6,117,112,100,97,
     116,101,41,3,90,3,110,101,119,90,3,111,108,100,114,52,
     0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
-    0,0,218,5,95,119,114,97,112,130,1,0,0,115,8,0,
+    0,0,218,5,95,119,114,97,112,131,1,0,0,115,8,0,
     0,0,0,1,25,1,15,1,29,1,122,26,95,99,104,101,
     99,107,95,110,97,109,101,46,60,108,111,99,97,108,115,62,
     46,95,119,114,97,112,41,3,218,10,95,98,111,111,116,115,
@@ -604,7 +604,7 @@
     114,114,111,114,41,3,114,109,0,0,0,114,110,0,0,0,
     114,120,0,0,0,114,4,0,0,0,41,1,114,109,0,0,
     0,114,5,0,0,0,218,11,95,99,104,101,99,107,95,110,
-    97,109,101,112,1,0,0,115,14,0,0,0,0,8,21,6,
+    97,109,101,113,1,0,0,115,14,0,0,0,0,8,21,6,
     3,1,13,1,13,2,17,5,13,1,114,123,0,0,0,99,
     2,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,
     67,0,0,0,115,84,0,0,0,124,0,0,106,0,0,124,
@@ -633,7 +633,7 @@
     97,109,101,218,6,108,111,97,100,101,114,218,8,112,111,114,
     116,105,111,110,115,218,3,109,115,103,114,4,0,0,0,114,
     4,0,0,0,114,5,0,0,0,218,17,95,102,105,110,100,
-    95,109,111,100,117,108,101,95,115,104,105,109,139,1,0,0,
+    95,109,111,100,117,108,101,95,115,104,105,109,140,1,0,0,
     115,10,0,0,0,0,10,21,1,24,1,6,1,29,1,114,
     130,0,0,0,99,2,0,0,0,0,0,0,0,4,0,0,
     0,3,0,0,0,67,0,0,0,115,87,0,0,0,116,0,
@@ -657,7 +657,7 @@
     4,114,108,0,0,0,114,126,0,0,0,218,4,115,112,101,
     99,218,6,109,111,100,117,108,101,114,4,0,0,0,114,4,
     0,0,0,114,5,0,0,0,218,17,95,108,111,97,100,95,
-    109,111,100,117,108,101,95,115,104,105,109,157,1,0,0,115,
+    109,111,100,117,108,101,95,115,104,105,109,158,1,0,0,115,
     12,0,0,0,0,6,15,1,15,1,13,1,16,1,11,2,
     114,135,0,0,0,99,4,0,0,0,0,0,0,0,11,0,
     0,0,19,0,0,0,67,0,0,0,115,228,1,0,0,105,
@@ -742,7 +742,7 @@
     115,111,117,114,99,101,95,115,105,122,101,114,4,0,0,0,
     114,4,0,0,0,114,5,0,0,0,218,25,95,118,97,108,
     105,100,97,116,101,95,98,121,116,101,99,111,100,101,95,104,
-    101,97,100,101,114,172,1,0,0,115,76,0,0,0,0,11,
+    101,97,100,101,114,173,1,0,0,115,76,0,0,0,0,11,
     6,1,12,1,13,3,6,1,12,1,10,1,16,1,16,1,
     16,1,12,1,18,1,10,1,18,1,18,1,15,1,10,1,
     15,1,18,1,15,1,10,1,12,1,12,1,3,1,20,1,
@@ -773,7 +773,7 @@
     0,114,89,0,0,0,114,90,0,0,0,218,4,99,111,100,
     101,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
     218,17,95,99,111,109,112,105,108,101,95,98,121,116,101,99,
-    111,100,101,227,1,0,0,115,16,0,0,0,0,2,15,1,
+    111,100,101,228,1,0,0,115,16,0,0,0,0,2,15,1,
     15,1,13,1,12,1,16,1,4,2,18,1,114,152,0,0,
     0,114,59,0,0,0,99,3,0,0,0,0,0,0,0,4,
     0,0,0,3,0,0,0,67,0,0,0,115,76,0,0,0,
@@ -793,7 +793,7 @@
     0,0,114,138,0,0,0,114,145,0,0,0,114,53,0,0,
     0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
     218,17,95,99,111,100,101,95,116,111,95,98,121,116,101,99,
-    111,100,101,239,1,0,0,115,10,0,0,0,0,3,12,1,
+    111,100,101,240,1,0,0,115,10,0,0,0,0,3,12,1,
     19,1,19,1,22,1,114,155,0,0,0,99,1,0,0,0,
     0,0,0,0,5,0,0,0,4,0,0,0,67,0,0,0,
     115,89,0,0,0,100,1,0,100,2,0,108,0,0,125,1,
@@ -821,7 +821,7 @@
     97,100,108,105,110,101,218,8,101,110,99,111,100,105,110,103,
     90,15,110,101,119,108,105,110,101,95,100,101,99,111,100,101,
     114,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
-    218,13,100,101,99,111,100,101,95,115,111,117,114,99,101,249,
+    218,13,100,101,99,111,100,101,95,115,111,117,114,99,101,250,
     1,0,0,115,10,0,0,0,0,5,12,1,18,1,15,1,
     18,1,114,160,0,0,0,218,6,111,114,105,103,105,110,218,
     10,105,115,95,112,97,99,107,97,103,101,99,2,0,0,0,
@@ -852,7 +852,7 @@
     101,83,112,101,99,41,5,114,106,0,0,0,114,127,0,0,
     0,114,161,0,0,0,114,162,0,0,0,90,6,115,101,97,
     114,99,104,114,4,0,0,0,114,4,0,0,0,114,5,0,
-    0,0,114,131,0,0,0,7,2,0,0,115,28,0,0,0,
+    0,0,114,131,0,0,0,8,2,0,0,115,28,0,0,0,
     0,2,15,1,12,1,16,1,18,1,15,1,7,2,12,1,
     15,1,3,1,19,1,13,1,14,3,6,2,114,131,0,0,
     0,114,127,0,0,0,114,164,0,0,0,99,2,0,0,0,
@@ -914,7 +914,7 @@
     100,101,114,95,99,108,97,115,115,218,8,115,117,102,102,105,
     120,101,115,114,162,0,0,0,90,7,100,105,114,110,97,109,
     101,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
-    114,165,0,0,0,32,2,0,0,115,60,0,0,0,0,12,
+    114,165,0,0,0,33,2,0,0,115,60,0,0,0,0,12,
     12,4,6,1,15,2,3,1,19,1,13,1,5,8,24,1,
     9,3,12,1,22,1,21,1,15,1,9,1,5,2,4,3,
     12,2,15,1,3,1,19,1,13,1,5,2,6,1,12,2,
@@ -954,7 +954,7 @@
     79,67,65,76,95,77,65,67,72,73,78,69,41,2,218,3,
     99,108,115,218,3,107,101,121,114,4,0,0,0,114,4,0,
     0,0,114,5,0,0,0,218,14,95,111,112,101,110,95,114,
-    101,103,105,115,116,114,121,110,2,0,0,115,8,0,0,0,
+    101,103,105,115,116,114,121,111,2,0,0,115,8,0,0,0,
     0,2,3,1,23,1,13,1,122,36,87,105,110,100,111,119,
     115,82,101,103,105,115,116,114,121,70,105,110,100,101,114,46,
     95,111,112,101,110,95,114,101,103,105,115,116,114,121,99,2,
@@ -981,7 +981,7 @@
     0,0,0,90,4,104,107,101,121,218,8,102,105,108,101,112,
     97,116,104,114,4,0,0,0,114,4,0,0,0,114,5,0,
     0,0,218,16,95,115,101,97,114,99,104,95,114,101,103,105,
-    115,116,114,121,117,2,0,0,115,22,0,0,0,0,2,9,
+    115,116,114,121,118,2,0,0,115,22,0,0,0,0,2,9,
     1,12,2,9,1,15,1,22,1,3,1,18,1,28,1,13,
     1,9,1,122,38,87,105,110,100,111,119,115,82,101,103,105,
     115,116,114,121,70,105,110,100,101,114,46,95,115,101,97,114,
@@ -1004,7 +1004,7 @@
     6,116,97,114,103,101,116,114,181,0,0,0,114,127,0,0,
     0,114,171,0,0,0,114,133,0,0,0,114,4,0,0,0,
     114,4,0,0,0,114,5,0,0,0,218,9,102,105,110,100,
-    95,115,112,101,99,132,2,0,0,115,24,0,0,0,0,2,
+    95,115,112,101,99,133,2,0,0,115,24,0,0,0,0,2,
     15,1,12,1,4,1,3,1,14,1,13,1,9,1,22,1,
     21,1,21,1,9,1,122,31,87,105,110,100,111,119,115,82,
     101,103,105,115,116,114,121,70,105,110,100,101,114,46,102,105,
@@ -1023,7 +1023,7 @@
     2,114,184,0,0,0,114,127,0,0,0,41,4,114,174,0,
     0,0,114,126,0,0,0,114,35,0,0,0,114,133,0,0,
     0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
-    218,11,102,105,110,100,95,109,111,100,117,108,101,147,2,0,
+    218,11,102,105,110,100,95,109,111,100,117,108,101,148,2,0,
     0,115,8,0,0,0,0,7,18,1,12,1,7,2,122,33,
     87,105,110,100,111,119,115,82,101,103,105,115,116,114,121,70,
     105,110,100,101,114,46,102,105,110,100,95,109,111,100,117,108,
@@ -1033,7 +1033,7 @@
     104,111,100,114,176,0,0,0,114,182,0,0,0,114,184,0,
     0,0,114,185,0,0,0,114,4,0,0,0,114,4,0,0,
     0,114,4,0,0,0,114,5,0,0,0,114,172,0,0,0,
-    98,2,0,0,115,20,0,0,0,12,2,6,3,6,3,6,
+    99,2,0,0,115,20,0,0,0,12,2,6,3,6,3,6,
     2,6,2,18,7,18,15,3,1,21,14,3,1,114,172,0,
     0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,
     0,0,0,64,0,0,0,115,64,0,0,0,101,0,0,90,
@@ -1070,7 +1070,7 @@
     114,126,0,0,0,114,94,0,0,0,90,13,102,105,108,101,
     110,97,109,101,95,98,97,115,101,90,9,116,97,105,108,95,
     110,97,109,101,114,4,0,0,0,114,4,0,0,0,114,5,
-    0,0,0,114,162,0,0,0,166,2,0,0,115,8,0,0,
+    0,0,0,114,162,0,0,0,167,2,0,0,115,8,0,0,
     0,0,3,25,1,22,1,19,1,122,24,95,76,111,97,100,
     101,114,66,97,115,105,99,115,46,105,115,95,112,97,99,107,
     97,103,101,99,2,0,0,0,0,0,0,0,2,0,0,0,
@@ -1080,7 +1080,7 @@
     111,100,117,108,101,32,99,114,101,97,116,105,111,110,46,78,
     114,4,0,0,0,41,2,114,108,0,0,0,114,133,0,0,
     0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
-    218,13,99,114,101,97,116,101,95,109,111,100,117,108,101,174,
+    218,13,99,114,101,97,116,101,95,109,111,100,117,108,101,175,
     2,0,0,115,0,0,0,0,122,27,95,76,111,97,100,101,
     114,66,97,115,105,99,115,46,99,114,101,97,116,101,95,109,
     111,100,117,108,101,99,2,0,0,0,0,0,0,0,3,0,
@@ -1102,14 +1102,14 @@
     0,0,0,41,3,114,108,0,0,0,114,134,0,0,0,114,
     151,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
     0,0,0,218,11,101,120,101,99,95,109,111,100,117,108,101,
-    177,2,0,0,115,10,0,0,0,0,2,18,1,12,1,9,
+    178,2,0,0,115,10,0,0,0,0,2,18,1,12,1,9,
     1,15,1,122,25,95,76,111,97,100,101,114,66,97,115,105,
     99,115,46,101,120,101,99,95,109,111,100,117,108,101,78,41,
     9,114,112,0,0,0,114,111,0,0,0,114,113,0,0,0,
     114,114,0,0,0,114,162,0,0,0,114,189,0,0,0,114,
     193,0,0,0,114,135,0,0,0,218,11,108,111,97,100,95,
     109,111,100,117,108,101,114,4,0,0,0,114,4,0,0,0,
-    114,4,0,0,0,114,5,0,0,0,114,187,0,0,0,161,
+    114,4,0,0,0,114,5,0,0,0,114,187,0,0,0,162,
     2,0,0,115,10,0,0,0,12,3,6,2,12,8,12,3,
     12,8,114,187,0,0,0,99,0,0,0,0,0,0,0,0,
     0,0,0,0,4,0,0,0,64,0,0,0,115,106,0,0,
@@ -1137,1091 +1137,1153 @@
     32,32,32,32,32,78,41,1,218,7,73,79,69,114,114,111,
     114,41,2,114,108,0,0,0,114,35,0,0,0,114,4,0,
     0,0,114,4,0,0,0,114,5,0,0,0,218,10,112,97,
-    116,104,95,109,116,105,109,101,190,2,0,0,115,2,0,0,
+    116,104,95,109,116,105,109,101,191,2,0,0,115,2,0,0,
     0,0,6,122,23,83,111,117,114,99,101,76,111,97,100,101,
     114,46,112,97,116,104,95,109,116,105,109,101,99,2,0,0,
     0,0,0,0,0,2,0,0,0,3,0,0,0,67,0,0,
-    0,115,20,0,0,0,105,1,0,124,0,0,106,0,0,124,
-    1,0,131,1,0,100,1,0,54,83,41,2,97,170,1,0,
-    0,79,112,116,105,111,110,97,108,32,109,101,116,104,111,100,
-    32,114,101,116,117,114,110,105,110,103,32,97,32,109,101,116,
-    97,100,97,116,97,32,100,105,99,116,32,102,111,114,32,116,
-    104,101,32,115,112,101,99,105,102,105,101,100,32,112,97,116,
-    104,10,32,32,32,32,32,32,32,32,116,111,32,98,121,32,
-    116,104,101,32,112,97,116,104,32,40,115,116,114,41,46,10,
-    32,32,32,32,32,32,32,32,80,111,115,115,105,98,108,101,
-    32,107,101,121,115,58,10,32,32,32,32,32,32,32,32,45,
-    32,39,109,116,105,109,101,39,32,40,109,97,110,100,97,116,
-    111,114,121,41,32,105,115,32,116,104,101,32,110,117,109,101,
-    114,105,99,32,116,105,109,101,115,116,97,109,112,32,111,102,
-    32,108,97,115,116,32,115,111,117,114,99,101,10,32,32,32,
-    32,32,32,32,32,32,32,99,111,100,101,32,109,111,100,105,
-    102,105,99,97,116,105,111,110,59,10,32,32,32,32,32,32,
-    32,32,45,32,39,115,105,122,101,39,32,40,111,112,116,105,
-    111,110,97,108,41,32,105,115,32,116,104,101,32,115,105,122,
-    101,32,105,110,32,98,121,116,101,115,32,111,102,32,116,104,
-    101,32,115,111,117,114,99,101,32,99,111,100,101,46,10,10,
-    32,32,32,32,32,32,32,32,73,109,112,108,101,109,101,110,
-    116,105,110,103,32,116,104,105,115,32,109,101,116,104,111,100,
-    32,97,108,108,111,119,115,32,116,104,101,32,108,111,97,100,
-    101,114,32,116,111,32,114,101,97,100,32,98,121,116,101,99,
-    111,100,101,32,102,105,108,101,115,46,10,32,32,32,32,32,
-    32,32,32,82,97,105,115,101,115,32,73,79,69,114,114,111,
-    114,32,119,104,101,110,32,116,104,101,32,112,97,116,104,32,
-    99,97,110,110,111,116,32,98,101,32,104,97,110,100,108,101,
-    100,46,10,32,32,32,32,32,32,32,32,114,138,0,0,0,
-    41,1,114,197,0,0,0,41,2,114,108,0,0,0,114,35,
+    0,115,19,0,0,0,124,0,0,106,0,0,124,1,0,131,
+    1,0,100,1,0,105,1,0,83,41,2,97,170,1,0,0,
+    79,112,116,105,111,110,97,108,32,109,101,116,104,111,100,32,
+    114,101,116,117,114,110,105,110,103,32,97,32,109,101,116,97,
+    100,97,116,97,32,100,105,99,116,32,102,111,114,32,116,104,
+    101,32,115,112,101,99,105,102,105,101,100,32,112,97,116,104,
+    10,32,32,32,32,32,32,32,32,116,111,32,98,121,32,116,
+    104,101,32,112,97,116,104,32,40,115,116,114,41,46,10,32,
+    32,32,32,32,32,32,32,80,111,115,115,105,98,108,101,32,
+    107,101,121,115,58,10,32,32,32,32,32,32,32,32,45,32,
+    39,109,116,105,109,101,39,32,40,109,97,110,100,97,116,111,
+    114,121,41,32,105,115,32,116,104,101,32,110,117,109,101,114,
+    105,99,32,116,105,109,101,115,116,97,109,112,32,111,102,32,
+    108,97,115,116,32,115,111,117,114,99,101,10,32,32,32,32,
+    32,32,32,32,32,32,99,111,100,101,32,109,111,100,105,102,
+    105,99,97,116,105,111,110,59,10,32,32,32,32,32,32,32,
+    32,45,32,39,115,105,122,101,39,32,40,111,112,116,105,111,
+    110,97,108,41,32,105,115,32,116,104,101,32,115,105,122,101,
+    32,105,110,32,98,121,116,101,115,32,111,102,32,116,104,101,
+    32,115,111,117,114,99,101,32,99,111,100,101,46,10,10,32,
+    32,32,32,32,32,32,32,73,109,112,108,101,109,101,110,116,
+    105,110,103,32,116,104,105,115,32,109,101,116,104,111,100,32,
+    97,108,108,111,119,115,32,116,104,101,32,108,111,97,100,101,
+    114,32,116,111,32,114,101,97,100,32,98,121,116,101,99,111,
+    100,101,32,102,105,108,101,115,46,10,32,32,32,32,32,32,
+    32,32,82,97,105,115,101,115,32,73,79,69,114,114,111,114,
+    32,119,104,101,110,32,116,104,101,32,112,97,116,104,32,99,
+    97,110,110,111,116,32,98,101,32,104,97,110,100,108,101,100,
+    46,10,32,32,32,32,32,32,32,32,114,138,0,0,0,41,
+    1,114,197,0,0,0,41,2,114,108,0,0,0,114,35,0,
+    0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
+    0,218,10,112,97,116,104,95,115,116,97,116,115,199,2,0,
+    0,115,2,0,0,0,0,11,122,23,83,111,117,114,99,101,
+    76,111,97,100,101,114,46,112,97,116,104,95,115,116,97,116,
+    115,99,4,0,0,0,0,0,0,0,4,0,0,0,3,0,
+    0,0,67,0,0,0,115,16,0,0,0,124,0,0,106,0,
+    0,124,2,0,124,3,0,131,2,0,83,41,1,122,228,79,
+    112,116,105,111,110,97,108,32,109,101,116,104,111,100,32,119,
+    104,105,99,104,32,119,114,105,116,101,115,32,100,97,116,97,
+    32,40,98,121,116,101,115,41,32,116,111,32,97,32,102,105,
+    108,101,32,112,97,116,104,32,40,97,32,115,116,114,41,46,
+    10,10,32,32,32,32,32,32,32,32,73,109,112,108,101,109,
+    101,110,116,105,110,103,32,116,104,105,115,32,109,101,116,104,
+    111,100,32,97,108,108,111,119,115,32,102,111,114,32,116,104,
+    101,32,119,114,105,116,105,110,103,32,111,102,32,98,121,116,
+    101,99,111,100,101,32,102,105,108,101,115,46,10,10,32,32,
+    32,32,32,32,32,32,84,104,101,32,115,111,117,114,99,101,
+    32,112,97,116,104,32,105,115,32,110,101,101,100,101,100,32,
+    105,110,32,111,114,100,101,114,32,116,111,32,99,111,114,114,
+    101,99,116,108,121,32,116,114,97,110,115,102,101,114,32,112,
+    101,114,109,105,115,115,105,111,110,115,10,32,32,32,32,32,
+    32,32,32,41,1,218,8,115,101,116,95,100,97,116,97,41,
+    4,114,108,0,0,0,114,90,0,0,0,90,10,99,97,99,
+    104,101,95,112,97,116,104,114,53,0,0,0,114,4,0,0,
+    0,114,4,0,0,0,114,5,0,0,0,218,15,95,99,97,
+    99,104,101,95,98,121,116,101,99,111,100,101,212,2,0,0,
+    115,2,0,0,0,0,8,122,28,83,111,117,114,99,101,76,
+    111,97,100,101,114,46,95,99,97,99,104,101,95,98,121,116,
+    101,99,111,100,101,99,3,0,0,0,0,0,0,0,3,0,
+    0,0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,
+    1,0,83,41,2,122,150,79,112,116,105,111,110,97,108,32,
+    109,101,116,104,111,100,32,119,104,105,99,104,32,119,114,105,
+    116,101,115,32,100,97,116,97,32,40,98,121,116,101,115,41,
+    32,116,111,32,97,32,102,105,108,101,32,112,97,116,104,32,
+    40,97,32,115,116,114,41,46,10,10,32,32,32,32,32,32,
+    32,32,73,109,112,108,101,109,101,110,116,105,110,103,32,116,
+    104,105,115,32,109,101,116,104,111,100,32,97,108,108,111,119,
+    115,32,102,111,114,32,116,104,101,32,119,114,105,116,105,110,
+    103,32,111,102,32,98,121,116,101,99,111,100,101,32,102,105,
+    108,101,115,46,10,32,32,32,32,32,32,32,32,78,114,4,
+    0,0,0,41,3,114,108,0,0,0,114,35,0,0,0,114,
+    53,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+    0,0,0,114,199,0,0,0,222,2,0,0,115,0,0,0,
+    0,122,21,83,111,117,114,99,101,76,111,97,100,101,114,46,
+    115,101,116,95,100,97,116,97,99,2,0,0,0,0,0,0,
+    0,5,0,0,0,16,0,0,0,67,0,0,0,115,105,0,
+    0,0,124,0,0,106,0,0,124,1,0,131,1,0,125,2,
+    0,121,19,0,124,0,0,106,1,0,124,2,0,131,1,0,
+    125,3,0,87,110,58,0,4,116,2,0,107,10,0,114,94,
+    0,1,125,4,0,1,122,26,0,116,3,0,100,1,0,100,
+    2,0,124,1,0,131,1,1,124,4,0,130,2,0,87,89,
+    100,3,0,100,3,0,125,4,0,126,4,0,88,110,1,0,
+    88,116,4,0,124,3,0,131,1,0,83,41,4,122,52,67,
+    111,110,99,114,101,116,101,32,105,109,112,108,101,109,101,110,
+    116,97,116,105,111,110,32,111,102,32,73,110,115,112,101,99,
+    116,76,111,97,100,101,114,46,103,101,116,95,115,111,117,114,
+    99,101,46,122,39,115,111,117,114,99,101,32,110,111,116,32,
+    97,118,97,105,108,97,98,108,101,32,116,104,114,111,117,103,
+    104,32,103,101,116,95,100,97,116,97,40,41,114,106,0,0,
+    0,78,41,5,114,163,0,0,0,218,8,103,101,116,95,100,
+    97,116,97,114,40,0,0,0,114,107,0,0,0,114,160,0,
+    0,0,41,5,114,108,0,0,0,114,126,0,0,0,114,35,
+    0,0,0,114,158,0,0,0,218,3,101,120,99,114,4,0,
+    0,0,114,4,0,0,0,114,5,0,0,0,218,10,103,101,
+    116,95,115,111,117,114,99,101,229,2,0,0,115,14,0,0,
+    0,0,2,15,1,3,1,19,1,18,1,9,1,31,1,122,
+    23,83,111,117,114,99,101,76,111,97,100,101,114,46,103,101,
+    116,95,115,111,117,114,99,101,218,9,95,111,112,116,105,109,
+    105,122,101,114,29,0,0,0,99,3,0,0,0,1,0,0,
+    0,4,0,0,0,9,0,0,0,67,0,0,0,115,34,0,
+    0,0,116,0,0,106,1,0,116,2,0,124,1,0,124,2,
+    0,100,1,0,100,2,0,100,3,0,100,4,0,124,3,0,
+    131,4,2,83,41,5,122,130,82,101,116,117,114,110,32,116,
+    104,101,32,99,111,100,101,32,111,98,106,101,99,116,32,99,
+    111,109,112,105,108,101,100,32,102,114,111,109,32,115,111,117,
+    114,99,101,46,10,10,32,32,32,32,32,32,32,32,84,104,
+    101,32,39,100,97,116,97,39,32,97,114,103,117,109,101,110,
+    116,32,99,97,110,32,98,101,32,97,110,121,32,111,98,106,
+    101,99,116,32,116,121,112,101,32,116,104,97,116,32,99,111,
+    109,112,105,108,101,40,41,32,115,117,112,112,111,114,116,115,
+    46,10,32,32,32,32,32,32,32,32,114,192,0,0,0,218,
+    12,100,111,110,116,95,105,110,104,101,114,105,116,84,114,68,
+    0,0,0,41,3,114,121,0,0,0,114,191,0,0,0,218,
+    7,99,111,109,112,105,108,101,41,4,114,108,0,0,0,114,
+    53,0,0,0,114,35,0,0,0,114,204,0,0,0,114,4,
+    0,0,0,114,4,0,0,0,114,5,0,0,0,218,14,115,
+    111,117,114,99,101,95,116,111,95,99,111,100,101,239,2,0,
+    0,115,4,0,0,0,0,5,21,1,122,27,83,111,117,114,
+    99,101,76,111,97,100,101,114,46,115,111,117,114,99,101,95,
+    116,111,95,99,111,100,101,99,2,0,0,0,0,0,0,0,
+    10,0,0,0,43,0,0,0,67,0,0,0,115,174,1,0,
+    0,124,0,0,106,0,0,124,1,0,131,1,0,125,2,0,
+    100,1,0,125,3,0,121,16,0,116,1,0,124,2,0,131,
+    1,0,125,4,0,87,110,24,0,4,116,2,0,107,10,0,
+    114,63,0,1,1,1,100,1,0,125,4,0,89,110,202,0,
+    88,121,19,0,124,0,0,106,3,0,124,2,0,131,1,0,
+    125,5,0,87,110,18,0,4,116,4,0,107,10,0,114,103,
+    0,1,1,1,89,110,162,0,88,116,5,0,124,5,0,100,
+    2,0,25,131,1,0,125,3,0,121,19,0,124,0,0,106,
+    6,0,124,4,0,131,1,0,125,6,0,87,110,18,0,4,
+    116,7,0,107,10,0,114,159,0,1,1,1,89,110,106,0,
+    88,121,34,0,116,8,0,124,6,0,100,3,0,124,5,0,
+    100,4,0,124,1,0,100,5,0,124,4,0,131,1,3,125,
+    7,0,87,110,24,0,4,116,9,0,116,10,0,102,2,0,
+    107,10,0,114,220,0,1,1,1,89,110,45,0,88,116,11,
+    0,100,6,0,124,4,0,124,2,0,131,3,0,1,116,12,
+    0,124,7,0,100,4,0,124,1,0,100,7,0,124,4,0,
+    100,8,0,124,2,0,131,1,3,83,124,0,0,106,6,0,
+    124,2,0,131,1,0,125,8,0,124,0,0,106,13,0,124,
+    8,0,124,2,0,131,2,0,125,9,0,116,11,0,100,9,
+    0,124,2,0,131,2,0,1,116,14,0,106,15,0,12,114,
+    170,1,124,4,0,100,1,0,107,9,0,114,170,1,124,3,
+    0,100,1,0,107,9,0,114,170,1,116,16,0,124,9,0,
+    124,3,0,116,17,0,124,8,0,131,1,0,131,3,0,125,
+    6,0,121,36,0,124,0,0,106,18,0,124,2,0,124,4,
+    0,124,6,0,131,3,0,1,116,11,0,100,10,0,124,4,
+    0,131,2,0,1,87,110,18,0,4,116,2,0,107,10,0,
+    114,169,1,1,1,1,89,110,1,0,88,124,9,0,83,41,
+    11,122,190,67,111,110,99,114,101,116,101,32,105,109,112,108,
+    101,109,101,110,116,97,116,105,111,110,32,111,102,32,73,110,
+    115,112,101,99,116,76,111,97,100,101,114,46,103,101,116,95,
+    99,111,100,101,46,10,10,32,32,32,32,32,32,32,32,82,
+    101,97,100,105,110,103,32,111,102,32,98,121,116,101,99,111,
+    100,101,32,114,101,113,117,105,114,101,115,32,112,97,116,104,
+    95,115,116,97,116,115,32,116,111,32,98,101,32,105,109,112,
+    108,101,109,101,110,116,101,100,46,32,84,111,32,119,114,105,
+    116,101,10,32,32,32,32,32,32,32,32,98,121,116,101,99,
+    111,100,101,44,32,115,101,116,95,100,97,116,97,32,109,117,
+    115,116,32,97,108,115,111,32,98,101,32,105,109,112,108,101,
+    109,101,110,116,101,100,46,10,10,32,32,32,32,32,32,32,
+    32,78,114,138,0,0,0,114,143,0,0,0,114,106,0,0,
+    0,114,35,0,0,0,122,13,123,125,32,109,97,116,99,104,
+    101,115,32,123,125,114,89,0,0,0,114,90,0,0,0,122,
+    19,99,111,100,101,32,111,98,106,101,99,116,32,102,114,111,
+    109,32,123,125,122,10,119,114,111,116,101,32,123,33,114,125,
+    41,19,114,163,0,0,0,114,79,0,0,0,114,66,0,0,
+    0,114,198,0,0,0,114,196,0,0,0,114,14,0,0,0,
+    114,201,0,0,0,114,40,0,0,0,114,146,0,0,0,114,
+    107,0,0,0,114,141,0,0,0,114,105,0,0,0,114,152,
+    0,0,0,114,207,0,0,0,114,7,0,0,0,218,19,100,
+    111,110,116,95,119,114,105,116,101,95,98,121,116,101,99,111,
+    100,101,114,155,0,0,0,114,31,0,0,0,114,200,0,0,
+    0,41,10,114,108,0,0,0,114,126,0,0,0,114,90,0,
+    0,0,114,144,0,0,0,114,89,0,0,0,218,2,115,116,
+    114,53,0,0,0,218,10,98,121,116,101,115,95,100,97,116,
+    97,114,158,0,0,0,90,11,99,111,100,101,95,111,98,106,
+    101,99,116,114,4,0,0,0,114,4,0,0,0,114,5,0,
+    0,0,114,190,0,0,0,247,2,0,0,115,78,0,0,0,
+    0,7,15,1,6,1,3,1,16,1,13,1,11,2,3,1,
+    19,1,13,1,5,2,16,1,3,1,19,1,13,1,5,2,
+    3,1,9,1,12,1,13,1,19,1,5,2,9,1,7,1,
+    15,1,6,1,7,1,15,1,18,1,13,1,22,1,12,1,
+    9,1,15,1,3,1,19,1,17,1,13,1,5,1,122,21,
+    83,111,117,114,99,101,76,111,97,100,101,114,46,103,101,116,
+    95,99,111,100,101,78,114,87,0,0,0,41,10,114,112,0,
+    0,0,114,111,0,0,0,114,113,0,0,0,114,197,0,0,
+    0,114,198,0,0,0,114,200,0,0,0,114,199,0,0,0,
+    114,203,0,0,0,114,207,0,0,0,114,190,0,0,0,114,
+    4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+    0,0,0,114,195,0,0,0,189,2,0,0,115,14,0,0,
+    0,12,2,12,8,12,13,12,10,12,7,12,10,18,8,114,
+    195,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,
+    0,4,0,0,0,0,0,0,0,115,112,0,0,0,101,0,
+    0,90,1,0,100,0,0,90,2,0,100,1,0,90,3,0,
+    100,2,0,100,3,0,132,0,0,90,4,0,100,4,0,100,
+    5,0,132,0,0,90,5,0,100,6,0,100,7,0,132,0,
+    0,90,6,0,101,7,0,135,0,0,102,1,0,100,8,0,
+    100,9,0,134,0,0,131,1,0,90,8,0,101,7,0,100,
+    10,0,100,11,0,132,0,0,131,1,0,90,9,0,100,12,
+    0,100,13,0,132,0,0,90,10,0,135,0,0,83,41,14,
+    218,10,70,105,108,101,76,111,97,100,101,114,122,103,66,97,
+    115,101,32,102,105,108,101,32,108,111,97,100,101,114,32,99,
+    108,97,115,115,32,119,104,105,99,104,32,105,109,112,108,101,
+    109,101,110,116,115,32,116,104,101,32,108,111,97,100,101,114,
+    32,112,114,111,116,111,99,111,108,32,109,101,116,104,111,100,
+    115,32,116,104,97,116,10,32,32,32,32,114,101,113,117,105,
+    114,101,32,102,105,108,101,32,115,121,115,116,101,109,32,117,
+    115,97,103,101,46,99,3,0,0,0,0,0,0,0,3,0,
+    0,0,2,0,0,0,67,0,0,0,115,22,0,0,0,124,
+    1,0,124,0,0,95,0,0,124,2,0,124,0,0,95,1,
+    0,100,1,0,83,41,2,122,75,67,97,99,104,101,32,116,
+    104,101,32,109,111,100,117,108,101,32,110,97,109,101,32,97,
+    110,100,32,116,104,101,32,112,97,116,104,32,116,111,32,116,
+    104,101,32,102,105,108,101,32,102,111,117,110,100,32,98,121,
+    32,116,104,101,10,32,32,32,32,32,32,32,32,102,105,110,
+    100,101,114,46,78,41,2,114,106,0,0,0,114,35,0,0,
+    0,41,3,114,108,0,0,0,114,126,0,0,0,114,35,0,
+    0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
+    0,114,188,0,0,0,48,3,0,0,115,4,0,0,0,0,
+    3,9,1,122,19,70,105,108,101,76,111,97,100,101,114,46,
+    95,95,105,110,105,116,95,95,99,2,0,0,0,0,0,0,
+    0,2,0,0,0,2,0,0,0,67,0,0,0,115,34,0,
+    0,0,124,0,0,106,0,0,124,1,0,106,0,0,107,2,
+    0,111,33,0,124,0,0,106,1,0,124,1,0,106,1,0,
+    107,2,0,83,41,1,78,41,2,218,9,95,95,99,108,97,
+    115,115,95,95,114,118,0,0,0,41,2,114,108,0,0,0,
+    218,5,111,116,104,101,114,114,4,0,0,0,114,4,0,0,
+    0,114,5,0,0,0,218,6,95,95,101,113,95,95,54,3,
+    0,0,115,4,0,0,0,0,1,18,1,122,17,70,105,108,
+    101,76,111,97,100,101,114,46,95,95,101,113,95,95,99,1,
+    0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,
+    0,0,0,115,26,0,0,0,116,0,0,124,0,0,106,1,
+    0,131,1,0,116,0,0,124,0,0,106,2,0,131,1,0,
+    65,83,41,1,78,41,3,218,4,104,97,115,104,114,106,0,
+    0,0,114,35,0,0,0,41,1,114,108,0,0,0,114,4,
+    0,0,0,114,4,0,0,0,114,5,0,0,0,218,8,95,
+    95,104,97,115,104,95,95,58,3,0,0,115,2,0,0,0,
+    0,1,122,19,70,105,108,101,76,111,97,100,101,114,46,95,
+    95,104,97,115,104,95,95,99,2,0,0,0,0,0,0,0,
+    2,0,0,0,3,0,0,0,3,0,0,0,115,22,0,0,
+    0,116,0,0,116,1,0,124,0,0,131,2,0,106,2,0,
+    124,1,0,131,1,0,83,41,1,122,100,76,111,97,100,32,
+    97,32,109,111,100,117,108,101,32,102,114,111,109,32,97,32,
+    102,105,108,101,46,10,10,32,32,32,32,32,32,32,32,84,
+    104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,101,
+    112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,101,
+    120,101,99,95,109,111,100,117,108,101,40,41,32,105,110,115,
+    116,101,97,100,46,10,10,32,32,32,32,32,32,32,32,41,
+    3,218,5,115,117,112,101,114,114,211,0,0,0,114,194,0,
+    0,0,41,2,114,108,0,0,0,114,126,0,0,0,41,1,
+    114,212,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
+    194,0,0,0,61,3,0,0,115,2,0,0,0,0,10,122,
+    22,70,105,108,101,76,111,97,100,101,114,46,108,111,97,100,
+    95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0,
+    2,0,0,0,1,0,0,0,67,0,0,0,115,7,0,0,
+    0,124,0,0,106,0,0,83,41,1,122,58,82,101,116,117,
+    114,110,32,116,104,101,32,112,97,116,104,32,116,111,32,116,
+    104,101,32,115,111,117,114,99,101,32,102,105,108,101,32,97,
+    115,32,102,111,117,110,100,32,98,121,32,116,104,101,32,102,
+    105,110,100,101,114,46,41,1,114,35,0,0,0,41,2,114,
+    108,0,0,0,114,126,0,0,0,114,4,0,0,0,114,4,
+    0,0,0,114,5,0,0,0,114,163,0,0,0,73,3,0,
+    0,115,2,0,0,0,0,3,122,23,70,105,108,101,76,111,
+    97,100,101,114,46,103,101,116,95,102,105,108,101,110,97,109,
+    101,99,2,0,0,0,0,0,0,0,3,0,0,0,8,0,
+    0,0,67,0,0,0,115,41,0,0,0,116,0,0,106,1,
+    0,124,1,0,100,1,0,131,2,0,143,17,0,125,2,0,
+    124,2,0,106,2,0,131,0,0,83,87,100,2,0,81,88,
+    100,2,0,83,41,3,122,39,82,101,116,117,114,110,32,116,
+    104,101,32,100,97,116,97,32,102,114,111,109,32,112,97,116,
+    104,32,97,115,32,114,97,119,32,98,121,116,101,115,46,218,
+    1,114,78,41,3,114,49,0,0,0,114,50,0,0,0,90,
+    4,114,101,97,100,41,3,114,108,0,0,0,114,35,0,0,
+    0,114,54,0,0,0,114,4,0,0,0,114,4,0,0,0,
+    114,5,0,0,0,114,201,0,0,0,78,3,0,0,115,4,
+    0,0,0,0,2,21,1,122,19,70,105,108,101,76,111,97,
+    100,101,114,46,103,101,116,95,100,97,116,97,41,11,114,112,
+    0,0,0,114,111,0,0,0,114,113,0,0,0,114,114,0,
+    0,0,114,188,0,0,0,114,214,0,0,0,114,216,0,0,
+    0,114,123,0,0,0,114,194,0,0,0,114,163,0,0,0,
+    114,201,0,0,0,114,4,0,0,0,114,4,0,0,0,41,
+    1,114,212,0,0,0,114,5,0,0,0,114,211,0,0,0,
+    43,3,0,0,115,14,0,0,0,12,3,6,2,12,6,12,
+    4,12,3,24,12,18,5,114,211,0,0,0,99,0,0,0,
+    0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0,
+    0,115,64,0,0,0,101,0,0,90,1,0,100,0,0,90,
+    2,0,100,1,0,90,3,0,100,2,0,100,3,0,132,0,
+    0,90,4,0,100,4,0,100,5,0,132,0,0,90,5,0,
+    100,6,0,100,7,0,100,8,0,100,9,0,132,0,1,90,
+    6,0,100,10,0,83,41,11,218,16,83,111,117,114,99,101,
+    70,105,108,101,76,111,97,100,101,114,122,62,67,111,110,99,
+    114,101,116,101,32,105,109,112,108,101,109,101,110,116,97,116,
+    105,111,110,32,111,102,32,83,111,117,114,99,101,76,111,97,
+    100,101,114,32,117,115,105,110,103,32,116,104,101,32,102,105,
+    108,101,32,115,121,115,116,101,109,46,99,2,0,0,0,0,
+    0,0,0,3,0,0,0,5,0,0,0,67,0,0,0,115,
+    34,0,0,0,116,0,0,124,1,0,131,1,0,125,2,0,
+    124,2,0,106,1,0,100,1,0,124,2,0,106,2,0,100,
+    2,0,105,2,0,83,41,3,122,33,82,101,116,117,114,110,
+    32,116,104,101,32,109,101,116,97,100,97,116,97,32,102,111,
+    114,32,116,104,101,32,112,97,116,104,46,114,138,0,0,0,
+    114,139,0,0,0,41,3,114,39,0,0,0,218,8,115,116,
+    95,109,116,105,109,101,90,7,115,116,95,115,105,122,101,41,
+    3,114,108,0,0,0,114,35,0,0,0,114,209,0,0,0,
+    114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
+    198,0,0,0,88,3,0,0,115,4,0,0,0,0,2,12,
+    1,122,27,83,111,117,114,99,101,70,105,108,101,76,111,97,
+    100,101,114,46,112,97,116,104,95,115,116,97,116,115,99,4,
+    0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,67,
+    0,0,0,115,34,0,0,0,116,0,0,124,1,0,131,1,
+    0,125,4,0,124,0,0,106,1,0,124,2,0,124,3,0,
+    100,1,0,124,4,0,131,2,1,83,41,2,78,218,5,95,
+    109,111,100,101,41,2,114,97,0,0,0,114,199,0,0,0,
+    41,5,114,108,0,0,0,114,90,0,0,0,114,89,0,0,
+    0,114,53,0,0,0,114,42,0,0,0,114,4,0,0,0,
+    114,4,0,0,0,114,5,0,0,0,114,200,0,0,0,93,
+    3,0,0,115,4,0,0,0,0,2,12,1,122,32,83,111,
+    117,114,99,101,70,105,108,101,76,111,97,100,101,114,46,95,
+    99,97,99,104,101,95,98,121,116,101,99,111,100,101,114,221,
+    0,0,0,105,182,1,0,0,99,3,0,0,0,1,0,0,
+    0,9,0,0,0,17,0,0,0,67,0,0,0,115,53,1,
+    0,0,116,0,0,124,1,0,131,1,0,92,2,0,125,4,
+    0,125,5,0,103,0,0,125,6,0,120,54,0,124,4,0,
+    114,80,0,116,1,0,124,4,0,131,1,0,12,114,80,0,
+    116,0,0,124,4,0,131,1,0,92,2,0,125,4,0,125,
+    7,0,124,6,0,106,2,0,124,7,0,131,1,0,1,113,
+    27,0,87,120,132,0,116,3,0,124,6,0,131,1,0,68,
+    93,118,0,125,7,0,116,4,0,124,4,0,124,7,0,131,
+    2,0,125,4,0,121,17,0,116,5,0,106,6,0,124,4,
+    0,131,1,0,1,87,113,94,0,4,116,7,0,107,10,0,
+    114,155,0,1,1,1,119,94,0,89,113,94,0,4,116,8,
+    0,107,10,0,114,211,0,1,125,8,0,1,122,25,0,116,
+    9,0,100,1,0,124,4,0,124,8,0,131,3,0,1,100,
+    2,0,83,87,89,100,2,0,100,2,0,125,8,0,126,8,
+    0,88,113,94,0,88,113,94,0,87,121,33,0,116,10,0,
+    124,1,0,124,2,0,124,3,0,131,3,0,1,116,9,0,
+    100,3,0,124,1,0,131,2,0,1,87,110,53,0,4,116,
+    8,0,107,10,0,114,48,1,1,125,8,0,1,122,21,0,
+    116,9,0,100,1,0,124,1,0,124,8,0,131,3,0,1,
+    87,89,100,2,0,100,2,0,125,8,0,126,8,0,88,110,
+    1,0,88,100,2,0,83,41,4,122,27,87,114,105,116,101,
+    32,98,121,116,101,115,32,100,97,116,97,32,116,111,32,97,
+    32,102,105,108,101,46,122,27,99,111,117,108,100,32,110,111,
+    116,32,99,114,101,97,116,101,32,123,33,114,125,58,32,123,
+    33,114,125,78,122,12,99,114,101,97,116,101,100,32,123,33,
+    114,125,41,11,114,38,0,0,0,114,46,0,0,0,114,169,
+    0,0,0,114,33,0,0,0,114,28,0,0,0,114,3,0,
+    0,0,90,5,109,107,100,105,114,218,15,70,105,108,101,69,
+    120,105,115,116,115,69,114,114,111,114,114,40,0,0,0,114,
+    105,0,0,0,114,55,0,0,0,41,9,114,108,0,0,0,
+    114,35,0,0,0,114,53,0,0,0,114,221,0,0,0,218,
+    6,112,97,114,101,110,116,114,94,0,0,0,114,27,0,0,
+    0,114,23,0,0,0,114,202,0,0,0,114,4,0,0,0,
+    114,4,0,0,0,114,5,0,0,0,114,199,0,0,0,98,
+    3,0,0,115,38,0,0,0,0,2,18,1,6,2,22,1,
+    18,1,17,2,19,1,15,1,3,1,17,1,13,2,7,1,
+    18,3,16,1,27,1,3,1,16,1,17,1,18,2,122,25,
+    83,111,117,114,99,101,70,105,108,101,76,111,97,100,101,114,
+    46,115,101,116,95,100,97,116,97,78,41,7,114,112,0,0,
+    0,114,111,0,0,0,114,113,0,0,0,114,114,0,0,0,
+    114,198,0,0,0,114,200,0,0,0,114,199,0,0,0,114,
+    4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+    0,0,0,114,219,0,0,0,84,3,0,0,115,8,0,0,
+    0,12,2,6,2,12,5,12,5,114,219,0,0,0,99,0,
+    0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,
+    0,0,0,115,46,0,0,0,101,0,0,90,1,0,100,0,
+    0,90,2,0,100,1,0,90,3,0,100,2,0,100,3,0,
+    132,0,0,90,4,0,100,4,0,100,5,0,132,0,0,90,
+    5,0,100,6,0,83,41,7,218,20,83,111,117,114,99,101,
+    108,101,115,115,70,105,108,101,76,111,97,100,101,114,122,45,
+    76,111,97,100,101,114,32,119,104,105,99,104,32,104,97,110,
+    100,108,101,115,32,115,111,117,114,99,101,108,101,115,115,32,
+    102,105,108,101,32,105,109,112,111,114,116,115,46,99,2,0,
+    0,0,0,0,0,0,5,0,0,0,6,0,0,0,67,0,
+    0,0,115,76,0,0,0,124,0,0,106,0,0,124,1,0,
+    131,1,0,125,2,0,124,0,0,106,1,0,124,2,0,131,
+    1,0,125,3,0,116,2,0,124,3,0,100,1,0,124,1,
+    0,100,2,0,124,2,0,131,1,2,125,4,0,116,3,0,
+    124,4,0,100,1,0,124,1,0,100,3,0,124,2,0,131,
+    1,2,83,41,4,78,114,106,0,0,0,114,35,0,0,0,
+    114,89,0,0,0,41,4,114,163,0,0,0,114,201,0,0,
+    0,114,146,0,0,0,114,152,0,0,0,41,5,114,108,0,
+    0,0,114,126,0,0,0,114,35,0,0,0,114,53,0,0,
+    0,114,210,0,0,0,114,4,0,0,0,114,4,0,0,0,
+    114,5,0,0,0,114,190,0,0,0,131,3,0,0,115,8,
+    0,0,0,0,1,15,1,15,1,24,1,122,29,83,111,117,
+    114,99,101,108,101,115,115,70,105,108,101,76,111,97,100,101,
+    114,46,103,101,116,95,99,111,100,101,99,2,0,0,0,0,
+    0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,115,
+    4,0,0,0,100,1,0,83,41,2,122,39,82,101,116,117,
+    114,110,32,78,111,110,101,32,97,115,32,116,104,101,114,101,
+    32,105,115,32,110,111,32,115,111,117,114,99,101,32,99,111,
+    100,101,46,78,114,4,0,0,0,41,2,114,108,0,0,0,
+    114,126,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+    5,0,0,0,114,203,0,0,0,137,3,0,0,115,2,0,
+    0,0,0,2,122,31,83,111,117,114,99,101,108,101,115,115,
+    70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,115,
+    111,117,114,99,101,78,41,6,114,112,0,0,0,114,111,0,
+    0,0,114,113,0,0,0,114,114,0,0,0,114,190,0,0,
+    0,114,203,0,0,0,114,4,0,0,0,114,4,0,0,0,
+    114,4,0,0,0,114,5,0,0,0,114,224,0,0,0,127,
+    3,0,0,115,6,0,0,0,12,2,6,2,12,6,114,224,
+    0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
+    3,0,0,0,64,0,0,0,115,130,0,0,0,101,0,0,
+    90,1,0,100,0,0,90,2,0,100,1,0,90,3,0,100,
+    2,0,100,3,0,132,0,0,90,4,0,100,4,0,100,5,
+    0,132,0,0,90,5,0,100,6,0,100,7,0,132,0,0,
+    90,6,0,101,7,0,100,8,0,100,9,0,132,0,0,131,
+    1,0,90,8,0,100,10,0,100,11,0,132,0,0,90,9,
+    0,100,12,0,100,13,0,132,0,0,90,10,0,100,14,0,
+    100,15,0,132,0,0,90,11,0,101,7,0,100,16,0,100,
+    17,0,132,0,0,131,1,0,90,12,0,100,18,0,83,41,
+    19,218,19,69,120,116,101,110,115,105,111,110,70,105,108,101,
+    76,111,97,100,101,114,122,93,76,111,97,100,101,114,32,102,
+    111,114,32,101,120,116,101,110,115,105,111,110,32,109,111,100,
+    117,108,101,115,46,10,10,32,32,32,32,84,104,101,32,99,
+    111,110,115,116,114,117,99,116,111,114,32,105,115,32,100,101,
+    115,105,103,110,101,100,32,116,111,32,119,111,114,107,32,119,
+    105,116,104,32,70,105,108,101,70,105,110,100,101,114,46,10,
+    10,32,32,32,32,99,3,0,0,0,0,0,0,0,3,0,
+    0,0,2,0,0,0,67,0,0,0,115,22,0,0,0,124,
+    1,0,124,0,0,95,0,0,124,2,0,124,0,0,95,1,
+    0,100,0,0,83,41,1,78,41,2,114,106,0,0,0,114,
+    35,0,0,0,41,3,114,108,0,0,0,114,106,0,0,0,
+    114,35,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+    5,0,0,0,114,188,0,0,0,154,3,0,0,115,4,0,
+    0,0,0,1,9,1,122,28,69,120,116,101,110,115,105,111,
+    110,70,105,108,101,76,111,97,100,101,114,46,95,95,105,110,
+    105,116,95,95,99,2,0,0,0,0,0,0,0,2,0,0,
+    0,2,0,0,0,67,0,0,0,115,34,0,0,0,124,0,
+    0,106,0,0,124,1,0,106,0,0,107,2,0,111,33,0,
+    124,0,0,106,1,0,124,1,0,106,1,0,107,2,0,83,
+    41,1,78,41,2,114,212,0,0,0,114,118,0,0,0,41,
+    2,114,108,0,0,0,114,213,0,0,0,114,4,0,0,0,
+    114,4,0,0,0,114,5,0,0,0,114,214,0,0,0,158,
+    3,0,0,115,4,0,0,0,0,1,18,1,122,26,69,120,
+    116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,
+    114,46,95,95,101,113,95,95,99,1,0,0,0,0,0,0,
+    0,1,0,0,0,3,0,0,0,67,0,0,0,115,26,0,
+    0,0,116,0,0,124,0,0,106,1,0,131,1,0,116,0,
+    0,124,0,0,106,2,0,131,1,0,65,83,41,1,78,41,
+    3,114,215,0,0,0,114,106,0,0,0,114,35,0,0,0,
+    41,1,114,108,0,0,0,114,4,0,0,0,114,4,0,0,
+    0,114,5,0,0,0,114,216,0,0,0,162,3,0,0,115,
+    2,0,0,0,0,1,122,28,69,120,116,101,110,115,105,111,
+    110,70,105,108,101,76,111,97,100,101,114,46,95,95,104,97,
+    115,104,95,95,99,2,0,0,0,0,0,0,0,4,0,0,
+    0,11,0,0,0,67,0,0,0,115,183,0,0,0,116,0,
+    0,106,1,0,124,1,0,131,1,0,143,32,0,1,116,0,
+    0,106,2,0,116,3,0,106,4,0,124,1,0,124,0,0,
+    106,5,0,131,3,0,125,2,0,87,100,1,0,81,88,116,
+    6,0,100,2,0,124,0,0,106,5,0,131,2,0,1,124,
+    0,0,106,7,0,124,1,0,131,1,0,125,3,0,124,3,
+    0,114,127,0,116,8,0,124,2,0,100,3,0,131,2,0,
+    12,114,127,0,116,9,0,124,0,0,106,5,0,131,1,0,
+    100,4,0,25,103,1,0,124,2,0,95,10,0,124,0,0,
+    124,2,0,95,11,0,124,2,0,106,12,0,124,2,0,95,
+    13,0,124,3,0,115,179,0,124,2,0,106,13,0,106,14,
+    0,100,5,0,131,1,0,100,4,0,25,124,2,0,95,13,
+    0,124,2,0,83,41,6,122,25,76,111,97,100,32,97,110,
+    32,101,120,116,101,110,115,105,111,110,32,109,111,100,117,108,
+    101,46,78,122,33,101,120,116,101,110,115,105,111,110,32,109,
+    111,100,117,108,101,32,108,111,97,100,101,100,32,102,114,111,
+    109,32,123,33,114,125,218,8,95,95,112,97,116,104,95,95,
+    114,59,0,0,0,114,58,0,0,0,41,15,114,121,0,0,
+    0,90,13,95,77,97,110,97,103,101,82,101,108,111,97,100,
+    114,191,0,0,0,114,150,0,0,0,90,12,108,111,97,100,
+    95,100,121,110,97,109,105,99,114,35,0,0,0,114,105,0,
+    0,0,114,162,0,0,0,114,115,0,0,0,114,38,0,0,
+    0,114,226,0,0,0,218,10,95,95,108,111,97,100,101,114,
+    95,95,114,112,0,0,0,218,11,95,95,112,97,99,107,97,
+    103,101,95,95,114,32,0,0,0,41,4,114,108,0,0,0,
+    114,126,0,0,0,114,134,0,0,0,114,162,0,0,0,114,
+    4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,194,
+    0,0,0,165,3,0,0,115,24,0,0,0,0,5,16,1,
+    12,1,21,1,16,1,15,1,22,1,25,1,9,1,12,1,
+    6,1,25,1,122,31,69,120,116,101,110,115,105,111,110,70,
+    105,108,101,76,111,97,100,101,114,46,108,111,97,100,95,109,
+    111,100,117,108,101,99,2,0,0,0,0,0,0,0,2,0,
+    0,0,4,0,0,0,3,0,0,0,115,48,0,0,0,116,
+    0,0,124,0,0,106,1,0,131,1,0,100,1,0,25,137,
+    0,0,116,2,0,135,0,0,102,1,0,100,2,0,100,3,
+    0,134,0,0,116,3,0,68,131,1,0,131,1,0,83,41,
+    4,122,49,82,101,116,117,114,110,32,84,114,117,101,32,105,
+    102,32,116,104,101,32,101,120,116,101,110,115,105,111,110,32,
+    109,111,100,117,108,101,32,105,115,32,97,32,112,97,99,107,
+    97,103,101,46,114,29,0,0,0,99,1,0,0,0,0,0,
+    0,0,2,0,0,0,4,0,0,0,51,0,0,0,115,31,
+    0,0,0,124,0,0,93,21,0,125,1,0,136,0,0,100,
+    0,0,124,1,0,23,107,2,0,86,1,113,3,0,100,1,
+    0,83,41,2,114,188,0,0,0,78,114,4,0,0,0,41,
+    2,114,22,0,0,0,218,6,115,117,102,102,105,120,41,1,
+    218,9,102,105,108,101,95,110,97,109,101,114,4,0,0,0,
+    114,5,0,0,0,250,9,60,103,101,110,101,120,112,114,62,
+    186,3,0,0,115,2,0,0,0,6,1,122,49,69,120,116,
+    101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,
+    46,105,115,95,112,97,99,107,97,103,101,46,60,108,111,99,
+    97,108,115,62,46,60,103,101,110,101,120,112,114,62,41,4,
+    114,38,0,0,0,114,35,0,0,0,218,3,97,110,121,218,
+    18,69,88,84,69,78,83,73,79,78,95,83,85,70,70,73,
+    88,69,83,41,2,114,108,0,0,0,114,126,0,0,0,114,
+    4,0,0,0,41,1,114,230,0,0,0,114,5,0,0,0,
+    114,162,0,0,0,183,3,0,0,115,6,0,0,0,0,2,
+    19,1,18,1,122,30,69,120,116,101,110,115,105,111,110,70,
+    105,108,101,76,111,97,100,101,114,46,105,115,95,112,97,99,
+    107,97,103,101,99,2,0,0,0,0,0,0,0,2,0,0,
+    0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,
+    0,83,41,2,122,63,82,101,116,117,114,110,32,78,111,110,
+    101,32,97,115,32,97,110,32,101,120,116,101,110,115,105,111,
+    110,32,109,111,100,117,108,101,32,99,97,110,110,111,116,32,
+    99,114,101,97,116,101,32,97,32,99,111,100,101,32,111,98,
+    106,101,99,116,46,78,114,4,0,0,0,41,2,114,108,0,
+    0,0,114,126,0,0,0,114,4,0,0,0,114,4,0,0,
+    0,114,5,0,0,0,114,190,0,0,0,189,3,0,0,115,
+    2,0,0,0,0,2,122,28,69,120,116,101,110,115,105,111,
+    110,70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,
+    99,111,100,101,99,2,0,0,0,0,0,0,0,2,0,0,
+    0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,
+    0,83,41,2,122,53,82,101,116,117,114,110,32,78,111,110,
+    101,32,97,115,32,101,120,116,101,110,115,105,111,110,32,109,
+    111,100,117,108,101,115,32,104,97,118,101,32,110,111,32,115,
+    111,117,114,99,101,32,99,111,100,101,46,78,114,4,0,0,
+    0,41,2,114,108,0,0,0,114,126,0,0,0,114,4,0,
+    0,0,114,4,0,0,0,114,5,0,0,0,114,203,0,0,
+    0,193,3,0,0,115,2,0,0,0,0,2,122,30,69,120,
+    116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,
+    114,46,103,101,116,95,115,111,117,114,99,101,99,2,0,0,
+    0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,
+    0,115,7,0,0,0,124,0,0,106,0,0,83,41,1,122,
+    58,82,101,116,117,114,110,32,116,104,101,32,112,97,116,104,
+    32,116,111,32,116,104,101,32,115,111,117,114,99,101,32,102,
+    105,108,101,32,97,115,32,102,111,117,110,100,32,98,121,32,
+    116,104,101,32,102,105,110,100,101,114,46,41,1,114,35,0,
+    0,0,41,2,114,108,0,0,0,114,126,0,0,0,114,4,
+    0,0,0,114,4,0,0,0,114,5,0,0,0,114,163,0,
+    0,0,197,3,0,0,115,2,0,0,0,0,3,122,32,69,
+    120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,
+    101,114,46,103,101,116,95,102,105,108,101,110,97,109,101,78,
+    41,13,114,112,0,0,0,114,111,0,0,0,114,113,0,0,
+    0,114,114,0,0,0,114,188,0,0,0,114,214,0,0,0,
+    114,216,0,0,0,114,123,0,0,0,114,194,0,0,0,114,
+    162,0,0,0,114,190,0,0,0,114,203,0,0,0,114,163,
+    0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,
+    0,0,114,5,0,0,0,114,225,0,0,0,146,3,0,0,
+    115,18,0,0,0,12,6,6,2,12,4,12,4,12,3,18,
+    18,12,6,12,4,12,4,114,225,0,0,0,99,0,0,0,
+    0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,
+    0,115,130,0,0,0,101,0,0,90,1,0,100,0,0,90,
+    2,0,100,1,0,90,3,0,100,2,0,100,3,0,132,0,
+    0,90,4,0,100,4,0,100,5,0,132,0,0,90,5,0,
+    100,6,0,100,7,0,132,0,0,90,6,0,100,8,0,100,
+    9,0,132,0,0,90,7,0,100,10,0,100,11,0,132,0,
+    0,90,8,0,100,12,0,100,13,0,132,0,0,90,9,0,
+    100,14,0,100,15,0,132,0,0,90,10,0,100,16,0,100,
+    17,0,132,0,0,90,11,0,100,18,0,100,19,0,132,0,
+    0,90,12,0,100,20,0,83,41,21,218,14,95,78,97,109,
+    101,115,112,97,99,101,80,97,116,104,97,38,1,0,0,82,
+    101,112,114,101,115,101,110,116,115,32,97,32,110,97,109,101,
+    115,112,97,99,101,32,112,97,99,107,97,103,101,39,115,32,
+    112,97,116,104,46,32,32,73,116,32,117,115,101,115,32,116,
+    104,101,32,109,111,100,117,108,101,32,110,97,109,101,10,32,
+    32,32,32,116,111,32,102,105,110,100,32,105,116,115,32,112,
+    97,114,101,110,116,32,109,111,100,117,108,101,44,32,97,110,
+    100,32,102,114,111,109,32,116,104,101,114,101,32,105,116,32,
+    108,111,111,107,115,32,117,112,32,116,104,101,32,112,97,114,
+    101,110,116,39,115,10,32,32,32,32,95,95,112,97,116,104,
+    95,95,46,32,32,87,104,101,110,32,116,104,105,115,32,99,
+    104,97,110,103,101,115,44,32,116,104,101,32,109,111,100,117,
+    108,101,39,115,32,111,119,110,32,112,97,116,104,32,105,115,
+    32,114,101,99,111,109,112,117,116,101,100,44,10,32,32,32,
+    32,117,115,105,110,103,32,112,97,116,104,95,102,105,110,100,
+    101,114,46,32,32,70,111,114,32,116,111,112,45,108,101,118,
+    101,108,32,109,111,100,117,108,101,115,44,32,116,104,101,32,
+    112,97,114,101,110,116,32,109,111,100,117,108,101,39,115,32,
+    112,97,116,104,10,32,32,32,32,105,115,32,115,121,115,46,
+    112,97,116,104,46,99,4,0,0,0,0,0,0,0,4,0,
+    0,0,2,0,0,0,67,0,0,0,115,52,0,0,0,124,
+    1,0,124,0,0,95,0,0,124,2,0,124,0,0,95,1,
+    0,116,2,0,124,0,0,106,3,0,131,0,0,131,1,0,
+    124,0,0,95,4,0,124,3,0,124,0,0,95,5,0,100,
+    0,0,83,41,1,78,41,6,218,5,95,110,97,109,101,218,
+    5,95,112,97,116,104,114,93,0,0,0,218,16,95,103,101,
+    116,95,112,97,114,101,110,116,95,112,97,116,104,218,17,95,
+    108,97,115,116,95,112,97,114,101,110,116,95,112,97,116,104,
+    218,12,95,112,97,116,104,95,102,105,110,100,101,114,41,4,
+    114,108,0,0,0,114,106,0,0,0,114,35,0,0,0,218,
+    11,112,97,116,104,95,102,105,110,100,101,114,114,4,0,0,
+    0,114,4,0,0,0,114,5,0,0,0,114,188,0,0,0,
+    210,3,0,0,115,8,0,0,0,0,1,9,1,9,1,21,
+    1,122,23,95,78,97,109,101,115,112,97,99,101,80,97,116,
+    104,46,95,95,105,110,105,116,95,95,99,1,0,0,0,0,
+    0,0,0,4,0,0,0,3,0,0,0,67,0,0,0,115,
+    53,0,0,0,124,0,0,106,0,0,106,1,0,100,1,0,
+    131,1,0,92,3,0,125,1,0,125,2,0,125,3,0,124,
+    2,0,100,2,0,107,2,0,114,43,0,100,6,0,83,124,
+    1,0,100,5,0,102,2,0,83,41,7,122,62,82,101,116,
+    117,114,110,115,32,97,32,116,117,112,108,101,32,111,102,32,
+    40,112,97,114,101,110,116,45,109,111,100,117,108,101,45,110,
+    97,109,101,44,32,112,97,114,101,110,116,45,112,97,116,104,
+    45,97,116,116,114,45,110,97,109,101,41,114,58,0,0,0,
+    114,30,0,0,0,114,7,0,0,0,114,35,0,0,0,114,
+    226,0,0,0,41,2,122,3,115,121,115,122,4,112,97,116,
+    104,41,2,114,235,0,0,0,114,32,0,0,0,41,4,114,
+    108,0,0,0,114,223,0,0,0,218,3,100,111,116,90,2,
+    109,101,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
+    0,218,23,95,102,105,110,100,95,112,97,114,101,110,116,95,
+    112,97,116,104,95,110,97,109,101,115,216,3,0,0,115,8,
+    0,0,0,0,2,27,1,12,2,4,3,122,38,95,78,97,
+    109,101,115,112,97,99,101,80,97,116,104,46,95,102,105,110,
+    100,95,112,97,114,101,110,116,95,112,97,116,104,95,110,97,
+    109,101,115,99,1,0,0,0,0,0,0,0,3,0,0,0,
+    3,0,0,0,67,0,0,0,115,38,0,0,0,124,0,0,
+    106,0,0,131,0,0,92,2,0,125,1,0,125,2,0,116,
+    1,0,116,2,0,106,3,0,124,1,0,25,124,2,0,131,
+    2,0,83,41,1,78,41,4,114,242,0,0,0,114,117,0,
+    0,0,114,7,0,0,0,114,132,0,0,0,41,3,114,108,
+    0,0,0,90,18,112,97,114,101,110,116,95,109,111,100,117,
+    108,101,95,110,97,109,101,90,14,112,97,116,104,95,97,116,
+    116,114,95,110,97,109,101,114,4,0,0,0,114,4,0,0,
+    0,114,5,0,0,0,114,237,0,0,0,226,3,0,0,115,
+    4,0,0,0,0,1,18,1,122,31,95,78,97,109,101,115,
+    112,97,99,101,80,97,116,104,46,95,103,101,116,95,112,97,
+    114,101,110,116,95,112,97,116,104,99,1,0,0,0,0,0,
+    0,0,3,0,0,0,3,0,0,0,67,0,0,0,115,118,
+    0,0,0,116,0,0,124,0,0,106,1,0,131,0,0,131,
+    1,0,125,1,0,124,1,0,124,0,0,106,2,0,107,3,
+    0,114,111,0,124,0,0,106,3,0,124,0,0,106,4,0,
+    124,1,0,131,2,0,125,2,0,124,2,0,100,0,0,107,
+    9,0,114,102,0,124,2,0,106,5,0,100,0,0,107,8,
+    0,114,102,0,124,2,0,106,6,0,114,102,0,124,2,0,
+    106,6,0,124,0,0,95,7,0,124,1,0,124,0,0,95,
+    2,0,124,0,0,106,7,0,83,41,1,78,41,8,114,93,
+    0,0,0,114,237,0,0,0,114,238,0,0,0,114,239,0,
+    0,0,114,235,0,0,0,114,127,0,0,0,114,164,0,0,
+    0,114,236,0,0,0,41,3,114,108,0,0,0,90,11,112,
+    97,114,101,110,116,95,112,97,116,104,114,133,0,0,0,114,
+    4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,12,
+    95,114,101,99,97,108,99,117,108,97,116,101,230,3,0,0,
+    115,16,0,0,0,0,2,18,1,15,1,21,3,27,1,9,
+    1,12,1,9,1,122,27,95,78,97,109,101,115,112,97,99,
+    101,80,97,116,104,46,95,114,101,99,97,108,99,117,108,97,
+    116,101,99,1,0,0,0,0,0,0,0,1,0,0,0,2,
+    0,0,0,67,0,0,0,115,16,0,0,0,116,0,0,124,
+    0,0,106,1,0,131,0,0,131,1,0,83,41,1,78,41,
+    2,218,4,105,116,101,114,114,243,0,0,0,41,1,114,108,
     0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
-    0,0,218,10,112,97,116,104,95,115,116,97,116,115,198,2,
-    0,0,115,2,0,0,0,0,11,122,23,83,111,117,114,99,
-    101,76,111,97,100,101,114,46,112,97,116,104,95,115,116,97,
-    116,115,99,4,0,0,0,0,0,0,0,4,0,0,0,3,
-    0,0,0,67,0,0,0,115,16,0,0,0,124,0,0,106,
-    0,0,124,2,0,124,3,0,131,2,0,83,41,1,122,228,
-    79,112,116,105,111,110,97,108,32,109,101,116,104,111,100,32,
-    119,104,105,99,104,32,119,114,105,116,101,115,32,100,97,116,
-    97,32,40,98,121,116,101,115,41,32,116,111,32,97,32,102,
-    105,108,101,32,112,97,116,104,32,40,97,32,115,116,114,41,
-    46,10,10,32,32,32,32,32,32,32,32,73,109,112,108,101,
-    109,101,110,116,105,110,103,32,116,104,105,115,32,109,101,116,
-    104,111,100,32,97,108,108,111,119,115,32,102,111,114,32,116,
-    104,101,32,119,114,105,116,105,110,103,32,111,102,32,98,121,
-    116,101,99,111,100,101,32,102,105,108,101,115,46,10,10,32,
-    32,32,32,32,32,32,32,84,104,101,32,115,111,117,114,99,
-    101,32,112,97,116,104,32,105,115,32,110,101,101,100,101,100,
-    32,105,110,32,111,114,100,101,114,32,116,111,32,99,111,114,
-    114,101,99,116,108,121,32,116,114,97,110,115,102,101,114,32,
-    112,101,114,109,105,115,115,105,111,110,115,10,32,32,32,32,
-    32,32,32,32,41,1,218,8,115,101,116,95,100,97,116,97,
-    41,4,114,108,0,0,0,114,90,0,0,0,90,10,99,97,
-    99,104,101,95,112,97,116,104,114,53,0,0,0,114,4,0,
-    0,0,114,4,0,0,0,114,5,0,0,0,218,15,95,99,
-    97,99,104,101,95,98,121,116,101,99,111,100,101,211,2,0,
-    0,115,2,0,0,0,0,8,122,28,83,111,117,114,99,101,
-    76,111,97,100,101,114,46,95,99,97,99,104,101,95,98,121,
-    116,101,99,111,100,101,99,3,0,0,0,0,0,0,0,3,
-    0,0,0,1,0,0,0,67,0,0,0,115,4,0,0,0,
-    100,1,0,83,41,2,122,150,79,112,116,105,111,110,97,108,
-    32,109,101,116,104,111,100,32,119,104,105,99,104,32,119,114,
-    105,116,101,115,32,100,97,116,97,32,40,98,121,116,101,115,
-    41,32,116,111,32,97,32,102,105,108,101,32,112,97,116,104,
-    32,40,97,32,115,116,114,41,46,10,10,32,32,32,32,32,
-    32,32,32,73,109,112,108,101,109,101,110,116,105,110,103,32,
-    116,104,105,115,32,109,101,116,104,111,100,32,97,108,108,111,
-    119,115,32,102,111,114,32,116,104,101,32,119,114,105,116,105,
-    110,103,32,111,102,32,98,121,116,101,99,111,100,101,32,102,
-    105,108,101,115,46,10,32,32,32,32,32,32,32,32,78,114,
-    4,0,0,0,41,3,114,108,0,0,0,114,35,0,0,0,
-    114,53,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
-    5,0,0,0,114,199,0,0,0,221,2,0,0,115,0,0,
-    0,0,122,21,83,111,117,114,99,101,76,111,97,100,101,114,
-    46,115,101,116,95,100,97,116,97,99,2,0,0,0,0,0,
-    0,0,5,0,0,0,16,0,0,0,67,0,0,0,115,105,
-    0,0,0,124,0,0,106,0,0,124,1,0,131,1,0,125,
-    2,0,121,19,0,124,0,0,106,1,0,124,2,0,131,1,
-    0,125,3,0,87,110,58,0,4,116,2,0,107,10,0,114,
-    94,0,1,125,4,0,1,122,26,0,116,3,0,100,1,0,
-    100,2,0,124,1,0,131,1,1,124,4,0,130,2,0,87,
-    89,100,3,0,100,3,0,125,4,0,126,4,0,88,110,1,
-    0,88,116,4,0,124,3,0,131,1,0,83,41,4,122,52,
-    67,111,110,99,114,101,116,101,32,105,109,112,108,101,109,101,
-    110,116,97,116,105,111,110,32,111,102,32,73,110,115,112,101,
-    99,116,76,111,97,100,101,114,46,103,101,116,95,115,111,117,
-    114,99,101,46,122,39,115,111,117,114,99,101,32,110,111,116,
-    32,97,118,97,105,108,97,98,108,101,32,116,104,114,111,117,
-    103,104,32,103,101,116,95,100,97,116,97,40,41,114,106,0,
-    0,0,78,41,5,114,163,0,0,0,218,8,103,101,116,95,
-    100,97,116,97,114,40,0,0,0,114,107,0,0,0,114,160,
-    0,0,0,41,5,114,108,0,0,0,114,126,0,0,0,114,
-    35,0,0,0,114,158,0,0,0,218,3,101,120,99,114,4,
-    0,0,0,114,4,0,0,0,114,5,0,0,0,218,10,103,
-    101,116,95,115,111,117,114,99,101,228,2,0,0,115,14,0,
-    0,0,0,2,15,1,3,1,19,1,18,1,9,1,31,1,
-    122,23,83,111,117,114,99,101,76,111,97,100,101,114,46,103,
-    101,116,95,115,111,117,114,99,101,218,9,95,111,112,116,105,
-    109,105,122,101,114,29,0,0,0,99,3,0,0,0,1,0,
-    0,0,4,0,0,0,9,0,0,0,67,0,0,0,115,34,
-    0,0,0,116,0,0,106,1,0,116,2,0,124,1,0,124,
-    2,0,100,1,0,100,2,0,100,3,0,100,4,0,124,3,
-    0,131,4,2,83,41,5,122,130,82,101,116,117,114,110,32,
-    116,104,101,32,99,111,100,101,32,111,98,106,101,99,116,32,
-    99,111,109,112,105,108,101,100,32,102,114,111,109,32,115,111,
-    117,114,99,101,46,10,10,32,32,32,32,32,32,32,32,84,
-    104,101,32,39,100,97,116,97,39,32,97,114,103,117,109,101,
-    110,116,32,99,97,110,32,98,101,32,97,110,121,32,111,98,
-    106,101,99,116,32,116,121,112,101,32,116,104,97,116,32,99,
-    111,109,112,105,108,101,40,41,32,115,117,112,112,111,114,116,
-    115,46,10,32,32,32,32,32,32,32,32,114,192,0,0,0,
-    218,12,100,111,110,116,95,105,110,104,101,114,105,116,84,114,
-    68,0,0,0,41,3,114,121,0,0,0,114,191,0,0,0,
-    218,7,99,111,109,112,105,108,101,41,4,114,108,0,0,0,
-    114,53,0,0,0,114,35,0,0,0,114,204,0,0,0,114,
-    4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,14,
-    115,111,117,114,99,101,95,116,111,95,99,111,100,101,238,2,
-    0,0,115,4,0,0,0,0,5,21,1,122,27,83,111,117,
-    114,99,101,76,111,97,100,101,114,46,115,111,117,114,99,101,
-    95,116,111,95,99,111,100,101,99,2,0,0,0,0,0,0,
-    0,10,0,0,0,43,0,0,0,67,0,0,0,115,174,1,
-    0,0,124,0,0,106,0,0,124,1,0,131,1,0,125,2,
-    0,100,1,0,125,3,0,121,16,0,116,1,0,124,2,0,
-    131,1,0,125,4,0,87,110,24,0,4,116,2,0,107,10,
-    0,114,63,0,1,1,1,100,1,0,125,4,0,89,110,202,
-    0,88,121,19,0,124,0,0,106,3,0,124,2,0,131,1,
-    0,125,5,0,87,110,18,0,4,116,4,0,107,10,0,114,
-    103,0,1,1,1,89,110,162,0,88,116,5,0,124,5,0,
-    100,2,0,25,131,1,0,125,3,0,121,19,0,124,0,0,
-    106,6,0,124,4,0,131,1,0,125,6,0,87,110,18,0,
-    4,116,7,0,107,10,0,114,159,0,1,1,1,89,110,106,
-    0,88,121,34,0,116,8,0,124,6,0,100,3,0,124,5,
-    0,100,4,0,124,1,0,100,5,0,124,4,0,131,1,3,
-    125,7,0,87,110,24,0,4,116,9,0,116,10,0,102,2,
-    0,107,10,0,114,220,0,1,1,1,89,110,45,0,88,116,
-    11,0,100,6,0,124,4,0,124,2,0,131,3,0,1,116,
-    12,0,124,7,0,100,4,0,124,1,0,100,7,0,124,4,
-    0,100,8,0,124,2,0,131,1,3,83,124,0,0,106,6,
-    0,124,2,0,131,1,0,125,8,0,124,0,0,106,13,0,
-    124,8,0,124,2,0,131,2,0,125,9,0,116,11,0,100,
-    9,0,124,2,0,131,2,0,1,116,14,0,106,15,0,12,
-    114,170,1,124,4,0,100,1,0,107,9,0,114,170,1,124,
-    3,0,100,1,0,107,9,0,114,170,1,116,16,0,124,9,
-    0,124,3,0,116,17,0,124,8,0,131,1,0,131,3,0,
-    125,6,0,121,36,0,124,0,0,106,18,0,124,2,0,124,
-    4,0,124,6,0,131,3,0,1,116,11,0,100,10,0,124,
-    4,0,131,2,0,1,87,110,18,0,4,116,2,0,107,10,
-    0,114,169,1,1,1,1,89,110,1,0,88,124,9,0,83,
-    41,11,122,190,67,111,110,99,114,101,116,101,32,105,109,112,
-    108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,73,
-    110,115,112,101,99,116,76,111,97,100,101,114,46,103,101,116,
-    95,99,111,100,101,46,10,10,32,32,32,32,32,32,32,32,
-    82,101,97,100,105,110,103,32,111,102,32,98,121,116,101,99,
-    111,100,101,32,114,101,113,117,105,114,101,115,32,112,97,116,
-    104,95,115,116,97,116,115,32,116,111,32,98,101,32,105,109,
-    112,108,101,109,101,110,116,101,100,46,32,84,111,32,119,114,
-    105,116,101,10,32,32,32,32,32,32,32,32,98,121,116,101,
-    99,111,100,101,44,32,115,101,116,95,100,97,116,97,32,109,
-    117,115,116,32,97,108,115,111,32,98,101,32,105,109,112,108,
-    101,109,101,110,116,101,100,46,10,10,32,32,32,32,32,32,
-    32,32,78,114,138,0,0,0,114,143,0,0,0,114,106,0,
-    0,0,114,35,0,0,0,122,13,123,125,32,109,97,116,99,
-    104,101,115,32,123,125,114,89,0,0,0,114,90,0,0,0,
-    122,19,99,111,100,101,32,111,98,106,101,99,116,32,102,114,
-    111,109,32,123,125,122,10,119,114,111,116,101,32,123,33,114,
-    125,41,19,114,163,0,0,0,114,79,0,0,0,114,66,0,
-    0,0,114,198,0,0,0,114,196,0,0,0,114,14,0,0,
-    0,114,201,0,0,0,114,40,0,0,0,114,146,0,0,0,
-    114,107,0,0,0,114,141,0,0,0,114,105,0,0,0,114,
-    152,0,0,0,114,207,0,0,0,114,7,0,0,0,218,19,
-    100,111,110,116,95,119,114,105,116,101,95,98,121,116,101,99,
-    111,100,101,114,155,0,0,0,114,31,0,0,0,114,200,0,
-    0,0,41,10,114,108,0,0,0,114,126,0,0,0,114,90,
-    0,0,0,114,144,0,0,0,114,89,0,0,0,218,2,115,
-    116,114,53,0,0,0,218,10,98,121,116,101,115,95,100,97,
-    116,97,114,158,0,0,0,90,11,99,111,100,101,95,111,98,
-    106,101,99,116,114,4,0,0,0,114,4,0,0,0,114,5,
-    0,0,0,114,190,0,0,0,246,2,0,0,115,78,0,0,
-    0,0,7,15,1,6,1,3,1,16,1,13,1,11,2,3,
-    1,19,1,13,1,5,2,16,1,3,1,19,1,13,1,5,
-    2,3,1,9,1,12,1,13,1,19,1,5,2,9,1,7,
-    1,15,1,6,1,7,1,15,1,18,1,13,1,22,1,12,
-    1,9,1,15,1,3,1,19,1,17,1,13,1,5,1,122,
-    21,83,111,117,114,99,101,76,111,97,100,101,114,46,103,101,
-    116,95,99,111,100,101,78,114,87,0,0,0,41,10,114,112,
-    0,0,0,114,111,0,0,0,114,113,0,0,0,114,197,0,
-    0,0,114,198,0,0,0,114,200,0,0,0,114,199,0,0,
-    0,114,203,0,0,0,114,207,0,0,0,114,190,0,0,0,
-    114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
-    5,0,0,0,114,195,0,0,0,188,2,0,0,115,14,0,
-    0,0,12,2,12,8,12,13,12,10,12,7,12,10,18,8,
-    114,195,0,0,0,99,0,0,0,0,0,0,0,0,0,0,
-    0,0,4,0,0,0,0,0,0,0,115,112,0,0,0,101,
-    0,0,90,1,0,100,0,0,90,2,0,100,1,0,90,3,
-    0,100,2,0,100,3,0,132,0,0,90,4,0,100,4,0,
-    100,5,0,132,0,0,90,5,0,100,6,0,100,7,0,132,
-    0,0,90,6,0,101,7,0,135,0,0,102,1,0,100,8,
-    0,100,9,0,134,0,0,131,1,0,90,8,0,101,7,0,
-    100,10,0,100,11,0,132,0,0,131,1,0,90,9,0,100,
-    12,0,100,13,0,132,0,0,90,10,0,135,0,0,83,41,
-    14,218,10,70,105,108,101,76,111,97,100,101,114,122,103,66,
-    97,115,101,32,102,105,108,101,32,108,111,97,100,101,114,32,
-    99,108,97,115,115,32,119,104,105,99,104,32,105,109,112,108,
-    101,109,101,110,116,115,32,116,104,101,32,108,111,97,100,101,
-    114,32,112,114,111,116,111,99,111,108,32,109,101,116,104,111,
-    100,115,32,116,104,97,116,10,32,32,32,32,114,101,113,117,
-    105,114,101,32,102,105,108,101,32,115,121,115,116,101,109,32,
-    117,115,97,103,101,46,99,3,0,0,0,0,0,0,0,3,
-    0,0,0,2,0,0,0,67,0,0,0,115,22,0,0,0,
-    124,1,0,124,0,0,95,0,0,124,2,0,124,0,0,95,
-    1,0,100,1,0,83,41,2,122,75,67,97,99,104,101,32,
-    116,104,101,32,109,111,100,117,108,101,32,110,97,109,101,32,
-    97,110,100,32,116,104,101,32,112,97,116,104,32,116,111,32,
-    116,104,101,32,102,105,108,101,32,102,111,117,110,100,32,98,
-    121,32,116,104,101,10,32,32,32,32,32,32,32,32,102,105,
-    110,100,101,114,46,78,41,2,114,106,0,0,0,114,35,0,
-    0,0,41,3,114,108,0,0,0,114,126,0,0,0,114,35,
+    0,0,218,8,95,95,105,116,101,114,95,95,243,3,0,0,
+    115,2,0,0,0,0,1,122,23,95,78,97,109,101,115,112,
+    97,99,101,80,97,116,104,46,95,95,105,116,101,114,95,95,
+    99,1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,
+    0,67,0,0,0,115,16,0,0,0,116,0,0,124,0,0,
+    106,1,0,131,0,0,131,1,0,83,41,1,78,41,2,114,
+    31,0,0,0,114,243,0,0,0,41,1,114,108,0,0,0,
+    114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,
+    7,95,95,108,101,110,95,95,246,3,0,0,115,2,0,0,
+    0,0,1,122,22,95,78,97,109,101,115,112,97,99,101,80,
+    97,116,104,46,95,95,108,101,110,95,95,99,1,0,0,0,
+    0,0,0,0,1,0,0,0,2,0,0,0,67,0,0,0,
+    115,16,0,0,0,100,1,0,106,0,0,124,0,0,106,1,
+    0,131,1,0,83,41,2,78,122,20,95,78,97,109,101,115,
+    112,97,99,101,80,97,116,104,40,123,33,114,125,41,41,2,
+    114,47,0,0,0,114,236,0,0,0,41,1,114,108,0,0,
+    0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
+    218,8,95,95,114,101,112,114,95,95,249,3,0,0,115,2,
+    0,0,0,0,1,122,23,95,78,97,109,101,115,112,97,99,
+    101,80,97,116,104,46,95,95,114,101,112,114,95,95,99,2,
+    0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,67,
+    0,0,0,115,16,0,0,0,124,1,0,124,0,0,106,0,
+    0,131,0,0,107,6,0,83,41,1,78,41,1,114,243,0,
+    0,0,41,2,114,108,0,0,0,218,4,105,116,101,109,114,
+    4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,12,
+    95,95,99,111,110,116,97,105,110,115,95,95,252,3,0,0,
+    115,2,0,0,0,0,1,122,27,95,78,97,109,101,115,112,
+    97,99,101,80,97,116,104,46,95,95,99,111,110,116,97,105,
+    110,115,95,95,99,2,0,0,0,0,0,0,0,2,0,0,
+    0,2,0,0,0,67,0,0,0,115,20,0,0,0,124,0,
+    0,106,0,0,106,1,0,124,1,0,131,1,0,1,100,0,
+    0,83,41,1,78,41,2,114,236,0,0,0,114,169,0,0,
+    0,41,2,114,108,0,0,0,114,248,0,0,0,114,4,0,
+    0,0,114,4,0,0,0,114,5,0,0,0,114,169,0,0,
+    0,255,3,0,0,115,2,0,0,0,0,1,122,21,95,78,
+    97,109,101,115,112,97,99,101,80,97,116,104,46,97,112,112,
+    101,110,100,78,41,13,114,112,0,0,0,114,111,0,0,0,
+    114,113,0,0,0,114,114,0,0,0,114,188,0,0,0,114,
+    242,0,0,0,114,237,0,0,0,114,243,0,0,0,114,245,
+    0,0,0,114,246,0,0,0,114,247,0,0,0,114,249,0,
+    0,0,114,169,0,0,0,114,4,0,0,0,114,4,0,0,
+    0,114,4,0,0,0,114,5,0,0,0,114,234,0,0,0,
+    203,3,0,0,115,20,0,0,0,12,5,6,2,12,6,12,
+    10,12,4,12,13,12,3,12,3,12,3,12,3,114,234,0,
+    0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,
+    0,0,0,64,0,0,0,115,118,0,0,0,101,0,0,90,
+    1,0,100,0,0,90,2,0,100,1,0,100,2,0,132,0,
+    0,90,3,0,101,4,0,100,3,0,100,4,0,132,0,0,
+    131,1,0,90,5,0,100,5,0,100,6,0,132,0,0,90,
+    6,0,100,7,0,100,8,0,132,0,0,90,7,0,100,9,
+    0,100,10,0,132,0,0,90,8,0,100,11,0,100,12,0,
+    132,0,0,90,9,0,100,13,0,100,14,0,132,0,0,90,
+    10,0,100,15,0,100,16,0,132,0,0,90,11,0,100,17,
+    0,83,41,18,218,16,95,78,97,109,101,115,112,97,99,101,
+    76,111,97,100,101,114,99,4,0,0,0,0,0,0,0,4,
+    0,0,0,4,0,0,0,67,0,0,0,115,25,0,0,0,
+    116,0,0,124,1,0,124,2,0,124,3,0,131,3,0,124,
+    0,0,95,1,0,100,0,0,83,41,1,78,41,2,114,234,
+    0,0,0,114,236,0,0,0,41,4,114,108,0,0,0,114,
+    106,0,0,0,114,35,0,0,0,114,240,0,0,0,114,4,
+    0,0,0,114,4,0,0,0,114,5,0,0,0,114,188,0,
+    0,0,5,4,0,0,115,2,0,0,0,0,1,122,25,95,
+    78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,
+    95,95,105,110,105,116,95,95,99,2,0,0,0,0,0,0,
+    0,2,0,0,0,2,0,0,0,67,0,0,0,115,16,0,
+    0,0,100,1,0,106,0,0,124,1,0,106,1,0,131,1,
+    0,83,41,2,122,115,82,101,116,117,114,110,32,114,101,112,
+    114,32,102,111,114,32,116,104,101,32,109,111,100,117,108,101,
+    46,10,10,32,32,32,32,32,32,32,32,84,104,101,32,109,
+    101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,
+    116,101,100,46,32,32,84,104,101,32,105,109,112,111,114,116,
+    32,109,97,99,104,105,110,101,114,121,32,100,111,101,115,32,
+    116,104,101,32,106,111,98,32,105,116,115,101,108,102,46,10,
+    10,32,32,32,32,32,32,32,32,122,25,60,109,111,100,117,
+    108,101,32,123,33,114,125,32,40,110,97,109,101,115,112,97,
+    99,101,41,62,41,2,114,47,0,0,0,114,112,0,0,0,
+    41,2,114,174,0,0,0,114,134,0,0,0,114,4,0,0,
+    0,114,4,0,0,0,114,5,0,0,0,218,11,109,111,100,
+    117,108,101,95,114,101,112,114,8,4,0,0,115,2,0,0,
+    0,0,7,122,28,95,78,97,109,101,115,112,97,99,101,76,
+    111,97,100,101,114,46,109,111,100,117,108,101,95,114,101,112,
+    114,99,2,0,0,0,0,0,0,0,2,0,0,0,1,0,
+    0,0,67,0,0,0,115,4,0,0,0,100,1,0,83,41,
+    2,78,84,114,4,0,0,0,41,2,114,108,0,0,0,114,
+    126,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+    0,0,0,114,162,0,0,0,17,4,0,0,115,2,0,0,
+    0,0,1,122,27,95,78,97,109,101,115,112,97,99,101,76,
+    111,97,100,101,114,46,105,115,95,112,97,99,107,97,103,101,
+    99,2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,
+    0,67,0,0,0,115,4,0,0,0,100,1,0,83,41,2,
+    78,114,30,0,0,0,114,4,0,0,0,41,2,114,108,0,
+    0,0,114,126,0,0,0,114,4,0,0,0,114,4,0,0,
+    0,114,5,0,0,0,114,203,0,0,0,20,4,0,0,115,
+    2,0,0,0,0,1,122,27,95,78,97,109,101,115,112,97,
+    99,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,
+    114,99,101,99,2,0,0,0,0,0,0,0,2,0,0,0,
+    6,0,0,0,67,0,0,0,115,22,0,0,0,116,0,0,
+    100,1,0,100,2,0,100,3,0,100,4,0,100,5,0,131,
+    3,1,83,41,6,78,114,30,0,0,0,122,8,60,115,116,
+    114,105,110,103,62,114,192,0,0,0,114,205,0,0,0,84,
+    41,1,114,206,0,0,0,41,2,114,108,0,0,0,114,126,
     0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
-    0,0,114,188,0,0,0,47,3,0,0,115,4,0,0,0,
-    0,3,9,1,122,19,70,105,108,101,76,111,97,100,101,114,
-    46,95,95,105,110,105,116,95,95,99,2,0,0,0,0,0,
-    0,0,2,0,0,0,2,0,0,0,67,0,0,0,115,34,
-    0,0,0,124,0,0,106,0,0,124,1,0,106,0,0,107,
-    2,0,111,33,0,124,0,0,106,1,0,124,1,0,106,1,
-    0,107,2,0,83,41,1,78,41,2,218,9,95,95,99,108,
-    97,115,115,95,95,114,118,0,0,0,41,2,114,108,0,0,
-    0,218,5,111,116,104,101,114,114,4,0,0,0,114,4,0,
-    0,0,114,5,0,0,0,218,6,95,95,101,113,95,95,53,
-    3,0,0,115,4,0,0,0,0,1,18,1,122,17,70,105,
-    108,101,76,111,97,100,101,114,46,95,95,101,113,95,95,99,
-    1,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,
-    67,0,0,0,115,26,0,0,0,116,0,0,124,0,0,106,
-    1,0,131,1,0,116,0,0,124,0,0,106,2,0,131,1,
-    0,65,83,41,1,78,41,3,218,4,104,97,115,104,114,106,
-    0,0,0,114,35,0,0,0,41,1,114,108,0,0,0,114,
-    4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,8,
-    95,95,104,97,115,104,95,95,57,3,0,0,115,2,0,0,
-    0,0,1,122,19,70,105,108,101,76,111,97,100,101,114,46,
-    95,95,104,97,115,104,95,95,99,2,0,0,0,0,0,0,
-    0,2,0,0,0,3,0,0,0,3,0,0,0,115,22,0,
-    0,0,116,0,0,116,1,0,124,0,0,131,2,0,106,2,
-    0,124,1,0,131,1,0,83,41,1,122,100,76,111,97,100,
-    32,97,32,109,111,100,117,108,101,32,102,114,111,109,32,97,
-    32,102,105,108,101,46,10,10,32,32,32,32,32,32,32,32,
-    84,104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,
-    101,112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,
-    101,120,101,99,95,109,111,100,117,108,101,40,41,32,105,110,
-    115,116,101,97,100,46,10,10,32,32,32,32,32,32,32,32,
-    41,3,218,5,115,117,112,101,114,114,211,0,0,0,114,194,
-    0,0,0,41,2,114,108,0,0,0,114,126,0,0,0,41,
-    1,114,212,0,0,0,114,4,0,0,0,114,5,0,0,0,
-    114,194,0,0,0,60,3,0,0,115,2,0,0,0,0,10,
-    122,22,70,105,108,101,76,111,97,100,101,114,46,108,111,97,
-    100,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,
-    0,2,0,0,0,1,0,0,0,67,0,0,0,115,7,0,
-    0,0,124,0,0,106,0,0,83,41,1,122,58,82,101,116,
-    117,114,110,32,116,104,101,32,112,97,116,104,32,116,111,32,
-    116,104,101,32,115,111,117,114,99,101,32,102,105,108,101,32,
-    97,115,32,102,111,117,110,100,32,98,121,32,116,104,101,32,
-    102,105,110,100,101,114,46,41,1,114,35,0,0,0,41,2,
-    114,108,0,0,0,114,126,0,0,0,114,4,0,0,0,114,
-    4,0,0,0,114,5,0,0,0,114,163,0,0,0,72,3,
-    0,0,115,2,0,0,0,0,3,122,23,70,105,108,101,76,
-    111,97,100,101,114,46,103,101,116,95,102,105,108,101,110,97,
-    109,101,99,2,0,0,0,0,0,0,0,3,0,0,0,8,
-    0,0,0,67,0,0,0,115,41,0,0,0,116,0,0,106,
-    1,0,124,1,0,100,1,0,131,2,0,143,17,0,125,2,
-    0,124,2,0,106,2,0,131,0,0,83,87,100,2,0,81,
-    88,100,2,0,83,41,3,122,39,82,101,116,117,114,110,32,
-    116,104,101,32,100,97,116,97,32,102,114,111,109,32,112,97,
-    116,104,32,97,115,32,114,97,119,32,98,121,116,101,115,46,
-    218,1,114,78,41,3,114,49,0,0,0,114,50,0,0,0,
-    90,4,114,101,97,100,41,3,114,108,0,0,0,114,35,0,
-    0,0,114,54,0,0,0,114,4,0,0,0,114,4,0,0,
-    0,114,5,0,0,0,114,201,0,0,0,77,3,0,0,115,
-    4,0,0,0,0,2,21,1,122,19,70,105,108,101,76,111,
-    97,100,101,114,46,103,101,116,95,100,97,116,97,41,11,114,
-    112,0,0,0,114,111,0,0,0,114,113,0,0,0,114,114,
-    0,0,0,114,188,0,0,0,114,214,0,0,0,114,216,0,
-    0,0,114,123,0,0,0,114,194,0,0,0,114,163,0,0,
-    0,114,201,0,0,0,114,4,0,0,0,114,4,0,0,0,
-    41,1,114,212,0,0,0,114,5,0,0,0,114,211,0,0,
-    0,42,3,0,0,115,14,0,0,0,12,3,6,2,12,6,
-    12,4,12,3,24,12,18,5,114,211,0,0,0,99,0,0,
-    0,0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,
-    0,0,115,64,0,0,0,101,0,0,90,1,0,100,0,0,
-    90,2,0,100,1,0,90,3,0,100,2,0,100,3,0,132,
-    0,0,90,4,0,100,4,0,100,5,0,132,0,0,90,5,
-    0,100,6,0,100,7,0,100,8,0,100,9,0,132,0,1,
-    90,6,0,100,10,0,83,41,11,218,16,83,111,117,114,99,
-    101,70,105,108,101,76,111,97,100,101,114,122,62,67,111,110,
-    99,114,101,116,101,32,105,109,112,108,101,109,101,110,116,97,
-    116,105,111,110,32,111,102,32,83,111,117,114,99,101,76,111,
-    97,100,101,114,32,117,115,105,110,103,32,116,104,101,32,102,
-    105,108,101,32,115,121,115,116,101,109,46,99,2,0,0,0,
-    0,0,0,0,3,0,0,0,3,0,0,0,67,0,0,0,
-    115,36,0,0,0,116,0,0,124,1,0,131,1,0,125,2,
-    0,105,2,0,124,2,0,106,1,0,100,1,0,54,124,2,
-    0,106,2,0,100,2,0,54,83,41,3,122,33,82,101,116,
-    117,114,110,32,116,104,101,32,109,101,116,97,100,97,116,97,
-    32,102,111,114,32,116,104,101,32,112,97,116,104,46,114,138,
-    0,0,0,114,139,0,0,0,41,3,114,39,0,0,0,218,
-    8,115,116,95,109,116,105,109,101,90,7,115,116,95,115,105,
-    122,101,41,3,114,108,0,0,0,114,35,0,0,0,114,209,
-    0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
-    0,0,114,198,0,0,0,87,3,0,0,115,4,0,0,0,
-    0,2,12,1,122,27,83,111,117,114,99,101,70,105,108,101,
-    76,111,97,100,101,114,46,112,97,116,104,95,115,116,97,116,
-    115,99,4,0,0,0,0,0,0,0,5,0,0,0,5,0,
-    0,0,67,0,0,0,115,34,0,0,0,116,0,0,124,1,
-    0,131,1,0,125,4,0,124,0,0,106,1,0,124,2,0,
-    124,3,0,100,1,0,124,4,0,131,2,1,83,41,2,78,
-    218,5,95,109,111,100,101,41,2,114,97,0,0,0,114,199,
-    0,0,0,41,5,114,108,0,0,0,114,90,0,0,0,114,
-    89,0,0,0,114,53,0,0,0,114,42,0,0,0,114,4,
-    0,0,0,114,4,0,0,0,114,5,0,0,0,114,200,0,
-    0,0,92,3,0,0,115,4,0,0,0,0,2,12,1,122,
-    32,83,111,117,114,99,101,70,105,108,101,76,111,97,100,101,
-    114,46,95,99,97,99,104,101,95,98,121,116,101,99,111,100,
-    101,114,221,0,0,0,105,182,1,0,0,99,3,0,0,0,
-    1,0,0,0,9,0,0,0,17,0,0,0,67,0,0,0,
-    115,53,1,0,0,116,0,0,124,1,0,131,1,0,92,2,
-    0,125,4,0,125,5,0,103,0,0,125,6,0,120,54,0,
-    124,4,0,114,80,0,116,1,0,124,4,0,131,1,0,12,
-    114,80,0,116,0,0,124,4,0,131,1,0,92,2,0,125,
-    4,0,125,7,0,124,6,0,106,2,0,124,7,0,131,1,
-    0,1,113,27,0,87,120,132,0,116,3,0,124,6,0,131,
-    1,0,68,93,118,0,125,7,0,116,4,0,124,4,0,124,
-    7,0,131,2,0,125,4,0,121,17,0,116,5,0,106,6,
-    0,124,4,0,131,1,0,1,87,113,94,0,4,116,7,0,
-    107,10,0,114,155,0,1,1,1,119,94,0,89,113,94,0,
-    4,116,8,0,107,10,0,114,211,0,1,125,8,0,1,122,
-    25,0,116,9,0,100,1,0,124,4,0,124,8,0,131,3,
-    0,1,100,2,0,83,87,89,100,2,0,100,2,0,125,8,
-    0,126,8,0,88,113,94,0,88,113,94,0,87,121,33,0,
-    116,10,0,124,1,0,124,2,0,124,3,0,131,3,0,1,
-    116,9,0,100,3,0,124,1,0,131,2,0,1,87,110,53,
-    0,4,116,8,0,107,10,0,114,48,1,1,125,8,0,1,
-    122,21,0,116,9,0,100,1,0,124,1,0,124,8,0,131,
-    3,0,1,87,89,100,2,0,100,2,0,125,8,0,126,8,
-    0,88,110,1,0,88,100,2,0,83,41,4,122,27,87,114,
-    105,116,101,32,98,121,116,101,115,32,100,97,116,97,32,116,
-    111,32,97,32,102,105,108,101,46,122,27,99,111,117,108,100,
-    32,110,111,116,32,99,114,101,97,116,101,32,123,33,114,125,
-    58,32,123,33,114,125,78,122,12,99,114,101,97,116,101,100,
-    32,123,33,114,125,41,11,114,38,0,0,0,114,46,0,0,
-    0,114,169,0,0,0,114,33,0,0,0,114,28,0,0,0,
-    114,3,0,0,0,90,5,109,107,100,105,114,218,15,70,105,
-    108,101,69,120,105,115,116,115,69,114,114,111,114,114,40,0,
-    0,0,114,105,0,0,0,114,55,0,0,0,41,9,114,108,
-    0,0,0,114,35,0,0,0,114,53,0,0,0,114,221,0,
-    0,0,218,6,112,97,114,101,110,116,114,94,0,0,0,114,
-    27,0,0,0,114,23,0,0,0,114,202,0,0,0,114,4,
-    0,0,0,114,4,0,0,0,114,5,0,0,0,114,199,0,
-    0,0,97,3,0,0,115,38,0,0,0,0,2,18,1,6,
-    2,22,1,18,1,17,2,19,1,15,1,3,1,17,1,13,
-    2,7,1,18,3,16,1,27,1,3,1,16,1,17,1,18,
-    2,122,25,83,111,117,114,99,101,70,105,108,101,76,111,97,
-    100,101,114,46,115,101,116,95,100,97,116,97,78,41,7,114,
-    112,0,0,0,114,111,0,0,0,114,113,0,0,0,114,114,
-    0,0,0,114,198,0,0,0,114,200,0,0,0,114,199,0,
-    0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,
-    0,114,5,0,0,0,114,219,0,0,0,83,3,0,0,115,
-    8,0,0,0,12,2,6,2,12,5,12,5,114,219,0,0,
-    0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,
-    0,0,64,0,0,0,115,46,0,0,0,101,0,0,90,1,
-    0,100,0,0,90,2,0,100,1,0,90,3,0,100,2,0,
-    100,3,0,132,0,0,90,4,0,100,4,0,100,5,0,132,
-    0,0,90,5,0,100,6,0,83,41,7,218,20,83,111,117,
-    114,99,101,108,101,115,115,70,105,108,101,76,111,97,100,101,
-    114,122,45,76,111,97,100,101,114,32,119,104,105,99,104,32,
-    104,97,110,100,108,101,115,32,115,111,117,114,99,101,108,101,
-    115,115,32,102,105,108,101,32,105,109,112,111,114,116,115,46,
-    99,2,0,0,0,0,0,0,0,5,0,0,0,6,0,0,
-    0,67,0,0,0,115,76,0,0,0,124,0,0,106,0,0,
-    124,1,0,131,1,0,125,2,0,124,0,0,106,1,0,124,
-    2,0,131,1,0,125,3,0,116,2,0,124,3,0,100,1,
-    0,124,1,0,100,2,0,124,2,0,131,1,2,125,4,0,
-    116,3,0,124,4,0,100,1,0,124,1,0,100,3,0,124,
-    2,0,131,1,2,83,41,4,78,114,106,0,0,0,114,35,
-    0,0,0,114,89,0,0,0,41,4,114,163,0,0,0,114,
-    201,0,0,0,114,146,0,0,0,114,152,0,0,0,41,5,
-    114,108,0,0,0,114,126,0,0,0,114,35,0,0,0,114,
-    53,0,0,0,114,210,0,0,0,114,4,0,0,0,114,4,
-    0,0,0,114,5,0,0,0,114,190,0,0,0,130,3,0,
-    0,115,8,0,0,0,0,1,15,1,15,1,24,1,122,29,
-    83,111,117,114,99,101,108,101,115,115,70,105,108,101,76,111,
+    0,0,114,190,0,0,0,23,4,0,0,115,2,0,0,0,
+    0,1,122,25,95,78,97,109,101,115,112,97,99,101,76,111,
     97,100,101,114,46,103,101,116,95,99,111,100,101,99,2,0,
     0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,
-    0,0,115,4,0,0,0,100,1,0,83,41,2,122,39,82,
-    101,116,117,114,110,32,78,111,110,101,32,97,115,32,116,104,
-    101,114,101,32,105,115,32,110,111,32,115,111,117,114,99,101,
-    32,99,111,100,101,46,78,114,4,0,0,0,41,2,114,108,
-    0,0,0,114,126,0,0,0,114,4,0,0,0,114,4,0,
-    0,0,114,5,0,0,0,114,203,0,0,0,136,3,0,0,
-    115,2,0,0,0,0,2,122,31,83,111,117,114,99,101,108,
-    101,115,115,70,105,108,101,76,111,97,100,101,114,46,103,101,
-    116,95,115,111,117,114,99,101,78,41,6,114,112,0,0,0,
-    114,111,0,0,0,114,113,0,0,0,114,114,0,0,0,114,
-    190,0,0,0,114,203,0,0,0,114,4,0,0,0,114,4,
-    0,0,0,114,4,0,0,0,114,5,0,0,0,114,224,0,
-    0,0,126,3,0,0,115,6,0,0,0,12,2,6,2,12,
-    6,114,224,0,0,0,99,0,0,0,0,0,0,0,0,0,
-    0,0,0,3,0,0,0,64,0,0,0,115,130,0,0,0,
+    0,0,115,4,0,0,0,100,1,0,83,41,2,122,42,85,
+    115,101,32,100,101,102,97,117,108,116,32,115,101,109,97,110,
+    116,105,99,115,32,102,111,114,32,109,111,100,117,108,101,32,
+    99,114,101,97,116,105,111,110,46,78,114,4,0,0,0,41,
+    2,114,108,0,0,0,114,133,0,0,0,114,4,0,0,0,
+    114,4,0,0,0,114,5,0,0,0,114,189,0,0,0,26,
+    4,0,0,115,0,0,0,0,122,30,95,78,97,109,101,115,
+    112,97,99,101,76,111,97,100,101,114,46,99,114,101,97,116,
+    101,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,
+    0,2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,
+    0,0,100,0,0,83,41,1,78,114,4,0,0,0,41,2,
+    114,108,0,0,0,114,134,0,0,0,114,4,0,0,0,114,
+    4,0,0,0,114,5,0,0,0,114,193,0,0,0,29,4,
+    0,0,115,2,0,0,0,0,1,122,28,95,78,97,109,101,
+    115,112,97,99,101,76,111,97,100,101,114,46,101,120,101,99,
+    95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0,
+    2,0,0,0,3,0,0,0,67,0,0,0,115,29,0,0,
+    0,116,0,0,100,1,0,124,0,0,106,1,0,131,2,0,
+    1,116,2,0,124,0,0,124,1,0,131,2,0,83,41,2,
+    122,98,76,111,97,100,32,97,32,110,97,109,101,115,112,97,
+    99,101,32,109,111,100,117,108,101,46,10,10,32,32,32,32,
+    32,32,32,32,84,104,105,115,32,109,101,116,104,111,100,32,
+    105,115,32,100,101,112,114,101,99,97,116,101,100,46,32,32,
+    85,115,101,32,101,120,101,99,95,109,111,100,117,108,101,40,
+    41,32,105,110,115,116,101,97,100,46,10,10,32,32,32,32,
+    32,32,32,32,122,38,110,97,109,101,115,112,97,99,101,32,
+    109,111,100,117,108,101,32,108,111,97,100,101,100,32,119,105,
+    116,104,32,112,97,116,104,32,123,33,114,125,41,3,114,105,
+    0,0,0,114,236,0,0,0,114,135,0,0,0,41,2,114,
+    108,0,0,0,114,126,0,0,0,114,4,0,0,0,114,4,
+    0,0,0,114,5,0,0,0,114,194,0,0,0,32,4,0,
+    0,115,4,0,0,0,0,7,16,1,122,28,95,78,97,109,
+    101,115,112,97,99,101,76,111,97,100,101,114,46,108,111,97,
+    100,95,109,111,100,117,108,101,78,41,12,114,112,0,0,0,
+    114,111,0,0,0,114,113,0,0,0,114,188,0,0,0,114,
+    186,0,0,0,114,251,0,0,0,114,162,0,0,0,114,203,
+    0,0,0,114,190,0,0,0,114,189,0,0,0,114,193,0,
+    0,0,114,194,0,0,0,114,4,0,0,0,114,4,0,0,
+    0,114,4,0,0,0,114,5,0,0,0,114,250,0,0,0,
+    4,4,0,0,115,16,0,0,0,12,1,12,3,18,9,12,
+    3,12,3,12,3,12,3,12,3,114,250,0,0,0,99,0,
+    0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,64,
+    0,0,0,115,160,0,0,0,101,0,0,90,1,0,100,0,
+    0,90,2,0,100,1,0,90,3,0,101,4,0,100,2,0,
+    100,3,0,132,0,0,131,1,0,90,5,0,101,4,0,100,
+    4,0,100,5,0,132,0,0,131,1,0,90,6,0,101,4,
+    0,100,6,0,100,7,0,132,0,0,131,1,0,90,7,0,
+    101,4,0,100,8,0,100,9,0,132,0,0,131,1,0,90,
+    8,0,101,4,0,100,10,0,100,11,0,100,12,0,132,1,
+    0,131,1,0,90,9,0,101,4,0,100,10,0,100,10,0,
+    100,13,0,100,14,0,132,2,0,131,1,0,90,10,0,101,
+    4,0,100,10,0,100,15,0,100,16,0,132,1,0,131,1,
+    0,90,11,0,100,10,0,83,41,17,218,10,80,97,116,104,
+    70,105,110,100,101,114,122,62,77,101,116,97,32,112,97,116,
+    104,32,102,105,110,100,101,114,32,102,111,114,32,115,121,115,
+    46,112,97,116,104,32,97,110,100,32,112,97,99,107,97,103,
+    101,32,95,95,112,97,116,104,95,95,32,97,116,116,114,105,
+    98,117,116,101,115,46,99,1,0,0,0,0,0,0,0,2,
+    0,0,0,4,0,0,0,67,0,0,0,115,55,0,0,0,
+    120,48,0,116,0,0,106,1,0,106,2,0,131,0,0,68,
+    93,31,0,125,1,0,116,3,0,124,1,0,100,1,0,131,
+    2,0,114,16,0,124,1,0,106,4,0,131,0,0,1,113,
+    16,0,87,100,2,0,83,41,3,122,125,67,97,108,108,32,
+    116,104,101,32,105,110,118,97,108,105,100,97,116,101,95,99,
+    97,99,104,101,115,40,41,32,109,101,116,104,111,100,32,111,
+    110,32,97,108,108,32,112,97,116,104,32,101,110,116,114,121,
+    32,102,105,110,100,101,114,115,10,32,32,32,32,32,32,32,
+    32,115,116,111,114,101,100,32,105,110,32,115,121,115,46,112,
+    97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,99,
+    104,101,115,32,40,119,104,101,114,101,32,105,109,112,108,101,
+    109,101,110,116,101,100,41,46,218,17,105,110,118,97,108,105,
+    100,97,116,101,95,99,97,99,104,101,115,78,41,5,114,7,
+    0,0,0,218,19,112,97,116,104,95,105,109,112,111,114,116,
+    101,114,95,99,97,99,104,101,218,6,118,97,108,117,101,115,
+    114,115,0,0,0,114,253,0,0,0,41,2,114,174,0,0,
+    0,218,6,102,105,110,100,101,114,114,4,0,0,0,114,4,
+    0,0,0,114,5,0,0,0,114,253,0,0,0,49,4,0,
+    0,115,6,0,0,0,0,4,22,1,15,1,122,28,80,97,
+    116,104,70,105,110,100,101,114,46,105,110,118,97,108,105,100,
+    97,116,101,95,99,97,99,104,101,115,99,2,0,0,0,0,
+    0,0,0,3,0,0,0,12,0,0,0,67,0,0,0,115,
+    107,0,0,0,116,0,0,106,1,0,100,1,0,107,9,0,
+    114,41,0,116,0,0,106,1,0,12,114,41,0,116,2,0,
+    106,3,0,100,2,0,116,4,0,131,2,0,1,120,59,0,
+    116,0,0,106,1,0,68,93,44,0,125,2,0,121,14,0,
+    124,2,0,124,1,0,131,1,0,83,87,113,51,0,4,116,
+    5,0,107,10,0,114,94,0,1,1,1,119,51,0,89,113,
+    51,0,88,113,51,0,87,100,1,0,83,100,1,0,83,41,
+    3,122,113,83,101,97,114,99,104,32,115,101,113,117,101,110,
+    99,101,32,111,102,32,104,111,111,107,115,32,102,111,114,32,
+    97,32,102,105,110,100,101,114,32,102,111,114,32,39,112,97,
+    116,104,39,46,10,10,32,32,32,32,32,32,32,32,73,102,
+    32,39,104,111,111,107,115,39,32,105,115,32,102,97,108,115,
+    101,32,116,104,101,110,32,117,115,101,32,115,121,115,46,112,
+    97,116,104,95,104,111,111,107,115,46,10,10,32,32,32,32,
+    32,32,32,32,78,122,23,115,121,115,46,112,97,116,104,95,
+    104,111,111,107,115,32,105,115,32,101,109,112,116,121,41,6,
+    114,7,0,0,0,218,10,112,97,116,104,95,104,111,111,107,
+    115,114,60,0,0,0,114,61,0,0,0,114,125,0,0,0,
+    114,107,0,0,0,41,3,114,174,0,0,0,114,35,0,0,
+    0,90,4,104,111,111,107,114,4,0,0,0,114,4,0,0,
+    0,114,5,0,0,0,218,11,95,112,97,116,104,95,104,111,
+    111,107,115,57,4,0,0,115,16,0,0,0,0,7,25,1,
+    16,1,16,1,3,1,14,1,13,1,12,2,122,22,80,97,
+    116,104,70,105,110,100,101,114,46,95,112,97,116,104,95,104,
+    111,111,107,115,99,2,0,0,0,0,0,0,0,3,0,0,
+    0,19,0,0,0,67,0,0,0,115,123,0,0,0,124,1,
+    0,100,1,0,107,2,0,114,53,0,121,16,0,116,0,0,
+    106,1,0,131,0,0,125,1,0,87,110,22,0,4,116,2,
+    0,107,10,0,114,52,0,1,1,1,100,2,0,83,89,110,
+    1,0,88,121,17,0,116,3,0,106,4,0,124,1,0,25,
+    125,2,0,87,110,46,0,4,116,5,0,107,10,0,114,118,
+    0,1,1,1,124,0,0,106,6,0,124,1,0,131,1,0,
+    125,2,0,124,2,0,116,3,0,106,4,0,124,1,0,60,
+    89,110,1,0,88,124,2,0,83,41,3,122,210,71,101,116,
+    32,116,104,101,32,102,105,110,100,101,114,32,102,111,114,32,
+    116,104,101,32,112,97,116,104,32,101,110,116,114,121,32,102,
+    114,111,109,32,115,121,115,46,112,97,116,104,95,105,109,112,
+    111,114,116,101,114,95,99,97,99,104,101,46,10,10,32,32,
+    32,32,32,32,32,32,73,102,32,116,104,101,32,112,97,116,
+    104,32,101,110,116,114,121,32,105,115,32,110,111,116,32,105,
+    110,32,116,104,101,32,99,97,99,104,101,44,32,102,105,110,
+    100,32,116,104,101,32,97,112,112,114,111,112,114,105,97,116,
+    101,32,102,105,110,100,101,114,10,32,32,32,32,32,32,32,
+    32,97,110,100,32,99,97,99,104,101,32,105,116,46,32,73,
+    102,32,110,111,32,102,105,110,100,101,114,32,105,115,32,97,
+    118,97,105,108,97,98,108,101,44,32,115,116,111,114,101,32,
+    78,111,110,101,46,10,10,32,32,32,32,32,32,32,32,114,
+    30,0,0,0,78,41,7,114,3,0,0,0,114,45,0,0,
+    0,218,17,70,105,108,101,78,111,116,70,111,117,110,100,69,
+    114,114,111,114,114,7,0,0,0,114,254,0,0,0,114,142,
+    0,0,0,114,2,1,0,0,41,3,114,174,0,0,0,114,
+    35,0,0,0,114,0,1,0,0,114,4,0,0,0,114,4,
+    0,0,0,114,5,0,0,0,218,20,95,112,97,116,104,95,
+    105,109,112,111,114,116,101,114,95,99,97,99,104,101,74,4,
+    0,0,115,22,0,0,0,0,8,12,1,3,1,16,1,13,
+    3,9,1,3,1,17,1,13,1,15,1,18,1,122,31,80,
+    97,116,104,70,105,110,100,101,114,46,95,112,97,116,104,95,
+    105,109,112,111,114,116,101,114,95,99,97,99,104,101,99,3,
+    0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,67,
+    0,0,0,115,116,0,0,0,116,0,0,124,2,0,100,1,
+    0,131,2,0,114,39,0,124,2,0,106,1,0,124,1,0,
+    131,1,0,92,2,0,125,3,0,125,4,0,110,21,0,124,
+    2,0,106,2,0,124,1,0,131,1,0,125,3,0,103,0,
+    0,125,4,0,124,3,0,100,0,0,107,9,0,114,85,0,
+    116,3,0,124,1,0,124,3,0,131,2,0,83,116,4,0,
+    106,5,0,124,1,0,100,0,0,131,2,0,125,5,0,124,
+    4,0,124,5,0,95,6,0,124,5,0,83,41,2,78,114,
+    124,0,0,0,41,7,114,115,0,0,0,114,124,0,0,0,
+    114,185,0,0,0,114,131,0,0,0,114,121,0,0,0,114,
+    166,0,0,0,114,164,0,0,0,41,6,114,174,0,0,0,
+    114,126,0,0,0,114,0,1,0,0,114,127,0,0,0,114,
+    128,0,0,0,114,133,0,0,0,114,4,0,0,0,114,4,
+    0,0,0,114,5,0,0,0,218,16,95,108,101,103,97,99,
+    121,95,103,101,116,95,115,112,101,99,96,4,0,0,115,18,
+    0,0,0,0,4,15,1,24,2,15,1,6,1,12,1,13,
+    1,18,1,9,1,122,27,80,97,116,104,70,105,110,100,101,
+    114,46,95,108,101,103,97,99,121,95,103,101,116,95,115,112,
+    101,99,78,99,4,0,0,0,0,0,0,0,9,0,0,0,
+    5,0,0,0,67,0,0,0,115,243,0,0,0,103,0,0,
+    125,4,0,120,230,0,124,2,0,68,93,191,0,125,5,0,
+    116,0,0,124,5,0,116,1,0,116,2,0,102,2,0,131,
+    2,0,115,43,0,113,13,0,124,0,0,106,3,0,124,5,
+    0,131,1,0,125,6,0,124,6,0,100,1,0,107,9,0,
+    114,13,0,116,4,0,124,6,0,100,2,0,131,2,0,114,
+    106,0,124,6,0,106,5,0,124,1,0,124,3,0,131,2,
+    0,125,7,0,110,18,0,124,0,0,106,6,0,124,1,0,
+    124,6,0,131,2,0,125,7,0,124,7,0,100,1,0,107,
+    8,0,114,139,0,113,13,0,124,7,0,106,7,0,100,1,
+    0,107,9,0,114,158,0,124,7,0,83,124,7,0,106,8,
+    0,125,8,0,124,8,0,100,1,0,107,8,0,114,191,0,
+    116,9,0,100,3,0,131,1,0,130,1,0,124,4,0,106,
+    10,0,124,8,0,131,1,0,1,113,13,0,87,116,11,0,
+    106,12,0,124,1,0,100,1,0,131,2,0,125,7,0,124,
+    4,0,124,7,0,95,8,0,124,7,0,83,100,1,0,83,
+    41,4,122,63,70,105,110,100,32,116,104,101,32,108,111,97,
+    100,101,114,32,111,114,32,110,97,109,101,115,112,97,99,101,
+    95,112,97,116,104,32,102,111,114,32,116,104,105,115,32,109,
+    111,100,117,108,101,47,112,97,99,107,97,103,101,32,110,97,
+    109,101,46,78,114,184,0,0,0,122,19,115,112,101,99,32,
+    109,105,115,115,105,110,103,32,108,111,97,100,101,114,41,13,
+    114,148,0,0,0,114,69,0,0,0,218,5,98,121,116,101,
+    115,114,4,1,0,0,114,115,0,0,0,114,184,0,0,0,
+    114,5,1,0,0,114,127,0,0,0,114,164,0,0,0,114,
+    107,0,0,0,114,154,0,0,0,114,121,0,0,0,114,166,
+    0,0,0,41,9,114,174,0,0,0,114,126,0,0,0,114,
+    35,0,0,0,114,183,0,0,0,218,14,110,97,109,101,115,
+    112,97,99,101,95,112,97,116,104,90,5,101,110,116,114,121,
+    114,0,1,0,0,114,133,0,0,0,114,128,0,0,0,114,
+    4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,9,
+    95,103,101,116,95,115,112,101,99,111,4,0,0,115,40,0,
+    0,0,0,5,6,1,13,1,21,1,3,1,15,1,12,1,
+    15,1,21,2,18,1,12,1,3,1,15,1,4,1,9,1,
+    12,1,12,5,17,2,18,1,9,1,122,20,80,97,116,104,
+    70,105,110,100,101,114,46,95,103,101,116,95,115,112,101,99,
+    99,4,0,0,0,0,0,0,0,6,0,0,0,4,0,0,
+    0,67,0,0,0,115,140,0,0,0,124,2,0,100,1,0,
+    107,8,0,114,21,0,116,0,0,106,1,0,125,2,0,124,
+    0,0,106,2,0,124,1,0,124,2,0,124,3,0,131,3,
+    0,125,4,0,124,4,0,100,1,0,107,8,0,114,58,0,
+    100,1,0,83,124,4,0,106,3,0,100,1,0,107,8,0,
+    114,132,0,124,4,0,106,4,0,125,5,0,124,5,0,114,
+    125,0,100,2,0,124,4,0,95,5,0,116,6,0,124,1,
+    0,124,5,0,124,0,0,106,2,0,131,3,0,124,4,0,
+    95,4,0,124,4,0,83,100,1,0,83,110,4,0,124,4,
+    0,83,100,1,0,83,41,3,122,98,102,105,110,100,32,116,
+    104,101,32,109,111,100,117,108,101,32,111,110,32,115,121,115,
+    46,112,97,116,104,32,111,114,32,39,112,97,116,104,39,32,
+    98,97,115,101,100,32,111,110,32,115,121,115,46,112,97,116,
+    104,95,104,111,111,107,115,32,97,110,100,10,32,32,32,32,
+    32,32,32,32,115,121,115,46,112,97,116,104,95,105,109,112,
+    111,114,116,101,114,95,99,97,99,104,101,46,78,90,9,110,
+    97,109,101,115,112,97,99,101,41,7,114,7,0,0,0,114,
+    35,0,0,0,114,8,1,0,0,114,127,0,0,0,114,164,
+    0,0,0,114,161,0,0,0,114,234,0,0,0,41,6,114,
+    174,0,0,0,114,126,0,0,0,114,35,0,0,0,114,183,
+    0,0,0,114,133,0,0,0,114,7,1,0,0,114,4,0,
+    0,0,114,4,0,0,0,114,5,0,0,0,114,184,0,0,
+    0,143,4,0,0,115,26,0,0,0,0,4,12,1,9,1,
+    21,1,12,1,4,1,15,1,9,1,6,3,9,1,24,1,
+    4,2,7,2,122,20,80,97,116,104,70,105,110,100,101,114,
+    46,102,105,110,100,95,115,112,101,99,99,3,0,0,0,0,
+    0,0,0,4,0,0,0,3,0,0,0,67,0,0,0,115,
+    41,0,0,0,124,0,0,106,0,0,124,1,0,124,2,0,
+    131,2,0,125,3,0,124,3,0,100,1,0,107,8,0,114,
+    34,0,100,1,0,83,124,3,0,106,1,0,83,41,2,122,
+    170,102,105,110,100,32,116,104,101,32,109,111,100,117,108,101,
+    32,111,110,32,115,121,115,46,112,97,116,104,32,111,114,32,
+    39,112,97,116,104,39,32,98,97,115,101,100,32,111,110,32,
+    115,121,115,46,112,97,116,104,95,104,111,111,107,115,32,97,
+    110,100,10,32,32,32,32,32,32,32,32,115,121,115,46,112,
+    97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,99,
+    104,101,46,10,10,32,32,32,32,32,32,32,32,84,104,105,
+    115,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,
+    101,99,97,116,101,100,46,32,32,85,115,101,32,102,105,110,
+    100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,
+    46,10,10,32,32,32,32,32,32,32,32,78,41,2,114,184,
+    0,0,0,114,127,0,0,0,41,4,114,174,0,0,0,114,
+    126,0,0,0,114,35,0,0,0,114,133,0,0,0,114,4,
+    0,0,0,114,4,0,0,0,114,5,0,0,0,114,185,0,
+    0,0,165,4,0,0,115,8,0,0,0,0,8,18,1,12,
+    1,4,1,122,22,80,97,116,104,70,105,110,100,101,114,46,
+    102,105,110,100,95,109,111,100,117,108,101,41,12,114,112,0,
+    0,0,114,111,0,0,0,114,113,0,0,0,114,114,0,0,
+    0,114,186,0,0,0,114,253,0,0,0,114,2,1,0,0,
+    114,4,1,0,0,114,5,1,0,0,114,8,1,0,0,114,
+    184,0,0,0,114,185,0,0,0,114,4,0,0,0,114,4,
+    0,0,0,114,4,0,0,0,114,5,0,0,0,114,252,0,
+    0,0,45,4,0,0,115,22,0,0,0,12,2,6,2,18,
+    8,18,17,18,22,18,15,3,1,18,31,3,1,21,21,3,
+    1,114,252,0,0,0,99,0,0,0,0,0,0,0,0,0,
+    0,0,0,3,0,0,0,64,0,0,0,115,133,0,0,0,
     101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,90,
     3,0,100,2,0,100,3,0,132,0,0,90,4,0,100,4,
-    0,100,5,0,132,0,0,90,5,0,100,6,0,100,7,0,
-    132,0,0,90,6,0,101,7,0,100,8,0,100,9,0,132,
-    0,0,131,1,0,90,8,0,100,10,0,100,11,0,132,0,
-    0,90,9,0,100,12,0,100,13,0,132,0,0,90,10,0,
-    100,14,0,100,15,0,132,0,0,90,11,0,101,7,0,100,
-    16,0,100,17,0,132,0,0,131,1,0,90,12,0,100,18,
-    0,83,41,19,218,19,69,120,116,101,110,115,105,111,110,70,
-    105,108,101,76,111,97,100,101,114,122,93,76,111,97,100,101,
-    114,32,102,111,114,32,101,120,116,101,110,115,105,111,110,32,
-    109,111,100,117,108,101,115,46,10,10,32,32,32,32,84,104,
-    101,32,99,111,110,115,116,114,117,99,116,111,114,32,105,115,
-    32,100,101,115,105,103,110,101,100,32,116,111,32,119,111,114,
-    107,32,119,105,116,104,32,70,105,108,101,70,105,110,100,101,
-    114,46,10,10,32,32,32,32,99,3,0,0,0,0,0,0,
-    0,3,0,0,0,2,0,0,0,67,0,0,0,115,22,0,
-    0,0,124,1,0,124,0,0,95,0,0,124,2,0,124,0,
-    0,95,1,0,100,0,0,83,41,1,78,41,2,114,106,0,
-    0,0,114,35,0,0,0,41,3,114,108,0,0,0,114,106,
-    0,0,0,114,35,0,0,0,114,4,0,0,0,114,4,0,
-    0,0,114,5,0,0,0,114,188,0,0,0,153,3,0,0,
-    115,4,0,0,0,0,1,9,1,122,28,69,120,116,101,110,
-    115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,95,
-    95,105,110,105,116,95,95,99,2,0,0,0,0,0,0,0,
-    2,0,0,0,2,0,0,0,67,0,0,0,115,34,0,0,
-    0,124,0,0,106,0,0,124,1,0,106,0,0,107,2,0,
-    111,33,0,124,0,0,106,1,0,124,1,0,106,1,0,107,
-    2,0,83,41,1,78,41,2,114,212,0,0,0,114,118,0,
-    0,0,41,2,114,108,0,0,0,114,213,0,0,0,114,4,
-    0,0,0,114,4,0,0,0,114,5,0,0,0,114,214,0,
-    0,0,157,3,0,0,115,4,0,0,0,0,1,18,1,122,
-    26,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,
-    97,100,101,114,46,95,95,101,113,95,95,99,1,0,0,0,
-    0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,
-    115,26,0,0,0,116,0,0,124,0,0,106,1,0,131,1,
-    0,116,0,0,124,0,0,106,2,0,131,1,0,65,83,41,
-    1,78,41,3,114,215,0,0,0,114,106,0,0,0,114,35,
-    0,0,0,41,1,114,108,0,0,0,114,4,0,0,0,114,
-    4,0,0,0,114,5,0,0,0,114,216,0,0,0,161,3,
-    0,0,115,2,0,0,0,0,1,122,28,69,120,116,101,110,
-    115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,95,
-    95,104,97,115,104,95,95,99,2,0,0,0,0,0,0,0,
-    4,0,0,0,11,0,0,0,67,0,0,0,115,183,0,0,
-    0,116,0,0,106,1,0,124,1,0,131,1,0,143,32,0,
-    1,116,0,0,106,2,0,116,3,0,106,4,0,124,1,0,
-    124,0,0,106,5,0,131,3,0,125,2,0,87,100,1,0,
-    81,88,116,6,0,100,2,0,124,0,0,106,5,0,131,2,
-    0,1,124,0,0,106,7,0,124,1,0,131,1,0,125,3,
-    0,124,3,0,114,127,0,116,8,0,124,2,0,100,3,0,
-    131,2,0,12,114,127,0,116,9,0,124,0,0,106,5,0,
-    131,1,0,100,4,0,25,103,1,0,124,2,0,95,10,0,
-    124,0,0,124,2,0,95,11,0,124,2,0,106,12,0,124,
-    2,0,95,13,0,124,3,0,115,179,0,124,2,0,106,13,
-    0,106,14,0,100,5,0,131,1,0,100,4,0,25,124,2,
-    0,95,13,0,124,2,0,83,41,6,122,25,76,111,97,100,
-    32,97,110,32,101,120,116,101,110,115,105,111,110,32,109,111,
-    100,117,108,101,46,78,122,33,101,120,116,101,110,115,105,111,
-    110,32,109,111,100,117,108,101,32,108,111,97,100,101,100,32,
-    102,114,111,109,32,123,33,114,125,218,8,95,95,112,97,116,
-    104,95,95,114,59,0,0,0,114,58,0,0,0,41,15,114,
-    121,0,0,0,90,13,95,77,97,110,97,103,101,82,101,108,
-    111,97,100,114,191,0,0,0,114,150,0,0,0,90,12,108,
-    111,97,100,95,100,121,110,97,109,105,99,114,35,0,0,0,
-    114,105,0,0,0,114,162,0,0,0,114,115,0,0,0,114,
-    38,0,0,0,114,226,0,0,0,218,10,95,95,108,111,97,
-    100,101,114,95,95,114,112,0,0,0,218,11,95,95,112,97,
-    99,107,97,103,101,95,95,114,32,0,0,0,41,4,114,108,
-    0,0,0,114,126,0,0,0,114,134,0,0,0,114,162,0,
-    0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
-    0,114,194,0,0,0,164,3,0,0,115,24,0,0,0,0,
-    5,16,1,12,1,21,1,16,1,15,1,22,1,25,1,9,
-    1,12,1,6,1,25,1,122,31,69,120,116,101,110,115,105,
-    111,110,70,105,108,101,76,111,97,100,101,114,46,108,111,97,
-    100,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,
-    0,2,0,0,0,4,0,0,0,3,0,0,0,115,48,0,
-    0,0,116,0,0,124,0,0,106,1,0,131,1,0,100,1,
-    0,25,137,0,0,116,2,0,135,0,0,102,1,0,100,2,
-    0,100,3,0,134,0,0,116,3,0,68,131,1,0,131,1,
-    0,83,41,4,122,49,82,101,116,117,114,110,32,84,114,117,
-    101,32,105,102,32,116,104,101,32,101,120,116,101,110,115,105,
-    111,110,32,109,111,100,117,108,101,32,105,115,32,97,32,112,
-    97,99,107,97,103,101,46,114,29,0,0,0,99,1,0,0,
-    0,0,0,0,0,2,0,0,0,4,0,0,0,51,0,0,
-    0,115,31,0,0,0,124,0,0,93,21,0,125,1,0,136,
-    0,0,100,0,0,124,1,0,23,107,2,0,86,1,113,3,
-    0,100,1,0,83,41,2,114,188,0,0,0,78,114,4,0,
-    0,0,41,2,114,22,0,0,0,218,6,115,117,102,102,105,
-    120,41,1,218,9,102,105,108,101,95,110,97,109,101,114,4,
-    0,0,0,114,5,0,0,0,250,9,60,103,101,110,101,120,
-    112,114,62,185,3,0,0,115,2,0,0,0,6,1,122,49,
-    69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,
-    100,101,114,46,105,115,95,112,97,99,107,97,103,101,46,60,
-    108,111,99,97,108,115,62,46,60,103,101,110,101,120,112,114,
-    62,41,4,114,38,0,0,0,114,35,0,0,0,218,3,97,
-    110,121,218,18,69,88,84,69,78,83,73,79,78,95,83,85,
-    70,70,73,88,69,83,41,2,114,108,0,0,0,114,126,0,
-    0,0,114,4,0,0,0,41,1,114,230,0,0,0,114,5,
-    0,0,0,114,162,0,0,0,182,3,0,0,115,6,0,0,
-    0,0,2,19,1,18,1,122,30,69,120,116,101,110,115,105,
-    111,110,70,105,108,101,76,111,97,100,101,114,46,105,115,95,
-    112,97,99,107,97,103,101,99,2,0,0,0,0,0,0,0,
-    2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0,
-    0,100,1,0,83,41,2,122,63,82,101,116,117,114,110,32,
-    78,111,110,101,32,97,115,32,97,110,32,101,120,116,101,110,
-    115,105,111,110,32,109,111,100,117,108,101,32,99,97,110,110,
-    111,116,32,99,114,101,97,116,101,32,97,32,99,111,100,101,
-    32,111,98,106,101,99,116,46,78,114,4,0,0,0,41,2,
-    114,108,0,0,0,114,126,0,0,0,114,4,0,0,0,114,
-    4,0,0,0,114,5,0,0,0,114,190,0,0,0,188,3,
-    0,0,115,2,0,0,0,0,2,122,28,69,120,116,101,110,
-    115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,103,
-    101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0,
-    2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0,
-    0,100,1,0,83,41,2,122,53,82,101,116,117,114,110,32,
-    78,111,110,101,32,97,115,32,101,120,116,101,110,115,105,111,
-    110,32,109,111,100,117,108,101,115,32,104,97,118,101,32,110,
-    111,32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,
-    4,0,0,0,41,2,114,108,0,0,0,114,126,0,0,0,
+    0,100,5,0,132,0,0,90,5,0,101,6,0,90,7,0,
+    100,6,0,100,7,0,132,0,0,90,8,0,100,8,0,100,
+    9,0,132,0,0,90,9,0,100,10,0,100,11,0,100,12,
+    0,132,1,0,90,10,0,100,13,0,100,14,0,132,0,0,
+    90,11,0,101,12,0,100,15,0,100,16,0,132,0,0,131,
+    1,0,90,13,0,100,17,0,100,18,0,132,0,0,90,14,
+    0,100,10,0,83,41,19,218,10,70,105,108,101,70,105,110,
+    100,101,114,122,172,70,105,108,101,45,98,97,115,101,100,32,
+    102,105,110,100,101,114,46,10,10,32,32,32,32,73,110,116,
+    101,114,97,99,116,105,111,110,115,32,119,105,116,104,32,116,
+    104,101,32,102,105,108,101,32,115,121,115,116,101,109,32,97,
+    114,101,32,99,97,99,104,101,100,32,102,111,114,32,112,101,
+    114,102,111,114,109,97,110,99,101,44,32,98,101,105,110,103,
+    10,32,32,32,32,114,101,102,114,101,115,104,101,100,32,119,
+    104,101,110,32,116,104,101,32,100,105,114,101,99,116,111,114,
+    121,32,116,104,101,32,102,105,110,100,101,114,32,105,115,32,
+    104,97,110,100,108,105,110,103,32,104,97,115,32,98,101,101,
+    110,32,109,111,100,105,102,105,101,100,46,10,10,32,32,32,
+    32,99,2,0,0,0,0,0,0,0,5,0,0,0,5,0,
+    0,0,7,0,0,0,115,122,0,0,0,103,0,0,125,3,
+    0,120,52,0,124,2,0,68,93,44,0,92,2,0,137,0,
+    0,125,4,0,124,3,0,106,0,0,135,0,0,102,1,0,
+    100,1,0,100,2,0,134,0,0,124,4,0,68,131,1,0,
+    131,1,0,1,113,13,0,87,124,3,0,124,0,0,95,1,
+    0,124,1,0,112,79,0,100,3,0,124,0,0,95,2,0,
+    100,6,0,124,0,0,95,3,0,116,4,0,131,0,0,124,
+    0,0,95,5,0,116,4,0,131,0,0,124,0,0,95,6,
+    0,100,5,0,83,41,7,122,154,73,110,105,116,105,97,108,
+    105,122,101,32,119,105,116,104,32,116,104,101,32,112,97,116,
+    104,32,116,111,32,115,101,97,114,99,104,32,111,110,32,97,
+    110,100,32,97,32,118,97,114,105,97,98,108,101,32,110,117,
+    109,98,101,114,32,111,102,10,32,32,32,32,32,32,32,32,
+    50,45,116,117,112,108,101,115,32,99,111,110,116,97,105,110,
+    105,110,103,32,116,104,101,32,108,111,97,100,101,114,32,97,
+    110,100,32,116,104,101,32,102,105,108,101,32,115,117,102,102,
+    105,120,101,115,32,116,104,101,32,108,111,97,100,101,114,10,
+    32,32,32,32,32,32,32,32,114,101,99,111,103,110,105,122,
+    101,115,46,99,1,0,0,0,0,0,0,0,2,0,0,0,
+    3,0,0,0,51,0,0,0,115,27,0,0,0,124,0,0,
+    93,17,0,125,1,0,124,1,0,136,0,0,102,2,0,86,
+    1,113,3,0,100,0,0,83,41,1,78,114,4,0,0,0,
+    41,2,114,22,0,0,0,114,229,0,0,0,41,1,114,127,
+    0,0,0,114,4,0,0,0,114,5,0,0,0,114,231,0,
+    0,0,194,4,0,0,115,2,0,0,0,6,0,122,38,70,
+    105,108,101,70,105,110,100,101,114,46,95,95,105,110,105,116,
+    95,95,46,60,108,111,99,97,108,115,62,46,60,103,101,110,
+    101,120,112,114,62,114,58,0,0,0,114,29,0,0,0,78,
+    114,87,0,0,0,41,7,114,154,0,0,0,218,8,95,108,
+    111,97,100,101,114,115,114,35,0,0,0,218,11,95,112,97,
+    116,104,95,109,116,105,109,101,218,3,115,101,116,218,11,95,
+    112,97,116,104,95,99,97,99,104,101,218,19,95,114,101,108,
+    97,120,101,100,95,112,97,116,104,95,99,97,99,104,101,41,
+    5,114,108,0,0,0,114,35,0,0,0,218,14,108,111,97,
+    100,101,114,95,100,101,116,97,105,108,115,90,7,108,111,97,
+    100,101,114,115,114,171,0,0,0,114,4,0,0,0,41,1,
+    114,127,0,0,0,114,5,0,0,0,114,188,0,0,0,188,
+    4,0,0,115,16,0,0,0,0,4,6,1,19,1,36,1,
+    9,2,15,1,9,1,12,1,122,19,70,105,108,101,70,105,
+    110,100,101,114,46,95,95,105,110,105,116,95,95,99,1,0,
+    0,0,0,0,0,0,1,0,0,0,2,0,0,0,67,0,
+    0,0,115,13,0,0,0,100,3,0,124,0,0,95,0,0,
+    100,2,0,83,41,4,122,31,73,110,118,97,108,105,100,97,
+    116,101,32,116,104,101,32,100,105,114,101,99,116,111,114,121,
+    32,109,116,105,109,101,46,114,29,0,0,0,78,114,87,0,
+    0,0,41,1,114,11,1,0,0,41,1,114,108,0,0,0,
     114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
-    203,0,0,0,192,3,0,0,115,2,0,0,0,0,2,122,
-    30,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,
-    97,100,101,114,46,103,101,116,95,115,111,117,114,99,101,99,
-    2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,
-    67,0,0,0,115,7,0,0,0,124,0,0,106,0,0,83,
-    41,1,122,58,82,101,116,117,114,110,32,116,104,101,32,112,
-    97,116,104,32,116,111,32,116,104,101,32,115,111,117,114,99,
-    101,32,102,105,108,101,32,97,115,32,102,111,117,110,100,32,
-    98,121,32,116,104,101,32,102,105,110,100,101,114,46,41,1,
-    114,35,0,0,0,41,2,114,108,0,0,0,114,126,0,0,
-    0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
-    114,163,0,0,0,196,3,0,0,115,2,0,0,0,0,3,
-    122,32,69,120,116,101,110,115,105,111,110,70,105,108,101,76,
-    111,97,100,101,114,46,103,101,116,95,102,105,108,101,110,97,
-    109,101,78,41,13,114,112,0,0,0,114,111,0,0,0,114,
-    113,0,0,0,114,114,0,0,0,114,188,0,0,0,114,214,
-    0,0,0,114,216,0,0,0,114,123,0,0,0,114,194,0,
-    0,0,114,162,0,0,0,114,190,0,0,0,114,203,0,0,
-    0,114,163,0,0,0,114,4,0,0,0,114,4,0,0,0,
-    114,4,0,0,0,114,5,0,0,0,114,225,0,0,0,145,
-    3,0,0,115,18,0,0,0,12,6,6,2,12,4,12,4,
-    12,3,18,18,12,6,12,4,12,4,114,225,0,0,0,99,
-    0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
-    64,0,0,0,115,130,0,0,0,101,0,0,90,1,0,100,
-    0,0,90,2,0,100,1,0,90,3,0,100,2,0,100,3,
-    0,132,0,0,90,4,0,100,4,0,100,5,0,132,0,0,
-    90,5,0,100,6,0,100,7,0,132,0,0,90,6,0,100,
-    8,0,100,9,0,132,0,0,90,7,0,100,10,0,100,11,
-    0,132,0,0,90,8,0,100,12,0,100,13,0,132,0,0,
-    90,9,0,100,14,0,100,15,0,132,0,0,90,10,0,100,
-    16,0,100,17,0,132,0,0,90,11,0,100,18,0,100,19,
-    0,132,0,0,90,12,0,100,20,0,83,41,21,218,14,95,
-    78,97,109,101,115,112,97,99,101,80,97,116,104,97,38,1,
-    0,0,82,101,112,114,101,115,101,110,116,115,32,97,32,110,
-    97,109,101,115,112,97,99,101,32,112,97,99,107,97,103,101,
-    39,115,32,112,97,116,104,46,32,32,73,116,32,117,115,101,
-    115,32,116,104,101,32,109,111,100,117,108,101,32,110,97,109,
-    101,10,32,32,32,32,116,111,32,102,105,110,100,32,105,116,
-    115,32,112,97,114,101,110,116,32,109,111,100,117,108,101,44,
-    32,97,110,100,32,102,114,111,109,32,116,104,101,114,101,32,
-    105,116,32,108,111,111,107,115,32,117,112,32,116,104,101,32,
-    112,97,114,101,110,116,39,115,10,32,32,32,32,95,95,112,
-    97,116,104,95,95,46,32,32,87,104,101,110,32,116,104,105,
-    115,32,99,104,97,110,103,101,115,44,32,116,104,101,32,109,
-    111,100,117,108,101,39,115,32,111,119,110,32,112,97,116,104,
-    32,105,115,32,114,101,99,111,109,112,117,116,101,100,44,10,
-    32,32,32,32,117,115,105,110,103,32,112,97,116,104,95,102,
-    105,110,100,101,114,46,32,32,70,111,114,32,116,111,112,45,
-    108,101,118,101,108,32,109,111,100,117,108,101,115,44,32,116,
-    104,101,32,112,97,114,101,110,116,32,109,111,100,117,108,101,
-    39,115,32,112,97,116,104,10,32,32,32,32,105,115,32,115,
-    121,115,46,112,97,116,104,46,99,4,0,0,0,0,0,0,
-    0,4,0,0,0,2,0,0,0,67,0,0,0,115,52,0,
-    0,0,124,1,0,124,0,0,95,0,0,124,2,0,124,0,
-    0,95,1,0,116,2,0,124,0,0,106,3,0,131,0,0,
-    131,1,0,124,0,0,95,4,0,124,3,0,124,0,0,95,
-    5,0,100,0,0,83,41,1,78,41,6,218,5,95,110,97,
-    109,101,218,5,95,112,97,116,104,114,93,0,0,0,218,16,
-    95,103,101,116,95,112,97,114,101,110,116,95,112,97,116,104,
-    218,17,95,108,97,115,116,95,112,97,114,101,110,116,95,112,
-    97,116,104,218,12,95,112,97,116,104,95,102,105,110,100,101,
-    114,41,4,114,108,0,0,0,114,106,0,0,0,114,35,0,
-    0,0,218,11,112,97,116,104,95,102,105,110,100,101,114,114,
-    4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,188,
-    0,0,0,209,3,0,0,115,8,0,0,0,0,1,9,1,
-    9,1,21,1,122,23,95,78,97,109,101,115,112,97,99,101,
-    80,97,116,104,46,95,95,105,110,105,116,95,95,99,1,0,
-    0,0,0,0,0,0,4,0,0,0,3,0,0,0,67,0,
-    0,0,115,53,0,0,0,124,0,0,106,0,0,106,1,0,
-    100,1,0,131,1,0,92,3,0,125,1,0,125,2,0,125,
-    3,0,124,2,0,100,2,0,107,2,0,114,43,0,100,6,
-    0,83,124,1,0,100,5,0,102,2,0,83,41,7,122,62,
-    82,101,116,117,114,110,115,32,97,32,116,117,112,108,101,32,
-    111,102,32,40,112,97,114,101,110,116,45,109,111,100,117,108,
-    101,45,110,97,109,101,44,32,112,97,114,101,110,116,45,112,
-    97,116,104,45,97,116,116,114,45,110,97,109,101,41,114,58,
-    0,0,0,114,30,0,0,0,114,7,0,0,0,114,35,0,
-    0,0,114,226,0,0,0,41,2,122,3,115,121,115,122,4,
-    112,97,116,104,41,2,114,235,0,0,0,114,32,0,0,0,
-    41,4,114,108,0,0,0,114,223,0,0,0,218,3,100,111,
-    116,90,2,109,101,114,4,0,0,0,114,4,0,0,0,114,
-    5,0,0,0,218,23,95,102,105,110,100,95,112,97,114,101,
-    110,116,95,112,97,116,104,95,110,97,109,101,115,215,3,0,
-    0,115,8,0,0,0,0,2,27,1,12,2,4,3,122,38,
-    95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,
-    102,105,110,100,95,112,97,114,101,110,116,95,112,97,116,104,
-    95,110,97,109,101,115,99,1,0,0,0,0,0,0,0,3,
-    0,0,0,3,0,0,0,67,0,0,0,115,38,0,0,0,
-    124,0,0,106,0,0,131,0,0,92,2,0,125,1,0,125,
-    2,0,116,1,0,116,2,0,106,3,0,124,1,0,25,124,
-    2,0,131,2,0,83,41,1,78,41,4,114,242,0,0,0,
-    114,117,0,0,0,114,7,0,0,0,114,132,0,0,0,41,
-    3,114,108,0,0,0,90,18,112,97,114,101,110,116,95,109,
-    111,100,117,108,101,95,110,97,109,101,90,14,112,97,116,104,
-    95,97,116,116,114,95,110,97,109,101,114,4,0,0,0,114,
-    4,0,0,0,114,5,0,0,0,114,237,0,0,0,225,3,
-    0,0,115,4,0,0,0,0,1,18,1,122,31,95,78,97,
-    109,101,115,112,97,99,101,80,97,116,104,46,95,103,101,116,
-    95,112,97,114,101,110,116,95,112,97,116,104,99,1,0,0,
-    0,0,0,0,0,3,0,0,0,3,0,0,0,67,0,0,
-    0,115,118,0,0,0,116,0,0,124,0,0,106,1,0,131,
-    0,0,131,1,0,125,1,0,124,1,0,124,0,0,106,2,
-    0,107,3,0,114,111,0,124,0,0,106,3,0,124,0,0,
-    106,4,0,124,1,0,131,2,0,125,2,0,124,2,0,100,
-    0,0,107,9,0,114,102,0,124,2,0,106,5,0,100,0,
-    0,107,8,0,114,102,0,124,2,0,106,6,0,114,102,0,
-    124,2,0,106,6,0,124,0,0,95,7,0,124,1,0,124,
-    0,0,95,2,0,124,0,0,106,7,0,83,41,1,78,41,
-    8,114,93,0,0,0,114,237,0,0,0,114,238,0,0,0,
-    114,239,0,0,0,114,235,0,0,0,114,127,0,0,0,114,
-    164,0,0,0,114,236,0,0,0,41,3,114,108,0,0,0,
-    90,11,112,97,114,101,110,116,95,112,97,116,104,114,133,0,
-    0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
-    0,218,12,95,114,101,99,97,108,99,117,108,97,116,101,229,
-    3,0,0,115,16,0,0,0,0,2,18,1,15,1,21,3,
-    27,1,9,1,12,1,9,1,122,27,95,78,97,109,101,115,
-    112,97,99,101,80,97,116,104,46,95,114,101,99,97,108,99,
-    117,108,97,116,101,99,1,0,0,0,0,0,0,0,1,0,
-    0,0,2,0,0,0,67,0,0,0,115,16,0,0,0,116,
-    0,0,124,0,0,106,1,0,131,0,0,131,1,0,83,41,
-    1,78,41,2,218,4,105,116,101,114,114,243,0,0,0,41,
-    1,114,108,0,0,0,114,4,0,0,0,114,4,0,0,0,
-    114,5,0,0,0,218,8,95,95,105,116,101,114,95,95,242,
-    3,0,0,115,2,0,0,0,0,1,122,23,95,78,97,109,
-    101,115,112,97,99,101,80,97,116,104,46,95,95,105,116,101,
-    114,95,95,99,1,0,0,0,0,0,0,0,1,0,0,0,
-    2,0,0,0,67,0,0,0,115,16,0,0,0,116,0,0,
-    124,0,0,106,1,0,131,0,0,131,1,0,83,41,1,78,
-    41,2,114,31,0,0,0,114,243,0,0,0,41,1,114,108,
-    0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
-    0,0,218,7,95,95,108,101,110,95,95,245,3,0,0,115,
-    2,0,0,0,0,1,122,22,95,78,97,109,101,115,112,97,
-    99,101,80,97,116,104,46,95,95,108,101,110,95,95,99,1,
-    0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,67,
-    0,0,0,115,16,0,0,0,100,1,0,106,0,0,124,0,
-    0,106,1,0,131,1,0,83,41,2,78,122,20,95,78,97,
-    109,101,115,112,97,99,101,80,97,116,104,40,123,33,114,125,
-    41,41,2,114,47,0,0,0,114,236,0,0,0,41,1,114,
-    108,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
-    0,0,0,218,8,95,95,114,101,112,114,95,95,248,3,0,
-    0,115,2,0,0,0,0,1,122,23,95,78,97,109,101,115,
-    112,97,99,101,80,97,116,104,46,95,95,114,101,112,114,95,
-    95,99,2,0,0,0,0,0,0,0,2,0,0,0,2,0,
-    0,0,67,0,0,0,115,16,0,0,0,124,1,0,124,0,
-    0,106,0,0,131,0,0,107,6,0,83,41,1,78,41,1,
-    114,243,0,0,0,41,2,114,108,0,0,0,218,4,105,116,
-    101,109,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
-    0,218,12,95,95,99,111,110,116,97,105,110,115,95,95,251,
-    3,0,0,115,2,0,0,0,0,1,122,27,95,78,97,109,
-    101,115,112,97,99,101,80,97,116,104,46,95,95,99,111,110,
-    116,97,105,110,115,95,95,99,2,0,0,0,0,0,0,0,
-    2,0,0,0,2,0,0,0,67,0,0,0,115,20,0,0,
-    0,124,0,0,106,0,0,106,1,0,124,1,0,131,1,0,
-    1,100,0,0,83,41,1,78,41,2,114,236,0,0,0,114,
-    169,0,0,0,41,2,114,108,0,0,0,114,248,0,0,0,
-    114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
-    169,0,0,0,254,3,0,0,115,2,0,0,0,0,1,122,
-    21,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,
-    97,112,112,101,110,100,78,41,13,114,112,0,0,0,114,111,
-    0,0,0,114,113,0,0,0,114,114,0,0,0,114,188,0,
-    0,0,114,242,0,0,0,114,237,0,0,0,114,243,0,0,
-    0,114,245,0,0,0,114,246,0,0,0,114,247,0,0,0,
-    114,249,0,0,0,114,169,0,0,0,114,4,0,0,0,114,
-    4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,234,
-    0,0,0,202,3,0,0,115,20,0,0,0,12,5,6,2,
-    12,6,12,10,12,4,12,13,12,3,12,3,12,3,12,3,
-    114,234,0,0,0,99,0,0,0,0,0,0,0,0,0,0,
-    0,0,3,0,0,0,64,0,0,0,115,118,0,0,0,101,
-    0,0,90,1,0,100,0,0,90,2,0,100,1,0,100,2,
-    0,132,0,0,90,3,0,101,4,0,100,3,0,100,4,0,
-    132,0,0,131,1,0,90,5,0,100,5,0,100,6,0,132,
-    0,0,90,6,0,100,7,0,100,8,0,132,0,0,90,7,
-    0,100,9,0,100,10,0,132,0,0,90,8,0,100,11,0,
-    100,12,0,132,0,0,90,9,0,100,13,0,100,14,0,132,
-    0,0,90,10,0,100,15,0,100,16,0,132,0,0,90,11,
-    0,100,17,0,83,41,18,218,16,95,78,97,109,101,115,112,
-    97,99,101,76,111,97,100,101,114,99,4,0,0,0,0,0,
-    0,0,4,0,0,0,4,0,0,0,67,0,0,0,115,25,
-    0,0,0,116,0,0,124,1,0,124,2,0,124,3,0,131,
-    3,0,124,0,0,95,1,0,100,0,0,83,41,1,78,41,
-    2,114,234,0,0,0,114,236,0,0,0,41,4,114,108,0,
-    0,0,114,106,0,0,0,114,35,0,0,0,114,240,0,0,
-    0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
-    114,188,0,0,0,4,4,0,0,115,2,0,0,0,0,1,
-    122,25,95,78,97,109,101,115,112,97,99,101,76,111,97,100,
-    101,114,46,95,95,105,110,105,116,95,95,99,2,0,0,0,
-    0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,
-    115,16,0,0,0,100,1,0,106,0,0,124,1,0,106,1,
-    0,131,1,0,83,41,2,122,115,82,101,116,117,114,110,32,
-    114,101,112,114,32,102,111,114,32,116,104,101,32,109,111,100,
-    117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104,
-    101,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,
-    101,99,97,116,101,100,46,32,32,84,104,101,32,105,109,112,
-    111,114,116,32,109,97,99,104,105,110,101,114,121,32,100,111,
-    101,115,32,116,104,101,32,106,111,98,32,105,116,115,101,108,
-    102,46,10,10,32,32,32,32,32,32,32,32,122,25,60,109,
-    111,100,117,108,101,32,123,33,114,125,32,40,110,97,109,101,
-    115,112,97,99,101,41,62,41,2,114,47,0,0,0,114,112,
-    0,0,0,41,2,114,174,0,0,0,114,134,0,0,0,114,
-    4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,11,
-    109,111,100,117,108,101,95,114,101,112,114,7,4,0,0,115,
-    2,0,0,0,0,7,122,28,95,78,97,109,101,115,112,97,
-    99,101,76,111,97,100,101,114,46,109,111,100,117,108,101,95,
-    114,101,112,114,99,2,0,0,0,0,0,0,0,2,0,0,
-    0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,
-    0,83,41,2,78,84,114,4,0,0,0,41,2,114,108,0,
-    0,0,114,126,0,0,0,114,4,0,0,0,114,4,0,0,
-    0,114,5,0,0,0,114,162,0,0,0,16,4,0,0,115,
-    2,0,0,0,0,1,122,27,95,78,97,109,101,115,112,97,
-    99,101,76,111,97,100,101,114,46,105,115,95,112,97,99,107,
-    97,103,101,99,2,0,0,0,0,0,0,0,2,0,0,0,
-    1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,0,
-    83,41,2,78,114,30,0,0,0,114,4,0,0,0,41,2,
-    114,108,0,0,0,114,126,0,0,0,114,4,0,0,0,114,
-    4,0,0,0,114,5,0,0,0,114,203,0,0,0,19,4,
-    0,0,115,2,0,0,0,0,1,122,27,95,78,97,109,101,
-    115,112,97,99,101,76,111,97,100,101,114,46,103,101,116,95,
-    115,111,117,114,99,101,99,2,0,0,0,0,0,0,0,2,
-    0,0,0,6,0,0,0,67,0,0,0,115,22,0,0,0,
-    116,0,0,100,1,0,100,2,0,100,3,0,100,4,0,100,
-    5,0,131,3,1,83,41,6,78,114,30,0,0,0,122,8,
-    60,115,116,114,105,110,103,62,114,192,0,0,0,114,205,0,
-    0,0,84,41,1,114,206,0,0,0,41,2,114,108,0,0,
-    0,114,126,0,0,0,114,4,0,0,0,114,4,0,0,0,
-    114,5,0,0,0,114,190,0,0,0,22,4,0,0,115,2,
-    0,0,0,0,1,122,25,95,78,97,109,101,115,112,97,99,
-    101,76,111,97,100,101,114,46,103,101,116,95,99,111,100,101,
-    99,2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,
-    0,67,0,0,0,115,4,0,0,0,100,1,0,83,41,2,
-    122,42,85,115,101,32,100,101,102,97,117,108,116,32,115,101,
-    109,97,110,116,105,99,115,32,102,111,114,32,109,111,100,117,
-    108,101,32,99,114,101,97,116,105,111,110,46,78,114,4,0,
-    0,0,41,2,114,108,0,0,0,114,133,0,0,0,114,4,
-    0,0,0,114,4,0,0,0,114,5,0,0,0,114,189,0,
-    0,0,25,4,0,0,115,0,0,0,0,122,30,95,78,97,
-    109,101,115,112,97,99,101,76,111,97,100,101,114,46,99,114,
-    101,97,116,101,95,109,111,100,117,108,101,99,2,0,0,0,
-    0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,
-    115,4,0,0,0,100,0,0,83,41,1,78,114,4,0,0,
-    0,41,2,114,108,0,0,0,114,134,0,0,0,114,4,0,
-    0,0,114,4,0,0,0,114,5,0,0,0,114,193,0,0,
-    0,28,4,0,0,115,2,0,0,0,0,1,122,28,95,78,
-    97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,101,
-    120,101,99,95,109,111,100,117,108,101,99,2,0,0,0,0,
-    0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,
-    29,0,0,0,116,0,0,100,1,0,124,0,0,106,1,0,
-    131,2,0,1,116,2,0,124,0,0,124,1,0,131,2,0,
-    83,41,2,122,98,76,111,97,100,32,97,32,110,97,109,101,
-    115,112,97,99,101,32,109,111,100,117,108,101,46,10,10,32,
-    32,32,32,32,32,32,32,84,104,105,115,32,109,101,116,104,
-    111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,
-    46,32,32,85,115,101,32,101,120,101,99,95,109,111,100,117,
-    108,101,40,41,32,105,110,115,116,101,97,100,46,10,10,32,
-    32,32,32,32,32,32,32,122,38,110,97,109,101,115,112,97,
-    99,101,32,109,111,100,117,108,101,32,108,111,97,100,101,100,
-    32,119,105,116,104,32,112,97,116,104,32,123,33,114,125,41,
-    3,114,105,0,0,0,114,236,0,0,0,114,135,0,0,0,
-    41,2,114,108,0,0,0,114,126,0,0,0,114,4,0,0,
-    0,114,4,0,0,0,114,5,0,0,0,114,194,0,0,0,
-    31,4,0,0,115,4,0,0,0,0,7,16,1,122,28,95,
-    78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,
-    108,111,97,100,95,109,111,100,117,108,101,78,41,12,114,112,
-    0,0,0,114,111,0,0,0,114,113,0,0,0,114,188,0,
-    0,0,114,186,0,0,0,114,251,0,0,0,114,162,0,0,
-    0,114,203,0,0,0,114,190,0,0,0,114,189,0,0,0,
-    114,193,0,0,0,114,194,0,0,0,114,4,0,0,0,114,
-    4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,250,
-    0,0,0,3,4,0,0,115,16,0,0,0,12,1,12,3,
-    18,9,12,3,12,3,12,3,12,3,12,3,114,250,0,0,
-    0,99,0,0,0,0,0,0,0,0,0,0,0,0,5,0,
-    0,0,64,0,0,0,115,160,0,0,0,101,0,0,90,1,
-    0,100,0,0,90,2,0,100,1,0,90,3,0,101,4,0,
-    100,2,0,100,3,0,132,0,0,131,1,0,90,5,0,101,
-    4,0,100,4,0,100,5,0,132,0,0,131,1,0,90,6,
-    0,101,4,0,100,6,0,100,7,0,132,0,0,131,1,0,
-    90,7,0,101,4,0,100,8,0,100,9,0,132,0,0,131,
-    1,0,90,8,0,101,4,0,100,10,0,100,11,0,100,12,
-    0,132,1,0,131,1,0,90,9,0,101,4,0,100,10,0,
-    100,10,0,100,13,0,100,14,0,132,2,0,131,1,0,90,
-    10,0,101,4,0,100,10,0,100,15,0,100,16,0,132,1,
-    0,131,1,0,90,11,0,100,10,0,83,41,17,218,10,80,
-    97,116,104,70,105,110,100,101,114,122,62,77,101,116,97,32,
-    112,97,116,104,32,102,105,110,100,101,114,32,102,111,114,32,
-    115,121,115,46,112,97,116,104,32,97,110,100,32,112,97,99,
-    107,97,103,101,32,95,95,112,97,116,104,95,95,32,97,116,
-    116,114,105,98,117,116,101,115,46,99,1,0,0,0,0,0,
-    0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,55,
-    0,0,0,120,48,0,116,0,0,106,1,0,106,2,0,131,
-    0,0,68,93,31,0,125,1,0,116,3,0,124,1,0,100,
-    1,0,131,2,0,114,16,0,124,1,0,106,4,0,131,0,
-    0,1,113,16,0,87,100,2,0,83,41,3,122,125,67,97,
-    108,108,32,116,104,101,32,105,110,118,97,108,105,100,97,116,
-    101,95,99,97,99,104,101,115,40,41,32,109,101,116,104,111,
-    100,32,111,110,32,97,108,108,32,112,97,116,104,32,101,110,
-    116,114,121,32,102,105,110,100,101,114,115,10,32,32,32,32,
-    32,32,32,32,115,116,111,114,101,100,32,105,110,32,115,121,
-    115,46,112,97,116,104,95,105,109,112,111,114,116,101,114,95,
-    99,97,99,104,101,115,32,40,119,104,101,114,101,32,105,109,
-    112,108,101,109,101,110,116,101,100,41,46,218,17,105,110,118,
-    97,108,105,100,97,116,101,95,99,97,99,104,101,115,78,41,
-    5,114,7,0,0,0,218,19,112,97,116,104,95,105,109,112,
-    111,114,116,101,114,95,99,97,99,104,101,218,6,118,97,108,
-    117,101,115,114,115,0,0,0,114,253,0,0,0,41,2,114,
-    174,0,0,0,218,6,102,105,110,100,101,114,114,4,0,0,
-    0,114,4,0,0,0,114,5,0,0,0,114,253,0,0,0,
-    48,4,0,0,115,6,0,0,0,0,4,22,1,15,1,122,
-    28,80,97,116,104,70,105,110,100,101,114,46,105,110,118,97,
+    253,0,0,0,202,4,0,0,115,2,0,0,0,0,2,122,
+    28,70,105,108,101,70,105,110,100,101,114,46,105,110,118,97,
     108,105,100,97,116,101,95,99,97,99,104,101,115,99,2,0,
-    0,0,0,0,0,0,3,0,0,0,12,0,0,0,67,0,
-    0,0,115,107,0,0,0,116,0,0,106,1,0,100,1,0,
-    107,9,0,114,41,0,116,0,0,106,1,0,12,114,41,0,
-    116,2,0,106,3,0,100,2,0,116,4,0,131,2,0,1,
-    120,59,0,116,0,0,106,1,0,68,93,44,0,125,2,0,
-    121,14,0,124,2,0,124,1,0,131,1,0,83,87,113,51,
-    0,4,116,5,0,107,10,0,114,94,0,1,1,1,119,51,
-    0,89,113,51,0,88,113,51,0,87,100,1,0,83,100,1,
-    0,83,41,3,122,113,83,101,97,114,99,104,32,115,101,113,
-    117,101,110,99,101,32,111,102,32,104,111,111,107,115,32,102,
-    111,114,32,97,32,102,105,110,100,101,114,32,102,111,114,32,
-    39,112,97,116,104,39,46,10,10,32,32,32,32,32,32,32,
-    32,73,102,32,39,104,111,111,107,115,39,32,105,115,32,102,
-    97,108,115,101,32,116,104,101,110,32,117,115,101,32,115,121,
-    115,46,112,97,116,104,95,104,111,111,107,115,46,10,10,32,
-    32,32,32,32,32,32,32,78,122,23,115,121,115,46,112,97,
-    116,104,95,104,111,111,107,115,32,105,115,32,101,109,112,116,
-    121,41,6,114,7,0,0,0,218,10,112,97,116,104,95,104,
-    111,111,107,115,114,60,0,0,0,114,61,0,0,0,114,125,
-    0,0,0,114,107,0,0,0,41,3,114,174,0,0,0,114,
-    35,0,0,0,90,4,104,111,111,107,114,4,0,0,0,114,
-    4,0,0,0,114,5,0,0,0,218,11,95,112,97,116,104,
-    95,104,111,111,107,115,56,4,0,0,115,16,0,0,0,0,
-    7,25,1,16,1,16,1,3,1,14,1,13,1,12,2,122,
-    22,80,97,116,104,70,105,110,100,101,114,46,95,112,97,116,
-    104,95,104,111,111,107,115,99,2,0,0,0,0,0,0,0,
-    3,0,0,0,19,0,0,0,67,0,0,0,115,123,0,0,
-    0,124,1,0,100,1,0,107,2,0,114,53,0,121,16,0,
-    116,0,0,106,1,0,131,0,0,125,1,0,87,110,22,0,
-    4,116,2,0,107,10,0,114,52,0,1,1,1,100,2,0,
-    83,89,110,1,0,88,121,17,0,116,3,0,106,4,0,124,
-    1,0,25,125,2,0,87,110,46,0,4,116,5,0,107,10,
-    0,114,118,0,1,1,1,124,0,0,106,6,0,124,1,0,
-    131,1,0,125,2,0,124,2,0,116,3,0,106,4,0,124,
-    1,0,60,89,110,1,0,88,124,2,0,83,41,3,122,210,
-    71,101,116,32,116,104,101,32,102,105,110,100,101,114,32,102,
-    111,114,32,116,104,101,32,112,97,116,104,32,101,110,116,114,
-    121,32,102,114,111,109,32,115,121,115,46,112,97,116,104,95,
-    105,109,112,111,114,116,101,114,95,99,97,99,104,101,46,10,
-    10,32,32,32,32,32,32,32,32,73,102,32,116,104,101,32,
-    112,97,116,104,32,101,110,116,114,121,32,105,115,32,110,111,
-    116,32,105,110,32,116,104,101,32,99,97,99,104,101,44,32,
-    102,105,110,100,32,116,104,101,32,97,112,112,114,111,112,114,
-    105,97,116,101,32,102,105,110,100,101,114,10,32,32,32,32,
-    32,32,32,32,97,110,100,32,99,97,99,104,101,32,105,116,
-    46,32,73,102,32,110,111,32,102,105,110,100,101,114,32,105,
-    115,32,97,118,97,105,108,97,98,108,101,44,32,115,116,111,
-    114,101,32,78,111,110,101,46,10,10,32,32,32,32,32,32,
-    32,32,114,30,0,0,0,78,41,7,114,3,0,0,0,114,
-    45,0,0,0,218,17,70,105,108,101,78,111,116,70,111,117,
-    110,100,69,114,114,111,114,114,7,0,0,0,114,254,0,0,
-    0,114,142,0,0,0,114,2,1,0,0,41,3,114,174,0,
-    0,0,114,35,0,0,0,114,0,1,0,0,114,4,0,0,
-    0,114,4,0,0,0,114,5,0,0,0,218,20,95,112,97,
-    116,104,95,105,109,112,111,114,116,101,114,95,99,97,99,104,
-    101,73,4,0,0,115,22,0,0,0,0,8,12,1,3,1,
-    16,1,13,3,9,1,3,1,17,1,13,1,15,1,18,1,
-    122,31,80,97,116,104,70,105,110,100,101,114,46,95,112,97,
-    116,104,95,105,109,112,111,114,116,101,114,95,99,97,99,104,
-    101,99,3,0,0,0,0,0,0,0,6,0,0,0,3,0,
-    0,0,67,0,0,0,115,116,0,0,0,116,0,0,124,2,
-    0,100,1,0,131,2,0,114,39,0,124,2,0,106,1,0,
-    124,1,0,131,1,0,92,2,0,125,3,0,125,4,0,110,
-    21,0,124,2,0,106,2,0,124,1,0,131,1,0,125,3,
-    0,103,0,0,125,4,0,124,3,0,100,0,0,107,9,0,
-    114,85,0,116,3,0,124,1,0,124,3,0,131,2,0,83,
-    116,4,0,106,5,0,124,1,0,100,0,0,131,2,0,125,
-    5,0,124,4,0,124,5,0,95,6,0,124,5,0,83,41,
-    2,78,114,124,0,0,0,41,7,114,115,0,0,0,114,124,
-    0,0,0,114,185,0,0,0,114,131,0,0,0,114,121,0,
-    0,0,114,166,0,0,0,114,164,0,0,0,41,6,114,174,
-    0,0,0,114,126,0,0,0,114,0,1,0,0,114,127,0,
-    0,0,114,128,0,0,0,114,133,0,0,0,114,4,0,0,
-    0,114,4,0,0,0,114,5,0,0,0,218,16,95,108,101,
-    103,97,99,121,95,103,101,116,95,115,112,101,99,95,4,0,
-    0,115,18,0,0,0,0,4,15,1,24,2,15,1,6,1,
-    12,1,13,1,18,1,9,1,122,27,80,97,116,104,70,105,
-    110,100,101,114,46,95,108,101,103,97,99,121,95,103,101,116,
-    95,115,112,101,99,78,99,4,0,0,0,0,0,0,0,9,
-    0,0,0,5,0,0,0,67,0,0,0,115,243,0,0,0,
-    103,0,0,125,4,0,120,230,0,124,2,0,68,93,191,0,
-    125,5,0,116,0,0,124,5,0,116,1,0,116,2,0,102,
-    2,0,131,2,0,115,43,0,113,13,0,124,0,0,106,3,
-    0,124,5,0,131,1,0,125,6,0,124,6,0,100,1,0,
-    107,9,0,114,13,0,116,4,0,124,6,0,100,2,0,131,
-    2,0,114,106,0,124,6,0,106,5,0,124,1,0,124,3,
-    0,131,2,0,125,7,0,110,18,0,124,0,0,106,6,0,
-    124,1,0,124,6,0,131,2,0,125,7,0,124,7,0,100,
-    1,0,107,8,0,114,139,0,113,13,0,124,7,0,106,7,
-    0,100,1,0,107,9,0,114,158,0,124,7,0,83,124,7,
-    0,106,8,0,125,8,0,124,8,0,100,1,0,107,8,0,
-    114,191,0,116,9,0,100,3,0,131,1,0,130,1,0,124,
-    4,0,106,10,0,124,8,0,131,1,0,1,113,13,0,87,
-    116,11,0,106,12,0,124,1,0,100,1,0,131,2,0,125,
-    7,0,124,4,0,124,7,0,95,8,0,124,7,0,83,100,
-    1,0,83,41,4,122,63,70,105,110,100,32,116,104,101,32,
-    108,111,97,100,101,114,32,111,114,32,110,97,109,101,115,112,
-    97,99,101,95,112,97,116,104,32,102,111,114,32,116,104,105,
-    115,32,109,111,100,117,108,101,47,112,97,99,107,97,103,101,
-    32,110,97,109,101,46,78,114,184,0,0,0,122,19,115,112,
-    101,99,32,109,105,115,115,105,110,103,32,108,111,97,100,101,
-    114,41,13,114,148,0,0,0,114,69,0,0,0,218,5,98,
-    121,116,101,115,114,4,1,0,0,114,115,0,0,0,114,184,
-    0,0,0,114,5,1,0,0,114,127,0,0,0,114,164,0,
-    0,0,114,107,0,0,0,114,154,0,0,0,114,121,0,0,
-    0,114,166,0,0,0,41,9,114,174,0,0,0,114,126,0,
-    0,0,114,35,0,0,0,114,183,0,0,0,218,14,110,97,
-    109,101,115,112,97,99,101,95,112,97,116,104,90,5,101,110,
-    116,114,121,114,0,1,0,0,114,133,0,0,0,114,128,0,
-    0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
-    0,218,9,95,103,101,116,95,115,112,101,99,110,4,0,0,
-    115,40,0,0,0,0,5,6,1,13,1,21,1,3,1,15,
-    1,12,1,15,1,21,2,18,1,12,1,3,1,15,1,4,
-    1,9,1,12,1,12,5,17,2,18,1,9,1,122,20,80,
-    97,116,104,70,105,110,100,101,114,46,95,103,101,116,95,115,
-    112,101,99,99,4,0,0,0,0,0,0,0,6,0,0,0,
-    4,0,0,0,67,0,0,0,115,140,0,0,0,124,2,0,
-    100,1,0,107,8,0,114,21,0,116,0,0,106,1,0,125,
-    2,0,124,0,0,106,2,0,124,1,0,124,2,0,124,3,
-    0,131,3,0,125,4,0,124,4,0,100,1,0,107,8,0,
-    114,58,0,100,1,0,83,124,4,0,106,3,0,100,1,0,
-    107,8,0,114,132,0,124,4,0,106,4,0,125,5,0,124,
-    5,0,114,125,0,100,2,0,124,4,0,95,5,0,116,6,
-    0,124,1,0,124,5,0,124,0,0,106,2,0,131,3,0,
-    124,4,0,95,4,0,124,4,0,83,100,1,0,83,110,4,
-    0,124,4,0,83,100,1,0,83,41,3,122,98,102,105,110,
-    100,32,116,104,101,32,109,111,100,117,108,101,32,111,110,32,
-    115,121,115,46,112,97,116,104,32,111,114,32,39,112,97,116,
-    104,39,32,98,97,115,101,100,32,111,110,32,115,121,115,46,
-    112,97,116,104,95,104,111,111,107,115,32,97,110,100,10,32,
-    32,32,32,32,32,32,32,115,121,115,46,112,97,116,104,95,
-    105,109,112,111,114,116,101,114,95,99,97,99,104,101,46,78,
-    90,9,110,97,109,101,115,112,97,99,101,41,7,114,7,0,
-    0,0,114,35,0,0,0,114,8,1,0,0,114,127,0,0,
-    0,114,164,0,0,0,114,161,0,0,0,114,234,0,0,0,
-    41,6,114,174,0,0,0,114,126,0,0,0,114,35,0,0,
-    0,114,183,0,0,0,114,133,0,0,0,114,7,1,0,0,
-    114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
-    184,0,0,0,142,4,0,0,115,26,0,0,0,0,4,12,
-    1,9,1,21,1,12,1,4,1,15,1,9,1,6,3,9,
-    1,24,1,4,2,7,2,122,20,80,97,116,104,70,105,110,
-    100,101,114,46,102,105,110,100,95,115,112,101,99,99,3,0,
-    0,0,0,0,0,0,4,0,0,0,3,0,0,0,67,0,
-    0,0,115,41,0,0,0,124,0,0,106,0,0,124,1,0,
-    124,2,0,131,2,0,125,3,0,124,3,0,100,1,0,107,
-    8,0,114,34,0,100,1,0,83,124,3,0,106,1,0,83,
-    41,2,122,170,102,105,110,100,32,116,104,101,32,109,111,100,
-    117,108,101,32,111,110,32,115,121,115,46,112,97,116,104,32,
-    111,114,32,39,112,97,116,104,39,32,98,97,115,101,100,32,
-    111,110,32,115,121,115,46,112,97,116,104,95,104,111,111,107,
-    115,32,97,110,100,10,32,32,32,32,32,32,32,32,115,121,
-    115,46,112,97,116,104,95,105,109,112,111,114,116,101,114,95,
-    99,97,99,104,101,46,10,10,32,32,32,32,32,32,32,32,
-    84,104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,
-    101,112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,
-    102,105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,
-    101,97,100,46,10,10,32,32,32,32,32,32,32,32,78,41,
-    2,114,184,0,0,0,114,127,0,0,0,41,4,114,174,0,
-    0,0,114,126,0,0,0,114,35,0,0,0,114,133,0,0,
-    0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
-    114,185,0,0,0,164,4,0,0,115,8,0,0,0,0,8,
-    18,1,12,1,4,1,122,22,80,97,116,104,70,105,110,100,
-    101,114,46,102,105,110,100,95,109,111,100,117,108,101,41,12,
-    114,112,0,0,0,114,111,0,0,0,114,113,0,0,0,114,
-    114,0,0,0,114,186,0,0,0,114,253,0,0,0,114,2,
-    1,0,0,114,4,1,0,0,114,5,1,0,0,114,8,1,
-    0,0,114,184,0,0,0,114,185,0,0,0,114,4,0,0,
-    0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
-    114,252,0,0,0,44,4,0,0,115,22,0,0,0,12,2,
-    6,2,18,8,18,17,18,22,18,15,3,1,18,31,3,1,
-    21,21,3,1,114,252,0,0,0,99,0,0,0,0,0,0,
-    0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,133,
-    0,0,0,101,0,0,90,1,0,100,0,0,90,2,0,100,
-    1,0,90,3,0,100,2,0,100,3,0,132,0,0,90,4,
-    0,100,4,0,100,5,0,132,0,0,90,5,0,101,6,0,
-    90,7,0,100,6,0,100,7,0,132,0,0,90,8,0,100,
-    8,0,100,9,0,132,0,0,90,9,0,100,10,0,100,11,
-    0,100,12,0,132,1,0,90,10,0,100,13,0,100,14,0,
-    132,0,0,90,11,0,101,12,0,100,15,0,100,16,0,132,
-    0,0,131,1,0,90,13,0,100,17,0,100,18,0,132,0,
-    0,90,14,0,100,10,0,83,41,19,218,10,70,105,108,101,
-    70,105,110,100,101,114,122,172,70,105,108,101,45,98,97,115,
-    101,100,32,102,105,110,100,101,114,46,10,10,32,32,32,32,
-    73,110,116,101,114,97,99,116,105,111,110,115,32,119,105,116,
-    104,32,116,104,101,32,102,105,108,101,32,115,121,115,116,101,
-    109,32,97,114,101,32,99,97,99,104,101,100,32,102,111,114,
-    32,112,101,114,102,111,114,109,97,110,99,101,44,32,98,101,
-    105,110,103,10,32,32,32,32,114,101,102,114,101,115,104,101,
-    100,32,119,104,101,110,32,116,104,101,32,100,105,114,101,99,
-    116,111,114,121,32,116,104,101,32,102,105,110,100,101,114,32,
-    105,115,32,104,97,110,100,108,105,110,103,32,104,97,115,32,
-    98,101,101,110,32,109,111,100,105,102,105,101,100,46,10,10,
-    32,32,32,32,99,2,0,0,0,0,0,0,0,5,0,0,
-    0,5,0,0,0,7,0,0,0,115,122,0,0,0,103,0,
-    0,125,3,0,120,52,0,124,2,0,68,93,44,0,92,2,
-    0,137,0,0,125,4,0,124,3,0,106,0,0,135,0,0,
-    102,1,0,100,1,0,100,2,0,134,0,0,124,4,0,68,
-    131,1,0,131,1,0,1,113,13,0,87,124,3,0,124,0,
-    0,95,1,0,124,1,0,112,79,0,100,3,0,124,0,0,
-    95,2,0,100,6,0,124,0,0,95,3,0,116,4,0,131,
-    0,0,124,0,0,95,5,0,116,4,0,131,0,0,124,0,
-    0,95,6,0,100,5,0,83,41,7,122,154,73,110,105,116,
-    105,97,108,105,122,101,32,119,105,116,104,32,116,104,101,32,
-    112,97,116,104,32,116,111,32,115,101,97,114,99,104,32,111,
-    110,32,97,110,100,32,97,32,118,97,114,105,97,98,108,101,
-    32,110,117,109,98,101,114,32,111,102,10,32,32,32,32,32,
-    32,32,32,50,45,116,117,112,108,101,115,32,99,111,110,116,
-    97,105,110,105,110,103,32,116,104,101,32,108,111,97,100,101,
-    114,32,97,110,100,32,116,104,101,32,102,105,108,101,32,115,
-    117,102,102,105,120,101,115,32,116,104,101,32,108,111,97,100,
-    101,114,10,32,32,32,32,32,32,32,32,114,101,99,111,103,
-    110,105,122,101,115,46,99,1,0,0,0,0,0,0,0,2,
-    0,0,0,3,0,0,0,51,0,0,0,115,27,0,0,0,
-    124,0,0,93,17,0,125,1,0,124,1,0,136,0,0,102,
-    2,0,86,1,113,3,0,100,0,0,83,41,1,78,114,4,
-    0,0,0,41,2,114,22,0,0,0,114,229,0,0,0,41,
-    1,114,127,0,0,0,114,4,0,0,0,114,5,0,0,0,
-    114,231,0,0,0,193,4,0,0,115,2,0,0,0,6,0,
-    122,38,70,105,108,101,70,105,110,100,101,114,46,95,95,105,
-    110,105,116,95,95,46,60,108,111,99,97,108,115,62,46,60,
-    103,101,110,101,120,112,114,62,114,58,0,0,0,114,29,0,
-    0,0,78,114,87,0,0,0,41,7,114,154,0,0,0,218,
-    8,95,108,111,97,100,101,114,115,114,35,0,0,0,218,11,
-    95,112,97,116,104,95,109,116,105,109,101,218,3,115,101,116,
-    218,11,95,112,97,116,104,95,99,97,99,104,101,218,19,95,
-    114,101,108,97,120,101,100,95,112,97,116,104,95,99,97,99,
-    104,101,41,5,114,108,0,0,0,114,35,0,0,0,218,14,
-    108,111,97,100,101,114,95,100,101,116,97,105,108,115,90,7,
-    108,111,97,100,101,114,115,114,171,0,0,0,114,4,0,0,
-    0,41,1,114,127,0,0,0,114,5,0,0,0,114,188,0,
-    0,0,187,4,0,0,115,16,0,0,0,0,4,6,1,19,
-    1,36,1,9,2,15,1,9,1,12,1,122,19,70,105,108,
-    101,70,105,110,100,101,114,46,95,95,105,110,105,116,95,95,
-    99,1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,
-    0,67,0,0,0,115,13,0,0,0,100,3,0,124,0,0,
-    95,0,0,100,2,0,83,41,4,122,31,73,110,118,97,108,
-    105,100,97,116,101,32,116,104,101,32,100,105,114,101,99,116,
-    111,114,121,32,109,116,105,109,101,46,114,29,0,0,0,78,
-    114,87,0,0,0,41,1,114,11,1,0,0,41,1,114,108,
-    0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
-    0,0,114,253,0,0,0,201,4,0,0,115,2,0,0,0,
-    0,2,122,28,70,105,108,101,70,105,110,100,101,114,46,105,
-    110,118,97,108,105,100,97,116,101,95,99,97,99,104,101,115,
-    99,2,0,0,0,0,0,0,0,3,0,0,0,2,0,0,
-    0,67,0,0,0,115,59,0,0,0,124,0,0,106,0,0,
-    124,1,0,131,1,0,125,2,0,124,2,0,100,1,0,107,
-    8,0,114,37,0,100,1,0,103,0,0,102,2,0,83,124,
-    2,0,106,1,0,124,2,0,106,2,0,112,55,0,103,0,
-    0,102,2,0,83,41,2,122,197,84,114,121,32,116,111,32,
+    0,0,0,0,0,0,3,0,0,0,2,0,0,0,67,0,
+    0,0,115,59,0,0,0,124,0,0,106,0,0,124,1,0,
+    131,1,0,125,2,0,124,2,0,100,1,0,107,8,0,114,
+    37,0,100,1,0,103,0,0,102,2,0,83,124,2,0,106,
+    1,0,124,2,0,106,2,0,112,55,0,103,0,0,102,2,
+    0,83,41,2,122,197,84,114,121,32,116,111,32,102,105,110,
+    100,32,97,32,108,111,97,100,101,114,32,102,111,114,32,116,
+    104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,
+    117,108,101,44,32,111,114,32,116,104,101,32,110,97,109,101,
+    115,112,97,99,101,10,32,32,32,32,32,32,32,32,112,97,
+    99,107,97,103,101,32,112,111,114,116,105,111,110,115,46,32,
+    82,101,116,117,114,110,115,32,40,108,111,97,100,101,114,44,
+    32,108,105,115,116,45,111,102,45,112,111,114,116,105,111,110,
+    115,41,46,10,10,32,32,32,32,32,32,32,32,84,104,105,
+    115,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,
+    101,99,97,116,101,100,46,32,32,85,115,101,32,102,105,110,
+    100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,
+    46,10,10,32,32,32,32,32,32,32,32,78,41,3,114,184,
+    0,0,0,114,127,0,0,0,114,164,0,0,0,41,3,114,
+    108,0,0,0,114,126,0,0,0,114,133,0,0,0,114,4,
+    0,0,0,114,4,0,0,0,114,5,0,0,0,114,124,0,
+    0,0,208,4,0,0,115,8,0,0,0,0,7,15,1,12,
+    1,10,1,122,22,70,105,108,101,70,105,110,100,101,114,46,
+    102,105,110,100,95,108,111,97,100,101,114,99,6,0,0,0,
+    0,0,0,0,7,0,0,0,7,0,0,0,67,0,0,0,
+    115,40,0,0,0,124,1,0,124,2,0,124,3,0,131,2,
+    0,125,6,0,116,0,0,124,2,0,124,3,0,100,1,0,
+    124,6,0,100,2,0,124,4,0,131,2,2,83,41,3,78,
+    114,127,0,0,0,114,164,0,0,0,41,1,114,165,0,0,
+    0,41,7,114,108,0,0,0,114,170,0,0,0,114,126,0,
+    0,0,114,35,0,0,0,90,4,115,109,115,108,114,183,0,
+    0,0,114,127,0,0,0,114,4,0,0,0,114,4,0,0,
+    0,114,5,0,0,0,114,8,1,0,0,220,4,0,0,115,
+    6,0,0,0,0,1,15,1,18,1,122,20,70,105,108,101,
+    70,105,110,100,101,114,46,95,103,101,116,95,115,112,101,99,
+    78,99,3,0,0,0,0,0,0,0,14,0,0,0,15,0,
+    0,0,67,0,0,0,115,234,1,0,0,100,1,0,125,3,
+    0,124,1,0,106,0,0,100,2,0,131,1,0,100,3,0,
+    25,125,4,0,121,34,0,116,1,0,124,0,0,106,2,0,
+    112,49,0,116,3,0,106,4,0,131,0,0,131,1,0,106,
+    5,0,125,5,0,87,110,24,0,4,116,6,0,107,10,0,
+    114,85,0,1,1,1,100,10,0,125,5,0,89,110,1,0,
+    88,124,5,0,124,0,0,106,7,0,107,3,0,114,120,0,
+    124,0,0,106,8,0,131,0,0,1,124,5,0,124,0,0,
+    95,7,0,116,9,0,131,0,0,114,153,0,124,0,0,106,
+    10,0,125,6,0,124,4,0,106,11,0,131,0,0,125,7,
+    0,110,15,0,124,0,0,106,12,0,125,6,0,124,4,0,
+    125,7,0,124,7,0,124,6,0,107,6,0,114,45,1,116,
+    13,0,124,0,0,106,2,0,124,4,0,131,2,0,125,8,
+    0,120,100,0,124,0,0,106,14,0,68,93,77,0,92,2,
+    0,125,9,0,125,10,0,100,5,0,124,9,0,23,125,11,
+    0,116,13,0,124,8,0,124,11,0,131,2,0,125,12,0,
+    116,15,0,124,12,0,131,1,0,114,208,0,124,0,0,106,
+    16,0,124,10,0,124,1,0,124,12,0,124,8,0,103,1,
+    0,124,2,0,131,5,0,83,113,208,0,87,116,17,0,124,
+    8,0,131,1,0,125,3,0,120,123,0,124,0,0,106,14,
+    0,68,93,112,0,92,2,0,125,9,0,125,10,0,116,13,
+    0,124,0,0,106,2,0,124,4,0,124,9,0,23,131,2,
+    0,125,12,0,116,18,0,100,6,0,106,19,0,124,12,0,
+    131,1,0,100,7,0,100,3,0,131,1,1,1,124,7,0,
+    124,9,0,23,124,6,0,107,6,0,114,55,1,116,15,0,
+    124,12,0,131,1,0,114,55,1,124,0,0,106,16,0,124,
+    10,0,124,1,0,124,12,0,100,8,0,124,2,0,131,5,
+    0,83,113,55,1,87,124,3,0,114,230,1,116,18,0,100,
+    9,0,106,19,0,124,8,0,131,1,0,131,1,0,1,116,
+    20,0,106,21,0,124,1,0,100,8,0,131,2,0,125,13,
+    0,124,8,0,103,1,0,124,13,0,95,22,0,124,13,0,
+    83,100,8,0,83,41,11,122,125,84,114,121,32,116,111,32,
     102,105,110,100,32,97,32,108,111,97,100,101,114,32,102,111,
     114,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,
     109,111,100,117,108,101,44,32,111,114,32,116,104,101,32,110,
@@ -2229,405 +2291,342 @@
     32,112,97,99,107,97,103,101,32,112,111,114,116,105,111,110,
     115,46,32,82,101,116,117,114,110,115,32,40,108,111,97,100,
     101,114,44,32,108,105,115,116,45,111,102,45,112,111,114,116,
-    105,111,110,115,41,46,10,10,32,32,32,32,32,32,32,32,
-    84,104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,
-    101,112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,
-    102,105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,
-    101,97,100,46,10,10,32,32,32,32,32,32,32,32,78,41,
-    3,114,184,0,0,0,114,127,0,0,0,114,164,0,0,0,
-    41,3,114,108,0,0,0,114,126,0,0,0,114,133,0,0,
-    0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
-    114,124,0,0,0,207,4,0,0,115,8,0,0,0,0,7,
-    15,1,12,1,10,1,122,22,70,105,108,101,70,105,110,100,
-    101,114,46,102,105,110,100,95,108,111,97,100,101,114,99,6,
-    0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,67,
-    0,0,0,115,40,0,0,0,124,1,0,124,2,0,124,3,
-    0,131,2,0,125,6,0,116,0,0,124,2,0,124,3,0,
-    100,1,0,124,6,0,100,2,0,124,4,0,131,2,2,83,
-    41,3,78,114,127,0,0,0,114,164,0,0,0,41,1,114,
-    165,0,0,0,41,7,114,108,0,0,0,114,170,0,0,0,
-    114,126,0,0,0,114,35,0,0,0,90,4,115,109,115,108,
-    114,183,0,0,0,114,127,0,0,0,114,4,0,0,0,114,
-    4,0,0,0,114,5,0,0,0,114,8,1,0,0,219,4,
-    0,0,115,6,0,0,0,0,1,15,1,18,1,122,20,70,
-    105,108,101,70,105,110,100,101,114,46,95,103,101,116,95,115,
-    112,101,99,78,99,3,0,0,0,0,0,0,0,14,0,0,
-    0,15,0,0,0,67,0,0,0,115,234,1,0,0,100,1,
-    0,125,3,0,124,1,0,106,0,0,100,2,0,131,1,0,
-    100,3,0,25,125,4,0,121,34,0,116,1,0,124,0,0,
-    106,2,0,112,49,0,116,3,0,106,4,0,131,0,0,131,
-    1,0,106,5,0,125,5,0,87,110,24,0,4,116,6,0,
-    107,10,0,114,85,0,1,1,1,100,10,0,125,5,0,89,
-    110,1,0,88,124,5,0,124,0,0,106,7,0,107,3,0,
-    114,120,0,124,0,0,106,8,0,131,0,0,1,124,5,0,
-    124,0,0,95,7,0,116,9,0,131,0,0,114,153,0,124,
-    0,0,106,10,0,125,6,0,124,4,0,106,11,0,131,0,
-    0,125,7,0,110,15,0,124,0,0,106,12,0,125,6,0,
-    124,4,0,125,7,0,124,7,0,124,6,0,107,6,0,114,
-    45,1,116,13,0,124,0,0,106,2,0,124,4,0,131,2,
-    0,125,8,0,120,100,0,124,0,0,106,14,0,68,93,77,
-    0,92,2,0,125,9,0,125,10,0,100,5,0,124,9,0,
-    23,125,11,0,116,13,0,124,8,0,124,11,0,131,2,0,
-    125,12,0,116,15,0,124,12,0,131,1,0,114,208,0,124,
-    0,0,106,16,0,124,10,0,124,1,0,124,12,0,124,8,
-    0,103,1,0,124,2,0,131,5,0,83,113,208,0,87,116,
-    17,0,124,8,0,131,1,0,125,3,0,120,123,0,124,0,
-    0,106,14,0,68,93,112,0,92,2,0,125,9,0,125,10,
-    0,116,13,0,124,0,0,106,2,0,124,4,0,124,9,0,
-    23,131,2,0,125,12,0,116,18,0,100,6,0,106,19,0,
-    124,12,0,131,1,0,100,7,0,100,3,0,131,1,1,1,
-    124,7,0,124,9,0,23,124,6,0,107,6,0,114,55,1,
-    116,15,0,124,12,0,131,1,0,114,55,1,124,0,0,106,
-    16,0,124,10,0,124,1,0,124,12,0,100,8,0,124,2,
-    0,131,5,0,83,113,55,1,87,124,3,0,114,230,1,116,
-    18,0,100,9,0,106,19,0,124,8,0,131,1,0,131,1,
-    0,1,116,20,0,106,21,0,124,1,0,100,8,0,131,2,
-    0,125,13,0,124,8,0,103,1,0,124,13,0,95,22,0,
-    124,13,0,83,100,8,0,83,41,11,122,125,84,114,121,32,
-    116,111,32,102,105,110,100,32,97,32,108,111,97,100,101,114,
-    32,102,111,114,32,116,104,101,32,115,112,101,99,105,102,105,
-    101,100,32,109,111,100,117,108,101,44,32,111,114,32,116,104,
-    101,32,110,97,109,101,115,112,97,99,101,10,32,32,32,32,
-    32,32,32,32,112,97,99,107,97,103,101,32,112,111,114,116,
-    105,111,110,115,46,32,82,101,116,117,114,110,115,32,40,108,
-    111,97,100,101,114,44,32,108,105,115,116,45,111,102,45,112,
-    111,114,116,105,111,110,115,41,46,70,114,58,0,0,0,114,
-    56,0,0,0,114,29,0,0,0,114,188,0,0,0,122,9,
-    116,114,121,105,110,103,32,123,125,114,98,0,0,0,78,122,
-    25,112,111,115,115,105,98,108,101,32,110,97,109,101,115,112,
-    97,99,101,32,102,111,114,32,123,125,114,87,0,0,0,41,
-    23,114,32,0,0,0,114,39,0,0,0,114,35,0,0,0,
-    114,3,0,0,0,114,45,0,0,0,114,220,0,0,0,114,
-    40,0,0,0,114,11,1,0,0,218,11,95,102,105,108,108,
-    95,99,97,99,104,101,114,6,0,0,0,114,14,1,0,0,
-    114,88,0,0,0,114,13,1,0,0,114,28,0,0,0,114,
-    10,1,0,0,114,44,0,0,0,114,8,1,0,0,114,46,
-    0,0,0,114,105,0,0,0,114,47,0,0,0,114,121,0,
-    0,0,114,166,0,0,0,114,164,0,0,0,41,14,114,108,
-    0,0,0,114,126,0,0,0,114,183,0,0,0,90,12,105,
-    115,95,110,97,109,101,115,112,97,99,101,90,11,116,97,105,
-    108,95,109,111,100,117,108,101,114,138,0,0,0,90,5,99,
-    97,99,104,101,90,12,99,97,99,104,101,95,109,111,100,117,
-    108,101,90,9,98,97,115,101,95,112,97,116,104,114,229,0,
-    0,0,114,170,0,0,0,90,13,105,110,105,116,95,102,105,
-    108,101,110,97,109,101,90,9,102,117,108,108,95,112,97,116,
-    104,114,133,0,0,0,114,4,0,0,0,114,4,0,0,0,
-    114,5,0,0,0,114,184,0,0,0,224,4,0,0,115,68,
-    0,0,0,0,3,6,1,19,1,3,1,34,1,13,1,11,
-    1,15,1,10,1,9,2,9,1,9,1,15,2,9,1,6,
-    2,12,1,18,1,22,1,10,1,15,1,12,1,32,4,12,
-    2,22,1,22,1,25,1,16,1,12,1,29,1,6,1,19,
-    1,18,1,12,1,4,1,122,20,70,105,108,101,70,105,110,
-    100,101,114,46,102,105,110,100,95,115,112,101,99,99,1,0,
-    0,0,0,0,0,0,9,0,0,0,13,0,0,0,67,0,
-    0,0,115,11,1,0,0,124,0,0,106,0,0,125,1,0,
-    121,31,0,116,1,0,106,2,0,124,1,0,112,33,0,116,
-    1,0,106,3,0,131,0,0,131,1,0,125,2,0,87,110,
-    33,0,4,116,4,0,116,5,0,116,6,0,102,3,0,107,
-    10,0,114,75,0,1,1,1,103,0,0,125,2,0,89,110,
-    1,0,88,116,7,0,106,8,0,106,9,0,100,1,0,131,
-    1,0,115,112,0,116,10,0,124,2,0,131,1,0,124,0,
-    0,95,11,0,110,111,0,116,10,0,131,0,0,125,3,0,
-    120,90,0,124,2,0,68,93,82,0,125,4,0,124,4,0,
-    106,12,0,100,2,0,131,1,0,92,3,0,125,5,0,125,
-    6,0,125,7,0,124,6,0,114,191,0,100,3,0,106,13,
-    0,124,5,0,124,7,0,106,14,0,131,0,0,131,2,0,
-    125,8,0,110,6,0,124,5,0,125,8,0,124,3,0,106,
-    15,0,124,8,0,131,1,0,1,113,128,0,87,124,3,0,
-    124,0,0,95,11,0,116,7,0,106,8,0,106,9,0,116,
-    16,0,131,1,0,114,7,1,100,4,0,100,5,0,132,0,
-    0,124,2,0,68,131,1,0,124,0,0,95,17,0,100,6,
-    0,83,41,7,122,68,70,105,108,108,32,116,104,101,32,99,
-    97,99,104,101,32,111,102,32,112,111,116,101,110,116,105,97,
-    108,32,109,111,100,117,108,101,115,32,97,110,100,32,112,97,
-    99,107,97,103,101,115,32,102,111,114,32,116,104,105,115,32,
-    100,105,114,101,99,116,111,114,121,46,114,0,0,0,0,114,
-    58,0,0,0,122,5,123,125,46,123,125,99,1,0,0,0,
-    0,0,0,0,2,0,0,0,3,0,0,0,83,0,0,0,
-    115,28,0,0,0,104,0,0,124,0,0,93,18,0,125,1,
-    0,124,1,0,106,0,0,131,0,0,146,2,0,113,6,0,
-    83,114,4,0,0,0,41,1,114,88,0,0,0,41,2,114,
-    22,0,0,0,90,2,102,110,114,4,0,0,0,114,4,0,
-    0,0,114,5,0,0,0,250,9,60,115,101,116,99,111,109,
-    112,62,42,5,0,0,115,2,0,0,0,9,0,122,41,70,
-    105,108,101,70,105,110,100,101,114,46,95,102,105,108,108,95,
-    99,97,99,104,101,46,60,108,111,99,97,108,115,62,46,60,
-    115,101,116,99,111,109,112,62,78,41,18,114,35,0,0,0,
-    114,3,0,0,0,90,7,108,105,115,116,100,105,114,114,45,
-    0,0,0,114,3,1,0,0,218,15,80,101,114,109,105,115,
-    115,105,111,110,69,114,114,111,114,218,18,78,111,116,65,68,
-    105,114,101,99,116,111,114,121,69,114,114,111,114,114,7,0,
-    0,0,114,8,0,0,0,114,9,0,0,0,114,12,1,0,
-    0,114,13,1,0,0,114,83,0,0,0,114,47,0,0,0,
-    114,88,0,0,0,218,3,97,100,100,114,10,0,0,0,114,
-    14,1,0,0,41,9,114,108,0,0,0,114,35,0,0,0,
-    90,8,99,111,110,116,101,110,116,115,90,21,108,111,119,101,
-    114,95,115,117,102,102,105,120,95,99,111,110,116,101,110,116,
-    115,114,248,0,0,0,114,106,0,0,0,114,241,0,0,0,
-    114,229,0,0,0,90,8,110,101,119,95,110,97,109,101,114,
-    4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,16,
-    1,0,0,13,5,0,0,115,34,0,0,0,0,2,9,1,
-    3,1,31,1,22,3,11,3,18,1,18,7,9,1,13,1,
-    24,1,6,1,27,2,6,1,17,1,9,1,18,1,122,22,
-    70,105,108,101,70,105,110,100,101,114,46,95,102,105,108,108,
-    95,99,97,99,104,101,99,1,0,0,0,0,0,0,0,3,
-    0,0,0,3,0,0,0,7,0,0,0,115,25,0,0,0,
-    135,0,0,135,1,0,102,2,0,100,1,0,100,2,0,134,
-    0,0,125,2,0,124,2,0,83,41,3,97,20,1,0,0,
-    65,32,99,108,97,115,115,32,109,101,116,104,111,100,32,119,
-    104,105,99,104,32,114,101,116,117,114,110,115,32,97,32,99,
-    108,111,115,117,114,101,32,116,111,32,117,115,101,32,111,110,
-    32,115,121,115,46,112,97,116,104,95,104,111,111,107,10,32,
-    32,32,32,32,32,32,32,119,104,105,99,104,32,119,105,108,
-    108,32,114,101,116,117,114,110,32,97,110,32,105,110,115,116,
-    97,110,99,101,32,117,115,105,110,103,32,116,104,101,32,115,
-    112,101,99,105,102,105,101,100,32,108,111,97,100,101,114,115,
-    32,97,110,100,32,116,104,101,32,112,97,116,104,10,32,32,
-    32,32,32,32,32,32,99,97,108,108,101,100,32,111,110,32,
-    116,104,101,32,99,108,111,115,117,114,101,46,10,10,32,32,
-    32,32,32,32,32,32,73,102,32,116,104,101,32,112,97,116,
-    104,32,99,97,108,108,101,100,32,111,110,32,116,104,101,32,
-    99,108,111,115,117,114,101,32,105,115,32,110,111,116,32,97,
-    32,100,105,114,101,99,116,111,114,121,44,32,73,109,112,111,
-    114,116,69,114,114,111,114,32,105,115,10,32,32,32,32,32,
-    32,32,32,114,97,105,115,101,100,46,10,10,32,32,32,32,
-    32,32,32,32,99,1,0,0,0,0,0,0,0,1,0,0,
-    0,4,0,0,0,19,0,0,0,115,43,0,0,0,116,0,
-    0,124,0,0,131,1,0,115,30,0,116,1,0,100,1,0,
-    100,2,0,124,0,0,131,1,1,130,1,0,136,0,0,124,
-    0,0,136,1,0,140,1,0,83,41,3,122,45,80,97,116,
-    104,32,104,111,111,107,32,102,111,114,32,105,109,112,111,114,
-    116,108,105,98,46,109,97,99,104,105,110,101,114,121,46,70,
-    105,108,101,70,105,110,100,101,114,46,122,30,111,110,108,121,
-    32,100,105,114,101,99,116,111,114,105,101,115,32,97,114,101,
-    32,115,117,112,112,111,114,116,101,100,114,35,0,0,0,41,
-    2,114,46,0,0,0,114,107,0,0,0,41,1,114,35,0,
-    0,0,41,2,114,174,0,0,0,114,15,1,0,0,114,4,
-    0,0,0,114,5,0,0,0,218,24,112,97,116,104,95,104,
-    111,111,107,95,102,111,114,95,70,105,108,101,70,105,110,100,
-    101,114,54,5,0,0,115,6,0,0,0,0,2,12,1,18,
-    1,122,54,70,105,108,101,70,105,110,100,101,114,46,112,97,
-    116,104,95,104,111,111,107,46,60,108,111,99,97,108,115,62,
-    46,112,97,116,104,95,104,111,111,107,95,102,111,114,95,70,
-    105,108,101,70,105,110,100,101,114,114,4,0,0,0,41,3,
-    114,174,0,0,0,114,15,1,0,0,114,21,1,0,0,114,
-    4,0,0,0,41,2,114,174,0,0,0,114,15,1,0,0,
-    114,5,0,0,0,218,9,112,97,116,104,95,104,111,111,107,
-    44,5,0,0,115,4,0,0,0,0,10,21,6,122,20,70,
-    105,108,101,70,105,110,100,101,114,46,112,97,116,104,95,104,
-    111,111,107,99,1,0,0,0,0,0,0,0,1,0,0,0,
-    2,0,0,0,67,0,0,0,115,16,0,0,0,100,1,0,
-    106,0,0,124,0,0,106,1,0,131,1,0,83,41,2,78,
-    122,16,70,105,108,101,70,105,110,100,101,114,40,123,33,114,
-    125,41,41,2,114,47,0,0,0,114,35,0,0,0,41,1,
-    114,108,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
-    5,0,0,0,114,247,0,0,0,62,5,0,0,115,2,0,
-    0,0,0,1,122,19,70,105,108,101,70,105,110,100,101,114,
-    46,95,95,114,101,112,114,95,95,41,15,114,112,0,0,0,
-    114,111,0,0,0,114,113,0,0,0,114,114,0,0,0,114,
-    188,0,0,0,114,253,0,0,0,114,130,0,0,0,114,185,
-    0,0,0,114,124,0,0,0,114,8,1,0,0,114,184,0,
-    0,0,114,16,1,0,0,114,186,0,0,0,114,22,1,0,
-    0,114,247,0,0,0,114,4,0,0,0,114,4,0,0,0,
-    114,4,0,0,0,114,5,0,0,0,114,9,1,0,0,178,
-    4,0,0,115,20,0,0,0,12,7,6,2,12,14,12,4,
-    6,2,12,12,12,5,15,45,12,31,18,18,114,9,1,0,
-    0,99,4,0,0,0,0,0,0,0,6,0,0,0,11,0,
-    0,0,67,0,0,0,115,195,0,0,0,124,0,0,106,0,
-    0,100,1,0,131,1,0,125,4,0,124,0,0,106,0,0,
-    100,2,0,131,1,0,125,5,0,124,4,0,115,99,0,124,
-    5,0,114,54,0,124,5,0,106,1,0,125,4,0,110,45,
-    0,124,2,0,124,3,0,107,2,0,114,84,0,116,2,0,
-    124,1,0,124,2,0,131,2,0,125,4,0,110,15,0,116,
-    3,0,124,1,0,124,2,0,131,2,0,125,4,0,124,5,
-    0,115,126,0,116,4,0,124,1,0,124,2,0,100,3,0,
-    124,4,0,131,2,1,125,5,0,121,44,0,124,5,0,124,
-    0,0,100,2,0,60,124,4,0,124,0,0,100,1,0,60,
-    124,2,0,124,0,0,100,4,0,60,124,3,0,124,0,0,
-    100,5,0,60,87,110,18,0,4,116,5,0,107,10,0,114,
-    190,0,1,1,1,89,110,1,0,88,100,0,0,83,41,6,
-    78,114,227,0,0,0,218,8,95,95,115,112,101,99,95,95,
-    114,127,0,0,0,90,8,95,95,102,105,108,101,95,95,90,
-    10,95,95,99,97,99,104,101,100,95,95,41,6,218,3,103,
-    101,116,114,127,0,0,0,114,224,0,0,0,114,219,0,0,
-    0,114,165,0,0,0,218,9,69,120,99,101,112,116,105,111,
-    110,41,6,90,2,110,115,114,106,0,0,0,90,8,112,97,
-    116,104,110,97,109,101,90,9,99,112,97,116,104,110,97,109,
-    101,114,127,0,0,0,114,133,0,0,0,114,4,0,0,0,
-    114,4,0,0,0,114,5,0,0,0,218,14,95,102,105,120,
-    95,117,112,95,109,111,100,117,108,101,68,5,0,0,115,34,
-    0,0,0,0,2,15,1,15,1,6,1,6,1,12,1,12,
-    1,18,2,15,1,6,1,21,1,3,1,10,1,10,1,10,
-    1,14,1,13,2,114,26,1,0,0,99,0,0,0,0,0,
-    0,0,0,3,0,0,0,3,0,0,0,67,0,0,0,115,
-    55,0,0,0,116,0,0,116,1,0,106,2,0,131,0,0,
-    102,2,0,125,0,0,116,3,0,116,4,0,102,2,0,125,
-    1,0,116,5,0,116,6,0,102,2,0,125,2,0,124,0,
-    0,124,1,0,124,2,0,103,3,0,83,41,1,122,95,82,
-    101,116,117,114,110,115,32,97,32,108,105,115,116,32,111,102,
-    32,102,105,108,101,45,98,97,115,101,100,32,109,111,100,117,
-    108,101,32,108,111,97,100,101,114,115,46,10,10,32,32,32,
-    32,69,97,99,104,32,105,116,101,109,32,105,115,32,97,32,
-    116,117,112,108,101,32,40,108,111,97,100,101,114,44,32,115,
-    117,102,102,105,120,101,115,41,46,10,32,32,32,32,41,7,
-    114,225,0,0,0,114,150,0,0,0,218,18,101,120,116,101,
-    110,115,105,111,110,95,115,117,102,102,105,120,101,115,114,219,
-    0,0,0,114,84,0,0,0,114,224,0,0,0,114,74,0,
-    0,0,41,3,90,10,101,120,116,101,110,115,105,111,110,115,
-    90,6,115,111,117,114,99,101,90,8,98,121,116,101,99,111,
-    100,101,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
-    0,114,167,0,0,0,91,5,0,0,115,8,0,0,0,0,
-    5,18,1,12,1,12,1,114,167,0,0,0,99,1,0,0,
-    0,0,0,0,0,12,0,0,0,12,0,0,0,67,0,0,
-    0,115,70,2,0,0,124,0,0,97,0,0,116,0,0,106,
-    1,0,97,1,0,116,0,0,106,2,0,97,2,0,116,1,
-    0,106,3,0,116,4,0,25,125,1,0,120,76,0,100,26,
-    0,68,93,68,0,125,2,0,124,2,0,116,1,0,106,3,
-    0,107,7,0,114,83,0,116,0,0,106,5,0,124,2,0,
-    131,1,0,125,3,0,110,13,0,116,1,0,106,3,0,124,
-    2,0,25,125,3,0,116,6,0,124,1,0,124,2,0,124,
-    3,0,131,3,0,1,113,44,0,87,100,5,0,100,6,0,
-    103,1,0,102,2,0,100,7,0,100,8,0,100,6,0,103,
-    2,0,102,2,0,102,2,0,125,4,0,120,149,0,124,4,
-    0,68,93,129,0,92,2,0,125,5,0,125,6,0,116,7,
-    0,100,9,0,100,10,0,132,0,0,124,6,0,68,131,1,
-    0,131,1,0,115,199,0,116,8,0,130,1,0,124,6,0,
-    100,11,0,25,125,7,0,124,5,0,116,1,0,106,3,0,
-    107,6,0,114,241,0,116,1,0,106,3,0,124,5,0,25,
-    125,8,0,80,113,156,0,121,20,0,116,0,0,106,5,0,
-    124,5,0,131,1,0,125,8,0,80,87,113,156,0,4,116,
-    9,0,107,10,0,114,28,1,1,1,1,119,156,0,89,113,
-    156,0,88,113,156,0,87,116,9,0,100,12,0,131,1,0,
-    130,1,0,116,6,0,124,1,0,100,13,0,124,8,0,131,
-    3,0,1,116,6,0,124,1,0,100,14,0,124,7,0,131,
-    3,0,1,116,6,0,124,1,0,100,15,0,100,16,0,106,
-    10,0,124,6,0,131,1,0,131,3,0,1,121,19,0,116,
-    0,0,106,5,0,100,17,0,131,1,0,125,9,0,87,110,
-    24,0,4,116,9,0,107,10,0,114,147,1,1,1,1,100,
-    18,0,125,9,0,89,110,1,0,88,116,6,0,124,1,0,
-    100,17,0,124,9,0,131,3,0,1,116,0,0,106,5,0,
-    100,19,0,131,1,0,125,10,0,116,6,0,124,1,0,100,
-    19,0,124,10,0,131,3,0,1,124,5,0,100,7,0,107,
-    2,0,114,238,1,116,0,0,106,5,0,100,20,0,131,1,
-    0,125,11,0,116,6,0,124,1,0,100,21,0,124,11,0,
-    131,3,0,1,116,6,0,124,1,0,100,22,0,116,11,0,
-    131,0,0,131,3,0,1,116,12,0,106,13,0,116,2,0,
-    106,14,0,131,0,0,131,1,0,1,124,5,0,100,7,0,
-    107,2,0,114,66,2,116,15,0,106,16,0,100,23,0,131,
-    1,0,1,100,24,0,116,12,0,107,6,0,114,66,2,100,
-    25,0,116,17,0,95,18,0,100,18,0,83,41,27,122,205,
-    83,101,116,117,112,32,116,104,101,32,112,97,116,104,45,98,
-    97,115,101,100,32,105,109,112,111,114,116,101,114,115,32,102,
-    111,114,32,105,109,112,111,114,116,108,105,98,32,98,121,32,
-    105,109,112,111,114,116,105,110,103,32,110,101,101,100,101,100,
-    10,32,32,32,32,98,117,105,108,116,45,105,110,32,109,111,
-    100,117,108,101,115,32,97,110,100,32,105,110,106,101,99,116,
-    105,110,103,32,116,104,101,109,32,105,110,116,111,32,116,104,
-    101,32,103,108,111,98,97,108,32,110,97,109,101,115,112,97,
-    99,101,46,10,10,32,32,32,32,79,116,104,101,114,32,99,
-    111,109,112,111,110,101,110,116,115,32,97,114,101,32,101,120,
-    116,114,97,99,116,101,100,32,102,114,111,109,32,116,104,101,
-    32,99,111,114,101,32,98,111,111,116,115,116,114,97,112,32,
-    109,111,100,117,108,101,46,10,10,32,32,32,32,114,49,0,
-    0,0,114,60,0,0,0,218,8,98,117,105,108,116,105,110,
-    115,114,147,0,0,0,90,5,112,111,115,105,120,250,1,47,
-    218,2,110,116,250,1,92,99,1,0,0,0,0,0,0,0,
-    2,0,0,0,3,0,0,0,115,0,0,0,115,33,0,0,
-    0,124,0,0,93,23,0,125,1,0,116,0,0,124,1,0,
-    131,1,0,100,0,0,107,2,0,86,1,113,3,0,100,1,
-    0,83,41,2,114,29,0,0,0,78,41,1,114,31,0,0,
-    0,41,2,114,22,0,0,0,114,77,0,0,0,114,4,0,
-    0,0,114,4,0,0,0,114,5,0,0,0,114,231,0,0,
-    0,127,5,0,0,115,2,0,0,0,6,0,122,25,95,115,
-    101,116,117,112,46,60,108,111,99,97,108,115,62,46,60,103,
-    101,110,101,120,112,114,62,114,59,0,0,0,122,30,105,109,
-    112,111,114,116,108,105,98,32,114,101,113,117,105,114,101,115,
-    32,112,111,115,105,120,32,111,114,32,110,116,114,3,0,0,
-    0,114,25,0,0,0,114,21,0,0,0,114,30,0,0,0,
-    90,7,95,116,104,114,101,97,100,78,90,8,95,119,101,97,
-    107,114,101,102,90,6,119,105,110,114,101,103,114,173,0,0,
-    0,114,6,0,0,0,122,4,46,112,121,119,122,6,95,100,
-    46,112,121,100,84,41,4,122,3,95,105,111,122,9,95,119,
-    97,114,110,105,110,103,115,122,8,98,117,105,108,116,105,110,
-    115,122,7,109,97,114,115,104,97,108,41,19,114,121,0,0,
-    0,114,7,0,0,0,114,150,0,0,0,114,132,0,0,0,
-    114,112,0,0,0,90,18,95,98,117,105,108,116,105,110,95,
-    102,114,111,109,95,110,97,109,101,114,116,0,0,0,218,3,
-    97,108,108,218,14,65,115,115,101,114,116,105,111,110,69,114,
-    114,111,114,114,107,0,0,0,114,26,0,0,0,114,11,0,
-    0,0,114,233,0,0,0,114,154,0,0,0,114,27,1,0,
-    0,114,84,0,0,0,114,169,0,0,0,114,172,0,0,0,
-    114,177,0,0,0,41,12,218,17,95,98,111,111,116,115,116,
-    114,97,112,95,109,111,100,117,108,101,90,11,115,101,108,102,
-    95,109,111,100,117,108,101,90,12,98,117,105,108,116,105,110,
-    95,110,97,109,101,90,14,98,117,105,108,116,105,110,95,109,
-    111,100,117,108,101,90,10,111,115,95,100,101,116,97,105,108,
-    115,90,10,98,117,105,108,116,105,110,95,111,115,114,21,0,
-    0,0,114,25,0,0,0,90,9,111,115,95,109,111,100,117,
-    108,101,90,13,116,104,114,101,97,100,95,109,111,100,117,108,
-    101,90,14,119,101,97,107,114,101,102,95,109,111,100,117,108,
-    101,90,13,119,105,110,114,101,103,95,109,111,100,117,108,101,
-    114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,
-    6,95,115,101,116,117,112,102,5,0,0,115,82,0,0,0,
-    0,8,6,1,9,1,9,3,13,1,13,1,15,1,18,2,
-    13,1,20,3,33,1,19,2,31,1,10,1,15,1,13,1,
-    4,2,3,1,15,1,5,1,13,1,12,2,12,1,16,1,
-    16,1,25,3,3,1,19,1,13,2,11,1,16,3,15,1,
-    16,3,12,1,15,1,16,3,19,1,19,1,12,1,13,1,
-    12,1,114,35,1,0,0,99,1,0,0,0,0,0,0,0,
-    2,0,0,0,3,0,0,0,67,0,0,0,115,116,0,0,
-    0,116,0,0,124,0,0,131,1,0,1,116,1,0,131,0,
-    0,125,1,0,116,2,0,106,3,0,106,4,0,116,5,0,
-    106,6,0,124,1,0,140,0,0,103,1,0,131,1,0,1,
-    116,7,0,106,8,0,100,1,0,107,2,0,114,78,0,116,
-    2,0,106,9,0,106,10,0,116,11,0,131,1,0,1,116,
-    2,0,106,9,0,106,10,0,116,12,0,131,1,0,1,116,
-    5,0,124,0,0,95,5,0,116,13,0,124,0,0,95,13,
-    0,100,2,0,83,41,3,122,41,73,110,115,116,97,108,108,
-    32,116,104,101,32,112,97,116,104,45,98,97,115,101,100,32,
-    105,109,112,111,114,116,32,99,111,109,112,111,110,101,110,116,
-    115,46,114,30,1,0,0,78,41,14,114,35,1,0,0,114,
-    167,0,0,0,114,7,0,0,0,114,1,1,0,0,114,154,
-    0,0,0,114,9,1,0,0,114,22,1,0,0,114,3,0,
-    0,0,114,112,0,0,0,218,9,109,101,116,97,95,112,97,
-    116,104,114,169,0,0,0,114,172,0,0,0,114,252,0,0,
-    0,114,219,0,0,0,41,2,114,34,1,0,0,90,17,115,
-    117,112,112,111,114,116,101,100,95,108,111,97,100,101,114,115,
-    114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,
-    8,95,105,110,115,116,97,108,108,170,5,0,0,115,16,0,
-    0,0,0,2,10,1,9,1,28,1,15,1,16,1,16,4,
-    9,1,114,37,1,0,0,41,3,122,3,119,105,110,114,1,
-    0,0,0,114,2,0,0,0,41,59,114,114,0,0,0,114,
-    10,0,0,0,114,11,0,0,0,114,17,0,0,0,114,19,
-    0,0,0,114,28,0,0,0,114,38,0,0,0,114,39,0,
-    0,0,114,43,0,0,0,114,44,0,0,0,114,46,0,0,
-    0,114,55,0,0,0,218,4,116,121,112,101,218,8,95,95,
-    99,111,100,101,95,95,114,149,0,0,0,114,15,0,0,0,
-    114,140,0,0,0,114,14,0,0,0,114,18,0,0,0,90,
-    17,95,82,65,87,95,77,65,71,73,67,95,78,85,77,66,
-    69,82,114,73,0,0,0,114,72,0,0,0,114,84,0,0,
-    0,114,74,0,0,0,90,23,68,69,66,85,71,95,66,89,
-    84,69,67,79,68,69,95,83,85,70,70,73,88,69,83,90,
-    27,79,80,84,73,77,73,90,69,68,95,66,89,84,69,67,
-    79,68,69,95,83,85,70,70,73,88,69,83,114,79,0,0,
-    0,114,85,0,0,0,114,91,0,0,0,114,95,0,0,0,
-    114,97,0,0,0,114,105,0,0,0,114,123,0,0,0,114,
-    130,0,0,0,114,135,0,0,0,114,146,0,0,0,114,152,
-    0,0,0,114,155,0,0,0,114,160,0,0,0,114,131,0,
-    0,0,218,6,111,98,106,101,99,116,114,168,0,0,0,114,
-    165,0,0,0,114,172,0,0,0,114,187,0,0,0,114,195,
-    0,0,0,114,211,0,0,0,114,219,0,0,0,114,224,0,
-    0,0,114,233,0,0,0,114,225,0,0,0,114,234,0,0,
-    0,114,250,0,0,0,114,252,0,0,0,114,9,1,0,0,
-    114,26,1,0,0,114,167,0,0,0,114,35,1,0,0,114,
-    37,1,0,0,114,4,0,0,0,114,4,0,0,0,114,4,
-    0,0,0,114,5,0,0,0,218,8,60,109,111,100,117,108,
-    101,62,8,0,0,0,115,104,0,0,0,6,17,6,3,12,
-    12,12,5,12,5,12,6,12,12,12,10,12,9,12,5,12,
-    7,15,22,15,107,22,1,18,2,6,1,6,2,9,2,9,
-    2,10,2,21,44,12,33,12,19,12,12,12,12,18,8,12,
-    27,12,18,12,15,21,55,21,12,18,10,12,14,24,22,9,
-    3,12,1,15,65,19,63,19,27,22,110,19,41,25,43,25,
-    16,6,3,19,57,19,57,19,41,19,134,19,146,15,23,12,
-    11,12,68,
+    105,111,110,115,41,46,70,114,58,0,0,0,114,56,0,0,
+    0,114,29,0,0,0,114,188,0,0,0,122,9,116,114,121,
+    105,110,103,32,123,125,114,98,0,0,0,78,122,25,112,111,
+    115,115,105,98,108,101,32,110,97,109,101,115,112,97,99,101,
+    32,102,111,114,32,123,125,114,87,0,0,0,41,23,114,32,
+    0,0,0,114,39,0,0,0,114,35,0,0,0,114,3,0,
+    0,0,114,45,0,0,0,114,220,0,0,0,114,40,0,0,
+    0,114,11,1,0,0,218,11,95,102,105,108,108,95,99,97,
+    99,104,101,114,6,0,0,0,114,14,1,0,0,114,88,0,
+    0,0,114,13,1,0,0,114,28,0,0,0,114,10,1,0,
+    0,114,44,0,0,0,114,8,1,0,0,114,46,0,0,0,
+    114,105,0,0,0,114,47,0,0,0,114,121,0,0,0,114,
+    166,0,0,0,114,164,0,0,0,41,14,114,108,0,0,0,
+    114,126,0,0,0,114,183,0,0,0,90,12,105,115,95,110,
+    97,109,101,115,112,97,99,101,90,11,116,97,105,108,95,109,
+    111,100,117,108,101,114,138,0,0,0,90,5,99,97,99,104,
+    101,90,12,99,97,99,104,101,95,109,111,100,117,108,101,90,
+    9,98,97,115,101,95,112,97,116,104,114,229,0,0,0,114,
+    170,0,0,0,90,13,105,110,105,116,95,102,105,108,101,110,
+    97,109,101,90,9,102,117,108,108,95,112,97,116,104,114,133,
+    0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
+    0,0,114,184,0,0,0,225,4,0,0,115,68,0,0,0,
+    0,3,6,1,19,1,3,1,34,1,13,1,11,1,15,1,
+    10,1,9,2,9,1,9,1,15,2,9,1,6,2,12,1,
+    18,1,22,1,10,1,15,1,12,1,32,4,12,2,22,1,
+    22,1,25,1,16,1,12,1,29,1,6,1,19,1,18,1,
+    12,1,4,1,122,20,70,105,108,101,70,105,110,100,101,114,
+    46,102,105,110,100,95,115,112,101,99,99,1,0,0,0,0,
+    0,0,0,9,0,0,0,13,0,0,0,67,0,0,0,115,
+    11,1,0,0,124,0,0,106,0,0,125,1,0,121,31,0,
+    116,1,0,106,2,0,124,1,0,112,33,0,116,1,0,106,
+    3,0,131,0,0,131,1,0,125,2,0,87,110,33,0,4,
+    116,4,0,116,5,0,116,6,0,102,3,0,107,10,0,114,
+    75,0,1,1,1,103,0,0,125,2,0,89,110,1,0,88,
+    116,7,0,106,8,0,106,9,0,100,1,0,131,1,0,115,
+    112,0,116,10,0,124,2,0,131,1,0,124,0,0,95,11,
+    0,110,111,0,116,10,0,131,0,0,125,3,0,120,90,0,
+    124,2,0,68,93,82,0,125,4,0,124,4,0,106,12,0,
+    100,2,0,131,1,0,92,3,0,125,5,0,125,6,0,125,
+    7,0,124,6,0,114,191,0,100,3,0,106,13,0,124,5,
+    0,124,7,0,106,14,0,131,0,0,131,2,0,125,8,0,
+    110,6,0,124,5,0,125,8,0,124,3,0,106,15,0,124,
+    8,0,131,1,0,1,113,128,0,87,124,3,0,124,0,0,
+    95,11,0,116,7,0,106,8,0,106,9,0,116,16,0,131,
+    1,0,114,7,1,100,4,0,100,5,0,132,0,0,124,2,
+    0,68,131,1,0,124,0,0,95,17,0,100,6,0,83,41,
+    7,122,68,70,105,108,108,32,116,104,101,32,99,97,99,104,
+    101,32,111,102,32,112,111,116,101,110,116,105,97,108,32,109,
+    111,100,117,108,101,115,32,97,110,100,32,112,97,99,107,97,
+    103,101,115,32,102,111,114,32,116,104,105,115,32,100,105,114,
+    101,99,116,111,114,121,46,114,0,0,0,0,114,58,0,0,
+    0,122,5,123,125,46,123,125,99,1,0,0,0,0,0,0,
+    0,2,0,0,0,3,0,0,0,83,0,0,0,115,28,0,
+    0,0,104,0,0,124,0,0,93,18,0,125,1,0,124,1,
+    0,106,0,0,131,0,0,146,2,0,113,6,0,83,114,4,
+    0,0,0,41,1,114,88,0,0,0,41,2,114,22,0,0,
+    0,90,2,102,110,114,4,0,0,0,114,4,0,0,0,114,
+    5,0,0,0,250,9,60,115,101,116,99,111,109,112,62,43,
+    5,0,0,115,2,0,0,0,9,0,122,41,70,105,108,101,
+    70,105,110,100,101,114,46,95,102,105,108,108,95,99,97,99,
+    104,101,46,60,108,111,99,97,108,115,62,46,60,115,101,116,
+    99,111,109,112,62,78,41,18,114,35,0,0,0,114,3,0,
+    0,0,90,7,108,105,115,116,100,105,114,114,45,0,0,0,
+    114,3,1,0,0,218,15,80,101,114,109,105,115,115,105,111,
+    110,69,114,114,111,114,218,18,78,111,116,65,68,105,114,101,
+    99,116,111,114,121,69,114,114,111,114,114,7,0,0,0,114,
+    8,0,0,0,114,9,0,0,0,114,12,1,0,0,114,13,
+    1,0,0,114,83,0,0,0,114,47,0,0,0,114,88,0,
+    0,0,218,3,97,100,100,114,10,0,0,0,114,14,1,0,
+    0,41,9,114,108,0,0,0,114,35,0,0,0,90,8,99,
+    111,110,116,101,110,116,115,90,21,108,111,119,101,114,95,115,
+    117,102,102,105,120,95,99,111,110,116,101,110,116,115,114,248,
+    0,0,0,114,106,0,0,0,114,241,0,0,0,114,229,0,
+    0,0,90,8,110,101,119,95,110,97,109,101,114,4,0,0,
+    0,114,4,0,0,0,114,5,0,0,0,114,16,1,0,0,
+    14,5,0,0,115,34,0,0,0,0,2,9,1,3,1,31,
+    1,22,3,11,3,18,1,18,7,9,1,13,1,24,1,6,
+    1,27,2,6,1,17,1,9,1,18,1,122,22,70,105,108,
+    101,70,105,110,100,101,114,46,95,102,105,108,108,95,99,97,
+    99,104,101,99,1,0,0,0,0,0,0,0,3,0,0,0,
+    3,0,0,0,7,0,0,0,115,25,0,0,0,135,0,0,
+    135,1,0,102,2,0,100,1,0,100,2,0,134,0,0,125,
+    2,0,124,2,0,83,41,3,97,20,1,0,0,65,32,99,
+    108,97,115,115,32,109,101,116,104,111,100,32,119,104,105,99,
+    104,32,114,101,116,117,114,110,115,32,97,32,99,108,111,115,
+    117,114,101,32,116,111,32,117,115,101,32,111,110,32,115,121,
+    115,46,112,97,116,104,95,104,111,111,107,10,32,32,32,32,
+    32,32,32,32,119,104,105,99,104,32,119,105,108,108,32,114,
+    101,116,117,114,110,32,97,110,32,105,110,115,116,97,110,99,
+    101,32,117,115,105,110,103,32,116,104,101,32,115,112,101,99,
+    105,102,105,101,100,32,108,111,97,100,101,114,115,32,97,110,
+    100,32,116,104,101,32,112,97,116,104,10,32,32,32,32,32,
+    32,32,32,99,97,108,108,101,100,32,111,110,32,116,104,101,
+    32,99,108,111,115,117,114,101,46,10,10,32,32,32,32,32,
+    32,32,32,73,102,32,116,104,101,32,112,97,116,104,32,99,
+    97,108,108,101,100,32,111,110,32,116,104,101,32,99,108,111,
+    115,117,114,101,32,105,115,32,110,111,116,32,97,32,100,105,
+    114,101,99,116,111,114,121,44,32,73,109,112,111,114,116,69,
+    114,114,111,114,32,105,115,10,32,32,32,32,32,32,32,32,
+    114,97,105,115,101,100,46,10,10,32,32,32,32,32,32,32,
+    32,99,1,0,0,0,0,0,0,0,1,0,0,0,4,0,
+    0,0,19,0,0,0,115,43,0,0,0,116,0,0,124,0,
+    0,131,1,0,115,30,0,116,1,0,100,1,0,100,2,0,
+    124,0,0,131,1,1,130,1,0,136,0,0,124,0,0,136,
+    1,0,140,1,0,83,41,3,122,45,80,97,116,104,32,104,
+    111,111,107,32,102,111,114,32,105,109,112,111,114,116,108,105,
+    98,46,109,97,99,104,105,110,101,114,121,46,70,105,108,101,
+    70,105,110,100,101,114,46,122,30,111,110,108,121,32,100,105,
+    114,101,99,116,111,114,105,101,115,32,97,114,101,32,115,117,
+    112,112,111,114,116,101,100,114,35,0,0,0,41,2,114,46,
+    0,0,0,114,107,0,0,0,41,1,114,35,0,0,0,41,
+    2,114,174,0,0,0,114,15,1,0,0,114,4,0,0,0,
+    114,5,0,0,0,218,24,112,97,116,104,95,104,111,111,107,
+    95,102,111,114,95,70,105,108,101,70,105,110,100,101,114,55,
+    5,0,0,115,6,0,0,0,0,2,12,1,18,1,122,54,
+    70,105,108,101,70,105,110,100,101,114,46,112,97,116,104,95,
+    104,111,111,107,46,60,108,111,99,97,108,115,62,46,112,97,
+    116,104,95,104,111,111,107,95,102,111,114,95,70,105,108,101,
+    70,105,110,100,101,114,114,4,0,0,0,41,3,114,174,0,
+    0,0,114,15,1,0,0,114,21,1,0,0,114,4,0,0,
+    0,41,2,114,174,0,0,0,114,15,1,0,0,114,5,0,
+    0,0,218,9,112,97,116,104,95,104,111,111,107,45,5,0,
+    0,115,4,0,0,0,0,10,21,6,122,20,70,105,108,101,
+    70,105,110,100,101,114,46,112,97,116,104,95,104,111,111,107,
+    99,1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,
+    0,67,0,0,0,115,16,0,0,0,100,1,0,106,0,0,
+    124,0,0,106,1,0,131,1,0,83,41,2,78,122,16,70,
+    105,108,101,70,105,110,100,101,114,40,123,33,114,125,41,41,
+    2,114,47,0,0,0,114,35,0,0,0,41,1,114,108,0,
+    0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
+    0,114,247,0,0,0,63,5,0,0,115,2,0,0,0,0,
+    1,122,19,70,105,108,101,70,105,110,100,101,114,46,95,95,
+    114,101,112,114,95,95,41,15,114,112,0,0,0,114,111,0,
+    0,0,114,113,0,0,0,114,114,0,0,0,114,188,0,0,
+    0,114,253,0,0,0,114,130,0,0,0,114,185,0,0,0,
+    114,124,0,0,0,114,8,1,0,0,114,184,0,0,0,114,
+    16,1,0,0,114,186,0,0,0,114,22,1,0,0,114,247,
+    0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,
+    0,0,114,5,0,0,0,114,9,1,0,0,179,4,0,0,
+    115,20,0,0,0,12,7,6,2,12,14,12,4,6,2,12,
+    12,12,5,15,45,12,31,18,18,114,9,1,0,0,99,4,
+    0,0,0,0,0,0,0,6,0,0,0,11,0,0,0,67,
+    0,0,0,115,195,0,0,0,124,0,0,106,0,0,100,1,
+    0,131,1,0,125,4,0,124,0,0,106,0,0,100,2,0,
+    131,1,0,125,5,0,124,4,0,115,99,0,124,5,0,114,
+    54,0,124,5,0,106,1,0,125,4,0,110,45,0,124,2,
+    0,124,3,0,107,2,0,114,84,0,116,2,0,124,1,0,
+    124,2,0,131,2,0,125,4,0,110,15,0,116,3,0,124,
+    1,0,124,2,0,131,2,0,125,4,0,124,5,0,115,126,
+    0,116,4,0,124,1,0,124,2,0,100,3,0,124,4,0,
+    131,2,1,125,5,0,121,44,0,124,5,0,124,0,0,100,
+    2,0,60,124,4,0,124,0,0,100,1,0,60,124,2,0,
+    124,0,0,100,4,0,60,124,3,0,124,0,0,100,5,0,
+    60,87,110,18,0,4,116,5,0,107,10,0,114,190,0,1,
+    1,1,89,110,1,0,88,100,0,0,83,41,6,78,114,227,
+    0,0,0,218,8,95,95,115,112,101,99,95,95,114,127,0,
+    0,0,90,8,95,95,102,105,108,101,95,95,90,10,95,95,
+    99,97,99,104,101,100,95,95,41,6,218,3,103,101,116,114,
+    127,0,0,0,114,224,0,0,0,114,219,0,0,0,114,165,
+    0,0,0,218,9,69,120,99,101,112,116,105,111,110,41,6,
+    90,2,110,115,114,106,0,0,0,90,8,112,97,116,104,110,
+    97,109,101,90,9,99,112,97,116,104,110,97,109,101,114,127,
+    0,0,0,114,133,0,0,0,114,4,0,0,0,114,4,0,
+    0,0,114,5,0,0,0,218,14,95,102,105,120,95,117,112,
+    95,109,111,100,117,108,101,69,5,0,0,115,34,0,0,0,
+    0,2,15,1,15,1,6,1,6,1,12,1,12,1,18,2,
+    15,1,6,1,21,1,3,1,10,1,10,1,10,1,14,1,
+    13,2,114,26,1,0,0,99,0,0,0,0,0,0,0,0,
+    3,0,0,0,3,0,0,0,67,0,0,0,115,55,0,0,
+    0,116,0,0,116,1,0,106,2,0,131,0,0,102,2,0,
+    125,0,0,116,3,0,116,4,0,102,2,0,125,1,0,116,
+    5,0,116,6,0,102,2,0,125,2,0,124,0,0,124,1,
+    0,124,2,0,103,3,0,83,41,1,122,95,82,101,116,117,
+    114,110,115,32,97,32,108,105,115,116,32,111,102,32,102,105,
+    108,101,45,98,97,115,101,100,32,109,111,100,117,108,101,32,
+    108,111,97,100,101,114,115,46,10,10,32,32,32,32,69,97,
+    99,104,32,105,116,101,109,32,105,115,32,97,32,116,117,112,
+    108,101,32,40,108,111,97,100,101,114,44,32,115,117,102,102,
+    105,120,101,115,41,46,10,32,32,32,32,41,7,114,225,0,
+    0,0,114,150,0,0,0,218,18,101,120,116,101,110,115,105,
+    111,110,95,115,117,102,102,105,120,101,115,114,219,0,0,0,
+    114,84,0,0,0,114,224,0,0,0,114,74,0,0,0,41,
+    3,90,10,101,120,116,101,110,115,105,111,110,115,90,6,115,
+    111,117,114,99,101,90,8,98,121,116,101,99,111,100,101,114,
+    4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,167,
+    0,0,0,92,5,0,0,115,8,0,0,0,0,5,18,1,
+    12,1,12,1,114,167,0,0,0,99,1,0,0,0,0,0,
+    0,0,12,0,0,0,12,0,0,0,67,0,0,0,115,70,
+    2,0,0,124,0,0,97,0,0,116,0,0,106,1,0,97,
+    1,0,116,0,0,106,2,0,97,2,0,116,1,0,106,3,
+    0,116,4,0,25,125,1,0,120,76,0,100,26,0,68,93,
+    68,0,125,2,0,124,2,0,116,1,0,106,3,0,107,7,
+    0,114,83,0,116,0,0,106,5,0,124,2,0,131,1,0,
+    125,3,0,110,13,0,116,1,0,106,3,0,124,2,0,25,
+    125,3,0,116,6,0,124,1,0,124,2,0,124,3,0,131,
+    3,0,1,113,44,0,87,100,5,0,100,6,0,103,1,0,
+    102,2,0,100,7,0,100,8,0,100,6,0,103,2,0,102,
+    2,0,102,2,0,125,4,0,120,149,0,124,4,0,68,93,
+    129,0,92,2,0,125,5,0,125,6,0,116,7,0,100,9,
+    0,100,10,0,132,0,0,124,6,0,68,131,1,0,131,1,
+    0,115,199,0,116,8,0,130,1,0,124,6,0,100,11,0,
+    25,125,7,0,124,5,0,116,1,0,106,3,0,107,6,0,
+    114,241,0,116,1,0,106,3,0,124,5,0,25,125,8,0,
+    80,113,156,0,121,20,0,116,0,0,106,5,0,124,5,0,
+    131,1,0,125,8,0,80,87,113,156,0,4,116,9,0,107,
+    10,0,114,28,1,1,1,1,119,156,0,89,113,156,0,88,
+    113,156,0,87,116,9,0,100,12,0,131,1,0,130,1,0,
+    116,6,0,124,1,0,100,13,0,124,8,0,131,3,0,1,
+    116,6,0,124,1,0,100,14,0,124,7,0,131,3,0,1,
+    116,6,0,124,1,0,100,15,0,100,16,0,106,10,0,124,
+    6,0,131,1,0,131,3,0,1,121,19,0,116,0,0,106,
+    5,0,100,17,0,131,1,0,125,9,0,87,110,24,0,4,
+    116,9,0,107,10,0,114,147,1,1,1,1,100,18,0,125,
+    9,0,89,110,1,0,88,116,6,0,124,1,0,100,17,0,
+    124,9,0,131,3,0,1,116,0,0,106,5,0,100,19,0,
+    131,1,0,125,10,0,116,6,0,124,1,0,100,19,0,124,
+    10,0,131,3,0,1,124,5,0,100,7,0,107,2,0,114,
+    238,1,116,0,0,106,5,0,100,20,0,131,1,0,125,11,
+    0,116,6,0,124,1,0,100,21,0,124,11,0,131,3,0,
+    1,116,6,0,124,1,0,100,22,0,116,11,0,131,0,0,
+    131,3,0,1,116,12,0,106,13,0,116,2,0,106,14,0,
+    131,0,0,131,1,0,1,124,5,0,100,7,0,107,2,0,
+    114,66,2,116,15,0,106,16,0,100,23,0,131,1,0,1,
+    100,24,0,116,12,0,107,6,0,114,66,2,100,25,0,116,
+    17,0,95,18,0,100,18,0,83,41,27,122,205,83,101,116,
+    117,112,32,116,104,101,32,112,97,116,104,45,98,97,115,101,
+    100,32,105,109,112,111,114,116,101,114,115,32,102,111,114,32,
+    105,109,112,111,114,116,108,105,98,32,98,121,32,105,109,112,
+    111,114,116,105,110,103,32,110,101,101,100,101,100,10,32,32,
+    32,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,
+    101,115,32,97,110,100,32,105,110,106,101,99,116,105,110,103,
+    32,116,104,101,109,32,105,110,116,111,32,116,104,101,32,103,
+    108,111,98,97,108,32,110,97,109,101,115,112,97,99,101,46,
+    10,10,32,32,32,32,79,116,104,101,114,32,99,111,109,112,
+    111,110,101,110,116,115,32,97,114,101,32,101,120,116,114,97,
+    99,116,101,100,32,102,114,111,109,32,116,104,101,32,99,111,
+    114,101,32,98,111,111,116,115,116,114,97,112,32,109,111,100,
+    117,108,101,46,10,10,32,32,32,32,114,49,0,0,0,114,
+    60,0,0,0,218,8,98,117,105,108,116,105,110,115,114,147,
+    0,0,0,90,5,112,111,115,105,120,250,1,47,218,2,110,
+    116,250,1,92,99,1,0,0,0,0,0,0,0,2,0,0,
+    0,3,0,0,0,115,0,0,0,115,33,0,0,0,124,0,
+    0,93,23,0,125,1,0,116,0,0,124,1,0,131,1,0,
+    100,0,0,107,2,0,86,1,113,3,0,100,1,0,83,41,
+    2,114,29,0,0,0,78,41,1,114,31,0,0,0,41,2,
+    114,22,0,0,0,114,77,0,0,0,114,4,0,0,0,114,
+    4,0,0,0,114,5,0,0,0,114,231,0,0,0,128,5,
+    0,0,115,2,0,0,0,6,0,122,25,95,115,101,116,117,
+    112,46,60,108,111,99,97,108,115,62,46,60,103,101,110,101,
+    120,112,114,62,114,59,0,0,0,122,30,105,109,112,111,114,
+    116,108,105,98,32,114,101,113,117,105,114,101,115,32,112,111,
+    115,105,120,32,111,114,32,110,116,114,3,0,0,0,114,25,
+    0,0,0,114,21,0,0,0,114,30,0,0,0,90,7,95,
+    116,104,114,101,97,100,78,90,8,95,119,101,97,107,114,101,
+    102,90,6,119,105,110,114,101,103,114,173,0,0,0,114,6,
+    0,0,0,122,4,46,112,121,119,122,6,95,100,46,112,121,
+    100,84,41,4,122,3,95,105,111,122,9,95,119,97,114,110,
+    105,110,103,115,122,8,98,117,105,108,116,105,110,115,122,7,
+    109,97,114,115,104,97,108,41,19,114,121,0,0,0,114,7,
+    0,0,0,114,150,0,0,0,114,132,0,0,0,114,112,0,
+    0,0,90,18,95,98,117,105,108,116,105,110,95,102,114,111,
+    109,95,110,97,109,101,114,116,0,0,0,218,3,97,108,108,
+    218,14,65,115,115,101,114,116,105,111,110,69,114,114,111,114,
+    114,107,0,0,0,114,26,0,0,0,114,11,0,0,0,114,
+    233,0,0,0,114,154,0,0,0,114,27,1,0,0,114,84,
+    0,0,0,114,169,0,0,0,114,172,0,0,0,114,177,0,
+    0,0,41,12,218,17,95,98,111,111,116,115,116,114,97,112,
+    95,109,111,100,117,108,101,90,11,115,101,108,102,95,109,111,
+    100,117,108,101,90,12,98,117,105,108,116,105,110,95,110,97,
+    109,101,90,14,98,117,105,108,116,105,110,95,109,111,100,117,
+    108,101,90,10,111,115,95,100,101,116,97,105,108,115,90,10,
+    98,117,105,108,116,105,110,95,111,115,114,21,0,0,0,114,
+    25,0,0,0,90,9,111,115,95,109,111,100,117,108,101,90,
+    13,116,104,114,101,97,100,95,109,111,100,117,108,101,90,14,
+    119,101,97,107,114,101,102,95,109,111,100,117,108,101,90,13,
+    119,105,110,114,101,103,95,109,111,100,117,108,101,114,4,0,
+    0,0,114,4,0,0,0,114,5,0,0,0,218,6,95,115,
+    101,116,117,112,103,5,0,0,115,82,0,0,0,0,8,6,
+    1,9,1,9,3,13,1,13,1,15,1,18,2,13,1,20,
+    3,33,1,19,2,31,1,10,1,15,1,13,1,4,2,3,
+    1,15,1,5,1,13,1,12,2,12,1,16,1,16,1,25,
+    3,3,1,19,1,13,2,11,1,16,3,15,1,16,3,12,
+    1,15,1,16,3,19,1,19,1,12,1,13,1,12,1,114,
+    35,1,0,0,99,1,0,0,0,0,0,0,0,2,0,0,
+    0,3,0,0,0,67,0,0,0,115,116,0,0,0,116,0,
+    0,124,0,0,131,1,0,1,116,1,0,131,0,0,125,1,
+    0,116,2,0,106,3,0,106,4,0,116,5,0,106,6,0,
+    124,1,0,140,0,0,103,1,0,131,1,0,1,116,7,0,
+    106,8,0,100,1,0,107,2,0,114,78,0,116,2,0,106,
+    9,0,106,10,0,116,11,0,131,1,0,1,116,2,0,106,
+    9,0,106,10,0,116,12,0,131,1,0,1,116,5,0,124,
+    0,0,95,5,0,116,13,0,124,0,0,95,13,0,100,2,
+    0,83,41,3,122,41,73,110,115,116,97,108,108,32,116,104,
+    101,32,112,97,116,104,45,98,97,115,101,100,32,105,109,112,
+    111,114,116,32,99,111,109,112,111,110,101,110,116,115,46,114,
+    30,1,0,0,78,41,14,114,35,1,0,0,114,167,0,0,
+    0,114,7,0,0,0,114,1,1,0,0,114,154,0,0,0,
+    114,9,1,0,0,114,22,1,0,0,114,3,0,0,0,114,
+    112,0,0,0,218,9,109,101,116,97,95,112,97,116,104,114,
+    169,0,0,0,114,172,0,0,0,114,252,0,0,0,114,219,
+    0,0,0,41,2,114,34,1,0,0,90,17,115,117,112,112,
+    111,114,116,101,100,95,108,111,97,100,101,114,115,114,4,0,
+    0,0,114,4,0,0,0,114,5,0,0,0,218,8,95,105,
+    110,115,116,97,108,108,171,5,0,0,115,16,0,0,0,0,
+    2,10,1,9,1,28,1,15,1,16,1,16,4,9,1,114,
+    37,1,0,0,41,3,122,3,119,105,110,114,1,0,0,0,
+    114,2,0,0,0,41,59,114,114,0,0,0,114,10,0,0,
+    0,114,11,0,0,0,114,17,0,0,0,114,19,0,0,0,
+    114,28,0,0,0,114,38,0,0,0,114,39,0,0,0,114,
+    43,0,0,0,114,44,0,0,0,114,46,0,0,0,114,55,
+    0,0,0,218,4,116,121,112,101,218,8,95,95,99,111,100,
+    101,95,95,114,149,0,0,0,114,15,0,0,0,114,140,0,
+    0,0,114,14,0,0,0,114,18,0,0,0,90,17,95,82,
+    65,87,95,77,65,71,73,67,95,78,85,77,66,69,82,114,
+    73,0,0,0,114,72,0,0,0,114,84,0,0,0,114,74,
+    0,0,0,90,23,68,69,66,85,71,95,66,89,84,69,67,
+    79,68,69,95,83,85,70,70,73,88,69,83,90,27,79,80,
+    84,73,77,73,90,69,68,95,66,89,84,69,67,79,68,69,
+    95,83,85,70,70,73,88,69,83,114,79,0,0,0,114,85,
+    0,0,0,114,91,0,0,0,114,95,0,0,0,114,97,0,
+    0,0,114,105,0,0,0,114,123,0,0,0,114,130,0,0,
+    0,114,135,0,0,0,114,146,0,0,0,114,152,0,0,0,
+    114,155,0,0,0,114,160,0,0,0,114,131,0,0,0,218,
+    6,111,98,106,101,99,116,114,168,0,0,0,114,165,0,0,
+    0,114,172,0,0,0,114,187,0,0,0,114,195,0,0,0,
+    114,211,0,0,0,114,219,0,0,0,114,224,0,0,0,114,
+    233,0,0,0,114,225,0,0,0,114,234,0,0,0,114,250,
+    0,0,0,114,252,0,0,0,114,9,1,0,0,114,26,1,
+    0,0,114,167,0,0,0,114,35,1,0,0,114,37,1,0,
+    0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,
+    114,5,0,0,0,218,8,60,109,111,100,117,108,101,62,8,
+    0,0,0,115,104,0,0,0,6,17,6,3,12,12,12,5,
+    12,5,12,6,12,12,12,10,12,9,12,5,12,7,15,22,
+    15,108,22,1,18,2,6,1,6,2,9,2,9,2,10,2,
+    21,44,12,33,12,19,12,12,12,12,18,8,12,27,12,18,
+    12,15,21,55,21,12,18,10,12,14,24,22,9,3,12,1,
+    15,65,19,63,19,27,22,110,19,41,25,43,25,16,6,3,
+    19,57,19,57,19,41,19,134,19,146,15,23,12,11,12,68,
 };
diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h
--- a/Python/opcode_targets.h
+++ b/Python/opcode_targets.h
@@ -148,11 +148,11 @@
     &&TARGET_SET_ADD,
     &&TARGET_MAP_ADD,
     &&TARGET_LOAD_CLASSDEREF,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
+    &&TARGET_BUILD_LIST_UNPACK,
+    &&TARGET_BUILD_MAP_UNPACK,
+    &&TARGET_BUILD_MAP_UNPACK_WITH_CALL,
+    &&TARGET_BUILD_TUPLE_UNPACK,
+    &&TARGET_BUILD_SET_UNPACK,
     &&_unknown_opcode,
     &&_unknown_opcode,
     &&_unknown_opcode,
diff --git a/Python/symtable.c b/Python/symtable.c
--- a/Python/symtable.c
+++ b/Python/symtable.c
@@ -1083,13 +1083,13 @@
     } \
 }
 
-#define VISIT_KWONLYDEFAULTS(ST, KW_DEFAULTS) { \
+#define VISIT_SEQ_WITH_NULL(ST, TYPE, SEQ) {     \
     int i = 0; \
-    asdl_seq *seq = (KW_DEFAULTS); /* avoid variable capture */ \
+    asdl_seq *seq = (SEQ); /* avoid variable capture */ \
     for (i = 0; i < asdl_seq_LEN(seq); i++) { \
-        expr_ty elt = (expr_ty)asdl_seq_GET(seq, i); \
+        TYPE ## _ty elt = (TYPE ## _ty)asdl_seq_GET(seq, i); \
         if (!elt) continue; /* can be NULL */ \
-        if (!symtable_visit_expr((ST), elt)) \
+        if (!symtable_visit_ ## TYPE((ST), elt)) \
             VISIT_QUIT((ST), 0);             \
     } \
 }
@@ -1146,8 +1146,7 @@
         if (s->v.FunctionDef.args->defaults)
             VISIT_SEQ(st, expr, s->v.FunctionDef.args->defaults);
         if (s->v.FunctionDef.args->kw_defaults)
-            VISIT_KWONLYDEFAULTS(st,
-                               s->v.FunctionDef.args->kw_defaults);
+            VISIT_SEQ_WITH_NULL(st, expr, s->v.FunctionDef.args->kw_defaults);
         if (!symtable_visit_annotations(st, s))
             VISIT_QUIT(st, 0);
         if (s->v.FunctionDef.decorator_list)
@@ -1167,10 +1166,6 @@
             VISIT_QUIT(st, 0);
         VISIT_SEQ(st, expr, s->v.ClassDef.bases);
         VISIT_SEQ(st, keyword, s->v.ClassDef.keywords);
-        if (s->v.ClassDef.starargs)
-            VISIT(st, expr, s->v.ClassDef.starargs);
-        if (s->v.ClassDef.kwargs)
-            VISIT(st, expr, s->v.ClassDef.kwargs);
         if (s->v.ClassDef.decorator_list)
             VISIT_SEQ(st, expr, s->v.ClassDef.decorator_list);
         if (!symtable_enter_block(st, s->v.ClassDef.name, ClassBlock,
@@ -1349,8 +1344,7 @@
         if (e->v.Lambda.args->defaults)
             VISIT_SEQ(st, expr, e->v.Lambda.args->defaults);
         if (e->v.Lambda.args->kw_defaults)
-            VISIT_KWONLYDEFAULTS(st,
-                                 e->v.Lambda.args->kw_defaults);
+            VISIT_SEQ_WITH_NULL(st, expr, e->v.Lambda.args->kw_defaults);
         if (!symtable_enter_block(st, lambda,
                                   FunctionBlock, (void *)e, e->lineno,
                                   e->col_offset))
@@ -1367,7 +1361,7 @@
         VISIT(st, expr, e->v.IfExp.orelse);
         break;
     case Dict_kind:
-        VISIT_SEQ(st, expr, e->v.Dict.keys);
+        VISIT_SEQ_WITH_NULL(st, expr, e->v.Dict.keys);
         VISIT_SEQ(st, expr, e->v.Dict.values);
         break;
     case Set_kind:
@@ -1405,11 +1399,7 @@
     case Call_kind:
         VISIT(st, expr, e->v.Call.func);
         VISIT_SEQ(st, expr, e->v.Call.args);
-        VISIT_SEQ(st, keyword, e->v.Call.keywords);
-        if (e->v.Call.starargs)
-            VISIT(st, expr, e->v.Call.starargs);
-        if (e->v.Call.kwargs)
-            VISIT(st, expr, e->v.Call.kwargs);
+        VISIT_SEQ_WITH_NULL(st, keyword, e->v.Call.keywords);
         break;
     case Num_kind:
     case Str_kind:
diff --git a/Tools/parser/unparse.py b/Tools/parser/unparse.py
--- a/Tools/parser/unparse.py
+++ b/Tools/parser/unparse.py
@@ -211,16 +211,6 @@
             if comma: self.write(", ")
             else: comma = True
             self.dispatch(e)
-        if t.starargs:
-            if comma: self.write(", ")
-            else: comma = True
-            self.write("*")
-            self.dispatch(t.starargs)
-        if t.kwargs:
-            if comma: self.write(", ")
-            else: comma = True
-            self.write("**")
-            self.dispatch(t.kwargs)
         self.write(")")
 
         self.enter()
@@ -450,16 +440,6 @@
             if comma: self.write(", ")
             else: comma = True
             self.dispatch(e)
-        if t.starargs:
-            if comma: self.write(", ")
-            else: comma = True
-            self.write("*")
-            self.dispatch(t.starargs)
-        if t.kwargs:
-            if comma: self.write(", ")
-            else: comma = True
-            self.write("**")
-            self.dispatch(t.kwargs)
         self.write(")")
 
     def _Subscript(self, t):
@@ -543,8 +523,11 @@
                 self.dispatch(t.kwarg.annotation)
 
     def _keyword(self, t):
-        self.write(t.arg)
-        self.write("=")
+        if t.arg is None:
+            self.write("**")
+        else:
+            self.write(t.arg)
+            self.write("=")
         self.dispatch(t.value)
 
     def _Lambda(self, t):

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list