State 0:
          input ::= * processes
          processes ::= * process_or_template NAME CURLY_OPEN statements CURLY_CLOSE
          processes ::= * process_or_template NAME CURLY_OPEN statements CURLY_CLOSE processes
          process_or_template ::= * PROCESS
          process_or_template ::= * TEMPLATE

                       PROCESS shift  69
                      TEMPLATE shift  70
                     processes shift  31
           process_or_template shift  32
                         input accept

State 1:
          statement ::= dotted_name ROUND_OPEN * statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
     (18) statement_args_maybe ::= *
          statement_args_maybe ::= * list_contents
          list_contents ::= * value
          list_contents ::= * value COMMA list_contents
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                          NAME shift  37
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                        STRING shift  79
                   dotted_name shift  80
          statement_args_maybe shift  35
                 list_contents shift  74
                          list shift  81
                           map shift  82
                         value shift  38
                     {default} reduce 18

State 2:
          statement ::= dotted_name ARROW dotted_name ROUND_OPEN * statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
     (18) statement_args_maybe ::= *
          statement_args_maybe ::= * list_contents
          list_contents ::= * value
          list_contents ::= * value COMMA list_contents
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                          NAME shift  37
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                        STRING shift  79
                   dotted_name shift  80
          statement_args_maybe shift  44
                 list_contents shift  74
                          list shift  81
                           map shift  82
                         value shift  38
                     {default} reduce 18

State 3:
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          list_contents ::= * value
          list_contents ::= * value COMMA list_contents
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= CURLY_OPEN * CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          list ::= CURLY_OPEN * list_contents CURLY_CLOSE
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                          NAME shift  37
                    CURLY_OPEN shift  3
                   CURLY_CLOSE shift  76
                  BRACKET_OPEN shift  4
                        STRING shift  79
                   dotted_name shift  80
                 list_contents shift  39
                          list shift  81
                           map shift  82
                         value shift  38

State 4:
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map_contents ::= * value COLON value
          map_contents ::= * value COLON value COMMA map_contents
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= BRACKET_OPEN * BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          map ::= BRACKET_OPEN * map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                          NAME shift  37
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                 BRACKET_CLOSE shift  83
                        STRING shift  79
                   dotted_name shift  80
                          list shift  81
                  map_contents shift  42
                           map shift  82
                         value shift  40

State 5:
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          list_contents ::= * value
          list_contents ::= * value COMMA list_contents
          list_contents ::= value COMMA * list_contents
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                          NAME shift  37
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                        STRING shift  79
                   dotted_name shift  80
                 list_contents shift  75
                          list shift  81
                           map shift  82
                         value shift  38

State 6:
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map_contents ::= * value COLON value
          map_contents ::= * value COLON value COMMA map_contents
          map_contents ::= value COLON value COMMA * map_contents
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                          NAME shift  37
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                        STRING shift  79
                   dotted_name shift  80
                          list shift  81
                  map_contents shift  78
                           map shift  82
                         value shift  40

State 7:
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map_contents ::= value COLON * value
          map_contents ::= value COLON * value COMMA map_contents
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                          NAME shift  37
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                        STRING shift  79
                   dotted_name shift  80
                          list shift  81
                           map shift  82
                         value shift  41

State 8:
          statement ::= IF ROUND_OPEN * value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                          NAME shift  37
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                        STRING shift  79
                   dotted_name shift  80
                          list shift  81
                           map shift  82
                         value shift  47

State 9:
          statement ::= FOREACH ROUND_OPEN * value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= FOREACH ROUND_OPEN * value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                          NAME shift  37
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                        STRING shift  79
                   dotted_name shift  80
                          list shift  81
                           map shift  82
                         value shift  53

State 10:
          elif ::= ELIF ROUND_OPEN * value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE
          elif ::= ELIF ROUND_OPEN * value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                          NAME shift  37
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                        STRING shift  79
                   dotted_name shift  80
                          list shift  81
                           map shift  82
                         value shift  65

State 11:
          processes ::= process_or_template NAME CURLY_OPEN * statements CURLY_CLOSE
          processes ::= process_or_template NAME CURLY_OPEN * statements CURLY_CLOSE processes
          statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statements ::= * statement
          statements ::= * statement statements
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name

                          NAME shift  37
                            IF shift  46
                       FOREACH shift  52
                     statement shift  15
                    statements shift  34
                   dotted_name shift  29

State 12:
          statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN * statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statements ::= * statement
          statements ::= * statement statements
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name

                          NAME shift  37
                            IF shift  46
                       FOREACH shift  52
                     statement shift  15
                    statements shift  49
                   dotted_name shift  29

