[Python-3000-checkins] r55430 - in python/branches/p3yk: Grammar/Grammar Include/Python-ast.h Include/graminit.h Lib/symbol.py Lib/test/test_ast.py Lib/test/test_decorators.py Lib/test/test_inspect.py Misc/NEWS Modules/parsermodule.c Parser/Python.asdl Python/Python-ast.c Python/ast.c Python/compile.c Python/graminit.c Python/symtable.c

jack.diederich python-3000-checkins at python.org
Fri May 18 15:40:10 CEST 2007


Author: jack.diederich
Date: Fri May 18 15:39:59 2007
New Revision: 55430

Modified:
   python/branches/p3yk/Grammar/Grammar
   python/branches/p3yk/Include/Python-ast.h
   python/branches/p3yk/Include/graminit.h
   python/branches/p3yk/Lib/symbol.py
   python/branches/p3yk/Lib/test/test_ast.py
   python/branches/p3yk/Lib/test/test_decorators.py
   python/branches/p3yk/Lib/test/test_inspect.py
   python/branches/p3yk/Misc/NEWS
   python/branches/p3yk/Modules/parsermodule.c
   python/branches/p3yk/Parser/Python.asdl
   python/branches/p3yk/Python/Python-ast.c
   python/branches/p3yk/Python/ast.c
   python/branches/p3yk/Python/compile.c
   python/branches/p3yk/Python/graminit.c
   python/branches/p3yk/Python/symtable.c
Log:
Implements class decorators, PEP 3129.

Modified: python/branches/p3yk/Grammar/Grammar
==============================================================================
--- python/branches/p3yk/Grammar/Grammar	(original)
+++ python/branches/p3yk/Grammar/Grammar	Fri May 18 15:39:59 2007
@@ -21,7 +21,8 @@
 
 decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE
 decorators: decorator+
-funcdef: [decorators] 'def' NAME parameters ['->' test] ':' suite
+decorated: decorators (classdef | funcdef)
+funcdef: 'def' NAME parameters ['->' test] ':' suite
 parameters: '(' [typedargslist] ')'
 typedargslist: ((tfpdef ['=' test] ',')*
                 ('*' [tfpdef] (',' tfpdef ['=' test])* [',' '**' tfpdef] | '**' tfpdef)
@@ -63,7 +64,7 @@
 nonlocal_stmt: 'nonlocal' NAME (',' NAME)*
 assert_stmt: 'assert' test [',' test]
 
-compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef
+compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated
 if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite]
 while_stmt: 'while' test ':' suite ['else' ':' suite]
 for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite]

Modified: python/branches/p3yk/Include/Python-ast.h
==============================================================================
--- python/branches/p3yk/Include/Python-ast.h	(original)
+++ python/branches/p3yk/Include/Python-ast.h	Fri May 18 15:39:59 2007
@@ -75,7 +75,7 @@
                         identifier name;
                         arguments_ty args;
                         asdl_seq *body;
-                        asdl_seq *decorators;
+                        asdl_seq *decorator_list;
                         expr_ty returns;
                 } FunctionDef;
                 
@@ -86,6 +86,7 @@
                         expr_ty starargs;
                         expr_ty kwargs;
                         asdl_seq *body;
+                        asdl_seq *decorator_list;
                 } ClassDef;
                 
                 struct {
@@ -381,12 +382,13 @@
 mod_ty _Py_Suite(asdl_seq * body, PyArena *arena);
 #define FunctionDef(a0, a1, a2, a3, a4, a5, a6, a7) _Py_FunctionDef(a0, a1, a2, a3, a4, a5, a6, a7)
 stmt_ty _Py_FunctionDef(identifier name, arguments_ty args, asdl_seq * body,
-                        asdl_seq * decorators, expr_ty returns, int lineno, int
-                        col_offset, PyArena *arena);
-#define ClassDef(a0, a1, a2, a3, a4, a5, a6, a7, a8) _Py_ClassDef(a0, a1, a2, a3, a4, a5, a6, a7, a8)
+                        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)
 stmt_ty _Py_ClassDef(identifier name, asdl_seq * bases, asdl_seq * keywords,
-                     expr_ty starargs, expr_ty kwargs, asdl_seq * body, int
-                     lineno, int col_offset, PyArena *arena);
+                     expr_ty starargs, expr_ty kwargs, 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)

Modified: python/branches/p3yk/Include/graminit.h
==============================================================================
--- python/branches/p3yk/Include/graminit.h	(original)
+++ python/branches/p3yk/Include/graminit.h	Fri May 18 15:39:59 2007
@@ -3,78 +3,79 @@
 #define eval_input 258
 #define decorator 259
 #define decorators 260
-#define funcdef 261
-#define parameters 262
-#define typedargslist 263
-#define tfpdef 264
-#define varargslist 265
-#define vfpdef 266
-#define stmt 267
-#define simple_stmt 268
-#define small_stmt 269
-#define expr_stmt 270
-#define augassign 271
-#define del_stmt 272
-#define pass_stmt 273
-#define flow_stmt 274
-#define break_stmt 275
-#define continue_stmt 276
-#define return_stmt 277
-#define yield_stmt 278
-#define raise_stmt 279
-#define import_stmt 280
-#define import_name 281
-#define import_from 282
-#define import_as_name 283
-#define dotted_as_name 284
-#define import_as_names 285
-#define dotted_as_names 286
-#define dotted_name 287
-#define global_stmt 288
-#define nonlocal_stmt 289
-#define assert_stmt 290
-#define compound_stmt 291
-#define if_stmt 292
-#define while_stmt 293
-#define for_stmt 294
-#define try_stmt 295
-#define with_stmt 296
-#define with_var 297
-#define except_clause 298
-#define suite 299
-#define test 300
-#define test_nocond 301
-#define lambdef 302
-#define lambdef_nocond 303
-#define or_test 304
-#define and_test 305
-#define not_test 306
-#define comparison 307
-#define comp_op 308
-#define star_expr 309
-#define expr 310
-#define xor_expr 311
-#define and_expr 312
-#define shift_expr 313
-#define arith_expr 314
-#define term 315
-#define factor 316
-#define power 317
-#define atom 318
-#define testlist_comp 319
-#define trailer 320
-#define subscriptlist 321
-#define subscript 322
-#define sliceop 323
-#define exprlist 324
-#define testlist 325
-#define dictorsetmaker 326
-#define classdef 327
-#define arglist 328
-#define argument 329
-#define comp_iter 330
-#define comp_for 331
-#define comp_if 332
-#define testlist1 333
-#define encoding_decl 334
-#define yield_expr 335
+#define decorated 261
+#define funcdef 262
+#define parameters 263
+#define typedargslist 264
+#define tfpdef 265
+#define varargslist 266
+#define vfpdef 267
+#define stmt 268
+#define simple_stmt 269
+#define small_stmt 270
+#define expr_stmt 271
+#define augassign 272
+#define del_stmt 273
+#define pass_stmt 274
+#define flow_stmt 275
+#define break_stmt 276
+#define continue_stmt 277
+#define return_stmt 278
+#define yield_stmt 279
+#define raise_stmt 280
+#define import_stmt 281
+#define import_name 282
+#define import_from 283
+#define import_as_name 284
+#define dotted_as_name 285
+#define import_as_names 286
+#define dotted_as_names 287
+#define dotted_name 288
+#define global_stmt 289
+#define nonlocal_stmt 290
+#define assert_stmt 291
+#define compound_stmt 292
+#define if_stmt 293
+#define while_stmt 294
+#define for_stmt 295
+#define try_stmt 296
+#define with_stmt 297
+#define with_var 298
+#define except_clause 299
+#define suite 300
+#define test 301
+#define test_nocond 302
+#define lambdef 303
+#define lambdef_nocond 304
+#define or_test 305
+#define and_test 306
+#define not_test 307
+#define comparison 308
+#define comp_op 309
+#define star_expr 310
+#define expr 311
+#define xor_expr 312
+#define and_expr 313
+#define shift_expr 314
+#define arith_expr 315
+#define term 316
+#define factor 317
+#define power 318
+#define atom 319
+#define testlist_comp 320
+#define trailer 321
+#define subscriptlist 322
+#define subscript 323
+#define sliceop 324
+#define exprlist 325
+#define testlist 326
+#define dictorsetmaker 327
+#define classdef 328
+#define arglist 329
+#define argument 330
+#define comp_iter 331
+#define comp_for 332
+#define comp_if 333
+#define testlist1 334
+#define encoding_decl 335
+#define yield_expr 336

Modified: python/branches/p3yk/Lib/symbol.py
==============================================================================
--- python/branches/p3yk/Lib/symbol.py	(original)
+++ python/branches/p3yk/Lib/symbol.py	Fri May 18 15:39:59 2007
@@ -15,89 +15,90 @@
 eval_input = 258
 decorator = 259
 decorators = 260
-funcdef = 261
-parameters = 262
-typedargslist = 263
-tname = 264
-tfpdef = 265
-tfplist = 266
-varargslist = 267
-vname = 268
-vfpdef = 269
-vfplist = 270
-stmt = 271
-simple_stmt = 272
-small_stmt = 273
-expr_stmt = 274
-augassign = 275
-del_stmt = 276
-pass_stmt = 277
-flow_stmt = 278
-break_stmt = 279
-continue_stmt = 280
-return_stmt = 281
-yield_stmt = 282
-raise_stmt = 283
-import_stmt = 284
-import_name = 285
-import_from = 286
-import_as_name = 287
-dotted_as_name = 288
-import_as_names = 289
-dotted_as_names = 290
-dotted_name = 291
-global_stmt = 292
-nonlocal_stmt = 293
-assert_stmt = 294
-compound_stmt = 295
-if_stmt = 296
-while_stmt = 297
-for_stmt = 298
-try_stmt = 299
-with_stmt = 300
-with_var = 301
-except_clause = 302
-suite = 303
-testlist_safe = 304
-old_test = 305
-old_lambdef = 306
-test = 307
-or_test = 308
-and_test = 309
-not_test = 310
-comparison = 311
-comp_op = 312
-expr = 313
-xor_expr = 314
-and_expr = 315
-shift_expr = 316
-arith_expr = 317
-term = 318
-factor = 319
-power = 320
-atom = 321
-listmaker = 322
-testlist_gexp = 323
-lambdef = 324
-trailer = 325
-subscriptlist = 326
-subscript = 327
-sliceop = 328
-exprlist = 329
-testlist = 330
-dictsetmaker = 331
-classdef = 332
-arglist = 333
-argument = 334
-list_iter = 335
-list_for = 336
-list_if = 337
-gen_iter = 338
-gen_for = 339
-gen_if = 340
-testlist1 = 341
-encoding_decl = 342
-yield_expr = 343
+decorated_thing = 261
+funcdef = 262
+parameters = 263
+typedargslist = 264
+tname = 265
+tfpdef = 266
+tfplist = 267
+varargslist = 268
+vname = 269
+vfpdef = 270
+vfplist = 271
+stmt = 272
+simple_stmt = 273
+small_stmt = 274
+expr_stmt = 275
+augassign = 276
+del_stmt = 277
+pass_stmt = 278
+flow_stmt = 279
+break_stmt = 280
+continue_stmt = 281
+return_stmt = 282
+yield_stmt = 283
+raise_stmt = 284
+import_stmt = 285
+import_name = 286
+import_from = 287
+import_as_name = 288
+dotted_as_name = 289
+import_as_names = 290
+dotted_as_names = 291
+dotted_name = 292
+global_stmt = 293
+nonlocal_stmt = 294
+assert_stmt = 295
+compound_stmt = 296
+if_stmt = 297
+while_stmt = 298
+for_stmt = 299
+try_stmt = 300
+with_stmt = 301
+with_var = 302
+except_clause = 303
+suite = 304
+testlist_safe = 305
+old_test = 306
+old_lambdef = 307
+test = 308
+or_test = 309
+and_test = 310
+not_test = 311
+comparison = 312
+comp_op = 313
+expr = 314
+xor_expr = 315
+and_expr = 316
+shift_expr = 317
+arith_expr = 318
+term = 319
+factor = 320
+power = 321
+atom = 322
+listmaker = 323
+testlist_gexp = 324
+lambdef = 325
+trailer = 326
+subscriptlist = 327
+subscript = 328
+sliceop = 329
+exprlist = 330
+testlist = 331
+dictsetmaker = 332
+classdef = 333
+arglist = 334
+argument = 335
+list_iter = 336
+list_for = 337
+list_if = 338
+gen_iter = 339
+gen_for = 340
+gen_if = 341
+testlist1 = 342
+encoding_decl = 343
+yield_expr = 344
 #--end constants--
 
 sym_name = {}

Modified: python/branches/p3yk/Lib/test/test_ast.py
==============================================================================
--- python/branches/p3yk/Lib/test/test_ast.py	(original)
+++ python/branches/p3yk/Lib/test/test_ast.py	Fri May 18 15:39:59 2007
@@ -152,7 +152,7 @@
 #### EVERYTHING BELOW IS GENERATED #####
 exec_results = [
 ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, [], None, None, [], []), [('Pass', (1, 9))], [], None)]),
-('Module', [('ClassDef', (1, 0), 'C', [], [], None, None, [('Pass', (1, 8))])]),
+('Module', [('ClassDef', (1, 0), 'C', [], [], None, None, [('Pass', (1, 8))], [], )]),
 ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, [], 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))]),

Modified: python/branches/p3yk/Lib/test/test_decorators.py
==============================================================================
--- python/branches/p3yk/Lib/test/test_decorators.py	(original)
+++ python/branches/p3yk/Lib/test/test_decorators.py	Fri May 18 15:39:59 2007
@@ -266,8 +266,44 @@
         self.assertEqual(bar(), 42)
         self.assertEqual(actions, expected_actions)
 
+class TestClassDecorators(unittest.TestCase):
+
+    def test_simple(self):
+        def plain(x):
+            x.extra = 'Hello'
+            return x
+        @plain
+        class C(object): pass
+        self.assertEqual(C.extra, 'Hello')
+
+    def test_double(self):
+        def ten(x):
+            x.extra = 10
+            return x
+        def add_five(x):
+            x.extra += 5
+            return x
+
+        @add_five
+        @ten
+        class C(object): pass
+        self.assertEqual(C.extra, 15)
+
+    def test_order(self):
+        def applied_first(x):
+            x.extra = 'first'
+            return x
+        def applied_second(x):
+            x.extra = 'second'
+            return x
+        @applied_second
+        @applied_first
+        class C(object): pass
+        self.assertEqual(C.extra, 'second')
+
 def test_main():
     test_support.run_unittest(TestDecorators)
+    test_support.run_unittest(TestClassDecorators)
 
 if __name__=="__main__":
     test_main()

Modified: python/branches/p3yk/Lib/test/test_inspect.py
==============================================================================
--- python/branches/p3yk/Lib/test/test_inspect.py	(original)
+++ python/branches/p3yk/Lib/test/test_inspect.py	Fri May 18 15:39:59 2007
@@ -218,7 +218,7 @@
     fodderFile = mod2
 
     def test_wrapped_decorator(self):