State 13:
          statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          else_maybe ::= ELSE CURLY_OPEN * statements CURLY_CLOSE
          statements ::= * statement
          statements ::= * statement statements
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name

                          NAME shift  37
                            IF shift  46
                       FOREACH shift  52
                     statement shift  15
                    statements shift  63
                   dotted_name shift  29

State 14:
          statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN * statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statements ::= * statement
          statements ::= * statement statements
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name

                          NAME shift  37
                            IF shift  46
                       FOREACH shift  52
                     statement shift  15
                    statements shift  56
                   dotted_name shift  29

State 15:
          statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statements ::= * statement
     (14) statements ::= statement *
          statements ::= * statement statements
          statements ::= statement * statements
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name

                          NAME shift  37
                            IF shift  46
                       FOREACH shift  52
                     statement shift  15
                    statements shift  88
                   dotted_name shift  29
                     {default} reduce 14

State 16:
          statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN * statements CURLY_CLOSE name_maybe SEMICOLON
          statements ::= * statement
          statements ::= * statement statements
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name

                          NAME shift  37
                            IF shift  46
                       FOREACH shift  52
                     statement shift  15
                    statements shift  61
                   dotted_name shift  29

State 17:
          statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN * statements CURLY_CLOSE
          elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN * statements CURLY_CLOSE elif
          statements ::= * statement
          statements ::= * statement statements
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name

                          NAME shift  37
                            IF shift  46
                       FOREACH shift  52
                     statement shift  15
                    statements shift  67
                   dotted_name shift  29

State 18:
          processes ::= * process_or_template NAME CURLY_OPEN statements CURLY_CLOSE
      (1) processes ::= process_or_template NAME CURLY_OPEN statements CURLY_CLOSE *
          processes ::= * process_or_template NAME CURLY_OPEN statements CURLY_CLOSE processes
          processes ::= process_or_template NAME CURLY_OPEN statements CURLY_CLOSE * processes
          process_or_template ::= * PROCESS
          process_or_template ::= * TEMPLATE

                       PROCESS shift  69
                      TEMPLATE shift  70
                     processes shift  68
           process_or_template shift  32
                     {default} reduce 1

State 19:
          statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE * elif_maybe else_maybe name_maybe SEMICOLON
      (8) elif_maybe ::= *
          elif_maybe ::= * elif
          elif ::= * ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE
          elif ::= * ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif

                          ELIF shift  64
                    elif_maybe shift  24
                          elif shift  91
                     {default} reduce 8

State 20:
          statement ::= dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE * name_maybe SEMICOLON
     (32) name_maybe ::= *
          name_maybe ::= * NAME

                          NAME shift  72
                    name_maybe shift  36
                     {default} reduce 32

State 21:
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          dotted_name ::= NAME DOT * dotted_name

                          NAME shift  37
                   dotted_name shift  73

State 22:
          statement ::= dotted_name ARROW * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name

                          NAME shift  37
                   dotted_name shift  43

State 23:
          statement ::= dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE * name_maybe SEMICOLON
     (32) name_maybe ::= *
          name_maybe ::= * NAME

                          NAME shift  72
                    name_maybe shift  45
                     {default} reduce 32

State 24:
          statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe * else_maybe name_maybe SEMICOLON
     (12) else_maybe ::= *
          else_maybe ::= * ELSE CURLY_OPEN statements CURLY_CLOSE

                          ELSE shift  51
                    else_maybe shift  25
                     {default} reduce 12

State 25:
          statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe * name_maybe SEMICOLON
     (32) name_maybe ::= *
          name_maybe ::= * NAME

                          NAME shift  72
                    name_maybe shift  50
                     {default} reduce 32

State 26:
          statement ::= FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE * name_maybe SEMICOLON
     (32) name_maybe ::= *
          name_maybe ::= * NAME

                          NAME shift  72
                    name_maybe shift  57
                     {default} reduce 32

State 27:
          statement ::= FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE * name_maybe SEMICOLON
     (32) name_maybe ::= *
          name_maybe ::= * NAME

                          NAME shift  72
                    name_maybe shift  62
                     {default} reduce 32

State 28:
          elif ::= * ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE
     (10) elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE *
          elif ::= * ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif
          elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE * elif

                          ELIF shift  64
                          elif shift  92
                     {default} reduce 10

State 29:
          statement ::= dotted_name * ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= dotted_name * ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON

                    ROUND_OPEN shift  1
                         ARROW shift  22

State 30:
          statement ::= FOREACH ROUND_OPEN value AS NAME * ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= FOREACH ROUND_OPEN value AS NAME * COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON

                   ROUND_CLOSE shift  55
                         COLON shift  58

State 31:
      (0) input ::= processes *

                             $ reduce 0

State 32:
          processes ::= process_or_template * NAME CURLY_OPEN statements CURLY_CLOSE
          processes ::= process_or_template * NAME CURLY_OPEN statements CURLY_CLOSE processes

                          NAME shift  33

State 33:
          processes ::= process_or_template NAME * CURLY_OPEN statements CURLY_CLOSE
          processes ::= process_or_template NAME * CURLY_OPEN statements CURLY_CLOSE processes

                    CURLY_OPEN shift  11

State 34:
          processes ::= process_or_template NAME CURLY_OPEN statements * CURLY_CLOSE
          processes ::= process_or_template NAME CURLY_OPEN statements * CURLY_CLOSE processes

                   CURLY_CLOSE shift  18

State 35:
          statement ::= dotted_name ROUND_OPEN statement_args_maybe * ROUND_CLOSE name_maybe SEMICOLON

                   ROUND_CLOSE shift  20

State 36:
          statement ::= dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe * SEMICOLON

                     SEMICOLON shift  71

State 37:
     (16) dotted_name ::= NAME *
          dotted_name ::= NAME * DOT dotted_name

                           DOT shift  21
                     {default} reduce 16

State 38:
     (20) list_contents ::= value *
          list_contents ::= value * COMMA list_contents

                         COMMA shift  5
                     {default} reduce 20

State 39:
          list ::= CURLY_OPEN list_contents * CURLY_CLOSE

                   CURLY_CLOSE shift  77

State 40:
          map_contents ::= value * COLON value
          map_contents ::= value * COLON value COMMA map_contents

                         COLON shift  7

State 41:
     (24) map_contents ::= value COLON value *
          map_contents ::= value COLON value * COMMA map_contents

                         COMMA shift  6
                     {default} reduce 24

State 42:
          map ::= BRACKET_OPEN map_contents * BRACKET_CLOSE

                 BRACKET_CLOSE shift  84

State 43:
          statement ::= dotted_name ARROW dotted_name * ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON

                    ROUND_OPEN shift  2

State 44:
          statement ::= dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe * ROUND_CLOSE name_maybe SEMICOLON

                   ROUND_CLOSE shift  23

State 45:
          statement ::= dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe * SEMICOLON

                     SEMICOLON shift  85

State 46:
          statement ::= IF * ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON

                    ROUND_OPEN shift  8

State 47:
          statement ::= IF ROUND_OPEN value * ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON

                   ROUND_CLOSE shift  48

State 48:
          statement ::= IF ROUND_OPEN value ROUND_CLOSE * CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON

                    CURLY_OPEN shift  12

State 49:
          statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements * CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON

                   CURLY_CLOSE shift  19

State 50:
          statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe * SEMICOLON

                     SEMICOLON shift  86

State 51:
          else_maybe ::= ELSE * CURLY_OPEN statements CURLY_CLOSE

                    CURLY_OPEN shift  13

State 52:
          statement ::= FOREACH * ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= FOREACH * ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON

                    ROUND_OPEN shift  9

State 53:
          statement ::= FOREACH ROUND_OPEN value * AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= FOREACH ROUND_OPEN value * AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON

                            AS shift  54

State 54:
          statement ::= FOREACH ROUND_OPEN value AS * NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= FOREACH ROUND_OPEN value AS * NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON

                          NAME shift  30

State 55:
          statement ::= FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE * CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON

                    CURLY_OPEN shift  14

State 56:
          statement ::= FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements * CURLY_CLOSE name_maybe SEMICOLON

                   CURLY_CLOSE shift  26

State 57:
          statement ::= FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe * SEMICOLON

                     SEMICOLON shift  87

State 58:
          statement ::= FOREACH ROUND_OPEN value AS NAME COLON * NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON

                          NAME shift  59

State 59:
          statement ::= FOREACH ROUND_OPEN value AS NAME COLON NAME * ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON

                   ROUND_CLOSE shift  60

State 60:
          statement ::= FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE * CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON

                    CURLY_OPEN shift  16

State 61:
          statement ::= FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements * CURLY_CLOSE name_maybe SEMICOLON

                   CURLY_CLOSE shift  27

State 62:
          statement ::= FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe * SEMICOLON

                     SEMICOLON shift  89

State 63:
          else_maybe ::= ELSE CURLY_OPEN statements * CURLY_CLOSE

                   CURLY_CLOSE shift  90