-        self.assertSourceEqual(mod2.wrapped, 14, 17)
+        self.assertSourceEqual(mod2.wrapped, 16, 17)
 
     def test_replacing_decorator(self):
         self.assertSourceEqual(mod2.gone, 9, 10)

Modified: python/branches/p3yk/Misc/NEWS
==============================================================================
--- python/branches/p3yk/Misc/NEWS	(original)
+++ python/branches/p3yk/Misc/NEWS	Fri May 18 15:39:59 2007
@@ -173,6 +173,7 @@
 - Additions:
   set literals, ellipsis literal
 
+- Added class decorators per PEP 3129.
 
 Extension Modules
 -----------------

Modified: python/branches/p3yk/Modules/parsermodule.c
==============================================================================
--- python/branches/p3yk/Modules/parsermodule.c	(original)
+++ python/branches/p3yk/Modules/parsermodule.c	Fri May 18 15:39:59 2007
@@ -1403,7 +1403,7 @@
 
 
 /*  compound_stmt:
- *      if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef
+ *      if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef | decorated
  */
 static int
 validate_compound_stmt(node *tree)
@@ -1422,7 +1422,8 @@
           || (ntype == for_stmt)
           || (ntype == try_stmt)
           || (ntype == funcdef)
-          || (ntype == classdef))
+          || (ntype == classdef)
+          || (ntype == decorated))
         res = validate_node(tree);
     else {
         res = 0;
@@ -1432,7 +1433,6 @@
     return (res);
 }
 
-
 static int
 validate_yield_or_testlist(node *tree)
 {
@@ -2366,28 +2366,40 @@
 
 /*  funcdef:
  *      
- *            -6   -5    -4         -3  -2 -1
- *  [decorators] 'def' NAME parameters ':' suite
+ *     -5   -4         -3  -2    -1
+ *  'def' NAME parameters ':' suite
  */
 static int
 validate_funcdef(node *tree)
 {
     int nch = NCH(tree);
     int ok = (validate_ntype(tree, funcdef)
-	       && ((nch == 5) || (nch == 6))
+	       && (nch == 5)
 	       && validate_name(RCHILD(tree, -5), "def")
 	       && validate_ntype(RCHILD(tree, -4), NAME)
 	       && validate_colon(RCHILD(tree, -2))
 	       && validate_parameters(RCHILD(tree, -3))
 	       && validate_suite(RCHILD(tree, -1)));
-
-    if (ok && (nch == 6))
-	ok = validate_decorators(CHILD(tree, 0));
-
     return ok;
 }
 
 
+/* decorated
+ *   decorators (classdef | funcdef)
+ */
+static int
+validate_decorated(node *tree)
+{
+  int nch = NCH(tree);
+  int ok = (validate_ntype(tree, decorated)
+	    && (nch == 2)
+	    && validate_decorators(RCHILD(tree, -2))
+	    && (validate_funcdef(RCHILD(tree, -1))
+		|| validate_class(RCHILD(tree, -1)))
+	    );
+  return ok;
+}
+
 static int
 validate_lambdef(node *tree)
 {
@@ -2731,6 +2743,9 @@
           case classdef:
             res = validate_class(tree);
             break;
+	  case decorated:
+	    res = validate_decorated(tree);
+	    break;
             /*
              *  "Trivial" parse tree nodes.
              *  (Why did I call these trivial?)

Modified: python/branches/p3yk/Parser/Python.asdl
==============================================================================
--- python/branches/p3yk/Parser/Python.asdl	(original)
+++ python/branches/p3yk/Parser/Python.asdl	Fri May 18 15:39:59 2007
@@ -10,13 +10,14 @@
 	    | Suite(stmt* body)
 
 	stmt = FunctionDef(identifier name, arguments args, 
-                           stmt* body, expr* decorators, expr? returns)
+                           stmt* body, expr* decorator_list, expr? returns)
 	      | ClassDef(identifier name, 
 			 expr* bases,
 			 keyword* keywords,
 			 expr? starargs,
 			 expr? kwargs,
-			 stmt* body)
+			 stmt* body,
+			 expr *decorator_list)
 	      | Return(expr? value)
 
 	      | Delete(expr* targets)

Modified: python/branches/p3yk/Python/Python-ast.c
==============================================================================
--- python/branches/p3yk/Python/Python-ast.c	(original)
+++ python/branches/p3yk/Python/Python-ast.c	Fri May 18 15:39:59 2007
@@ -2,7 +2,7 @@
 
 
 /*
-   __version__ 55329.
+   __version__ 55429.
 
    This module must be committed separately after each AST grammar change;
    The __version__ number is set to the revision number of the commit
@@ -42,7 +42,7 @@
         "name",
         "args",
         "body",
-        "decorators",
+        "decorator_list",
         "returns",
 };
 static PyTypeObject *ClassDef_type;
@@ -53,6 +53,7 @@
         "starargs",
         "kwargs",
         "body",
+        "decorator_list",
 };
 static PyTypeObject *Return_type;
 static char *Return_fields[]={
@@ -485,7 +486,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, 6);
+        ClassDef_type = make_type("ClassDef", stmt_type, ClassDef_fields, 7);
         if (!ClassDef_type) return 0;
         Return_type = make_type("Return", stmt_type, Return_fields, 1);
         if (!Return_type) return 0;
@@ -812,8 +813,8 @@
 
 stmt_ty
 FunctionDef(identifier name, arguments_ty args, asdl_seq * body, asdl_seq *
-            decorators, expr_ty returns, int lineno, int col_offset, PyArena
-            *arena)
+            decorator_list, expr_ty returns, int lineno, int col_offset,
+            PyArena *arena)
 {
         stmt_ty p;
         if (!name) {
@@ -833,7 +834,7 @@
         p->v.FunctionDef.name = name;
         p->v.FunctionDef.args = args;
         p->v.FunctionDef.body = body;
-        p->v.FunctionDef.decorators = decorators;
+        p->v.FunctionDef.decorator_list = decorator_list;
         p->v.FunctionDef.returns = returns;
         p->lineno = lineno;
         p->col_offset = col_offset;
@@ -842,8 +843,8 @@
 
 stmt_ty
 ClassDef(identifier name, asdl_seq * bases, asdl_seq * keywords, expr_ty
-         starargs, expr_ty kwargs, asdl_seq * body, int lineno, int col_offset,
-         PyArena *arena)
+         starargs, expr_ty kwargs, asdl_seq * body, asdl_seq * decorator_list,
+         int lineno, int col_offset, PyArena *arena)
 {
         stmt_ty p;
         if (!name) {
@@ -861,6 +862,7 @@
         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;
         p->col_offset = col_offset;
         return p;
@@ -1994,9 +1996,11 @@
                 if (PyObject_SetAttrString(result, "body", value) == -1)
                         goto failed;
                 Py_DECREF(value);
-                value = ast2obj_list(o->v.FunctionDef.decorators, ast2obj_expr);
+                value = ast2obj_list(o->v.FunctionDef.decorator_list,
+                                     ast2obj_expr);
                 if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "decorators", value) == -1)
+                if (PyObject_SetAttrString(result, "decorator_list", value) ==
+                    -1)
                         goto failed;
                 Py_DECREF(value);
                 value = ast2obj_expr(o->v.FunctionDef.returns);
@@ -2038,6 +2042,13 @@
                 if (PyObject_SetAttrString(result, "body", value) == -1)
                         goto failed;
                 Py_DECREF(value);
+                value = ast2obj_list(o->v.ClassDef.decorator_list,
+                                     ast2obj_expr);
+                if (!value) goto failed;
+                if (PyObject_SetAttrString(result, "decorator_list", value) ==
+                    -1)
+                        goto failed;
+                Py_DECREF(value);
                 break;
         case Return_kind:
                 result = PyType_GenericNew(Return_type, NULL, NULL);
@@ -3113,7 +3124,7 @@
         if (PyDict_SetItemString(d, "AST", (PyObject*)AST_type) < 0) return;
         if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0)
                 return;
-        if (PyModule_AddStringConstant(m, "__version__", "55329") < 0)
+        if (PyModule_AddStringConstant(m, "__version__", "53986") < 0)
                 return;
         if (PyDict_SetItemString(d, "mod", (PyObject*)mod_type) < 0) return;
         if (PyDict_SetItemString(d, "Module", (PyObject*)Module_type) < 0)

Modified: python/branches/p3yk/Python/ast.c
==============================================================================
--- python/branches/p3yk/Python/ast.c	(original)
+++ python/branches/p3yk/Python/ast.c	Fri May 18 15:39:59 2007
@@ -28,6 +28,7 @@
 static asdl_seq *ast_for_exprlist(struct compiling *, const node *,
                                   expr_context_ty);
 static expr_ty ast_for_testlist(struct compiling *, const node *);
+static stmt_ty ast_for_classdef(struct compiling *, const node *, asdl_seq *);
 
 /* Note different signature for ast_for_call */
 static expr_ty ast_for_call(struct compiling *, const node *, expr_ty);
@@ -931,28 +932,17 @@
 }
 
 static stmt_ty
-ast_for_funcdef(struct compiling *c, const node *n)
+ast_for_funcdef(struct compiling *c, const node *n, asdl_seq *decorator_seq)
 {
-    /* funcdef: 'def' [decorators] NAME parameters ['->' test] ':' suite */
+    /* funcdef: 'def' NAME parameters ['->' test] ':' suite */
     identifier name;
     arguments_ty args;
     asdl_seq *body;
-    asdl_seq *decorator_seq = NULL;
     expr_ty returns = NULL;
-    int name_i;
+    int name_i = 1;
 
     REQ(n, funcdef);
 
-    if (NCH(n) == 6 || NCH(n) == 8) { /* decorators are present */
-        decorator_seq = ast_for_decorators(c, CHILD(n, 0));
-        if (!decorator_seq)
-            return NULL;
-        name_i = 2;
-    }
-    else {
-        name_i = 1;
-    }
-
     name = NEW_IDENTIFIER(CHILD(n, name_i));
     if (!name)
         return NULL;
@@ -977,6 +967,30 @@
                        n->n_col_offset, c->c_arena);
 }
 
+static stmt_ty
+ast_for_decorated(struct compiling *c, const node *n)
+{
+    /* decorated: decorators (classdef | funcdef) */
+    stmt_ty thing = NULL;
+    asdl_seq *decorator_seq = NULL;
+
+    REQ(n, decorated);
+
+    decorator_seq = ast_for_decorators(c, CHILD(n, 0));
+    if (!decorator_seq)
+      return NULL;
+
+    assert(TYPE(CHILD(n, 1)) == funcdef ||
+	   TYPE(CHILD(n, 1)) == classdef);
+
+    if (TYPE(CHILD(n, 1)) == funcdef) {
+      thing = ast_for_funcdef(c, CHILD(n, 1), decorator_seq);
+    } else if (TYPE(CHILD(n, 1)) == classdef) {
+      thing = ast_for_classdef(c, CHILD(n, 1), decorator_seq);
+    }
+    return thing;
+}
+
 static expr_ty
 ast_for_lambdef(struct compiling *c, const node *n)
 {
@@ -2858,7 +2872,7 @@
 }
 
 static stmt_ty
-ast_for_classdef(struct compiling *c, const node *n)
+ast_for_classdef(struct compiling *c, const node *n, asdl_seq *decorator_seq)
 {
     /* classdef: 'class' NAME ['(' arglist ')'] ':' suite */
     asdl_seq *s;
@@ -2876,7 +2890,7 @@
         if (!s)
             return NULL;
         return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), NULL, NULL, NULL, NULL, s,
-                        LINENO(n), n->n_col_offset, c->c_arena);
+                        decorator_seq, LINENO(n), n->n_col_offset, c->c_arena);
     }
 
     if (TYPE(CHILD(n, 3)) == RPAR) { /* class NAME '(' ')' ':' suite */
@@ -2884,7 +2898,7 @@
         if (!s)
                 return NULL;
         return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), NULL, NULL, NULL, NULL, s,
-                        LINENO(n), n->n_col_offset, c->c_arena);
+                        decorator_seq, LINENO(n), n->n_col_offset, c->c_arena);
     }
 
     /* class NAME '(' arglist ')' ':' suite */
@@ -2900,7 +2914,7 @@
     return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)),
                     call->v.Call.args, call->v.Call.keywords,
                     call->v.Call.starargs, call->v.Call.kwargs, s,
-                    LINENO(n), n->n_col_offset, c->c_arena);
+                    decorator_seq, LINENO(n), n->n_col_offset, c->c_arena);
 }
 
 static stmt_ty
@@ -2946,7 +2960,7 @@
     }
     else {
         /* compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt
-                        | funcdef | classdef
+                        | funcdef | classdef | decorated
         */
         node *ch = CHILD(n, 0);
         REQ(n, compound_stmt);
@@ -2962,9 +2976,11 @@
             case with_stmt:
                 return ast_for_with_stmt(c, ch);
             case funcdef:
-                return ast_for_funcdef(c, ch);
+                return ast_for_funcdef(c, ch, NULL);
             case classdef:
-                return ast_for_classdef(c, ch);
+                return ast_for_classdef(c, ch, NULL);
+	    case decorated:
+	        return ast_for_decorated(c, ch);
             default:
                 PyErr_Format(PyExc_SystemError,
                              "unhandled small_stmt: TYPE=%d NCH=%d\n",

Modified: python/branches/p3yk/Python/compile.c
==============================================================================
--- python/branches/p3yk/Python/compile.c	(original)
+++ python/branches/p3yk/Python/compile.c	Fri May 18 15:39:59 2007
@@ -1408,7 +1408,7 @@
 	PyObject *first_const = Py_None;
 	arguments_ty args = s->v.FunctionDef.args;
 	expr_ty returns = s->v.FunctionDef.returns;
-	asdl_seq* decos = s->v.FunctionDef.decorators;
+	asdl_seq* decos = s->v.FunctionDef.decorator_list;
 	stmt_ty st;
 	int i, n, docstring, kw_default_count = 0, arglength;
 	int num_annotations;
@@ -1479,7 +1479,12 @@
 	PyCodeObject *co;
 	PyObject *str;
 	PySTEntryObject *ste;
-	int err;
+	int err, i;
+	asdl_seq* decos = s->v.ClassDef.decorator_list;
+
+        if (!compiler_decorators(c, decos))
+                return 0;
+
 
 	/* initialize statics */
 	if (build_class == NULL) {
@@ -1577,7 +1582,12 @@
 				  s->v.ClassDef.kwargs))
 		return 0;
 
-	/* 6. store into <name> */
+	/* 6. apply decorators */
+        for (i = 0; i < asdl_seq_LEN(decos); i++) {
+                ADDOP_I(c, CALL_FUNCTION, 1);
+        }
+
+	/* 7. store into <name> */
 	if (!compiler_nameop(c, s->v.ClassDef.name, Store))
 		return 0;
 	return 1;

Modified: python/branches/p3yk/Python/graminit.c
==============================================================================
--- python/branches/p3yk/Python/graminit.c	(original)
+++ python/branches/p3yk/Python/graminit.c	Fri May 18 15:39:59 2007
@@ -86,304 +86,312 @@
 	{1, arcs_4_0},
 	{2, arcs_4_1},
 };