State 64:
          elif ::= ELIF * ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE
          elif ::= ELIF * ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif

                    ROUND_OPEN shift  10

State 65:
          elif ::= ELIF ROUND_OPEN value * ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE
          elif ::= ELIF ROUND_OPEN value * ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif

                   ROUND_CLOSE shift  66

State 66:
          elif ::= ELIF ROUND_OPEN value ROUND_CLOSE * CURLY_OPEN statements CURLY_CLOSE
          elif ::= ELIF ROUND_OPEN value ROUND_CLOSE * CURLY_OPEN statements CURLY_CLOSE elif

                    CURLY_OPEN shift  17

State 67:
          elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements * CURLY_CLOSE
          elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements * CURLY_CLOSE elif

                   CURLY_CLOSE shift  28

State 68:
      (2) processes ::= process_or_template NAME CURLY_OPEN statements CURLY_CLOSE processes *

                     {default} reduce 2

State 69:
     (34) process_or_template ::= PROCESS *

                     {default} reduce 34

State 70:
     (35) process_or_template ::= TEMPLATE *

                     {default} reduce 35

State 71:
      (3) statement ::= dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON *

                     {default} reduce 3

State 72:
     (33) name_maybe ::= NAME *

                     {default} reduce 33

State 73:
     (17) dotted_name ::= NAME DOT dotted_name *

                     {default} reduce 17

State 74:
     (19) statement_args_maybe ::= list_contents *

                     {default} reduce 19

State 75:
     (21) list_contents ::= value COMMA list_contents *

                     {default} reduce 21

State 76:
     (22) list ::= CURLY_OPEN CURLY_CLOSE *

                     {default} reduce 22

State 77:
     (23) list ::= CURLY_OPEN list_contents CURLY_CLOSE *

                     {default} reduce 23

State 78:
     (25) map_contents ::= value COLON value COMMA map_contents *

                     {default} reduce 25

State 79:
     (28) value ::= STRING *

                     {default} reduce 28

State 80:
     (29) value ::= dotted_name *

                     {default} reduce 29

State 81:
     (30) value ::= list *

                     {default} reduce 30

State 82:
     (31) value ::= map *

                     {default} reduce 31

State 83:
     (26) map ::= BRACKET_OPEN BRACKET_CLOSE *

                     {default} reduce 26

State 84:
     (27) map ::= BRACKET_OPEN map_contents BRACKET_CLOSE *

                     {default} reduce 27

State 85:
      (4) statement ::= dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON *

                     {default} reduce 4

State 86:
      (5) statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON *

                     {default} reduce 5

State 87:
      (6) statement ::= FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON *

                     {default} reduce 6

State 88:
     (15) statements ::= statement statements *

                     {default} reduce 15

State 89:
      (7) statement ::= FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON *

                     {default} reduce 7

State 90:
     (13) else_maybe ::= ELSE CURLY_OPEN statements CURLY_CLOSE *

                     {default} reduce 13

State 91:
      (9) elif_maybe ::= elif *

                     {default} reduce 9

State 92:
     (11) elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif *

                     {default} reduce 11

----------------------------------------------------
Symbols:
    0: $:
    1: NAME
    2: CURLY_OPEN
    3: CURLY_CLOSE
    4: ROUND_OPEN
    5: ROUND_CLOSE
    6: SEMICOLON
    7: ARROW
    8: IF
    9: FOREACH
   10: AS
   11: COLON
   12: ELIF
   13: ELSE
   14: DOT
   15: COMMA
   16: BRACKET_OPEN
   17: BRACKET_CLOSE
   18: STRING
   19: PROCESS
   20: TEMPLATE
   21: error:
   22: processes: PROCESS TEMPLATE
   23: statement: NAME IF FOREACH
   24: elif_maybe: <lambda> ELIF
   25: elif: ELIF
   26: else_maybe: <lambda> ELSE
   27: statements: NAME IF FOREACH
   28: dotted_name: NAME
   29: statement_args_maybe: <lambda> NAME CURLY_OPEN BRACKET_OPEN STRING
   30: list_contents: NAME CURLY_OPEN BRACKET_OPEN STRING
   31: list: CURLY_OPEN
   32: map_contents: NAME CURLY_OPEN BRACKET_OPEN STRING
   33: map: BRACKET_OPEN
   34: value: NAME CURLY_OPEN BRACKET_OPEN STRING
   35: name_maybe: <lambda> NAME
   36: process_or_template: PROCESS TEMPLATE
   37: input: PROCESS TEMPLATE