-static arc arcs_5_0[2] = {
+static arc arcs_5_0[1] = {
 	{16, 1},
-	{18, 2},
 };
-static arc arcs_5_1[1] = {
+static arc arcs_5_1[2] = {
 	{18, 2},
+	{19, 2},
 };
 static arc arcs_5_2[1] = {
-	{19, 3},
+	{0, 2},
 };
-static arc arcs_5_3[1] = {
-	{20, 4},
+static state states_5[3] = {
+	{1, arcs_5_0},
+	{2, arcs_5_1},
+	{1, arcs_5_2},
 };
-static arc arcs_5_4[2] = {
-	{21, 5},
-	{23, 6},
+static arc arcs_6_0[1] = {
+	{20, 1},
 };
-static arc arcs_5_5[1] = {
-	{22, 7},
+static arc arcs_6_1[1] = {
+	{21, 2},
 };
-static arc arcs_5_6[1] = {
-	{24, 8},
+static arc arcs_6_2[1] = {
+	{22, 3},
 };
-static arc arcs_5_7[1] = {
-	{23, 6},
+static arc arcs_6_3[2] = {
+	{23, 4},
+	{25, 5},
 };
-static arc arcs_5_8[1] = {
-	{0, 8},
+static arc arcs_6_4[1] = {
+	{24, 6},
 };
-static state states_5[9] = {
-	{2, arcs_5_0},
-	{1, arcs_5_1},
-	{1, arcs_5_2},
-	{1, arcs_5_3},
-	{2, arcs_5_4},
-	{1, arcs_5_5},
-	{1, arcs_5_6},
-	{1, arcs_5_7},
-	{1, arcs_5_8},
+static arc arcs_6_5[1] = {
+	{26, 7},
 };
-static arc arcs_6_0[1] = {
+static arc arcs_6_6[1] = {
+	{25, 5},
+};
+static arc arcs_6_7[1] = {
+	{0, 7},
+};
+static state states_6[8] = {
+	{1, arcs_6_0},
+	{1, arcs_6_1},
+	{1, arcs_6_2},
+	{2, arcs_6_3},
+	{1, arcs_6_4},
+	{1, arcs_6_5},
+	{1, arcs_6_6},
+	{1, arcs_6_7},
+};
+static arc arcs_7_0[1] = {
 	{13, 1},
 };
-static arc arcs_6_1[2] = {
-	{25, 2},
+static arc arcs_7_1[2] = {
+	{27, 2},
 	{15, 3},
 };
-static arc arcs_6_2[1] = {
+static arc arcs_7_2[1] = {
 	{15, 3},
 };
-static arc arcs_6_3[1] = {
+static arc arcs_7_3[1] = {
 	{0, 3},
 };
-static state states_6[4] = {
-	{1, arcs_6_0},
-	{2, arcs_6_1},
-	{1, arcs_6_2},
-	{1, arcs_6_3},
+static state states_7[4] = {
+	{1, arcs_7_0},
+	{2, arcs_7_1},
+	{1, arcs_7_2},
+	{1, arcs_7_3},
 };
-static arc arcs_7_0[3] = {
-	{26, 1},
-	{29, 2},
-	{30, 3},
+static arc arcs_8_0[3] = {
+	{28, 1},
+	{31, 2},
+	{32, 3},
 };
-static arc arcs_7_1[3] = {
-	{27, 4},
-	{28, 5},
+static arc arcs_8_1[3] = {
+	{29, 4},
+	{30, 5},
 	{0, 1},
 };
-static arc arcs_7_2[3] = {
-	{26, 6},
-	{28, 7},
+static arc arcs_8_2[3] = {
+	{28, 6},
+	{30, 7},
 	{0, 2},
 };
-static arc arcs_7_3[1] = {
-	{26, 8},
+static arc arcs_8_3[1] = {
+	{28, 8},
 };
-static arc arcs_7_4[1] = {
-	{22, 9},
+static arc arcs_8_4[1] = {
+	{24, 9},
 };
-static arc arcs_7_5[4] = {
-	{26, 1},
-	{29, 2},
-	{30, 3},
+static arc arcs_8_5[4] = {
+	{28, 1},
+	{31, 2},
+	{32, 3},
 	{0, 5},
 };
-static arc arcs_7_6[2] = {
-	{28, 7},
+static arc arcs_8_6[2] = {
+	{30, 7},
 	{0, 6},
 };
-static arc arcs_7_7[2] = {
-	{26, 10},
-	{30, 3},
+static arc arcs_8_7[2] = {
+	{28, 10},
+	{32, 3},
 };
-static arc arcs_7_8[1] = {
+static arc arcs_8_8[1] = {
 	{0, 8},
 };
-static arc arcs_7_9[2] = {
-	{28, 5},
+static arc arcs_8_9[2] = {
+	{30, 5},
 	{0, 9},
 };
-static arc arcs_7_10[3] = {
-	{28, 7},
-	{27, 11},
+static arc arcs_8_10[3] = {
+	{30, 7},
+	{29, 11},
 	{0, 10},
 };
-static arc arcs_7_11[1] = {
-	{22, 6},
+static arc arcs_8_11[1] = {
+	{24, 6},
 };
-static state states_7[12] = {
-	{3, arcs_7_0},
-	{3, arcs_7_1},
-	{3, arcs_7_2},
-	{1, arcs_7_3},
-	{1, arcs_7_4},
-	{4, arcs_7_5},
-	{2, arcs_7_6},
-	{2, arcs_7_7},
-	{1, arcs_7_8},
-	{2, arcs_7_9},
-	{3, arcs_7_10},
-	{1, arcs_7_11},
+static state states_8[12] = {
+	{3, arcs_8_0},
+	{3, arcs_8_1},
+	{3, arcs_8_2},
+	{1, arcs_8_3},
+	{1, arcs_8_4},
+	{4, arcs_8_5},
+	{2, arcs_8_6},
+	{2, arcs_8_7},
+	{1, arcs_8_8},
+	{2, arcs_8_9},
+	{3, arcs_8_10},
+	{1, arcs_8_11},
 };
-static arc arcs_8_0[1] = {
-	{19, 1},
+static arc arcs_9_0[1] = {
+	{21, 1},
 };
-static arc arcs_8_1[2] = {
-	{23, 2},
+static arc arcs_9_1[2] = {
+	{25, 2},
 	{0, 1},
 };
-static arc arcs_8_2[1] = {
-	{22, 3},
+static arc arcs_9_2[1] = {
+	{24, 3},
 };
-static arc arcs_8_3[1] = {
+static arc arcs_9_3[1] = {
 	{0, 3},
 };
-static state states_8[4] = {
-	{1, arcs_8_0},
-	{2, arcs_8_1},
-	{1, arcs_8_2},
-	{1, arcs_8_3},
+static state states_9[4] = {
+	{1, arcs_9_0},
+	{2, arcs_9_1},
+	{1, arcs_9_2},
+	{1, arcs_9_3},
 };
-static arc arcs_9_0[3] = {
-	{32, 1},
-	{29, 2},
-	{30, 3},
+static arc arcs_10_0[3] = {
+	{34, 1},
+	{31, 2},
+	{32, 3},
 };
-static arc arcs_9_1[3] = {
-	{27, 4},
-	{28, 5},
+static arc arcs_10_1[3] = {
+	{29, 4},
+	{30, 5},
 	{0, 1},
 };
-static arc arcs_9_2[3] = {
-	{32, 6},
-	{28, 7},
+static arc arcs_10_2[3] = {
+	{34, 6},
+	{30, 7},
 	{0, 2},
 };
-static arc arcs_9_3[1] = {
-	{32, 8},
+static arc arcs_10_3[1] = {
+	{34, 8},
 };
-static arc arcs_9_4[1] = {
-	{22, 9},
+static arc arcs_10_4[1] = {
+	{24, 9},
 };
-static arc arcs_9_5[4] = {
-	{32, 1},
-	{29, 2},
-	{30, 3},
+static arc arcs_10_5[4] = {
+	{34, 1},
+	{31, 2},
+	{32, 3},
 	{0, 5},
 };
-static arc arcs_9_6[2] = {
-	{28, 7},
+static arc arcs_10_6[2] = {
+	{30, 7},
 	{0, 6},
 };
-static arc arcs_9_7[2] = {
-	{32, 10},
-	{30, 3},
+static arc arcs_10_7[2] = {
+	{34, 10},
+	{32, 3},
 };
-static arc arcs_9_8[1] = {
+static arc arcs_10_8[1] = {
 	{0, 8},
 };
-static arc arcs_9_9[2] = {
-	{28, 5},
+static arc arcs_10_9[2] = {
+	{30, 5},
 	{0, 9},
 };
-static arc arcs_9_10[3] = {
-	{28, 7},
-	{27, 11},
+static arc arcs_10_10[3] = {
+	{30, 7},
+	{29, 11},
 	{0, 10},
 };
-static arc arcs_9_11[1] = {
-	{22, 6},
+static arc arcs_10_11[1] = {
+	{24, 6},
 };
-static state states_9[12] = {
-	{3, arcs_9_0},
-	{3, arcs_9_1},
-	{3, arcs_9_2},
-	{1, arcs_9_3},
-	{1, arcs_9_4},
-	{4, arcs_9_5},
-	{2, arcs_9_6},
-	{2, arcs_9_7},
-	{1, arcs_9_8},
-	{2, arcs_9_9},
-	{3, arcs_9_10},
-	{1, arcs_9_11},
+static state states_10[12] = {
+	{3, arcs_10_0},
+	{3, arcs_10_1},
+	{3, arcs_10_2},
+	{1, arcs_10_3},
+	{1, arcs_10_4},
+	{4, arcs_10_5},
+	{2, arcs_10_6},
+	{2, arcs_10_7},
+	{1, arcs_10_8},
+	{2, arcs_10_9},
+	{3, arcs_10_10},
+	{1, arcs_10_11},
 };
-static arc arcs_10_0[1] = {
-	{19, 1},
+static arc arcs_11_0[1] = {
+	{21, 1},
 };
-static arc arcs_10_1[1] = {
+static arc arcs_11_1[1] = {
 	{0, 1},
 };
-static state states_10[2] = {
-	{1, arcs_10_0},
-	{1, arcs_10_1},
+static state states_11[2] = {
+	{1, arcs_11_0},
+	{1, arcs_11_1},
 };
-static arc arcs_11_0[2] = {
+static arc arcs_12_0[2] = {
 	{3, 1},
 	{4, 1},
 };
-static arc arcs_11_1[1] = {
+static arc arcs_12_1[1] = {
 	{0, 1},
 };
-static state states_11[2] = {
-	{2, arcs_11_0},
-	{1, arcs_11_1},
+static state states_12[2] = {
+	{2, arcs_12_0},
+	{1, arcs_12_1},
 };
-static arc arcs_12_0[1] = {
-	{33, 1},
+static arc arcs_13_0[1] = {
+	{35, 1},
 };
-static arc arcs_12_1[2] = {
-	{34, 2},
+static arc arcs_13_1[2] = {
+	{36, 2},
 	{2, 3},
 };
-static arc arcs_12_2[2] = {
-	{33, 1},
+static arc arcs_13_2[2] = {
+	{35, 1},
 	{2, 3},
 };
-static arc arcs_12_3[1] = {
+static arc arcs_13_3[1] = {
 	{0, 3},
 };
-static state states_12[4] = {
-	{1, arcs_12_0},
-	{2, arcs_12_1},
-	{2, arcs_12_2},
-	{1, arcs_12_3},
+static state states_13[4] = {
+	{1, arcs_13_0},
+	{2, arcs_13_1},
+	{2, arcs_13_2},
+	{1, arcs_13_3},
 };
-static arc arcs_13_0[8] = {
-	{35, 1},
-	{36, 1},
+static arc arcs_14_0[8] = {
 	{37, 1},
 	{38, 1},
 	{39, 1},
 	{40, 1},
 	{41, 1},
 	{42, 1},
+	{43, 1},
+	{44, 1},
 };
-static arc arcs_13_1[1] = {
+static arc arcs_14_1[1] = {
 	{0, 1},
 };
-static state states_13[2] = {
-	{8, arcs_13_0},
-	{1, arcs_13_1},
+static state states_14[2] = {
+	{8, arcs_14_0},
+	{1, arcs_14_1},
 };
-static arc arcs_14_0[1] = {
+static arc arcs_15_0[1] = {
 	{9, 1},
 };
-static arc arcs_14_1[3] = {
-	{43, 2},
-	{27, 3},
+static arc arcs_15_1[3] = {
+	{45, 2},
+	{29, 3},
 	{0, 1},
 };
-static arc arcs_14_2[2] = {
-	{44, 4},
+static arc arcs_15_2[2] = {
+	{46, 4},
 	{9, 4},
 };
-static arc arcs_14_3[2] = {
-	{44, 5},
+static arc arcs_15_3[2] = {
+	{46, 5},
 	{9, 5},
 };
-static arc arcs_14_4[1] = {
+static arc arcs_15_4[1] = {
 	{0, 4},
 };
-static arc arcs_14_5[2] = {
-	{27, 3},
+static arc arcs_15_5[2] = {
+	{29, 3},
 	{0, 5},
 };
-static state states_14[6] = {
-	{1, arcs_14_0},
-	{3, arcs_14_1},
-	{2, arcs_14_2},
-	{2, arcs_14_3},
-	{1, arcs_14_4},
-	{2, arcs_14_5},
+static state states_15[6] = {
+	{1, arcs_15_0},
+	{3, arcs_15_1},
+	{2, arcs_15_2},
+	{2, arcs_15_3},
+	{1, arcs_15_4},
+	{2, arcs_15_5},
 };
-static arc arcs_15_0[12] = {
-	{45, 1},
-	{46, 1},
+static arc arcs_16_0[12] = {
 	{47, 1},
 	{48, 1},
 	{49, 1},
@@ -394,64 +402,56 @@
 	{54, 1},
 	{55, 1},
 	{56, 1},
-};
-static arc arcs_15_1[1] = {
-	{0, 1},
-};
-static state states_15[2] = {
-	{12, arcs_15_0},
-	{1, arcs_15_1},
-};
-static arc arcs_16_0[1] = {
 	{57, 1},
+	{58, 1},
 };
 static arc arcs_16_1[1] = {
-	{58, 2},
-};
-static arc arcs_16_2[1] = {
-	{0, 2},
+	{0, 1},
 };
-static state states_16[3] = {
-	{1, arcs_16_0},
+static state states_16[2] = {
+	{12, arcs_16_0},
 	{1, arcs_16_1},
-	{1, arcs_16_2},
 };
 static arc arcs_17_0[1] = {
 	{59, 1},
 };
 static arc arcs_17_1[1] = {
-	{0, 1},
+	{60, 2},
+};
+static arc arcs_17_2[1] = {
+	{0, 2},
 };
-static state states_17[2] = {
+static state states_17[3] = {
 	{1, arcs_17_0},
 	{1, arcs_17_1},
+	{1, arcs_17_2},
 };
-static arc arcs_18_0[5] = {
-	{60, 1},
+static arc arcs_18_0[1] = {
 	{61, 1},
-	{62, 1},
-	{63, 1},
-	{64, 1},
 };
 static arc arcs_18_1[1] = {
 	{0, 1},
 };
 static state states_18[2] = {
-	{5, arcs_18_0},
+	{1, arcs_18_0},
 	{1, arcs_18_1},
 };
-static arc arcs_19_0[1] = {
+static arc arcs_19_0[5] = {
+	{62, 1},
+	{63, 1},
+	{64, 1},
 	{65, 1},
+	{66, 1},
 };
 static arc arcs_19_1[1] = {
 	{0, 1},
 };
 static state states_19[2] = {
-	{1, arcs_19_0},
+	{5, arcs_19_0},
 	{1, arcs_19_1},
 };
 static arc arcs_20_0[1] = {
-	{66, 1},
+	{67, 1},
 };
 static arc arcs_20_1[1] = {
 	{0, 1},
@@ -461,157 +461,148 @@
 	{1, arcs_20_1},
 };
 static arc arcs_21_0[1] = {
-	{67, 1},
+	{68, 1},
 };
-static arc arcs_21_1[2] = {
-	{9, 2},
+static arc arcs_21_1[1] = {
 	{0, 1},
 };
-static arc arcs_21_2[1] = {
-	{0, 2},
-};
-static state states_21[3] = {
+static state states_21[2] = {
 	{1, arcs_21_0},
-	{2, arcs_21_1},
-	{1, arcs_21_2},
+	{1, arcs_21_1},
 };
 static arc arcs_22_0[1] = {
-	{44, 1},
+	{69, 1},
 };
-static arc arcs_22_1[1] = {
+static arc arcs_22_1[2] = {
+	{9, 2},
 	{0, 1},
 };
-static state states_22[2] = {
+static arc arcs_22_2[1] = {
+	{0, 2},
+};
+static state states_22[3] = {
 	{1, arcs_22_0},
-	{1, arcs_22_1},
+	{2, arcs_22_1},
+	{1, arcs_22_2},
 };
 static arc arcs_23_0[1] = {
-	{68, 1},
+	{46, 1},
 };
-static arc arcs_23_1[2] = {
-	{22, 2},
+static arc arcs_23_1[1] = {
 	{0, 1},
 };
-static arc arcs_23_2[2] = {
-	{28, 3},
-	{0, 2},
+static state states_23[2] = {
+	{1, arcs_23_0},
+	{1, arcs_23_1},
 };
-static arc arcs_23_3[1] = {
-	{22, 4},
+static arc arcs_24_0[1] = {
+	{70, 1},
 };
-static arc arcs_23_4[2] = {
-	{28, 5},
-	{0, 4},
+static arc arcs_24_1[2] = {
+	{24, 2},
+	{0, 1},
 };
-static arc arcs_23_5[1] = {
-	{22, 6},
+static arc arcs_24_2[2] = {
+	{30, 3},
+	{0, 2},
 };
-static arc arcs_23_6[1] = {
-	{0, 6},
+static arc arcs_24_3[1] = {
+	{24, 4},
 };
-static state states_23[7] = {
-	{1, arcs_23_0},
-	{2, arcs_23_1},
-	{2, arcs_23_2},
-	{1, arcs_23_3},
-	{2, arcs_23_4},
-	{1, arcs_23_5},
-	{1, arcs_23_6},
+static arc arcs_24_4[2] = {
+	{30, 5},
+	{0, 4},
 };
-static arc arcs_24_0[2] = {
-	{69, 1},
-	{70, 1},
+static arc arcs_24_5[1] = {
+	{24, 6},
 };
-static arc arcs_24_1[1] = {
-	{0, 1},
+static arc arcs_24_6[1] = {
+	{0, 6},
 };
-static state states_24[2] = {
-	{2, arcs_24_0},
-	{1, arcs_24_1},
+static state states_24[7] = {
+	{1, arcs_24_0},
+	{2, arcs_24_1},
+	{2, arcs_24_2},
+	{1, arcs_24_3},
+	{2, arcs_24_4},
+	{1, arcs_24_5},
+	{1, arcs_24_6},
 };
-static arc arcs_25_0[1] = {
+static arc arcs_25_0[2] = {
 	{71, 1},
+	{72, 1},
 };
 static arc arcs_25_1[1] = {
-	{72, 2},
-};
-static arc arcs_25_2[1] = {
-	{0, 2},
+	{0, 1},
 };
-static state states_25[3] = {
-	{1, arcs_25_0},
+static state states_25[2] = {
+	{2, arcs_25_0},
 	{1, arcs_25_1},
-	{1, arcs_25_2},
 };
 static arc arcs_26_0[1] = {
 	{73, 1},
 };
-static arc arcs_26_1[3] = {
+static arc arcs_26_1[1] = {
 	{74, 2},
-	{75, 2},
+};
+static arc arcs_26_2[1] = {
+	{0, 2},
+};
+static state states_26[3] = {
+	{1, arcs_26_0},
+	{1, arcs_26_1},
+	{1, arcs_26_2},
+};
+static arc arcs_27_0[1] = {
+	{75, 1},
+};
+static arc arcs_27_1[3] = {
+	{76, 2},
+	{77, 2},
 	{12, 3},
 };
-static arc arcs_26_2[4] = {
-	{74, 2},
-	{75, 2},
+static arc arcs_27_2[4] = {
+	{76, 2},
+	{77, 2},
 	{12, 3},
-	{71, 4},
+	{73, 4},
 };
-static arc arcs_26_3[1] = {
-	{71, 4},
+static arc arcs_27_3[1] = {
+	{73, 4},
 };
-static arc arcs_26_4[3] = {
-	{29, 5},
+static arc arcs_27_4[3] = {
+	{31, 5},
 	{13, 6},
-	{76, 5},
+	{78, 5},
 };
-static arc arcs_26_5[1] = {
+static arc arcs_27_5[1] = {
 	{0, 5},
 };
-static arc arcs_26_6[1] = {
-	{76, 7},
+static arc arcs_27_6[1] = {
+	{78, 7},
 };
-static arc arcs_26_7[1] = {
+static arc arcs_27_7[1] = {
 	{15, 5},
 };
-static state states_26[8] = {
-	{1, arcs_26_0},
-	{3, arcs_26_1},
-	{4, arcs_26_2},
-	{1, arcs_26_3},
-	{3, arcs_26_4},
-	{1, arcs_26_5},
-	{1, arcs_26_6},
-	{1, arcs_26_7},
-};
-static arc arcs_27_0[1] = {
-	{19, 1},
-};
-static arc arcs_27_1[2] = {
-	{78, 2},
-	{0, 1},
-};
-static arc arcs_27_2[1] = {
-	{19, 3},
-};
-static arc arcs_27_3[1] = {
-	{0, 3},
-};
-static state states_27[4] = {
+static state states_27[8] = {
 	{1, arcs_27_0},
-	{2, arcs_27_1},
-	{1, arcs_27_2},
+	{3, arcs_27_1},
+	{4, arcs_27_2},
 	{1, arcs_27_3},
+	{3, arcs_27_4},
+	{1, arcs_27_5},
+	{1, arcs_27_6},
+	{1, arcs_27_7},
 };
 static arc arcs_28_0[1] = {
-	{12, 1},
+	{21, 1},
 };
 static arc arcs_28_1[2] = {
-	{78, 2},
+	{80, 2},
 	{0, 1},
 };
 static arc arcs_28_2[1] = {
-	{19, 3},
+	{21, 3},
 };
 static arc arcs_28_3[1] = {
 	{0, 3},
@@ -623,37 +614,45 @@
 	{1, arcs_28_3},
 };
 static arc arcs_29_0[1] = {
-	{77, 1},
+	{12, 1},
 };
 static arc arcs_29_1[2] = {
-	{28, 2},
+	{80, 2},
 	{0, 1},
 };
-static arc arcs_29_2[2] = {
-	{77, 1},
-	{0, 2},
+static arc arcs_29_2[1] = {
+	{21, 3},
+};
+static arc arcs_29_3[1] = {
+	{0, 3},
 };
-static state states_29[3] = {
+static state states_29[4] = {
 	{1, arcs_29_0},
 	{2, arcs_29_1},
-	{2, arcs_29_2},
+	{1, arcs_29_2},
+	{1, arcs_29_3},
 };
 static arc arcs_30_0[1] = {
 	{79, 1},
 };
 static arc arcs_30_1[2] = {
-	{28, 0},
+	{30, 2},
 	{0, 1},
 };
-static state states_30[2] = {
+static arc arcs_30_2[2] = {
+	{79, 1},
+	{0, 2},
+};
+static state states_30[3] = {
 	{1, arcs_30_0},
 	{2, arcs_30_1},
+	{2, arcs_30_2},
 };
 static arc arcs_31_0[1] = {
-	{19, 1},
+	{81, 1},
 };
 static arc arcs_31_1[2] = {
-	{74, 0},
+	{30, 0},
 	{0, 1},
 };
 static state states_31[2] = {
@@ -661,28 +660,24 @@
 	{2, arcs_31_1},
 };
 static arc arcs_32_0[1] = {
-	{80, 1},
-};
-static arc arcs_32_1[1] = {
-	{19, 2},
+	{21, 1},
 };
-static arc arcs_32_2[2] = {
-	{28, 1},
-	{0, 2},
+static arc arcs_32_1[2] = {
+	{76, 0},
+	{0, 1},
 };
-static state states_32[3] = {
+static state states_32[2] = {
 	{1, arcs_32_0},
-	{1, arcs_32_1},
-	{2, arcs_32_2},
+	{2, arcs_32_1},
 };
 static arc arcs_33_0[1] = {
-	{81, 1},
+	{82, 1},
 };
 static arc arcs_33_1[1] = {
-	{19, 2},
+	{21, 2},
 };
 static arc arcs_33_2[2] = {
-	{28, 1},
+	{30, 1},
 	{0, 2},
 };
 static state states_33[3] = {
@@ -691,101 +686,82 @@
 	{2, arcs_33_2},
 };
 static arc arcs_34_0[1] = {
-	{82, 1},
+	{83, 1},
 };
 static arc arcs_34_1[1] = {
-	{22, 2},
+	{21, 2},
 };
 static arc arcs_34_2[2] = {
-	{28, 3},
+	{30, 1},
 	{0, 2},
 };
-static arc arcs_34_3[1] = {
-	{22, 4},
-};
-static arc arcs_34_4[1] = {
-	{0, 4},
-};
-static state states_34[5] = {
+static state states_34[3] = {
 	{1, arcs_34_0},
 	{1, arcs_34_1},
 	{2, arcs_34_2},
-	{1, arcs_34_3},
-	{1, arcs_34_4},
 };
-static arc arcs_35_0[7] = {
-	{83, 1},
+static arc arcs_35_0[1] = {
 	{84, 1},
-	{85, 1},
-	{86, 1},
-	{87, 1},
-	{17, 1},
-	{88, 1},
 };
 static arc arcs_35_1[1] = {
-	{0, 1},
-};
-static state states_35[2] = {
-	{7, arcs_35_0},
-	{1, arcs_35_1},
-};
-static arc arcs_36_0[1] = {
-	{89, 1},
-};
-static arc arcs_36_1[1] = {
-	{22, 2},
+	{24, 2},
 };
-static arc arcs_36_2[1] = {
-	{23, 3},
+static arc arcs_35_2[2] = {
+	{30, 3},
+	{0, 2},
 };
-static arc arcs_36_3[1] = {
+static arc arcs_35_3[1] = {
 	{24, 4},
 };
-static arc arcs_36_4[3] = {
-	{90, 1},
-	{91, 5},
+static arc arcs_35_4[1] = {
 	{0, 4},
 };
-static arc arcs_36_5[1] = {
-	{23, 6},
+static state states_35[5] = {
+	{1, arcs_35_0},
+	{1, arcs_35_1},
+	{2, arcs_35_2},
+	{1, arcs_35_3},
+	{1, arcs_35_4},
 };
-static arc arcs_36_6[1] = {
-	{24, 7},
+static arc arcs_36_0[8] = {
+	{85, 1},
+	{86, 1},
+	{87, 1},
+	{88, 1},
+	{89, 1},
+	{19, 1},
+	{18, 1},
+	{17, 1},
 };
-static arc arcs_36_7[1] = {
-	{0, 7},
+static arc arcs_36_1[1] = {
+	{0, 1},
 };
-static state states_36[8] = {
-	{1, arcs_36_0},
+static state states_36[2] = {
+	{8, arcs_36_0},
 	{1, arcs_36_1},
-	{1, arcs_36_2},
-	{1, arcs_36_3},
-	{3, arcs_36_4},
-	{1, arcs_36_5},
-	{1, arcs_36_6},
-	{1, arcs_36_7},
 };
 static arc arcs_37_0[1] = {
-	{92, 1},
+	{90, 1},
 };
 static arc arcs_37_1[1] = {
-	{22, 2},
+	{24, 2},
 };
 static arc arcs_37_2[1] = {
-	{23, 3},
+	{25, 3},
 };
 static arc arcs_37_3[1] = {
-	{24, 4},
+	{26, 4},
 };
-static arc arcs_37_4[2] = {
-	{91, 5},
+static arc arcs_37_4[3] = {
+	{91, 1},
+	{92, 5},
 	{0, 4},
 };
 static arc arcs_37_5[1] = {
-	{23, 6},
+	{25, 6},
 };
 static arc arcs_37_6[1] = {
-	{24, 7},
+	{26, 7},
 };
 static arc arcs_37_7[1] = {
 	{0, 7},
@@ -795,7 +771,7 @@
 	{1, arcs_37_1},
 	{1, arcs_37_2},
 	{1, arcs_37_3},
-	{2, arcs_37_4},
+	{3, arcs_37_4},
 	{1, arcs_37_5},
 	{1, arcs_37_6},
 	{1, arcs_37_7},
@@ -804,267 +780,279 @@
 	{93, 1},
 };
 static arc arcs_38_1[1] = {
-	{58, 2},
+	{24, 2},
 };
 static arc arcs_38_2[1] = {
-	{94, 3},
+	{25, 3},
 };
 static arc arcs_38_3[1] = {
-	{9, 4},
+	{26, 4},
 };
-static arc arcs_38_4[1] = {
-	{23, 5},
+static arc arcs_38_4[2] = {
+	{92, 5},
+	{0, 4},
 };
 static arc arcs_38_5[1] = {
-	{24, 6},
+	{25, 6},
 };
-static arc arcs_38_6[2] = {
-	{91, 7},
-	{0, 6},
+static arc arcs_38_6[1] = {
+	{26, 7},
 };
 static arc arcs_38_7[1] = {
-	{23, 8},
-};
-static arc arcs_38_8[1] = {
-	{24, 9},
-};
-static arc arcs_38_9[1] = {
-	{0, 9},
+	{0, 7},
 };
-static state states_38[10] = {
+static state states_38[8] = {
 	{1, arcs_38_0},
 	{1, arcs_38_1},
 	{1, arcs_38_2},
 	{1, arcs_38_3},
-	{1, arcs_38_4},
+	{2, arcs_38_4},
 	{1, arcs_38_5},
-	{2, arcs_38_6},
+	{1, arcs_38_6},
 	{1, arcs_38_7},
-	{1, arcs_38_8},
-	{1, arcs_38_9},
 };
 static arc arcs_39_0[1] = {
-	{95, 1},
+	{94, 1},
 };
 static arc arcs_39_1[1] = {
-	{23, 2},
+	{60, 2},
 };
 static arc arcs_39_2[1] = {
-	{24, 3},
+	{95, 3},
 };
-static arc arcs_39_3[2] = {
-	{96, 4},
-	{97, 5},
+static arc arcs_39_3[1] = {
+	{9, 4},
 };
 static arc arcs_39_4[1] = {
-	{23, 6},
+	{25, 5},
 };
 static arc arcs_39_5[1] = {
-	{23, 7},
+	{26, 6},
 };
-static arc arcs_39_6[1] = {
-	{24, 8},
+static arc arcs_39_6[2] = {
+	{92, 7},
+	{0, 6},
 };
 static arc arcs_39_7[1] = {
-	{24, 9},
+	{25, 8},
 };
-static arc arcs_39_8[4] = {
-	{96, 4},
-	{91, 10},
-	{97, 5},
-	{0, 8},
+static arc arcs_39_8[1] = {
+	{26, 9},
 };
 static arc arcs_39_9[1] = {
 	{0, 9},
 };
-static arc arcs_39_10[1] = {
-	{23, 11},
-};
-static arc arcs_39_11[1] = {
-	{24, 12},
-};
-static arc arcs_39_12[2] = {
-	{97, 5},
-	{0, 12},
-};
-static state states_39[13] = {
+static state states_39[10] = {
 	{1, arcs_39_0},
 	{1, arcs_39_1},
 	{1, arcs_39_2},
-	{2, arcs_39_3},
+	{1, arcs_39_3},
 	{1, arcs_39_4},
 	{1, arcs_39_5},
-	{1, arcs_39_6},
+	{2, arcs_39_6},
 	{1, arcs_39_7},
-	{4, arcs_39_8},
+	{1, arcs_39_8},
 	{1, arcs_39_9},
-	{1, arcs_39_10},
-	{1, arcs_39_11},
-	{2, arcs_39_12},
 };
 static arc arcs_40_0[1] = {
-	{98, 1},
+	{96, 1},
 };
 static arc arcs_40_1[1] = {
-	{22, 2},
+	{25, 2},
 };
-static arc arcs_40_2[2] = {
-	{99, 3},
-	{23, 4},
+static arc arcs_40_2[1] = {
+	{26, 3},
 };
-static arc arcs_40_3[1] = {
-	{23, 4},
+static arc arcs_40_3[2] = {
+	{97, 4},
+	{98, 5},
 };
 static arc arcs_40_4[1] = {
-	{24, 5},
+	{25, 6},
 };
 static arc arcs_40_5[1] = {
-	{0, 5},
+	{25, 7},
 };
-static state states_40[6] = {
+static arc arcs_40_6[1] = {
+	{26, 8},
+};
+static arc arcs_40_7[1] = {
+	{26, 9},
+};
+static arc arcs_40_8[4] = {
+	{97, 4},
+	{92, 10},
+	{98, 5},
+	{0, 8},
+};
+static arc arcs_40_9[1] = {
+	{0, 9},
+};
+static arc arcs_40_10[1] = {
+	{25, 11},
+};
+static arc arcs_40_11[1] = {
+	{26, 12},
+};
+static arc arcs_40_12[2] = {
+	{98, 5},
+	{0, 12},
+};
+static state states_40[13] = {
 	{1, arcs_40_0},
 	{1, arcs_40_1},
-	{2, arcs_40_2},
-	{1, arcs_40_3},
+	{1, arcs_40_2},
+	{2, arcs_40_3},
 	{1, arcs_40_4},
 	{1, arcs_40_5},
+	{1, arcs_40_6},
+	{1, arcs_40_7},
+	{4, arcs_40_8},
+	{1, arcs_40_9},
+	{1, arcs_40_10},
+	{1, arcs_40_11},
+	{2, arcs_40_12},
 };
 static arc arcs_41_0[1] = {
-	{78, 1},
+	{99, 1},
 };
 static arc arcs_41_1[1] = {
-	{100, 2},
+	{24, 2},
 };
-static arc arcs_41_2[1] = {
-	{0, 2},
+static arc arcs_41_2[2] = {
+	{100, 3},
+	{25, 4},
+};
+static arc arcs_41_3[1] = {
+	{25, 4},
+};
+static arc arcs_41_4[1] = {
+	{26, 5},
+};
+static arc arcs_41_5[1] = {
+	{0, 5},
 };
-static state states_41[3] = {
+static state states_41[6] = {
 	{1, arcs_41_0},
 	{1, arcs_41_1},
-	{1, arcs_41_2},
+	{2, arcs_41_2},
+	{1, arcs_41_3},
+	{1, arcs_41_4},
+	{1, arcs_41_5},
 };
 static arc arcs_42_0[1] = {
-	{101, 1},
+	{80, 1},
 };
-static arc arcs_42_1[2] = {
-	{22, 2},
-	{0, 1},
+static arc arcs_42_1[1] = {
+	{101, 2},
 };
-static arc arcs_42_2[2] = {
-	{78, 3},
+static arc arcs_42_2[1] = {
 	{0, 2},
 };
-static arc arcs_42_3[1] = {
-	{19, 4},
-};
-static arc arcs_42_4[1] = {
-	{0, 4},
-};
-static state states_42[5] = {
+static state states_42[3] = {
 	{1, arcs_42_0},
-	{2, arcs_42_1},
-	{2, arcs_42_2},
-	{1, arcs_42_3},
-	{1, arcs_42_4},
+	{1, arcs_42_1},
+	{1, arcs_42_2},
 };
-static arc arcs_43_0[2] = {
-	{3, 1},
-	{2, 2},
+static arc arcs_43_0[1] = {
+	{102, 1},
 };
-static arc arcs_43_1[1] = {
+static arc arcs_43_1[2] = {
+	{24, 2},
 	{0, 1},
 };
-static arc arcs_43_2[1] = {
-	{102, 3},
+static arc arcs_43_2[2] = {
+	{80, 3},
+	{0, 2},
 };
 static arc arcs_43_3[1] = {
-	{6, 4},
+	{21, 4},
 };
-static arc arcs_43_4[2] = {
-	{6, 4},
-	{103, 1},
+static arc arcs_43_4[1] = {
+	{0, 4},
 };
 static state states_43[5] = {
-	{2, arcs_43_0},
-	{1, arcs_43_1},
-	{1, arcs_43_2},
+	{1, arcs_43_0},
+	{2, arcs_43_1},
+	{2, arcs_43_2},
 	{1, arcs_43_3},
-	{2, arcs_43_4},
+	{1, arcs_43_4},
 };
 static arc arcs_44_0[2] = {
-	{104, 1},
-	{105, 2},
+	{3, 1},
+	{2, 2},
 };
-static arc arcs_44_1[2] = {
-	{89, 3},
+static arc arcs_44_1[1] = {
 	{0, 1},
 };
 static arc arcs_44_2[1] = {
-	{0, 2},
+	{103, 3},
 };
 static arc arcs_44_3[1] = {
-	{104, 4},
+	{6, 4},
 };
-static arc arcs_44_4[1] = {
-	{91, 5},
-};
-static arc arcs_44_5[1] = {
-	{22, 2},
+static arc arcs_44_4[2] = {
+	{6, 4},
+	{104, 1},
 };
-static state states_44[6] = {
+static state states_44[5] = {
 	{2, arcs_44_0},
-	{2, arcs_44_1},
+	{1, arcs_44_1},
 	{1, arcs_44_2},
 	{1, arcs_44_3},
-	{1, arcs_44_4},
-	{1, arcs_44_5},
+	{2, arcs_44_4},
 };
 static arc arcs_45_0[2] = {
-	{104, 1},
-	{107, 1},
+	{105, 1},
+	{106, 2},
 };
-static arc arcs_45_1[1] = {
+static arc arcs_45_1[2] = {
+	{90, 3},
 	{0, 1},
 };
-static state states_45[2] = {
-	{2, arcs_45_0},
-	{1, arcs_45_1},
+static arc arcs_45_2[1] = {
+	{0, 2},
 };
-static arc arcs_46_0[1] = {
-	{108, 1},
+static arc arcs_45_3[1] = {
+	{105, 4},
 };
-static arc arcs_46_1[2] = {
-	{31, 2},
-	{23, 3},
+static arc arcs_45_4[1] = {
+	{92, 5},
+};
+static arc arcs_45_5[1] = {
+	{24, 2},
 };
-static arc arcs_46_2[1] = {
-	{23, 3},
+static state states_45[6] = {
+	{2, arcs_45_0},
+	{2, arcs_45_1},
+	{1, arcs_45_2},
+	{1, arcs_45_3},
+	{1, arcs_45_4},
+	{1, arcs_45_5},
 };
-static arc arcs_46_3[1] = {
-	{22, 4},
+static arc arcs_46_0[2] = {
+	{105, 1},
+	{108, 1},
 };
-static arc arcs_46_4[1] = {
-	{0, 4},
+static arc arcs_46_1[1] = {
+	{0, 1},
 };
-static state states_46[5] = {
-	{1, arcs_46_0},
-	{2, arcs_46_1},
-	{1, arcs_46_2},
-	{1, arcs_46_3},
-	{1, arcs_46_4},
+static state states_46[2] = {
+	{2, arcs_46_0},
+	{1, arcs_46_1},
 };
 static arc arcs_47_0[1] = {
-	{108, 1},
+	{109, 1},
 };
 static arc arcs_47_1[2] = {
-	{31, 2},
-	{23, 3},
+	{33, 2},
+	{25, 3},
 };
 static arc arcs_47_2[1] = {
-	{23, 3},
+	{25, 3},
 };
 static arc arcs_47_3[1] = {
-	{106, 4},
+	{24, 4},
 };
 static arc arcs_47_4[1] = {
 	{0, 4},
@@ -1080,108 +1068,120 @@
 	{109, 1},
 };
 static arc arcs_48_1[2] = {
-	{110, 0},
-	{0, 1},
+	{33, 2},
+	{25, 3},
+};
+static arc arcs_48_2[1] = {
+	{25, 3},
 };
-static state states_48[2] = {
+static arc arcs_48_3[1] = {
+	{107, 4},
+};
+static arc arcs_48_4[1] = {
+	{0, 4},
+};
+static state states_48[5] = {
 	{1, arcs_48_0},
 	{2, arcs_48_1},
+	{1, arcs_48_2},
+	{1, arcs_48_3},
+	{1, arcs_48_4},
 };
 static arc arcs_49_0[1] = {
-	{111, 1},
+	{110, 1},
 };
 static arc arcs_49_1[2] = {
-	{112, 0},
+	{111, 0},
 	{0, 1},
 };
 static state states_49[2] = {
 	{1, arcs_49_0},
 	{2, arcs_49_1},
 };
-static arc arcs_50_0[2] = {
-	{113, 1},
-	{114, 2},
+static arc arcs_50_0[1] = {
+	{112, 1},
+};
+static arc arcs_50_1[2] = {
+	{113, 0},
+	{0, 1},
+};
+static state states_50[2] = {
+	{1, arcs_50_0},
+	{2, arcs_50_1},
+};
+static arc arcs_51_0[2] = {
+	{114, 1},
+	{115, 2},
 };
-static arc arcs_50_1[1] = {
-	{111, 2},
+static arc arcs_51_1[1] = {
+	{112, 2},
 };
-static arc arcs_50_2[1] = {
+static arc arcs_51_2[1] = {
 	{0, 2},
 };
-static state states_50[3] = {
-	{2, arcs_50_0},
-	{1, arcs_50_1},
-	{1, arcs_50_2},
+static state states_51[3] = {
+	{2, arcs_51_0},
+	{1, arcs_51_1},
+	{1, arcs_51_2},
 };
-static arc arcs_51_0[1] = {
-	{115, 1},
+static arc arcs_52_0[1] = {
+	{116, 1},
 };
-static arc arcs_51_1[2] = {
-	{116, 0},
+static arc arcs_52_1[2] = {
+	{117, 0},
 	{0, 1},
 };
-static state states_51[2] = {
-	{1, arcs_51_0},
-	{2, arcs_51_1},
+static state states_52[2] = {
+	{1, arcs_52_0},
+	{2, arcs_52_1},
 };
-static arc arcs_52_0[9] = {
-	{117, 1},
+static arc arcs_53_0[9] = {
 	{118, 1},
 	{119, 1},
 	{120, 1},
 	{121, 1},
 	{122, 1},
-	{94, 1},
-	{113, 2},
-	{123, 3},
+	{123, 1},
+	{95, 1},
+	{114, 2},
+	{124, 3},
 };
-static arc arcs_52_1[1] = {
+static arc arcs_53_1[1] = {
 	{0, 1},
 };
-static arc arcs_52_2[1] = {
-	{94, 1},
+static arc arcs_53_2[1] = {
+	{95, 1},
 };
-static arc arcs_52_3[2] = {
-	{113, 1},
+static arc arcs_53_3[2] = {
+	{114, 1},
 	{0, 3},
 };
-static state states_52[4] = {
-	{9, arcs_52_0},
-	{1, arcs_52_1},
-	{1, arcs_52_2},
-	{2, arcs_52_3},
-};
-static arc arcs_53_0[2] = {
-	{29, 1},
-	{100, 2},
-};
-static arc arcs_53_1[1] = {
-	{100, 2},
-};
-static arc arcs_53_2[1] = {
-	{0, 2},
-};
-static state states_53[3] = {
-	{2, arcs_53_0},
+static state states_53[4] = {
+	{9, arcs_53_0},
 	{1, arcs_53_1},
 	{1, arcs_53_2},
+	{2, arcs_53_3},
 };
-static arc arcs_54_0[1] = {
-	{124, 1},
+static arc arcs_54_0[2] = {
+	{31, 1},
+	{101, 2},
 };
-static arc arcs_54_1[2] = {
-	{125, 0},
-	{0, 1},
+static arc arcs_54_1[1] = {
+	{101, 2},
+};
+static arc arcs_54_2[1] = {
+	{0, 2},
 };
-static state states_54[2] = {
-	{1, arcs_54_0},
-	{2, arcs_54_1},
+static state states_54[3] = {
+	{2, arcs_54_0},
+	{1, arcs_54_1},
+	{1, arcs_54_2},
 };
 static arc arcs_55_0[1] = {
-	{126, 1},
+	{125, 1},
 };
 static arc arcs_55_1[2] = {
-	{127, 0},
+	{126, 0},
 	{0, 1},
 };
 static state states_55[2] = {
@@ -1189,10 +1189,10 @@
 	{2, arcs_55_1},
 };
 static arc arcs_56_0[1] = {
-	{128, 1},
+	{127, 1},
 };
 static arc arcs_56_1[2] = {
-	{129, 0},
+	{128, 0},
 	{0, 1},
 };
 static state states_56[2] = {
@@ -1200,23 +1200,22 @@
 	{2, arcs_56_1},
 };
 static arc arcs_57_0[1] = {
-	{130, 1},
+	{129, 1},
 };
-static arc arcs_57_1[3] = {
-	{131, 0},
-	{132, 0},
+static arc arcs_57_1[2] = {
+	{130, 0},
 	{0, 1},
 };
 static state states_57[2] = {
 	{1, arcs_57_0},
-	{3, arcs_57_1},
+	{2, arcs_57_1},
 };
 static arc arcs_58_0[1] = {
-	{133, 1},
+	{131, 1},
 };
 static arc arcs_58_1[3] = {
-	{134, 0},
-	{135, 0},
+	{132, 0},
+	{133, 0},
 	{0, 1},
 };
 static state states_58[2] = {
@@ -1224,247 +1223,243 @@
 	{3, arcs_58_1},
 };
 static arc arcs_59_0[1] = {
-	{136, 1},
+	{134, 1},
 };
-static arc arcs_59_1[5] = {
-	{29, 0},
-	{137, 0},
-	{138, 0},
-	{139, 0},
+static arc arcs_59_1[3] = {
+	{135, 0},
+	{136, 0},
 	{0, 1},
 };
 static state states_59[2] = {
 	{1, arcs_59_0},
-	{5, arcs_59_1},
+	{3, arcs_59_1},
 };
-static arc arcs_60_0[4] = {
-	{134, 1},
+static arc arcs_60_0[1] = {
+	{137, 1},
+};
+static arc arcs_60_1[5] = {
+	{31, 0},
+	{138, 0},
+	{139, 0},
+	{140, 0},
+	{0, 1},
+};
+static state states_60[2] = {
+	{1, arcs_60_0},
+	{5, arcs_60_1},
+};
+static arc arcs_61_0[4] = {
 	{135, 1},
-	{140, 1},
-	{141, 2},
+	{136, 1},
+	{141, 1},
+	{142, 2},
 };
-static arc arcs_60_1[1] = {
-	{136, 2},
+static arc arcs_61_1[1] = {
+	{137, 2},
 };
-static arc arcs_60_2[1] = {
+static arc arcs_61_2[1] = {
 	{0, 2},
 };
-static state states_60[3] = {
-	{4, arcs_60_0},
-	{1, arcs_60_1},
-	{1, arcs_60_2},
-};
-static arc arcs_61_0[1] = {
-	{142, 1},
+static state states_61[3] = {
+	{4, arcs_61_0},
+	{1, arcs_61_1},
+	{1, arcs_61_2},
 };
-static arc arcs_61_1[3] = {
+static arc arcs_62_0[1] = {
 	{143, 1},
-	{30, 2},
+};
+static arc arcs_62_1[3] = {
+	{144, 1},
+	{32, 2},
 	{0, 1},
 };
-static arc arcs_61_2[1] = {
-	{136, 3},
+static arc arcs_62_2[1] = {
+	{137, 3},
 };
-static arc arcs_61_3[1] = {
+static arc arcs_62_3[1] = {
 	{0, 3},
 };
-static state states_61[4] = {
-	{1, arcs_61_0},
-	{3, arcs_61_1},
-	{1, arcs_61_2},
-	{1, arcs_61_3},
+static state states_62[4] = {
+	{1, arcs_62_0},
+	{3, arcs_62_1},
+	{1, arcs_62_2},
+	{1, arcs_62_3},
 };
-static arc arcs_62_0[7] = {
+static arc arcs_63_0[7] = {
 	{13, 1},
-	{145, 2},
-	{147, 3},
-	{19, 4},
-	{150, 4},
-	{151, 5},
-	{75, 4},
+	{146, 2},
+	{148, 3},
+	{21, 4},
+	{151, 4},
+	{152, 5},
+	{77, 4},
 };
-static arc arcs_62_1[3] = {
-	{44, 6},
-	{144, 6},
+static arc arcs_63_1[3] = {
+	{46, 6},
+	{145, 6},
 	{15, 4},
 };
-static arc arcs_62_2[2] = {
-	{144, 7},
-	{146, 4},
-};
-static arc arcs_62_3[2] = {
-	{148, 8},
-	{149, 4},
+static arc arcs_63_2[2] = {
+	{145, 7},
+	{147, 4},
+};
+static arc arcs_63_3[2] = {
+	{149, 8},
+	{150, 4},
 };
-static arc arcs_62_4[1] = {
+static arc arcs_63_4[1] = {
 	{0, 4},
 };
-static arc arcs_62_5[2] = {
-	{151, 5},
+static arc arcs_63_5[2] = {
+	{152, 5},
 	{0, 5},
 };
-static arc arcs_62_6[1] = {
+static arc arcs_63_6[1] = {
 	{15, 4},
 };
-static arc arcs_62_7[1] = {
-	{146, 4},
+static arc arcs_63_7[1] = {
+	{147, 4},
 };
-static arc arcs_62_8[1] = {
-	{149, 4},
+static arc arcs_63_8[1] = {
+	{150, 4},
 };
-static state states_62[9] = {
-	{7, arcs_62_0},
-	{3, arcs_62_1},
-	{2, arcs_62_2},
-	{2, arcs_62_3},
-	{1, arcs_62_4},
-	{2, arcs_62_5},
-	{1, arcs_62_6},
-	{1, arcs_62_7},
-	{1, arcs_62_8},
+static state states_63[9] = {
+	{7, arcs_63_0},
+	{3, arcs_63_1},
+	{2, arcs_63_2},
+	{2, arcs_63_3},
+	{1, arcs_63_4},
+	{2, arcs_63_5},
+	{1, arcs_63_6},
+	{1, arcs_63_7},
+	{1, arcs_63_8},
 };
-static arc arcs_63_0[1] = {
-	{22, 1},
+static arc arcs_64_0[1] = {
+	{24, 1},
 };
-static arc arcs_63_1[3] = {
-	{152, 2},
-	{28, 3},
+static arc arcs_64_1[3] = {
+	{153, 2},
+	{30, 3},
 	{0, 1},
 };
-static arc arcs_63_2[1] = {
+static arc arcs_64_2[1] = {
 	{0, 2},
 };
-static arc arcs_63_3[2] = {
-	{22, 4},
+static arc arcs_64_3[2] = {
+	{24, 4},
 	{0, 3},
 };
-static arc arcs_63_4[2] = {
-	{28, 3},
+static arc arcs_64_4[2] = {
+	{30, 3},
 	{0, 4},
 };
-static state states_63[5] = {
-	{1, arcs_63_0},
-	{3, arcs_63_1},
-	{1, arcs_63_2},
-	{2, arcs_63_3},
-	{2, arcs_63_4},
+static state states_64[5] = {
+	{1, arcs_64_0},
+	{3, arcs_64_1},
+	{1, arcs_64_2},
+	{2, arcs_64_3},
+	{2, arcs_64_4},
 };
-static arc arcs_64_0[3] = {
+static arc arcs_65_0[3] = {
 	{13, 1},
-	{145, 2},
-	{74, 3},
+	{146, 2},
+	{76, 3},
 };
-static arc arcs_64_1[2] = {
+static arc arcs_65_1[2] = {
 	{14, 4},
 	{15, 5},
 };
-static arc arcs_64_2[1] = {
-	{153, 6},
+static arc arcs_65_2[1] = {
+	{154, 6},
 };
-static arc arcs_64_3[1] = {
-	{19, 5},
+static arc arcs_65_3[1] = {
+	{21, 5},
 };
-static arc arcs_64_4[1] = {
+static arc arcs_65_4[1] = {
 	{15, 5},
 };
-static arc arcs_64_5[1] = {
+static arc arcs_65_5[1] = {
 	{0, 5},
 };
-static arc arcs_64_6[1] = {
-	{146, 5},
-};
-static state states_64[7] = {
-	{3, arcs_64_0},
-	{2, arcs_64_1},
-	{1, arcs_64_2},
-	{1, arcs_64_3},
-	{1, arcs_64_4},
-	{1, arcs_64_5},
-	{1, arcs_64_6},
-};
-static arc arcs_65_0[1] = {
-	{154, 1},
+static arc arcs_65_6[1] = {
+	{147, 5},
 };
-static arc arcs_65_1[2] = {
-	{28, 2},
-	{0, 1},
-};
-static arc arcs_65_2[2] = {
-	{154, 1},
-	{0, 2},
-};
-static state states_65[3] = {
-	{1, arcs_65_0},
+static state states_65[7] = {
+	{3, arcs_65_0},
 	{2, arcs_65_1},
-	{2, arcs_65_2},
+	{1, arcs_65_2},
+	{1, arcs_65_3},
+	{1, arcs_65_4},
+	{1, arcs_65_5},
+	{1, arcs_65_6},
 };
-static arc arcs_66_0[2] = {
-	{22, 1},
-	{23, 2},
+static arc arcs_66_0[1] = {
+	{155, 1},
 };
 static arc arcs_66_1[2] = {
-	{23, 2},
+	{30, 2},
 	{0, 1},
 };
-static arc arcs_66_2[3] = {
-	{22, 3},
-	{155, 4},
+static arc arcs_66_2[2] = {
+	{155, 1},
 	{0, 2},
 };
-static arc arcs_66_3[2] = {
-	{155, 4},
-	{0, 3},
-};
-static arc arcs_66_4[1] = {
-	{0, 4},
-};
-static state states_66[5] = {
-	{2, arcs_66_0},
+static state states_66[3] = {
+	{1, arcs_66_0},
 	{2, arcs_66_1},
-	{3, arcs_66_2},
-	{2, arcs_66_3},
-	{1, arcs_66_4},
+	{2, arcs_66_2},
 };
-static arc arcs_67_0[1] = {
-	{23, 1},
+static arc arcs_67_0[2] = {
+	{24, 1},
+	{25, 2},
 };
 static arc arcs_67_1[2] = {
-	{22, 2},
+	{25, 2},
 	{0, 1},
 };
-static arc arcs_67_2[1] = {
+static arc arcs_67_2[3] = {
+	{24, 3},
+	{156, 4},
 	{0, 2},
 };
-static state states_67[3] = {
-	{1, arcs_67_0},
+static arc arcs_67_3[2] = {
+	{156, 4},
+	{0, 3},
+};
+static arc arcs_67_4[1] = {
+	{0, 4},
+};
+static state states_67[5] = {
+	{2, arcs_67_0},
 	{2, arcs_67_1},
-	{1, arcs_67_2},
+	{3, arcs_67_2},
+	{2, arcs_67_3},
+	{1, arcs_67_4},
 };
 static arc arcs_68_0[1] = {
-	{115, 1},
+	{25, 1},
 };
 static arc arcs_68_1[2] = {
-	{28, 2},
+	{24, 2},
 	{0, 1},
 };
-static arc arcs_68_2[2] = {
-	{115, 1},
+static arc arcs_68_2[1] = {
 	{0, 2},
 };
 static state states_68[3] = {
 	{1, arcs_68_0},
 	{2, arcs_68_1},
-	{2, arcs_68_2},
+	{1, arcs_68_2},
 };
 static arc arcs_69_0[1] = {
-	{22, 1},
+	{116, 1},
 };
 static arc arcs_69_1[2] = {
-	{28, 2},
+	{30, 2},
 	{0, 1},
 };
 static arc arcs_69_2[2] = {
-	{22, 1},
+	{116, 1},
 	{0, 2},
 };
 static state states_69[3] = {
@@ -1473,448 +1468,468 @@
 	{2, arcs_69_2},
 };
 static arc arcs_70_0[1] = {
-	{22, 1},
+	{24, 1},
 };
-static arc arcs_70_1[4] = {
-	{23, 2},
-	{152, 3},
-	{28, 4},
+static arc arcs_70_1[2] = {
+	{30, 2},
 	{0, 1},
 };
-static arc arcs_70_2[1] = {
-	{22, 5},
+static arc arcs_70_2[2] = {
+	{24, 1},
+	{0, 2},
+};
+static state states_70[3] = {
+	{1, arcs_70_0},
+	{2, arcs_70_1},
+	{2, arcs_70_2},
+};
+static arc arcs_71_0[1] = {
+	{24, 1},
 };
-static arc arcs_70_3[1] = {
+static arc arcs_71_1[4] = {
+	{25, 2},
+	{153, 3},
+	{30, 4},
+	{0, 1},
+};
+static arc arcs_71_2[1] = {
+	{24, 5},
+};
+static arc arcs_71_3[1] = {
 	{0, 3},
 };
-static arc arcs_70_4[2] = {
-	{22, 6},
+static arc arcs_71_4[2] = {
+	{24, 6},
 	{0, 4},
 };
-static arc arcs_70_5[2] = {
-	{28, 7},
+static arc arcs_71_5[2] = {
+	{30, 7},
 	{0, 5},
 };
-static arc arcs_70_6[2] = {
-	{28, 4},
+static arc arcs_71_6[2] = {
+	{30, 4},
 	{0, 6},
 };
-static arc arcs_70_7[2] = {
-	{22, 8},
+static arc arcs_71_7[2] = {
+	{24, 8},
 	{0, 7},
 };
-static arc arcs_70_8[1] = {
-	{23, 2},
+static arc arcs_71_8[1] = {
+	{25, 2},
 };
-static state states_70[9] = {
-	{1, arcs_70_0},
-	{4, arcs_70_1},
-	{1, arcs_70_2},
-	{1, arcs_70_3},
-	{2, arcs_70_4},
-	{2, arcs_70_5},
-	{2, arcs_70_6},
-	{2, arcs_70_7},
-	{1, arcs_70_8},
+static state states_71[9] = {
+	{1, arcs_71_0},
+	{4, arcs_71_1},
+	{1, arcs_71_2},
+	{1, arcs_71_3},
+	{2, arcs_71_4},
+	{2, arcs_71_5},
+	{2, arcs_71_6},
+	{2, arcs_71_7},
+	{1, arcs_71_8},
 };
-static arc arcs_71_0[1] = {
-	{156, 1},
+static arc arcs_72_0[1] = {
+	{157, 1},
 };
-static arc arcs_71_1[1] = {
-	{19, 2},
+static arc arcs_72_1[1] = {
+	{21, 2},
 };
-static arc arcs_71_2[2] = {
+static arc arcs_72_2[2] = {
 	{13, 3},
-	{23, 4},
+	{25, 4},
 };
-static arc arcs_71_3[2] = {
+static arc arcs_72_3[2] = {
 	{14, 5},
 	{15, 6},
 };
-static arc arcs_71_4[1] = {
-	{24, 7},
+static arc arcs_72_4[1] = {
+	{26, 7},
 };
-static arc arcs_71_5[1] = {
+static arc arcs_72_5[1] = {
 	{15, 6},
 };
-static arc arcs_71_6[1] = {
-	{23, 4},
+static arc arcs_72_6[1] = {
+	{25, 4},
 };
-static arc arcs_71_7[1] = {
+static arc arcs_72_7[1] = {
 	{0, 7},
 };
-static state states_71[8] = {
-	{1, arcs_71_0},
-	{1, arcs_71_1},
-	{2, arcs_71_2},
-	{2, arcs_71_3},
-	{1, arcs_71_4},
-	{1, arcs_71_5},
-	{1, arcs_71_6},
-	{1, arcs_71_7},
+static state states_72[8] = {
+	{1, arcs_72_0},
+	{1, arcs_72_1},
+	{2, arcs_72_2},
+	{2, arcs_72_3},
+	{1, arcs_72_4},
+	{1, arcs_72_5},
+	{1, arcs_72_6},
+	{1, arcs_72_7},
 };
-static arc arcs_72_0[3] = {
-	{157, 1},
-	{29, 2},
-	{30, 3},
+static arc arcs_73_0[3] = {
+	{158, 1},
+	{31, 2},
+	{32, 3},
 };
-static arc arcs_72_1[2] = {
-	{28, 4},
+static arc arcs_73_1[2] = {
+	{30, 4},
 	{0, 1},
 };
-static arc arcs_72_2[1] = {
-	{22, 5},
+static arc arcs_73_2[1] = {
+	{24, 5},
 };
-static arc arcs_72_3[1] = {
-	{22, 6},
+static arc arcs_73_3[1] = {
+	{24, 6},
 };
-static arc arcs_72_4[4] = {
-	{157, 1},
-	{29, 2},
-	{30, 3},
+static arc arcs_73_4[4] = {
+	{158, 1},
+	{31, 2},
+	{32, 3},
 	{0, 4},
 };
-static arc arcs_72_5[2] = {
-	{28, 7},
+static arc arcs_73_5[2] = {
+	{30, 7},
 	{0, 5},
 };
-static arc arcs_72_6[1] = {
+static arc arcs_73_6[1] = {
 	{0, 6},
 };
-static arc arcs_72_7[1] = {
-	{30, 3},
-};
-static state states_72[8] = {
-	{3, arcs_72_0},
-	{2, arcs_72_1},
-	{1, arcs_72_2},
-	{1, arcs_72_3},
-	{4, arcs_72_4},
-	{2, arcs_72_5},
-	{1, arcs_72_6},
-	{1, arcs_72_7},
-};
-static arc arcs_73_0[1] = {
-	{22, 1},
-};
-static arc arcs_73_1[3] = {
-	{152, 2},
-	{27, 3},
-	{0, 1},
-};
-static arc arcs_73_2[1] = {
-	{0, 2},
+static arc arcs_73_7[1] = {
+	{32, 3},
 };
-static arc arcs_73_3[1] = {
-	{22, 2},
-};
-static state states_73[4] = {
-	{1, arcs_73_0},
-	{3, arcs_73_1},
+static state states_73[8] = {
+	{3, arcs_73_0},
+	{2, arcs_73_1},
 	{1, arcs_73_2},
 	{1, arcs_73_3},
+	{4, arcs_73_4},
+	{2, arcs_73_5},
+	{1, arcs_73_6},
+	{1, arcs_73_7},
 };
-static arc arcs_74_0[2] = {
-	{152, 1},
-	{159, 1},
+static arc arcs_74_0[1] = {
+	{24, 1},
 };
-static arc arcs_74_1[1] = {
+static arc arcs_74_1[3] = {
+	{153, 2},
+	{29, 3},
 	{0, 1},
 };
-static state states_74[2] = {
-	{2, arcs_74_0},
-	{1, arcs_74_1},
-};
-static arc arcs_75_0[1] = {
-	{93, 1},
-};
-static arc arcs_75_1[1] = {
-	{58, 2},
+static arc arcs_74_2[1] = {
+	{0, 2},
 };
-static arc arcs_75_2[1] = {
-	{94, 3},
+static arc arcs_74_3[1] = {
+	{24, 2},
 };
-static arc arcs_75_3[1] = {
-	{104, 4},
+static state states_74[4] = {
+	{1, arcs_74_0},
+	{3, arcs_74_1},
+	{1, arcs_74_2},
+	{1, arcs_74_3},
 };
-static arc arcs_75_4[2] = {
-	{158, 5},
-	{0, 4},
+static arc arcs_75_0[2] = {
+	{153, 1},
+	{160, 1},
 };
-static arc arcs_75_5[1] = {
-	{0, 5},
+static arc arcs_75_1[1] = {
+	{0, 1},
 };
-static state states_75[6] = {
-	{1, arcs_75_0},
+static state states_75[2] = {
+	{2, arcs_75_0},
 	{1, arcs_75_1},
-	{1, arcs_75_2},
-	{1, arcs_75_3},
-	{2, arcs_75_4},
-	{1, arcs_75_5},
 };
 static arc arcs_76_0[1] = {
-	{89, 1},
+	{94, 1},
 };
 static arc arcs_76_1[1] = {
-	{106, 2},
+	{60, 2},
 };
-static arc arcs_76_2[2] = {
-	{158, 3},
-	{0, 2},
+static arc arcs_76_2[1] = {
+	{95, 3},
 };
 static arc arcs_76_3[1] = {
-	{0, 3},
+	{105, 4},
+};
+static arc arcs_76_4[2] = {
+	{159, 5},
+	{0, 4},
 };
-static state states_76[4] = {
+static arc arcs_76_5[1] = {
+	{0, 5},
+};
+static state states_76[6] = {
 	{1, arcs_76_0},
 	{1, arcs_76_1},
-	{2, arcs_76_2},
+	{1, arcs_76_2},
 	{1, arcs_76_3},
+	{2, arcs_76_4},
+	{1, arcs_76_5},
 };
 static arc arcs_77_0[1] = {
-	{22, 1},
+	{90, 1},
 };
-static arc arcs_77_1[2] = {
-	{28, 0},
-	{0, 1},
+static arc arcs_77_1[1] = {
+	{107, 2},
+};
+static arc arcs_77_2[2] = {
+	{159, 3},
+	{0, 2},
+};
+static arc arcs_77_3[1] = {
+	{0, 3},
 };
-static state states_77[2] = {
+static state states_77[4] = {
 	{1, arcs_77_0},
-	{2, arcs_77_1},
+	{1, arcs_77_1},
+	{2, arcs_77_2},
+	{1, arcs_77_3},
 };
 static arc arcs_78_0[1] = {
-	{19, 1},
+	{24, 1},
 };
-static arc arcs_78_1[1] = {
+static arc arcs_78_1[2] = {
+	{30, 0},
 	{0, 1},
 };
 static state states_78[2] = {
 	{1, arcs_78_0},
-	{1, arcs_78_1},
+	{2, arcs_78_1},
 };
 static arc arcs_79_0[1] = {
-	{162, 1},
+	{21, 1},
+};
+static arc arcs_79_1[1] = {
+	{0, 1},
+};
+static state states_79[2] = {
+	{1, arcs_79_0},
+	{1, arcs_79_1},
+};
+static arc arcs_80_0[1] = {
+	{163, 1},
 };
-static arc arcs_79_1[2] = {
+static arc arcs_80_1[2] = {
 	{9, 2},
 	{0, 1},
 };
-static arc arcs_79_2[1] = {
+static arc arcs_80_2[1] = {
 	{0, 2},
 };
-static state states_79[3] = {
-	{1, arcs_79_0},
-	{2, arcs_79_1},
-	{1, arcs_79_2},
+static state states_80[3] = {
+	{1, arcs_80_0},
+	{2, arcs_80_1},
+	{1, arcs_80_2},
 };
-static dfa dfas[80] = {
+static dfa dfas[81] = {
 	{256, "single_input", 0, 3, states_0,
-	 "\004\050\014\040\000\000\000\012\236\012\007\262\004\020\002\000\300\020\312\020\004"},
+	 "\004\050\060\200\000\000\000\050\170\052\034\144\011\040\004\000\200\041\224\041\010"},
 	{257, "file_input", 0, 2, states_1,
-	 "\204\050\014\040\000\000\000\012\236\012\007\262\004\020\002\000\300\020\312\020\004"},
+	 "\204\050\060\200\000\000\000\050\170\052\034\144\011\040\004\000\200\041\224\041\010"},
 	{258, "eval_input", 0, 3, states_2,
-	 "\000\040\010\040\000\000\000\000\000\010\000\000\000\020\002\000\300\020\312\000\000"},
+	 "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
 	{259, "decorator", 0, 7, states_3,
 	 "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
 	{260, "decorators", 0, 2, states_4,
 	 "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{261, "funcdef", 0, 9, states_5,
-	 "\000\010\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{262, "parameters", 0, 4, states_6,
+	{261, "decorated", 0, 3, states_5,
+	 "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{262, "funcdef", 0, 8, states_6,
+	 "\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{263, "parameters", 0, 4, states_7,
 	 "\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{263, "typedargslist", 0, 12, states_7,
-	 "\000\000\010\140\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{264, "tfpdef", 0, 4, states_8,
-	 "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{265, "varargslist", 0, 12, states_9,
-	 "\000\000\010\140\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{266, "vfpdef", 0, 2, states_10,
-	 "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{267, "stmt", 0, 2, states_11,
-	 "\000\050\014\040\000\000\000\012\236\012\007\262\004\020\002\000\300\020\312\020\004"},
-	{268, "simple_stmt", 0, 4, states_12,
-	 "\000\040\010\040\000\000\000\012\236\012\007\000\000\020\002\000\300\020\312\000\004"},
-	{269, "small_stmt", 0, 2, states_13,
-	 "\000\040\010\040\000\000\000\012\236\012\007\000\000\020\002\000\300\020\312\000\004"},
-	{270, "expr_stmt", 0, 6, states_14,
-	 "\000\040\010\040\000\000\000\000\000\010\000\000\000\020\002\000\300\020\312\000\000"},
-	{271, "augassign", 0, 2, states_15,
-	 "\000\000\000\000\000\340\377\001\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{272, "del_stmt", 0, 3, states_16,
-	 "\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{273, "pass_stmt", 0, 2, states_17,
+	{264, "typedargslist", 0, 12, states_8,
+	 "\000\000\040\200\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{265, "tfpdef", 0, 4, states_9,
+	 "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{266, "varargslist", 0, 12, states_10,
+	 "\000\000\040\200\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{267, "vfpdef", 0, 2, states_11,
+	 "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{268, "stmt", 0, 2, states_12,
+	 "\000\050\060\200\000\000\000\050\170\052\034\144\011\040\004\000\200\041\224\041\010"},
+	{269, "simple_stmt", 0, 4, states_13,
+	 "\000\040\040\200\000\000\000\050\170\052\034\000\000\040\004\000\200\041\224\001\010"},
+	{270, "small_stmt", 0, 2, states_14,
+	 "\000\040\040\200\000\000\000\050\170\052\034\000\000\040\004\000\200\041\224\001\010"},
+	{271, "expr_stmt", 0, 6, states_15,
+	 "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+	{272, "augassign", 0, 2, states_16,
+	 "\000\000\000\000\000\200\377\007\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{273, "del_stmt", 0, 3, states_17,
 	 "\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{274, "flow_stmt", 0, 2, states_18,
-	 "\000\000\000\000\000\000\000\000\036\000\000\000\000\000\000\000\000\000\000\000\004"},
-	{275, "break_stmt", 0, 2, states_19,
-	 "\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{276, "continue_stmt", 0, 2, states_20,
-	 "\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{277, "return_stmt", 0, 3, states_21,
+	{274, "pass_stmt", 0, 2, states_18,
+	 "\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{275, "flow_stmt", 0, 2, states_19,
+	 "\000\000\000\000\000\000\000\000\170\000\000\000\000\000\000\000\000\000\000\000\010"},
+	{276, "break_stmt", 0, 2, states_20,
 	 "\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{278, "yield_stmt", 0, 2, states_22,
-	 "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004"},
-	{279, "raise_stmt", 0, 7, states_23,
+	{277, "continue_stmt", 0, 2, states_21,
 	 "\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{280, "import_stmt", 0, 2, states_24,
-	 "\000\000\000\000\000\000\000\000\200\002\000\000\000\000\000\000\000\000\000\000\000"},
-	{281, "import_name", 0, 3, states_25,
-	 "\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{282, "import_from", 0, 8, states_26,
+	{278, "return_stmt", 0, 3, states_22,
+	 "\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{279, "yield_stmt", 0, 2, states_23,
+	 "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010"},
+	{280, "raise_stmt", 0, 7, states_24,
+	 "\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{281, "import_stmt", 0, 2, states_25,
+	 "\000\000\000\000\000\000\000\000\000\012\000\000\000\000\000\000\000\000\000\000\000"},
+	{282, "import_name", 0, 3, states_26,
 	 "\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000"},
-	{283, "import_as_name", 0, 4, states_27,
-	 "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{284, "dotted_as_name", 0, 4, states_28,
-	 "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{285, "import_as_names", 0, 3, states_29,
-	 "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{286, "dotted_as_names", 0, 2, states_30,
-	 "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{287, "dotted_name", 0, 2, states_31,
-	 "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{288, "global_stmt", 0, 3, states_32,
-	 "\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"},
-	{289, "nonlocal_stmt", 0, 3, states_33,
-	 "\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000"},
-	{290, "assert_stmt", 0, 5, states_34,
+	{283, "import_from", 0, 8, states_27,
+	 "\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000"},
+	{284, "import_as_name", 0, 4, states_28,
+	 "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{285, "dotted_as_name", 0, 4, states_29,
+	 "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{286, "import_as_names", 0, 3, states_30,
+	 "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{287, "dotted_as_names", 0, 2, states_31,
+	 "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{288, "dotted_name", 0, 2, states_32,
+	 "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{289, "global_stmt", 0, 3, states_33,
 	 "\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000"},
-	{291, "compound_stmt", 0, 2, states_35,
-	 "\000\010\004\000\000\000\000\000\000\000\000\262\004\000\000\000\000\000\000\020\000"},
-	{292, "if_stmt", 0, 8, states_36,
-	 "\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"},
-	{293, "while_stmt", 0, 8, states_37,
-	 "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000"},
-	{294, "for_stmt", 0, 10, states_38,
+	{290, "nonlocal_stmt", 0, 3, states_34,
+	 "\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000"},
+	{291, "assert_stmt", 0, 5, states_35,
+	 "\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"},
+	{292, "compound_stmt", 0, 2, states_36,
+	 "\000\010\020\000\000\000\000\000\000\000\000\144\011\000\000\000\000\000\000\040\000"},
+	{293, "if_stmt", 0, 8, states_37,
+	 "\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000"},
+	{294, "while_stmt", 0, 8, states_38,
 	 "\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000"},
-	{295, "try_stmt", 0, 13, states_39,
-	 "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"},
-	{296, "with_stmt", 0, 6, states_40,
-	 "\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000"},
-	{297, "with_var", 0, 3, states_41,
-	 "\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000"},
-	{298, "except_clause", 0, 5, states_42,
-	 "\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"},
-	{299, "suite", 0, 5, states_43,
-	 "\004\040\010\040\000\000\000\012\236\012\007\000\000\020\002\000\300\020\312\000\004"},
-	{300, "test", 0, 6, states_44,
-	 "\000\040\010\040\000\000\000\000\000\010\000\000\000\020\002\000\300\020\312\000\000"},
-	{301, "test_nocond", 0, 2, states_45,
-	 "\000\040\010\040\000\000\000\000\000\010\000\000\000\020\002\000\300\020\312\000\000"},
-	{302, "lambdef", 0, 5, states_46,
-	 "\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000"},
-	{303, "lambdef_nocond", 0, 5, states_47,
-	 "\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000"},
-	{304, "or_test", 0, 2, states_48,
-	 "\000\040\010\040\000\000\000\000\000\010\000\000\000\000\002\000\300\020\312\000\000"},
-	{305, "and_test", 0, 2, states_49,
-	 "\000\040\010\040\000\000\000\000\000\010\000\000\000\000\002\000\300\020\312\000\000"},
-	{306, "not_test", 0, 3, states_50,
-	 "\000\040\010\040\000\000\000\000\000\010\000\000\000\000\002\000\300\020\312\000\000"},
-	{307, "comparison", 0, 2, states_51,
-	 "\000\040\010\040\000\000\000\000\000\010\000\000\000\000\000\000\300\020\312\000\000"},
-	{308, "comp_op", 0, 4, states_52,
-	 "\000\000\000\000\000\000\000\000\000\000\000\100\000\000\342\017\000\000\000\000\000"},
-	{309, "star_expr", 0, 3, states_53,
-	 "\000\040\010\040\000\000\000\000\000\010\000\000\000\000\000\000\300\020\312\000\000"},
-	{310, "expr", 0, 2, states_54,
-	 "\000\040\010\000\000\000\000\000\000\010\000\000\000\000\000\000\300\020\312\000\000"},
-	{311, "xor_expr", 0, 2, states_55,
-	 "\000\040\010\000\000\000\000\000\000\010\000\000\000\000\000\000\300\020\312\000\000"},
-	{312, "and_expr", 0, 2, states_56,
-	 "\000\040\010\000\000\000\000\000\000\010\000\000\000\000\000\000\300\020\312\000\000"},
-	{313, "shift_expr", 0, 2, states_57,
-	 "\000\040\010\000\000\000\000\000\000\010\000\000\000\000\000\000\300\020\312\000\000"},
-	{314, "arith_expr", 0, 2, states_58,
-	 "\000\040\010\000\000\000\000\000\000\010\000\000\000\000\000\000\300\020\312\000\000"},
-	{315, "term", 0, 2, states_59,
-	 "\000\040\010\000\000\000\000\000\000\010\000\000\000\000\000\000\300\020\312\000\000"},
-	{316, "factor", 0, 3, states_60,
-	 "\000\040\010\000\000\000\000\000\000\010\000\000\000\000\000\000\300\020\312\000\000"},
-	{317, "power", 0, 4, states_61,
-	 "\000\040\010\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\312\000\000"},
-	{318, "atom", 0, 9, states_62,
-	 "\000\040\010\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\312\000\000"},
-	{319, "testlist_comp", 0, 5, states_63,
-	 "\000\040\010\040\000\000\000\000\000\010\000\000\000\020\002\000\300\020\312\000\000"},
-	{320, "trailer", 0, 7, states_64,
-	 "\000\040\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\002\000\000"},
-	{321, "subscriptlist", 0, 3, states_65,
-	 "\000\040\210\040\000\000\000\000\000\010\000\000\000\020\002\000\300\020\312\000\000"},
-	{322, "subscript", 0, 5, states_66,
-	 "\000\040\210\040\000\000\000\000\000\010\000\000\000\020\002\000\300\020\312\000\000"},
-	{323, "sliceop", 0, 3, states_67,
-	 "\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{324, "exprlist", 0, 3, states_68,
-	 "\000\040\010\040\000\000\000\000\000\010\000\000\000\000\000\000\300\020\312\000\000"},
-	{325, "testlist", 0, 3, states_69,
-	 "\000\040\010\040\000\000\000\000\000\010\000\000\000\020\002\000\300\020\312\000\000"},
-	{326, "dictorsetmaker", 0, 9, states_70,
-	 "\000\040\010\040\000\000\000\000\000\010\000\000\000\020\002\000\300\020\312\000\000"},
-	{327, "classdef", 0, 8, states_71,
-	 "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000"},
-	{328, "arglist", 0, 8, states_72,
-	 "\000\040\010\140\000\000\000\000\000\010\000\000\000\020\002\000\300\020\312\000\000"},
-	{329, "argument", 0, 4, states_73,
-	 "\000\040\010\040\000\000\000\000\000\010\000\000\000\020\002\000\300\020\312\000\000"},
-	{330, "comp_iter", 0, 2, states_74,
-	 "\000\000\000\000\000\000\000\000\000\000\000\042\000\000\000\000\000\000\000\000\000"},
-	{331, "comp_for", 0, 6, states_75,
-	 "\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000"},
-	{332, "comp_if", 0, 4, states_76,
-	 "\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"},
-	{333, "testlist1", 0, 2, states_77,
-	 "\000\040\010\040\000\000\000\000\000\010\000\000\000\020\002\000\300\020\312\000\000"},
-	{334, "encoding_decl", 0, 2, states_78,
-	 "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-	{335, "yield_expr", 0, 3, states_79,
-	 "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004"},
+	{295, "for_stmt", 0, 10, states_39,
+	 "\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"},
+	{296, "try_stmt", 0, 13, states_40,
+	 "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"},
+	{297, "with_stmt", 0, 6, states_41,
+	 "\000\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000"},
+	{298, "with_var", 0, 3, states_42,
+	 "\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"},
+	{299, "except_clause", 0, 5, states_43,
+	 "\000\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000"},
+	{300, "suite", 0, 5, states_44,
+	 "\004\040\040\200\000\000\000\050\170\052\034\000\000\040\004\000\200\041\224\001\010"},
+	{301, "test", 0, 6, states_45,
+	 "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+	{302, "test_nocond", 0, 2, states_46,
+	 "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+	{303, "lambdef", 0, 5, states_47,
+	 "\000\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000"},
+	{304, "lambdef_nocond", 0, 5, states_48,
+	 "\000\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000"},
+	{305, "or_test", 0, 2, states_49,
+	 "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\004\000\200\041\224\001\000"},
+	{306, "and_test", 0, 2, states_50,
+	 "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\004\000\200\041\224\001\000"},
+	{307, "not_test", 0, 3, states_51,
+	 "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\004\000\200\041\224\001\000"},
+	{308, "comparison", 0, 2, states_52,
+	 "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+	{309, "comp_op", 0, 4, states_53,
+	 "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\304\037\000\000\000\000\000"},
+	{310, "star_expr", 0, 3, states_54,
+	 "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+	{311, "expr", 0, 2, states_55,
+	 "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+	{312, "xor_expr", 0, 2, states_56,
+	 "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+	{313, "and_expr", 0, 2, states_57,
+	 "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+	{314, "shift_expr", 0, 2, states_58,
+	 "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+	{315, "arith_expr", 0, 2, states_59,
+	 "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+	{316, "term", 0, 2, states_60,
+	 "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+	{317, "factor", 0, 3, states_61,
+	 "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+	{318, "power", 0, 4, states_62,
+	 "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\224\001\000"},
+	{319, "atom", 0, 9, states_63,
+	 "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\224\001\000"},
+	{320, "testlist_comp", 0, 5, states_64,
+	 "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+	{321, "trailer", 0, 7, states_65,
+	 "\000\040\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\004\000\000"},
+	{322, "subscriptlist", 0, 3, states_66,
+	 "\000\040\040\202\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+	{323, "subscript", 0, 5, states_67,
+	 "\000\040\040\202\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+	{324, "sliceop", 0, 3, states_68,
+	 "\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{325, "exprlist", 0, 3, states_69,
+	 "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+	{326, "testlist", 0, 3, states_70,
+	 "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+	{327, "dictorsetmaker", 0, 9, states_71,
+	 "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+	{328, "classdef", 0, 8, states_72,
+	 "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\040\000"},
+	{329, "arglist", 0, 8, states_73,
+	 "\000\040\040\200\001\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+	{330, "argument", 0, 4, states_74,
+	 "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+	{331, "comp_iter", 0, 2, states_75,
+	 "\000\000\000\000\000\000\000\000\000\000\000\104\000\000\000\000\000\000\000\000\000"},
+	{332, "comp_for", 0, 6, states_76,
+	 "\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"},
+	{333, "comp_if", 0, 4, states_77,
+	 "\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000"},
+	{334, "testlist1", 0, 2, states_78,
+	 "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+	{335, "encoding_decl", 0, 2, states_79,
+	 "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{336, "yield_expr", 0, 3, states_80,
+	 "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010"},
 };
-static label labels[163] = {
+static label labels[164] = {
 	{0, "EMPTY"},
 	{256, 0},
 	{4, 0},
-	{268, 0},
-	{291, 0},
+	{269, 0},
+	{292, 0},
 	{257, 0},
-	{267, 0},
+	{268, 0},
 	{0, 0},
 	{258, 0},
-	{325, 0},
+	{326, 0},
 	{259, 0},
 	{50, 0},
-	{287, 0},
+	{288, 0},
 	{7, 0},
-	{328, 0},
+	{329, 0},
 	{8, 0},
 	{260, 0},
 	{261, 0},
+	{328, 0},
+	{262, 0},
 	{1, "def"},
 	{1, 0},
-	{262, 0},
+	{263, 0},
 	{51, 0},
-	{300, 0},
+	{301, 0},
 	{11, 0},
-	{299, 0},
-	{263, 0},
+	{300, 0},
 	{264, 0},
+	{265, 0},
 	{22, 0},
 	{12, 0},
 	{16, 0},
 	{36, 0},
-	{265, 0},
 	{266, 0},
-	{269, 0},
-	{13, 0},
+	{267, 0},
 	{270, 0},
-	{272, 0},
+	{13, 0},
+	{271, 0},
 	{273, 0},
 	{274, 0},
-	{280, 0},
-	{288, 0},
+	{275, 0},
+	{281, 0},
 	{289, 0},
 	{290, 0},
-	{271, 0},
-	{335, 0},
+	{291, 0},
+	{272, 0},
+	{336, 0},
 	{37, 0},
 	{38, 0},
 	{39, 0},
@@ -1928,37 +1943,36 @@
 	{47, 0},
 	{49, 0},
 	{1, "del"},
-	{324, 0},
+	{325, 0},
 	{1, "pass"},
-	{275, 0},
 	{276, 0},
 	{277, 0},
-	{279, 0},
 	{278, 0},
+	{280, 0},
+	{279, 0},
 	{1, "break"},
 	{1, "continue"},
 	{1, "return"},
 	{1, "raise"},
-	{281, 0},
 	{282, 0},
+	{283, 0},
 	{1, "import"},
-	{286, 0},
+	{287, 0},
 	{1, "from"},
 	{23, 0},
 	{52, 0},
-	{285, 0},
-	{283, 0},
-	{1, "as"},
+	{286, 0},
 	{284, 0},
+	{1, "as"},
+	{285, 0},
 	{1, "global"},
 	{1, "nonlocal"},
 	{1, "assert"},
-	{292, 0},
 	{293, 0},
 	{294, 0},
 	{295, 0},
 	{296, 0},
-	{327, 0},
+	{297, 0},
 	{1, "if"},
 	{1, "elif"},
 	{1, "else"},
@@ -1966,27 +1980,27 @@
 	{1, "for"},
 	{1, "in"},
 	{1, "try"},
-	{298, 0},
+	{299, 0},
 	{1, "finally"},
 	{1, "with"},
-	{297, 0},
-	{310, 0},
+	{298, 0},
+	{311, 0},
 	{1, "except"},
 	{5, 0},
 	{6, 0},
-	{304, 0},
-	{302, 0},
-	{301, 0},
+	{305, 0},
 	{303, 0},
+	{302, 0},
+	{304, 0},
 	{1, "lambda"},
-	{305, 0},
-	{1, "or"},
 	{306, 0},
+	{1, "or"},
+	{307, 0},
 	{1, "and"},
 	{1, "not"},
-	{307, 0},
-	{309, 0},
 	{308, 0},
+	{310, 0},
+	{309, 0},
 	{20, 0},
 	{21, 0},
 	{28, 0},
@@ -1994,49 +2008,49 @@
 	{30, 0},
 	{29, 0},
 	{1, "is"},
-	{311, 0},
-	{18, 0},
 	{312, 0},
-	{33, 0},
+	{18, 0},
 	{313, 0},
-	{19, 0},
+	{33, 0},
 	{314, 0},
+	{19, 0},
+	{315, 0},
 	{34, 0},
 	{35, 0},
-	{315, 0},
+	{316, 0},
 	{14, 0},
 	{15, 0},
-	{316, 0},
+	{317, 0},
 	{17, 0},
 	{24, 0},
 	{48, 0},
 	{32, 0},
-	{317, 0},
 	{318, 0},
-	{320, 0},
 	{319, 0},
+	{321, 0},
+	{320, 0},
 	{9, 0},
 	{10, 0},
 	{26, 0},
-	{326, 0},
+	{327, 0},
 	{27, 0},
 	{2, 0},
 	{3, 0},
-	{331, 0},
-	{321, 0},
+	{332, 0},
 	{322, 0},
 	{323, 0},
+	{324, 0},
 	{1, "class"},
-	{329, 0},
 	{330, 0},
-	{332, 0},
+	{331, 0},
 	{333, 0},
 	{334, 0},
+	{335, 0},
 	{1, "yield"},
 };
 grammar _PyParser_Grammar = {
-	80,
+	81,
 	dfas,
-	{163, labels},
+	{164, labels},
 	256
 };

Modified: python/branches/p3yk/Python/symtable.c
==============================================================================
--- python/branches/p3yk/Python/symtable.c	(original)
+++ python/branches/p3yk/Python/symtable.c	Fri May 18 15:39:59 2007
@@ -1009,8 +1009,8 @@
 					   s->v.FunctionDef.args->kw_defaults);
 		if (!symtable_visit_annotations(st, s))
 			return 0;
-		if (s->v.FunctionDef.decorators)
-			VISIT_SEQ(st, expr, s->v.FunctionDef.decorators);
+		if (s->v.FunctionDef.decorator_list)
+			VISIT_SEQ(st, expr, s->v.FunctionDef.decorator_list);
 		if (!symtable_enter_block(st, s->v.FunctionDef.name, 
 					  FunctionBlock, (void *)s, s->lineno))
 			return 0;
@@ -1029,6 +1029,8 @@
 			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, 
 					  (void *)s, s->lineno))
 			return 0;


More information about the Python-3000-checkins mailing list