52#define YYBISON_VERSION "3.8.2"
55#define YYSKELETON_NAME "yacc.c"
74# error needs pure parser
77#define YYERROR_VERBOSE 1
78#define YYSTACK_USE_ALLOCA 0
79#define YYLTYPE rb_code_location_t
80#define YYLTYPE_IS_DECLARED 1
95#ifndef WARN_PAST_SCOPE
96# define WARN_PAST_SCOPE 0
101#define yydebug (p->debug)
103#define YYMALLOC(size) rb_parser_malloc(p, (size))
104#define YYREALLOC(ptr, size) rb_parser_realloc(p, (ptr), (size))
105#define YYCALLOC(nelem, size) rb_parser_calloc(p, (nelem), (size))
106#define YYFREE(ptr) rb_parser_free(p, (ptr))
107#define YYFPRINTF rb_parser_printf
108#define YY_LOCATION_PRINT(File, loc) \
109 rb_parser_printf(p, "%d.%d-%d.%d", \
110 (loc).beg_pos.lineno, (loc).beg_pos.column,\
111 (loc).end_pos.lineno, (loc).end_pos.column)
112#define YYLLOC_DEFAULT(Current, Rhs, N) \
116 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
117 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
121 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
122 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
126#define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
127 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
128#define RUBY_SET_YYLLOC_OF_NONE(Current) \
129 rb_parser_set_location_of_none(p, &(Current))
130#define RUBY_SET_YYLLOC(Current) \
131 rb_parser_set_location(p, &(Current))
132#define RUBY_INIT_YYLLOC() \
134 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
135 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
156#define DEF_EXPR(n) EXPR_##n = (1 << EXPR_##n##_bit)
176#define IS_lex_state_for(x, ls) ((x) & (ls))
177#define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
178#define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
179#define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
181# define SET_LEX_STATE(ls) \
184 rb_parser_trace_lex_state(p, p->lex.state, (ls), __LINE__) : \
185 (enum lex_state_e)(ls)))
191# define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
192# define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
193# define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
194# define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
195# define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
199#define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
200#define COND_POP() BITSTACK_POP(cond_stack)
201#define COND_P() BITSTACK_SET_P(cond_stack)
202#define COND_SET(n) BITSTACK_SET(cond_stack, (n))
206#define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
207#define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
208#define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
209#define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
239#define NUMPARAM_ID_P(id) numparam_id_p(id)
240#define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - tNUMPARAM_1 + 1)
241#define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 + (idx) - 1))
251#define DVARS_INHERIT ((void*)1)
252#define DVARS_TOPSCOPE NULL
253#define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
345 unsigned int past_scope_enabled: 1;
375 VALUE parsing_thread;
379#define intern_cstr(n,l,en) rb_intern3(n,l,en)
381#define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
382#define STR_NEW0() rb_enc_str_new(0,0,p->enc)
383#define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
384#define STR_NEW3(ptr,len,e,func) parser_str_new((ptr),(len),(e),(func),p->enc)
385#define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
418#define yyerror0(msg) parser_yyerror(p, NULL, (msg))
419#define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
420#define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
421#define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
424#define compile_for_eval (0)
426#define compile_for_eval (p->parent_iseq != 0)
429#define token_column ((int)(p->lex.ptok - p->lex.pbeg))
431#define CALL_Q_P(q) ((q) == TOKEN2VAL(tANDDOT))
432#define NODE_CALL_Q(q) (CALL_Q_P(q) ? NODE_QCALL : NODE_CALL)
433#define NEW_QCALL(q,r,m,a,loc) NEW_NODE(NODE_CALL_Q(q),r,m,a,loc)
435#define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
463#define rb_node_newnode(type, a1, a2, a3, loc) node_newnode(p, (type), (a1), (a2), (a3), (loc))
477set_line_body(
NODE *body,
int line)
487#define yyparse ruby_yyparse
491#define new_nil(loc) NEW_NIL(loc)
502static NODE *remove_begin_all(
NODE*);
503#define value_expr(node) value_expr_gen(p, (node) = remove_begin(node))
526static bool args_info_empty_p(
struct rb_args_info *args);
571#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
591#define get_id(id) (id)
592#define get_value(val) (val)
593#define get_num(num) (num)
595#define NODE_RIPPER NODE_CDECL
597static inline int ripper_is_node_yylval(
VALUE n);
602 if (ripper_is_node_yylval(c)) c =
RNODE(c)->nd_cval;
603 add_mark_object(p, b);
604 add_mark_object(p, c);
609ripper_is_node_yylval(
VALUE n)
614#define value_expr(node) ((void)(node))
615#define remove_begin(node) (node)
616#define void_stmts(p,x) (x)
617#define rb_dvar_defined(id, base) 0
618#define rb_local_defined(id, base) 0
620#define get_id(id) ripper_get_id(id)
622#define get_value(val) ripper_get_value(val)
623#define get_num(num) (int)get_id(num)
627#define method_cond(p,node,loc) (node)
628#define call_bin_op(p, recv,id,arg1,op_loc,loc) dispatch3(binary, (recv), STATIC_ID2SYM(id), (arg1))
629#define match_op(p,node1,node2,op_loc,loc) call_bin_op(0, (node1), idEqTilde, (node2), op_loc, loc)
630#define call_uni_op(p, recv,id,op_loc,loc) dispatch2(unary, STATIC_ID2SYM(id), (recv))
631#define logop(p,id,node1,node2,op_loc,loc) call_bin_op(0, (node1), (id), (node2), op_loc, loc)
633#define new_nil(loc) Qnil
680#define dyna_var(p, id) local_var(p, id)
691# define METHOD_NOT idNOT
693# define METHOD_NOT '!'
696#define idFWD_REST '*'
698#define idFWD_KWREST idPow
700#define idFWD_KWREST 0
702#define idFWD_BLOCK '&'
704#define RE_OPTION_ONCE (1<<16)
705#define RE_OPTION_ENCODING_SHIFT 8
706#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
707#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
708#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
709#define RE_OPTION_MASK 0xff
710#define RE_OPTION_ARG_ENCODING_NONE 32
732#define HERETERM_LENGTH_BITS ((SIZEOF_VALUE - 1) * CHAR_BIT - 1)
739#if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
741# define HERETERM_LENGTH_MAX ((1U << HERETERM_LENGTH_BITS) - 1)
743# define HERETERM_LENGTH_MAX UINT_MAX
746#if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
756#define STRTERM_HEREDOC IMEMO_FL_USER0
778#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
781#define TOKEN2ID(tok) ( \
782 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
783 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
784 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
785 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
786 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
787 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
788 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
793#define RIPPER_VERSION "0.1.0"
795static inline VALUE intern_sym(
const char *
name);
809#define dispatch0(n) ripper_dispatch0(p, TOKEN_PASTE(ripper_id_, n))
810#define dispatch1(n,a) ripper_dispatch1(p, TOKEN_PASTE(ripper_id_, n), (a))
811#define dispatch2(n,a,b) ripper_dispatch2(p, TOKEN_PASTE(ripper_id_, n), (a), (b))
812#define dispatch3(n,a,b,c) ripper_dispatch3(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c))
813#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d))
814#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e))
815#define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e), (f), (g))
817#define yyparse ripper_yyparse
819#define ID2VAL(id) STATIC_ID2SYM(id)
820#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
821#define KWD2EID(t, v) ripper_new_yylval(p, keyword_##t, get_value(v), 0)
823#define params_new(pars, opts, rest, pars2, kws, kwrest, blk) \
824 dispatch7(params, (pars), (opts), (rest), (pars2), (kws), (kwrest), (blk))
826#define escape_Qundef(x) ((x)==Qundef ? Qnil : (x))
833 return params_new(pre_args, opt_args, rest_arg, post_args, kw_args, kw_rest_arg, escape_Qundef(block));
840 add_mark_object(p, kw_args);
841 add_mark_object(p, kw_rest_arg);
842 add_mark_object(p, block);
865 if (!
NIL_P(pre_arg)) {
891 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
900#define new_hash(p,h,l) rb_ary_new_from_args(0)
913 return dispatch3(hshptn, constant, kw_args, kw_rest_arg);
921 kw_rest_arg = dispatch1(var_field, kw_rest_arg);
928 add_mark_object(p, kw_args);
929 add_mark_object(p, kw_rest_arg);
933#define new_defined(p,expr,loc) dispatch1(defined, (expr))
938#define ID2VAL(id) (id)
939#define TOKEN2VAL(t) ID2VAL(t)
940#define KWD2EID(t, v) keyword_##t
946# define ifndef_ripper(x) (x)
950# define ifndef_ripper(x)
953# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
954# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
955# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
956# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
957# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
958# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
959# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
960# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
961# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
962# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
963# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
964# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
965# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
966# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
967# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
968# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
969# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
970# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
971# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
972# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
974static ID id_warn, id_warning, id_gets, id_assoc;
975# define WARN_S_L(s,l) STR_NEW(s,l)
976# define WARN_S(s) STR_NEW2(s)
977# define WARN_I(i) INT2NUM(i)
978# define WARN_ID(i) rb_id2str(i)
979# define WARN_IVAL(i) i
981# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
982# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
983# ifdef HAVE_VA_ARGS_MACRO
984# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
986# define WARN_CALL rb_funcall
988# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
989# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
990# ifdef HAVE_VA_ARGS_MACRO
991# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
993# define WARNING_CALL rb_funcall
996# define compile_error ripper_compile_error
998# define WARN_S_L(s,l) s
1001# define WARN_ID(i) rb_id2name(i)
1002# define WARN_IVAL(i) NUM2INT(i)
1003# define PRIsWARN PRIsVALUE
1004# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1005# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1006# define WARN_CALL rb_compile_warn
1007# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1008# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1009# define WARNING_CALL rb_compile_warning
1011# define compile_error parser_compile_error
1019#define WARN_EOL(tok) \
1020 (looking_at_eol_p(p) ? \
1021 (void)rb_warning0("`" tok "' at the end of line without an expression") : \
1025#line 1026 "ripper.c"
1029# define YY_CAST(Type, Val) static_cast<Type> (Val)
1030# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
1032# define YY_CAST(Type, Val) ((Type) (Val))
1033# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
1037# if defined __cplusplus
1038# if 201103L <= __cplusplus
1039# define YY_NULLPTR nullptr
1041# define YY_NULLPTR 0
1044# define YY_NULLPTR ((void*)0)
1192#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1195#line 1006 "ripper.y"
1205#line 1204 "ripper.c"
1209# define YYSTYPE_IS_TRIVIAL 1
1210# define YYSTYPE_IS_DECLARED 1
1214#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
1223# define YYLTYPE_IS_DECLARED 1
1224# define YYLTYPE_IS_TRIVIAL 1
1672#ifndef __PTRDIFF_MAX__
1674# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1685#ifdef __INT_LEAST8_MAX__
1687#elif defined YY_STDINT_H
1693#ifdef __INT_LEAST16_MAX__
1695#elif defined YY_STDINT_H
1707# undef UINT_LEAST8_MAX
1708# undef UINT_LEAST16_MAX
1709# define UINT_LEAST8_MAX 255
1710# define UINT_LEAST16_MAX 65535
1713#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
1715#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
1716 && UINT_LEAST8_MAX <= INT_MAX)
1718#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
1724#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
1726#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
1727 && UINT_LEAST16_MAX <= INT_MAX)
1729#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
1736# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
1737# define YYPTRDIFF_T __PTRDIFF_TYPE__
1738# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
1739# elif defined PTRDIFF_MAX
1743# define YYPTRDIFF_T ptrdiff_t
1744# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
1746# define YYPTRDIFF_T long
1747# define YYPTRDIFF_MAXIMUM LONG_MAX
1752# ifdef __SIZE_TYPE__
1753# define YYSIZE_T __SIZE_TYPE__
1754# elif defined size_t
1755# define YYSIZE_T size_t
1756# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1758# define YYSIZE_T size_t
1760# define YYSIZE_T unsigned
1764#define YYSIZE_MAXIMUM \
1765 YY_CAST (YYPTRDIFF_T, \
1766 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
1767 ? YYPTRDIFF_MAXIMUM \
1768 : YY_CAST (YYSIZE_T, -1)))
1770#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
1780# if defined YYENABLE_NLS && YYENABLE_NLS
1782# include <libintl.h>
1783# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1787# define YY_(Msgid) Msgid
1792#ifndef YY_ATTRIBUTE_PURE
1793# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
1794# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
1796# define YY_ATTRIBUTE_PURE
1800#ifndef YY_ATTRIBUTE_UNUSED
1801# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
1802# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
1804# define YY_ATTRIBUTE_UNUSED
1809#if ! defined lint || defined __GNUC__
1810# define YY_USE(E) ((void) (E))
1816#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
1817# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
1818# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1819 _Pragma ("GCC diagnostic push") \
1820 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
1822# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1823 _Pragma ("GCC diagnostic push") \
1824 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
1825 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1827# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
1828 _Pragma ("GCC diagnostic pop")
1830# define YY_INITIAL_VALUE(Value) Value
1832#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1833# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1834# define YY_IGNORE_MAYBE_UNINITIALIZED_END
1836#ifndef YY_INITIAL_VALUE
1837# define YY_INITIAL_VALUE(Value)
1840#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1841# define YY_IGNORE_USELESS_CAST_BEGIN \
1842 _Pragma ("GCC diagnostic push") \
1843 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1844# define YY_IGNORE_USELESS_CAST_END \
1845 _Pragma ("GCC diagnostic pop")
1847#ifndef YY_IGNORE_USELESS_CAST_BEGIN
1848# define YY_IGNORE_USELESS_CAST_BEGIN
1849# define YY_IGNORE_USELESS_CAST_END
1853#define YY_ASSERT(E) ((void) (0 && (E)))
1859# ifdef YYSTACK_USE_ALLOCA
1860# if YYSTACK_USE_ALLOCA
1862# define YYSTACK_ALLOC __builtin_alloca
1863# elif defined __BUILTIN_VA_ARG_INCR
1866# define YYSTACK_ALLOC __alloca
1867# elif defined _MSC_VER
1869# define alloca _alloca
1871# define YYSTACK_ALLOC alloca
1872# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1875# ifndef EXIT_SUCCESS
1876# define EXIT_SUCCESS 0
1883# ifdef YYSTACK_ALLOC
1885# define YYSTACK_FREE(Ptr) do { ; } while (0)
1886# ifndef YYSTACK_ALLOC_MAXIMUM
1891# define YYSTACK_ALLOC_MAXIMUM 4032
1894# define YYSTACK_ALLOC YYMALLOC
1895# define YYSTACK_FREE YYFREE
1896# ifndef YYSTACK_ALLOC_MAXIMUM
1897# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1899# if (defined __cplusplus && ! defined EXIT_SUCCESS \
1900 && ! ((defined YYMALLOC || defined malloc) \
1901 && (defined YYFREE || defined free)))
1903# ifndef EXIT_SUCCESS
1904# define EXIT_SUCCESS 0
1908# define YYMALLOC malloc
1909# if ! defined malloc && ! defined EXIT_SUCCESS
1915# if ! defined free && ! defined EXIT_SUCCESS
1922#if (! defined yyoverflow \
1923 && (! defined __cplusplus \
1924 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
1925 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1936# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
1940# define YYSTACK_BYTES(N) \
1941 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
1942 + YYSIZEOF (YYLTYPE)) \
1943 + 2 * YYSTACK_GAP_MAXIMUM)
1945# define YYCOPY_NEEDED 1
1952# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1955 YYPTRDIFF_T yynewbytes; \
1956 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1957 Stack = &yyptr->Stack_alloc; \
1958 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
1959 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
1965#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1969# if defined __GNUC__ && 1 < __GNUC__
1970# define YYCOPY(Dst, Src, Count) \
1971 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
1973# define YYCOPY(Dst, Src, Count) \
1977 for (yyi = 0; yyi < (Count); yyi++) \
1978 (Dst)[yyi] = (Src)[yyi]; \
1991#define YYNTOKENS 154
1997#define YYNSTATES 1251
2000#define YYMAXUTOK 353
2005#define YYTRANSLATE(YYX) \
2006 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
2007 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
2014 0, 2, 2, 2, 2, 2, 2, 2, 2, 71,
2015 153, 74, 72, 73, 2, 2, 2, 2, 2, 2,
2016 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2017 2, 2, 152, 140, 2, 2, 2, 138, 133, 2,
2018 148, 149, 136, 134, 146, 135, 68, 137, 2, 2,
2019 2, 2, 2, 2, 2, 2, 2, 2, 128, 151,
2020 130, 126, 129, 127, 2, 2, 2, 2, 2, 2,
2021 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2022 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2023 2, 145, 69, 150, 132, 2, 147, 2, 2, 2,
2024 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2025 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2026 2, 2, 2, 143, 131, 144, 141, 2, 88, 89,
2027 90, 91, 75, 76, 77, 78, 94, 95, 83, 82,
2028 79, 80, 81, 86, 87, 92, 93, 97, 84, 85,
2029 96, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2030 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2031 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2032 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2033 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2034 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2035 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2036 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2037 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2038 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2039 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
2040 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2041 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2042 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2043 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
2044 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
2045 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
2046 65, 66, 67, 70, 98, 99, 100, 101, 102, 103,
2047 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
2048 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
2056 0, 1204, 1204, 1204, 1230, 1236, 1243, 1250, 1257, 1263,
2057 1264, 1270, 1283, 1281, 1292, 1303, 1309, 1316, 1323, 1330,
2058 1336, 1341, 1340, 1350, 1350, 1357, 1364, 1374, 1382, 1389,
2059 1397, 1405, 1417, 1429, 1439, 1453, 1454, 1462, 1470, 1479,
2060 1486, 1489, 1496, 1503, 1511, 1518, 1525, 1533, 1540, 1550,
2061 1555, 1564, 1567, 1568, 1572, 1576, 1580, 1585, 1592, 1594,
2062 1584, 1602, 1605, 1612, 1612, 1612, 1618, 1619, 1622, 1623,
2063 1632, 1642, 1652, 1661, 1672, 1679, 1686, 1693, 1700, 1708,
2064 1716, 1723, 1730, 1739, 1740, 1749, 1750, 1759, 1766, 1773,
2065 1780, 1787, 1794, 1801, 1808, 1815, 1822, 1831, 1832, 1841,
2066 1848, 1857, 1864, 1873, 1880, 1887, 1894, 1904, 1911, 1921,
2067 1928, 1935, 1945, 1952, 1959, 1966, 1973, 1980, 1987, 1994,
2068 2001, 2011, 2018, 2021, 2028, 2035, 2044, 2045, 2046, 2047,
2069 2052, 2055, 2062, 2065, 2072, 2072, 2082, 2083, 2084, 2085,
2070 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095,
2071 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105,
2072 2106, 2107, 2108, 2109, 2110, 2111, 2114, 2114, 2114, 2115,
2073 2115, 2116, 2116, 2116, 2117, 2117, 2117, 2117, 2118, 2118,
2074 2118, 2118, 2119, 2119, 2119, 2120, 2120, 2120, 2120, 2121,
2075 2121, 2121, 2121, 2122, 2122, 2122, 2122, 2123, 2123, 2123,
2076 2123, 2124, 2124, 2124, 2124, 2125, 2125, 2128, 2135, 2142,
2077 2150, 2158, 2166, 2174, 2182, 2189, 2197, 2206, 2215, 2227,
2078 2239, 2251, 2263, 2267, 2271, 2275, 2279, 2283, 2287, 2291,
2079 2295, 2299, 2303, 2307, 2311, 2315, 2316, 2320, 2324, 2328,
2080 2332, 2336, 2340, 2344, 2348, 2352, 2356, 2360, 2360, 2365,
2081 2374, 2380, 2381, 2382, 2383, 2386, 2390, 2397, 2404, 2405,
2082 2409, 2416, 2425, 2430, 2441, 2448, 2474, 2503, 2504, 2507,
2083 2508, 2509, 2513, 2520, 2529, 2537, 2544, 2552, 2560, 2564,
2084 2564, 2601, 2610, 2614, 2620, 2627, 2634, 2641, 2650, 2651,
2085 2654, 2661, 2668, 2677, 2678, 2679, 2680, 2681, 2682, 2683,
2086 2684, 2685, 2686, 2687, 2695, 2694, 2709, 2709, 2716, 2716,
2087 2724, 2732, 2739, 2746, 2753, 2761, 2768, 2775, 2782, 2789,
2088 2789, 2794, 2798, 2802, 2809, 2810, 2819, 2818, 2829, 2840,
2089 2851, 2861, 2872, 2871, 2888, 2887, 2902, 2911, 2956, 2955,
2090 2979, 2978, 3001, 3000, 3024, 3030, 3023, 3050, 3051, 3050,
2091 3076, 3083, 3090, 3097, 3106, 3113, 3119, 3136, 3142, 3148,
2092 3154, 3160, 3166, 3172, 3178, 3184, 3190, 3196, 3202, 3208,
2093 3214, 3229, 3236, 3242, 3249, 3250, 3251, 3254, 3255, 3258,
2094 3259, 3271, 3272, 3281, 3282, 3285, 3293, 3302, 3309, 3318,
2095 3325, 3332, 3339, 3346, 3355, 3363, 3372, 3376, 3380, 3384,
2096 3388, 3394, 3399, 3404, 3408, 3412, 3416, 3420, 3424, 3432,
2097 3436, 3440, 3444, 3448, 3452, 3456, 3460, 3464, 3470, 3471,
2098 3477, 3486, 3498, 3502, 3511, 3513, 3517, 3522, 3528, 3531,
2099 3535, 3539, 3543, 3528, 3567, 3575, 3585, 3590, 3596, 3606,
2100 3620, 3627, 3634, 3643, 3652, 3660, 3668, 3675, 3683, 3691,
2101 3698, 3705, 3718, 3726, 3736, 3737, 3741, 3736, 3758, 3759,
2102 3763, 3758, 3782, 3790, 3797, 3805, 3814, 3826, 3827, 3831,
2103 3837, 3838, 3840, 3841, 3842, 3830, 3855, 3856, 3859, 3860,
2104 3868, 3878, 3879, 3884, 3892, 3896, 3902, 3905, 3914, 3917,
2105 3924, 3927, 3928, 3930, 3931, 3940, 3949, 3954, 3963, 3972,
2106 3977, 3977, 3982, 3988, 3987, 3999, 4004, 4004, 4011, 4020,
2107 4024, 4033, 4037, 4041, 4045, 4049, 4052, 4056, 4065, 4069,
2108 4073, 4077, 4083, 4084, 4093, 4102, 4106, 4110, 4114, 4118,
2109 4122, 4128, 4130, 4139, 4147, 4161, 4162, 4185, 4189, 4195,
2110 4201, 4202, 4211, 4220, 4232, 4244, 4245, 4246, 4247, 4259,
2111 4273, 4274, 4275, 4276, 4277, 4278, 4279, 4280, 4281, 4289,
2112 4288, 4301, 4311, 4324, 4331, 4338, 4347, 4359, 4362, 4369,
2113 4376, 4379, 4383, 4386, 4393, 4396, 4397, 4400, 4417, 4418,
2114 4419, 4428, 4438, 4447, 4453, 4463, 4469, 4478, 4480, 4489,
2115 4499, 4505, 4514, 4523, 4533, 4539, 4549, 4555, 4565, 4575,
2116 4594, 4600, 4610, 4620, 4661, 4664, 4663, 4680, 4684, 4689,
2117 4693, 4697, 4679, 4718, 4725, 4732, 4739, 4742, 4743, 4746,
2118 4756, 4757, 4758, 4759, 4762, 4772, 4773, 4783, 4784, 4785,
2119 4786, 4789, 4790, 4791, 4792, 4793, 4796, 4797, 4798, 4799,
2120 4800, 4801, 4802, 4805, 4818, 4827, 4834, 4843, 4844, 4848,
2121 4847, 4857, 4865, 4874, 4889, 4904, 4904, 4918, 4922, 4926,
2122 4930, 4934, 4940, 4945, 4950, 4954, 4958, 4962, 4966, 4970,
2123 4974, 4978, 4982, 4986, 4990, 4994, 4998, 5002, 5007, 5013,
2124 5022, 5030, 5038, 5046, 5056, 5057, 5065, 5074, 5082, 5103,
2125 5105, 5118, 5128, 5136, 5146, 5153, 5162, 5169, 5179, 5186,
2126 5195, 5196, 5199, 5207, 5215, 5225, 5235, 5245, 5252, 5261,
2127 5268, 5277, 5278, 5281, 5289, 5299, 5300, 5303, 5313, 5317,
2128 5323, 5328, 5328, 5352, 5353, 5362, 5364, 5387, 5398, 5405,
2129 5413, 5432, 5433, 5434, 5437, 5438, 5439, 5440, 5443, 5444,
2130 5445, 5448, 5449, 5452, 5453, 5456, 5457, 5460, 5461, 5464,
2131 5465, 5468, 5471, 5474, 5477, 5478, 5479, 5482, 5483, 5486,
2137#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
2146static const char *
const yytname[] =
2148 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"`class'\"",
2149 "\"`module'\"",
"\"`def'\"",
"\"`undef'\"",
"\"`begin'\"",
2150 "\"`rescue'\"",
"\"`ensure'\"",
"\"`end'\"",
"\"`if'\"",
"\"`unless'\"",
2151 "\"`then'\"",
"\"`elsif'\"",
"\"`else'\"",
"\"`case'\"",
"\"`when'\"",
2152 "\"`while'\"",
"\"`until'\"",
"\"`for'\"",
"\"`break'\"",
"\"`next'\"",
2153 "\"`redo'\"",
"\"`retry'\"",
"\"`in'\"",
"\"`do'\"",
2154 "\"`do' for condition\"",
"\"`do' for block\"",
"\"`do' for lambda\"",
2155 "\"`return'\"",
"\"`yield'\"",
"\"`super'\"",
"\"`self'\"",
"\"`nil'\"",
2156 "\"`true'\"",
"\"`false'\"",
"\"`and'\"",
"\"`or'\"",
"\"`not'\"",
2157 "\"`if' modifier\"",
"\"`unless' modifier\"",
"\"`while' modifier\"",
2158 "\"`until' modifier\"",
"\"`rescue' modifier\"",
"\"`alias'\"",
2159 "\"`defined?'\"",
"\"`BEGIN'\"",
"\"`END'\"",
"\"`__LINE__'\"",
2160 "\"`__FILE__'\"",
"\"`__ENCODING__'\"",
"\"local variable or method\"",
2161 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
2162 "\"constant\"",
"\"class variable\"",
"tLABEL",
"\"integer literal\"",
2163 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
2164 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
2165 "\"literal content\"",
"tREGEXP_END",
"'.'",
"\"backslash\"",
2166 "\"escaped space\"",
"\"escaped horizontal tab\"",
2167 "\"escaped form feed\"",
"\"escaped carriage return\"",
2168 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
2169 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
2170 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
2171 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
2172 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
2173 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
2174 "\"**arg\"",
"\"&\"",
"\"->\"",
"\"symbol literal\"",
2175 "\"string literal\"",
"\"backtick literal\"",
"\"regexp literal\"",
2176 "\"word list\"",
"\"verbatim word list\"",
"\"symbol list\"",
2177 "\"verbatim symbol list\"",
"\"terminator\"",
"\"'}'\"",
"tSTRING_DBEG",
2178 "tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tLOWEST",
"'='",
"'?'",
"':'",
2179 "'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
2180 "tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"','",
2181 "'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
"'\\n'",
"$accept",
"program",
2182 "$@1",
"top_compstmt",
"top_stmts",
"top_stmt",
"begin_block",
2183 "bodystmt",
"$@2",
"compstmt",
"stmts",
"stmt_or_begin",
"$@3",
"stmt",
2184 "$@4",
"command_asgn",
"command_rhs",
"expr",
"@5",
"@6",
"$@7",
2185 "expr_value",
"expr_value_do",
"$@8",
"$@9",
"command_call",
2186 "block_command",
"cmd_brace_block",
"fcall",
"command",
"mlhs",
2187 "mlhs_inner",
"mlhs_basic",
"mlhs_item",
"mlhs_head",
"mlhs_post",
2188 "mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
"fitem",
"undef_list",
2189 "$@10",
"op",
"reswords",
"arg",
"$@11",
"relop",
"rel_expr",
2190 "arg_value",
"aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
2191 "opt_call_args",
"call_args",
"command_args",
"$@12",
"block_arg",
2192 "opt_block_arg",
"args",
"mrhs_arg",
"mrhs",
"primary",
"$@13",
"$@14",
2193 "$@15",
"$@16",
"$@17",
"@18",
"@19",
"$@20",
"@21",
"$@22",
"@23",
2194 "@24",
"@25",
"@26",
"primary_value",
"k_begin",
"k_if",
"k_unless",
2195 "k_while",
"k_until",
"k_case",
"k_for",
"k_class",
"k_module",
"k_def",
2196 "k_do",
"k_do_block",
"k_rescue",
"k_ensure",
"k_when",
"k_else",
2197 "k_elsif",
"k_end",
"k_return",
"then",
"do",
"if_tail",
"opt_else",
2198 "for_var",
"f_marg",
"f_marg_list",
"f_margs",
"f_rest_marg",
2199 "block_args_tail",
"opt_block_args_tail",
"block_param",
2200 "opt_block_param",
"block_param_def",
"opt_bv_decl",
"bv_decls",
"bvar",
2201 "lambda",
"@27",
"@28",
"@29",
"@30",
"$@31",
"f_larglist",
2202 "lambda_body",
"do_block",
"block_call",
"method_call",
"brace_block",
2203 "brace_body",
"@32",
"@33",
"@34",
"do_body",
"@35",
"@36",
"@37",
2204 "case_args",
"case_body",
"cases",
"p_case_body",
"@38",
"@39",
"@40",
2205 "$@41",
"$@42",
"$@43",
"p_cases",
"p_top_expr",
"p_top_expr_body",
2206 "p_expr",
"p_as",
"p_alt",
"p_lparen",
"p_lbracket",
"p_expr_basic",
2207 "@44",
"@45",
"@46",
"p_args",
"p_args_head",
"p_args_tail",
2208 "p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
"p_kw_label",
2209 "p_kwrest",
"p_kwnorest",
"p_value",
"p_primitive",
"$@47",
"p_variable",
2210 "p_var_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
2211 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
2212 "regexp",
"words",
"word_list",
"word",
"symbols",
"symbol_list",
2213 "qwords",
"qsymbols",
"qword_list",
"qsym_list",
"string_contents",
2214 "xstring_contents",
"regexp_contents",
"string_content",
"@48",
"$@49",
2215 "@50",
"@51",
"@52",
"@53",
"string_dvar",
"symbol",
"ssym",
"sym",
2216 "dsym",
"numeric",
"simple_numeric",
"user_variable",
"keyword_variable",
2217 "var_ref",
"var_lhs",
"backref",
"superclass",
"$@54",
"f_arglist",
2218 "@55",
"args_tail",
"opt_args_tail",
"f_args",
"args_forward",
2219 "f_bad_arg",
"f_norm_arg",
"f_arg_asgn",
"f_arg_item",
"f_arg",
2220 "f_label",
"f_kw",
"f_block_kw",
"f_block_kwarg",
"f_kwarg",
2221 "kwrest_mark",
"f_no_kwarg",
"f_kwrest",
"f_opt",
"f_block_opt",
2222 "f_block_optarg",
"f_optarg",
"restarg_mark",
"f_rest_arg",
2223 "blkarg_mark",
"f_block_arg",
"opt_f_block_arg",
"singleton",
"$@56",
2224 "assoc_list",
"assocs",
"assoc",
"operation",
"operation2",
"operation3",
2225 "dot_or_colon",
"call_op",
"call_op2",
"opt_terms",
"opt_nl",
"rparen",
2226 "rbracket",
"rbrace",
"trailer",
"term",
"terms",
"none",
YY_NULLPTR
2232 return yytname[yysymbol];
2236#define YYPACT_NINF (-1040)
2238#define yypact_value_is_default(Yyn) \
2239 ((Yyn) == YYPACT_NINF)
2241#define YYTABLE_NINF (-762)
2243#define yytable_value_is_error(Yyn) \
2244 ((Yyn) == YYTABLE_NINF)
2250 -1040, 114, 3745, -1040, 9167, -1040, -1040, -1040, 8625, -1040,
2251 -1040, -1040, -1040, -1040, -1040, -1040, 9293, 9293, -1040, -1040,
2252 -1040, 5085, 4644, -1040, -1040, -1040, -1040, 384, 8480, -27,
2253 236, 280, -1040, -1040, -1040, 3909, 4791, -1040, -1040, 4056,
2254 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 11057, 11057,
2255 11057, 11057, 124, 6680, 9419, 9923, 10301, 8909, -1040, 8335,
2256 -1040, -1040, -1040, 282, 316, 388, 413, 996, 11183, 11057,
2257 -1040, 799, -1040, 1065, -1040, 374, -1040, -1040, 367, 549,
2258 495, -1040, 485, 11435, -1040, 520, 1591, 398, 65, 348,
2259 -1040, 11309, 11309, -1040, -1040, 7662, 11557, 11679, 11801, 8189,
2260 9293, 424, 95, -1040, -1040, 544, -1040, -1040, -1040, -1040,
2261 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 323, 435,
2262 -1040, 570, 518, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2263 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2264 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2265 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2266 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2267 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2268 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2269 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2270 -1040, -1040, 547, -1040, -1040, -1040, 580, 11057, 634, 6831,
2271 11057, 11057, 11057, -1040, 11057, -1040, 613, 4181, 679, -1040,
2272 -1040, 640, 496, 353, 453, 696, 553, 655, -1040, -1040,
2273 7536, -1040, 9293, 9545, -1040, -1040, 7788, -1040, 11309, 863,
2274 -1040, 671, 6982, -1040, 7133, -1040, -1040, 702, 708, 367,
2275 -1040, 531, -1040, 759, 4328, 4328, 551, 9419, -1040, 6680,
2276 713, 799, -1040, 1065, -27, 745, -1040, 1065, -27, 750,
2277 -33, 38, -1040, 679, 765, 38, -1040, -27, 838, 996,
2278 11923, 769, -1040, 536, 562, 605, 659, -1040, -1040, -1040,
2279 -1040, -1040, 600, -1040, 716, 911, 438, -1040, -1040, -1040,
2280 -1040, 843, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 7914,
2281 11309, 11309, 11309, 11309, 9419, 11309, 11309, -1040, -1040, -1040,
2282 824, -1040, -1040, -1040, -1040, -1040, 10427, -1040, 6680, 9038,
2283 794, 10427, -1040, 11057, 11057, 11057, 11057, 11057, -1040, -1040,
2284 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, -1040,
2285 -1040, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057,
2286 11057, -1040, -1040, 12386, 9293, 12476, 5824, 374, 106, 106,
2287 7284, 11309, 7284, 799, -1040, 798, 885, -1040, -1040, 662,
2288 928, 117, 127, 141, 439, 670, 11309, 880, -1040, 832,
2289 701, -1040, -1040, -1040, -1040, 34, 78, 415, 543, 558,
2290 612, 626, 632, 720, -1040, -1040, -1040, 732, -1040, -1040,
2291 -1040, 13736, -1040, -1040, 11183, 11183, -1040, -1040, 585, -1040,
2292 -1040, -1040, 777, 11057, 11057, 9671, -1040, -1040, 12566, 9293,
2293 12656, 11057, 11057, 10049, -1040, -27, 826, -1040, -1040, 11057,
2294 -27, -1040, 836, -27, 842, -1040, 133, -1040, -1040, -1040,
2295 -1040, -1040, 8625, -1040, 11057, 834, 847, 12566, 12656, 11057,
2296 1065, 236, -27, -1040, -1040, 8040, 846, -27, -1040, -1040,
2297 10175, -1040, -1040, 10301, -1040, -1040, -1040, 671, 731, -1040,
2298 -1040, 850, 11923, 12746, 9293, 12836, -1040, -1040, -1040, -1040,
2299 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 931, 59,
2300 960, 340, 11057, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2301 -1040, -1040, 851, -1040, -1040, -1040, 990, -1040, 990, 11057,
2302 -1040, 855, 857, 963, -1040, -27, 11923, 858, -1040, -1040,
2303 -1040, 966, 887, 3887, -1040, -1040, -1040, 737, 663, -1040,
2304 759, 4622, 4622, 4622, 4622, 4769, 4475, 4622, 4622, 4328,
2305 4328, 849, 849, 3200, 1162, 1162, 886, 436, 436, 759,
2306 759, 759, 1842, 1842, 5232, 4203, 5526, 4350, -1040, 708,
2307 -1040, -27, 866, 588, -1040, 666, -1040, -1040, 4938, 990,
2308 1010, -1040, 5975, 1012, 6428, 990, 54, 990, 1003, 1018,
2309 144, 12926, 9293, 13016, -1040, 374, -1040, 731, -1040, -1040,
2310 -1040, 13106, 9293, 13196, 5824, 11309, -1040, -1040, -1040, -1040,
2311 -1040, -1040, 3529, -1040, 4034, -1040, -1040, -1040, 8625, 11057,
2312 -1040, 11057, 679, -1040, 655, 3369, 4497, -27, 688, 722,
2313 -1040, -1040, -1040, -1040, 9797, -1040, 10049, -1040, -1040, 11309,
2314 4181, -1040, -1040, 708, 708, -1040, -1040, 345, -1040, -1040,
2315 38, 11923, 850, 37, 470, -27, 271, 349, -1040, -1040,
2316 1007, -1040, 487, -1040, 877, -1040, -1040, 491, 884, -1040,
2317 759, -1040, -1040, 893, -1040, -1040, -1040, -1040, 895, 10553,
2318 9419, -1040, 850, 11923, 9419, 11183, 11057, 13286, 9293, 13376,
2319 12319, 918, 11183, 11183, -1040, 824, 889, 727, 9671, 11183,
2320 11183, -1040, -1040, 824, -1040, -1040, -1040, 10679, 738, -1040,
2321 574, -1040, 1033, -1040, -1040, -1040, -1040, -1040, -1040, 1018,
2322 990, -1040, 10805, 990, 72, 235, -27, 156, 312, 7284,
2323 799, 11309, 5824, 897, 470, -1040, -27, 990, 133, 921,
2324 8770, 95, 549, -1040, -1040, -1040, -1040, 11057, 11057, 733,
2325 11057, 11057, -27, 920, 133, -1040, -1040, 350, -1040, -1040,
2326 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2327 939, -1040, 939, 11057, 927, -1040, 850, -1040, 4181, 5379,
2328 5673, -27, 753, 786, -1040, -1040, 2945, 2945, 881, -1040,
2329 356, 631, -1040, 1024, 978, -1040, 952, -1040, -1040, 742,
2330 -1040, -1040, 341, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2331 -1040, -1040, 11057, -1040, -1040, -1040, -1040, -1040, -1040, 11183,
2332 -1040, -1040, -1040, -1040, -1040, 855, -1040, 989, -1040, -1040,
2333 -1040, 7284, -1040, -1040, -1040, -1040, 7284, 11309, 990, -1040,
2334 -1040, 990, -1040, -1040, 990, -1040, 11057, -1040, 26, -1040,
2335 332, 990, 5824, 799, 990, -1040, -1040, -1040, 2196, 5824,
2336 2402, -1040, -1040, -1040, 11057, -1040, 10049, -1040, 1834, -1040,
2337 1556, 7133, -1040, -1040, 5824, 944, 787, -1040, -1040, -1040,
2338 -1040, 12319, 12200, -1040, 577, 949, -1040, -1040, -1040, 1043,
2339 -1040, 12319, 2945, 2945, 881, 356, 790, 3608, 3608, 4181,
2340 -1040, -1040, 12045, 106, -1040, -1040, 6554, -1040, 106, -1040,
2341 -1040, -1040, -1040, -1040, 10931, 6126, -1040, 990, -1040, -1040,
2342 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 1151, -1040,
2343 -1040, -1040, -1040, -1040, -1040, -27, -27, -1040, -1040, 973,
2344 -1040, 954, 11057, -1040, 956, 546, 965, 965, -1040, 967,
2345 1049, 968, 1066, -1040, 990, 799, 974, 921, 2402, -1040,
2346 -1040, -1040, -1040, -27, 991, 995, 979, 12167, -1040, 981,
2347 965, 965, -1040, 982, 992, -1040, 999, -1040, -1040, 3,
2348 264, 355, -27, 12286, -1040, 1001, -1040, -1040, -27, 1011,
2349 -1040, 12319, -1040, -1040, 744, -1040, -1040, -1040, -1040, -1040,
2350 -1040, -1040, -1040, -1040, -1040, -27, -27, -27, -27, 1068,
2351 -1040, 743, 198, 203, 213, 5824, 1133, 5975, 3608, 11057,
2352 -1040, 955, -1040, 1151, 1079, -1040, 1022, -27, 1025, -1040,
2353 -1040, -1040, 11057, 2196, -1040, -1040, 714, -1040, -1040, -1040,
2354 -1040, 243, -1040, -1040, 2402, -1040, -1040, 1417, -1040, -1040,
2355 -1040, -1040, 2402, 5824, -27, 291, 7410, 1027, -1040, 12167,
2356 2402, -1040, 1108, 748, 714, -1040, -1040, -1040, 2402, -1040,
2357 1417, -1040, 1089, -1040, 1028, 12319, -1040, 307, 978, 1031,
2358 -1040, 652, -1040, 577, 978, -1040, -1040, 800, -1040, -1040,
2359 -1040, -1040, 248, 13466, 9293, 13556, 1010, -1040, 574, 106,
2360 801, 377, -1040, -1040, -1040, -1040, -1040, -1040, -27, -1040,
2361 1151, -1040, 1097, -1040, -1040, -27, -1040, 1032, 1037, -1040,
2362 1121, 965, -1040, 1040, -1040, 1041, -1040, 1040, 990, 1046,
2363 5824, 7133, -1040, 1069, -1040, 748, -1040, 1051, 1053, -1040,
2364 13646, -1040, 965, 1054, -1040, 1067, 1054, -1040, 542, -1040,
2365 -1040, 12319, 1071, -1040, 1072, 12319, -1040, -1040, -1040, -1040,
2366 -1040, 61, 202, -27, 286, 313, -1040, -1040, -1040, 11309,
2367 11309, 12200, -1040, -1040, 1073, 1074, -1040, 2402, -1040, 1417,
2368 -1040, -1040, 1417, -1040, 1417, -1040, -1040, -1040, -1040, 990,
2369 1048, -1040, 2402, -1040, 1417, -1040, 1075, 1076, -1040, 1417,
2370 -1040, 1417, -1040, -1040, 1089, -1040, 1071, 12319, 12319, 1071,
2371 321, -1040, -1040, -1040, -1040, 1097, 1097, 1040, 1080, 1040,
2372 1040, -1040, -1040, 1054, 1087, 1054, 1054, -1040, -1040, 1071,
2373 -1040, 1074, -1040, 1417, -1040, -1040, -1040, -1040, 1417, -1040,
2374 -1040, -1040, 6277, 1040, 1054, 576, -1040, -1040, -1040, -1040,
2383 2, 0, 0, 1, 0, 362, 363, 364, 0, 355,
2384 356, 357, 360, 358, 359, 361, 350, 351, 352, 353,
2385 373, 279, 279, 637, 636, 638, 639, 749, 0, 749,
2386 0, 0, 641, 640, 642, 731, 733, 633, 632, 732,
2387 635, 627, 628, 629, 630, 578, 647, 648, 0, 0,
2388 0, 0, 0, 0, 306, 761, 761, 95, 326, 598,
2389 598, 600, 602, 0, 0, 0, 0, 0, 0, 0,
2390 3, 747, 6, 9, 35, 40, 52, 67, 279, 66,
2391 0, 83, 0, 87, 97, 0, 61, 235, 250, 0,
2392 304, 0, 0, 63, 63, 747, 0, 0, 0, 0,
2393 315, 68, 324, 293, 294, 577, 579, 295, 296, 297,
2394 299, 298, 300, 576, 617, 618, 575, 625, 643, 644,
2395 301, 0, 302, 71, 5, 8, 176, 187, 177, 200,
2396 173, 193, 183, 182, 203, 204, 198, 181, 180, 175,
2397 201, 205, 206, 185, 174, 188, 192, 194, 186, 179,
2398 195, 202, 197, 196, 189, 199, 184, 172, 191, 190,
2399 171, 178, 169, 170, 166, 167, 168, 126, 128, 127,
2400 161, 162, 157, 139, 140, 141, 148, 145, 147, 142,
2401 143, 163, 164, 149, 150, 154, 158, 144, 146, 136,
2402 137, 138, 151, 152, 153, 155, 156, 159, 160, 165,
2403 131, 133, 28, 129, 130, 132, 0, 0, 0, 0,
2404 0, 0, 0, 598, 0, 274, 0, 257, 284, 81,
2405 278, 761, 0, 643, 644, 0, 302, 761, 725, 82,
2406 749, 79, 0, 761, 449, 78, 749, 750, 0, 0,
2407 23, 247, 0, 10, 0, 350, 351, 318, 450, 0,
2408 229, 0, 315, 230, 220, 221, 312, 0, 21, 0,
2409 0, 747, 17, 20, 749, 85, 16, 308, 749, 0,
2410 754, 754, 258, 0, 0, 754, 723, 749, 0, 0,
2411 0, 93, 354, 0, 103, 104, 111, 428, 622, 621,
2412 623, 620, 0, 619, 0, 0, 0, 585, 594, 590,
2413 596, 626, 56, 241, 242, 757, 758, 4, 759, 748,
2414 0, 0, 0, 0, 0, 0, 0, 365, 454, 443,
2415 72, 458, 323, 366, 458, 439, 0, 99, 0, 91,
2416 88, 0, 57, 0, 0, 0, 0, 0, 253, 254,
2417 0, 0, 0, 0, 218, 219, 0, 0, 0, 251,
2418 252, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2419 0, 743, 744, 0, 761, 0, 0, 62, 0, 0,
2420 0, 0, 0, 747, 334, 748, 0, 384, 383, 0,
2421 0, 643, 644, 302, 121, 122, 0, 0, 124, 651,
2422 0, 643, 644, 302, 342, 196, 189, 199, 184, 166,
2423 167, 168, 126, 127, 721, 344, 720, 0, 80, 746,
2424 745, 0, 325, 580, 0, 0, 134, 728, 312, 285,
2425 730, 281, 0, 0, 0, 0, 275, 283, 0, 761,
2426 0, 0, 0, 0, 276, 749, 0, 317, 280, 679,
2427 749, 270, 761, 749, 761, 269, 749, 322, 55, 25,
2428 27, 26, 0, 319, 0, 0, 0, 0, 0, 0,
2429 19, 0, 749, 310, 15, 748, 84, 749, 307, 313,
2430 756, 755, 259, 756, 261, 314, 724, 0, 110, 626,
2431 101, 96, 0, 0, 761, 0, 327, 429, 604, 624,
2432 607, 605, 599, 581, 582, 601, 583, 603, 0, 0,
2433 0, 0, 0, 760, 7, 29, 30, 31, 32, 33,
2434 53, 54, 0, 455, 454, 73, 0, 459, 0, 0,
2435 36, 289, 0, 39, 288, 749, 0, 89, 100, 51,
2436 41, 49, 0, 262, 284, 207, 37, 0, 302, 58,
2437 227, 234, 236, 237, 238, 245, 246, 239, 240, 216,
2438 217, 243, 244, 749, 231, 232, 233, 222, 223, 224,
2439 225, 226, 255, 256, 734, 736, 735, 737, 448, 279,
2440 446, 749, 761, 734, 736, 735, 737, 447, 279, 0,
2441 761, 375, 0, 374, 0, 0, 0, 0, 332, 0,
2442 312, 0, 761, 0, 63, 340, 121, 122, 123, 649,
2443 338, 0, 761, 0, 0, 0, 345, 741, 742, 347,
2444 734, 735, 279, 42, 262, 208, 48, 215, 0, 0,
2445 727, 0, 286, 282, 761, 734, 735, 749, 734, 735,
2446 726, 316, 751, 264, 271, 266, 273, 321, 24, 0,
2447 248, 11, 34, 0, 761, 214, 22, 86, 18, 309,
2448 754, 0, 94, 738, 109, 749, 734, 735, 430, 608,
2449 0, 584, 0, 587, 0, 592, 589, 0, 0, 593,
2450 228, 452, 456, 0, 372, 453, 460, 438, 292, 0,
2451 0, 98, 92, 0, 0, 0, 0, 0, 761, 0,
2452 0, 0, 0, 0, 445, 76, 0, 451, 271, 0,
2453 0, 268, 444, 74, 267, 305, 367, 761, 761, 567,
2454 761, 376, 761, 330, 378, 64, 377, 331, 469, 0,
2455 0, 369, 0, 0, 738, 311, 749, 734, 735, 0,
2456 0, 0, 0, 121, 122, 125, 749, 0, 749, 655,
2457 0, 440, 69, 135, 729, 287, 277, 0, 0, 451,
2458 0, 0, 749, 761, 749, 260, 102, 451, 431, 609,
2459 613, 614, 615, 606, 616, 586, 588, 595, 591, 597,
2460 761, 70, 761, 0, 290, 38, 90, 50, 263, 734,
2461 735, 749, 734, 735, 561, 565, 0, 0, 0, 506,
2462 500, 503, 559, 0, 59, 486, 488, 490, 493, 540,
2463 545, 546, 547, 550, 551, 552, 553, 554, 556, 555,
2464 557, 558, 0, 47, 212, 46, 213, 77, 752, 0,
2465 44, 210, 45, 211, 75, 568, 569, 761, 570, 368,
2466 370, 0, 12, 14, 574, 371, 0, 0, 0, 379,
2467 381, 0, 65, 470, 0, 336, 0, 462, 0, 335,
2468 451, 0, 0, 0, 0, 451, 343, 722, 678, 0,
2469 678, 348, 441, 442, 0, 265, 272, 320, 678, 610,
2470 749, 0, 419, 418, 0, 291, 451, 548, 549, 122,
2471 563, 0, 0, 502, 0, 0, 505, 428, 562, 0,
2472 60, 0, 543, 544, 0, 492, 491, 0, 0, 249,
2473 43, 209, 0, 0, 572, 573, 0, 382, 0, 328,
2474 329, 471, 333, 463, 0, 0, 337, 0, 650, 339,
2475 685, 682, 681, 680, 683, 691, 700, 679, 0, 712,
2476 701, 716, 715, 711, 677, 749, 749, 684, 686, 687,
2477 689, 663, 693, 698, 761, 704, 761, 761, 709, 663,
2478 714, 663, 0, 661, 0, 0, 663, 655, 678, 432,
2479 435, 611, 417, 749, 0, 687, 402, 695, 696, 761,
2480 761, 761, 707, 402, 402, 400, 422, 457, 461, 749,
2481 520, 508, 749, 509, 515, 0, 535, 598, 749, 526,
2482 531, 534, 528, 530, 538, 753, 560, 487, 489, 541,
2483 542, 564, 499, 496, 598, 749, 749, 749, 749, 0,
2484 571, 0, 643, 644, 302, 0, 761, 0, 0, 0,
2485 464, 761, 341, 0, 395, 387, 389, 749, 392, 385,
2486 652, 654, 0, 0, 670, 692, 0, 658, 719, 702,
2487 703, 0, 660, 659, 0, 673, 713, 0, 675, 717,
2488 346, 656, 0, 0, 749, 0, 0, 0, 420, 0,
2489 408, 410, 0, 694, 0, 397, 399, 398, 0, 413,
2490 0, 415, 0, 507, 518, 0, 501, 513, 524, 510,
2491 516, 0, 504, 527, 533, 539, 537, 0, 494, 495,
2492 497, 498, 312, 0, 761, 0, 761, 13, 761, 0,
2493 478, 481, 484, 485, 465, 467, 468, 466, 749, 394,
2494 0, 688, 0, 705, 662, 749, 690, 663, 663, 699,
2495 704, 761, 718, 663, 710, 663, 687, 663, 0, 0,
2496 0, 0, 433, 0, 421, 706, 401, 402, 402, 312,
2497 0, 697, 761, 402, 708, 402, 402, 426, 749, 424,
2498 427, 0, 521, 522, 511, 0, 517, 536, 532, 525,
2499 529, 738, 311, 749, 734, 735, 566, 380, 472, 0,
2500 0, 482, 386, 388, 390, 393, 653, 0, 666, 0,
2501 668, 657, 0, 674, 0, 671, 676, 349, 434, 0,
2502 0, 612, 0, 405, 0, 407, 738, 311, 396, 0,
2503 414, 0, 411, 416, 0, 423, 519, 0, 0, 514,
2504 451, 473, 479, 480, 483, 0, 0, 663, 663, 663,
2505 663, 437, 436, 402, 402, 402, 402, 425, 523, 512,
2506 474, 391, 667, 0, 664, 669, 672, 406, 0, 403,
2507 409, 412, 0, 663, 402, 761, 665, 404, 476, 477,
2514 -1040, -1040, -1040, 972, -1040, 19, 754, -545, -1040, -51,
2515 -1040, 756, -1040, 68, -1040, -264, -308, -83, -1040, -1040,
2516 -1040, -66, -75, -1040, -1040, -25, -1040, -323, 645, 4,
2517 1126, -154, 7, -26, -1040, -391, 11, 2057, -345, 1127,
2518 -58, -11, -1040, -1040, 2, -1040, 2889, -1040, 1147, -1040,
2519 1411, -1040, 110, 60, 630, -350, 100, -15, -1040, -381,
2520 -205, 39, -1040, -307, -32, -1040, -1040, -1040, -1040, -1040,
2521 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 32,
2522 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2523 -1040, -1040, -1040, -1040, -1040, 538, -1040, 331, 1177, -364,
2524 -1040, 146, -694, -1040, -1027, -1039, 230, 152, 393, 308,
2525 -1040, 501, -1040, -886, -1040, 74, 389, -1040, -1040, -1040,
2526 -1040, -1040, -1040, -1040, 537, -1040, -1040, -96, 766, -1040,
2527 -1040, -1040, 962, -1040, -1040, -1040, -1040, -688, -1040, 42,
2528 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -603,
2529 -1040, -1040, -1040, -1040, 399, -1040, -1040, -1040, -860, -1040,
2530 274, -991, -605, -822, -1040, 206, -1040, 210, 218, -1040,
2531 -643, -1040, 414, -1040, -1040, 208, -1040, -1040, 289, 373,
2532 675, -1040, 1197, 1459, 1483, 1523, -1040, 806, 1936, -1040,
2533 1965, 2010, -1040, -1040, -56, -1040, -1040, -200, -1040, -1040,
2534 -1040, -1040, -1040, -1040, -1040, 5, -1040, -1040, -1040, -1040,
2535 -21, 1967, 1113, 1209, 1908, 1709, -1040, -1040, 352, -1040,
2536 -770, 412, -776, -607, -1001, -829, 207, -915, -287, -62,
2537 275, 249, -1040, -1040, -489, -327, 168, -975, -957, 256,
2538 -879, -1040, -729, -1040, 120, -748, -1040, -1040, -1040, 92,
2539 -393, -1040, -318, -1040, -1040, -86, -1040, -37, 253, 848,
2540 -577, 329, -243, -60, -55, -2
2546 0, 1, 2, 70, 71, 72, 243, 579, 906, 580,
2547 261, 262, 461, 263, 452, 74, 530, 75, 539, 690,
2548 890, 368, 370, 371, 842, 76, 77, 515, 249, 79,
2549 80, 264, 81, 82, 83, 481, 84, 216, 388, 389,
2550 200, 201, 202, 618, 567, 204, 86, 454, 359, 87,
2551 218, 269, 535, 568, 702, 440, 441, 231, 232, 220,
2552 426, 572, 523, 524, 88, 366, 268, 467, 639, 287,
2553 719, 589, 732, 730, 604, 606, 739, 740, 957, 251,
2554 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
2555 321, 324, 707, 831, 722, 836, 837, 675, 252, 582,
2556 715, 838, 839, 380, 1025, 1026, 1027, 1028, 1136, 1061,
2557 963, 871, 872, 964, 1148, 1149, 486, 487, 658, 758,
2558 868, 1055, 959, 1132, 325, 101, 102, 322, 512, 513,
2559 672, 770, 516, 517, 676, 772, 848, 723, 1107, 720,
2560 843, 911, 1018, 1211, 1230, 1242, 1250, 1099, 1100, 1078,
2561 795, 796, 897, 898, 797, 882, 884, 881, 982, 983,
2562 984, 1152, 985, 988, 989, 990, 991, 992, 993, 798,
2563 799, 887, 800, 801, 802, 708, 827, 903, 833, 103,
2564 104, 105, 106, 107, 108, 109, 498, 662, 110, 500,
2565 111, 112, 499, 501, 292, 295, 296, 492, 660, 659,
2566 759, 869, 961, 1056, 763, 113, 114, 293, 115, 116,
2567 117, 223, 224, 120, 225, 226, 600, 731, 859, 860,
2568 1114, 1034, 935, 443, 937, 938, 1126, 940, 956, 942,
2569 943, 968, 969, 944, 945, 946, 947, 948, 972, 973,
2570 949, 950, 951, 952, 953, 1037, 407, 605, 274, 444,
2571 228, 123, 643, 570, 609, 603, 411, 307, 436, 437,
2572 697, 886, 472, 583, 375, 266
2580 124, 291, 260, 365, 294, 584, 412, 235, 367, 367,
2581 203, 308, 367, 205, 571, 410, 309, 240, 841, 372,
2582 215, 215, 434, 125, 536, 282, 369, 752, 474, 373,
2583 203, 844, 476, 205, 89, 308, 89, 1005, 1007, 581,
2584 630, 405, 598, 302, 623, 569, 301, 578, 222, 222,
2585 749, 282, 623, 272, 276, 221, 221, 330, 374, 737,
2586 265, 203, -107, 320, 282, 282, 282, 529, 281, 1124,
2587 73, 1150, 73, 1175, -116, 1006, 1008, 1057, 757, 627,
2588 630, 714, 234, 1173, 955, 89, 89, 794, 934, 283,
2589 934, 652, 960, 612, 270, 495, 497, -116, 934, 1029,
2590 222, 203, -637, 889, 215, 462, 613, 616, 227, 227,
2591 569, 1144, 578, 470, 3, 283, 219, 229, 1116, 581,
2592 471, 317, 267, 222, 222, 664, 237, 222, 379, 390,
2593 390, -637, 222, -354, 655, 682, 430, 1116, 319, 221,
2594 644, 974, -112, 877, 878, 1116, -636, 271, 275, 850,
2595 529, 529, -113, 446, 1117, 448, 237, 422, 260, 855,
2596 1206, -354, -354, -107, 1209, 458, -120, 644, 1129, -119,
2597 315, 316, 914, 1117, 525, -636, 1231, 305, 665, 306,
2598 256, -115, 1054, -107, 473, -734, -107, 854, 934, 1173,
2599 -107, 471, 227, 456, 1029, 1109, 1103, 485, 1042, 1043,
2600 408, 308, 1124, 1150, 876, 305, 465, 306, 260, -734,
2601 -354, -112, -116, 883, -116, -118, -113, 1229, -107, 427,
2602 -734, 1065, 1066, 1067, 464, 427, -120, 367, 367, 367,
2603 367, 445, 510, 511, 215, 1144, 215, 215, 318, 434,
2604 124, 89, 726, 630, 505, 506, 507, 508, 282, 999,
2605 1000, 936, 736, 623, 480, 623, 735, 305, 479, 306,
2606 -118, -119, 222, -103, 222, 222, 265, 1116, 222, 221,
2607 222, 221, 442, -104, 89, 644, 89, 260, 979, 981,
2608 238, 1029, 241, 1029, 1116, 644, 237, -111, 367, 89,
2609 -110, 89, 776, 593, 981, 981, -106, 282, 663, -115,
2610 663, 520, -106, 595, 1118, 586, 531, 917, 234, 319,
2611 73, 1214, 283, 308, 954, 1125, 1074, 623, 1002, 585,
2612 1130, 587, 227, 1118, 227, 460, -117, 1105, 504, 978,
2613 435, 1138, 438, 1106, -114, 265, 588, -117, 781, 1145,
2614 527, 89, 222, 222, 222, 222, 89, 222, 222, -112,
2615 -735, -112, 931, -118, -113, -118, -113, -114, 222, 1154,
2616 89, 283, 445, 537, -120, 522, -120, 576, 215, 569,
2617 522, 578, 817, 1181, -108, -105, 932, 73, 1079, 242,
2618 824, -109, 509, -735, 813, 815, 1029, 1029, 1084, 531,
2619 531, 820, 822, 317, 1198, 994, 222, -106, 89, -119,
2620 826, -119, 89, 222, 89, 1076, 668, 755, 994, 994,
2621 1075, 315, 316, 576, 1131, 1101, 361, -106, 222, 746,
2622 -106, 529, -645, 244, -106, 577, 1115, 445, 529, 529,
2623 1090, 1091, 576, 215, 297, 529, 529, -115, 894, -115,
2624 427, 638, 427, 880, 362, 363, 537, 537, 1218, -112,
2625 282, 689, -645, 1155, 203, 889, 480, 205, -108, 669,
2626 576, 222, 766, 1224, -117, -731, -117, 766, 298, -103,
2627 1153, -84, -114, 630, -114, -108, -105, 889, -105, -112,
2628 338, 339, 445, -638, 915, 623, 895, 576, 215, 896,
2629 577, -98, 361, 364, 282, -108, -105, 89, -108, -105,
2630 480, -524, -108, -105, 488, 496, -749, -631, 1128, 237,
2631 318, 900, -638, 333, 283, 233, 222, 624, 577, 729,
2632 362, 409, 738, 1171, 615, 617, 716, 349, 350, 994,
2633 477, 710, 236, 712, -646, -631, -631, 237, -311, 1015,
2634 299, 615, 617, 970, 1017, 577, 1153, 1120, 746, 1001,
2635 1153, 1248, -646, 488, 695, 529, 754, 488, 283, 490,
2636 491, -113, 650, 703, 361, 300, -311, -311, 981, 645,
2637 427, 941, 356, 357, 358, 1120, 704, 323, 709, -113,
2638 1039, -104, -731, 966, -631, 1189, 1210, -731, 835, 830,
2639 445, 830, 362, 428, 994, 576, 215, 742, 1040, 361,
2640 445, 718, 1228, 1153, 361, 576, 215, 743, 490, 491,
2641 704, -639, 490, 491, 89, -311, 89, 415, -735, 282,
2642 203, 326, 427, 205, 222, 756, -641, 362, 457, 694,
2643 -643, 327, 362, 483, 222, 986, 89, 222, 701, 765,
2644 -639, 429, 704, 768, -120, 862, 331, 78, 367, 78,
2645 459, 282, 432, 577, 926, -641, 60, 480, -643, -643,
2646 531, 78, 78, 577, -111, 853, 488, 531, 531, 414,
2647 852, 222, 701, -644, 531, 531, 429, -119, 851, -120,
2648 -640, 484, 861, 283, 459, 930, 445, 699, 1204, 987,
2649 418, 576, 215, 416, -642, 237, -732, -110, 78, 78,
2650 -631, -644, -644, 694, 701, 828, 834, -643, 840, -640,
2651 840, -119, 89, 78, -115, 283, 89, 537, 488, 489,
2652 222, 490, 491, -642, 537, 537, 753, -302, 236, -631,
2653 361, 537, 537, 970, -106, 1168, 78, 78, -634, 423,
2654 78, 970, 203, 970, 1163, 78, 522, 829, 775, 577,
2655 -644, 427, 777, 830, 367, -302, -302, 1123, 362, 591,
2656 1127, 89, 415, 222, 89, 700, -634, -634, 873, 361,
2657 873, 908, 925, 490, 491, -749, 1157, 644, 1085, 424,
2658 905, 1143, 488, 1146, 237, 907, 425, 750, -634, -120,
2659 753, 926, -117, 918, 531, 431, 1086, 362, 601, -312,
2660 607, 433, 814, 816, -302, 361, 691, 592, 967, 821,
2661 823, 361, -108, -732, -115, -634, 361, -634, -732, 453,
2662 977, 751, 930, 931, 696, 904, 819, -312, -312, 608,
2663 892, 893, 864, 362, 687, 493, 333, 490, 491, 362,
2664 1093, 1169, 1170, 488, 362, 1140, 602, 932, -117, 677,
2665 230, 537, 699, -114, 78, 1016, 233, 814, 816, -114,
2666 821, 823, 463, 89, 1021, 970, 488, 970, 89, 222,
2667 282, -83, 970, -105, 970, 78, -312, 78, 78, -115,
2668 696, 78, 688, 78, 89, 700, 819, 78, 1094, 78,
2669 1217, 89, 1219, 602, 478, 1051, 493, 1220, 490, 491,
2670 469, 619, 78, 89, 78, 1223, 89, 1225, 696, 475,
2671 705, 970, -117, -114, 1226, 482, 713, 449, 717, 493,
2672 502, 490, 491, -738, 1157, 1095, 333, 450, 451, 901,
2673 514, 1081, 596, 596, 1011, 282, 597, 879, 89, -749,
2674 528, 590, 1038, 237, 1038, 1038, 1243, 89, 1087, 503,
2675 305, 1244, 306, 594, 78, 78, 78, 78, 78, 78,
2676 78, 78, 599, 333, 1096, -738, 1098, 1038, 1038, 1038,
2677 830, 78, 721, 78, 901, 632, 78, 488, 641, 696,
2678 346, 347, 634, 354, 355, 356, 357, 358, 636, 696,
2679 975, 642, -98, -738, -738, 671, 651, 488, 967, 1063,
2680 674, -284, 967, 679, 683, 1133, 967, 680, 967, 78,
2681 684, 78, 698, 685, 834, 78, 78, 78, 706, 840,
2682 354, 355, 356, 357, 358, 711, 488, 282, 718, 767,
2683 494, 78, 490, 491, 696, 721, 769, 771, 971, 818,
2684 -738, -285, -738, 696, 885, -734, 812, 89, 830, 89,
2685 661, 845, 490, 491, 849, 41, 42, 43, 44, 78,
2686 78, 760, 761, 803, 762, 939, 866, 939, 856, 858,
2687 870, 46, 47, -286, 78, 939, 888, 965, 889, 666,
2688 1190, 490, 491, 891, 447, 89, 367, 367, 89, 902,
2689 -287, 1135, 445, 995, 709, 784, 840, 576, 215, 1032,
2690 1033, 1046, 1036, 1212, 1213, 310, 311, 312, 313, 314,
2691 78, 1041, 466, 1044, 1047, 119, 468, 119, 1049, 1038,
2692 1052, 1059, 1058, 976, 1092, 1060, 222, 1064, 1068, 78,
2693 967, 920, 967, 921, 922, 923, 924, 967, 1070, 967,
2694 1038, 1147, 829, 921, 922, 923, 924, 1080, 696, 920,
2695 1072, 921, 922, 923, 924, 577, 1122, 1083, 1134, 803,
2696 803, 1122, 89, 89, 1139, 939, 119, 119, 1110, 909,
2697 285, 1112, 910, 1040, 1151, 912, 967, 1156, 1177, 100,
2698 975, 100, 916, 1179, 1122, 919, 1182, 1184, 975, 1191,
2699 975, 1245, 1222, 100, 100, 1188, 285, 1192, 1023, 1194,
2700 1199, 222, 222, 920, 1121, 921, 922, 923, 924, 382,
2701 392, 392, 392, 1201, 455, 646, 976, 1207, 1208, 1215,
2702 1216, 648, 377, -734, -735, 394, 1233, 78, 971, 78,
2703 100, 100, 1142, 1238, 360, 696, 971, 78, 971, 333,
2704 939, 885, 741, 840, 1167, 100, 832, 78, 1022, 78,
2705 78, 939, 1023, 1108, 803, 803, 346, 347, 1024, 939,
2706 696, 696, 1174, 962, 803, 803, 803, 965, 100, 100,
2707 803, 803, 100, 874, 89, 965, 996, 100, 1227, 863,
2708 673, 1069, 1071, 631, 78, 1050, 518, 1249, 633, 1158,
2709 998, 635, 1102, 1159, 637, 353, 354, 355, 356, 357,
2710 358, 1160, 413, 997, 1166, 1097, 667, 976, 406, 1053,
2711 647, 1119, 975, 1141, 975, 649, 1137, 1082, 0, 975,
2712 0, 975, 119, 0, 0, 78, 0, 0, 0, 78,
2713 78, 0, 0, 78, 0, 0, 0, 78, 78, 0,
2714 0, 0, 0, 0, 78, 78, 0, 0, 0, 0,
2715 0, 0, 0, 0, 0, 119, 803, 119, 975, 0,
2716 971, 1045, 971, 1048, 803, 804, 0, 971, 0, 971,
2717 119, 0, 119, 681, 78, 0, 78, 78, 0, 0,
2718 0, 0, 0, 0, 939, 0, 100, 0, 0, 0,
2719 0, 803, 0, 285, 0, 0, 0, 0, 0, 965,
2720 0, 1205, 0, 0, 0, 0, 971, 100, 0, 100,
2721 100, 0, 0, 100, 0, 100, 696, 0, 0, 100,
2722 0, 100, 119, 0, 0, 0, 0, 119, 0, 0,
2723 0, 0, 0, 0, 100, 0, 100, 0, 0, 0,
2724 0, 119, 285, 0, 0, 1193, 1195, 0, 803, 0,
2725 0, 1200, 0, 1202, 1203, 0, 0, 0, 0, 1187,
2726 0, 804, 804, 0, 78, 0, 0, 273, 0, 920,
2727 0, 921, 922, 923, 924, 925, 78, 0, 0, 119,
2728 0, 78, 78, 119, 0, 119, 100, 100, 100, 100,
2729 100, 100, 100, 100, 926, 0, 0, 78, 0, 0,
2730 0, 0, 0, 100, 78, 100, 0, 0, 100, 0,
2731 0, 0, 0, 0, 0, 0, 78, 0, 928, 78,
2732 1221, 0, 0, 0, 803, 930, 931, 0, 803, 1178,
2733 1180, 1237, 1239, 1240, 1241, 1183, 0, 1185, 0, 1186,
2734 0, 100, 0, 100, 803, 0, 0, 100, 100, 100,
2735 932, 78, 1247, 0, 0, 0, 804, 804, 0, 0,
2736 78, 0, 0, 100, 0, 0, 804, 804, 804, 0,
2737 0, 0, 804, 804, 0, 0, 0, 0, 119, 0,
2738 803, 803, 0, 0, 0, 0, 857, 0, 0, 0,
2739 0, 100, 100, 0, 0, 285, 0, 0, 0, 0,
2740 865, 0, 867, 0, 0, 0, 100, 0, 920, 0,
2741 921, 922, 923, 924, 925, 0, 332, 0, 417, 0,
2742 0, 419, 420, 421, 0, 0, 0, 0, 0, 1232,
2743 1234, 1235, 1236, 926, 0, 0, 0, 0, 0, 285,
2744 0, 0, 100, 0, 0, 0, 0, 0, 0, 0,
2745 0, 0, 0, 0, 0, 1246, 0, 928, 804, 0,
2746 78, 100, 78, 929, 930, 931, 804, 0, 333, 334,
2747 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
2748 345, 0, 0, 0, 0, 346, 347, 0, 0, 932,
2749 0, 0, 933, 804, 0, 119, 0, 119, 78, 0,
2750 0, 78, 0, 0, 0, 0, 0, 0, 0, 237,
2751 0, 122, 0, 122, 0, 0, 0, 119, 348, 0,
2752 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
2753 0, 0, 0, 0, 0, 0, 0, 521, 0, 78,
2754 0, 0, 534, 0, 1003, 0, 0, 0, 0, 0,
2755 804, 0, 0, 0, 0, 0, 0, 0, 0, 100,
2756 0, 100, 122, 122, 285, 0, 286, 0, 0, 100,
2757 0, 0, 0, 0, 0, 78, 78, 0, 0, 100,
2758 0, 100, 100, 1030, 1031, 0, 0, 0, 0, 0,
2759 0, 0, 286, 119, 0, 0, 285, 119, 0, 0,
2760 0, 0, 0, 811, 0, 383, 393, 393, 0, 0,
2761 0, 0, 0, 0, 78, 78, 100, 0, 0, 0,
2762 0, 0, 0, 0, 0, 0, 804, 1073, 0, 0,
2763 804, 0, 0, 0, 0, 620, 622, 0, 0, 0,
2764 0, 0, 119, 0, 273, 119, 804, 0, 0, 0,
2765 0, 0, 0, 1088, 1089, 0, 0, 100, 0, 0,
2766 0, 100, 100, 0, 0, 100, 0, 0, 0, 100,
2767 100, 0, 0, 0, 0, 1111, 100, 100, 0, 0,
2768 0, 622, 804, 804, 273, 0, 920, 78, 921, 922,
2769 923, 924, 925, 0, 0, 0, 0, 0, 0, 811,
2770 811, 0, 0, 0, 0, 0, 100, 0, 100, 100,
2771 121, 926, 121, 0, 0, 0, 0, 0, 122, 333,
2772 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2773 678, 0, 0, 0, 0, 928, 346, 347, 0, 0,
2774 0, 929, 930, 931, 119, 0, 0, 0, 0, 119,
2775 0, 122, 0, 122, 0, 0, 1172, 0, 0, 0,
2776 0, 121, 121, 1176, 0, 119, 122, 932, 122, 118,
2777 933, 118, 119, 351, 352, 353, 354, 355, 356, 357,
2778 358, 0, 958, 0, 119, 0, 0, 119, 0, 286,
2779 0, 0, 0, 0, 811, 811, 100, 0, 0, 0,
2780 0, 0, 0, 0, 811, 811, 811, 0, 100, 0,
2781 811, 811, 0, 100, 100, 1013, 0, 0, 122, 119,
2782 118, 118, 0, 122, 284, 0, 0, 0, 119, 100,
2783 744, 0, 745, 0, 0, 0, 100, 122, 286, 0,
2784 538, 0, 0, 0, 0, 622, 0, 273, 100, 0,
2785 284, 100, 0, 0, 0, 0, 0, 0, 0, 85,
2786 0, 85, 0, 381, 391, 391, 391, 0, 0, 0,
2787 0, 0, 0, 0, 0, 122, 0, 0, 0, 122,
2788 392, 122, 0, 100, 0, 0, 0, 0, 0, 0,
2789 774, 0, 100, 0, 0, 0, 811, 0, 0, 0,
2790 0, 0, 0, 0, 811, 0, 0, 0, 0, 622,
2791 85, 85, 0, 0, 0, 0, 0, 121, 825, 0,
2792 0, 0, 0, 538, 538, 0, 0, 0, 119, 0,
2793 119, 811, 0, 847, 0, 0, 0, 0, 0, 0,
2794 0, 0, 0, 0, 0, 0, 0, 0, 0, 805,
2795 121, 0, 121, 378, 0, 0, 0, 0, 0, 0,
2796 0, 0, 0, 0, 0, 121, 119, 121, 0, 119,
2797 0, 0, 392, 806, 122, 0, 118, 0, 0, 0,
2798 0, 0, 0, 0, 875, 0, 0, 0, 811, 0,
2799 0, 286, 100, 0, 100, 0, 0, 0, 0, 0,
2800 0, 0, 0, 0, 0, 0, 0, 0, 0, 118,
2801 0, 118, 0, 807, 0, 0, 0, 121, 0, 0,
2802 0, 0, 121, 0, 118, 0, 118, 0, 0, 0,
2803 100, 0, 0, 100, 0, 286, 121, 0, 0, 121,
2804 0, 0, 0, 119, 119, 805, 805, 284, 920, 0,
2805 921, 922, 923, 924, 925, 0, 0, 913, 0, 0,
2806 0, 0, 0, 0, 811, 0, 85, 0, 811, 806,
2807 806, 100, 0, 926, 121, 0, 118, 273, 121, 0,
2808 121, 118, 0, 0, 811, 0, 0, 927, 0, 0,
2809 0, 122, 0, 122, 0, 118, 284, 928, 0, 85,
2810 0, 85, 0, 929, 930, 931, 0, 100, 100, 807,
2811 807, 0, 0, 122, 85, 0, 85, 0, 0, 0,
2812 811, 811, 121, 121, 0, 1020, 0, 0, 0, 932,
2813 0, 0, 933, 118, 0, 0, 0, 118, 0, 118,
2814 805, 805, 0, 0, 0, 0, 100, 100, 0, 0,
2815 805, 805, 805, 1035, 0, 119, 805, 805, 0, 0,
2816 286, 0, 0, 0, 806, 806, 85, 0, 0, 764,
2817 0, 85, 0, 121, 806, 806, 806, 0, 0, 0,
2818 806, 806, 0, 0, 0, 85, 0, 0, 532, 122,
2819 0, 0, 286, 122, 538, 0, 0, 0, 0, 0,
2820 0, 538, 538, 0, 807, 807, 0, 0, 538, 538,
2821 0, 0, 0, 0, 807, 807, 807, 0, 0, 100,
2822 807, 807, 0, 85, 0, 0, 0, 85, 0, 85,
2823 1104, 0, 118, 0, 0, 0, 0, 0, 122, 0,
2824 0, 122, 805, 1113, 0, 0, 0, 0, 0, 284,
2825 805, 0, 0, 0, 920, 0, 921, 922, 923, 924,
2826 925, 0, 0, 0, 0, 0, 806, 0, 0, 0,
2827 0, 532, 532, 0, 806, 0, 0, 805, 0, 926,
2828 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2829 121, 0, 121, 284, 0, 0, 0, 0, 0, 0,
2830 0, 806, 0, 928, 0, 0, 807, 0, 0, 929,
2831 930, 931, 121, 0, 807, 0, 0, 0, 0, 0,
2832 0, 0, 85, 0, 0, 0, 0, 0, 538, 0,
2833 0, 0, 0, 0, 805, 932, 0, 0, 933, 0,
2834 122, 807, 0, 0, 0, 122, 0, 0, 0, 118,
2835 0, 118, 0, 0, 0, 0, 0, 0, 806, 0,
2836 0, 122, 0, 0, 0, 0, 0, 0, 122, 0,
2837 0, 118, 0, 0, 0, 0, 0, 0, 0, 0,
2838 122, 0, 0, 122, 0, 0, 0, 0, 121, 0,
2839 0, 0, 121, 121, 0, 0, 0, 0, 807, 0,
2840 121, 121, 0, 0, 0, 0, 0, 121, 121, 0,
2841 805, 1014, 0, 0, 805, 122, 0, 0, 284, 0,
2842 0, 0, 0, 0, 122, 0, 808, 0, 0, 0,
2843 805, 0, 0, 0, 806, 0, 0, 121, 806, 85,
2844 121, 85, 0, 0, 0, 0, 0, 118, 0, 0,
2845 284, 118, 0, 0, 806, 809, 0, 0, 0, 0,
2846 0, 85, 0, 0, 0, 0, 805, 805, 0, 0,
2847 0, 0, 0, 0, 807, 0, 393, 0, 807, 0,
2848 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2849 806, 806, 0, 0, 807, 0, 118, 0, 0, 118,
2850 810, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2851 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2852 0, 0, 808, 808, 122, 0, 122, 121, 0, 0,
2853 807, 807, 0, 0, 0, 0, 0, 85, 0, 121,
2854 0, 85, 532, 0, 121, 0, 0, 0, 0, 532,
2855 532, 809, 809, 0, 0, 0, 532, 532, 0, 0,
2856 121, 0, 122, 0, 0, 122, 0, 121, 393, 0,
2857 0, 0, 0, 0, 0, 0, 0, 0, 0, 121,
2858 0, 0, 121, 0, 0, 0, 85, 0, 0, 85,
2859 0, 0, 0, 0, 0, 0, 810, 810, 118, 0,
2860 0, 0, 0, 118, 0, 0, 0, 0, 0, 0,
2861 0, 0, 0, 0, 121, 0, 0, 808, 808, 118,
2862 0, 0, 0, 121, 0, 0, 118, 808, 808, 808,
2863 0, 0, 0, 808, 808, 0, 0, 0, 118, 122,
2864 122, 118, 0, 0, 0, 0, 809, 809, 0, 0,
2865 0, 0, 0, 0, 0, 0, 809, 809, 809, 0,
2866 0, 0, 809, 809, 0, 0, 0, 0, 0, 1012,
2867 0, 0, 0, 118, 0, 0, 532, 0, 0, 0,
2868 0, 0, 118, 0, 0, 0, 0, 0, 85, 0,
2869 0, 810, 810, 85, 0, 0, 0, 0, 0, 0,
2870 0, 810, 810, 810, 0, 217, 217, 810, 810, 85,
2871 0, 0, 0, 0, 0, 0, 85, 0, 0, 808,
2872 0, 0, 0, 121, 0, 121, 0, 808, 85, 0,
2873 0, 85, 0, 0, 391, 0, 0, 250, 253, 254,
2874 255, 0, 0, 0, 217, 217, 0, 0, 809, 0,
2875 0, 122, 0, 0, 808, 0, 809, 303, 304, 1010,
2876 0, 121, 0, 85, 121, 0, 0, 0, 0, 0,
2877 0, 0, 85, 0, 0, 0, 0, 0, 23, 24,
2878 25, 26, 118, 809, 118, 0, 0, 0, 0, 217,
2879 0, 0, 0, 810, 32, 33, 34, 0, 0, 0,
2880 0, 810, 0, 0, 41, 42, 43, 44, 45, 0,
2881 0, 808, 0, 0, 0, 0, 0, 0, 0, 0,
2882 118, 0, 0, 118, 0, 0, 391, 0, 810, 0,
2883 0, 0, 0, 0, 0, 0, 0, 0, 121, 121,
2884 809, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2885 0, 0, 0, 0, 0, 792, 59, 60, 61, 62,
2886 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2887 0, 0, 85, 0, 85, 0, 0, 0, 0, 0,
2888 0, 0, 0, 0, 279, 810, 0, 808, 0, 0,
2889 0, 808, 0, 0, 0, 0, 217, 118, 118, 217,
2890 217, 217, 0, 303, 0, 0, 0, 808, 0, 0,
2891 85, 0, 0, 85, 0, 0, 809, 0, 0, 217,
2892 809, 217, 217, 0, 0, 0, 0, 0, 0, 0,
2893 0, 0, 0, 0, 0, 0, 809, 0, 0, 0,
2894 0, 0, 0, 808, 808, 0, 0, 0, 0, 0,
2895 121, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2896 0, 810, 0, 0, 0, 810, 0, 0, 0, 0,
2897 0, 0, 809, 809, 0, 0, 0, 0, 0, 0,
2898 0, 810, 0, 0, 0, 0, 0, 85, 85, 0,
2899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2900 0, 0, 0, 0, 0, 0, 0, 0, 0, 118,
2901 0, 0, 0, 0, 0, 217, 0, 810, 810, 0,
2902 533, 0, 540, 541, 542, 543, 544, 0, 0, 545,
2903 546, 547, 548, 549, 550, 551, 552, 553, 0, 0,
2904 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
2905 0, 0, 0, 217, 0, 0, 0, 0, 0, 0,
2906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2907 0, 0, 0, 0, 0, 0, 0, 333, 334, 335,
2908 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
2909 0, 0, 0, 0, 346, 347, 0, 0, 0, 85,
2910 0, 0, 0, 614, 614, 0, 0, 0, 0, 0,
2911 0, 0, 614, 217, 217, 0, 0, 0, 217, 0,
2912 614, 614, 217, 0, 0, 0, 0, 348, 255, 349,
2913 350, 351, 352, 353, 354, 355, 356, 357, 358, 0,
2914 0, 0, 0, 640, 0, 0, 0, 0, 614, 0,
2915 0, 0, 0, 237, 0, 0, 0, 0, 0, 217,
2916 0, 0, 217, 0, 0, 0, 0, 0, 0, -738,
2917 0, 0, 0, 217, 0, 0, 0, -738, -738, -738,
2918 0, 0, -738, -738, -738, 0, -738, 0, 0, 0,
2919 0, 670, 0, 0, -738, -738, -738, -738, -738, 0,
2920 0, 0, 0, 0, 0, 0, -738, -738, 217, -738,
2921 -738, -738, -738, -738, 0, 0, 0, 0, 0, 0,
2922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2923 0, 0, 0, 0, 0, 0, 0, -738, 0, 0,
2924 0, 0, 0, 0, 0, 0, -738, -738, -738, -738,
2925 -738, -738, -738, -738, -738, -738, -738, -738, -738, 0,
2926 0, 0, 0, -738, -738, -738, -738, 0, 747, -738,
2927 0, 0, 0, 0, 0, -738, 0, 0, 0, 0,
2928 0, 217, 0, 0, 0, 0, 0, 0, 0, -738,
2929 0, 217, -738, 0, 0, -116, -738, -738, -738, -738,
2930 -738, -738, -738, -738, -738, -738, -738, -738, 217, 0,
2931 217, 0, -738, -738, -738, -738, 0, 0, -738, -738,
2932 -738, 0, -738, 217, 0, 217, 0, 0, 0, -761,
2933 0, 0, 0, 0, 0, 0, 0, -761, -761, -761,
2934 0, 0, -761, -761, -761, 0, -761, 0, 0, 0,
2935 0, 0, 0, 0, -761, -761, -761, 0, 0, 0,
2936 0, 0, 0, 0, 0, 0, -761, -761, 217, -761,
2937 -761, -761, -761, -761, 614, 778, 0, 217, 0, 0,
2938 0, 614, 614, 0, 0, 0, 0, 217, 614, 614,
2939 0, 0, 0, 0, 0, 0, 217, -761, 0, 0,
2940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2941 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
2942 0, 0, 0, 0, 0, -761, -761, 0, 0, 0,
2943 0, 0, 0, 0, 0, 0, 614, 614, 0, 614,
2944 614, 23, 24, 25, 26, 0, 0, 0, 0, -761,
2945 0, 0, 0, 0, 0, 0, 0, 32, 33, 34,
2946 784, 0, 217, 0, 785, 0, 986, 41, 42, 43,
2947 44, 45, -761, -761, 0, 0, 0, 233, -761, 0,
2948 -761, 0, -761, 0, 0, 926, 0, 0, 0, 0,
2949 0, 0, 0, 0, 0, 0, 0, 0, 786, 787,
2950 0, 899, 0, 0, 0, 0, 788, 0, 614, 789,
2951 0, 0, 790, 791, 0, 980, 930, 0, 792, 59,
2952 1004, 61, 62, 63, 64, 65, 66, 0, 0, 0,
2953 0, 0, 0, 0, 0, 217, 0, 0, 0, 0,
2954 793, 0, 0, 0, 0, -761, 4, 279, 5, 6,
2955 7, 8, 9, 614, 0, 217, 10, 11, 0, 0,
2956 0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2957 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
2958 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2959 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
2960 38, 39, 40, 217, 41, 42, 43, 44, 45, 46,
2961 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2962 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
2963 0, 217, 0, 0, 0, 50, 51, 0, 0, 0,
2964 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
2965 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
2966 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2967 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2968 0, 0, 0, 0, 67, 68, 69, 0, 0, 0,
2969 0, 0, 0, 0, 0, 0, -761, 0, -761, 0,
2970 0, 0, 0, 0, 0, 0, 0, 0, 217, -631,
2971 0, 0, 0, 0, 0, 0, 0, -631, -631, -631,
2972 0, 217, -631, -631, -631, 0, -631, 0, 0, 0,
2973 0, 686, 0, 0, -631, 0, -631, -631, -631, 0,
2974 0, 0, 0, 0, 0, 0, -631, -631, 0, -631,
2975 -631, -631, -631, -631, 0, 0, 0, 0, 0, 0,
2976 0, 0, 0, 0, 333, 334, 335, 336, 337, 338,
2977 339, 340, 341, 342, 343, 344, 345, -631, 0, 0,
2978 0, 346, 347, 217, 0, 0, -631, -631, -631, -631,
2979 -631, -631, -631, -631, -631, -631, -631, -631, -631, 0,
2980 0, 0, 0, -631, -631, -631, -631, 0, -631, -631,
2981 0, 0, 0, 0, 348, -631, 349, 350, 351, 352,
2982 353, 354, 355, 356, 357, 358, 0, 0, 0, -631,
2983 0, 0, -631, -257, 0, -631, -631, -631, -631, -631,
2984 -631, -631, -631, -631, -631, -631, -631, -631, 0, 0,
2985 0, 0, 0, -631, -631, -631, -634, 0, -631, -631,
2986 -631, 0, -631, 0, -634, -634, -634, 0, 0, -634,
2987 -634, -634, 0, -634, 0, 0, 0, 0, 686, 0,
2988 0, -634, 0, -634, -634, -634, 0, 0, 0, 0,
2989 0, 0, 0, -634, -634, 0, -634, -634, -634, -634,
2990 -634, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2991 0, 333, 334, 335, 336, 337, 338, 339, 340, 341,
2992 342, 343, 344, 345, -634, 0, 0, 0, 346, 347,
2993 0, 0, 0, -634, -634, -634, -634, -634, -634, -634,
2994 -634, -634, -634, -634, -634, -634, 0, 0, 0, 0,
2995 -634, -634, -634, -634, 0, -634, -634, 0, 0, 0,
2996 0, 348, -634, 349, 350, 351, 352, 353, 354, 355,
2997 356, 357, 358, 0, 0, 0, -634, 0, 0, -634,
2998 0, 0, -634, -634, -634, -634, -634, -634, -634, -634,
2999 -634, -634, -634, -634, -634, 0, 0, 0, 0, 0,
3000 -634, -634, -634, -739, 0, -634, -634, -634, 0, -634,
3001 0, -739, -739, -739, 0, 0, -739, -739, -739, 0,
3002 -739, 0, 0, 0, 0, 0, 0, 0, -739, -739,
3003 -739, -739, -739, 0, 0, 0, 0, 0, 0, 0,
3004 -739, -739, 0, -739, -739, -739, -739, -739, 0, 0,
3005 0, 0, 0, 0, 0, 0, 0, 0, 333, 334,
3006 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
3007 345, -739, 0, 0, 0, 346, 347, 0, 0, 0,
3008 -739, -739, -739, -739, -739, -739, -739, -739, -739, -739,
3009 -739, -739, -739, 0, 0, 0, 0, -739, -739, -739,
3010 -739, 0, 0, -739, 0, 0, 0, 0, 348, -739,
3011 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
3012 0, 0, 0, -739, 0, 0, -739, 0, 0, 0,
3013 -739, -739, -739, -739, -739, -739, -739, -739, -739, -739,
3014 -739, -739, 0, 0, 0, 0, -739, -739, -739, -739,
3015 -740, 0, -739, -739, -739, 0, -739, 0, -740, -740,
3016 -740, 0, 0, -740, -740, -740, 0, -740, 0, 0,
3017 0, 0, 0, 0, 0, -740, -740, -740, -740, -740,
3018 0, 0, 0, 0, 0, 0, 0, -740, -740, 0,
3019 -740, -740, -740, -740, -740, 0, 0, 0, 0, 0,
3020 0, 0, 0, 0, 0, 333, 334, 335, 336, 337,
3021 338, 339, 340, 341, 342, 343, -762, -762, -740, 0,
3022 0, 0, 346, 347, 0, 0, 0, -740, -740, -740,
3023 -740, -740, -740, -740, -740, -740, -740, -740, -740, -740,
3024 0, 0, 0, 0, -740, -740, -740, -740, 0, 0,
3025 -740, 0, 0, 0, 0, 0, -740, 349, 350, 351,
3026 352, 353, 354, 355, 356, 357, 358, 0, 0, 0,
3027 -740, 0, 0, -740, 0, 0, 0, -740, -740, -740,
3028 -740, -740, -740, -740, -740, -740, -740, -740, -740, 0,
3029 0, 0, 0, -740, -740, -740, -740, -311, 0, -740,
3030 -740, -740, 0, -740, 0, -311, -311, -311, 0, 0,
3031 -311, -311, -311, 0, -311, 0, 0, 0, 0, 0,
3032 0, 0, -311, 0, -311, -311, -311, 0, 0, 0,
3033 0, 0, 0, 0, -311, -311, 0, -311, -311, -311,
3034 -311, -311, 0, 0, 0, 0, 0, 0, 0, 0,
3035 0, 0, 333, 334, 335, 336, 337, 338, 339, 340,
3036 0, 342, 343, 0, 0, -311, 0, 0, 0, 346,
3037 347, 0, 0, 0, -311, -311, -311, -311, -311, -311,
3038 -311, -311, -311, -311, -311, -311, -311, 0, 0, 0,
3039 0, -311, -311, -311, -311, 0, 748, -311, 0, 0,
3040 0, 0, 0, -311, 349, 350, 351, 352, 353, 354,
3041 355, 356, 357, 358, 0, 0, 0, -311, 0, 0,
3042 -311, 0, 0, -118, -311, -311, -311, -311, -311, -311,
3043 -311, -311, -311, -311, -311, -311, 0, 0, 0, 0,
3044 0, -311, -311, -311, -450, 0, -311, -311, -311, 0,
3045 -311, 0, -450, -450, -450, 0, 0, -450, -450, -450,
3046 0, -450, 0, 0, 0, 0, 0, 0, 0, -450,
3047 -450, -450, -450, 0, 0, 0, 0, 0, 0, 0,
3048 0, -450, -450, 0, -450, -450, -450, -450, -450, 0,
3049 0, 0, 0, 0, 0, 0, 0, 0, 0, 333,
3050 -762, -762, -762, -762, 338, 339, 0, 0, -762, -762,
3051 0, 0, -450, 0, 0, 0, 346, 347, 0, 0,
3052 0, -450, -450, -450, -450, -450, -450, -450, -450, -450,
3053 -450, -450, -450, -450, 0, 0, 0, 0, -450, -450,
3054 -450, -450, 0, 0, -450, 0, 0, 0, 0, 0,
3055 -450, 349, 350, 351, 352, 353, 354, 355, 356, 357,
3056 358, 0, 0, 0, -450, 0, 0, 0, 0, 0,
3057 0, -450, 0, -450, -450, -450, -450, -450, -450, -450,
3058 -450, -450, -450, 0, 0, 0, 0, -450, -450, -450,
3059 -450, -303, 233, -450, -450, -450, 0, -450, 0, -303,
3060 -303, -303, 0, 0, -303, -303, -303, 0, -303, 0,
3061 0, 0, 0, 0, 0, 0, -303, 0, -303, -303,
3062 -303, 0, 0, 0, 0, 0, 0, 0, -303, -303,
3063 0, -303, -303, -303, -303, -303, 0, 0, 0, 0,
3064 0, 0, 0, 0, 0, 0, 333, 334, 335, 336,
3065 337, 338, 339, 0, 0, 342, 343, 0, 0, -303,
3066 0, 0, 0, 346, 347, 0, 0, 0, -303, -303,
3067 -303, -303, -303, -303, -303, -303, -303, -303, -303, -303,
3068 -303, 0, 0, 0, 0, -303, -303, -303, -303, 0,
3069 0, -303, 0, 0, 0, 0, 0, -303, 349, 350,
3070 351, 352, 353, 354, 355, 356, 357, 358, 0, 0,
3071 0, -303, 0, 0, -303, 0, 0, 0, -303, -303,
3072 -303, -303, -303, -303, -303, -303, -303, -303, -303, -303,
3073 0, 0, 0, 0, 0, -303, -303, -303, -761, 0,
3074 -303, -303, -303, 0, -303, 0, -761, -761, -761, 0,
3075 0, -761, -761, -761, 0, -761, 0, 0, 0, 0,
3076 0, 0, 0, -761, -761, -761, -761, 0, 0, 0,
3077 0, 0, 0, 0, 0, -761, -761, 0, -761, -761,
3078 -761, -761, -761, 0, 0, 0, 0, 0, 0, 0,
3079 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3080 0, 0, 0, 0, 0, 0, -761, 0, 0, 0,
3081 0, 0, 0, 0, 0, -761, -761, -761, -761, -761,
3082 -761, -761, -761, -761, -761, -761, -761, -761, 0, 0,
3083 0, 0, -761, -761, -761, -761, 0, 0, -761, 0,
3084 0, 0, 0, 0, -761, 0, 0, 0, 0, 0,
3085 0, 0, 0, 0, 0, 0, 0, 0, -761, 0,
3086 0, 0, 0, 0, 0, -761, 0, -761, -761, -761,
3087 -761, -761, -761, -761, -761, -761, -761, 0, 0, 0,
3088 0, -761, -761, -761, -761, -318, 233, -761, -761, -761,
3089 0, -761, 0, -318, -318, -318, 0, 0, -318, -318,
3090 -318, 0, -318, 0, 0, 0, 0, 0, 0, 0,
3091 -318, 0, -318, -318, 0, 0, 0, 0, 0, 0,
3092 0, 0, -318, -318, 0, -318, -318, -318, -318, -318,
3093 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3094 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3095 0, 0, 0, -318, 0, 0, 0, 0, 0, 0,
3096 0, 0, -318, -318, -318, -318, -318, -318, -318, -318,
3097 -318, -318, -318, -318, -318, 0, 0, 0, 0, -318,
3098 -318, -318, -318, 0, 0, -318, 0, 0, 0, 0,
3099 0, -318, 0, 0, 0, 0, 0, 0, 0, 0,
3100 0, 0, 0, 0, 0, -318, 0, 0, 0, 0,
3101 0, 0, -318, 0, -318, -318, -318, -318, -318, -318,
3102 -318, -318, -318, -318, 0, 0, 0, 0, 0, -318,
3103 -318, -318, -738, 230, -318, -318, -318, 0, -318, 0,
3104 -738, -738, -738, 0, 0, 0, -738, -738, 0, -738,
3105 0, 0, 0, 0, 0, 0, 0, -738, -738, 0,
3106 0, 0, 0, 0, 0, 0, 0, 0, 0, -738,
3107 -738, 0, -738, -738, -738, -738, -738, 0, 0, 0,
3108 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3109 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3110 -738, 0, 0, 0, 0, 0, 0, 0, 0, -738,
3111 -738, -738, -738, -738, -738, -738, -738, -738, -738, -738,
3112 -738, -738, 0, 0, 0, 0, -738, -738, -738, -738,
3113 0, 692, 0, 0, 0, 0, 0, 0, 0, 0,
3114 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3115 0, 0, -738, 0, 0, 0, 0, 0, -116, -738,
3116 0, -738, -738, -738, -738, -738, -738, -738, -738, -738,
3117 -738, 0, 0, 0, 0, -738, -738, -738, -107, -738,
3118 0, -738, 0, -738, 0, -738, 0, -738, -738, -738,
3119 0, 0, 0, -738, -738, 0, -738, 0, 0, 0,
3120 0, 0, 0, 0, -738, -738, 0, 0, 0, 0,
3121 0, 0, 0, 0, 0, 0, -738, -738, 0, -738,
3122 -738, -738, -738, -738, 0, 0, 0, 0, 0, 0,
3123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3124 0, 0, 0, 0, 0, 0, 0, -738, 0, 0,
3125 0, 0, 0, 0, 0, 0, -738, -738, -738, -738,
3126 -738, -738, -738, -738, -738, -738, -738, -738, -738, 0,
3127 0, 0, 0, -738, -738, -738, -738, 0, 692, 0,
3128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3129 0, 0, 0, 0, 0, 0, 0, 0, 0, -738,
3130 0, 0, 0, 0, 0, -116, -738, 0, -738, -738,
3131 -738, -738, -738, -738, -738, -738, -738, -738, 0, 0,
3132 0, 0, -738, -738, -738, -738, -311, 0, -738, 0,
3133 -738, 0, -738, 0, -311, -311, -311, 0, 0, 0,
3134 -311, -311, 0, -311, 0, 0, 0, 0, 0, 0,
3135 0, -311, 0, 0, 0, 0, 0, 0, 0, 0,
3136 0, 0, 0, -311, -311, 0, -311, -311, -311, -311,
3137 -311, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3138 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3139 0, 0, 0, 0, -311, 0, 0, 0, 0, 0,
3140 0, 0, 0, -311, -311, -311, -311, -311, -311, -311,
3141 -311, -311, -311, -311, -311, -311, 0, 0, 0, 0,
3142 -311, -311, -311, -311, 0, 693, 0, 0, 0, 0,
3143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3144 0, 0, 0, 0, 0, 0, -311, 0, 0, 0,
3145 0, 0, -118, -311, 0, -311, -311, -311, -311, -311,
3146 -311, -311, -311, -311, -311, 0, 0, 0, 0, 0,
3147 -311, -311, -109, -311, 0, -311, 0, -311, 0, -311,
3148 0, -311, -311, -311, 0, 0, 0, -311, -311, 0,
3149 -311, 0, 0, 0, 0, 0, 0, 0, -311, 0,
3150 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3151 -311, -311, 0, -311, -311, -311, -311, -311, 0, 0,
3152 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3154 0, -311, 0, 0, 0, 0, 0, 0, 0, 0,
3155 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
3156 -311, -311, -311, 0, 0, 0, 0, -311, -311, -311,
3157 -311, 0, 693, 0, 0, 0, 0, 0, 0, 0,
3158 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3159 0, 0, 0, -311, 0, 0, 0, 0, 0, -118,
3160 -311, 0, -311, -311, -311, -311, -311, -311, -311, -311,
3161 -311, -311, 0, 0, 0, 0, 0, -311, -311, -311,
3162 0, 0, -311, 0, -311, 257, -311, 5, 6, 7,
3163 8, 9, -761, -761, -761, 10, 11, 0, 0, -761,
3164 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3165 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
3166 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
3167 29, 258, 31, 32, 33, 34, 35, 36, 37, 38,
3168 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3169 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3170 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3171 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3172 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
3173 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
3174 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3175 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3176 0, 0, 0, 67, 68, 69, 0, 0, 0, 0,
3177 0, 0, 0, 0, 0, -761, 257, -761, 5, 6,
3178 7, 8, 9, 0, 0, -761, 10, 11, 0, -761,
3179 -761, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3180 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3181 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
3182 28, 29, 258, 31, 32, 33, 34, 35, 36, 37,
3183 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3184 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3185 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3186 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3187 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
3188 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
3189 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3190 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3191 0, 0, 0, 0, 67, 68, 69, 0, 0, 0,
3192 0, 0, 0, 0, 0, 0, -761, 257, -761, 5,
3193 6, 7, 8, 9, 0, 0, -761, 10, 11, 0,
3194 0, -761, 12, -761, 13, 14, 15, 16, 17, 18,
3195 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
3196 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
3197 0, 28, 29, 258, 31, 32, 33, 34, 35, 36,
3198 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3199 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3200 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3201 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3202 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
3203 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
3204 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3206 0, 0, 0, 0, 0, 67, 68, 69, 0, 0,
3207 0, 0, 0, 0, 0, 0, 0, -761, 257, -761,
3208 5, 6, 7, 8, 9, 0, 0, -761, 10, 11,
3209 0, 0, -761, 12, 0, 13, 14, 15, 16, 17,
3210 18, 19, -761, 0, 0, 0, 0, 20, 21, 22,
3211 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
3212 0, 0, 28, 29, 258, 31, 32, 33, 34, 35,
3213 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3214 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3215 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3216 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3217 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
3218 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
3219 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3221 0, 0, 0, 0, 0, 0, 67, 68, 69, 0,
3222 0, 0, 0, 0, 0, 0, 0, 0, -761, 257,
3223 -761, 5, 6, 7, 8, 9, 0, 0, -761, 10,
3224 11, 0, 0, -761, 12, 0, 13, 14, 15, 16,
3225 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
3226 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3227 0, 0, 0, 28, 29, 258, 31, 32, 33, 34,
3228 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3229 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3230 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3231 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3232 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
3233 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
3234 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3235 0, 0, 0, 0, 0, 257, 0, 5, 6, 7,
3236 8, 9, 0, -761, -761, 10, 11, 67, 68, 69,
3237 12, 0, 13, 14, 15, 16, 17, 18, 19, -761,
3238 0, -761, 0, 0, 20, 21, 22, 23, 24, 25,
3239 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
3240 29, 258, 31, 32, 33, 34, 35, 36, 37, 38,
3241 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3242 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3243 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3244 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3245 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
3246 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
3247 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3248 0, 257, 0, 5, 6, 7, 8, 9, 0, 0,
3249 0, 10, 11, 67, 68, 69, 12, 0, 13, 14,
3250 15, 16, 17, 18, 19, -761, 0, -761, 0, 0,
3251 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
3252 0, 0, 0, 0, 0, 28, 29, 258, 31, 32,
3253 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3254 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3255 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3257 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
3258 0, 259, 54, 0, 55, 56, 0, 57, 0, 0,
3259 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3260 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3261 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
3262 68, 69, 0, 0, 0, 0, 0, 0, 0, -761,
3263 0, -761, 257, -761, 5, 6, 7, 8, 9, 0,
3264 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
3265 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
3266 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
3267 27, 0, 0, 0, 0, 0, 28, 29, 258, 31,
3268 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3269 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3270 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3272 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
3273 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
3274 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3275 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3277 67, 68, 69, 0, 0, 0, 0, 0, 0, 0,
3278 -761, 0, -761, 4, -761, 5, 6, 7, 8, 9,
3279 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
3280 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3281 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3282 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
3283 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3284 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3285 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3286 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3287 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3288 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
3289 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3290 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3291 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3292 0, 67, 68, 69, 0, 0, -761, 0, 0, 0,
3293 0, 0, 0, -761, 257, -761, 5, 6, 7, 8,
3294 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
3295 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
3296 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
3297 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
3298 258, 31, 32, 33, 34, 35, 36, 37, 38, 39,
3299 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3300 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3301 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3302 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3303 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3304 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3305 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3306 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3307 0, 0, 67, 68, 69, 0, 0, -761, 0, 0,
3308 0, 0, 0, 0, -761, 257, -761, 5, 6, 7,
3309 8, 9, 0, 0, -761, 10, 11, 0, 0, 0,
3310 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3311 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
3312 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
3313 29, 258, 31, 32, 33, 34, 35, 36, 37, 38,
3314 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3315 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3316 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3317 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3318 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
3319 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
3320 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3321 0, 257, 0, 5, 6, 7, 8, 9, 0, 0,
3322 0, 10, 11, 67, 68, 69, 12, 0, 13, 14,
3323 15, 16, 17, 18, 19, -761, 0, -761, 0, 0,
3324 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
3325 0, 0, 0, 0, 0, 28, 29, 258, 31, 32,
3326 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3327 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3328 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3329 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3330 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
3331 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
3332 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3333 -761, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3334 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3335 68, 69, 12, 0, 13, 14, 15, 16, 17, 18,
3336 19, -761, 0, -761, 0, 0, 20, 21, 22, 23,
3337 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3338 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3339 37, 38, 39, 40, 207, 41, 42, 43, 44, 45,
3340 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3341 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3342 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3343 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3344 55, 56, 0, 210, 211, 212, 58, 59, 213, 61,
3345 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3346 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3347 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3348 13, 14, 15, 16, 17, 18, 19, 0, 0, 237,
3349 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3350 0, 27, 0, 0, 0, 0, 0, 0, 29, 0,
3351 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3352 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3353 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3355 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3356 208, 0, 0, 209, 54, 0, 55, 56, 0, 0,
3357 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3358 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3359 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3360 11, 67, 68, 69, 12, 0, 13, 14, 15, 16,
3361 17, 18, 19, 305, 0, 306, 0, 0, 20, 21,
3362 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3363 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3364 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3365 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3366 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3367 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3368 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
3369 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
3370 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3371 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3372 8, 9, 0, 0, 0, 10, 11, 67, 68, 69,
3373 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3374 0, 237, 0, 0, 20, 21, 22, 23, 24, 25,
3375 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
3376 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
3377 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3378 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3379 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3380 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3381 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
3382 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
3383 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3384 0, 0, 0, 5, 6, 7, 8, 9, 0, 0,
3385 0, 10, 11, 67, 68, 69, 12, 0, 13, 14,
3386 15, 16, 17, 18, 19, 503, 0, 0, 0, 0,
3387 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
3388 0, 0, 0, 0, 0, 28, 29, 258, 31, 32,
3389 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3390 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3391 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3393 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
3394 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
3395 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3397 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
3398 68, 69, 0, 0, 0, 0, 0, 0, 0, 0,
3399 0, 503, 126, 127, 128, 129, 130, 131, 132, 133,
3400 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
3401 144, 145, 146, 147, 148, 149, 0, 0, 0, 150,
3402 151, 152, 395, 396, 397, 398, 157, 158, 159, 0,
3403 0, 0, 0, 0, 160, 161, 162, 163, 399, 400,
3404 401, 402, 168, 37, 38, 403, 40, 0, 0, 0,
3405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3406 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3407 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3408 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3409 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3411 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3412 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3413 198, 0, 0, 0, 0, 0, 199, 404, 126, 127,
3414 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3415 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
3416 148, 149, 0, 0, 0, 150, 151, 152, 153, 154,
3417 155, 156, 157, 158, 159, 0, 0, 0, 0, 0,
3418 160, 161, 162, 163, 164, 165, 166, 167, 168, 288,
3419 289, 169, 290, 0, 0, 0, 0, 0, 0, 0,
3420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3421 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3422 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3423 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3424 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3425 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3426 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3427 193, 194, 195, 196, 0, 197, 198, 0, 0, 0,
3428 0, 0, 199, 126, 127, 128, 129, 130, 131, 132,
3429 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
3430 143, 144, 145, 146, 147, 148, 149, 0, 0, 0,
3431 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
3432 0, 0, 0, 0, 0, 160, 161, 162, 163, 164,
3433 165, 166, 167, 168, 239, 0, 169, 0, 0, 0,
3434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3435 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
3436 175, 176, 177, 178, 0, 0, 179, 180, 0, 0,
3437 0, 0, 181, 182, 183, 184, 0, 0, 0, 0,
3438 0, 0, 0, 0, 0, 0, 0, 185, 186, 0,
3439 0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
3440 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
3441 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
3442 197, 198, 0, 0, 0, 0, 0, 199, 126, 127,
3443 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3444 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
3445 148, 149, 0, 0, 0, 150, 151, 152, 153, 154,
3446 155, 156, 157, 158, 159, 0, 0, 0, 0, 0,
3447 160, 161, 162, 163, 164, 165, 166, 167, 168, 0,
3448 0, 169, 0, 0, 0, 0, 0, 0, 0, 0,
3449 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3450 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3451 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3452 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3453 0, 0, 185, 186, 0, 0, 59, 0, 0, 0,
3454 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3455 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3456 193, 194, 195, 196, 0, 197, 198, 0, 0, 0,
3457 0, 0, 199, 126, 127, 128, 129, 130, 131, 132,
3458 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
3459 143, 144, 145, 146, 147, 148, 149, 0, 0, 0,
3460 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
3461 0, 0, 0, 0, 0, 160, 161, 162, 163, 164,
3462 165, 166, 167, 168, 0, 0, 169, 0, 0, 0,
3463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3464 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
3465 175, 176, 177, 178, 0, 0, 179, 180, 0, 0,
3466 0, 0, 181, 182, 183, 184, 0, 0, 0, 0,
3467 0, 0, 0, 0, 0, 0, 0, 185, 186, 0,
3468 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3469 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
3470 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
3471 197, 198, 5, 6, 7, 0, 9, 199, 0, 0,
3472 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
3473 245, 246, 18, 19, 0, 0, 0, 0, 0, 20,
3474 247, 248, 23, 24, 25, 26, 0, 0, 206, 0,
3475 0, 0, 0, 0, 0, 277, 0, 0, 32, 33,
3476 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3477 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3478 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3480 0, 0, 0, 0, 0, 0, 0, 278, 0, 0,
3481 209, 54, 0, 55, 56, 0, 0, 0, 0, 58,
3482 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3483 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3484 0, 5, 6, 7, 0, 9, 0, 0, 279, 10,
3485 11, 0, 0, 0, 12, 280, 13, 14, 15, 245,
3486 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3487 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3488 0, 0, 0, 0, 277, 0, 0, 32, 33, 34,
3489 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3490 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3491 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3492 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3493 0, 0, 0, 0, 0, 0, 278, 0, 0, 209,
3494 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
3495 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3496 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3497 5, 6, 7, 8, 9, 0, 0, 279, 10, 11,
3498 0, 0, 0, 12, 526, 13, 14, 15, 16, 17,
3499 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3500 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
3501 0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
3502 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3503 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3504 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3505 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3506 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
3507 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
3508 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3509 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3510 9, 0, 0, 0, 10, 11, 67, 68, 69, 12,
3511 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
3512 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
3513 0, 0, 206, 0, 0, 0, 0, 0, 0, 29,
3514 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3515 40, 207, 41, 42, 43, 44, 45, 46, 47, 0,
3516 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3517 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3518 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3519 0, 208, 0, 0, 209, 54, 0, 55, 56, 0,
3520 210, 211, 212, 58, 59, 213, 61, 62, 63, 64,
3521 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3522 0, 0, 5, 6, 7, 8, 9, 0, 0, 0,
3523 10, 11, 67, 214, 69, 12, 0, 13, 14, 15,
3524 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
3525 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
3526 0, 0, 0, 0, 28, 29, 0, 31, 32, 33,
3527 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3528 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3529 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3530 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3531 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
3532 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3533 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3534 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3535 7, 0, 9, 0, 0, 0, 10, 11, 67, 68,
3536 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3537 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3538 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
3539 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3540 38, 39, 40, 207, 41, 42, 43, 44, 45, 46,
3541 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3542 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3543 0, 0, 0, 0, 0, 50, 439, 0, 0, 0,
3544 0, 0, 0, 208, 0, 0, 209, 54, 0, 55,
3545 56, 0, 210, 211, 212, 58, 59, 213, 61, 62,
3546 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3547 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3548 0, 0, 10, 11, 67, 214, 69, 12, 0, 13,
3549 14, 15, 245, 246, 18, 19, 0, 0, 0, 0,
3550 0, 20, 247, 248, 23, 24, 25, 26, 0, 0,
3551 206, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3552 32, 33, 34, 35, 36, 37, 38, 39, 40, 207,
3553 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3554 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3555 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3556 0, 50, 51, 0, 0, 0, 0, 0, 0, 208,
3557 0, 0, 209, 54, 0, 55, 56, 0, 621, 211,
3558 212, 58, 59, 213, 61, 62, 63, 64, 65, 66,
3559 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3560 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3561 67, 214, 69, 12, 0, 13, 14, 15, 245, 246,
3562 18, 19, 0, 0, 0, 0, 0, 20, 247, 248,
3563 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
3564 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3565 36, 37, 38, 39, 40, 207, 41, 42, 43, 44,
3566 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3567 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3568 0, 0, 0, 0, 0, 0, 0, 50, 439, 0,
3569 0, 0, 0, 0, 0, 208, 0, 0, 209, 54,
3570 0, 55, 56, 0, 621, 211, 212, 58, 59, 213,
3571 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3572 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3573 9, 0, 0, 0, 10, 11, 67, 214, 69, 12,
3574 0, 13, 14, 15, 245, 246, 18, 19, 0, 0,
3575 0, 0, 0, 20, 247, 248, 23, 24, 25, 26,
3576 0, 0, 206, 0, 0, 0, 0, 0, 0, 29,
3577 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3578 40, 207, 41, 42, 43, 44, 45, 46, 47, 0,
3579 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3581 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3582 0, 208, 0, 0, 209, 54, 0, 55, 56, 0,
3583 210, 211, 0, 58, 59, 213, 61, 62, 63, 64,
3584 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3585 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3586 10, 11, 67, 214, 69, 12, 0, 13, 14, 15,
3587 245, 246, 18, 19, 0, 0, 0, 0, 0, 20,
3588 247, 248, 23, 24, 25, 26, 0, 0, 206, 0,
3589 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3590 34, 35, 36, 37, 38, 39, 40, 207, 41, 42,
3591 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3592 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3593 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3594 51, 0, 0, 0, 0, 0, 0, 208, 0, 0,
3595 209, 54, 0, 55, 56, 0, 0, 211, 212, 58,
3596 59, 213, 61, 62, 63, 64, 65, 66, 0, 0,
3597 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3598 7, 0, 9, 0, 0, 0, 10, 11, 67, 214,
3599 69, 12, 0, 13, 14, 15, 245, 246, 18, 19,
3600 0, 0, 0, 0, 0, 20, 247, 248, 23, 24,
3601 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
3602 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3603 38, 39, 40, 207, 41, 42, 43, 44, 45, 46,
3604 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3605 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3606 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3607 0, 0, 0, 208, 0, 0, 209, 54, 0, 55,
3608 56, 0, 621, 211, 0, 58, 59, 213, 61, 62,
3609 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3610 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3611 0, 0, 10, 11, 67, 214, 69, 12, 0, 13,
3612 14, 15, 245, 246, 18, 19, 0, 0, 0, 0,
3613 0, 20, 247, 248, 23, 24, 25, 26, 0, 0,
3614 206, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3615 32, 33, 34, 35, 36, 37, 38, 39, 40, 207,
3616 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3617 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3618 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3619 0, 50, 51, 0, 0, 0, 0, 0, 0, 208,
3620 0, 0, 209, 54, 0, 55, 56, 0, 0, 211,
3621 0, 58, 59, 213, 61, 62, 63, 64, 65, 66,
3622 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3623 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3624 67, 214, 69, 12, 0, 13, 14, 15, 16, 17,
3625 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3626 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
3627 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3628 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3629 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3630 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3631 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3632 0, 0, 0, 0, 0, 208, 0, 0, 209, 54,
3633 0, 55, 56, 0, 519, 0, 0, 58, 59, 60,
3634 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3635 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3636 9, 0, 0, 0, 10, 11, 67, 214, 69, 12,
3637 0, 13, 14, 15, 245, 246, 18, 19, 0, 0,
3638 0, 0, 0, 20, 247, 248, 23, 24, 25, 26,
3639 0, 0, 206, 0, 0, 0, 0, 0, 0, 29,
3640 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3641 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3642 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3643 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3644 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3645 0, 208, 0, 0, 209, 54, 0, 55, 56, 0,
3646 773, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3647 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3648 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3649 10, 11, 67, 214, 69, 12, 0, 13, 14, 15,
3650 245, 246, 18, 19, 0, 0, 0, 0, 0, 20,
3651 247, 248, 23, 24, 25, 26, 0, 0, 206, 0,
3652 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3653 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3654 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3655 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3656 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3657 51, 0, 0, 0, 0, 0, 0, 208, 0, 0,
3658 209, 54, 0, 55, 56, 0, 519, 0, 0, 58,
3659 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3660 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3661 7, 0, 9, 0, 0, 0, 10, 11, 67, 214,
3662 69, 12, 0, 13, 14, 15, 245, 246, 18, 19,
3663 0, 0, 0, 0, 0, 20, 247, 248, 23, 24,
3664 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
3665 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3666 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3667 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3668 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3669 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3670 0, 0, 0, 208, 0, 0, 209, 54, 0, 55,
3671 56, 0, 846, 0, 0, 58, 59, 60, 61, 62,
3672 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3673 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3674 0, 0, 10, 11, 67, 214, 69, 12, 0, 13,
3675 14, 15, 245, 246, 18, 19, 0, 0, 0, 0,
3676 0, 20, 247, 248, 23, 24, 25, 26, 0, 0,
3677 206, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3678 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3679 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3680 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3681 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3682 0, 50, 51, 0, 0, 0, 0, 0, 0, 208,
3683 0, 0, 209, 54, 0, 55, 56, 0, 1019, 0,
3684 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3685 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3686 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3687 67, 214, 69, 12, 0, 13, 14, 15, 245, 246,
3688 18, 19, 0, 0, 0, 0, 0, 20, 247, 248,
3689 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
3690 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3691 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3692 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3693 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3694 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3695 0, 0, 0, 0, 0, 208, 0, 0, 209, 54,
3696 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
3697 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3698 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3699 9, 0, 0, 0, 10, 11, 67, 214, 69, 12,
3700 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
3701 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
3702 0, 0, 206, 0, 0, 0, 0, 0, 0, 29,
3703 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3704 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3705 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3706 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3707 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3708 0, 208, 0, 0, 209, 54, 0, 55, 56, 0,
3709 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3710 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3711 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3712 10, 11, 67, 214, 69, 12, 0, 13, 14, 15,
3713 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
3714 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
3715 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3716 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3717 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3718 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3719 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3720 51, 0, 0, 0, 0, 0, 0, 208, 0, 0,
3721 209, 54, 0, 55, 56, 0, 0, 0, 0, 58,
3722 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3723 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3724 7, 0, 9, 0, 0, 0, 10, 11, 67, 68,
3725 69, 12, 0, 13, 14, 15, 245, 246, 18, 19,
3726 0, 0, 0, 0, 0, 20, 247, 248, 23, 24,
3727 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
3728 0, 277, 0, 0, 32, 33, 34, 35, 36, 37,
3729 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3730 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3731 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3732 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3733 0, 0, 0, 278, 0, 0, 328, 54, 0, 55,
3734 56, 0, 329, 0, 0, 58, 59, 60, 61, 62,
3735 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3736 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3737 0, 0, 0, 12, 279, 13, 14, 15, 245, 246,
3738 18, 19, 0, 0, 0, 0, 0, 20, 247, 248,
3739 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
3740 0, 0, 0, 277, 0, 0, 32, 33, 34, 35,
3741 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3742 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3743 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3744 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3745 0, 0, 0, 0, 0, 376, 0, 0, 53, 54,
3746 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
3747 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3748 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3749 10, 11, 0, 0, 0, 12, 279, 13, 14, 15,
3750 245, 246, 18, 19, 0, 0, 0, 0, 0, 20,
3751 247, 248, 23, 24, 25, 26, 0, 0, 206, 0,
3752 0, 0, 0, 0, 0, 277, 0, 0, 32, 33,
3753 34, 384, 36, 37, 38, 385, 40, 0, 41, 42,
3754 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3755 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3756 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3757 0, 0, 0, 386, 0, 0, 0, 387, 0, 0,
3758 209, 54, 0, 55, 56, 0, 0, 0, 0, 58,
3759 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3760 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3761 0, 0, 10, 11, 0, 0, 0, 12, 279, 13,
3762 14, 15, 245, 246, 18, 19, 0, 0, 0, 0,
3763 0, 20, 247, 248, 23, 24, 25, 26, 0, 0,
3764 206, 0, 0, 0, 0, 0, 0, 277, 0, 0,
3765 32, 33, 34, 384, 36, 37, 38, 385, 40, 0,
3766 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3768 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3769 0, 0, 0, 0, 0, 0, 0, 0, 0, 387,
3770 0, 0, 209, 54, 0, 55, 56, 0, 0, 0,
3771 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3772 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3773 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
3774 279, 13, 14, 15, 245, 246, 18, 19, 0, 0,
3775 0, 0, 0, 20, 247, 248, 23, 24, 25, 26,
3776 0, 0, 206, 0, 0, 0, 0, 0, 0, 277,
3777 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3778 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3779 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3780 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3781 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3782 0, 278, 0, 0, 328, 54, 0, 55, 56, 0,
3783 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3784 65, 66, 0, 0, 0, 0, 0, 0, 5, 6,
3785 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
3786 0, 12, 279, 13, 14, 15, 245, 246, 18, 19,
3787 0, 0, 0, 0, 0, 20, 247, 248, 23, 24,
3788 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
3789 0, 277, 0, 0, 32, 33, 34, 35, 36, 37,
3790 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3791 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3792 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3793 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3794 0, 0, 0, 1009, 0, 0, 209, 54, 0, 55,
3795 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
3796 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3797 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3798 0, 0, 0, 12, 279, 13, 14, 15, 245, 246,
3799 18, 19, 0, 0, 0, 0, 0, 20, 247, 248,
3800 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
3801 0, 0, 0, 277, 0, 0, 32, 33, 34, 35,
3802 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3803 45, 46, 47, 23, 24, 25, 26, 0, 0, 0,
3804 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,
3805 33, 34, 784, 0, 0, 0, 785, 0, 0, 41,
3806 42, 43, 44, 45, 0, 1062, 0, 0, 209, 54,
3807 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
3808 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3809 786, 787, 0, 0, 0, 0, 0, 0, 788, 0,
3810 0, 789, 0, 0, 790, 791, 279, 980, 0, 0,
3811 792, 59, 60, 61, 62, 63, 64, 65, 66, 23,
3812 24, 25, 26, 0, 0, 0, 0, 0, 0, 0,
3813 0, 0, 793, 0, 0, 32, 33, 34, 784, 279,
3814 0, 0, 785, 0, 0, 41, 42, 43, 44, 45,
3815 0, 0, 23, 24, 25, 26, 0, 0, 0, 0,
3816 0, 0, 0, 0, 0, 0, 0, 0, 32, 33,
3817 34, 784, 0, 0, 0, 785, 786, 787, 41, 42,
3818 43, 44, 45, 0, 788, 0, 0, 789, 0, 0,
3819 790, 791, 0, 1077, 0, 0, 792, 59, 60, 61,
3820 62, 63, 64, 65, 66, 0, 0, 0, 0, 786,
3821 787, 0, 0, 0, 0, 0, 0, 788, 793, 0,
3822 789, 0, 0, 790, 791, 279, 0, 0, 0, 792,
3823 59, 60, 61, 62, 63, 64, 65, 66, 564, 565,
3824 0, 0, 566, 0, 0, 0, 0, 0, 0, 0,
3825 0, 793, 0, 0, 0, 0, 0, 0, 279, 0,
3826 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3827 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3828 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3829 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3830 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3831 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3832 192, 193, 194, 195, 196, 0, 197, 198, 573, 574,
3833 0, 0, 575, 199, 233, 0, 0, 0, 0, 0,
3834 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3835 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3836 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3837 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3838 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3839 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3840 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3841 192, 193, 194, 195, 196, 0, 197, 198, 625, 565,
3842 0, 0, 626, 199, 233, 0, 0, 0, 0, 0,
3843 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3844 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3845 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3846 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3847 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3848 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3849 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3850 192, 193, 194, 195, 196, 0, 197, 198, 628, 574,
3851 0, 0, 629, 199, 233, 0, 0, 0, 0, 0,
3852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3853 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3854 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3855 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3856 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3858 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3859 192, 193, 194, 195, 196, 0, 197, 198, 653, 565,
3860 0, 0, 654, 199, 233, 0, 0, 0, 0, 0,
3861 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3862 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3863 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3864 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3865 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3866 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3867 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3868 192, 193, 194, 195, 196, 0, 197, 198, 656, 574,
3869 0, 0, 657, 199, 233, 0, 0, 0, 0, 0,
3870 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3871 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3872 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3873 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3874 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3875 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3876 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3877 192, 193, 194, 195, 196, 0, 197, 198, 724, 565,
3878 0, 0, 725, 199, 233, 0, 0, 0, 0, 0,
3879 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3880 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3881 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3882 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3883 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3884 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3885 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3886 192, 193, 194, 195, 196, 0, 197, 198, 727, 574,
3887 0, 0, 728, 199, 233, 0, 0, 0, 0, 0,
3888 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3889 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3890 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3891 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3892 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3893 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3894 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3895 192, 193, 194, 195, 196, 0, 197, 198, 733, 565,
3896 0, 0, 734, 199, 233, 0, 0, 0, 0, 0,
3897 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3898 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3899 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3900 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3901 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3903 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3904 192, 193, 194, 195, 196, 0, 197, 198, 610, 574,
3905 0, 0, 611, 199, 233, 0, 0, 0, 0, 0,
3906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3907 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3908 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3909 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3910 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3912 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3913 192, 193, 194, 195, 196, 0, 197, 198, 779, 565,
3914 0, 0, 780, 199, 233, 0, 0, 0, 0, 0,
3915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3916 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3917 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3918 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3919 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3920 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3921 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3922 192, 193, 194, 195, 196, 0, 197, 198, 782, 574,
3923 0, 0, 783, 199, 233, 0, 0, 0, 0, 0,
3924 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3925 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3926 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3927 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3928 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3930 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3931 192, 193, 194, 195, 196, 0, 197, 198, 1161, 565,
3932 0, 0, 1162, 199, 233, 0, 0, 0, 0, 0,
3933 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3934 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3935 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3936 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3937 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3939 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3940 192, 193, 194, 195, 196, 0, 197, 198, 1164, 574,
3941 0, 0, 1165, 199, 233, 0, 0, 0, 0, 0,
3942 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3943 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3944 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3945 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3946 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3947 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3948 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3949 192, 193, 194, 195, 196, 0, 197, 198, 1196, 565,
3950 0, 0, 1197, 199, 233, 0, 0, 0, 0, 0,
3951 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3952 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3953 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3954 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3955 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3956 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3957 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3958 192, 193, 194, 195, 196, 0, 197, 198, 610, 574,
3959 0, 0, 611, 199, 233, 0, 0, 0, 0, 0,
3960 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3961 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3962 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3963 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3964 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3965 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3966 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3967 192, 193, 194, 195, 196, 0, 197, 198, 0, 0,
3973 2, 59, 53, 89, 60, 369, 102, 22, 91, 92,
3974 8, 71, 95, 8, 364, 101, 71, 28, 712, 94,
3975 16, 17, 227, 4, 331, 57, 92, 634, 271, 95,
3976 28, 719, 275, 28, 2, 95, 4, 897, 898, 13,
3977 433, 99, 387, 68, 425, 363, 67, 365, 16, 17,
3978 627, 83, 433, 55, 56, 16, 17, 83, 95, 604,
3979 53, 59, 25, 78, 96, 97, 98, 331, 57, 1044,
3980 2, 1072, 4, 1112, 13, 897, 898, 963, 655, 429,
3981 473, 27, 22, 1110, 860, 53, 54, 690, 858, 57,
3982 860, 482, 868, 411, 55, 295, 296, 25, 868, 928,
3983 68, 99, 68, 100, 100, 259, 414, 415, 16, 17,
3984 428, 1068, 430, 146, 0, 83, 16, 17, 1033, 13,
3985 153, 26, 54, 91, 92, 66, 153, 95, 96, 97,
3986 98, 97, 100, 68, 484, 526, 222, 1052, 78, 100,
3987 458, 870, 25, 786, 787, 1060, 68, 55, 56, 726,
3988 414, 415, 25, 236, 1033, 238, 153, 213, 209, 736,
3989 1151, 96, 97, 126, 1155, 251, 25, 485, 1054, 25,
3990 37, 38, 146, 1052, 328, 97, 1215, 151, 119, 153,
3991 56, 25, 958, 146, 146, 148, 149, 732, 958, 1216,
3992 153, 153, 100, 244, 1023, 1024, 1018, 283, 946, 947,
3993 100, 261, 1177, 1204, 781, 151, 261, 153, 259, 148,
3994 145, 13, 151, 790, 153, 13, 13, 1208, 146, 221,
3995 148, 969, 970, 971, 261, 227, 13, 310, 311, 312,
3996 313, 233, 315, 316, 230, 1192, 232, 233, 143, 444,
3997 242, 209, 592, 636, 310, 311, 312, 313, 280, 892,
3998 893, 858, 602, 634, 280, 636, 601, 151, 279, 153,
3999 25, 13, 230, 146, 232, 233, 259, 1182, 236, 230,
4000 238, 232, 233, 146, 242, 593, 244, 328, 881, 882,
4001 27, 1110, 29, 1112, 1199, 603, 153, 146, 371, 257,
4002 146, 259, 683, 379, 897, 898, 25, 329, 498, 13,
4003 500, 326, 146, 386, 1033, 371, 331, 852, 248, 249,
4004 242, 1171, 280, 373, 859, 1044, 52, 698, 895, 370,
4005 29, 372, 230, 1052, 232, 257, 13, 1021, 309, 874,
4006 230, 1060, 232, 1021, 13, 328, 373, 25, 688, 1068,
4007 329, 309, 310, 311, 312, 313, 314, 315, 316, 151,
4008 148, 153, 109, 151, 151, 153, 153, 25, 326, 52,
4009 328, 329, 364, 331, 151, 326, 153, 365, 364, 687,
4010 331, 689, 695, 1121, 25, 25, 133, 309, 983, 143,
4011 703, 146, 314, 148, 692, 693, 1215, 1216, 991, 414,
4012 415, 699, 700, 26, 1142, 884, 364, 126, 366, 151,
4013 707, 153, 370, 371, 372, 982, 66, 650, 897, 898,
4014 146, 37, 38, 411, 123, 1018, 68, 146, 386, 624,
4015 149, 685, 99, 143, 153, 365, 1033, 429, 692, 693,
4016 1007, 1008, 430, 429, 152, 699, 700, 151, 97, 153,
4017 442, 452, 444, 788, 96, 97, 414, 415, 1177, 126,
4018 482, 537, 99, 146, 452, 100, 482, 452, 146, 119,
4019 458, 429, 662, 1192, 151, 26, 153, 667, 152, 146,
4020 1075, 126, 151, 866, 153, 126, 126, 100, 146, 126,
4021 82, 83, 484, 68, 848, 866, 145, 485, 484, 148,
4022 430, 146, 68, 145, 526, 146, 146, 465, 149, 149,
4023 526, 146, 153, 153, 66, 67, 150, 68, 1053, 153,
4024 143, 819, 97, 77, 482, 148, 484, 425, 458, 594,
4025 96, 97, 605, 146, 414, 415, 586, 129, 130, 1018,
4026 277, 582, 148, 584, 99, 96, 97, 153, 68, 903,
4027 152, 431, 432, 870, 908, 485, 1151, 1036, 753, 894,
4028 1155, 1245, 99, 66, 569, 819, 639, 66, 526, 121,
4029 122, 126, 470, 578, 68, 152, 96, 97, 1171, 459,
4030 572, 858, 136, 137, 138, 1064, 578, 28, 580, 126,
4031 34, 146, 143, 870, 145, 1130, 1163, 148, 14, 15,
4032 592, 15, 96, 97, 1083, 593, 592, 612, 52, 68,
4033 602, 25, 1207, 1208, 68, 603, 602, 618, 121, 122,
4034 612, 68, 121, 122, 582, 145, 584, 99, 148, 651,
4035 618, 126, 624, 618, 592, 651, 68, 96, 97, 569,
4036 68, 146, 96, 97, 602, 58, 604, 605, 578, 152,
4037 97, 145, 644, 152, 126, 741, 126, 2, 731, 4,
4038 99, 683, 99, 593, 77, 97, 112, 683, 96, 97,
4039 685, 16, 17, 603, 146, 731, 66, 692, 693, 99,
4040 730, 639, 612, 68, 699, 700, 145, 126, 729, 126,
4041 68, 145, 740, 651, 99, 108, 688, 99, 146, 112,
4042 56, 689, 688, 146, 68, 153, 26, 146, 53, 54,
4043 68, 96, 97, 643, 644, 707, 708, 145, 710, 97,
4044 712, 126, 680, 68, 126, 683, 684, 685, 66, 119,
4045 688, 121, 122, 97, 692, 693, 634, 68, 148, 97,
4046 68, 699, 700, 1060, 146, 1099, 91, 92, 68, 126,
4047 95, 1068, 740, 1070, 1094, 100, 707, 9, 680, 689,
4048 145, 753, 684, 15, 837, 96, 97, 1044, 96, 97,
4049 1047, 729, 99, 731, 732, 99, 96, 97, 770, 68,
4050 772, 837, 58, 121, 122, 144, 124, 1095, 34, 100,
4051 831, 1068, 66, 1070, 153, 836, 146, 99, 68, 126,
4052 698, 77, 126, 853, 819, 99, 52, 96, 97, 68,
4053 68, 146, 692, 693, 145, 68, 553, 145, 870, 699,
4054 700, 68, 146, 143, 126, 145, 68, 97, 148, 148,
4055 871, 99, 108, 109, 571, 827, 99, 96, 97, 97,
4056 88, 89, 99, 96, 97, 119, 77, 121, 122, 96,
4057 97, 40, 41, 66, 96, 97, 145, 133, 126, 518,
4058 148, 819, 99, 126, 209, 906, 148, 747, 748, 126,
4059 750, 751, 149, 831, 915, 1192, 66, 1194, 836, 837,
4060 902, 126, 1199, 146, 1201, 230, 145, 232, 233, 126,
4061 627, 236, 145, 238, 852, 99, 99, 242, 145, 244,
4062 1177, 859, 1179, 145, 56, 955, 119, 1184, 121, 122,
4063 150, 124, 257, 871, 259, 1192, 874, 1194, 655, 144,
4064 579, 1238, 126, 126, 1201, 146, 585, 54, 587, 119,
4065 77, 121, 122, 26, 124, 1011, 77, 64, 65, 819,
4066 106, 987, 52, 52, 902, 967, 56, 56, 906, 149,
4067 146, 56, 944, 153, 946, 947, 1233, 915, 1004, 151,
4068 151, 1238, 153, 25, 309, 310, 311, 312, 313, 314,
4069 315, 316, 130, 77, 1015, 68, 1017, 969, 970, 971,
4070 15, 326, 17, 328, 864, 149, 331, 66, 144, 726,
4071 94, 95, 146, 134, 135, 136, 137, 138, 146, 736,
4072 870, 144, 146, 96, 97, 144, 146, 66, 1060, 967,
4073 10, 146, 1064, 146, 146, 1056, 1068, 44, 1070, 364,
4074 44, 366, 146, 126, 1016, 370, 371, 372, 8, 1021,
4075 134, 135, 136, 137, 138, 13, 66, 1059, 25, 152,
4076 119, 386, 121, 122, 781, 17, 152, 144, 870, 150,
4077 143, 146, 145, 790, 791, 148, 128, 1015, 15, 1017,
4078 119, 720, 121, 122, 723, 59, 60, 61, 62, 414,
4079 415, 54, 55, 690, 57, 858, 146, 860, 737, 148,
4080 131, 64, 65, 146, 429, 868, 52, 870, 100, 119,
4081 1131, 121, 122, 131, 236, 1053, 1169, 1170, 1056, 100,
4082 146, 1059, 1094, 144, 1096, 52, 1098, 1095, 1094, 126,
4083 146, 52, 146, 1169, 1170, 40, 41, 42, 43, 44,
4084 465, 146, 264, 146, 146, 2, 268, 4, 52, 1121,
4085 146, 126, 131, 870, 56, 146, 1094, 146, 146, 484,
4086 1192, 52, 1194, 54, 55, 56, 57, 1199, 146, 1201,
4087 1142, 52, 9, 54, 55, 56, 57, 146, 895, 52,
4088 151, 54, 55, 56, 57, 1095, 1036, 146, 131, 786,
4089 787, 1041, 1130, 1131, 56, 958, 53, 54, 146, 838,
4090 57, 146, 841, 52, 146, 844, 1238, 146, 146, 2,
4091 1060, 4, 851, 146, 1064, 854, 146, 146, 1068, 120,
4092 1070, 1242, 144, 16, 17, 149, 83, 146, 101, 146,
4093 146, 1169, 1170, 52, 1036, 54, 55, 56, 57, 96,
4094 97, 98, 99, 146, 242, 461, 963, 146, 146, 146,
4095 146, 465, 96, 148, 148, 98, 146, 582, 1060, 584,
4096 53, 54, 1064, 146, 87, 982, 1068, 592, 1070, 77,
4097 1033, 988, 612, 1245, 1098, 68, 708, 602, 917, 604,
4098 605, 1044, 101, 1023, 881, 882, 94, 95, 107, 1052,
4099 1007, 1008, 1110, 870, 891, 892, 893, 1060, 91, 92,
4100 897, 898, 95, 772, 1242, 1068, 887, 100, 1204, 742,
4101 514, 973, 974, 435, 639, 954, 324, 1245, 440, 1083,
4102 891, 443, 1018, 1083, 446, 133, 134, 135, 136, 137,
4103 138, 1083, 105, 889, 1096, 1016, 500, 1054, 99, 957,
4104 462, 1036, 1192, 1064, 1194, 467, 1060, 988, -1, 1199,
4105 -1, 1201, 209, -1, -1, 680, -1, -1, -1, 684,
4106 685, -1, -1, 688, -1, -1, -1, 692, 693, -1,
4107 -1, -1, -1, -1, 699, 700, -1, -1, -1, -1,
4108 -1, -1, -1, -1, -1, 242, 983, 244, 1238, -1,
4109 1192, 949, 1194, 951, 991, 690, -1, 1199, -1, 1201,
4110 257, -1, 259, 525, 729, -1, 731, 732, -1, -1,
4111 -1, -1, -1, -1, 1177, -1, 209, -1, -1, -1,
4112 -1, 1018, -1, 280, -1, -1, -1, -1, -1, 1192,
4113 -1, 1148, -1, -1, -1, -1, 1238, 230, -1, 232,
4114 233, -1, -1, 236, -1, 238, 1163, -1, -1, 242,
4115 -1, 244, 309, -1, -1, -1, -1, 314, -1, -1,
4116 -1, -1, -1, -1, 257, -1, 259, -1, -1, -1,
4117 -1, 328, 329, -1, -1, 1137, 1138, -1, 1075, -1,
4118 -1, 1143, -1, 1145, 1146, -1, -1, -1, -1, 1128,
4119 -1, 786, 787, -1, 819, -1, -1, 56, -1, 52,
4120 -1, 54, 55, 56, 57, 58, 831, -1, -1, 366,
4121 -1, 836, 837, 370, -1, 372, 309, 310, 311, 312,
4122 313, 314, 315, 316, 77, -1, -1, 852, -1, -1,
4123 -1, -1, -1, 326, 859, 328, -1, -1, 331, -1,
4124 -1, -1, -1, -1, -1, -1, 871, -1, 101, 874,
4125 1189, -1, -1, -1, 1151, 108, 109, -1, 1155, 1117,
4126 1118, 1223, 1224, 1225, 1226, 1123, -1, 1125, -1, 1127,
4127 -1, 364, -1, 366, 1171, -1, -1, 370, 371, 372,
4128 133, 906, 1244, -1, -1, -1, 881, 882, -1, -1,
4129 915, -1, -1, 386, -1, -1, 891, 892, 893, -1,
4130 -1, -1, 897, 898, -1, -1, -1, -1, 465, -1,
4131 1207, 1208, -1, -1, -1, -1, 738, -1, -1, -1,
4132 -1, 414, 415, -1, -1, 482, -1, -1, -1, -1,
4133 752, -1, 754, -1, -1, -1, 429, -1, 52, -1,
4134 54, 55, 56, 57, 58, -1, 25, -1, 207, -1,
4135 -1, 210, 211, 212, -1, -1, -1, -1, -1, 1217,
4136 1218, 1219, 1220, 77, -1, -1, -1, -1, -1, 526,
4137 -1, -1, 465, -1, -1, -1, -1, -1, -1, -1,
4138 -1, -1, -1, -1, -1, 1243, -1, 101, 983, -1,
4139 1015, 484, 1017, 107, 108, 109, 991, -1, 77, 78,
4140 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4141 89, -1, -1, -1, -1, 94, 95, -1, -1, 133,
4142 -1, -1, 136, 1018, -1, 582, -1, 584, 1053, -1,
4143 -1, 1056, -1, -1, -1, -1, -1, -1, -1, 153,
4144 -1, 2, -1, 4, -1, -1, -1, 604, 127, -1,
4145 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4146 -1, -1, -1, -1, -1, -1, -1, 326, -1, 1094,
4147 -1, -1, 331, -1, 896, -1, -1, -1, -1, -1,
4148 1075, -1, -1, -1, -1, -1, -1, -1, -1, 582,
4149 -1, 584, 53, 54, 651, -1, 57, -1, -1, 592,
4150 -1, -1, -1, -1, -1, 1130, 1131, -1, -1, 602,
4151 -1, 604, 605, 935, 936, -1, -1, -1, -1, -1,
4152 -1, -1, 83, 680, -1, -1, 683, 684, -1, -1,
4153 -1, -1, -1, 690, -1, 96, 97, 98, -1, -1,
4154 -1, -1, -1, -1, 1169, 1170, 639, -1, -1, -1,
4155 -1, -1, -1, -1, -1, -1, 1151, 979, -1, -1,
4156 1155, -1, -1, -1, -1, 424, 425, -1, -1, -1,
4157 -1, -1, 729, -1, 433, 732, 1171, -1, -1, -1,
4158 -1, -1, -1, 1005, 1006, -1, -1, 680, -1, -1,
4159 -1, 684, 685, -1, -1, 688, -1, -1, -1, 692,
4160 693, -1, -1, -1, -1, 1027, 699, 700, -1, -1,
4161 -1, 470, 1207, 1208, 473, -1, 52, 1242, 54, 55,
4162 56, 57, 58, -1, -1, -1, -1, -1, -1, 786,
4163 787, -1, -1, -1, -1, -1, 729, -1, 731, 732,
4164 2, 77, 4, -1, -1, -1, -1, -1, 209, 77,
4165 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4166 519, -1, -1, -1, -1, 101, 94, 95, -1, -1,
4167 -1, 107, 108, 109, 831, -1, -1, -1, -1, 836,
4168 -1, 242, -1, 244, -1, -1, 1108, -1, -1, -1,
4169 -1, 53, 54, 1115, -1, 852, 257, 133, 259, 2,
4170 136, 4, 859, 131, 132, 133, 134, 135, 136, 137,
4171 138, -1, 148, -1, 871, -1, -1, 874, -1, 280,
4172 -1, -1, -1, -1, 881, 882, 819, -1, -1, -1,
4173 -1, -1, -1, -1, 891, 892, 893, -1, 831, -1,
4174 897, 898, -1, 836, 837, 902, -1, -1, 309, 906,
4175 53, 54, -1, 314, 57, -1, -1, -1, 915, 852,
4176 619, -1, 621, -1, -1, -1, 859, 328, 329, -1,
4177 331, -1, -1, -1, -1, 634, -1, 636, 871, -1,
4178 83, 874, -1, -1, -1, -1, -1, -1, -1, 2,
4179 -1, 4, -1, 96, 97, 98, 99, -1, -1, -1,
4180 -1, -1, -1, -1, -1, 366, -1, -1, -1, 370,
4181 967, 372, -1, 906, -1, -1, -1, -1, -1, -1,
4182 679, -1, 915, -1, -1, -1, 983, -1, -1, -1,
4183 -1, -1, -1, -1, 991, -1, -1, -1, -1, 698,
4184 53, 54, -1, -1, -1, -1, -1, 209, 707, -1,
4185 -1, -1, -1, 414, 415, -1, -1, -1, 1015, -1,
4186 1017, 1018, -1, 722, -1, -1, -1, -1, -1, -1,
4187 -1, -1, -1, -1, -1, -1, -1, -1, -1, 690,
4188 242, -1, 244, 96, -1, -1, -1, -1, -1, -1,
4189 -1, -1, -1, -1, -1, 257, 1053, 259, -1, 1056,
4190 -1, -1, 1059, 690, 465, -1, 209, -1, -1, -1,
4191 -1, -1, -1, -1, 773, -1, -1, -1, 1075, -1,
4192 -1, 482, 1015, -1, 1017, -1, -1, -1, -1, -1,
4193 -1, -1, -1, -1, -1, -1, -1, -1, -1, 242,
4194 -1, 244, -1, 690, -1, -1, -1, 309, -1, -1,
4195 -1, -1, 314, -1, 257, -1, 259, -1, -1, -1,
4196 1053, -1, -1, 1056, -1, 526, 328, -1, -1, 331,
4197 -1, -1, -1, 1130, 1131, 786, 787, 280, 52, -1,
4198 54, 55, 56, 57, 58, -1, -1, 846, -1, -1,
4199 -1, -1, -1, -1, 1151, -1, 209, -1, 1155, 786,
4200 787, 1094, -1, 77, 366, -1, 309, 866, 370, -1,
4201 372, 314, -1, -1, 1171, -1, -1, 91, -1, -1,
4202 -1, 582, -1, 584, -1, 328, 329, 101, -1, 242,
4203 -1, 244, -1, 107, 108, 109, -1, 1130, 1131, 786,
4204 787, -1, -1, 604, 257, -1, 259, -1, -1, -1,
4205 1207, 1208, 414, 415, -1, 914, -1, -1, -1, 133,
4206 -1, -1, 136, 366, -1, -1, -1, 370, -1, 372,
4207 881, 882, -1, -1, -1, -1, 1169, 1170, -1, -1,
4208 891, 892, 893, 942, -1, 1242, 897, 898, -1, -1,
4209 651, -1, -1, -1, 881, 882, 309, -1, -1, 660,
4210 -1, 314, -1, 465, 891, 892, 893, -1, -1, -1,
4211 897, 898, -1, -1, -1, 328, -1, -1, 331, 680,
4212 -1, -1, 683, 684, 685, -1, -1, -1, -1, -1,
4213 -1, 692, 693, -1, 881, 882, -1, -1, 699, 700,
4214 -1, -1, -1, -1, 891, 892, 893, -1, -1, 1242,
4215 897, 898, -1, 366, -1, -1, -1, 370, -1, 372,
4216 1019, -1, 465, -1, -1, -1, -1, -1, 729, -1,
4217 -1, 732, 983, 1032, -1, -1, -1, -1, -1, 482,
4218 991, -1, -1, -1, 52, -1, 54, 55, 56, 57,
4219 58, -1, -1, -1, -1, -1, 983, -1, -1, -1,
4220 -1, 414, 415, -1, 991, -1, -1, 1018, -1, 77,
4221 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4222 582, -1, 584, 526, -1, -1, -1, -1, -1, -1,
4223 -1, 1018, -1, 101, -1, -1, 983, -1, -1, 107,
4224 108, 109, 604, -1, 991, -1, -1, -1, -1, -1,
4225 -1, -1, 465, -1, -1, -1, -1, -1, 819, -1,
4226 -1, -1, -1, -1, 1075, 133, -1, -1, 136, -1,
4227 831, 1018, -1, -1, -1, 836, -1, -1, -1, 582,
4228 -1, 584, -1, -1, -1, -1, -1, -1, 1075, -1,
4229 -1, 852, -1, -1, -1, -1, -1, -1, 859, -1,
4230 -1, 604, -1, -1, -1, -1, -1, -1, -1, -1,
4231 871, -1, -1, 874, -1, -1, -1, -1, 680, -1,
4232 -1, -1, 684, 685, -1, -1, -1, -1, 1075, -1,
4233 692, 693, -1, -1, -1, -1, -1, 699, 700, -1,
4234 1151, 902, -1, -1, 1155, 906, -1, -1, 651, -1,
4235 -1, -1, -1, -1, 915, -1, 690, -1, -1, -1,
4236 1171, -1, -1, -1, 1151, -1, -1, 729, 1155, 582,
4237 732, 584, -1, -1, -1, -1, -1, 680, -1, -1,
4238 683, 684, -1, -1, 1171, 690, -1, -1, -1, -1,
4239 -1, 604, -1, -1, -1, -1, 1207, 1208, -1, -1,
4240 -1, -1, -1, -1, 1151, -1, 967, -1, 1155, -1,
4241 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4242 1207, 1208, -1, -1, 1171, -1, 729, -1, -1, 732,
4243 690, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4244 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4245 -1, -1, 786, 787, 1015, -1, 1017, 819, -1, -1,
4246 1207, 1208, -1, -1, -1, -1, -1, 680, -1, 831,
4247 -1, 684, 685, -1, 836, -1, -1, -1, -1, 692,
4248 693, 786, 787, -1, -1, -1, 699, 700, -1, -1,
4249 852, -1, 1053, -1, -1, 1056, -1, 859, 1059, -1,
4250 -1, -1, -1, -1, -1, -1, -1, -1, -1, 871,
4251 -1, -1, 874, -1, -1, -1, 729, -1, -1, 732,
4252 -1, -1, -1, -1, -1, -1, 786, 787, 831, -1,
4253 -1, -1, -1, 836, -1, -1, -1, -1, -1, -1,
4254 -1, -1, -1, -1, 906, -1, -1, 881, 882, 852,
4255 -1, -1, -1, 915, -1, -1, 859, 891, 892, 893,
4256 -1, -1, -1, 897, 898, -1, -1, -1, 871, 1130,
4257 1131, 874, -1, -1, -1, -1, 881, 882, -1, -1,
4258 -1, -1, -1, -1, -1, -1, 891, 892, 893, -1,
4259 -1, -1, 897, 898, -1, -1, -1, -1, -1, 902,
4260 -1, -1, -1, 906, -1, -1, 819, -1, -1, -1,
4261 -1, -1, 915, -1, -1, -1, -1, -1, 831, -1,
4262 -1, 881, 882, 836, -1, -1, -1, -1, -1, -1,
4263 -1, 891, 892, 893, -1, 16, 17, 897, 898, 852,
4264 -1, -1, -1, -1, -1, -1, 859, -1, -1, 983,
4265 -1, -1, -1, 1015, -1, 1017, -1, 991, 871, -1,
4266 -1, 874, -1, -1, 967, -1, -1, 48, 49, 50,
4267 51, -1, -1, -1, 55, 56, -1, -1, 983, -1,
4268 -1, 1242, -1, -1, 1018, -1, 991, 68, 69, 902,
4269 -1, 1053, -1, 906, 1056, -1, -1, -1, -1, -1,
4270 -1, -1, 915, -1, -1, -1, -1, -1, 33, 34,
4271 35, 36, 1015, 1018, 1017, -1, -1, -1, -1, 100,
4272 -1, -1, -1, 983, 49, 50, 51, -1, -1, -1,
4273 -1, 991, -1, -1, 59, 60, 61, 62, 63, -1,
4274 -1, 1075, -1, -1, -1, -1, -1, -1, -1, -1,
4275 1053, -1, -1, 1056, -1, -1, 1059, -1, 1018, -1,
4276 -1, -1, -1, -1, -1, -1, -1, -1, 1130, 1131,
4277 1075, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4278 -1, -1, -1, -1, -1, 110, 111, 112, 113, 114,
4279 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4280 -1, -1, 1015, -1, 1017, -1, -1, -1, -1, -1,
4281 -1, -1, -1, -1, 139, 1075, -1, 1151, -1, -1,
4282 -1, 1155, -1, -1, -1, -1, 207, 1130, 1131, 210,
4283 211, 212, -1, 214, -1, -1, -1, 1171, -1, -1,
4284 1053, -1, -1, 1056, -1, -1, 1151, -1, -1, 230,
4285 1155, 232, 233, -1, -1, -1, -1, -1, -1, -1,
4286 -1, -1, -1, -1, -1, -1, 1171, -1, -1, -1,
4287 -1, -1, -1, 1207, 1208, -1, -1, -1, -1, -1,
4288 1242, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4289 -1, 1151, -1, -1, -1, 1155, -1, -1, -1, -1,
4290 -1, -1, 1207, 1208, -1, -1, -1, -1, -1, -1,
4291 -1, 1171, -1, -1, -1, -1, -1, 1130, 1131, -1,
4292 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4293 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1242,
4294 -1, -1, -1, -1, -1, 326, -1, 1207, 1208, -1,
4295 331, -1, 333, 334, 335, 336, 337, -1, -1, 340,
4296 341, 342, 343, 344, 345, 346, 347, 348, -1, -1,
4297 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
4298 -1, -1, -1, 364, -1, -1, -1, -1, -1, -1,
4299 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4300 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
4301 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
4302 -1, -1, -1, -1, 94, 95, -1, -1, -1, 1242,
4303 -1, -1, -1, 414, 415, -1, -1, -1, -1, -1,
4304 -1, -1, 423, 424, 425, -1, -1, -1, 429, -1,
4305 431, 432, 433, -1, -1, -1, -1, 127, 439, 129,
4306 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4307 -1, -1, -1, 454, -1, -1, -1, -1, 459, -1,
4308 -1, -1, -1, 153, -1, -1, -1, -1, -1, 470,
4309 -1, -1, 473, -1, -1, -1, -1, -1, -1, 0,
4310 -1, -1, -1, 484, -1, -1, -1, 8, 9, 10,
4311 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
4312 -1, 502, -1, -1, 25, 26, 27, 28, 29, -1,
4313 -1, -1, -1, -1, -1, -1, 37, 38, 519, 40,
4314 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
4315 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4316 -1, -1, -1, -1, -1, -1, -1, 68, -1, -1,
4317 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
4318 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4319 -1, -1, -1, 94, 95, 96, 97, -1, 99, 100,
4320 -1, -1, -1, -1, -1, 106, -1, -1, -1, -1,
4321 -1, 592, -1, -1, -1, -1, -1, -1, -1, 120,
4322 -1, 602, 123, -1, -1, 126, 127, 128, 129, 130,
4323 131, 132, 133, 134, 135, 136, 137, 138, 619, -1,
4324 621, -1, 143, 144, 145, 146, -1, -1, 149, 150,
4325 151, -1, 153, 634, -1, 636, -1, -1, -1, 0,
4326 -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
4327 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
4328 -1, -1, -1, -1, 25, 26, 27, -1, -1, -1,
4329 -1, -1, -1, -1, -1, -1, 37, 38, 679, 40,
4330 41, 42, 43, 44, 685, 686, -1, 688, -1, -1,
4331 -1, 692, 693, -1, -1, -1, -1, 698, 699, 700,
4332 -1, -1, -1, -1, -1, -1, 707, 68, -1, -1,
4333 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4334 -1, 722, -1, -1, -1, -1, -1, -1, -1, -1,
4335 -1, -1, -1, -1, -1, 96, 97, -1, -1, -1,
4336 -1, -1, -1, -1, -1, -1, 747, 748, -1, 750,
4337 751, 33, 34, 35, 36, -1, -1, -1, -1, 120,
4338 -1, -1, -1, -1, -1, -1, -1, 49, 50, 51,
4339 52, -1, 773, -1, 56, -1, 58, 59, 60, 61,
4340 62, 63, 143, 144, -1, -1, -1, 148, 149, -1,
4341 151, -1, 153, -1, -1, 77, -1, -1, -1, -1,
4342 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4343 -1, 812, -1, -1, -1, -1, 98, -1, 819, 101,
4344 -1, -1, 104, 105, -1, 107, 108, -1, 110, 111,
4345 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4346 -1, -1, -1, -1, -1, 846, -1, -1, -1, -1,
4347 132, -1, -1, -1, -1, 0, 1, 139, 3, 4,
4348 5, 6, 7, 864, -1, 866, 11, 12, -1, -1,
4349 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4350 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4351 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4352 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4353 55, 56, 57, 914, 59, 60, 61, 62, 63, 64,
4354 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4355 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4356 -1, 942, -1, -1, -1, 90, 91, -1, -1, -1,
4357 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4358 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4359 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4360 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4361 -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
4362 -1, -1, -1, -1, -1, -1, 151, -1, 153, -1,
4363 -1, -1, -1, -1, -1, -1, -1, -1, 1019, 0,
4364 -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
4365 -1, 1032, 13, 14, 15, -1, 17, -1, -1, -1,
4366 -1, 44, -1, -1, 25, -1, 27, 28, 29, -1,
4367 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
4368 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
4369 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
4370 83, 84, 85, 86, 87, 88, 89, 68, -1, -1,
4371 -1, 94, 95, 1094, -1, -1, 77, 78, 79, 80,
4372 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4373 -1, -1, -1, 94, 95, 96, 97, -1, 99, 100,
4374 -1, -1, -1, -1, 127, 106, 129, 130, 131, 132,
4375 133, 134, 135, 136, 137, 138, -1, -1, -1, 120,
4376 -1, -1, 123, 146, -1, 126, 127, 128, 129, 130,
4377 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4378 -1, -1, -1, 144, 145, 146, 0, -1, 149, 150,
4379 151, -1, 153, -1, 8, 9, 10, -1, -1, 13,
4380 14, 15, -1, 17, -1, -1, -1, -1, 44, -1,
4381 -1, 25, -1, 27, 28, 29, -1, -1, -1, -1,
4382 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
4383 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4384 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
4385 86, 87, 88, 89, 68, -1, -1, -1, 94, 95,
4386 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
4387 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
4388 94, 95, 96, 97, -1, 99, 100, -1, -1, -1,
4389 -1, 127, 106, 129, 130, 131, 132, 133, 134, 135,
4390 136, 137, 138, -1, -1, -1, 120, -1, -1, 123,
4391 -1, -1, 126, 127, 128, 129, 130, 131, 132, 133,
4392 134, 135, 136, 137, 138, -1, -1, -1, -1, -1,
4393 144, 145, 146, 0, -1, 149, 150, 151, -1, 153,
4394 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
4395 17, -1, -1, -1, -1, -1, -1, -1, 25, 26,
4396 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
4397 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
4398 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
4399 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4400 89, 68, -1, -1, -1, 94, 95, -1, -1, -1,
4401 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
4402 87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
4403 97, -1, -1, 100, -1, -1, -1, -1, 127, 106,
4404 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4405 -1, -1, -1, 120, -1, -1, 123, -1, -1, -1,
4406 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
4407 137, 138, -1, -1, -1, -1, 143, 144, 145, 146,
4408 0, -1, 149, 150, 151, -1, 153, -1, 8, 9,
4409 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
4410 -1, -1, -1, -1, -1, 25, 26, 27, 28, 29,
4411 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
4412 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
4413 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
4414 82, 83, 84, 85, 86, 87, 88, 89, 68, -1,
4415 -1, -1, 94, 95, -1, -1, -1, 77, 78, 79,
4416 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
4417 -1, -1, -1, -1, 94, 95, 96, 97, -1, -1,
4418 100, -1, -1, -1, -1, -1, 106, 129, 130, 131,
4419 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4420 120, -1, -1, 123, -1, -1, -1, 127, 128, 129,
4421 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4422 -1, -1, -1, 143, 144, 145, 146, 0, -1, 149,
4423 150, 151, -1, 153, -1, 8, 9, 10, -1, -1,
4424 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
4425 -1, -1, 25, -1, 27, 28, 29, -1, -1, -1,
4426 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
4427 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
4428 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4429 -1, 86, 87, -1, -1, 68, -1, -1, -1, 94,
4430 95, -1, -1, -1, 77, 78, 79, 80, 81, 82,
4431 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
4432 -1, 94, 95, 96, 97, -1, 99, 100, -1, -1,
4433 -1, -1, -1, 106, 129, 130, 131, 132, 133, 134,
4434 135, 136, 137, 138, -1, -1, -1, 120, -1, -1,
4435 123, -1, -1, 126, 127, 128, 129, 130, 131, 132,
4436 133, 134, 135, 136, 137, 138, -1, -1, -1, -1,
4437 -1, 144, 145, 146, 0, -1, 149, 150, 151, -1,
4438 153, -1, 8, 9, 10, -1, -1, 13, 14, 15,
4439 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
4440 26, 27, 28, -1, -1, -1, -1, -1, -1, -1,
4441 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
4442 -1, -1, -1, -1, -1, -1, -1, -1, -1, 77,
4443 78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
4444 -1, -1, 68, -1, -1, -1, 94, 95, -1, -1,
4445 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
4446 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
4447 96, 97, -1, -1, 100, -1, -1, -1, -1, -1,
4448 106, 129, 130, 131, 132, 133, 134, 135, 136, 137,
4449 138, -1, -1, -1, 120, -1, -1, -1, -1, -1,
4450 -1, 127, -1, 129, 130, 131, 132, 133, 134, 135,
4451 136, 137, 138, -1, -1, -1, -1, 143, 144, 145,
4452 146, 0, 148, 149, 150, 151, -1, 153, -1, 8,
4453 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
4454 -1, -1, -1, -1, -1, -1, 25, -1, 27, 28,
4455 29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
4456 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
4457 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
4458 81, 82, 83, -1, -1, 86, 87, -1, -1, 68,
4459 -1, -1, -1, 94, 95, -1, -1, -1, 77, 78,
4460 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4461 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
4462 -1, 100, -1, -1, -1, -1, -1, 106, 129, 130,
4463 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4464 -1, 120, -1, -1, 123, -1, -1, -1, 127, 128,
4465 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4466 -1, -1, -1, -1, -1, 144, 145, 146, 0, -1,
4467 149, 150, 151, -1, 153, -1, 8, 9, 10, -1,
4468 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
4469 -1, -1, -1, 25, 26, 27, 28, -1, -1, -1,
4470 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
4471 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
4472 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4473 -1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
4474 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
4475 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
4476 -1, -1, 94, 95, 96, 97, -1, -1, 100, -1,
4477 -1, -1, -1, -1, 106, -1, -1, -1, -1, -1,
4478 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
4479 -1, -1, -1, -1, -1, 127, -1, 129, 130, 131,
4480 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4481 -1, 143, 144, 145, 146, 0, 148, 149, 150, 151,
4482 -1, 153, -1, 8, 9, 10, -1, -1, 13, 14,
4483 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
4484 25, -1, 27, 28, -1, -1, -1, -1, -1, -1,
4485 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
4486 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4487 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4488 -1, -1, -1, 68, -1, -1, -1, -1, -1, -1,
4489 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4490 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
4491 95, 96, 97, -1, -1, 100, -1, -1, -1, -1,
4492 -1, 106, -1, -1, -1, -1, -1, -1, -1, -1,
4493 -1, -1, -1, -1, -1, 120, -1, -1, -1, -1,
4494 -1, -1, 127, -1, 129, 130, 131, 132, 133, 134,
4495 135, 136, 137, 138, -1, -1, -1, -1, -1, 144,
4496 145, 146, 0, 148, 149, 150, 151, -1, 153, -1,
4497 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
4498 -1, -1, -1, -1, -1, -1, -1, 25, 26, -1,
4499 -1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
4500 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
4501 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4502 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4503 68, -1, -1, -1, -1, -1, -1, -1, -1, 77,
4504 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
4505 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
4506 -1, 99, -1, -1, -1, -1, -1, -1, -1, -1,
4507 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4508 -1, -1, 120, -1, -1, -1, -1, -1, 126, 127,
4509 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
4510 138, -1, -1, -1, -1, 143, 144, 145, 146, 0,
4511 -1, 149, -1, 151, -1, 153, -1, 8, 9, 10,
4512 -1, -1, -1, 14, 15, -1, 17, -1, -1, -1,
4513 -1, -1, -1, -1, 25, 26, -1, -1, -1, -1,
4514 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
4515 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
4516 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4517 -1, -1, -1, -1, -1, -1, -1, 68, -1, -1,
4518 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
4519 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4520 -1, -1, -1, 94, 95, 96, 97, -1, 99, -1,
4521 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4522 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
4523 -1, -1, -1, -1, -1, 126, 127, -1, 129, 130,
4524 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4525 -1, -1, 143, 144, 145, 146, 0, -1, 149, -1,
4526 151, -1, 153, -1, 8, 9, 10, -1, -1, -1,
4527 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
4528 -1, 25, -1, -1, -1, -1, -1, -1, -1, -1,
4529 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
4530 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4531 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4532 -1, -1, -1, -1, 68, -1, -1, -1, -1, -1,
4533 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
4534 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
4535 94, 95, 96, 97, -1, 99, -1, -1, -1, -1,
4536 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4537 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
4538 -1, -1, 126, 127, -1, 129, 130, 131, 132, 133,
4539 134, 135, 136, 137, 138, -1, -1, -1, -1, -1,
4540 144, 145, 146, 0, -1, 149, -1, 151, -1, 153,
4541 -1, 8, 9, 10, -1, -1, -1, 14, 15, -1,
4542 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
4543 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4544 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
4545 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4546 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4547 -1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
4548 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
4549 87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
4550 97, -1, 99, -1, -1, -1, -1, -1, -1, -1,
4551 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4552 -1, -1, -1, 120, -1, -1, -1, -1, -1, 126,
4553 127, -1, 129, 130, 131, 132, 133, 134, 135, 136,
4554 137, 138, -1, -1, -1, -1, -1, 144, 145, 146,
4555 -1, -1, 149, -1, 151, 1, 153, 3, 4, 5,
4556 6, 7, 8, 9, 10, 11, 12, -1, -1, 15,
4557 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4558 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4559 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4560 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4561 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4562 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4563 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4564 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4565 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4566 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4567 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4568 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4569 -1, -1, -1, 139, 140, 141, -1, -1, -1, -1,
4570 -1, -1, -1, -1, -1, 151, 1, 153, 3, 4,
4571 5, 6, 7, -1, -1, 10, 11, 12, -1, 14,
4572 15, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4573 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4574 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4575 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4576 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4577 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4578 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4579 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4580 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4581 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4582 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4583 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4584 -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
4585 -1, -1, -1, -1, -1, -1, 151, 1, 153, 3,
4586 4, 5, 6, 7, -1, -1, 10, 11, 12, -1,
4587 -1, 15, 16, 17, 18, 19, 20, 21, 22, 23,
4588 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4589 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4590 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4591 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4592 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4593 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4594 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4595 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4596 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4597 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4598 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4599 -1, -1, -1, -1, -1, 139, 140, 141, -1, -1,
4600 -1, -1, -1, -1, -1, -1, -1, 151, 1, 153,
4601 3, 4, 5, 6, 7, -1, -1, 10, 11, 12,
4602 -1, -1, 15, 16, -1, 18, 19, 20, 21, 22,
4603 23, 24, 25, -1, -1, -1, -1, 30, 31, 32,
4604 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4605 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
4606 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4607 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4608 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4609 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4610 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4611 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
4612 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4613 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4614 -1, -1, -1, -1, -1, -1, 139, 140, 141, -1,
4615 -1, -1, -1, -1, -1, -1, -1, -1, 151, 1,
4616 153, 3, 4, 5, 6, 7, -1, -1, 10, 11,
4617 12, -1, -1, 15, 16, -1, 18, 19, 20, 21,
4618 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4619 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4620 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
4621 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4622 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4623 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4624 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4625 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4626 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4627 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4628 -1, -1, -1, -1, -1, 1, -1, 3, 4, 5,
4629 6, 7, -1, 9, 10, 11, 12, 139, 140, 141,
4630 16, -1, 18, 19, 20, 21, 22, 23, 24, 151,
4631 -1, 153, -1, -1, 30, 31, 32, 33, 34, 35,
4632 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4633 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4634 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4635 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4636 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4637 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4638 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4639 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4640 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4641 -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
4642 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4643 20, 21, 22, 23, 24, 151, -1, 153, -1, -1,
4644 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4645 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4646 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4647 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4648 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4649 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4650 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4651 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4652 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4653 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4654 -1, -1, -1, -1, -1, -1, -1, -1, -1, 139,
4655 140, 141, -1, -1, -1, -1, -1, -1, -1, 149,
4656 -1, 151, 1, 153, 3, 4, 5, 6, 7, -1,
4657 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
4658 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4659 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4660 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
4661 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
4662 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4663 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4664 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4665 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4666 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
4667 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4668 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4669 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4670 139, 140, 141, -1, -1, -1, -1, -1, -1, -1,
4671 149, -1, 151, 1, 153, 3, 4, 5, 6, 7,
4672 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
4673 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4674 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4675 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
4676 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4677 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4678 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4679 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4680 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4681 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4682 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4683 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4684 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4685 -1, 139, 140, 141, -1, -1, 144, -1, -1, -1,
4686 -1, -1, -1, 151, 1, 153, 3, 4, 5, 6,
4687 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
4688 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4689 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4690 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4691 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4692 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4693 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4694 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4695 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4696 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4697 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4698 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4699 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4700 -1, -1, 139, 140, 141, -1, -1, 144, -1, -1,
4701 -1, -1, -1, -1, 151, 1, 153, 3, 4, 5,
4702 6, 7, -1, -1, 10, 11, 12, -1, -1, -1,
4703 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4704 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4705 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4706 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4707 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4708 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4709 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4710 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4711 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4712 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4713 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4714 -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
4715 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4716 20, 21, 22, 23, 24, 151, -1, 153, -1, -1,
4717 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4718 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4719 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4720 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4721 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4722 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4723 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4724 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4725 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4726 120, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4727 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4728 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4729 24, 151, -1, 153, -1, -1, 30, 31, 32, 33,
4730 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4731 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4732 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
4733 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4734 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4735 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4736 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4737 104, 105, -1, 107, 108, 109, 110, 111, 112, 113,
4738 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4739 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4740 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4741 18, 19, 20, 21, 22, 23, 24, -1, -1, 153,
4742 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4743 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4744 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4745 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4746 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4747 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4748 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4749 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
4750 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4751 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4752 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4753 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4754 22, 23, 24, 151, -1, 153, -1, -1, 30, 31,
4755 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4756 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4757 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4758 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4759 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4760 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4761 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4762 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
4763 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4764 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4765 6, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4766 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4767 -1, 153, -1, -1, 30, 31, 32, 33, 34, 35,
4768 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4769 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4770 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4771 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4772 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4773 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4774 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4775 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4776 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4777 -1, -1, -1, 3, 4, 5, 6, 7, -1, -1,
4778 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4779 20, 21, 22, 23, 24, 151, -1, -1, -1, -1,
4780 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4781 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4782 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4783 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4784 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4785 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4786 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4787 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4788 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4789 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4790 -1, -1, -1, -1, -1, -1, -1, -1, -1, 139,
4791 140, 141, -1, -1, -1, -1, -1, -1, -1, -1,
4792 -1, 151, 3, 4, 5, 6, 7, 8, 9, 10,
4793 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
4794 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
4795 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
4796 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4797 51, 52, 53, 54, 55, 56, 57, -1, -1, -1,
4798 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4799 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4800 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4801 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4802 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4803 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4804 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4805 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4806 141, -1, -1, -1, -1, -1, 147, 148, 3, 4,
4807 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
4808 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
4809 25, 26, -1, -1, -1, 30, 31, 32, 33, 34,
4810 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
4811 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4812 55, 56, 57, -1, -1, -1, -1, -1, -1, -1,
4813 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4814 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4815 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4816 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4817 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4818 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4819 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4820 135, 136, 137, 138, -1, 140, 141, -1, -1, -1,
4821 -1, -1, 147, 3, 4, 5, 6, 7, 8, 9,
4822 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
4823 20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
4824 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4825 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4826 50, 51, 52, 53, 54, -1, 56, -1, -1, -1,
4827 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4828 -1, -1, -1, -1, -1, 75, 76, 77, 78, 79,
4829 80, 81, 82, 83, -1, -1, 86, 87, -1, -1,
4830 -1, -1, 92, 93, 94, 95, -1, -1, -1, -1,
4831 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
4832 -1, 111, -1, -1, -1, -1, -1, -1, -1, -1,
4833 -1, -1, -1, -1, -1, -1, -1, -1, -1, 129,
4834 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4835 140, 141, -1, -1, -1, -1, -1, 147, 3, 4,
4836 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
4837 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
4838 25, 26, -1, -1, -1, 30, 31, 32, 33, 34,
4839 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
4840 45, 46, 47, 48, 49, 50, 51, 52, 53, -1,
4841 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
4842 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4843 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4844 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4845 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4846 -1, -1, 107, 108, -1, -1, 111, -1, -1, -1,
4847 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4848 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4849 135, 136, 137, 138, -1, 140, 141, -1, -1, -1,
4850 -1, -1, 147, 3, 4, 5, 6, 7, 8, 9,
4851 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
4852 20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
4853 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4854 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4855 50, 51, 52, 53, -1, -1, 56, -1, -1, -1,
4856 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4857 -1, -1, -1, -1, -1, 75, 76, 77, 78, 79,
4858 80, 81, 82, 83, -1, -1, 86, 87, -1, -1,
4859 -1, -1, 92, 93, 94, 95, -1, -1, -1, -1,
4860 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
4861 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4862 -1, -1, -1, -1, -1, -1, -1, -1, -1, 129,
4863 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4864 140, 141, 3, 4, 5, -1, 7, 147, -1, -1,
4865 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
4866 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4867 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4868 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
4869 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4870 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4871 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4872 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4873 -1, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4874 101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
4875 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4876 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4877 -1, 3, 4, 5, -1, 7, -1, -1, 139, 11,
4878 12, -1, -1, -1, 16, 146, 18, 19, 20, 21,
4879 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4880 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4881 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4882 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4883 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4884 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4885 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4886 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4887 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
4888 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4889 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4890 3, 4, 5, 6, 7, -1, -1, 139, 11, 12,
4891 -1, -1, -1, 16, 146, 18, 19, 20, 21, 22,
4892 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4893 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4894 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
4895 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4896 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4897 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4898 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4899 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4900 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
4901 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4902 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
4903 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
4904 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4905 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4906 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
4907 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
4908 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
4909 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4910 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4911 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4912 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4913 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
4914 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4915 -1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
4916 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4917 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4918 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4919 -1, -1, -1, -1, 45, 46, -1, 48, 49, 50,
4920 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4921 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4922 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4923 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4924 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4925 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4926 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4927 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
4928 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
4929 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4930 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4931 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4932 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
4933 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
4934 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4935 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4936 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4937 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4938 105, -1, 107, 108, 109, 110, 111, 112, 113, 114,
4939 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4940 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
4941 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
4942 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4943 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4944 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
4945 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
4946 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4947 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4948 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4949 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4950 -1, -1, 101, 102, -1, 104, 105, -1, 107, 108,
4951 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4952 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4953 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
4954 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
4955 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4956 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4957 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
4958 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
4959 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4960 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4961 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4962 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4963 -1, 104, 105, -1, 107, 108, 109, 110, 111, 112,
4964 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4965 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
4966 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
4967 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4968 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4969 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
4970 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
4971 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
4972 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4973 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4974 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4975 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4976 107, 108, -1, 110, 111, 112, 113, 114, 115, 116,
4977 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4978 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
4979 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4980 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4981 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4982 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
4983 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
4984 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4985 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4986 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4987 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4988 101, 102, -1, 104, 105, -1, -1, 108, 109, 110,
4989 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4990 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
4991 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
4992 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4993 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4994 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4995 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
4996 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
4997 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4998 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4999 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5000 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5001 105, -1, 107, 108, -1, 110, 111, 112, 113, 114,
5002 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5003 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5004 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5005 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5006 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5007 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5008 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
5009 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5010 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5011 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5012 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5013 -1, -1, 101, 102, -1, 104, 105, -1, -1, 108,
5014 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5015 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5016 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5017 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5018 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5019 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5020 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5021 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5022 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5023 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5024 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5025 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5026 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
5027 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5028 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5029 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5030 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5031 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5032 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5033 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5034 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5035 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5036 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5037 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
5038 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5039 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5040 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5041 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5042 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
5043 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5044 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5045 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5046 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5047 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5048 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5049 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5050 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5051 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
5052 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5053 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5054 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5055 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5056 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5057 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5058 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5059 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5060 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5061 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5062 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5063 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5064 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
5065 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5066 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5067 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5068 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5069 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5070 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5071 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5072 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5073 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5074 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5075 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5076 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
5077 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5078 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5079 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5080 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5081 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5082 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5083 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5084 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5085 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5086 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5087 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5088 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5089 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
5090 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5091 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5092 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5093 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5094 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5095 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5096 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5097 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5098 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5099 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5100 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
5101 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5102 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5103 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5104 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5105 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
5106 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5107 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5108 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5109 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5110 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5111 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5112 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5113 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5114 101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
5115 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5116 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5117 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5118 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5119 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5120 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5121 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5122 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5123 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5124 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5125 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5126 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5127 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
5128 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5129 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5130 -1, -1, -1, 16, 139, 18, 19, 20, 21, 22,
5131 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5132 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5133 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5134 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5135 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5136 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5137 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5138 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5139 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
5140 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5141 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5142 11, 12, -1, -1, -1, 16, 139, 18, 19, 20,
5143 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5144 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5145 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5146 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5147 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5148 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5149 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5150 -1, -1, -1, 94, -1, -1, -1, 98, -1, -1,
5151 101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
5152 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5153 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5154 -1, -1, 11, 12, -1, -1, -1, 16, 139, 18,
5155 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5156 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5157 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5158 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5159 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5160 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5161 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5162 -1, -1, -1, -1, -1, -1, -1, -1, -1, 98,
5163 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
5164 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5165 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5166 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
5167 139, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5168 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5169 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5170 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5171 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5172 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5173 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5174 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5175 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5176 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5177 117, 118, -1, -1, -1, -1, -1, -1, 3, 4,
5178 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
5179 -1, 16, 139, 18, 19, 20, 21, 22, 23, 24,
5180 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5181 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5182 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5183 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5184 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5185 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5186 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5187 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5188 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
5189 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5190 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5191 -1, -1, -1, 16, 139, 18, 19, 20, 21, 22,
5192 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5193 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5194 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5195 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5196 63, 64, 65, 33, 34, 35, 36, -1, -1, -1,
5197 -1, -1, -1, -1, -1, -1, -1, -1, -1, 49,
5198 50, 51, 52, -1, -1, -1, 56, -1, -1, 59,
5199 60, 61, 62, 63, -1, 98, -1, -1, 101, 102,
5200 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
5201 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5202 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
5203 -1, 101, -1, -1, 104, 105, 139, 107, -1, -1,
5204 110, 111, 112, 113, 114, 115, 116, 117, 118, 33,
5205 34, 35, 36, -1, -1, -1, -1, -1, -1, -1,
5206 -1, -1, 132, -1, -1, 49, 50, 51, 52, 139,
5207 -1, -1, 56, -1, -1, 59, 60, 61, 62, 63,
5208 -1, -1, 33, 34, 35, 36, -1, -1, -1, -1,
5209 -1, -1, -1, -1, -1, -1, -1, -1, 49, 50,
5210 51, 52, -1, -1, -1, 56, 90, 91, 59, 60,
5211 61, 62, 63, -1, 98, -1, -1, 101, -1, -1,
5212 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
5213 114, 115, 116, 117, 118, -1, -1, -1, -1, 90,
5214 91, -1, -1, -1, -1, -1, -1, 98, 132, -1,
5215 101, -1, -1, 104, 105, 139, -1, -1, -1, 110,
5216 111, 112, 113, 114, 115, 116, 117, 118, 52, 53,
5217 -1, -1, 56, -1, -1, -1, -1, -1, -1, -1,
5218 -1, 132, -1, -1, -1, -1, -1, -1, 139, -1,
5219 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5220 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5221 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5222 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5223 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5224 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5225 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5226 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5227 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5228 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5229 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5230 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5231 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5232 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5233 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5234 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5235 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5236 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5237 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5238 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5239 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5240 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5241 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5242 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5243 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5244 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5245 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5246 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5247 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5248 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5249 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5250 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5251 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5252 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5253 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5254 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5255 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5256 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5257 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5258 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5259 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5260 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5261 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5262 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5263 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5264 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5265 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5266 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5267 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5268 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5269 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5270 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5271 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5272 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5273 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5274 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5275 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5276 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5277 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5278 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5279 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5280 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5281 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5282 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5283 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5284 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5285 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5286 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5287 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5288 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5289 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5290 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5291 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5292 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5293 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5294 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5295 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5296 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5297 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5298 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5299 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5300 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5301 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5302 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5303 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5304 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5305 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5306 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5307 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5308 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5309 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5310 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5311 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5312 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5313 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5314 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5315 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5316 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5317 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5318 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5319 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5320 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5321 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5322 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5323 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5324 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5325 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5326 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5327 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5328 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5329 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5330 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5331 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5332 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5333 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5334 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5335 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5336 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5337 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5338 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5339 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5340 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5341 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5342 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5343 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5344 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5345 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5346 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5347 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5348 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5349 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5350 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5351 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5352 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5353 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5354 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5355 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5356 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5357 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5358 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5359 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5360 134, 135, 136, 137, 138, -1, 140, 141, -1, -1,
5368 0, 155, 156, 0, 1, 3, 4, 5, 6, 7,
5369 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
5370 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
5371 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
5372 57, 59, 60, 61, 62, 63, 64, 65, 75, 76,
5373 90, 91, 98, 101, 102, 104, 105, 107, 110, 111,
5374 112, 113, 114, 115, 116, 117, 118, 139, 140, 141,
5375 157, 158, 159, 167, 169, 171, 179, 180, 182, 183,
5376 184, 186, 187, 188, 190, 191, 200, 203, 218, 233,
5377 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
5378 252, 279, 280, 333, 334, 335, 336, 337, 338, 339,
5379 342, 344, 345, 359, 360, 362, 363, 364, 365, 366,
5380 367, 368, 369, 405, 419, 159, 3, 4, 5, 6,
5381 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
5382 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
5383 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5384 45, 46, 47, 48, 49, 50, 51, 52, 53, 56,
5385 75, 76, 77, 78, 79, 80, 81, 82, 83, 86,
5386 87, 92, 93, 94, 95, 107, 108, 129, 130, 131,
5387 132, 133, 134, 135, 136, 137, 138, 140, 141, 147,
5388 194, 195, 196, 198, 199, 359, 39, 58, 98, 101,
5389 107, 108, 109, 112, 140, 183, 191, 200, 204, 210,
5390 213, 215, 233, 365, 366, 368, 369, 403, 404, 210,
5391 148, 211, 212, 148, 207, 211, 148, 153, 412, 54,
5392 195, 412, 143, 160, 143, 21, 22, 31, 32, 182,
5393 200, 233, 252, 200, 200, 200, 56, 1, 47, 101,
5394 163, 164, 165, 167, 185, 186, 419, 167, 220, 205,
5395 215, 403, 419, 204, 402, 403, 419, 46, 98, 139,
5396 146, 190, 218, 233, 365, 366, 369, 223, 54, 55,
5397 57, 194, 348, 361, 348, 349, 350, 152, 152, 152,
5398 152, 364, 179, 200, 200, 151, 153, 411, 417, 418,
5399 40, 41, 42, 43, 44, 37, 38, 26, 143, 207,
5400 211, 244, 281, 28, 245, 278, 126, 146, 101, 107,
5401 187, 126, 25, 77, 78, 79, 80, 81, 82, 83,
5402 84, 85, 86, 87, 88, 89, 94, 95, 127, 129,
5403 130, 131, 132, 133, 134, 135, 136, 137, 138, 202,
5404 202, 68, 96, 97, 145, 409, 219, 171, 175, 175,
5405 176, 177, 176, 175, 411, 418, 98, 184, 191, 233,
5406 257, 365, 366, 369, 52, 56, 94, 98, 192, 193,
5407 233, 365, 366, 369, 193, 33, 34, 35, 36, 49,
5408 50, 51, 52, 56, 148, 194, 367, 400, 210, 97,
5409 409, 410, 281, 336, 99, 99, 146, 204, 56, 204,
5410 204, 204, 348, 126, 100, 146, 214, 419, 97, 145,
5411 409, 99, 99, 146, 214, 210, 412, 413, 210, 91,
5412 209, 210, 215, 377, 403, 419, 171, 413, 171, 54,
5413 64, 65, 168, 148, 201, 157, 163, 97, 409, 99,
5414 167, 166, 185, 149, 411, 418, 413, 221, 413, 150,
5415 146, 153, 416, 146, 416, 144, 416, 412, 56, 364,
5416 187, 189, 146, 97, 145, 409, 270, 271, 66, 119,
5417 121, 122, 351, 119, 119, 351, 67, 351, 340, 346,
5418 343, 347, 77, 151, 159, 175, 175, 175, 175, 167,
5419 171, 171, 282, 283, 106, 181, 286, 287, 286, 107,
5420 179, 204, 215, 216, 217, 185, 146, 190, 146, 169,
5421 170, 179, 191, 200, 204, 206, 217, 233, 369, 172,
5422 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
5423 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
5424 200, 200, 200, 200, 52, 53, 56, 198, 207, 406,
5425 407, 209, 215, 52, 53, 56, 198, 207, 406, 161,
5426 163, 13, 253, 417, 253, 163, 175, 163, 411, 225,
5427 56, 97, 145, 409, 25, 171, 52, 56, 192, 130,
5428 370, 97, 145, 409, 228, 401, 229, 68, 97, 408,
5429 52, 56, 406, 170, 200, 206, 170, 206, 197, 124,
5430 204, 107, 204, 213, 403, 52, 56, 209, 52, 56,
5431 404, 413, 149, 413, 146, 413, 146, 413, 195, 222,
5432 200, 144, 144, 406, 406, 206, 160, 413, 165, 413,
5433 403, 146, 189, 52, 56, 209, 52, 56, 272, 353,
5434 352, 119, 341, 351, 66, 119, 119, 341, 66, 119,
5435 200, 144, 284, 282, 10, 251, 288, 251, 204, 146,
5436 44, 413, 189, 146, 44, 126, 44, 97, 145, 409,
5437 173, 412, 99, 99, 207, 211, 412, 414, 146, 99,
5438 99, 207, 208, 211, 419, 251, 8, 246, 329, 419,
5439 163, 13, 163, 251, 27, 254, 417, 251, 25, 224,
5440 293, 17, 248, 291, 52, 56, 209, 52, 56, 176,
5441 227, 371, 226, 52, 56, 192, 209, 161, 171, 230,
5442 231, 208, 211, 195, 204, 204, 214, 99, 99, 414,
5443 99, 99, 377, 403, 171, 416, 187, 414, 273, 354,
5444 54, 55, 57, 358, 369, 152, 351, 152, 152, 152,
5445 285, 144, 289, 107, 204, 167, 189, 167, 200, 52,
5446 56, 209, 52, 56, 52, 56, 90, 91, 98, 101,
5447 104, 105, 110, 132, 303, 304, 305, 308, 323, 324,
5448 326, 327, 328, 333, 334, 337, 338, 339, 342, 344,
5449 345, 366, 128, 170, 206, 170, 206, 181, 150, 99,
5450 170, 206, 170, 206, 181, 204, 217, 330, 419, 9,
5451 15, 247, 249, 332, 419, 14, 249, 250, 255, 256,
5452 419, 256, 178, 294, 291, 251, 107, 204, 290, 251,
5453 414, 163, 417, 175, 161, 414, 251, 413, 148, 372,
5454 373, 194, 281, 278, 99, 413, 146, 413, 274, 355,
5455 131, 265, 266, 419, 265, 204, 414, 324, 324, 56,
5456 192, 311, 309, 414, 310, 412, 415, 325, 52, 100,
5457 174, 131, 88, 89, 97, 145, 148, 306, 307, 200,
5458 170, 206, 100, 331, 419, 163, 162, 163, 175, 251,
5459 251, 295, 251, 204, 146, 253, 251, 161, 417, 251,
5460 52, 54, 55, 56, 57, 58, 77, 91, 101, 107,
5461 108, 109, 133, 136, 374, 376, 377, 378, 379, 380,
5462 381, 382, 383, 384, 387, 388, 389, 390, 391, 394,
5463 395, 396, 397, 398, 161, 376, 382, 232, 148, 276,
5464 376, 356, 262, 264, 267, 380, 382, 383, 385, 386,
5465 389, 390, 392, 393, 396, 398, 412, 163, 161, 303,
5466 107, 303, 312, 313, 314, 316, 58, 112, 317, 318,
5467 319, 320, 321, 322, 388, 144, 270, 326, 308, 324,
5468 324, 192, 414, 413, 112, 312, 317, 312, 317, 98,
5469 191, 233, 365, 366, 369, 253, 163, 253, 296, 107,
5470 204, 163, 251, 101, 107, 258, 259, 260, 261, 379,
5471 413, 413, 126, 146, 375, 204, 146, 399, 419, 34,
5472 52, 146, 399, 399, 146, 375, 52, 146, 375, 52,
5473 251, 417, 146, 372, 376, 275, 357, 267, 131, 126,
5474 146, 263, 98, 233, 146, 399, 399, 399, 146, 263,
5475 146, 263, 151, 413, 52, 146, 414, 107, 303, 316,
5476 146, 348, 415, 146, 303, 34, 52, 348, 413, 413,
5477 414, 414, 56, 97, 145, 409, 163, 332, 163, 301,
5478 302, 303, 314, 317, 204, 256, 291, 292, 260, 379,
5479 146, 413, 146, 204, 374, 377, 381, 394, 396, 384,
5480 388, 390, 398, 382, 391, 396, 380, 382, 161, 267,
5481 29, 123, 277, 163, 131, 233, 262, 393, 396, 56,
5482 97, 385, 390, 382, 392, 396, 382, 52, 268, 269,
5483 378, 146, 315, 316, 52, 146, 146, 124, 319, 321,
5484 322, 52, 56, 209, 52, 56, 329, 255, 253, 40,
5485 41, 146, 413, 258, 261, 259, 413, 146, 375, 146,
5486 375, 399, 146, 375, 146, 375, 375, 251, 149, 161,
5487 163, 120, 146, 263, 146, 263, 52, 56, 399, 146,
5488 263, 146, 263, 263, 146, 412, 315, 146, 146, 315,
5489 414, 297, 175, 175, 312, 146, 146, 382, 396, 382,
5490 382, 251, 144, 382, 396, 382, 382, 269, 316, 315,
5491 298, 259, 375, 146, 375, 375, 375, 263, 146, 263,
5492 263, 263, 299, 382, 382, 163, 375, 263, 256, 293,
5499 0, 154, 156, 155, 157, 158, 158, 158, 158, 159,
5500 159, 160, 162, 161, 161, 163, 164, 164, 164, 164,
5501 165, 166, 165, 168, 167, 167, 167, 167, 167, 167,
5502 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
5503 167, 169, 169, 169, 169, 169, 169, 169, 169, 170,
5504 170, 170, 171, 171, 171, 171, 171, 172, 173, 174,
5505 171, 171, 175, 177, 178, 176, 179, 179, 180, 180,
5506 181, 182, 183, 183, 183, 183, 183, 183, 183, 183,
5507 183, 183, 183, 184, 184, 185, 185, 186, 186, 186,
5508 186, 186, 186, 186, 186, 186, 186, 187, 187, 188,
5509 188, 189, 189, 190, 190, 190, 190, 190, 190, 190,
5510 190, 190, 191, 191, 191, 191, 191, 191, 191, 191,
5511 191, 192, 192, 193, 193, 193, 194, 194, 194, 194,
5512 194, 195, 195, 196, 197, 196, 198, 198, 198, 198,
5513 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
5514 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
5515 198, 198, 198, 198, 198, 198, 199, 199, 199, 199,
5516 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
5517 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
5518 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
5519 199, 199, 199, 199, 199, 199, 199, 200, 200, 200,
5520 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
5521 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
5522 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
5523 200, 200, 200, 200, 200, 200, 200, 201, 200, 200,
5524 200, 202, 202, 202, 202, 203, 203, 204, 205, 205,
5525 205, 205, 206, 206, 207, 207, 207, 208, 208, 209,
5526 209, 209, 209, 209, 210, 210, 210, 210, 210, 212,
5527 211, 213, 214, 214, 215, 215, 215, 215, 216, 216,
5528 217, 217, 217, 218, 218, 218, 218, 218, 218, 218,
5529 218, 218, 218, 218, 219, 218, 220, 218, 221, 218,
5530 218, 218, 218, 218, 218, 218, 218, 218, 218, 222,
5531 218, 218, 218, 218, 218, 218, 223, 218, 218, 218,
5532 218, 218, 224, 218, 225, 218, 218, 218, 226, 218,
5533 227, 218, 228, 218, 229, 230, 218, 231, 232, 218,
5534 218, 218, 218, 218, 233, 234, 235, 236, 237, 238,
5535 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
5536 249, 250, 251, 252, 253, 253, 253, 254, 254, 255,
5537 255, 256, 256, 257, 257, 258, 258, 259, 259, 260,
5538 260, 260, 260, 260, 261, 261, 262, 262, 262, 262,
5539 262, 263, 263, 264, 264, 264, 264, 264, 264, 264,
5540 264, 264, 264, 264, 264, 264, 264, 264, 265, 265,
5541 266, 266, 267, 267, 268, 268, 269, 269, 271, 272,
5542 273, 274, 275, 270, 276, 276, 277, 277, 278, 279,
5543 279, 279, 279, 280, 280, 280, 280, 280, 280, 280,
5544 280, 280, 281, 281, 283, 284, 285, 282, 287, 288,
5545 289, 286, 290, 290, 290, 290, 291, 292, 292, 294,
5546 295, 296, 297, 298, 299, 293, 300, 300, 301, 301,
5547 301, 302, 302, 302, 302, 302, 303, 304, 304, 305,
5548 305, 306, 307, 308, 308, 308, 308, 308, 308, 308,
5549 309, 308, 308, 310, 308, 308, 311, 308, 312, 312,
5550 312, 312, 312, 312, 312, 312, 313, 313, 314, 314,
5551 314, 314, 315, 315, 316, 317, 317, 317, 317, 317,
5552 317, 318, 318, 319, 319, 320, 320, 321, 321, 322,
5553 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
5554 324, 324, 324, 324, 324, 324, 324, 324, 324, 325,
5555 324, 326, 327, 328, 328, 328, 329, 329, 330, 330,
5556 330, 331, 331, 332, 332, 333, 333, 334, 335, 335,
5557 335, 336, 337, 338, 339, 340, 340, 341, 341, 342,
5558 343, 343, 344, 345, 346, 346, 347, 347, 348, 348,
5559 349, 349, 350, 350, 351, 352, 351, 353, 354, 355,
5560 356, 357, 351, 358, 358, 358, 358, 359, 359, 360,
5561 361, 361, 361, 361, 362, 363, 363, 364, 364, 364,
5562 364, 365, 365, 365, 365, 365, 366, 366, 366, 366,
5563 366, 366, 366, 367, 367, 368, 368, 369, 369, 371,
5564 370, 370, 372, 372, 372, 373, 372, 374, 374, 374,
5565 374, 374, 375, 375, 376, 376, 376, 376, 376, 376,
5566 376, 376, 376, 376, 376, 376, 376, 376, 376, 377,
5567 378, 378, 378, 378, 379, 379, 380, 381, 381, 382,
5568 382, 383, 384, 384, 385, 385, 386, 386, 387, 387,
5569 388, 388, 389, 390, 390, 391, 392, 393, 393, 394,
5570 394, 395, 395, 396, 396, 397, 397, 398, 399, 399,
5571 400, 401, 400, 402, 402, 403, 403, 404, 404, 404,
5572 404, 405, 405, 405, 406, 406, 406, 406, 407, 407,
5573 407, 408, 408, 409, 409, 410, 410, 411, 411, 412,
5574 412, 413, 414, 415, 416, 416, 416, 417, 417, 418,
5581 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
5582 2, 3, 0, 6, 3, 2, 1, 1, 3, 2,
5583 1, 0, 3, 0, 4, 3, 3, 3, 2, 3,
5584 3, 3, 3, 3, 4, 1, 3, 3, 5, 3,
5585 1, 3, 3, 6, 5, 5, 5, 5, 3, 1,
5586 3, 1, 1, 3, 3, 3, 2, 0, 0, 0,
5587 6, 1, 1, 0, 0, 4, 1, 1, 1, 4,
5588 3, 1, 2, 3, 4, 5, 4, 5, 2, 2,
5589 2, 2, 2, 1, 3, 1, 3, 1, 2, 3,
5590 5, 2, 4, 2, 4, 1, 3, 1, 3, 2,
5591 3, 1, 3, 1, 1, 4, 3, 3, 3, 3,
5592 2, 1, 1, 1, 4, 3, 3, 3, 3, 2,
5593 1, 1, 1, 2, 1, 3, 1, 1, 1, 1,
5594 1, 1, 1, 1, 0, 4, 1, 1, 1, 1,
5595 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5596 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5597 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5598 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5599 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5600 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5601 1, 1, 1, 1, 1, 1, 1, 3, 3, 6,
5602 5, 5, 5, 5, 4, 3, 3, 3, 2, 2,
5603 2, 2, 3, 3, 3, 3, 3, 3, 4, 2,
5604 2, 3, 3, 3, 3, 1, 3, 3, 3, 3,
5605 3, 2, 2, 3, 3, 3, 3, 0, 4, 6,
5606 1, 1, 1, 1, 1, 3, 3, 1, 1, 2,
5607 4, 2, 1, 3, 3, 5, 3, 1, 1, 1,
5608 1, 2, 4, 2, 1, 2, 2, 4, 1, 0,
5609 2, 2, 2, 1, 1, 2, 3, 4, 1, 1,
5610 3, 4, 2, 1, 1, 1, 1, 1, 1, 1,
5611 1, 1, 1, 1, 0, 4, 0, 3, 0, 4,
5612 3, 3, 2, 3, 3, 1, 4, 3, 1, 0,
5613 6, 4, 3, 2, 1, 2, 0, 3, 6, 6,
5614 4, 4, 0, 6, 0, 5, 5, 6, 0, 6,
5615 0, 7, 0, 5, 0, 0, 7, 0, 0, 9,
5616 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5617 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5618 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
5619 5, 1, 2, 1, 1, 1, 3, 1, 3, 1,
5620 3, 5, 1, 3, 2, 1, 4, 2, 2, 2,
5621 1, 2, 0, 6, 8, 4, 6, 4, 2, 6,
5622 2, 4, 6, 2, 4, 2, 4, 1, 1, 1,
5623 3, 4, 1, 4, 1, 3, 1, 1, 0, 0,
5624 0, 0, 0, 7, 4, 1, 3, 3, 3, 2,
5625 4, 5, 5, 2, 4, 4, 3, 3, 3, 2,
5626 1, 4, 3, 3, 0, 0, 0, 5, 0, 0,
5627 0, 5, 1, 2, 3, 4, 5, 1, 1, 0,
5628 0, 0, 0, 0, 0, 11, 1, 1, 1, 3,
5629 3, 1, 2, 3, 1, 1, 1, 3, 1, 3,
5630 1, 1, 1, 1, 4, 4, 3, 4, 4, 3,
5631 0, 4, 2, 0, 4, 2, 0, 4, 1, 1,
5632 2, 3, 5, 2, 4, 1, 2, 3, 2, 4,
5633 1, 3, 1, 3, 1, 3, 1, 2, 1, 3,
5634 1, 1, 3, 2, 1, 1, 3, 2, 1, 2,
5635 1, 3, 3, 2, 2, 1, 1, 1, 2, 2,
5636 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
5637 3, 1, 2, 2, 3, 1, 6, 1, 1, 1,
5638 1, 2, 1, 2, 1, 1, 1, 1, 1, 1,
5639 2, 3, 3, 3, 4, 0, 3, 1, 2, 4,
5640 0, 3, 4, 4, 0, 3, 0, 3, 0, 2,
5641 0, 2, 0, 2, 1, 0, 3, 0, 0, 0,
5642 0, 0, 8, 1, 1, 1, 1, 1, 1, 2,
5643 1, 1, 1, 1, 3, 1, 2, 1, 1, 1,
5644 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5645 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
5646 4, 0, 3, 5, 3, 0, 3, 4, 2, 2,
5647 2, 1, 2, 0, 6, 8, 4, 6, 4, 6,
5648 2, 4, 6, 2, 4, 2, 4, 1, 0, 1,
5649 1, 1, 1, 1, 1, 1, 1, 1, 3, 1,
5650 3, 1, 2, 1, 2, 1, 1, 3, 1, 3,
5651 1, 1, 2, 2, 1, 3, 3, 1, 3, 1,
5652 3, 1, 1, 2, 1, 1, 1, 2, 2, 1,
5653 1, 0, 4, 1, 2, 1, 3, 3, 2, 4,
5654 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5655 1, 1, 1, 1, 1, 1, 1, 0, 1, 0,
5656 1, 2, 2, 2, 0, 1, 1, 1, 1, 1,
5663#define yyerrok (yyerrstatus = 0)
5664#define yyclearin (yychar = YYEMPTY)
5666#define YYACCEPT goto yyacceptlab
5667#define YYABORT goto yyabortlab
5668#define YYERROR goto yyerrorlab
5669#define YYNOMEM goto yyexhaustedlab
5672#define YYRECOVERING() (!!yyerrstatus)
5674#define YYBACKUP(Token, Value) \
5676 if (yychar == YYEMPTY) \
5680 YYPOPSTACK (yylen); \
5686 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
5693#define YYERRCODE YYUNDEF
5699#ifndef YYLLOC_DEFAULT
5700# define YYLLOC_DEFAULT(Current, Rhs, N) \
5704 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
5705 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
5706 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
5707 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
5711 (Current).first_line = (Current).last_line = \
5712 YYRHSLOC (Rhs, 0).last_line; \
5713 (Current).first_column = (Current).last_column = \
5714 YYRHSLOC (Rhs, 0).last_column; \
5719#define YYRHSLOC(Rhs, K) ((Rhs)[K])
5727# define YYFPRINTF fprintf
5730# define YYDPRINTF(Args) \
5741# ifndef YYLOCATION_PRINT
5743# if defined YY_LOCATION_PRINT
5747# define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
5749# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5755yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
5773 else if (0 <= end_col && yylocp->
first_column < end_col)
5779# define YYLOCATION_PRINT yy_location_print_
5783# define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
5787# define YYLOCATION_PRINT(File, Loc) ((void) 0)
5790# define YY_LOCATION_PRINT YYLOCATION_PRINT
5796# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
5800 YYFPRINTF (p, "%s ", Title); \
5801 yy_symbol_print (stderr, \
5802 Kind, Value, Location, p); \
5803 YYFPRINTF (p, "\n"); \
5813yy_symbol_value_print (
FILE *yyo,
5816 FILE *yyoutput = yyo;
5834#line 5833 "ripper.c"
5846#line 5845 "ripper.c"
5858#line 5857 "ripper.c"
5870#line 5869 "ripper.c"
5882#line 5881 "ripper.c"
5894#line 5893 "ripper.c"
5906#line 5905 "ripper.c"
5918#line 5917 "ripper.c"
5930#line 5929 "ripper.c"
5942#line 5941 "ripper.c"
5954#line 5953 "ripper.c"
5966#line 5965 "ripper.c"
5978#line 5977 "ripper.c"
5990#line 5989 "ripper.c"
6002#line 6001 "ripper.c"
6014#line 6013 "ripper.c"
6029yy_symbol_print (
FILE *yyo,
6033 yykind <
YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
6037 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
6048#define yy_stack_print(b, t) ruby_parser_yy_stack_print(b, t, p)
6051 for (; yybottom <= yytop; yybottom++)
6053 int yybot = *yybottom;
6059# define YY_STACK_PRINT(Bottom, Top) \
6062 yy_stack_print ((Bottom), (Top)); \
6074 int yylno = yyrline[yyrule];
6075 int yynrhs = yyr2[yyrule];
6077 YYFPRINTF (p,
"Reducing stack by rule %d (line %d):\n",
6080 for (yyi = 0; yyi < yynrhs; yyi++)
6085 &yyvsp[(yyi + 1) - (yynrhs)],
6086 &(yylsp[(yyi + 1) - (yynrhs)]), p);
6091# define YY_REDUCE_PRINT(Rule) \
6094 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
6103# define YYDPRINTF(Args) ((void) 0)
6104# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
6105# define YY_STACK_PRINT(Bottom, Top)
6106# define YY_REDUCE_PRINT(Rule)
6112# define YYINITDEPTH 200
6123# define YYMAXDEPTH 10000
6147 int yyn = yypact[+*yyctx->
yyssp];
6153 int yyxbegin = yyn < 0 ? -yyn : 0;
6155 int yychecklim =
YYLAST - yyn + 1;
6158 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
6164 else if (yycount == yyargn)
6170 if (yyarg && yycount == 0 && 0 < yyargn)
6179# if defined __GLIBC__ && defined _STRING_H
6180# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
6184yystrlen (
const char *yystr)
6187 for (yylen = 0; yystr[yylen]; yylen++)
6195# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
6196# define yystpcpy stpcpy
6201yystpcpy (
char *yydest,
const char *yysrc)
6204 const char *yys = yysrc;
6206 while ((*yyd++ = *yys++) !=
'\0')
6223yytnamerr (
char *yyres,
const char *yystr)
6228 char const *yyp = yystr;
6234 goto do_not_strip_quotes;
6238 goto do_not_strip_quotes;
6254 do_not_strip_quotes: ;
6258 return yystpcpy (yyres, yystr) - yyres;
6260 return yystrlen (yystr);
6298 yyarg[yycount] = yyctx->
yytoken;
6300 yyn = yypcontext_expected_tokens (yyctx,
6301 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
6322 enum { YYARGS_MAX = 5 };
6332 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
6338#define YYCASE_(N, S) \
6344 YYCASE_(1,
YY_(
"syntax error, unexpected %s"));
6345 YYCASE_(2,
YY_(
"syntax error, unexpected %s, expecting %s"));
6346 YYCASE_(3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
6347 YYCASE_(4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
6348 YYCASE_(5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
6354 yysize = yystrlen (yyformat) - 2 * yycount + 1;
6357 for (yyi = 0; yyi < yycount; ++yyi)
6368 if (*yymsg_alloc < yysize)
6370 *yymsg_alloc = 2 * yysize;
6371 if (! (yysize <= *yymsg_alloc
6383 while ((*yyp = *yyformat) !=
'\0')
6384 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
6386 yyp +=
yytnamerr (yyp, yytname[yyarg[yyi++]]);
6404yydestruct (
const char *yymsg,
6443# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
6447YYLTYPE yylloc = yyloc_default;
6454 int yyerrstatus = 0;
6492 char *yymsg = yymsgbuf;
6495#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
6507#line 1002 "ripper.y"
6512#line 6508 "ripper.c"
6531 YYDPRINTF ((p,
"Entering state %d\n", yystate));
6538 if (yyss + yystacksize - 1 <= yyssp)
6539#if !defined yyoverflow && !defined YYSTACK_RELOCATE
6546# if defined yyoverflow
6559 yyoverflow (
YY_(
"memory exhausted"),
6560 &yyss1, yysize *
YYSIZEOF (*yyssp),
6561 &yyvs1, yysize *
YYSIZEOF (*yyvsp),
6562 &yyls1, yysize *
YYSIZEOF (*yylsp),
6586# undef YYSTACK_RELOCATE
6592 yyssp = yyss + yysize - 1;
6593 yyvsp = yyvs + yysize - 1;
6594 yylsp = yyls + yysize - 1;
6597 YYDPRINTF ((p,
"Stack size increased to %ld\n",
6598 YY_CAST (
long, yystacksize)));
6601 if (yyss + yystacksize - 1 <= yyssp)
6621 yyn = yypact[yystate];
6631 yychar = yylex (&
yylval, &yylloc, p);
6638 YYDPRINTF ((p,
"Now at end of input.\n"));
6648 yyerror_range[1] = yylloc;
6660 if (yyn < 0 ||
YYLAST < yyn || yycheck[yyn] != yytoken)
6693 yyn = yydefact[yystate];
6714 yyval = yyvsp[1-yylen];
6718 yyerror_range[1] = yyloc;
6723#line 1204 "ripper.y"
6728#line 6724 "ripper.c"
6732#line 1209 "ripper.y"
6739 while (node->nd_next) {
6740 node = node->nd_next;
6742 node = node->nd_head;
6744 node = remove_begin(node);
6749 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(program,v1);p->result=v2;}
6752#line 6748 "ripper.c"
6756#line 1231 "ripper.y"
6758 (yyval.
val) = void_stmts(p, (yyvsp[-1].val));
6760#line 6756 "ripper.c"
6764#line 1237 "ripper.y"
6769 {
VALUE v1,v2,v3,v4,v5;v1=dispatch0(stmts_new);v2=dispatch0(void_stmt);v3=v1;v4=v2;v5=dispatch2(stmts_add,v3,v4);(yyval.
val)=v5;}
6771#line 6767 "ripper.c"
6775#line 1244 "ripper.y"
6778 (yyval.
val) = newline_node((yyvsp[0].val));
6780 {
VALUE v1,v2,v3,v4;v1=dispatch0(stmts_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(stmts_add,v2,v3);(yyval.
val)=v4;}
6782#line 6778 "ripper.c"
6786#line 1251 "ripper.y"
6789 (yyval.
val) = block_append(p, (yyvsp[-2].val), newline_node((yyvsp[0].val)));
6791 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(stmts_add,v1,v2);(yyval.
val)=v3;}
6793#line 6789 "ripper.c"
6797#line 1258 "ripper.y"
6799 (yyval.
val) = remove_begin((yyvsp[0].val));
6801#line 6797 "ripper.c"
6805#line 1265 "ripper.y"
6807 (yyval.
val) = (yyvsp[0].val);
6809#line 6805 "ripper.c"
6813#line 1271 "ripper.y"
6820 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(BEGIN,v1);(yyval.
val)=v2;}
6822#line 6818 "ripper.c"
6826#line 1283 "ripper.y"
6827 {
if (!(yyvsp[-1].val)) {
yyerror1(&(yylsp[0]),
"else without rescue is useless");}}
6828#line 6824 "ripper.c"
6832#line 1286 "ripper.y"
6835 (yyval.
val) = new_bodystmt(p, (yyvsp[-5].val), (yyvsp[-4].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
6837 {
VALUE v1,v2,v3,v4,v5;v1=escape_Qundef((yyvsp[-5].val));v2=escape_Qundef((yyvsp[-4].val));v3=escape_Qundef((yyvsp[-1].val));v4=escape_Qundef((yyvsp[0].val));v5=dispatch4(bodystmt,v1,v2,v3,v4);(yyval.
val)=v5;}
6839#line 6835 "ripper.c"
6843#line 1295 "ripper.y"
6846 (yyval.
val) = new_bodystmt(p, (yyvsp[-2].val), (yyvsp[-1].
val), 0, (yyvsp[0].val), &(yyloc));
6848 {
VALUE v1,v2,v3,v4,v5;v1=escape_Qundef((yyvsp[-2].val));v2=escape_Qundef((yyvsp[-1].val));v3=
Qnil;v4=escape_Qundef((yyvsp[0].val));v5=dispatch4(bodystmt,v1,v2,v3,v4);(yyval.
val)=v5;}
6850#line 6846 "ripper.c"
6854#line 1304 "ripper.y"
6856 (yyval.
val) = void_stmts(p, (yyvsp[-1].val));
6858#line 6854 "ripper.c"
6862#line 1310 "ripper.y"
6867 {
VALUE v1,v2,v3,v4,v5;v1=dispatch0(stmts_new);v2=dispatch0(void_stmt);v3=v1;v4=v2;v5=dispatch2(stmts_add,v3,v4);(yyval.
val)=v5;}
6869#line 6865 "ripper.c"
6873#line 1317 "ripper.y"
6876 (yyval.
val) = newline_node((yyvsp[0].val));
6878 {
VALUE v1,v2,v3,v4;v1=dispatch0(stmts_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(stmts_add,v2,v3);(yyval.
val)=v4;}
6880#line 6876 "ripper.c"
6884#line 1324 "ripper.y"
6887 (yyval.
val) = block_append(p, (yyvsp[-2].val), newline_node((yyvsp[0].val)));
6889 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(stmts_add,v1,v2);(yyval.
val)=v3;}
6891#line 6887 "ripper.c"
6895#line 1331 "ripper.y"
6897 (yyval.
val) = remove_begin((yyvsp[0].val));
6899#line 6895 "ripper.c"
6903#line 1337 "ripper.y"
6905 (yyval.
val) = (yyvsp[0].val);
6907#line 6903 "ripper.c"
6911#line 1341 "ripper.y"
6913 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
6915#line 6911 "ripper.c"
6919#line 1345 "ripper.y"
6921 (yyval.
val) = (yyvsp[0].val);
6923#line 6919 "ripper.c"
6927#line 1350 "ripper.y"
6929#line 6925 "ripper.c"
6933#line 1351 "ripper.y"
6938 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(
alias,v1,v2);(yyval.
val)=v3;}
6940#line 6936 "ripper.c"
6944#line 1358 "ripper.y"
6949 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(var_alias,v1,v2);(yyval.
val)=v3;}
6951#line 6947 "ripper.c"
6955#line 1365 "ripper.y"
6960 buf[1] = (
char)(yyvsp[0].val)->nd_nth;
6963 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(var_alias,v1,v2);(yyval.
val)=v3;}
6965#line 6961 "ripper.c"
6969#line 1375 "ripper.y"
6972 yyerror1(&(yylsp[0]),
"can't make alias for the number variables");
6975 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(var_alias,v1,v2);v4=v3;v5=dispatch1(alias_error,v4);(yyval.
val)=v5;}ripper_error(p);
6977#line 6973 "ripper.c"
6981#line 1383 "ripper.y"
6984 (yyval.
val) = (yyvsp[0].val);
6986 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(undef,v1);(yyval.
val)=v2;}
6988#line 6984 "ripper.c"
6992#line 1390 "ripper.y"
6995 (yyval.
val) = new_if(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
6996 fixpos((yyval.
val), (yyvsp[0].
val));
6998 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(if_mod,v1,v2);(yyval.
val)=v3;}
7000#line 6996 "ripper.c"
7004#line 1398 "ripper.y"
7007 (yyval.
val) = new_unless(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
7008 fixpos((yyval.
val), (yyvsp[0].
val));
7010 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(unless_mod,v1,v2);(yyval.
val)=v3;}
7012#line 7008 "ripper.c"
7016#line 1406 "ripper.y"
7023 (yyval.
val) =
NEW_WHILE(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].
val), 1, &(yyloc));
7026 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(while_mod,v1,v2);(yyval.
val)=v3;}
7028#line 7024 "ripper.c"
7032#line 1418 "ripper.y"
7039 (yyval.
val) =
NEW_UNTIL(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].
val), 1, &(yyloc));
7042 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(until_mod,v1,v2);(yyval.
val)=v3;}
7044#line 7040 "ripper.c"
7048#line 1430 "ripper.y"
7052 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7053 resq =
NEW_RESBODY(0, remove_begin((yyvsp[0].val)), 0, &loc);
7054 (yyval.
val) =
NEW_RESCUE(remove_begin((yyvsp[-2].val)), resq, 0, &(yyloc));
7056 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(rescue_mod,v1,v2);(yyval.
val)=v3;}
7058#line 7054 "ripper.c"
7062#line 1440 "ripper.y"
7065 rb_warn0(
"END in method; use at_exit");
7070 NODE_SCOPE, 0 , (yyvsp[-1].val) , 0 , &(yyloc));
7074 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(
END,v1);(yyval.
val)=v2;}
7076#line 7072 "ripper.c"
7080#line 1455 "ripper.y"
7084 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
7086 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(massign,v1,v2);(yyval.
val)=v3;}
7088#line 7084 "ripper.c"
7092#line 1463 "ripper.y"
7096 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
7098 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(assign,v1,v2);(yyval.
val)=v3;}
7100#line 7096 "ripper.c"
7104#line 1471 "ripper.y"
7107 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7109 (yyval.
val) = node_assign(p, (yyvsp[-4].val),
NEW_RESCUE((yyvsp[-2].val),
NEW_RESBODY(0, remove_begin((yyvsp[0].val)), 0, &loc), 0, &(yyloc)), &(yyloc));
7111 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(rescue_mod,v1,v2);v4=(yyvsp[-4].
val);v5=v3;v6=dispatch2(massign,v4,v5);(yyval.
val)=v6;}
7113#line 7109 "ripper.c"
7117#line 1480 "ripper.y"
7120 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
7122 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(massign,v1,v2);(yyval.
val)=v3;}
7124#line 7120 "ripper.c"
7128#line 1490 "ripper.y"
7131 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
7133 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(assign,v1,v2);(yyval.
val)=v3;}
7135#line 7131 "ripper.c"
7139#line 1497 "ripper.y"
7142 (yyval.
val) = new_op_assign(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7144 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=(yyvsp[0].
val);v4=dispatch3(opassign,v1,v2,v3);(yyval.
val)=v4;}
7146#line 7142 "ripper.c"
7150#line 1504 "ripper.y"
7153 (yyval.
val) = new_ary_op_assign(p, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-3]), &(yyloc));
7155 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-5].
val);v2=escape_Qundef((yyvsp[-3].val));v3=dispatch2(aref_field,v1,v2);v4=v3;v5=(yyvsp[-1].
val);v6=(yyvsp[0].
val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
7158#line 7154 "ripper.c"
7162#line 1512 "ripper.y"
7165 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val), (yyvsp[-3].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7167 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[-2].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
7169#line 7165 "ripper.c"
7173#line 1519 "ripper.y"
7176 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val), (yyvsp[-3].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7178 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[-2].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
7180#line 7176 "ripper.c"
7184#line 1526 "ripper.y"
7187 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-2]));
7188 (yyval.
val) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-4].val), (yyvsp[-2].val), &loc), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7190 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-4].
val);v2=(yyvsp[-2].
val);v3=dispatch2(const_path_field,v1,v2);v4=v3;v5=(yyvsp[-1].
val);v6=(yyvsp[0].
val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
7192#line 7188 "ripper.c"
7196#line 1534 "ripper.y"
7199 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val),
ID2VAL(
idCOLON2), (yyvsp[-2].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
7201 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-2].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
7203#line 7199 "ripper.c"
7207#line 1541 "ripper.y"
7210 rb_backref_error(p, (yyvsp[-2].val));
7213 {
VALUE v1,v2,v3,v4,v5;v1=var_field(p, (yyvsp[-2].val));v2=(yyvsp[0].
val);v3=dispatch2(assign,v1,v2);v4=v3;v5=dispatch1(assign_error,v4);(yyval.
val)=v5;}ripper_error(p);
7215#line 7211 "ripper.c"
7219#line 1551 "ripper.y"
7222 (yyval.
val) = (yyvsp[0].val);
7224#line 7220 "ripper.c"
7228#line 1556 "ripper.y"
7231 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7235 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(rescue_mod,v1,v2);(yyval.
val)=v3;}
7237#line 7233 "ripper.c"
7241#line 1569 "ripper.y"
7243 (yyval.
val) = logop(p,
idAND, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7245#line 7241 "ripper.c"
7249#line 1573 "ripper.y"
7251 (yyval.
val) = logop(p,
idOR, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7253#line 7249 "ripper.c"
7257#line 1577 "ripper.y"
7259 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
7261#line 7257 "ripper.c"
7265#line 1581 "ripper.y"
7267 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
7269#line 7265 "ripper.c"
7273#line 1585 "ripper.y"
7281#line 7277 "ripper.c"
7285#line 1592 "ripper.y"
7286 {(yyval.
tbl) = push_pvtbl(p);}
7287#line 7283 "ripper.c"
7291#line 1594 "ripper.y"
7292 {pop_pvtbl(p, (yyvsp[-1].tbl));}
7293#line 7289 "ripper.c"
7297#line 1595 "ripper.y"
7301 (yyval.
val) = new_case3(p, (yyvsp[-5].val),
NEW_IN((yyvsp[-1].val), 0, 0, &(yylsp[-1])), &(yyloc));
7303 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-1].
val);v2=
Qnil;v3=
Qnil;v4=dispatch3(in,v1,v2,v3);v5=(yyvsp[-5].
val);v6=v4;v7=dispatch2(
case,v5,v6);(yyval.
val)=v7;}
7305#line 7301 "ripper.c"
7309#line 1606 "ripper.y"
7312 (yyval.
val) = (yyvsp[0].val);
7314#line 7310 "ripper.c"
7318#line 1612 "ripper.y"
7320#line 7316 "ripper.c"
7324#line 1612 "ripper.y"
7326#line 7322 "ripper.c"
7330#line 1613 "ripper.y"
7332 (yyval.
val) = (yyvsp[-2].val);
7334#line 7330 "ripper.c"
7338#line 1624 "ripper.y"
7341 (yyval.
val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7343 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].
val);v2=(yyvsp[-2].
val);v3=(yyvsp[-1].
val);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
7345#line 7341 "ripper.c"
7349#line 1633 "ripper.y"
7351 (yyval.
val) = (yyvsp[-1].val);
7353 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
7357#line 7353 "ripper.c"
7361#line 1643 "ripper.y"
7367 (yyval.
val)=(yyvsp[0].val);
7369#line 7365 "ripper.c"
7373#line 1653 "ripper.y"
7378 (yyval.
val) = (yyvsp[-1].val);
7380 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(command,v1,v2);(yyval.
val)=v3;}
7382#line 7378 "ripper.c"
7386#line 1662 "ripper.y"
7389 block_dup_check(p, (yyvsp[-1].val), (yyvsp[0].val));
7391 (yyval.
val) = method_add_block(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
7392 fixpos((yyval.
val), (yyvsp[-2].
val));
7395 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(command,v1,v2);v4=v3;v5=(yyvsp[0].
val);v6=dispatch2(method_add_block,v4,v5);(yyval.
val)=v6;}
7397#line 7393 "ripper.c"
7401#line 1673 "ripper.y"
7404 (yyval.
val) = new_command_qcall(p, (yyvsp[-2].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val),
Qnull, &(yylsp[-1]), &(yyloc));
7406 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].
val);v2=(yyvsp[-2].
val);v3=(yyvsp[-1].
val);v4=(yyvsp[0].
val);v5=dispatch4(command_call,v1,v2,v3,v4);(yyval.
val)=v5;}
7408#line 7404 "ripper.c"
7412#line 1680 "ripper.y"
7415 (yyval.
val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
7417 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[-2].
val);v4=(yyvsp[-1].
val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].
val);v8=dispatch2(method_add_block,v6,v7);(yyval.
val)=v8;}
7419#line 7415 "ripper.c"
7423#line 1687 "ripper.y"
7428 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].
val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-1].
val);v4=(yyvsp[0].
val);v5=dispatch4(command_call,v1,v2,v3,v4);(yyval.
val)=v5;}
7430#line 7426 "ripper.c"
7434#line 1694 "ripper.y"
7437 (yyval.
val) = new_command_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-4].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
7439 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-2].
val);v4=(yyvsp[-1].
val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].
val);v8=dispatch2(method_add_block,v6,v7);(yyval.
val)=v8;}
7441#line 7437 "ripper.c"
7445#line 1701 "ripper.y"
7449 fixpos((yyval.
val), (yyvsp[0].
val));
7451 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(super,v1);(yyval.
val)=v2;}
7453#line 7449 "ripper.c"
7457#line 1709 "ripper.y"
7460 (yyval.
val) = new_yield(p, (yyvsp[0].val), &(yyloc));
7461 fixpos((yyval.
val), (yyvsp[0].
val));
7463 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(yield,v1);(yyval.
val)=v2;}
7465#line 7461 "ripper.c"
7469#line 1717 "ripper.y"
7472 (yyval.
val) =
NEW_RETURN(ret_args(p, (yyvsp[0].val)), &(yyloc));
7474 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(
return,v1);(yyval.
val)=v2;}
7476#line 7472 "ripper.c"
7480#line 1724 "ripper.y"
7483 (yyval.
val) =
NEW_BREAK(ret_args(p, (yyvsp[0].val)), &(yyloc));
7485 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(
break,v1);(yyval.
val)=v2;}
7487#line 7483 "ripper.c"
7491#line 1731 "ripper.y"
7494 (yyval.
val) =
NEW_NEXT(ret_args(p, (yyvsp[0].val)), &(yyloc));
7496 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(next,v1);(yyval.
val)=v2;}
7498#line 7494 "ripper.c"
7502#line 1741 "ripper.y"
7505 (yyval.
val) = (yyvsp[-1].val);
7507 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
7509#line 7505 "ripper.c"
7513#line 1751 "ripper.y"
7518 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
7520#line 7516 "ripper.c"
7524#line 1760 "ripper.y"
7529 (yyval.
val)=(yyvsp[0].val);
7531#line 7527 "ripper.c"
7535#line 1767 "ripper.y"
7538 (yyval.
val) =
NEW_MASGN(list_append(p, (yyvsp[-1].val),(yyvsp[0].
val)), 0, &(yyloc));
7540 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
7542#line 7538 "ripper.c"
7546#line 1774 "ripper.y"
7551 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(mlhs_add_star,v1,v2);(yyval.
val)=v3;}
7553#line 7549 "ripper.c"
7557#line 1781 "ripper.y"
7562 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-4].
val);v2=(yyvsp[-2].
val);v3=dispatch2(mlhs_add_star,v1,v2);v4=v3;v5=(yyvsp[0].
val);v6=dispatch2(mlhs_add_post,v4,v5);(yyval.
val)=v6;}
7564#line 7560 "ripper.c"
7568#line 1788 "ripper.y"
7573 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=
Qnil;v3=dispatch2(mlhs_add_star,v1,v2);(yyval.
val)=v3;}
7575#line 7571 "ripper.c"
7579#line 1795 "ripper.y"
7584 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-3].
val);v2=
Qnil;v3=dispatch2(mlhs_add_star,v1,v2);v4=v3;v5=(yyvsp[0].
val);v6=dispatch2(mlhs_add_post,v4,v5);(yyval.
val)=v6;}
7586#line 7582 "ripper.c"
7590#line 1802 "ripper.y"
7595 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(mlhs_add_star,v2,v3);(yyval.
val)=v4;}
7597#line 7593 "ripper.c"
7601#line 1809 "ripper.y"
7606 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[-2].
val);v4=dispatch2(mlhs_add_star,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=dispatch2(mlhs_add_post,v5,v6);(yyval.
val)=v7;}
7608#line 7604 "ripper.c"
7612#line 1816 "ripper.y"
7617 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=
Qnil;v4=dispatch2(mlhs_add_star,v2,v3);(yyval.
val)=v4;}
7619#line 7615 "ripper.c"
7623#line 1823 "ripper.y"
7628 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=dispatch0(mlhs_new);v2=v1;v3=
Qnil;v4=dispatch2(mlhs_add_star,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=dispatch2(mlhs_add_post,v5,v6);(yyval.
val)=v7;}
7630#line 7626 "ripper.c"
7634#line 1833 "ripper.y"
7637 (yyval.
val) = (yyvsp[-1].val);
7639 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
7641#line 7637 "ripper.c"
7645#line 1842 "ripper.y"
7648 (yyval.
val) =
NEW_LIST((yyvsp[-1].val), &(yylsp[-1]));
7650 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[-1].
val);v4=dispatch2(mlhs_add,v2,v3);(yyval.
val)=v4;}
7652#line 7648 "ripper.c"
7656#line 1849 "ripper.y"
7659 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[-1].
val));
7661 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
7663#line 7659 "ripper.c"
7667#line 1858 "ripper.y"
7672 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(mlhs_add,v2,v3);(yyval.
val)=v4;}
7674#line 7670 "ripper.c"
7678#line 1865 "ripper.y"
7681 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[0].
val));
7683 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
7685#line 7681 "ripper.c"
7689#line 1874 "ripper.y"
7692 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
7694 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
7696#line 7692 "ripper.c"
7700#line 1881 "ripper.y"
7703 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
7705 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
7707#line 7703 "ripper.c"
7711#line 1888 "ripper.y"
7714 (yyval.
val) = aryset(p, (yyvsp[-3].val), (yyvsp[-1].
val), &(yyloc));
7716 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref_field,v1,v2);(yyval.
val)=v3;}
7718#line 7714 "ripper.c"
7722#line 1895 "ripper.y"
7724 if ((yyvsp[-1].val) ==
tANDDOT) {
7725 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
7728 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7730 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=(yyvsp[0].
val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
7732#line 7728 "ripper.c"
7736#line 1905 "ripper.y"
7739 (yyval.
val) = attrset(p, (yyvsp[-2].val),
idCOLON2, (yyvsp[0].
val), &(yyloc));
7741 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(const_path_field,v1,v2);(yyval.
val)=v3;}
7743#line 7739 "ripper.c"
7747#line 1912 "ripper.y"
7749 if ((yyvsp[-1].val) ==
tANDDOT) {
7750 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
7753 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7755 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=(yyvsp[0].
val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
7757#line 7753 "ripper.c"
7761#line 1922 "ripper.y"
7764 (yyval.
val) = const_decl(p,
NEW_COLON2((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
7766 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(const_path_field,v1,v2);(yyval.
val)=const_decl(p, v3);}
7768#line 7764 "ripper.c"
7772#line 1929 "ripper.y"
7775 (yyval.
val) = const_decl(p,
NEW_COLON3((yyvsp[0].val), &(yyloc)), &(yyloc));
7777 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(top_const_field,v1);(yyval.
val)=const_decl(p, v2);}
7779#line 7775 "ripper.c"
7783#line 1936 "ripper.y"
7786 rb_backref_error(p, (yyvsp[0].val));
7789 {
VALUE v1,v2;v1=var_field(p, (yyvsp[0].val));v2=dispatch1(assign_error,v1);(yyval.
val)=v2;}ripper_error(p);
7791#line 7787 "ripper.c"
7795#line 1946 "ripper.y"
7798 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
7800 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
7802#line 7798 "ripper.c"
7806#line 1953 "ripper.y"
7809 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
7811 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
7813#line 7809 "ripper.c"
7817#line 1960 "ripper.y"
7820 (yyval.
val) = aryset(p, (yyvsp[-3].val), (yyvsp[-1].
val), &(yyloc));
7822 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref_field,v1,v2);(yyval.
val)=v3;}
7824#line 7820 "ripper.c"
7828#line 1967 "ripper.y"
7831 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7833 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=(yyvsp[0].
val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
7835#line 7831 "ripper.c"
7839#line 1974 "ripper.y"
7842 (yyval.
val) = attrset(p, (yyvsp[-2].val),
idCOLON2, (yyvsp[0].
val), &(yyloc));
7846#line 7842 "ripper.c"
7850#line 1981 "ripper.y"
7853 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7855 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=(yyvsp[0].
val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
7857#line 7853 "ripper.c"
7861#line 1988 "ripper.y"
7864 (yyval.
val) = const_decl(p,
NEW_COLON2((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
7866 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(const_path_field,v1,v2);(yyval.
val)=const_decl(p, v3);}
7868#line 7864 "ripper.c"
7872#line 1995 "ripper.y"
7875 (yyval.
val) = const_decl(p,
NEW_COLON3((yyvsp[0].val), &(yyloc)), &(yyloc));
7877 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(top_const_field,v1);(yyval.
val)=const_decl(p, v2);}
7879#line 7875 "ripper.c"
7883#line 2002 "ripper.y"
7886 rb_backref_error(p, (yyvsp[0].val));
7889 {
VALUE v1,v2;v1=var_field(p, (yyvsp[0].val));v2=dispatch1(assign_error,v1);(yyval.
val)=v2;}ripper_error(p);
7891#line 7887 "ripper.c"
7895#line 2012 "ripper.y"
7898 yyerror1(&(yylsp[0]),
"class/module name must be CONSTANT");
7900 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(class_name_error,v1);(yyval.
val)=v2;}ripper_error(p);
7902#line 7898 "ripper.c"
7906#line 2022 "ripper.y"
7911 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(top_const_ref,v1);(yyval.
val)=v2;}
7913#line 7909 "ripper.c"
7917#line 2029 "ripper.y"
7922 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(const_ref,v1);(yyval.
val)=v2;}
7924#line 7920 "ripper.c"
7928#line 2036 "ripper.y"
7933 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(const_path_ref,v1,v2);(yyval.
val)=v3;}
7935#line 7931 "ripper.c"
7939#line 2048 "ripper.y"
7942 (yyval.
val) = (yyvsp[0].val);
7944#line 7940 "ripper.c"
7948#line 2056 "ripper.y"
7953 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(symbol_literal,v1);(yyval.
val)=v2;}
7955#line 7951 "ripper.c"
7959#line 2066 "ripper.y"
7966#line 7962 "ripper.c"
7970#line 2072 "ripper.y"
7972#line 7968 "ripper.c"
7976#line 2073 "ripper.y"
7980 (yyval.
val) = block_append(p, (yyvsp[-3].val), undef);
7984#line 7980 "ripper.c"
7988#line 2082 "ripper.y"
7990#line 7986 "ripper.c"
7994#line 2083 "ripper.y"
7996#line 7992 "ripper.c"
8000#line 2084 "ripper.y"
8002#line 7998 "ripper.c"
8006#line 2085 "ripper.y"
8008#line 8004 "ripper.c"
8012#line 2086 "ripper.y"
8014#line 8010 "ripper.c"
8018#line 2087 "ripper.y"
8020#line 8016 "ripper.c"
8024#line 2088 "ripper.y"
8026#line 8022 "ripper.c"
8030#line 2089 "ripper.y"
8032#line 8028 "ripper.c"
8036#line 2090 "ripper.y"
8038#line 8034 "ripper.c"
8042#line 2091 "ripper.y"
8044#line 8040 "ripper.c"
8048#line 2092 "ripper.y"
8050#line 8046 "ripper.c"
8054#line 2093 "ripper.y"
8056#line 8052 "ripper.c"
8060#line 2094 "ripper.y"
8062#line 8058 "ripper.c"
8066#line 2095 "ripper.y"
8068#line 8064 "ripper.c"
8072#line 2096 "ripper.y"
8074#line 8070 "ripper.c"
8078#line 2097 "ripper.y"
8080#line 8076 "ripper.c"
8084#line 2098 "ripper.y"
8086#line 8082 "ripper.c"
8090#line 2099 "ripper.y"
8092#line 8088 "ripper.c"
8096#line 2100 "ripper.y"
8098#line 8094 "ripper.c"
8102#line 2101 "ripper.y"
8104#line 8100 "ripper.c"
8108#line 2102 "ripper.y"
8110#line 8106 "ripper.c"
8114#line 2103 "ripper.y"
8116#line 8112 "ripper.c"
8120#line 2104 "ripper.y"
8122#line 8118 "ripper.c"
8126#line 2105 "ripper.y"
8128#line 8124 "ripper.c"
8132#line 2106 "ripper.y"
8134#line 8130 "ripper.c"
8138#line 2107 "ripper.y"
8140#line 8136 "ripper.c"
8144#line 2108 "ripper.y"
8146#line 8142 "ripper.c"
8150#line 2109 "ripper.y"
8152#line 8148 "ripper.c"
8156#line 2110 "ripper.y"
8158#line 8154 "ripper.c"
8162#line 2111 "ripper.y"
8164#line 8160 "ripper.c"
8168#line 2129 "ripper.y"
8171 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
8173 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(assign,v1,v2);(yyval.
val)=v3;}
8175#line 8171 "ripper.c"
8179#line 2136 "ripper.y"
8182 (yyval.
val) = new_op_assign(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
8184 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=(yyvsp[0].
val);v4=dispatch3(opassign,v1,v2,v3);(yyval.
val)=v4;}
8186#line 8182 "ripper.c"
8190#line 2143 "ripper.y"
8194 (yyval.
val) = new_ary_op_assign(p, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-3]), &(yyloc));
8196 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-5].
val);v2=escape_Qundef((yyvsp[-3].val));v3=dispatch2(aref_field,v1,v2);v4=v3;v5=(yyvsp[-1].
val);v6=(yyvsp[0].
val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
8198#line 8194 "ripper.c"
8202#line 2151 "ripper.y"
8206 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val), (yyvsp[-3].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
8208 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[-2].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
8210#line 8206 "ripper.c"
8214#line 2159 "ripper.y"
8218 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val), (yyvsp[-3].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
8220 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[-2].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
8222#line 8218 "ripper.c"
8226#line 2167 "ripper.y"
8230 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val),
ID2VAL(
idCOLON2), (yyvsp[-2].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
8232 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-2].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
8234#line 8230 "ripper.c"
8238#line 2175 "ripper.y"
8241 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-2]));
8242 (yyval.
val) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-4].val), (yyvsp[-2].val), &loc), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
8244 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-4].
val);v2=(yyvsp[-2].
val);v3=dispatch2(const_path_field,v1,v2);v4=v3;v5=(yyvsp[-1].
val);v6=(yyvsp[0].
val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
8246#line 8242 "ripper.c"
8250#line 2183 "ripper.y"
8253 (yyval.
val) = new_const_op_assign(p,
NEW_COLON3((yyvsp[-2].val), &(yyloc)), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
8255 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-2].
val);v2=dispatch1(top_const_field,v1);v3=v2;v4=(yyvsp[-1].
val);v5=(yyvsp[0].
val);v6=dispatch3(opassign,v3,v4,v5);(yyval.
val)=v6;}
8257#line 8253 "ripper.c"
8261#line 2190 "ripper.y"
8264 rb_backref_error(p, (yyvsp[-2].val));
8267 {
VALUE v1,v2,v3,v4,v5,v6;v1=var_field(p, (yyvsp[-2].val));v2=(yyvsp[-1].
val);v3=(yyvsp[0].
val);v4=dispatch3(opassign,v1,v2,v3);v5=v4;v6=dispatch1(assign_error,v5);(yyval.
val)=v6;}ripper_error(p);
8269#line 8265 "ripper.c"
8273#line 2198 "ripper.y"
8278 (yyval.
val) =
NEW_DOT2((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
8280 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
8282#line 8278 "ripper.c"
8286#line 2207 "ripper.y"
8291 (yyval.
val) =
NEW_DOT3((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
8293 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
8295#line 8291 "ripper.c"
8299#line 2216 "ripper.y"
8303 loc.beg_pos = (yylsp[0]).end_pos;
8304 loc.end_pos = (yylsp[0]).end_pos;
8309 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=
Qnil;v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
8311#line 8307 "ripper.c"
8315#line 2228 "ripper.y"
8319 loc.beg_pos = (yylsp[0]).end_pos;
8320 loc.end_pos = (yylsp[0]).end_pos;
8325 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=
Qnil;v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
8327#line 8323 "ripper.c"
8331#line 2240 "ripper.y"
8335 loc.beg_pos = (yylsp[-1]).beg_pos;
8336 loc.end_pos = (yylsp[-1]).beg_pos;
8341 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].
val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
8343#line 8339 "ripper.c"
8347#line 2252 "ripper.y"
8351 loc.beg_pos = (yylsp[-1]).beg_pos;
8352 loc.end_pos = (yylsp[-1]).beg_pos;
8357 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].
val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
8359#line 8355 "ripper.c"
8363#line 2264 "ripper.y"
8365 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'+', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8367#line 8363 "ripper.c"
8371#line 2268 "ripper.y"
8373 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'-', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8375#line 8371 "ripper.c"
8379#line 2272 "ripper.y"
8381 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'*', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8383#line 8379 "ripper.c"
8387#line 2276 "ripper.y"
8389 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'/', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8391#line 8387 "ripper.c"
8395#line 2280 "ripper.y"
8397 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'%', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8399#line 8395 "ripper.c"
8403#line 2284 "ripper.y"
8405 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idPow, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8407#line 8403 "ripper.c"
8411#line 2288 "ripper.y"
8413 (yyval.
val) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].val),
idPow, (yyvsp[0].
val), &(yylsp[-2]), &(yyloc)),
idUMinus, &(yylsp[-3]), &(yyloc));
8415#line 8411 "ripper.c"
8419#line 2292 "ripper.y"
8421 (yyval.
val) = call_uni_op(p, (yyvsp[0].val),
idUPlus, &(yylsp[-1]), &(yyloc));
8423#line 8419 "ripper.c"
8427#line 2296 "ripper.y"
8429 (yyval.
val) = call_uni_op(p, (yyvsp[0].val),
idUMinus, &(yylsp[-1]), &(yyloc));
8431#line 8427 "ripper.c"
8435#line 2300 "ripper.y"
8437 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'|', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8439#line 8435 "ripper.c"
8443#line 2304 "ripper.y"
8445 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'^', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8447#line 8443 "ripper.c"
8451#line 2308 "ripper.y"
8453 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'&', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8455#line 8451 "ripper.c"
8459#line 2312 "ripper.y"
8461 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idCmp, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8463#line 8459 "ripper.c"
8467#line 2317 "ripper.y"
8469 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idEq, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8471#line 8467 "ripper.c"
8475#line 2321 "ripper.y"
8477 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idEqq, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8479#line 8475 "ripper.c"
8483#line 2325 "ripper.y"
8485 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idNeq, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8487#line 8483 "ripper.c"
8491#line 2329 "ripper.y"
8493 (yyval.
val) = match_op(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8495#line 8491 "ripper.c"
8499#line 2333 "ripper.y"
8501 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idNeqTilde, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8503#line 8499 "ripper.c"
8507#line 2337 "ripper.y"
8509 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
8511#line 8507 "ripper.c"
8515#line 2341 "ripper.y"
8517 (yyval.
val) = call_uni_op(p, (yyvsp[0].val),
'~', &(yylsp[-1]), &(yyloc));
8519#line 8515 "ripper.c"
8523#line 2345 "ripper.y"
8525 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idLTLT, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8527#line 8523 "ripper.c"
8531#line 2349 "ripper.y"
8533 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idGTGT, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8535#line 8531 "ripper.c"
8539#line 2353 "ripper.y"
8541 (yyval.
val) = logop(p,
idANDOP, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8543#line 8539 "ripper.c"
8547#line 2357 "ripper.y"
8549 (yyval.
val) = logop(p,
idOROP, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8551#line 8547 "ripper.c"
8555#line 2360 "ripper.y"
8557#line 8553 "ripper.c"
8561#line 2361 "ripper.y"
8564 (yyval.
val) = new_defined(p, (yyvsp[0].val), &(yyloc));
8566#line 8562 "ripper.c"
8570#line 2366 "ripper.y"
8574 (yyval.
val) = new_if(p, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[0].val), &(yyloc));
8575 fixpos((yyval.
val), (yyvsp[-5].
val));
8577 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-5].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[0].
val);v4=dispatch3(ifop,v1,v2,v3);(yyval.
val)=v4;}
8579#line 8575 "ripper.c"
8583#line 2375 "ripper.y"
8585 (yyval.
val) = (yyvsp[0].val);
8587#line 8583 "ripper.c"
8591#line 2380 "ripper.y"
8592 {(yyval.
val) =
'>';}
8593#line 8589 "ripper.c"
8597#line 2381 "ripper.y"
8598 {(yyval.
val) =
'<';}
8599#line 8595 "ripper.c"
8603#line 2382 "ripper.y"
8605#line 8601 "ripper.c"
8609#line 2383 "ripper.y"
8611#line 8607 "ripper.c"
8615#line 2387 "ripper.y"
8617 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
8619#line 8615 "ripper.c"
8623#line 2391 "ripper.y"
8626 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
8628#line 8624 "ripper.c"
8632#line 2398 "ripper.y"
8635 (yyval.
val) = (yyvsp[0].val);
8637#line 8633 "ripper.c"
8641#line 2406 "ripper.y"
8643 (yyval.
val) = (yyvsp[-1].val);
8645#line 8641 "ripper.c"
8649#line 2410 "ripper.y"
8652 (yyval.
val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].
val);
8654 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].
val);v2=dispatch1(bare_assoc_hash,v1);v3=(yyvsp[-3].
val);v4=v2;v5=dispatch2(args_add,v3,v4);(yyval.
val)=v5;}
8656#line 8652 "ripper.c"
8660#line 2417 "ripper.y"
8663 (yyval.
val) = (yyvsp[-1].val) ?
NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : 0;
8665 {
VALUE v1,v2,v3,v4,v5,v6;v1=dispatch0(args_new);v2=(yyvsp[-1].
val);v3=dispatch1(bare_assoc_hash,v2);v4=v1;v5=v3;v6=dispatch2(args_add,v4,v5);(yyval.
val)=v6;}
8667#line 8663 "ripper.c"
8671#line 2426 "ripper.y"
8674 (yyval.
val) = (yyvsp[0].val);
8676#line 8672 "ripper.c"
8680#line 2431 "ripper.y"
8683 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
8687 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(rescue_mod,v1,v2);(yyval.
val)=v3;}
8689#line 8685 "ripper.c"
8693#line 2442 "ripper.y"
8696 (yyval.
val) = (yyvsp[-1].val);
8698 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(arg_paren,v1);(yyval.
val)=v2;}
8700#line 8696 "ripper.c"
8704#line 2449 "ripper.y"
8721 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), splat, &(yyloc));
8723 (yyval.
val) = arg_append(p, (yyval.
val), new_hash(p, kwrest, &(yylsp[-1])), &(yylsp[-1]));
8725 (yyval.
val) = arg_blk_pass((yyval.
val), block);
8727 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].
val);v2=(yyvsp[-1].
val);v3=dispatch2(args_add,v1,v2);v4=v3;v5=dispatch1(arg_paren,v4);(yyval.
val)=v5;}
8730#line 8726 "ripper.c"
8734#line 2475 "ripper.y"
8752 (yyval.
val) = arg_append(p, splat, new_hash(p, kwrest, &(yylsp[-1])), &(yylsp[-1]));
8754 (yyval.
val) = splat;
8756 (yyval.
val) = arg_blk_pass((yyval.
val), block);
8758 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(arg_paren,v1);(yyval.
val)=v2;}
8761#line 8757 "ripper.c"
8765#line 2510 "ripper.y"
8767 (yyval.
val) = (yyvsp[-1].val);
8769#line 8765 "ripper.c"
8773#line 2514 "ripper.y"
8776 (yyval.
val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].
val);
8778 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].
val);v2=dispatch1(bare_assoc_hash,v1);v3=(yyvsp[-3].
val);v4=v2;v5=dispatch2(args_add,v3,v4);(yyval.
val)=v5;}
8780#line 8776 "ripper.c"
8784#line 2521 "ripper.y"
8787 (yyval.
val) = (yyvsp[-1].val) ?
NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yylsp[-1])) : 0;
8789 {
VALUE v1,v2,v3,v4,v5,v6;v1=dispatch0(args_new);v2=(yyvsp[-1].
val);v3=dispatch1(bare_assoc_hash,v2);v4=v1;v5=v3;v6=dispatch2(args_add,v4,v5);(yyval.
val)=v6;}
8791#line 8787 "ripper.c"
8795#line 2530 "ripper.y"
8801 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(args_add,v2,v3);(yyval.
val)=v4;}
8803#line 8799 "ripper.c"
8807#line 2538 "ripper.y"
8810 (yyval.
val) = arg_blk_pass((yyvsp[-1].val), (yyvsp[0].
val));
8812 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(args_add_block,v1,v2);(yyval.
val)=v3;}
8814#line 8810 "ripper.c"
8818#line 2545 "ripper.y"
8821 (yyval.
val) = (yyvsp[-1].val) ?
NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yylsp[-1])) : 0;
8822 (yyval.
val) = arg_blk_pass((yyval.
val), (yyvsp[0].
val));
8824 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9;v1=dispatch0(args_new);v2=(yyvsp[-1].
val);v3=dispatch1(bare_assoc_hash,v2);v4=v1;v5=v3;v6=dispatch2(args_add,v4,v5);v7=v6;v8=(yyvsp[0].
val);v9=dispatch2(args_add_block,v7,v8);(yyval.
val)=v9;}
8826#line 8822 "ripper.c"
8830#line 2553 "ripper.y"
8833 (yyval.
val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].
val);
8834 (yyval.
val) = arg_blk_pass((yyval.
val), (yyvsp[0].
val));
8836 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-1].
val);v2=dispatch1(bare_assoc_hash,v1);v3=(yyvsp[-3].
val);v4=v2;v5=dispatch2(args_add,v3,v4);v6=v5;v7=(yyvsp[0].
val);v8=dispatch2(args_add_block,v6,v7);(yyval.
val)=v8;}
8838#line 8834 "ripper.c"
8842#line 2561 "ripper.y"
8843 {{
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(args_add_block,v2,v3);(yyval.
val)=v4;}}
8844#line 8840 "ripper.c"
8848#line 2564 "ripper.y"
8866#line 8862 "ripper.c"
8870#line 2582 "ripper.y"
8886 (yyval.
val) = (yyvsp[0].val);
8888#line 8884 "ripper.c"
8892#line 2602 "ripper.y"
8897 (yyval.
val)=(yyvsp[0].val);
8899#line 8895 "ripper.c"
8903#line 2611 "ripper.y"
8905 (yyval.
val) = (yyvsp[0].val);
8907#line 8903 "ripper.c"
8911#line 2615 "ripper.y"
8915#line 8911 "ripper.c"
8919#line 2621 "ripper.y"
8924 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(args_add,v2,v3);(yyval.
val)=v4;}
8926#line 8922 "ripper.c"
8930#line 2628 "ripper.y"
8935 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(args_add_star,v2,v3);(yyval.
val)=v4;}
8937#line 8933 "ripper.c"
8941#line 2635 "ripper.y"
8944 (yyval.
val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
8946 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(args_add,v1,v2);(yyval.
val)=v3;}
8948#line 8944 "ripper.c"
8952#line 2642 "ripper.y"
8955 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].
val), &(yyloc));
8957 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[0].
val);v3=dispatch2(args_add_star,v1,v2);(yyval.
val)=v3;}
8959#line 8955 "ripper.c"
8963#line 2655 "ripper.y"
8966 (yyval.
val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
8968 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-2].
val);v2=dispatch1(mrhs_new_from_args,v1);v3=v2;v4=(yyvsp[0].
val);v5=dispatch2(mrhs_add,v3,v4);(yyval.
val)=v5;}
8970#line 8966 "ripper.c"
8974#line 2662 "ripper.y"
8977 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].
val), &(yyloc));
8979 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].
val);v2=dispatch1(mrhs_new_from_args,v1);v3=v2;v4=(yyvsp[0].
val);v5=dispatch2(mrhs_add_star,v3,v4);(yyval.
val)=v5;}
8981#line 8977 "ripper.c"
8985#line 2669 "ripper.y"
8990 {
VALUE v1,v2,v3,v4;v1=dispatch0(mrhs_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(mrhs_add_star,v2,v3);(yyval.
val)=v4;}
8992#line 8988 "ripper.c"
8996#line 2688 "ripper.y"
9001 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[0].
val);v2=dispatch1(fcall,v1);v3=dispatch0(args_new);v4=v2;v5=v3;v6=dispatch2(method_add_arg,v4,v5);(yyval.
val)=v6;}
9003#line 8999 "ripper.c"
9007#line 2695 "ripper.y"
9011#line 9007 "ripper.c"
9015#line 2700 "ripper.y"
9019 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
9023 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(begin,v1);(yyval.
val)=v2;}
9025#line 9021 "ripper.c"
9029#line 2709 "ripper.y"
9031#line 9027 "ripper.c"
9035#line 2710 "ripper.y"
9040 {
VALUE v1,v2;v1=0;v2=dispatch1(paren,v1);(yyval.
val)=v2;}
9042#line 9038 "ripper.c"
9046#line 2716 "ripper.y"
9048#line 9044 "ripper.c"
9052#line 2717 "ripper.y"
9056 (yyval.
val) = (yyvsp[-2].val);
9058 {
VALUE v1,v2;v1=(yyvsp[-2].
val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
9060#line 9056 "ripper.c"
9064#line 2725 "ripper.y"
9068 (yyval.
val) = (yyvsp[-1].val);
9070 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
9072#line 9068 "ripper.c"
9076#line 2733 "ripper.y"
9081 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(const_path_ref,v1,v2);(yyval.
val)=v3;}
9083#line 9079 "ripper.c"
9087#line 2740 "ripper.y"
9092 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(top_const_ref,v1);(yyval.
val)=v2;}
9094#line 9090 "ripper.c"
9098#line 2747 "ripper.y"
9103 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(array,v1);(yyval.
val)=v2;}
9105#line 9101 "ripper.c"
9109#line 2754 "ripper.y"
9112 (yyval.
val) = new_hash(p, (yyvsp[-1].val), &(yyloc));
9115 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(hash,v1);(yyval.
val)=v2;}
9117#line 9113 "ripper.c"
9121#line 2762 "ripper.y"
9126 {
VALUE v1;v1=dispatch0(return0);(yyval.
val)=v1;}
9128#line 9124 "ripper.c"
9132#line 2769 "ripper.y"
9135 (yyval.
val) = new_yield(p, (yyvsp[-1].val), &(yyloc));
9137 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-1].
val);v2=dispatch1(paren,v1);v3=v2;v4=dispatch1(yield,v3);(yyval.
val)=v4;}
9139#line 9135 "ripper.c"
9143#line 2776 "ripper.y"
9148 {
VALUE v1,v2,v3,v4,v5;v1=dispatch0(args_new);v2=v1;v3=dispatch1(paren,v2);v4=v3;v5=dispatch1(yield,v4);(yyval.
val)=v5;}
9150#line 9146 "ripper.c"
9154#line 2783 "ripper.y"
9159 {
VALUE v1;v1=dispatch0(yield0);(yyval.
val)=v1;}
9161#line 9157 "ripper.c"
9165#line 2789 "ripper.y"
9167#line 9163 "ripper.c"
9171#line 2790 "ripper.y"
9174 (yyval.
val) = new_defined(p, (yyvsp[-1].val), &(yyloc));
9176#line 9172 "ripper.c"
9180#line 2795 "ripper.y"
9182 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[-1].val), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-3]), &(yyloc));
9184#line 9180 "ripper.c"
9188#line 2799 "ripper.y"
9190 (yyval.
val) = call_uni_op(p, method_cond(p,
new_nil(&(yylsp[-1])), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
9192#line 9188 "ripper.c"
9196#line 2803 "ripper.y"
9199 (yyval.
val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
9201 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9;v1=(yyvsp[-1].
val);v2=dispatch1(fcall,v1);v3=dispatch0(args_new);v4=v2;v5=v3;v6=dispatch2(method_add_arg,v4,v5);v7=v6;v8=(yyvsp[0].
val);v9=dispatch2(method_add_block,v7,v8);(yyval.
val)=v9;}
9203#line 9199 "ripper.c"
9207#line 2811 "ripper.y"
9210 block_dup_check(p, (yyvsp[-1].val)->
nd_args, (yyvsp[0].val));
9211 (yyval.
val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
9213 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(method_add_block,v1,v2);(yyval.
val)=v3;}
9215#line 9211 "ripper.c"
9219#line 2819 "ripper.y"
9221 token_info_push(p,
"->", &(yylsp[0]));
9223#line 9219 "ripper.c"
9227#line 2823 "ripper.y"
9229 (yyval.
val) = (yyvsp[0].val);
9234#line 9230 "ripper.c"
9238#line 2833 "ripper.y"
9241 (yyval.
val) = new_if(p, (yyvsp[-4].val), (yyvsp[-2].
val), (yyvsp[-1].val), &(yyloc));
9242 fixpos((yyval.
val), (yyvsp[-4].
val));
9244 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].
val);v2=(yyvsp[-2].
val);v3=escape_Qundef((yyvsp[-1].val));v4=dispatch3(
if,v1,v2,v3);(yyval.
val)=v4;}
9246#line 9242 "ripper.c"
9250#line 2844 "ripper.y"
9253 (yyval.
val) = new_unless(p, (yyvsp[-4].val), (yyvsp[-2].
val), (yyvsp[-1].val), &(yyloc));
9254 fixpos((yyval.
val), (yyvsp[-4].
val));
9256 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].
val);v2=(yyvsp[-2].
val);v3=escape_Qundef((yyvsp[-1].val));v4=dispatch3(unless,v1,v2,v3);(yyval.
val)=v4;}
9258#line 9254 "ripper.c"
9262#line 2854 "ripper.y"
9265 (yyval.
val) =
NEW_WHILE(cond(p, (yyvsp[-2].val), &(yylsp[-2])), (yyvsp[-1].
val), 1, &(yyloc));
9266 fixpos((yyval.
val), (yyvsp[-2].
val));
9268 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(
while,v1,v2);(yyval.
val)=v3;}
9270#line 9266 "ripper.c"
9274#line 2864 "ripper.y"
9277 (yyval.
val) =
NEW_UNTIL(cond(p, (yyvsp[-2].val), &(yylsp[-2])), (yyvsp[-1].
val), 1, &(yyloc));
9278 fixpos((yyval.
val), (yyvsp[-2].
val));
9280 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(until,v1,v2);(yyval.
val)=v3;}
9282#line 9278 "ripper.c"
9286#line 2872 "ripper.y"
9291#line 9287 "ripper.c"
9295#line 2878 "ripper.y"
9300 (yyval.
val) =
NEW_CASE((yyvsp[-4].val), (yyvsp[-1].
val), &(yyloc));
9301 fixpos((yyval.
val), (yyvsp[-4].
val));
9303 {
VALUE v1,v2,v3;v1=(yyvsp[-4].
val);v2=(yyvsp[-1].
val);v3=dispatch2(
case,v1,v2);(yyval.
val)=v3;}
9305#line 9301 "ripper.c"
9309#line 2888 "ripper.y"
9314#line 9310 "ripper.c"
9318#line 2894 "ripper.y"
9325 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[-1].
val);v3=dispatch2(
case,v1,v2);(yyval.
val)=v3;}
9327#line 9323 "ripper.c"
9331#line 2905 "ripper.y"
9334 (yyval.
val) = new_case3(p, (yyvsp[-3].val), (yyvsp[-1].
val), &(yyloc));
9336 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[-1].
val);v3=dispatch2(
case,v1,v2);(yyval.
val)=v3;}
9338#line 9334 "ripper.c"
9342#line 2914 "ripper.y"
9354 ID id = internal_id(p);
9356 NODE *args, *scope, *internal_var =
NEW_DVAR(
id, &(yylsp[-4]));
9358 tbl[0] = 1 ; tbl[1] =
id ;
9361 switch (
nd_type((yyvsp[-4].val))) {
9368 m->nd_next = (yyvsp[-4].
val);
9371 m->nd_next = node_assign(p, (yyvsp[-4].val),
NEW_FOR_MASGN(internal_var, &(yylsp[-4])), &(yylsp[-4]));
9374 m->nd_next = node_assign(p,
NEW_MASGN(
NEW_LIST((yyvsp[-4].val), &(yylsp[-4])), 0, &(yylsp[-4])), internal_var, &(yylsp[-4]));
9377 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
9379 (yyval.
val) =
NEW_FOR((yyvsp[-2].val), scope, &(yyloc));
9380 fixpos((yyval.
val), (yyvsp[-4].
val));
9382 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].
val);v2=(yyvsp[-2].
val);v3=(yyvsp[-1].
val);v4=dispatch3(
for,v1,v2,v3);(yyval.
val)=v4;}
9384#line 9380 "ripper.c"
9388#line 2956 "ripper.y"
9391 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[-1]));
9392 yyerror1(&loc,
"class definition in method body");
9398#line 9394 "ripper.c"
9402#line 2967 "ripper.y"
9405 (yyval.
val) =
NEW_CLASS((yyvsp[-4].val), (yyvsp[-1].
val), (yyvsp[-3].val), &(yyloc));
9407 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
9410 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[-1].
val);v4=dispatch3(
class,v1,v2,v3);(yyval.
val)=v4;}
9414#line 9410 "ripper.c"
9418#line 2979 "ripper.y"
9425#line 9421 "ripper.c"
9429#line 2988 "ripper.y"
9434 set_line_body((yyvsp[-1].val),
nd_line((yyvsp[-4].val)));
9435 fixpos((yyval.
val), (yyvsp[-4].
val));
9437 {
VALUE v1,v2,v3;v1=(yyvsp[-4].
val);v2=(yyvsp[-1].
val);v3=dispatch2(sclass,v1,v2);(yyval.
val)=v3;}
9442#line 9438 "ripper.c"
9446#line 3001 "ripper.y"
9449 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
9450 yyerror1(&loc,
"module definition in method body");
9456#line 9452 "ripper.c"
9460#line 3012 "ripper.y"
9465 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
9468 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[-1].
val);v3=dispatch2(module,v1,v2);(yyval.
val)=v3;}
9472#line 9468 "ripper.c"
9476#line 3024 "ripper.y"
9478 numparam_name(p,
get_id((yyvsp[0].val)));
9483#line 9479 "ripper.c"
9487#line 3030 "ripper.y"
9492#line 9488 "ripper.c"
9496#line 3037 "ripper.y"
9499 NODE *body = remove_begin((yyvsp[-1].val));
9500 reduce_nodes(p, &body);
9501 (yyval.
val) =
NEW_DEFN((yyvsp[-5].val), (yyvsp[-2].
val), body, &(yyloc));
9503 set_line_body(body, (yylsp[-6]).beg_pos.lineno);
9505 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-5].
val);v2=(yyvsp[-2].
val);v3=(yyvsp[-1].
val);v4=dispatch3(def,v1,v2,v3);(yyval.
val)=v4;}
9510#line 9506 "ripper.c"
9514#line 3050 "ripper.y"
9516#line 9512 "ripper.c"
9520#line 3051 "ripper.y"
9522 numparam_name(p,
get_id((yyvsp[0].val)));
9530#line 9526 "ripper.c"
9534#line 3063 "ripper.y"
9537 NODE *body = remove_begin((yyvsp[-1].val));
9538 reduce_nodes(p, &body);
9539 (yyval.
val) =
NEW_DEFS((yyvsp[-7].val), (yyvsp[-4].
val), (yyvsp[-2].val), body, &(yyloc));
9541 set_line_body(body, (yylsp[-8]).beg_pos.lineno);
9543 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-7].
val);v2=(yyvsp[-6].
val);v3=(yyvsp[-4].
val);v4=(yyvsp[-2].
val);v5=(yyvsp[-1].
val);v6=dispatch5(defs,v1,v2,v3,v4,v5);(yyval.
val)=v6;}
9548#line 9544 "ripper.c"
9552#line 3077 "ripper.y"
9557 {
VALUE v1,v2,v3;v1=dispatch0(args_new);v2=v1;v3=dispatch1(
break,v2);(yyval.
val)=v3;}
9559#line 9555 "ripper.c"
9563#line 3084 "ripper.y"
9568 {
VALUE v1,v2,v3;v1=dispatch0(args_new);v2=v1;v3=dispatch1(next,v2);(yyval.
val)=v3;}
9570#line 9566 "ripper.c"
9574#line 3091 "ripper.y"
9579 {
VALUE v1;v1=dispatch0(redo);(yyval.
val)=v1;}
9581#line 9577 "ripper.c"
9585#line 3098 "ripper.y"
9590 {
VALUE v1;v1=dispatch0(retry);(yyval.
val)=v1;}
9592#line 9588 "ripper.c"
9596#line 3107 "ripper.y"
9599 (yyval.
val) = (yyvsp[0].val);
9601#line 9597 "ripper.c"
9605#line 3114 "ripper.y"
9607 token_info_push(p,
"begin", &(yyloc));
9609#line 9605 "ripper.c"
9613#line 3120 "ripper.y"
9616 token_info_push(p,
"if", &(yyloc));
9628#line 9624 "ripper.c"
9632#line 3137 "ripper.y"
9634 token_info_push(p,
"unless", &(yyloc));
9636#line 9632 "ripper.c"
9640#line 3143 "ripper.y"
9642 token_info_push(p,
"while", &(yyloc));
9644#line 9640 "ripper.c"
9648#line 3149 "ripper.y"
9650 token_info_push(p,
"until", &(yyloc));
9652#line 9648 "ripper.c"
9656#line 3155 "ripper.y"
9658 token_info_push(p,
"case", &(yyloc));
9660#line 9656 "ripper.c"
9664#line 3161 "ripper.y"
9666 token_info_push(p,
"for", &(yyloc));
9668#line 9664 "ripper.c"
9672#line 3167 "ripper.y"
9674 token_info_push(p,
"class", &(yyloc));
9676#line 9672 "ripper.c"
9680#line 3173 "ripper.y"
9682 token_info_push(p,
"module", &(yyloc));
9684#line 9680 "ripper.c"
9688#line 3179 "ripper.y"
9690 token_info_push(p,
"def", &(yyloc));
9692#line 9688 "ripper.c"
9696#line 3185 "ripper.y"
9698 token_info_push(p,
"do", &(yyloc));
9700#line 9696 "ripper.c"
9704#line 3191 "ripper.y"
9706 token_info_push(p,
"do", &(yyloc));
9708#line 9704 "ripper.c"
9712#line 3197 "ripper.y"
9714 token_info_warn(p,
"rescue", p->
token_info, 1, &(yyloc));
9716#line 9712 "ripper.c"
9720#line 3203 "ripper.y"
9722 token_info_warn(p,
"ensure", p->
token_info, 1, &(yyloc));
9724#line 9720 "ripper.c"
9728#line 3209 "ripper.y"
9730 token_info_warn(p,
"when", p->
token_info, 0, &(yyloc));
9732#line 9728 "ripper.c"
9736#line 3215 "ripper.y"
9739 int same = ptinfo_beg &&
strcmp(ptinfo_beg->
token,
"case") != 0;
9740 token_info_warn(p,
"else", p->
token_info, same, &(yyloc));
9745 token_info_setup(&e, p->
lex.
pbeg, &(yyloc));
9746 if (!e.
nonspc) *ptinfo_beg = e;
9749#line 9745 "ripper.c"
9753#line 3230 "ripper.y"
9756 token_info_warn(p,
"elsif", p->
token_info, 1, &(yyloc));
9758#line 9754 "ripper.c"
9762#line 3237 "ripper.y"
9764 token_info_pop(p,
"end", &(yyloc));
9766#line 9762 "ripper.c"
9770#line 3243 "ripper.y"
9773 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
9775#line 9771 "ripper.c"
9779#line 3262 "ripper.y"
9782 (yyval.
val) = new_if(p, (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
9783 fixpos((yyval.
val), (yyvsp[-3].
val));
9785 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-3].
val);v2=(yyvsp[-1].
val);v3=escape_Qundef((yyvsp[0].val));v4=dispatch3(elsif,v1,v2,v3);(yyval.
val)=v4;}
9787#line 9783 "ripper.c"
9791#line 3273 "ripper.y"
9794 (yyval.
val) = (yyvsp[0].val);
9796 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(
else,v1);(yyval.
val)=v2;}
9798#line 9794 "ripper.c"
9802#line 3286 "ripper.y"
9805 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
9806 mark_lvar_used(p, (yyval.
val));
9808 (yyval.
val)=assignable(p, (yyvsp[0].val));
9810#line 9806 "ripper.c"
9814#line 3294 "ripper.y"
9817 (yyval.
val) = (yyvsp[-1].val);
9819 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
9821#line 9817 "ripper.c"
9825#line 3303 "ripper.y"
9830 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(mlhs_add,v2,v3);(yyval.
val)=v4;}
9832#line 9828 "ripper.c"
9836#line 3310 "ripper.y"
9839 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[0].
val));
9841 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
9843#line 9839 "ripper.c"
9847#line 3319 "ripper.y"
9852 (yyval.
val)=(yyvsp[0].val);
9854#line 9850 "ripper.c"
9858#line 3326 "ripper.y"
9863 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(mlhs_add_star,v1,v2);(yyval.
val)=v3;}
9865#line 9861 "ripper.c"
9869#line 3333 "ripper.y"
9874 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-4].
val);v2=(yyvsp[-2].
val);v3=dispatch2(mlhs_add_star,v1,v2);v4=v3;v5=(yyvsp[0].
val);v6=dispatch2(mlhs_add_post,v4,v5);(yyval.
val)=v6;}
9876#line 9872 "ripper.c"
9880#line 3340 "ripper.y"
9885 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(mlhs_add_star,v2,v3);(yyval.
val)=v4;}
9887#line 9883 "ripper.c"
9891#line 3347 "ripper.y"
9896 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[-2].
val);v4=dispatch2(mlhs_add_star,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=dispatch2(mlhs_add_post,v5,v6);(yyval.
val)=v7;}
9898#line 9894 "ripper.c"
9902#line 3356 "ripper.y"
9905 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
9906 mark_lvar_used(p, (yyval.
val));
9908 (yyval.
val)=assignable(p, (yyvsp[0].val));
9910#line 9906 "ripper.c"
9914#line 3364 "ripper.y"
9921#line 9917 "ripper.c"
9925#line 3373 "ripper.y"
9927 (yyval.
val) = new_args_tail(p, (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-1]));
9929#line 9925 "ripper.c"
9933#line 3377 "ripper.y"
9935 (yyval.
val) = new_args_tail(p, (yyvsp[-1].val),
Qnone, (yyvsp[0].
val), &(yylsp[-1]));
9937#line 9933 "ripper.c"
9941#line 3381 "ripper.y"
9943 (yyval.
val) = new_args_tail(p,
Qnone, (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]));
9945#line 9941 "ripper.c"
9949#line 3385 "ripper.y"
9953#line 9949 "ripper.c"
9957#line 3389 "ripper.y"
9959 (yyval.
val) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].val), &(yylsp[0]));
9961#line 9957 "ripper.c"
9965#line 3395 "ripper.y"
9967 (yyval.
val) = (yyvsp[0].val);
9969#line 9965 "ripper.c"
9973#line 3399 "ripper.y"
9977#line 9973 "ripper.c"
9981#line 3405 "ripper.y"
9983 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[-1].val),
Qnone, (yyvsp[0].
val), &(yyloc));
9985#line 9981 "ripper.c"
9989#line 3409 "ripper.y"
9991 (yyval.
val) = new_args(p, (yyvsp[-7].val), (yyvsp[-5].
val), (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
9993#line 9989 "ripper.c"
9997#line 3413 "ripper.y"
9999 (yyval.
val) = new_args(p, (yyvsp[-3].val), (yyvsp[-1].
val),
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
10001#line 9997 "ripper.c"
10005#line 3417 "ripper.y"
10007 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].
val),
Qnone, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
10009#line 10005 "ripper.c"
10013#line 3421 "ripper.y"
10015 (yyval.
val) = new_args(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val),
Qnone, (yyvsp[0].val), &(yyloc));
10017#line 10013 "ripper.c"
10021#line 3425 "ripper.y"
10025 (yyval.
val) = new_args(p, (yyvsp[-1].val),
Qnone,
NODE_SPECIAL_EXCESSIVE_COMMA,
Qnone, new_args_tail(p,
Qnone,
Qnone,
Qnone, &(yylsp[-1])), &(yyloc));
10027 {
VALUE v1;v1=dispatch0(excessed_comma);(yyval.
val)=new_args(p, (yyvsp[-1].val),
Qnone, v1,
Qnone, new_args_tail(p,
Qnone,
Qnone,
Qnone,
NULL),
NULL);}
10029#line 10025 "ripper.c"
10033#line 3433 "ripper.y"
10035 (yyval.
val) = new_args(p, (yyvsp[-5].val),
Qnone, (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
10037#line 10033 "ripper.c"
10041#line 3437 "ripper.y"
10045#line 10041 "ripper.c"
10049#line 3441 "ripper.y"
10051 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val), (yyvsp[-1].
val),
Qnone, (yyvsp[0].val), &(yyloc));
10053#line 10049 "ripper.c"
10057#line 3445 "ripper.y"
10059 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
10061#line 10057 "ripper.c"
10065#line 3449 "ripper.y"
10069#line 10065 "ripper.c"
10073#line 3453 "ripper.y"
10075 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
10077#line 10073 "ripper.c"
10081#line 3457 "ripper.y"
10085#line 10081 "ripper.c"
10089#line 3461 "ripper.y"
10091 (yyval.
val) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
10093#line 10089 "ripper.c"
10097#line 3465 "ripper.y"
10101#line 10097 "ripper.c"
10105#line 3472 "ripper.y"
10109#line 10105 "ripper.c"
10113#line 3478 "ripper.y"
10120 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11;v1=
Qnil;v2=
Qnil;v3=
Qnil;v4=
Qnil;v5=
Qnil;v6=
Qnil;v7=
Qnil;v8=dispatch7(params,v1,v2,v3,v4,v5,v6,v7);v9=v8;v10=escape_Qundef((yyvsp[-1].val));v11=dispatch2(block_var,v9,v10);(yyval.
val)=v11;}
10122#line 10118 "ripper.c"
10126#line 3487 "ripper.y"
10131 (yyval.
val) = (yyvsp[-2].val);
10133 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-2].val));v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(block_var,v1,v2);(yyval.
val)=v3;}
10135#line 10131 "ripper.c"
10139#line 3499 "ripper.y"
10143#line 10139 "ripper.c"
10147#line 3503 "ripper.y"
10152 (yyval.
val)=(yyvsp[-1].val);
10154#line 10150 "ripper.c"
10158#line 3512 "ripper.y"
10160#line 10156 "ripper.c"
10164#line 3514 "ripper.y"
10166#line 10162 "ripper.c"
10170#line 3518 "ripper.y"
10172 new_bv(p,
get_id((yyvsp[0].val)));
10175#line 10171 "ripper.c"
10179#line 3523 "ripper.y"
10183#line 10179 "ripper.c"
10187#line 3528 "ripper.y"
10189 (yyval.
vars) = dyna_push(p);
10191#line 10187 "ripper.c"
10195#line 3531 "ripper.y"
10200#line 10196 "ripper.c"
10204#line 3535 "ripper.y"
10209#line 10205 "ripper.c"
10213#line 3539 "ripper.y"
10215 (yyval.
node) = numparam_push(p);
10217#line 10213 "ripper.c"
10221#line 3543 "ripper.y"
10225#line 10221 "ripper.c"
10229#line 3547 "ripper.y"
10235 (yyvsp[-2].
val) = args_with_numbered(p, (yyvsp[-2].val), max_numparam);
10238 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10244 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(lambda,v1,v2);(yyval.
val)=v3;}
10245 numparam_pop(p, (yyvsp[-3].node));
10246 dyna_pop(p, (yyvsp[-6].
vars));
10248#line 10244 "ripper.c"
10252#line 3568 "ripper.y"
10255 (yyval.
val) = (yyvsp[-2].val);
10258 {
VALUE v1,v2;v1=(yyvsp[-2].
val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
10260#line 10256 "ripper.c"
10264#line 3576 "ripper.y"
10267 if (!args_info_empty_p((yyvsp[0].val)->
nd_ainfo))
10270 (yyval.
val) = (yyvsp[0].
val);
10272#line 10268 "ripper.c"
10276#line 3586 "ripper.y"
10278 token_info_pop(p,
"}", &(yylsp[0]));
10279 (yyval.
val) = (yyvsp[-1].val);
10281#line 10277 "ripper.c"
10285#line 3591 "ripper.y"
10287 (yyval.
val) = (yyvsp[-1].val);
10289#line 10285 "ripper.c"
10293#line 3597 "ripper.y"
10295 (yyval.
val) = (yyvsp[-1].val);
10297 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10301#line 10297 "ripper.c"
10305#line 3607 "ripper.y"
10312 block_dup_check(p, (yyvsp[-1].val)->
nd_args, (yyvsp[0].val));
10314 (yyval.
val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
10315 fixpos((yyval.
val), (yyvsp[-1].
val));
10317 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(method_add_block,v1,v2);(yyval.
val)=v3;}
10319#line 10315 "ripper.c"
10323#line 3621 "ripper.y"
10326 (yyval.
val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
10328 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].
val);v2=(yyvsp[-2].
val);v3=(yyvsp[-1].
val);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=v6==
Qundef ? v5 : dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
10330#line 10326 "ripper.c"
10334#line 3628 "ripper.y"
10337 (yyval.
val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
10339 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[-2].
val);v4=(yyvsp[-1].
val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].
val);v8=v7==
Qundef ? v6 : dispatch2(method_add_block,v6,v7);(yyval.
val)=v8;}
10341#line 10337 "ripper.c"
10345#line 3635 "ripper.y"
10348 (yyval.
val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
10350 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[-2].
val);v4=(yyvsp[-1].
val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].
val);v8=dispatch2(method_add_block,v6,v7);(yyval.
val)=v8;}
10352#line 10348 "ripper.c"
10356#line 3644 "ripper.y"
10359 (yyval.
val) = (yyvsp[-1].val);
10363 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].
val);v2=dispatch1(fcall,v1);v3=v2;v4=(yyvsp[0].
val);v5=dispatch2(method_add_arg,v3,v4);(yyval.
val)=v5;}
10365#line 10361 "ripper.c"
10369#line 3653 "ripper.y"
10372 (yyval.
val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
10375 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].
val);v2=(yyvsp[-2].
val);v3=(yyvsp[-1].
val);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=v6==
Qundef ? v5 : dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
10377#line 10373 "ripper.c"
10381#line 3661 "ripper.y"
10384 (yyval.
val) = new_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
10387 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].
val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-1].
val);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
10389#line 10385 "ripper.c"
10393#line 3669 "ripper.y"
10400#line 10396 "ripper.c"
10404#line 3676 "ripper.y"
10407 (yyval.
val) = new_qcall(p, (yyvsp[-1].val), (yyvsp[-2].
val),
ID2VAL(
idCall), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
10410 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=
ID2VAL(
idCall);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
10412#line 10408 "ripper.c"
10416#line 3684 "ripper.y"
10422 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-2].
val);v2=
ID2VAL(
idCOLON2);v3=
ID2VAL(
idCall);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
10424#line 10420 "ripper.c"
10428#line 3692 "ripper.y"
10433 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(super,v1);(yyval.
val)=v2;}
10435#line 10431 "ripper.c"
10439#line 3699 "ripper.y"
10444 {
VALUE v1;v1=dispatch0(zsuper);(yyval.
val)=v1;}
10446#line 10442 "ripper.c"
10450#line 3706 "ripper.y"
10456 (yyval.
val) =
NEW_CALL((yyvsp[-3].val),
tAREF, (yyvsp[-1].val), &(yyloc));
10457 fixpos((yyval.
val), (yyvsp[-3].
val));
10459 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref,v1,v2);(yyval.
val)=v3;}
10461#line 10457 "ripper.c"
10465#line 3719 "ripper.y"
10467 (yyval.
val) = (yyvsp[-1].val);
10469 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10473#line 10469 "ripper.c"
10477#line 3727 "ripper.y"
10479 (yyval.
val) = (yyvsp[-1].val);
10481 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10485#line 10481 "ripper.c"
10489#line 3736 "ripper.y"
10490 {(yyval.
vars) = dyna_push(p);}
10491#line 10487 "ripper.c"
10495#line 3737 "ripper.y"
10500#line 10496 "ripper.c"
10504#line 3741 "ripper.y"
10506 (yyval.
node) = numparam_push(p);
10508#line 10504 "ripper.c"
10512#line 3745 "ripper.y"
10516 (yyvsp[-1].
val) = args_with_numbered(p, (yyvsp[-1].val), max_numparam);
10518 (yyval.
val) =
NEW_ITER((yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
10520 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-1].val));v2=(yyvsp[0].
val);v3=dispatch2(brace_block,v1,v2);(yyval.
val)=v3;}
10521 numparam_pop(p, (yyvsp[-2].node));
10522 dyna_pop(p, (yyvsp[-4].
vars));
10524#line 10520 "ripper.c"
10528#line 3758 "ripper.y"
10529 {(yyval.
vars) = dyna_push(p);}
10530#line 10526 "ripper.c"
10534#line 3759 "ripper.y"
10539#line 10535 "ripper.c"
10543#line 3763 "ripper.y"
10545 (yyval.
node) = numparam_push(p);
10548#line 10544 "ripper.c"
10552#line 3768 "ripper.y"
10556 (yyvsp[-1].
val) = args_with_numbered(p, (yyvsp[-1].val), max_numparam);
10558 (yyval.
val) =
NEW_ITER((yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
10560 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-1].val));v2=(yyvsp[0].
val);v3=dispatch2(do_block,v1,v2);(yyval.
val)=v3;}
10562 numparam_pop(p, (yyvsp[-2].node));
10563 dyna_pop(p, (yyvsp[-4].
vars));
10565#line 10561 "ripper.c"
10569#line 3783 "ripper.y"
10572 check_literal_when(p, (yyvsp[0].val), &(yylsp[0]));
10573 (yyval.
val) =
NEW_LIST((yyvsp[0].val), &(yyloc));
10575 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(args_add,v2,v3);(yyval.
val)=v4;}
10577#line 10573 "ripper.c"
10581#line 3791 "ripper.y"
10586 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(args_add_star,v2,v3);(yyval.
val)=v4;}
10588#line 10584 "ripper.c"
10592#line 3798 "ripper.y"
10595 check_literal_when(p, (yyvsp[0].val), &(yylsp[0]));
10596 (yyval.
val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
10598 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(args_add,v1,v2);(yyval.
val)=v3;}
10600#line 10596 "ripper.c"
10604#line 3806 "ripper.y"
10607 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].
val), &(yyloc));
10609 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[0].
val);v3=dispatch2(args_add_star,v1,v2);(yyval.
val)=v3;}
10611#line 10607 "ripper.c"
10615#line 3817 "ripper.y"
10618 (yyval.
val) =
NEW_WHEN((yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
10619 fixpos((yyval.
val), (yyvsp[-3].
val));
10621 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-3].
val);v2=(yyvsp[-1].
val);v3=escape_Qundef((yyvsp[0].val));v4=dispatch3(when,v1,v2,v3);(yyval.
val)=v4;}
10623#line 10619 "ripper.c"
10627#line 3831 "ripper.y"
10634#line 10630 "ripper.c"
10638#line 3837 "ripper.y"
10639 {(yyval.
tbl) = push_pvtbl(p);}
10640#line 10636 "ripper.c"
10644#line 3838 "ripper.y"
10645 {(yyval.
tbl) = push_pktbl(p);}
10646#line 10642 "ripper.c"
10650#line 3840 "ripper.y"
10651 {pop_pktbl(p, (yyvsp[-2].tbl));}
10652#line 10648 "ripper.c"
10656#line 3841 "ripper.y"
10657 {pop_pvtbl(p, (yyvsp[-4].tbl));}
10658#line 10654 "ripper.c"
10662#line 3842 "ripper.y"
10666#line 10662 "ripper.c"
10670#line 3847 "ripper.y"
10673 (yyval.
val) =
NEW_IN((yyvsp[-6].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
10675 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-6].
val);v2=(yyvsp[-1].
val);v3=escape_Qundef((yyvsp[0].val));v4=dispatch3(in,v1,v2,v3);(yyval.
val)=v4;}
10677#line 10673 "ripper.c"
10681#line 3861 "ripper.y"
10684 (yyval.
val) = new_if(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
10685 fixpos((yyval.
val), (yyvsp[0].
val));
10687 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(if_mod,v1,v2);(yyval.
val)=v3;}
10689#line 10685 "ripper.c"
10693#line 3869 "ripper.y"
10696 (yyval.
val) = new_unless(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
10697 fixpos((yyval.
val), (yyvsp[0].
val));
10699 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(unless_mod,v1,v2);(yyval.
val)=v3;}
10701#line 10697 "ripper.c"
10705#line 3880 "ripper.y"
10707 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
10710#line 10706 "ripper.c"
10714#line 3885 "ripper.y"
10716 (yyval.
val) = new_array_pattern(p,
Qnone,
get_value((yyvsp[-2].val)), (yyvsp[0].val), &(yyloc));
10722#line 10718 "ripper.c"
10726#line 3893 "ripper.y"
10728 (yyval.
val) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
10730#line 10726 "ripper.c"
10734#line 3897 "ripper.y"
10736 (yyval.
val) = new_hash_pattern(p,
Qnone, (yyvsp[0].val), &(yyloc));
10738#line 10734 "ripper.c"
10742#line 3906 "ripper.y"
10746 n = list_append(p,
n, (yyvsp[0].val));
10747 (yyval.
val) = new_hash(p,
n, &(yyloc));
10749 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].
val);v2=
STATIC_ID2SYM(id_assoc);v3=(yyvsp[0].
val);v4=dispatch3(binary,v1,v2,v3);(yyval.
val)=v4;}
10751#line 10747 "ripper.c"
10755#line 3918 "ripper.y"
10762#line 10758 "ripper.c"
10766#line 3927 "ripper.y"
10767 {(yyval.
tbl) = push_pktbl(p);}
10768#line 10764 "ripper.c"
10772#line 3928 "ripper.y"
10773 {(yyval.
tbl) = push_pktbl(p);}
10774#line 10770 "ripper.c"
10778#line 3932 "ripper.y"
10780 pop_pktbl(p, (yyvsp[-2].tbl));
10781 (yyval.
val) = new_array_pattern(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val), &(yyloc));
10787#line 10783 "ripper.c"
10791#line 3941 "ripper.y"
10793 pop_pktbl(p, (yyvsp[-2].tbl));
10794 (yyval.
val) = new_hash_pattern(p, (yyvsp[-3].val), (yyvsp[-1].
val), &(yyloc));
10800#line 10796 "ripper.c"
10804#line 3950 "ripper.y"
10806 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
10807 (yyval.
val) = new_array_pattern(p, (yyvsp[-2].val),
Qnone, (yyval.
val), &(yyloc));
10809#line 10805 "ripper.c"
10813#line 3955 "ripper.y"
10815 pop_pktbl(p, (yyvsp[-2].tbl));
10816 (yyval.
val) = new_array_pattern(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val), &(yyloc));
10822#line 10818 "ripper.c"
10826#line 3964 "ripper.y"
10828 pop_pktbl(p, (yyvsp[-2].tbl));
10829 (yyval.
val) = new_hash_pattern(p, (yyvsp[-3].val), (yyvsp[-1].
val), &(yyloc));
10835#line 10831 "ripper.c"
10839#line 3973 "ripper.y"
10841 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
10842 (yyval.
val) = new_array_pattern(p, (yyvsp[-2].val),
Qnone, (yyval.
val), &(yyloc));
10844#line 10840 "ripper.c"
10848#line 3977 "ripper.y"
10849 {(yyval.
tbl) = push_pktbl(p);}
10850#line 10846 "ripper.c"
10854#line 3978 "ripper.y"
10856 pop_pktbl(p, (yyvsp[-2].tbl));
10857 (yyval.
val) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[-1].val), &(yyloc));
10859#line 10855 "ripper.c"
10863#line 3983 "ripper.y"
10865 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
10868#line 10864 "ripper.c"
10872#line 3988 "ripper.y"
10874 (yyval.
tbl) = push_pktbl(p);
10878#line 10874 "ripper.c"
10882#line 3994 "ripper.y"
10884 pop_pktbl(p, (yyvsp[-2].tbl));
10886 (yyval.
val) = new_hash_pattern(p,
Qnone, (yyvsp[-1].val), &(yyloc));
10888#line 10884 "ripper.c"
10892#line 4000 "ripper.y"
10894 (yyval.
val) = new_hash_pattern_tail(p,
Qnone, 0, &(yyloc));
10895 (yyval.
val) = new_hash_pattern(p,
Qnone, (yyval.
val), &(yyloc));
10897#line 10893 "ripper.c"
10901#line 4004 "ripper.y"
10902 {(yyval.
tbl) = push_pktbl(p);}
10903#line 10899 "ripper.c"
10907#line 4005 "ripper.y"
10909 pop_pktbl(p, (yyvsp[-2].tbl));
10910 (yyval.
val) = (yyvsp[-1].val);
10912#line 10908 "ripper.c"
10916#line 4012 "ripper.y"
10920 (yyval.
val) = new_array_pattern_tail(p, pre_args, 0, 0,
Qnone, &(yyloc));
10925#line 10921 "ripper.c"
10929#line 4021 "ripper.y"
10931 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[0].val), 1, 0,
Qnone, &(yyloc));
10933#line 10929 "ripper.c"
10937#line 4025 "ripper.y"
10940 (yyval.
val) = new_array_pattern_tail(p, list_concat((yyvsp[-1].val), (yyvsp[0].
val)), 0, 0,
Qnone, &(yyloc));
10943 (yyval.
val) = new_array_pattern_tail(p, pre_args, 0, 0,
Qnone, &(yyloc));
10946#line 10942 "ripper.c"
10950#line 4034 "ripper.y"
10952 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-2].val), 1, (yyvsp[0].
val),
Qnone, &(yyloc));
10954#line 10950 "ripper.c"
10958#line 4038 "ripper.y"
10960 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-4].val), 1, (yyvsp[-2].
val), (yyvsp[0].val), &(yyloc));
10962#line 10958 "ripper.c"
10966#line 4042 "ripper.y"
10968 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-1].val), 1, 0,
Qnone, &(yyloc));
10970#line 10966 "ripper.c"
10974#line 4046 "ripper.y"
10976 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-3].val), 1, 0, (yyvsp[0].
val), &(yyloc));
10978#line 10974 "ripper.c"
10982#line 4053 "ripper.y"
10984 (yyval.
val) = (yyvsp[-1].val);
10986#line 10982 "ripper.c"
10990#line 4057 "ripper.y"
10993 (yyval.
val) = list_concat((yyvsp[-2].val), (yyvsp[-1].
val));
10997#line 10993 "ripper.c"
11001#line 4066 "ripper.y"
11003 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[0].val),
Qnone, &(yyloc));
11005#line 11001 "ripper.c"
11009#line 4070 "ripper.y"
11011 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
11013#line 11009 "ripper.c"
11017#line 4074 "ripper.y"
11019 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
11021#line 11017 "ripper.c"
11025#line 4078 "ripper.y"
11027 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, 0, (yyvsp[0].val), &(yyloc));
11029#line 11025 "ripper.c"
11033#line 4085 "ripper.y"
11036 (yyval.
val) = list_concat((yyvsp[-2].val), (yyvsp[0].
val));
11040#line 11036 "ripper.c"
11044#line 4094 "ripper.y"
11047 (yyval.
val) =
NEW_LIST((yyvsp[0].val), &(yyloc));
11051#line 11047 "ripper.c"
11055#line 4103 "ripper.y"
11057 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].val), &(yyloc)), (yyvsp[0].
val), &(yyloc));
11059#line 11055 "ripper.c"
11063#line 4107 "ripper.y"
11065 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].val), &(yyloc)), 0, &(yyloc));
11067#line 11063 "ripper.c"
11071#line 4111 "ripper.y"
11073 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].val), &(yyloc)), 0, &(yyloc));
11075#line 11071 "ripper.c"
11079#line 4115 "ripper.y"
11081 (yyval.
val) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)), (yyvsp[0].val), &(yyloc));
11083#line 11079 "ripper.c"
11087#line 4119 "ripper.y"
11089 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].val), &(yyloc)),
ID2VAL(
idNil), &(yyloc));
11091#line 11087 "ripper.c"
11095#line 4123 "ripper.y"
11097 (yyval.
val) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)),
ID2VAL(
idNil), &(yyloc));
11099#line 11095 "ripper.c"
11103#line 4129 "ripper.y"
11105#line 11101 "ripper.c"
11109#line 4131 "ripper.y"
11112 (yyval.
val) = list_concat((yyvsp[-2].val), (yyvsp[0].
val));
11116#line 11112 "ripper.c"
11120#line 4140 "ripper.y"
11122 error_duplicate_pattern_key(p,
get_id((yyvsp[-1].val)), &(yylsp[-1]));
11128#line 11124 "ripper.c"
11132#line 4148 "ripper.y"
11134 error_duplicate_pattern_key(p,
get_id((yyvsp[0].val)), &(yylsp[0]));
11136 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
11138 error_duplicate_pattern_variable(p,
get_id((yyvsp[0].val)), &(yylsp[0]));
11140 (yyval.
val) = list_append(p,
NEW_LIST(
NEW_LIT(
ID2SYM((yyvsp[0].val)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].val), 0, &(yyloc)));
11144#line 11140 "ripper.c"
11148#line 4163 "ripper.y"
11150 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
11153 NODE *node = dsym_node(p, (yyvsp[-1].val), &loc);
11157 if (ripper_is_node_yylval((yyvsp[-1].val)) &&
RNODE((yyvsp[-1].val))->nd_cval) {
11158 VALUE label =
RNODE((yyvsp[-1].val))->nd_cval;
11159 VALUE rval =
RNODE((yyvsp[-1].val))->nd_rval;
11165 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
11169#line 11165 "ripper.c"
11173#line 4186 "ripper.y"
11175 (yyval.
val) = (yyvsp[0].val);
11177#line 11173 "ripper.c"
11181#line 4190 "ripper.y"
11185#line 11181 "ripper.c"
11189#line 4196 "ripper.y"
11193#line 11189 "ripper.c"
11197#line 4203 "ripper.y"
11202 (yyval.
val) =
NEW_DOT2((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
11204 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
11206#line 11202 "ripper.c"
11210#line 4212 "ripper.y"
11215 (yyval.
val) =
NEW_DOT3((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
11217 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
11219#line 11215 "ripper.c"
11223#line 4221 "ripper.y"
11227 loc.beg_pos = (yylsp[0]).end_pos;
11228 loc.end_pos = (yylsp[0]).end_pos;
11233 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=
Qnil;v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
11235#line 11231 "ripper.c"
11239#line 4233 "ripper.y"
11243 loc.beg_pos = (yylsp[0]).end_pos;
11244 loc.end_pos = (yylsp[0]).end_pos;
11249 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=
Qnil;v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
11251#line 11247 "ripper.c"
11255#line 4248 "ripper.y"
11259 loc.beg_pos = (yylsp[-1]).beg_pos;
11260 loc.end_pos = (yylsp[-1]).beg_pos;
11265 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].
val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
11267#line 11263 "ripper.c"
11271#line 4260 "ripper.y"
11275 loc.beg_pos = (yylsp[-1]).beg_pos;
11276 loc.end_pos = (yylsp[-1]).beg_pos;
11281 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].
val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
11283#line 11279 "ripper.c"
11287#line 4282 "ripper.y"
11290 if (!((yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.
val) =
NEW_BEGIN(0, &(yyloc));
11292 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11294#line 11290 "ripper.c"
11298#line 4289 "ripper.y"
11300 token_info_push(p,
"->", &(yylsp[0]));
11302#line 11298 "ripper.c"
11306#line 4293 "ripper.y"
11308 (yyval.
val) = (yyvsp[0].val);
11313#line 11309 "ripper.c"
11317#line 4302 "ripper.y"
11320 error_duplicate_pattern_variable(p, (yyvsp[0].val), &(yylsp[0]));
11321 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
11323 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
11325#line 11321 "ripper.c"
11329#line 4312 "ripper.y"
11332 NODE *
n = gettable(p, (yyvsp[0].val), &(yyloc));
11338 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11340#line 11336 "ripper.c"
11344#line 4325 "ripper.y"
11349 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(top_const_ref,v1);(yyval.
val)=v2;}
11351#line 11347 "ripper.c"
11355#line 4332 "ripper.y"
11360 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(const_path_ref,v1,v2);(yyval.
val)=v3;}
11362#line 11358 "ripper.c"
11366#line 4339 "ripper.y"
11369 (yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc));
11371 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11373#line 11369 "ripper.c"
11377#line 4350 "ripper.y"
11381 (yyvsp[-3].
val) ? block_append(p, node_assign(p, (yyvsp[-3].val),
NEW_ERRINFO(&(yylsp[-3])), &(yylsp[-3])), (yyvsp[-1].
val)) : (yyvsp[-1].
val),
11382 (yyvsp[0].val), &(yyloc));
11383 fixpos((yyval.
val), (yyvsp[-4].
val)?(yyvsp[-4].
val):(yyvsp[-1].
val));
11385 {
VALUE v1,v2,v3,v4,v5;v1=escape_Qundef((yyvsp[-4].val));v2=escape_Qundef((yyvsp[-3].val));v3=escape_Qundef((yyvsp[-1].val));v4=escape_Qundef((yyvsp[0].val));v5=dispatch4(rescue,v1,v2,v3,v4);(yyval.
val)=v5;}
11387#line 11383 "ripper.c"
11391#line 4363 "ripper.y"
11394 (yyval.
val) =
NEW_LIST((yyvsp[0].val), &(yyloc));
11398#line 11394 "ripper.c"
11402#line 4370 "ripper.y"
11405 if (!((yyval.
val) = splat_array((yyvsp[0].val)))) (yyval.
val) = (yyvsp[0].val);
11407 (yyval.
val)=(yyvsp[0].val);
11409#line 11405 "ripper.c"
11413#line 4380 "ripper.y"
11415 (yyval.
val) = (yyvsp[0].val);
11417#line 11413 "ripper.c"
11421#line 4387 "ripper.y"
11424 (yyval.
val) = (yyvsp[0].val);
11426 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(ensure,v1);(yyval.
val)=v2;}
11428#line 11424 "ripper.c"
11432#line 4401 "ripper.y"
11441 node = evstr2dstr(p, node);
11443 (yyval.
val) = node;
11445 (yyval.
val)=(yyvsp[0].val);
11447#line 11443 "ripper.c"
11451#line 4420 "ripper.y"
11454 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
11456 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(string_concat,v1,v2);(yyval.
val)=v3;}
11458#line 11454 "ripper.c"
11462#line 4429 "ripper.y"
11465 (yyval.
val) = heredoc_dedent(p, (yyvsp[-1].val));
11466 if ((yyval.
val)) nd_set_loc((yyval.
val), &(yyloc));
11468 {
VALUE v1,v2;v1=heredoc_dedent(p, (yyvsp[-1].val));v2=dispatch1(string_literal,v1);(yyval.
val)=v2;}
11470#line 11466 "ripper.c"
11474#line 4439 "ripper.y"
11477 (yyval.
val) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].val)), &(yyloc));
11479 {
VALUE v1,v2;v1=heredoc_dedent(p, (yyvsp[-1].val));v2=dispatch1(xstring_literal,v1);(yyval.
val)=v2;}
11481#line 11477 "ripper.c"
11485#line 4448 "ripper.y"
11487 (yyval.
val) = new_regexp(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
11489#line 11485 "ripper.c"
11493#line 4454 "ripper.y"
11498 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
11500#line 11496 "ripper.c"
11504#line 4463 "ripper.y"
11509 {
VALUE v1;v1=dispatch0(words_new);(yyval.
val)=v1;}
11511#line 11507 "ripper.c"
11515#line 4470 "ripper.y"
11518 (yyval.
val) = list_append(p, (yyvsp[-2].val), evstr2dstr(p, (yyvsp[-1].val)));
11520 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(words_add,v1,v2);(yyval.
val)=v3;}
11522#line 11518 "ripper.c"
11526#line 4479 "ripper.y"
11527 {{
VALUE v1,v2,v3,v4;v1=dispatch0(word_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(word_add,v2,v3);(yyval.
val)=v4;}}
11528#line 11524 "ripper.c"
11532#line 4481 "ripper.y"
11535 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
11537 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(word_add,v1,v2);(yyval.
val)=v3;}
11539#line 11535 "ripper.c"
11543#line 4490 "ripper.y"
11548 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
11550#line 11546 "ripper.c"
11554#line 4499 "ripper.y"
11559 {
VALUE v1;v1=dispatch0(symbols_new);(yyval.
val)=v1;}
11561#line 11557 "ripper.c"
11565#line 4506 "ripper.y"
11568 (yyval.
val) = symbol_append(p, (yyvsp[-2].val), evstr2dstr(p, (yyvsp[-1].val)));
11570 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(symbols_add,v1,v2);(yyval.
val)=v3;}
11572#line 11568 "ripper.c"
11576#line 4515 "ripper.y"
11581 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
11583#line 11579 "ripper.c"
11587#line 4524 "ripper.y"
11592 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
11594#line 11590 "ripper.c"
11598#line 4533 "ripper.y"
11603 {
VALUE v1;v1=dispatch0(qwords_new);(yyval.
val)=v1;}
11605#line 11601 "ripper.c"
11609#line 4540 "ripper.y"
11612 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[-1].
val));
11614 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(qwords_add,v1,v2);(yyval.
val)=v3;}
11616#line 11612 "ripper.c"
11620#line 4549 "ripper.y"
11625 {
VALUE v1;v1=dispatch0(qsymbols_new);(yyval.
val)=v1;}
11627#line 11623 "ripper.c"
11631#line 4556 "ripper.y"
11634 (yyval.
val) = symbol_append(p, (yyvsp[-2].val), (yyvsp[-1].
val));
11636 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(qsymbols_add,v1,v2);(yyval.
val)=v3;}
11638#line 11634 "ripper.c"
11642#line 4565 "ripper.y"
11647 {
VALUE v1;v1=dispatch0(string_content);(yyval.
val)=v1;}
11650 (yyval.
val) = ripper_new_yylval(p, 0, (yyval.
val), 0);
11653#line 11649 "ripper.c"
11657#line 4576 "ripper.y"
11660 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
11662 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(string_add,v1,v2);(yyval.
val)=v3;}
11665 if (ripper_is_node_yylval((yyvsp[-1].val)) && ripper_is_node_yylval((yyvsp[0].val)) &&
11666 !
RNODE((yyvsp[-1].val))->nd_cval) {
11667 RNODE((yyvsp[-1].val))->nd_cval =
RNODE((yyvsp[0].val))->nd_cval;
11668 RNODE((yyvsp[-1].val))->nd_rval = add_mark_object(p, (yyval.
val));
11669 (yyval.
val) = (yyvsp[-1].val);
11673#line 11669 "ripper.c"
11677#line 4594 "ripper.y"
11682 {
VALUE v1;v1=dispatch0(xstring_new);(yyval.
val)=v1;}
11684#line 11680 "ripper.c"
11688#line 4601 "ripper.y"
11691 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
11693 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(xstring_add,v1,v2);(yyval.
val)=v3;}
11695#line 11691 "ripper.c"
11699#line 4610 "ripper.y"
11704 {
VALUE v1;v1=dispatch0(regexp_new);(yyval.
val)=v1;}
11707 (yyval.
val) = ripper_new_yylval(p, 0, (yyval.
val), 0);
11710#line 11706 "ripper.c"
11714#line 4621 "ripper.y"
11717 NODE *head = (yyvsp[-1].
val), *tail = (yyvsp[0].val);
11719 (yyval.
val) = tail;
11722 (yyval.
val) = head;
11732 head = list_append(p,
NEW_DSTR(
Qnil, &(yyloc)), head);
11735 (yyval.
val) = list_append(p, head, tail);
11738 VALUE s1 = 1,
s2 = 0, n1 = (yyvsp[-1].
val), n2 = (yyvsp[0].val);
11739 if (ripper_is_node_yylval(n1)) {
11740 s1 =
RNODE(n1)->nd_cval;
11741 n1 =
RNODE(n1)->nd_rval;
11743 if (ripper_is_node_yylval(n2)) {
11745 n2 =
RNODE(n2)->nd_rval;
11747 (yyval.
val) = dispatch2(regexp_add, n1, n2);
11749 (yyval.
val) = ripper_new_yylval(p, 0, (yyval.
val),
s2);
11753#line 11749 "ripper.c"
11757#line 4662 "ripper.y"
11758 {(yyval.
val)=ripper_new_yylval(p, 0,
get_value((yyvsp[0].val)), (yyvsp[0].val));}
11759#line 11755 "ripper.c"
11763#line 4664 "ripper.y"
11770#line 11766 "ripper.c"
11774#line 4671 "ripper.y"
11781 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(string_dvar,v1);(yyval.
val)=v2;}
11783#line 11779 "ripper.c"
11787#line 4680 "ripper.y"
11792#line 11788 "ripper.c"
11796#line 4684 "ripper.y"
11802#line 11798 "ripper.c"
11806#line 4689 "ripper.y"
11811#line 11807 "ripper.c"
11815#line 4693 "ripper.y"
11820#line 11816 "ripper.c"
11824#line 4697 "ripper.y"
11829#line 11825 "ripper.c"
11833#line 4702 "ripper.y"
11843 if ((yyvsp[-1].val)) (yyvsp[-1].val)->flags &= ~NODE_FL_NEWLINE;
11844 (yyval.
val) = new_evstr(p, (yyvsp[-1].val), &(yyloc));
11846 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(string_embexpr,v1);(yyval.
val)=v2;}
11848#line 11844 "ripper.c"
11852#line 4719 "ripper.y"
11855 (yyval.
val) =
NEW_GVAR((yyvsp[0].val), &(yyloc));
11857 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11859#line 11855 "ripper.c"
11863#line 4726 "ripper.y"
11866 (yyval.
val) =
NEW_IVAR((yyvsp[0].val), &(yyloc));
11868 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11870#line 11866 "ripper.c"
11874#line 4733 "ripper.y"
11877 (yyval.
val) =
NEW_CVAR((yyvsp[0].val), &(yyloc));
11879 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11881#line 11877 "ripper.c"
11885#line 4747 "ripper.y"
11891 {
VALUE v1,v2,v3,v4;v1=(yyvsp[0].
val);v2=dispatch1(symbol,v1);v3=v2;v4=dispatch1(symbol_literal,v3);(yyval.
val)=v4;}
11893#line 11889 "ripper.c"
11897#line 4763 "ripper.y"
11901 (yyval.
val) = dsym_node(p, (yyvsp[-1].val), &(yyloc));
11903 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(dyna_symbol,v1);(yyval.
val)=v2;}
11905#line 11901 "ripper.c"
11909#line 4774 "ripper.y"
11912 (yyval.
val) = (yyvsp[0].val);
11917#line 11913 "ripper.c"
11921#line 4796 "ripper.y"
11922 {(yyval.
val) =
KWD2EID(nil, (yyvsp[0].val));}
11923#line 11919 "ripper.c"
11927#line 4797 "ripper.y"
11928 {(yyval.
val) =
KWD2EID(
self, (yyvsp[0].val));}
11929#line 11925 "ripper.c"
11933#line 4798 "ripper.y"
11934 {(yyval.
val) =
KWD2EID(
true, (yyvsp[0].val));}
11935#line 11931 "ripper.c"
11939#line 4799 "ripper.y"
11940 {(yyval.
val) =
KWD2EID(
false, (yyvsp[0].val));}
11941#line 11937 "ripper.c"
11945#line 4800 "ripper.y"
11946 {(yyval.
val) =
KWD2EID(_FILE__, (yyvsp[0].val));}
11947#line 11943 "ripper.c"
11951#line 4801 "ripper.y"
11952 {(yyval.
val) =
KWD2EID(_LINE__, (yyvsp[0].val));}
11953#line 11949 "ripper.c"
11957#line 4802 "ripper.y"
11958 {(yyval.
val) =
KWD2EID(_ENCODING__, (yyvsp[0].val));}
11959#line 11955 "ripper.c"
11963#line 4806 "ripper.y"
11966 if (!((yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.
val) =
NEW_BEGIN(0, &(yyloc));
11968 if (id_is_var(p,
get_id((yyvsp[0].val)))) {
11969 (yyval.
val) = dispatch1(var_ref, (yyvsp[0].val));
11972 (yyval.
val) = dispatch1(vcall, (yyvsp[0].val));
11976#line 11972 "ripper.c"
11980#line 4819 "ripper.y"
11983 if (!((yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.
val) =
NEW_BEGIN(0, &(yyloc));
11985 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11987#line 11983 "ripper.c"
11991#line 4828 "ripper.y"
11994 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
11996 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
11998#line 11994 "ripper.c"
12002#line 4835 "ripper.y"
12005 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
12007 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
12009#line 12005 "ripper.c"
12013#line 4848 "ripper.y"
12018#line 12014 "ripper.c"
12022#line 4853 "ripper.y"
12024 (yyval.
val) = (yyvsp[-1].val);
12026#line 12022 "ripper.c"
12030#line 4857 "ripper.y"
12037#line 12033 "ripper.c"
12041#line 4866 "ripper.y"
12044 (yyval.
val) = (yyvsp[-1].val);
12046 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
12050#line 12046 "ripper.c"
12054#line 4875 "ripper.y"
12069#line 12065 "ripper.c"
12073#line 4890 "ripper.y"
12088#line 12084 "ripper.c"
12092#line 4904 "ripper.y"
12098#line 12094 "ripper.c"
12102#line 4910 "ripper.y"
12105 (yyval.
val) = (yyvsp[-1].val);
12109#line 12105 "ripper.c"
12113#line 4919 "ripper.y"
12115 (yyval.
val) = new_args_tail(p, (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-1]));
12117#line 12113 "ripper.c"
12121#line 4923 "ripper.y"
12123 (yyval.
val) = new_args_tail(p, (yyvsp[-1].val),
Qnone, (yyvsp[0].
val), &(yylsp[-1]));
12125#line 12121 "ripper.c"
12129#line 4927 "ripper.y"
12131 (yyval.
val) = new_args_tail(p,
Qnone, (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]));
12133#line 12129 "ripper.c"
12137#line 4931 "ripper.y"
12141#line 12137 "ripper.c"
12145#line 4935 "ripper.y"
12147 (yyval.
val) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].val), &(yylsp[0]));
12149#line 12145 "ripper.c"
12153#line 4941 "ripper.y"
12155 (yyval.
val) = (yyvsp[0].val);
12157#line 12153 "ripper.c"
12161#line 4945 "ripper.y"
12165#line 12161 "ripper.c"
12169#line 4951 "ripper.y"
12171 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[-1].val),
Qnone, (yyvsp[0].
val), &(yyloc));
12173#line 12169 "ripper.c"
12177#line 4955 "ripper.y"
12179 (yyval.
val) = new_args(p, (yyvsp[-7].val), (yyvsp[-5].
val), (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
12181#line 12177 "ripper.c"
12185#line 4959 "ripper.y"
12187 (yyval.
val) = new_args(p, (yyvsp[-3].val), (yyvsp[-1].
val),
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
12189#line 12185 "ripper.c"
12193#line 4963 "ripper.y"
12195 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].
val),
Qnone, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
12197#line 12193 "ripper.c"
12201#line 4967 "ripper.y"
12203 (yyval.
val) = new_args(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val),
Qnone, (yyvsp[0].val), &(yyloc));
12205#line 12201 "ripper.c"
12209#line 4971 "ripper.y"
12211 (yyval.
val) = new_args(p, (yyvsp[-5].val),
Qnone, (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
12213#line 12209 "ripper.c"
12217#line 4975 "ripper.y"
12221#line 12217 "ripper.c"
12225#line 4979 "ripper.y"
12227 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val), (yyvsp[-1].
val),
Qnone, (yyvsp[0].val), &(yyloc));
12229#line 12225 "ripper.c"
12233#line 4983 "ripper.y"
12235 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
12237#line 12233 "ripper.c"
12241#line 4987 "ripper.y"
12245#line 12241 "ripper.c"
12249#line 4991 "ripper.y"
12251 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
12253#line 12249 "ripper.c"
12257#line 4995 "ripper.y"
12261#line 12257 "ripper.c"
12265#line 4999 "ripper.y"
12267 (yyval.
val) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
12269#line 12265 "ripper.c"
12273#line 5003 "ripper.y"
12277#line 12273 "ripper.c"
12281#line 5007 "ripper.y"
12286#line 12282 "ripper.c"
12290#line 5014 "ripper.y"
12295 {
VALUE v1;v1=dispatch0(args_forward);(yyval.
val)=v1;}
12297#line 12293 "ripper.c"
12301#line 5023 "ripper.y"
12304 yyerror1(&(yylsp[0]),
"formal argument cannot be a constant");
12307 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(param_error,v1);(yyval.
val)=v2;}ripper_error(p);
12309#line 12305 "ripper.c"
12313#line 5031 "ripper.y"
12316 yyerror1(&(yylsp[0]),
"formal argument cannot be an instance variable");
12319 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(param_error,v1);(yyval.
val)=v2;}ripper_error(p);
12321#line 12317 "ripper.c"
12325#line 5039 "ripper.y"
12328 yyerror1(&(yylsp[0]),
"formal argument cannot be a global variable");
12331 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(param_error,v1);(yyval.
val)=v2;}ripper_error(p);
12333#line 12329 "ripper.c"
12337#line 5047 "ripper.y"
12340 yyerror1(&(yylsp[0]),
"formal argument cannot be a class variable");
12343 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(param_error,v1);(yyval.
val)=v2;}ripper_error(p);
12345#line 12341 "ripper.c"
12349#line 5058 "ripper.y"
12351 formal_argument(p,
get_id((yyvsp[0].val)));
12353 (yyval.
val) = (yyvsp[0].val);
12355#line 12351 "ripper.c"
12359#line 5066 "ripper.y"
12364 (yyval.
val) = (yyvsp[0].val);
12366#line 12362 "ripper.c"
12370#line 5075 "ripper.y"
12378#line 12374 "ripper.c"
12382#line 5083 "ripper.y"
12385 ID tid = internal_id(p);
12387 loc.beg_pos = (yylsp[-1]).beg_pos;
12388 loc.end_pos = (yylsp[-1]).beg_pos;
12390 if (dyna_in_block(p)) {
12399 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
12401#line 12397 "ripper.c"
12405#line 5104 "ripper.y"
12407#line 12403 "ripper.c"
12411#line 5106 "ripper.y"
12414 (yyval.
val) = (yyvsp[-2].val);
12417 rb_discard_node(p, (yyvsp[0].val));
12421#line 12417 "ripper.c"
12425#line 5119 "ripper.y"
12428 arg_var(p, formal_argument(p,
id));
12431 (yyval.
val) = (yyvsp[0].val);
12433#line 12429 "ripper.c"
12437#line 5129 "ripper.y"
12441 (yyval.
val) = new_kw_arg(p, assignable(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
12445#line 12441 "ripper.c"
12449#line 5137 "ripper.y"
12457#line 12453 "ripper.c"
12461#line 5147 "ripper.y"
12464 (yyval.
val) = new_kw_arg(p, assignable(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
12468#line 12464 "ripper.c"
12472#line 5154 "ripper.y"
12479#line 12475 "ripper.c"
12483#line 5163 "ripper.y"
12486 (yyval.
val) = (yyvsp[0].val);
12490#line 12486 "ripper.c"
12494#line 5170 "ripper.y"
12497 (yyval.
val) = kwd_append((yyvsp[-2].val), (yyvsp[0].
val));
12501#line 12497 "ripper.c"
12505#line 5180 "ripper.y"
12508 (yyval.
val) = (yyvsp[0].val);
12512#line 12508 "ripper.c"
12516#line 5187 "ripper.y"
12519 (yyval.
val) = kwd_append((yyvsp[-2].val), (yyvsp[0].
val));
12523#line 12519 "ripper.c"
12527#line 5200 "ripper.y"
12531 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(nokw_param,v1);(yyval.
val)=v2;}
12533#line 12529 "ripper.c"
12537#line 5208 "ripper.y"
12539 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].val))));
12541 (yyval.
val) = (yyvsp[0].val);
12543 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(kwrest_param,v1);(yyval.
val)=v2;}
12545#line 12541 "ripper.c"
12549#line 5216 "ripper.y"
12552 (yyval.
val) = internal_id(p);
12553 arg_var(p, (yyval.
val));
12555 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(kwrest_param,v1);(yyval.
val)=v2;}
12557#line 12553 "ripper.c"
12561#line 5226 "ripper.y"
12565 (yyval.
val) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
12569#line 12565 "ripper.c"
12573#line 5236 "ripper.y"
12577 (yyval.
val) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
12581#line 12577 "ripper.c"
12585#line 5246 "ripper.y"
12588 (yyval.
val) = (yyvsp[0].val);
12592#line 12588 "ripper.c"
12596#line 5253 "ripper.y"
12599 (yyval.
val) = opt_arg_append((yyvsp[-2].val), (yyvsp[0].
val));
12603#line 12599 "ripper.c"
12607#line 5262 "ripper.y"
12610 (yyval.
val) = (yyvsp[0].val);
12614#line 12610 "ripper.c"
12618#line 5269 "ripper.y"
12621 (yyval.
val) = opt_arg_append((yyvsp[-2].val), (yyvsp[0].
val));
12625#line 12621 "ripper.c"
12629#line 5282 "ripper.y"
12631 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].val))));
12633 (yyval.
val) = (yyvsp[0].val);
12635 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(rest_param,v1);(yyval.
val)=v2;}
12637#line 12633 "ripper.c"
12641#line 5290 "ripper.y"
12644 (yyval.
val) = internal_id(p);
12645 arg_var(p, (yyval.
val));
12647 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(rest_param,v1);(yyval.
val)=v2;}
12649#line 12645 "ripper.c"
12653#line 5304 "ripper.y"
12655 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].val))));
12657 (yyval.
val) = (yyvsp[0].val);
12659 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(blockarg,v1);(yyval.
val)=v2;}
12661#line 12657 "ripper.c"
12665#line 5314 "ripper.y"
12667 (yyval.
val) = (yyvsp[0].val);
12669#line 12665 "ripper.c"
12673#line 5318 "ripper.y"
12677#line 12673 "ripper.c"
12681#line 5324 "ripper.y"
12684 (yyval.
val) = (yyvsp[0].val);
12686#line 12682 "ripper.c"
12690#line 5328 "ripper.y"
12692#line 12688 "ripper.c"
12696#line 5329 "ripper.y"
12699 switch (
nd_type((yyvsp[-1].val))) {
12708 yyerror1(&(yylsp[-1]),
"can't define singleton method for literals");
12714 (yyval.
val) = (yyvsp[-1].val);
12716 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
12718#line 12714 "ripper.c"
12722#line 5354 "ripper.y"
12725 (yyval.
val) = (yyvsp[-1].val);
12727 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(assoclist_from_args,v1);(yyval.
val)=v2;}
12729#line 12725 "ripper.c"
12733#line 5363 "ripper.y"
12735#line 12731 "ripper.c"
12739#line 5365 "ripper.y"
12742 NODE *assocs = (yyvsp[-2].
val);
12748 if (assocs->nd_head &&
12752 tail = tail->nd_next->nd_head->nd_head;
12754 assocs = list_concat(assocs, tail);
12756 (yyval.
val) = assocs;
12760#line 12756 "ripper.c"
12764#line 5388 "ripper.y"
12771 (yyval.
val) = list_append(p,
NEW_LIST((yyvsp[-2].val), &(yyloc)), (yyvsp[0].
val));
12773 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(assoc_new,v1,v2);(yyval.
val)=v3;}
12775#line 12771 "ripper.c"
12779#line 5399 "ripper.y"
12784 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(assoc_new,v1,v2);(yyval.
val)=v3;}
12786#line 12782 "ripper.c"
12790#line 5406 "ripper.y"
12793 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
12794 (yyval.
val) = list_append(p,
NEW_LIST(dsym_node(p, (yyvsp[-2].val), &loc), &loc), (yyvsp[0].
val));
12796 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-2].
val);v2=dispatch1(dyna_symbol,v1);v3=v2;v4=(yyvsp[0].
val);v5=dispatch2(assoc_new,v3,v4);(yyval.
val)=v5;}
12798#line 12794 "ripper.c"
12802#line 5414 "ripper.y"
12806 !((yyvsp[0].
val)->
nd_head && (yyvsp[0].val)->nd_head->nd_alen)) {
12807 static VALUE empty_hash;
12815 (yyval.
val) = list_append(p,
NEW_LIST(0, &(yyloc)), (yyvsp[0].val));
12817 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(assoc_splat,v1);(yyval.
val)=v2;}
12819#line 12815 "ripper.c"
12823#line 5482 "ripper.y"
12825#line 12821 "ripper.c"
12829#line 5483 "ripper.y"
12831#line 12827 "ripper.c"
12835#line 5487 "ripper.y"
12837#line 12833 "ripper.c"
12841#line 5491 "ripper.y"
12845#line 12841 "ripper.c"
12849#line 12845 "ripper.c"
12876 const int yylhs = yyr1[yyn] -
YYNTOKENS;
12877 const int yyi = yypgoto[yylhs] + *yyssp;
12878 yystate = (0 <= yyi && yyi <=
YYLAST && yycheck[yyi] == *yyssp
12880 : yydefgoto[yylhs]);
12899 = {yyssp, yytoken, &yylloc};
12900 char const *yymsgp =
YY_(
"syntax error");
12901 int yysyntax_error_status;
12902 yysyntax_error_status = yysyntax_error (p, &yymsg_alloc, &yymsg, &yyctx);
12903 if (yysyntax_error_status == 0)
12905 else if (yysyntax_error_status == -1)
12907 if (yymsg != yymsgbuf)
12913 yysyntax_error_status
12914 = yysyntax_error (p, &yymsg_alloc, &yymsg, &yyctx);
12920 yymsg_alloc =
sizeof yymsgbuf;
12924 yyerror (&yylloc, p, yymsgp);
12925 if (yysyntax_error_status ==
YYENOMEM)
12930 yyerror_range[1] = yylloc;
12931 if (yyerrstatus == 3)
12944 yydestruct (
"Error: discarding",
12945 yytoken, &
yylval, &yylloc, p);
12983 yyn = yypact[yystate];
12989 yyn = yytable[yyn];
12999 yyerror_range[1] = *yylsp;
13000 yydestruct (
"Error: popping",
13011 yyerror_range[2] = yylloc;
13042 yyerror (&yylloc, p,
YY_(
"memory exhausted"));
13056 yydestruct (
"Cleanup: discarding lookahead",
13057 yytoken, &
yylval, &yylloc, p);
13063 while (yyssp != yyss)
13065 yydestruct (
"Cleanup: popping",
13073 if (yymsg != yymsgbuf)
13078#line 5495 "ripper.y"
13083# define yylval (*p->lval)
13092# define set_yylval_node(x) { \
13093 YYLTYPE _cur_loc; \
13094 rb_parser_set_location(p, &_cur_loc); \
13095 yylval.node = (x); \
13097# define set_yylval_str(x) \
13099 set_yylval_node(NEW_STR(x, &_cur_loc)); \
13100 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
13102# define set_yylval_literal(x) \
13104 set_yylval_node(NEW_LIT(x, &_cur_loc)); \
13105 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
13107# define set_yylval_num(x) (yylval.num = (x))
13108# define set_yylval_id(x) (yylval.id = (x))
13109# define set_yylval_name(x) (yylval.id = (x))
13110# define yylval_id() (yylval.id)
13115 return ripper_new_yylval(p, x,
ID2SYM(x), 0);
13117# define set_yylval_str(x) (yylval.val = add_mark_object(p, (x)))
13118# define set_yylval_num(x) (yylval.val = ripper_new_yylval(p, (x), 0, 0))
13119# define set_yylval_id(x) (void)(x)
13120# define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(p, x))
13121# define set_yylval_literal(x) add_mark_object(p, (x))
13122# define set_yylval_node(x) (void)(x)
13123# define yylval_id() yylval.id
13124# define _cur_loc NULL_LOC
13127#define set_yylval_noname() set_yylval_id(keyword_nil)
13130#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
13131#define dispatch_scan_event(p, t) ((void)0)
13132#define dispatch_delayed_token(p, t) ((void)0)
13133#define has_delayed_token(p) (0)
13135#define literal_flush(p, ptr) ((void)(ptr))
13137#define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val))
13140intern_sym(
const char *
name)
13157 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t),
str);
13165 if (!ripper_has_scan_event(p))
return;
13166 add_mark_object(p, yylval_rval = ripper_scan_event_val(p, t));
13168#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
13174 const char *saved_tokp = p->
lex.
ptok;
13176 if (
NIL_P(p->delayed.token))
return;
13179 add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(t), p->delayed.token));
13180 p->delayed.token =
Qnil;
13184#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
13185#define has_delayed_token(p) (!NIL_P(p->delayed.token))
13212 int column = 1, nonspc = 0,
i;
13214 if (*
ptr ==
'\t') {
13218 if (*
ptr !=
' ' && *
ptr !=
'\t') {
13224 ptinfo->
indent = column;
13225 ptinfo->
nonspc = nonspc;
13237 token_info_setup(ptinfo, p->
lex.
pbeg, loc);
13247 if (!ptinfo_beg)
return;
13251 token_info_warn(p,
token, ptinfo_beg, 1, loc);
13258 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
13260 if (!ptinfo_beg)
return;
13261 token_info_setup(ptinfo_end, p->
lex.
pbeg, loc);
13265 if (!same && ptinfo_beg->
indent < ptinfo_end->
indent)
return;
13267 "mismatched indentations at '%s' with '%s' at %d",
13293 else if (yylloc->beg_pos.lineno == lineno) {
13312 (yylloc->beg_pos.lineno == yylloc->end_pos.lineno &&
13313 yylloc->beg_pos.column == yylloc->end_pos.column)) {
13317 parser_show_error_line(p, yylloc);
13325 const int max_line_margin = 30;
13326 const char *
ptr, *ptr_end, *pt, *pb;
13327 const char *pre =
"", *post =
"", *pend;
13328 const char *code =
"", *caret =
"";
13335 if (!yylloc)
return;
13337 if (pend > pbeg && pend[-1] ==
'\n') {
13338 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
13342 if (lineno == yylloc->end_pos.lineno &&
13343 (pend - pbeg) > yylloc->end_pos.column) {
13344 pt = pbeg + yylloc->end_pos.column;
13347 ptr = ptr_end = pt;
13348 lim =
ptr - pbeg > max_line_margin ?
ptr - max_line_margin : pbeg;
13349 while ((lim <
ptr) && (*(
ptr-1) !=
'\n'))
ptr--;
13351 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
13352 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
13358 if (
ptr > pbeg) pre =
"...";
13360 if (ptr_end < pend) {
13362 if (ptr_end < pend) post =
"...";
13366 if (lineno == yylloc->beg_pos.lineno) {
13367 pb += yylloc->beg_pos.column;
13368 if (pb > pt) pb = pt;
13371 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
13374 if (
RTEST(errbuf)) {
13383#define CSI_BEGIN "\033["
13394 (
int)(pt - pb), pb,
13395 (
int)(ptr_end - pt), pt,
13402 lim = pt < pend ? pt : pend;
13409 *p2++ = *
ptr++ ==
'\t' ?
'\t' :
' ';
13420 pre, (
int)
len, code, post,
13429 const char *pcur = 0, *ptok = 0;
13438 dispatch1(parse_error,
STR_NEW2(msg));
13455vtable_size(
const struct vtable *tbl)
13481#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
13499#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
13515 if (
tbl->pos ==
tbl->capa) {
13516 tbl->capa =
tbl->capa * 2;
13521#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
13532 if (
tbl->pos <
n) {
13538#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
13547 for (
i = 0;
i <
tbl->pos;
i++) {
13548 if (
tbl->tbl[
i] ==
id) {
13562debug_lines(
VALUE fname)
13565 CONST_ID(script_lines,
"SCRIPT_LINES__");
13601 if (!e_option_supplied(p)) {
13607#define RUBY_DTRACE_PARSE_HOOK(name) \
13608 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
13609 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
13634 NODE *body = parser_append_options(p, tree->nd_body);
13638 tree->nd_body = prelude;
13650 if (
NIL_P(fname)) {
13670must_be_ascii_compatible(
VALUE s)
13682 char *beg, *end, *start;
13694 if (end)
len = ++end - beg;
13703 if (
NIL_P(line))
return line;
13704 must_be_ascii_compatible(line);
13730 return yycompile(vparser, p, fname, line);
13742 must_be_ascii_compatible(s);
13743 return parser_compile_string(vparser,
f, s, line);
13765 return yycompile(vparser, p, fname, start);
13781 p->
lex.
gets = lex_generic_gets;
13786 return yycompile(vparser, p, fname, start);
13790#define STR_FUNC_ESCAPE 0x01
13791#define STR_FUNC_EXPAND 0x02
13792#define STR_FUNC_REGEXP 0x04
13793#define STR_FUNC_QWORDS 0x08
13794#define STR_FUNC_SYMBOL 0x10
13795#define STR_FUNC_INDENT 0x20
13796#define STR_FUNC_LABEL 0x40
13797#define STR_FUNC_LIST 0x4000
13798#define STR_FUNC_TERM 0x8000
13829#define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
13830#define lex_eol_p(p) ((p)->lex.pcur >= (p)->lex.pend)
13831#define lex_eol_n_p(p,n) ((p)->lex.pcur+(n) >= (p)->lex.pend)
13832#define peek(p,c) peek_n(p, (c), 0)
13833#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
13834#define peekc(p) peekc_n(p, 0)
13835#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
13853#define add_delayed_token(p, tok, end) ((void)(tok), (void)(end))
13898 if (
peek(p,
'\n')) {
13905 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
13920 c = parser_cr(p, c);
13929 if (c == -1)
return;
13936#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
13938#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
13939#define tok(p) (p)->tokenbuf
13940#define toklen(p) (p)->tokidx
13946 while (ptr < p->
lex.pend) {
13947 int c = (
unsigned char)*
ptr++;
13948 int eol = (c ==
'\n' || c ==
'#');
14009#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
14012escaped_control_code(
int c)
14038#define WARN_SPACE_CHAR(c, prefix) \
14039 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c2))
14043 int regexp_literal,
int wide)
14049 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
14050 yyerror0(
"invalid Unicode escape");
14051 return wide && numlen > 0;
14053 if (codepoint > 0x10ffff) {
14054 yyerror0(
"invalid Unicode codepoint (too large)");
14057 if ((codepoint & 0xfffff800) == 0xd800) {
14058 yyerror0(
"invalid Unicode codepoint");
14061 if (regexp_literal) {
14064 else if (codepoint >= 0x80) {
14066 if (*encp && utf8 != *encp) {
14069 parser_show_error_line(p, &loc);
14073 tokaddmbc(p, codepoint, *encp);
14076 tokadd(p, codepoint);
14084 int term,
int symbol_literal,
int regexp_literal)
14091 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
14093 const int open_brace =
'{', close_brace =
'}';
14095 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
14097 if (
peek(p, open_brace)) {
14098 const char *second =
NULL;
14099 int c,
last = nextc(p);
14102 while (c != close_brace) {
14103 if (c ==
term)
goto unterminated;
14104 if (second == multiple_codepoints)
14106 if (regexp_literal) tokadd(p,
last);
14107 if (!tokadd_codepoint(p, encp, regexp_literal,
TRUE)) {
14114 if (
term == -1 && !second)
14115 second = multiple_codepoints;
14118 if (c != close_brace) {
14121 yyerror0(
"unterminated Unicode escape");
14124 if (second && second != multiple_codepoints) {
14134 if (regexp_literal) tokadd(p, close_brace);
14138 if (!tokadd_codepoint(p, encp, regexp_literal,
FALSE)) {
14145#define ESCAPE_CONTROL 1
14146#define ESCAPE_META 2
14154 switch (c = nextc(p)) {
14179 case '0':
case '1':
case '2':
case '3':
14180 case '4':
case '5':
case '6':
case '7':
14187 c = tok_hex(p, &numlen);
14188 if (numlen == 0)
return 0;
14199 if ((c = nextc(p)) !=
'-') {
14202 if ((c = nextc(p)) ==
'\\') {
14203 if (
peek(p,
'u'))
goto eof;
14204 return read_escape(p, flags|
ESCAPE_META, encp) | 0x80;
14206 else if (c == -1 || !
ISASCII(c))
goto eof;
14208 int c2 = escaped_control_code(c);
14217 else if (
ISCNTRL(c))
goto eof;
14218 return ((c & 0xff) | 0x80);
14222 if ((c = nextc(p)) !=
'-') {
14227 if ((c = nextc(p))==
'\\') {
14228 if (
peek(p,
'u'))
goto eof;
14233 else if (c == -1 || !
ISASCII(c))
goto eof;
14235 int c2 = escaped_control_code(c);
14254 else if (
ISCNTRL(c))
goto eof;
14260 yyerror0(
"Invalid escape character syntax");
14284 switch (c = nextc(p)) {
14288 case '0':
case '1':
case '2':
case '3':
14289 case '4':
case '5':
case '6':
case '7':
14292 if (numlen == 0)
goto eof;
14300 tok_hex(p, &numlen);
14301 if (numlen == 0)
return -1;
14308 if ((c = nextc(p)) !=
'-') {
14318 if ((c = nextc(p)) !=
'-') {
14330 if ((c = nextc(p)) ==
'\\') {
14333 else if (c == -1)
goto eof;
14339 yyerror0(
"Invalid escape character syntax");
14359 while (c = nextc(p),
ISALPHA(c)) {
14383 parser_show_error_line(p, &loc);
14391 int len = parser_precise_mbclen(p, p->
lex.
pcur-1);
14392 if (
len < 0)
return -1;
14400simple_re_meta(
int c)
14403 case '$':
case '*':
case '+':
case '.':
14404 case '?':
case '^':
case '|':
14405 case ')':
case ']':
case '}':
case '>':
14413parser_update_heredoc_indent(
struct parser_params *p,
int c)
14423 else if (c ==
'\t') {
14428 else if (c !=
'\n') {
14444 parser_show_error_line(p, &loc);
14450 const char *pos = p->
lex.
pcur;
14452 parser_mixed_error(p, enc1, enc2);
14458 int func,
int term,
int paren,
long *nest,
14462 bool erred =
false;
14464#define mixed_error(enc1, enc2) \
14465 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
14466#define mixed_escape(beg, enc1, enc2) \
14467 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
14469 while ((c = nextc(p)) != -1) {
14471 parser_update_heredoc_indent(p, c);
14474 if (paren && c == paren) {
14477 else if (c ==
term) {
14478 if (!nest || !*nest) {
14486 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
14491 else if (c ==
'\\') {
14523 if (c == -1)
return -1;
14529 if (c ==
term && !simple_re_meta(c)) {
14534 if ((c = tokadd_escape(p,
enc)) < 0)
14536 if (*
enc && *
enc != *encp) {
14544 c = read_escape(p, 0,
enc);
14549 else if (c !=
term && !(paren && c == paren)) {
14556 else if (!parser_isascii(p)) {
14561 else if (*
enc != *encp) {
14565 if (tokadd_mbchar(p, c) == -1)
return -1;
14576 else if (*
enc != *encp) {
14595#define NEW_STRTERM(func, term, paren) \
14596 new_strterm((VALUE)(func), (VALUE)(paren), (VALUE)(term), 0)
14603 if (!ripper_is_node_yylval(content))
14604 content = ripper_new_yylval(p, 0, 0, content);
14615 if (
yylval.val != content)
14620#define flush_string_content(p, enc) ((void)(enc))
14627#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
14628#define SPECIAL_PUNCT(idx) ( \
14629 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
14630 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
14631 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
14632 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
14633 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
14635const unsigned int ruby_global_name_punct_bits[] = {
14641#undef SPECIAL_PUNCT
14644static enum yytokentype
14645parser_peek_variable_name(struct parser_params *p)
14648 const char *ptr = p->lex.pcur;
14650 if (ptr + 1 >= p->lex.pend) return 0;
14654 if ((c = *ptr) == '-') {
14655 if (++ptr >= p->lex.pend) return 0;
14658 else if (is_global_name_punct(c) || ISDIGIT(c)) {
14659 return tSTRING_DVAR;
14663 if ((c = *ptr) == '@') {
14664 if (++ptr >= p->lex.pend) return 0;
14670 p->command_start = TRUE;
14671 return tSTRING_DBEG;
14675 if (!ISASCII(c) || c == '_' || ISALPHA(c))
14676 return tSTRING_DVAR;
14680#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
14681#define IS_END() IS_lex_state(EXPR_END_ANY)
14682#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
14683#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
14684#define IS_LABEL_POSSIBLE() (\
14685 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
14687#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
14688#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
14690static inline enum yytokentype
14691parser_string_term(struct parser_params *p, int func)
14693 p->lex.strterm = 0;
14694 if (func & STR_FUNC_REGEXP) {
14695 set_yylval_num(regx_options(p));
14696 dispatch_scan_event(p, tREGEXP_END);
14697 SET_LEX_STATE(EXPR_END);
14698 return tREGEXP_END;
14700 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
14702 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
14705 SET_LEX_STATE(EXPR_END);
14706 return tSTRING_END;
14709static enum yytokentype
14710parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
14712 int func = (int)quote->u1.func;
14713 int term = (int)quote->u3.term;
14714 int paren = (int)quote->u2.paren;
14716 rb_encoding *enc = p->enc;
14717 rb_encoding *base_enc = 0;
14720 if (func & STR_FUNC_TERM) {
14721 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
14722 SET_LEX_STATE(EXPR_END);
14723 p->lex.strterm = 0;
14724 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
14727 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
14728 do {c = nextc(p);} while (ISSPACE(c));
14731 if (func & STR_FUNC_LIST) {
14732 quote->u1.func &= ~STR_FUNC_LIST;
14735 if (c == term && !quote->u0.nest) {
14736 if (func & STR_FUNC_QWORDS) {
14737 quote->u1.func |= STR_FUNC_TERM;
14738 pushback(p, c); /* dispatch the term at tSTRING_END */
14739 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
14742 return parser_string_term(p, func);
14746 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
14750 if ((func & STR_FUNC_EXPAND) && c == '#') {
14751 int t = parser_peek_variable_name(p);
14757 if (tokadd_string(p, func, term, paren, "e->u0.nest,
14758 &enc, &base_enc) == -1) {
14761# define unterminated_literal(mesg) yyerror0(mesg)
14763# define unterminated_literal(mesg) compile_error(p, mesg)
14765 literal_flush(p, p->lex.pcur);
14766 if (func & STR_FUNC_QWORDS) {
14767 /* no content to add, bailing out here */
14768 unterminated_literal("unterminated list meets end of file");
14769 p->lex.strterm = 0;
14770 return tSTRING_END;
14772 if (func & STR_FUNC_REGEXP) {
14773 unterminated_literal("unterminated regexp meets end of file");
14776 unterminated_literal("unterminated string meets end of file");
14778 quote->u1.func |= STR_FUNC_TERM;
14783 lit = STR_NEW3(tok(p), toklen(p), enc, func);
14784 set_yylval_str(lit);
14785 flush_string_content(p, enc);
14787 return tSTRING_CONTENT;
14790static enum yytokentype
14791heredoc_identifier(struct parser_params *p)
14794 * term_len is length of `<<"END"` except `END`,
14795 * in this case term_len is 4 (<, <, " and ").
14797 long len, offset = p->lex.pcur - p->lex.pbeg;
14798 int c = nextc(p), term, func = 0, quote = 0;
14799 enum yytokentype token = tSTRING_BEG;
14804 func = STR_FUNC_INDENT;
14807 else if (c == '~') {
14809 func = STR_FUNC_INDENT;
14815 func |= str_squote; goto quoted;
14827 while ((c = nextc(p)) !=
term) {
14828 if (c == -1 || c ==
'\r' || c ==
'\n') {
14829 yyerror(
NULL, p,
"unterminated here document identifier");
14836 if (!parser_is_identchar(p)) {
14839 pushback(p, indent > 0 ?
'~' :
'-');
14845 int n = parser_precise_mbclen(p, p->
lex.
pcur-1);
14846 if (
n < 0)
return 0;
14848 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
14855 yyerror(
NULL, p,
"too long here document identifier");
14865 here->
quote = quote;
14893dedent_string(
VALUE string,
int width)
14900 for (
i = 0;
i <
len && col < width;
i++) {
14901 if (
str[
i] ==
' ') {
14904 else if (
str[
i] ==
'\t') {
14906 if (
n > width)
break;
14927 NODE *node, *str_node, *prev_node;
14929 VALUE prev_lit = 0;
14931 if (indent <= 0)
return root;
14933 if (!root)
return root;
14935 prev_node = node = str_node = root;
14939 VALUE lit = str_node->nd_lit;
14941 dedent_string(lit, indent);
14946 else if (!literal_concat0(p, prev_lit, lit)) {
14950 NODE *end = node->nd_end;
14951 node = prev_node->nd_next = node->nd_next;
14957 node->nd_end = end;
14962 while ((node = (prev_node = node)->
nd_next) != 0) {
14965 if ((str_node = node->nd_head) != 0) {
14981 if (indent <= 0)
return array;
14983 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
15003 col = dedent_string(
input, wid);
15009whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
15018 if (
n < 0)
return FALSE;
15019 if (
n > 0 &&
ptr[
len] !=
'\n') {
15034 case '\0':
case '\004':
case '\032':
return 1;
15039#define NUM_SUFFIX_R (1<<0)
15040#define NUM_SUFFIX_I (1<<1)
15041#define NUM_SUFFIX_ALL 3
15047 const char *lastp = p->
lex.
pcur;
15049 while ((c = nextc(p)) != -1) {
15052 mask &= ~NUM_SUFFIX_I;
15054 mask &= ~NUM_SUFFIX_R;
15059 mask &= ~NUM_SUFFIX_R;
15094 return set_number_literal(p,
v,
type, suffix);
15111#define dispatch_heredoc_end(p) ((void)0)
15117 int c, func, indent = 0;
15118 const char *eos, *
ptr, *ptr_end;
15129 if ((c = nextc(p)) == -1) {
15153 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
15171 else if (whole_match_p(p, eos,
len, indent)) {
15185 if (ptr_end >
ptr) {
15186 switch (ptr_end[-1]) {
15188 if (--ptr_end ==
ptr || ptr_end[-1] !=
'\r') {
15199 while (
ptr +
i < ptr_end && parser_update_heredoc_indent(p,
ptr[
i]))
15213 if (nextc(p) == -1) {
15219 }
while (!whole_match_p(p, eos,
len, indent));
15225 int t = parser_peek_variable_name(p);
15239 if ((c = tokadd_string(p, func,
'\n', 0,
NULL, &
enc, &base_enc)) == -1) {
15255 tokadd(p, nextc(p));
15261 if ((c = nextc(p)) == -1)
goto error;
15262 }
while (!whole_match_p(p, eos,
len, indent));
15286 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator",
WARN_I(c));
15296 switch (id_type(lhs)) {
15301 yyerror0(
"formal argument cannot be a constant");
15304 yyerror0(
"formal argument cannot be an instance variable");
15307 yyerror0(
"formal argument cannot be a global variable");
15310 yyerror0(
"formal argument cannot be a class variable");
15313 yyerror0(
"formal argument must be local variable");
15317 lhs = dispatch1(param_error, lhs);
15322 shadowing_lvar(p, lhs);
15329 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
15338 if (
len > 5 &&
name[nlen =
len - 5] ==
'-') {
15342 if (
len > 4 &&
name[nlen =
len - 4] ==
'-') {
15378 for (
i = 0;
i <
n; ++
i) {
15390 while (
ptr < ptr_end) {
15401magic_comment_encoding(
struct parser_params *p,
const char *
name,
const char *val)
15403 if (!comment_at_top(p)) {
15406 parser_set_encode(p, val);
15413 case 't':
case 'T':
15418 case 'f':
case 'F':
15429parser_set_token_info(
struct parser_params *p,
const char *
name,
const char *val)
15431 int b = parser_get_bool(p,
name, val);
15436parser_set_compile_option_flag(
struct parser_params *p,
const char *
name,
const char *val)
15445 b = parser_get_bool(p,
name, val);
15454# if WARN_PAST_SCOPE
15456parser_set_past_scope(
struct parser_params *p,
const char *
name,
const char *val)
15458 int b = parser_get_bool(p,
name, val);
15459 if (b >= 0) p->past_scope_enabled = b;
15470 {
"coding", magic_comment_encoding, parser_encode_length},
15471 {
"encoding", magic_comment_encoding, parser_encode_length},
15472 {
"frozen_string_literal", parser_set_compile_option_flag},
15473 {
"warn_indent", parser_set_token_info},
15474# if WARN_PAST_SCOPE
15475 {
"warn_past_scope", parser_set_past_scope},
15480magic_comment_marker(
const char *
str,
long len)
15487 if (
str[
i-1] ==
'*' &&
str[
i-2] ==
'-') {
15488 return str +
i + 1;
15493 if (
i + 1 >=
len)
return 0;
15494 if (
str[
i+1] !=
'-') {
15497 else if (
str[
i-1] !=
'-') {
15501 return str +
i + 2;
15517 const char *beg, *end, *vbeg, *vend;
15518#define str_copy(_s, _p, _n) ((_s) \
15519 ? (void)(rb_str_resize((_s), (_n)), \
15520 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
15521 : (void)((_s) = STR_NEW((_p), (_n))))
15524 if (!!(beg = magic_comment_marker(
str,
len))) {
15525 if (!(end = magic_comment_marker(beg,
str +
len - beg)))
15529 len = end - beg - 3;
15541 case '\'':
case '"':
case ':':
case ';':
15548 case '\'':
case '"':
case ':':
case ';':
15559 if (!indicator)
return FALSE;
15567 if (*
str ==
'\\') {
15593 for (
i = 0;
i <
n; ++
i) {
15594 if (s[
i] ==
'-') s[
i] =
'_';
15606 }
while (++mc < magic_comments +
numberof(magic_comments));
15617set_file_encoding(
struct parser_params *p,
const char *
str,
const char *send)
15620 const char *beg =
str;
15624 if (send -
str <= 6)
return;
15626 case 'C':
case 'c':
str += 6;
continue;
15627 case 'O':
case 'o':
str += 5;
continue;
15628 case 'D':
case 'd':
str += 4;
continue;
15629 case 'I':
case 'i':
str += 3;
continue;
15630 case 'N':
case 'n':
str += 2;
continue;
15631 case 'G':
case 'g':
str += 1;
continue;
15632 case '=':
case ':':
15645 if (++
str >= send)
return;
15648 if (*
str !=
'=' && *
str !=
':')
return;
15654 s =
rb_str_new(beg, parser_encode_length(p, beg,
str - beg));
15670 (
unsigned char)p->
lex.
pcur[0] == 0xbb &&
15671 (
unsigned char)p->
lex.
pcur[1] == 0xbf) {
15686#define ambiguous_operator(tok, op, syn) ( \
15687 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
15688 rb_warning0("even though it seems like "syn""))
15690#define ambiguous_operator(tok, op, syn) \
15691 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
15693#define warn_balanced(tok, op, syn) ((void) \
15694 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
15695 space_seen && !ISSPACE(c) && \
15696 (ambiguous_operator(tok, op, syn), 0)), \
15697 (enum yytokentype)(tok))
15703 char *point = &
str[seen_point];
15704 size_t fraclen =
len-seen_point-1;
15705 memmove(point, point+1, fraclen+1);
15713 yyerror0(
"numeric literal without digits");
15714 if (
peek(p,
'_')) nextc(p);
15716 return set_integer_literal(p,
INT2FIX(0), 0);
15722 int is_float, seen_point, seen_e, nondigit;
15725 is_float = seen_point = seen_e = nondigit = 0;
15728 if (c ==
'-' || c ==
'+') {
15735 if (c ==
'x' || c ==
'X') {
15741 if (nondigit)
break;
15748 }
while ((c = nextc(p)) != -1);
15752 if (
toklen(p) == start) {
15753 return no_digits(p);
15755 else if (nondigit)
goto trailing_uc;
15759 if (c ==
'b' || c ==
'B') {
15762 if (c ==
'0' || c ==
'1') {
15765 if (nondigit)
break;
15769 if (c !=
'0' && c !=
'1')
break;
15772 }
while ((c = nextc(p)) != -1);
15776 if (
toklen(p) == start) {
15777 return no_digits(p);
15779 else if (nondigit)
goto trailing_uc;
15783 if (c ==
'd' || c ==
'D') {
15789 if (nondigit)
break;
15796 }
while ((c = nextc(p)) != -1);
15800 if (
toklen(p) == start) {
15801 return no_digits(p);
15803 else if (nondigit)
goto trailing_uc;
15811 if (c ==
'o' || c ==
'O') {
15814 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
15815 return no_digits(p);
15818 if (c >=
'0' && c <=
'7') {
15823 if (nondigit)
break;
15827 if (c < '0' || c >
'9')
break;
15828 if (c >
'7')
goto invalid_octal;
15831 }
while ((c = nextc(p)) != -1);
15832 if (
toklen(p) > start) {
15835 if (nondigit)
goto trailing_uc;
15844 if (c >
'7' && c <=
'9') {
15848 else if (c ==
'.' || c ==
'e' || c ==
'E') {
15854 return set_integer_literal(p,
INT2FIX(0), suffix);
15860 case '0':
case '1':
case '2':
case '3':
case '4':
15861 case '5':
case '6':
case '7':
case '8':
case '9':
15867 if (nondigit)
goto trailing_uc;
15868 if (seen_point || seen_e) {
15873 if (c0 == -1 || !
ISDIGIT(c0)) {
15898 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
15903 tokadd(p, nondigit);
15907 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
15911 if (nondigit)
goto decode_num;
15928 parser_show_error_line(p, &loc);
15938 v = parse_rational(p,
tok(p),
toklen(p), seen_point);
15948 return set_number_literal(p,
v,
type, suffix);
15972 int c2 = escaped_control_code(c);
15984 if (!parser_isascii(p)) {
15985 if (tokadd_mbchar(p, c) == -1)
return 0;
15990 const char *start = p->
lex.
pcur - 1, *
ptr = start;
15992 int n = parser_precise_mbclen(p,
ptr);
15993 if (
n < 0)
return -1;
15996 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
15997 " a conditional operator, put a space after `?'",
16002 else if (c ==
'\\') {
16003 if (
peek(p,
'u')) {
16006 tokadd_utf8(p, &enc, -1, 0, 0);
16010 if (tokadd_mbchar(p, c) == -1)
return 0;
16013 c = read_escape(p, 0, &enc);
16031 const char *ptok = p->
lex.
pcur;
16039 if (c == -1 || !
ISALNUM(c)) {
16046 yyerror0(
"unknown type of %string");
16050 if (c == -1 ||
term == -1) {
16051 compile_error(p,
"unterminated quoted string meets end of file");
16101 yyerror0(
"unknown type of %string");
16105 if ((c = nextc(p)) ==
'=') {
16122 if (tokadd_mbchar(p, c) == -1)
return -1;
16124 }
while (parser_is_identchar(p));
16145 const unsigned long nth_ref_max =
16146 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
16150 if (overflow ||
n > nth_ref_max) {
16173 if (parser_is_identchar(p)) {
16205 if (parser_is_identchar(p)) {
16206 if (tokadd_mbchar(p, c) == -1)
return 0;
16229 case '1':
case '2':
case '3':
16230 case '4':
case '5':
case '6':
16231 case '7':
case '8':
case '9':
16236 }
while (c != -1 &&
ISDIGIT(c));
16244 if (!parser_is_identchar(p)) {
16247 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
16251 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
16253 parser_show_error_line(p, &loc);
16262 if (tokadd_ident(p, c))
return 0;
16264 tokenize_ident(p, last_state);
16272 if (
n < 0)
return false;
16285 while (
n > args->
pos) {
16297 register int c = nextc(p);
16309 if (c == -1 || !parser_is_identchar(p)) {
16312 if (result ==
tIVAR) {
16313 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
16316 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
16318 parser_show_error_line(p, &loc);
16326 if (result ==
tIVAR) {
16327 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
16330 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
16332 parser_show_error_line(p, &loc);
16338 if (tokadd_ident(p, c))
return 0;
16339 tokenize_ident(p, last_state);
16353 if (tokadd_mbchar(p, c) == -1)
return 0;
16355 }
while (parser_is_identchar(p));
16356 if ((c ==
'!' || c ==
'?') && !
peek(p,
'=')) {
16408 if (kw->
id[0] != kw->
id[1])
16423 else if (p->
lex.
state == EXPR_FNAME) {
16430 ident = tokenize_ident(p, last_state);
16434 lvar_defined(p, ident)) {
16444 int space_seen = 0;
16448 int fallthru =
FALSE;
16468 switch (c = nextc(p)) {
16476 case ' ':
case '\t':
case '\f':
case '\r':
16480 while ((c = nextc(p))) {
16482 case ' ':
case '\t':
case '\f':
case '\r':
16499 if (comment_at_top(p)) {
16509 c = (
IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
16517 goto normal_newline;
16522 switch (c = nextc(p)) {
16523 case ' ':
case '\t':
case '\f':
case '\r':
16534 if (
peek(p,
'.') == (c ==
'&')) {
16556 goto normal_newline;
16565 if ((c = nextc(p)) ==
'*') {
16566 if ((c = nextc(p)) ==
'=') {
16573 rb_warning0(
"`**' interpreted as argument prefix");
16591 rb_warning0(
"`*' interpreted as argument prefix");
16627 if (word_match_p(p,
"begin", 5)) {
16628 int first_p =
TRUE;
16643 if (c ==
'=' && word_match_p(p,
"end", 3)) {
16655 if ((c = nextc(p)) ==
'=') {
16656 if ((c = nextc(p)) ==
'=') {
16665 else if (c ==
'>') {
16677 int token = heredoc_identifier(p);
16689 if ((c = nextc(p)) ==
'>') {
16696 if ((c = nextc(p)) ==
'=') {
16709 if ((c = nextc(p)) ==
'=') {
16713 if ((c = nextc(p)) ==
'=') {
16752 return parse_qmark(p, space_seen);
16755 if ((c = nextc(p)) ==
'&') {
16757 if ((c = nextc(p)) ==
'=') {
16765 else if (c ==
'=') {
16770 else if (c ==
'.') {
16779 !(c ==
'\'' || c ==
'"' ||
16781 rb_warning0(
"`&' interpreted as argument prefix");
16795 if ((c = nextc(p)) ==
'|') {
16797 if ((c = nextc(p)) ==
'=') {
16838 return parse_numeric(p,
'+');
16880 if ((c = nextc(p)) ==
'.') {
16881 if ((c = nextc(p)) ==
'.') {
16883 rb_warn0(
"... at EOL, should be parenthesized?");
16893 parse_numeric(p,
'.');
16895 yyerror0(
"unexpected fraction part after numeric literal");
16898 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
16909 case '0':
case '1':
case '2':
case '3':
case '4':
16910 case '5':
case '6':
case '7':
case '8':
case '9':
16911 return parse_numeric(p, c);
16972 if ((c = nextc(p)) ==
'=') {
16979 arg_ambiguous(p,
'/');
16987 if ((c = nextc(p)) ==
'=') {
17007 if ((c = nextc(p)) !=
'@') {
17021 else if (!space_seen) {
17028 rb_warning0(
"parentheses after method name is interpreted as "
17029 "an argument list, not a decomposed argument");
17040 if ((c = nextc(p)) ==
']') {
17042 if ((c = nextc(p)) ==
'=') {
17094 if (c ==
' ')
return tSP;
17100 return parse_percent(p, space_seen, last_state);
17103 return parse_gvar(p, last_state);
17106 return parse_atmark(p, last_state);
17109 if (
was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
17124 if (!parser_is_identchar(p)) {
17125 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
17134 return parse_ident(p, c, cmd_state);
17144 t = parser_yylex(p);
17159#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
17168 nd_set_loc(
n, loc);
17183nodetype(
NODE *node)
17189nodeline(
NODE *node)
17195newline_node(
NODE *node)
17198 node = remove_begin(node);
17227 NODE *end, *
h = head, *nd;
17229 if (tail == 0)
return head;
17231 if (
h == 0)
return tail;
17239 parser_warning(p,
h,
"unused literal ignored");
17259 parser_warning(p, tail,
"statement not reached");
17269 tail->nd_end = tail;
17271 end->nd_next = tail;
17272 h->nd_end = tail->nd_end;
17284 if (
list->nd_next) {
17291 list->nd_alen += 1;
17293 list->nd_next->nd_end =
last->nd_next;
17302list_concat(
NODE *head,
NODE *tail)
17306 if (head->nd_next) {
17307 last = head->nd_next->nd_end;
17313 head->nd_alen += tail->nd_alen;
17314 last->nd_next = tail;
17315 if (tail->nd_next) {
17316 head->nd_next->nd_end = tail->nd_next->nd_end;
17319 head->nd_next->nd_end = tail;
17330 if (
NIL_P(tail))
return 1;
17332 compile_error(p,
"string literal encodings differ (%s / %s)",
17351 if (!head)
return tail;
17352 if (!tail)
return head;
17358 head = list_append(p, node, head);
17366 return list_append(p, head, tail);
17373 if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
17376 lit = headlast->nd_lit;
17379 lit = head->nd_lit;
17382 if (!literal_concat0(p, lit, tail->nd_lit)) {
17384 rb_discard_node(p, head);
17385 rb_discard_node(p, tail);
17388 rb_discard_node(p, tail);
17391 list_append(p, head, tail);
17397 if (!literal_concat0(p, head->nd_lit, tail->nd_lit))
17399 tail->nd_lit = head->nd_lit;
17400 rb_discard_node(p, head);
17403 else if (
NIL_P(tail->nd_lit)) {
17405 head->nd_alen += tail->nd_alen - 1;
17406 head->nd_next->nd_end->nd_next = tail->nd_next;
17407 head->nd_next->nd_end = tail->nd_next->nd_end;
17408 rb_discard_node(p, tail);
17410 else if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
17412 lit = headlast->nd_lit;
17413 if (!literal_concat0(p, lit, tail->nd_lit))
17415 tail->nd_lit =
Qnil;
17428 list_append(p, head, tail);
17440 node = list_append(p, dstr, node);
17493 if (block) block_dup_check(p, args, block);
17494 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
17495 if (block) ret = method_add_block(p, ret, block, loc);
17500#define nd_once_body(node) (nd_type(node) == NODE_ONCE ? (node)->nd_body : node)
17505 int line = op_loc->beg_pos.lineno;
17520 const VALUE lit =
n->nd_lit;
17522 match->nd_args = reg_named_capture_assign(p, lit, loc);
17547# if WARN_PAST_SCOPE
17553 if (vtable_included(past,
id))
return 1;
17562#define WARN_LOCATION(type) do { \
17563 if (p->warn_location) { \
17565 VALUE file = rb_source_location(&line); \
17566 rb_warn3(type" in eval may not return location in binding;" \
17567 " use Binding#source_location instead\n" \
17568 "%"PRIsWARN":%d: warning: in `%"PRIsWARN"'", \
17569 file, WARN_I(line), rb_id2str(rb_frame_this_func())); \
17582 "%s:%d: %s block here",
17584 outer ?
"outer" :
"inner");
17585 parser_show_error_line(p, &
used->nd_loc);
17626 switch (id_type(
id)) {
17628 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
17638 if (local_id_ref(p,
id, &vidp)) {
17649 if (numparam_nested_p(p))
return 0;
17655# if WARN_PAST_SCOPE
17676opt_arg_append(
NODE *opt_list,
NODE *opt)
17678 NODE *opts = opt_list;
17681 while (opts->nd_next) {
17682 opts = opts->nd_next;
17685 opts->nd_next = opt;
17694 NODE *kws = kwlist;
17696 while (kws->nd_next) {
17697 kws = kws->nd_next;
17721 return list_append(p, symbols, symbol);
17740 nd_set_loc(node, loc);
17751 nd_set_loc(node, loc);
17753 if (!
NIL_P(node->nd_lit)) reg_fragment_check(p, node->nd_lit, options);
17757 if (reg_fragment_check(p, tail, options) &&
prev && !
NIL_P(
prev->nd_lit)) {
17759 if (!literal_concat0(p, lit, tail)) {
17764 rb_discard_node(p,
list->nd_head);
17765 rb_discard_node(p,
list);
17776 if (!node->nd_next) {
17808 nd_set_loc(node, loc);
17812 nd_set_loc(node, loc);
17829 if (lit ==
Qundef)
return;
17839 if (!
NIL_P(line)) {
17840 rb_warning1(
"duplicated `when' clause with line %d is ignored",
17857 if (dyna_in_block(p)) {
17860 if (local_id(p,
id))
return 1;
17874 if (ripper_is_node_yylval(re)) {
17876 re =
RNODE(re)->nd_rval;
17878 if (ripper_is_node_yylval(opt)) {
17879 options = (
int)
RNODE(opt)->nd_tag;
17880 opt =
RNODE(opt)->nd_rval;
17885 return dispatch2(regexp_literal, re, opt);
17891static const char rb_parser_lex_state_names[][8] = {
17892 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
17893 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
17894 "LABEL",
"LABELED",
"FITEM",
17901 unsigned int mask = 1;
17902 static const char none[] =
"NONE";
17905 if ((
unsigned)state &
mask) {
17939 append_lex_state_name(from, mesg);
17941 append_lex_state_name(to, mesg);
17968 const char *
name,
int line)
17971 append_bitstack_value(stack, mesg);
17989 append_lex_state_name(p->
lex.
state, mesg);
18010 yylloc->beg_pos.lineno = sourceline;
18011 yylloc->beg_pos.column = beg_pos;
18012 yylloc->end_pos.lineno = sourceline;
18013 yylloc->end_pos.column = end_pos;
18041 if (!
id)
return -1;
18044 *
err =
"Can't change the value of self";
18047 *
err =
"Can't assign to nil";
18050 *
err =
"Can't assign to true";
18053 *
err =
"Can't assign to false";
18056 *
err =
"Can't assign to __FILE__";
18059 *
err =
"Can't assign to __LINE__";
18062 *
err =
"Can't assign to __ENCODING__";
18065 switch (id_type(
id)) {
18067 if (dyna_in_block(p)) {
18080 if (!local_id(p,
id)) local_var(p,
id);
18088 *
err =
"dynamic constant assignment";
18101 const char *
err = 0;
18119 const char *
err = 0;
18121 if (
err) lhs = assign_error(p, lhs);
18127is_private_local_id(
ID name)
18140 if (is_private_local_id(
name))
return 1;
18141 if (dyna_in_block(p)) {
18142 if (dvar_curr(p,
name)) {
18143 yyerror0(
"duplicated argument name");
18145 else if (dvar_defined(p,
name) || local_id(p,
name)) {
18154 if (local_id(p,
name)) {
18155 yyerror0(
"duplicated argument name");
18164 shadowing_lvar_0(p,
name);
18177 if (!shadowing_lvar_0(p,
name))
return;
18211 compile_error(p,
"Can't set variable $%c", (
int)node->nd_nth);
18222 return list_append(p, node1, node2);
18224 node1->nd_head = arg_append(p, node1->nd_head, node2, loc);
18228 node1->nd_body = list_append(p,
NEW_LIST(node1->nd_body, &node1->nd_body->
nd_loc), node2);
18234 node1->nd_body = list_append(p, node1->nd_body, node2);
18244 if (!node2)
return node1;
18247 if (node1->nd_head)
18248 node1->nd_head = arg_concat(p, node1->nd_head, node2, loc);
18250 node1->nd_head =
NEW_LIST(node2, loc);
18254 node1->nd_body = list_concat(
NEW_LIST(node1->nd_body, loc), node2);
18260 node1->nd_body = list_concat(node1->nd_body, node2);
18270 if ((n1 = splat_array(
args)) != 0) {
18271 return list_append(p, n1, last_arg);
18273 return arg_append(p,
args, last_arg, loc);
18281 return list_concat(n1, rest_arg);
18283 return arg_concat(p,
args, rest_arg, loc);
18287splat_array(
NODE* node)
18301 if (local_id_ref(p, rhs->nd_vid, &vidp)) {
18307 if (dvar_defined_ref(p, rhs->nd_vid, &vidp)) {
18313 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
18314 mark_lvar_used(p, rhs->nd_head);
18324 if (!lhs)
return 0;
18335 lhs->nd_value = rhs;
18336 nd_set_loc(lhs, loc);
18340 lhs->nd_args = arg_append(p, lhs->nd_args, rhs, loc);
18341 nd_set_loc(lhs, loc);
18355 NODE *void_node = 0, *vn;
18367 return void_node ? void_node : node;
18374 if (node->nd_body->nd_body) {
18378 return void_node ? void_node : node;
18381 while (node->nd_next) {
18382 node = node->nd_next;
18384 node = node->nd_head;
18388 node = node->nd_body;
18393 if (!node->nd_body) {
18396 else if (!node->nd_else) {
18399 vn = value_expr_check(p, node->nd_body);
18400 if (!vn)
return NULL;
18401 if (!void_node) void_node = vn;
18402 node = node->nd_else;
18407 node = node->nd_1st;
18414 mark_lvar_used(p, node);
18428 NODE *void_node = value_expr_check(p, node);
18439 const char *useless = 0;
18446 switch (node->nd_mid) {
18477 useless =
"a variable";
18480 useless =
"a constant";
18486 useless =
"a literal";
18511 useless =
"defined?";
18523 NODE *
const n = node;
18525 if (!node)
return n;
18528 while (node->nd_next) {
18529 void_expr(p, node->nd_head);
18530 node = node->nd_next;
18536remove_begin(
NODE *node)
18538 NODE **
n = &node, *n1 = node;
18540 *
n = n1 = n1->nd_body;
18546remove_begin_all(
NODE *node)
18548 NODE **
n = &node, *n1 = node;
18550 *
n = n1 = n1->nd_body;
18558 NODE *node = *body;
18564#define subnodes(n1, n2) \
18565 ((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
18566 (!node->n2) ? (body = &node->n1, 1) : \
18567 (reduce_nodes(p, &node->n1), body = &node->n2, 1))
18577 *body = node = node->nd_stts;
18581 *body = node = node->nd_body;
18585 body = &node->nd_end->nd_head;
18592 body = &node->nd_body;
18601 if (node->nd_else) {
18602 body = &node->nd_resq;
18618is_static_content(
NODE *node)
18620 if (!node)
return 1;
18623 if (!(node = node->nd_head))
break;
18626 if (!is_static_content(node->nd_head))
return 0;
18627 }
while ((node = node->nd_next) != 0);
18657 if (!node->nd_value)
return 1;
18658 if (is_static_content(node->nd_value)) {
18660 parser_warn(p, node->nd_value,
"found `= literal' in conditional, should be ==");
18671#define SWITCH_BY_COND_TYPE(t, w, arg) \
18673 case COND_IN_OP: break; \
18674 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
18675 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
18685 if (node == 0)
return 0;
18690 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
18699 if (node == 0)
return 0;
18701 assign_in_cond(p, node);
18754 if (node == 0)
return 0;
18761 if (node == 0)
return 0;
18768 if (!
cc)
return right;
18770 return newline_node(
NEW_IF(
cc, left, right, loc));
18776 if (!
cc)
return right;
18778 return newline_node(
NEW_UNLESS(
cc, left, right, loc));
18789 NODE *node = left, *second;
18794 nd_set_line(node->nd_2nd, op_loc->beg_pos.lineno);
18815 no_blockarg(p, node);
18817 if (node->nd_next == 0) {
18818 node = node->nd_head;
18831 if (node) no_blockarg(p, node);
18875arg_blk_pass(
NODE *node1,
NODE *node2)
18878 if (!node1)
return node2;
18879 node2->nd_head = node1;
18890 if (
args->pre_args_num)
return false;
18891 if (
args->post_args_num)
return false;
18892 if (
args->rest_arg)
return false;
18893 if (
args->opt_args)
return false;
18894 if (
args->block_arg)
return false;
18895 if (
args->kw_args)
return false;
18896 if (
args->kw_rest_arg)
return false;
18907 args->
pre_init = pre_args ? pre_args->nd_next : 0;
18910 args->
post_init = post_args ? post_args->nd_next : 0;
18920 nd_set_loc(tail, loc);
18932 rb_imemo_tmpbuf_set_ptr(tmpbuf, args);
18933 args->
imemo = tmpbuf;
18948 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
18950 NODE *kwn = kw_args;
18952 vtable_pop(vtargs, !!block + !!kw_rest_arg);
18953 required_kw_vars = kw_vars = &vtargs->
tbl[vtargs->
pos];
18957 --required_kw_vars;
18958 kwn = kwn->nd_next;
18961 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
18962 ID vid = kwn->nd_body->nd_vid;
18964 *required_kw_vars++ = vid;
18971 arg_var(p, kw_bits);
18972 if (kw_rest_arg) arg_var(p, kw_rest_arg);
18973 if (block) arg_var(p, block);
18978 else if (kw_rest_arg ==
idNil) {
18981 else if (kw_rest_arg) {
18995 args = new_args_tail(p, 0, 0, 0, 0);
18996 nd_set_loc(args, &loc);
18998 args->nd_ainfo->pre_args_num = max_numparam;
19008 aryptn->nd_pconst = constant;
19029 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
19031 apinfo->
imemo = tmpbuf;
19057 hshptn->nd_pconst = constant;
19065 NODE *node, *kw_rest_arg_node;
19067 if (kw_rest_arg ==
idNil) {
19070 else if (kw_rest_arg) {
19071 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
19074 kw_rest_arg_node =
NULL;
19089 rb_warn0L(
nd_line(node),
"Pattern matching is experimental, and the behavior may change in future versions of Ruby!");
19105 nd_set_loc(node, loc);
19108 lit = node->nd_lit;
19111 nd_set_loc(node, loc);
19126 node->nd_next->nd_end = node->nd_next;
19127 node->nd_next->nd_next = 0;
19129 list_concat(*result, node);
19141 while (hash && hash->nd_head && hash->nd_next) {
19142 NODE *head = hash->nd_head;
19143 NODE *value = hash->nd_next;
19144 NODE *next = value->nd_next;
19148 st_lookup(literal_keys, (
key = head->nd_lit), &data)) {
19150 "key %+"PRIsVALUE" is duplicated and overwritten on line %d",
19151 head->nd_lit,
nd_line(head));
19152 head = ((
NODE *)data)->nd_next;
19153 head->nd_head = block_append(p, head->nd_head, value->nd_head);
19163 if (!result) result = hash;
19164 else list_concat(result, hash);
19173 if (hash) hash = remove_duplicate_keys(p, hash);
19181 if (is_private_local_id(
id)) {
19185 yyerror1(loc,
"duplicated variable name");
19199 yyerror1(loc,
"duplicated key name");
19220 ID vid = lhs->nd_vid;
19223 lhs->nd_value = rhs;
19224 nd_set_loc(lhs, loc);
19227 switch (id_type(vid)) {
19231 asgn->nd_aid = vid;
19235 else if (op ==
tANDOP) {
19236 lhs->nd_value = rhs;
19237 nd_set_loc(lhs, loc);
19243 nd_set_loc(asgn, loc);
19263 args = arg_concat(p, args, rhs, loc);
19300 yyerror1(loc,
"dynamic constant assignment");
19309 path = dispatch1(assign_error,
path);
19318 a = dispatch1(assign_error, a);
19326 return ripper_new_yylval(p,
get_id(a), dispatch1(var_field, a), 0);
19334 NODE *result = head;
19336 NODE *tmp = rescue_else ? rescue_else : rescue;
19339 result =
NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
19342 else if (rescue_else) {
19343 result = block_append(p, result, rescue_else);
19348 fixpos(result, head);
19358 if (!local->
used)
return;
19366 for (
int i = 0;
i <
cnt; ++
i) {
19368 if (is_private_local_id(
v[
i]))
continue;
19387 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
19394# if WARN_PAST_SCOPE
19407 warn_unused_var(p, p->
lvtbl);
19410# if WARN_PAST_SCOPE
19411 while (p->
lvtbl->past) {
19429 int cnt_args = vtable_size(p->
lvtbl->
args);
19430 int cnt_vars = vtable_size(p->
lvtbl->
vars);
19431 int cnt = cnt_args + cnt_vars;
19435 if (
cnt <= 0)
return 0;
19439 for (
i = 0, j = cnt_args+1;
i < cnt_vars; ++
i) {
19441 if (!vtable_included(p->
lvtbl->
args,
id)) {
19471 rb_warn1(
"`_%d' is reserved for numbered parameter; consider another name",
19478 numparam_name(p,
id);
19485 numparam_name(p,
id);
19504 if (used) used = used->
prev;
19510 else if (vtable_included(args,
id)) {
19514 int i = vtable_included(
vars,
id);
19515 if (
i && used && vidrefp) *vidrefp = &used->
tbl[
i-1];
19523 return local_id_ref(p,
id,
NULL);
19568static const struct vtable *
19582 struct vtable *tmp = *vtblp;
19583 *vtblp = tmp->
prev;
19584# if WARN_PAST_SCOPE
19585 if (p->past_scope_enabled) {
19587 p->
lvtbl->past = tmp;
19600 warn_unused_var(p, p->
lvtbl);
19639 if (vtable_included(args,
id)) {
19642 if ((
i = vtable_included(
vars,
id)) != 0) {
19643 if (used && vidrefp) *vidrefp = &used->
tbl[
i-1];
19648 if (!vidrefp) used = 0;
19649 if (used) used = used->
prev;
19662 return dvar_defined_ref(p,
id,
NULL);
19668 return (vtable_included(p->
lvtbl->
args,
id) ||
19676 "regexp encoding option '%c' differs from source encoding '%s'",
19722 if (c) reg_fragment_enc_error(p,
str, c);
19729 reg_fragment_setenc(p,
str, options);
19748 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
19754 const char *s = (
const char *)
name;
19767 succ =
arg->succ_block;
19769 succ = block_append(p, succ, node);
19770 arg->succ_block = succ;
19781 arg.succ_block = 0;
19785 if (!
arg.succ_block)
return 0;
19786 return arg.succ_block->nd_next;
19792 reg_fragment_setenc(p,
str, options);
19809 re = parser_reg_compile(p,
str, options);
19826 if (c) reg_fragment_enc_error(p,
str, c);
19859 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
19860 const YYLTYPE *
const LOC = &default_location;
19866 node = block_append(p, node, print);
19876 node = block_append(p, split, node);
19881 node = block_append(p, chomp, node);
19901 const ID max_id = RB_ID_SERIAL_MAX & ~0xffff;
19917 p->delayed.token =
Qnil;
19919 p->parsing_thread =
Qnil;
19929#define parser_mark ripper_parser_mark
19930#define parser_free ripper_parser_free
19934parser_mark(
void *
ptr)
19964parser_free(
void *
ptr)
19972 for (local = p->
lvtbl; local; local =
prev) {
19988parser_memsize(
const void *
ptr)
19992 size_t size =
sizeof(*p);
19995 for (local = p->
lvtbl; local; local = local->
prev) {
19996 size +=
sizeof(*local);
20017#undef rb_reserved_word
20022 return reserved_word(
str,
len);
20030 &parser_data_type, p);
20031 parser_initialize(p);
20048#define rb_parser_end_seen_p ripper_parser_end_seen_p
20049#define rb_parser_encoding ripper_parser_encoding
20050#define rb_parser_get_yydebug ripper_parser_get_yydebug
20051#define rb_parser_set_yydebug ripper_parser_set_yydebug
20052#define rb_parser_get_debug_output ripper_parser_get_debug_output
20053#define rb_parser_set_debug_output ripper_parser_set_debug_output
20054static VALUE ripper_parser_end_seen_p(
VALUE vparser);
20055static VALUE ripper_parser_encoding(
VALUE vparser);
20056static VALUE ripper_parser_get_yydebug(
VALUE self);
20058static VALUE ripper_parser_get_debug_output(
VALUE self);
20059static VALUE ripper_parser_set_debug_output(
VALUE self,
VALUE output);
20068ripper_error_p(
VALUE vparser)
20115rb_parser_get_yydebug(
VALUE self)
20172#define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
20175#define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
20176#define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
20177 (new)->cnt = (cnt), (ptr))
20207 if (
n->ptr ==
ptr) {
20209 if (
n->cnt)
n->cnt =
cnt;
20212 }
while ((
n =
n->next) !=
NULL);
20224 while ((
n = *prev) !=
NULL) {
20225 if (
n->ptr ==
ptr) {
20270count_char(
const char *
str,
int c)
20273 while (
str[
n] == c) ++
n;
20286 if (*yystr ==
'"') {
20287 size_t yyn = 0, bquote = 0;
20288 const char *yyp = yystr;
20294 bquote = count_char(yyp+1,
'`') + 1;
20295 if (yyres)
memcpy(&yyres[yyn], yyp, bquote);
20303 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
20304 if (yyres)
memcpy(yyres + yyn, yyp, bquote);
20310 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
20311 if (yyres)
memcpy(yyres + yyn, yyp, 3);
20316 goto do_not_strip_quotes;
20319 goto do_not_strip_quotes;
20322 if (*++yyp !=
'\\')
20323 goto do_not_strip_quotes;
20339 do_not_strip_quotes: ;
20342 if (!yyres)
return strlen(yystr);
20344 return (
YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
20354 if (x ==
Qfalse)
return x;
20355 if (x ==
Qtrue)
return x;
20356 if (x ==
Qnil)
return x;
20374 x = ((
NODE *)x)->nd_rval;
20388#define validate(x) ((x) = get_value(x))
20417 return rb_funcall(p->value, mid, 3, a, b, c);
20427 return rb_funcall(p->value, mid, 4, a, b, c, d);
20438 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
20451 return rb_funcall(p->value, mid, 7, a, b, c, d, e,
f, g);
20460 if (
nd_type(nd) != NODE_RIPPER)
return 0;
20465ripper_get_value(
VALUE v)
20472 return nd->nd_rval;
20500 "gets returned %"PRIsVALUE" (expected String or nil)",
20517 &parser_data_type, p);
20522#define ripper_initialized_p(r) ((r)->lex.input != 0)
20543 p->
lex.
gets = ripper_lex_io_get;
20546 p->
lex.
gets = ripper_lex_get_generic;
20554 if (
NIL_P(fname)) {
20562 parser_initialize(p);
20572ripper_parse0(
VALUE parser_v)
20579 ripper_yyparse((
void*)p);
20586ripper_ensure(
VALUE parser_v)
20591 p->parsing_thread =
Qnil;
20602ripper_parse(
VALUE self)
20607 if (!ripper_initialized_p(p)) {
20610 if (!
NIL_P(p->parsing_thread)) {
20617 rb_ensure(ripper_parse0,
self, ripper_ensure,
self);
20630ripper_column(
VALUE self)
20636 if (!ripper_initialized_p(p)) {
20639 if (
NIL_P(p->parsing_thread))
return Qnil;
20651ripper_filename(
VALUE self)
20656 if (!ripper_initialized_p(p)) {
20670ripper_lineno(
VALUE self)
20675 if (!ripper_initialized_p(p)) {
20678 if (
NIL_P(p->parsing_thread))
return Qnil;
20689ripper_state(
VALUE self)
20694 if (!ripper_initialized_p(p)) {
20697 if (
NIL_P(p->parsing_thread))
return Qnil;
20708ripper_token(
VALUE self)
20714 if (!ripper_initialized_p(p)) {
20717 if (
NIL_P(p->parsing_thread))
return Qnil;
20758 ripper_init_eventids1();
20759 ripper_init_eventids2();
20841 ripper_init_eventids1_table(Ripper);
20842 ripper_init_eventids2_table(Ripper);
struct rb_encoding_entry * list
int rb_enc_precise_mbclen(const char *p, const char *e, rb_encoding *enc)
VALUE rb_enc_associate(VALUE obj, rb_encoding *enc)
rb_encoding * rb_utf8_encoding(void)
rb_encoding * rb_ascii8bit_encoding(void)
rb_encoding * rb_enc_from_index(int index)
rb_encoding * rb_enc_get(VALUE obj)
int rb_ascii8bit_encindex(void)
rb_encoding * rb_enc_compatible(VALUE str1, VALUE str2)
rb_encoding * rb_usascii_encoding(void)
VALUE rb_enc_from_encoding(rb_encoding *encoding)
VALUE rb_enc_associate_index(VALUE obj, int idx)
int rb_enc_find_index(const char *name)
int rb_enc_codelen(int c, rb_encoding *enc)
#define ENC_CODERANGE_7BIT
#define rb_enc_mbcput(c, buf, enc)
#define rb_enc_prev_char(s, p, e, enc)
int rb_enc_str_coderange(VALUE)
#define ENC_CODERANGE_UNKNOWN
VALUE rb_enc_str_new(const char *, long, rb_encoding *)
#define ENCODING_GET(obj)
VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc)
#define rb_enc_asciicompat(enc)
#define rb_enc_isalnum(c, enc)
int rb_char_to_option_kcode(int c, int *option, int *kcode)
long rb_str_coderange_scan_restartable(const char *, const char *, rb_encoding *, int *)
#define MBCLEN_CHARFOUND_P(ret)
#define ENCODING_SET(obj, i)
#define ENCODING_IS_ASCII8BIT(obj)
#define rb_enc_isspace(c, enc)
char str[HTML_ESCAPE_MAX_LEN+1]
#define rb_intern_str(string)
VALUE rb_define_class(const char *, VALUE)
Defines a top-level class.
VALUE rb_cObject
Object class.
VALUE rb_syntax_error_append(VALUE exc, VALUE file, int line, int column, rb_encoding *enc, const char *fmt, va_list args)
void rb_raise(VALUE exc, const char *fmt,...)
_Bool rb_warning_category_enabled_p(rb_warning_category_t category)
void rb_exc_raise(VALUE mesg)
Raises an exception in the current thread.
void rb_set_errinfo(VALUE err)
Sets the current exception ($!) to the given value.
const char * rb_builtin_type_name(int t)
void rb_fatal(const char *fmt,...)
const char * rb_builtin_class_name(VALUE x)
VALUE rb_make_exception(int, const VALUE *)
Make an Exception object from the list of arguments in a manner similar to Kernel#raise.
VALUE rb_ensure(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE), VALUE)
An equivalent to ensure clause.
VALUE rb_errinfo(void)
The current exception in the current thread.
VALUE rb_class_new_instance(int, const VALUE *, VALUE)
Allocates and initializes an instance of klass.
VALUE rb_obj_hide(VALUE obj)
Make the object invisible from Ruby code.
VALUE rb_obj_class(VALUE)
Equivalent to Object#class in Ruby.
VALUE rb_obj_freeze(VALUE)
Make the object unmodifiable.
VALUE type(ANYARGS)
ANYARGS-ed function type.
unsigned char buf[MIME_BUF_SIZE]
ONIG_EXTERN int onig_foreach_name(OnigRegex reg, int(*func)(const OnigUChar *, const OnigUChar *, int, int *, OnigRegex, void *), void *arg)
enum yytokentype yytoken_kind_t
#define RE_OPTION_ENCODING(e)
enum lex_state_e rb_parser_trace_lex_state(struct parser_params *, enum lex_state_e, enum lex_state_e, int)
#define HERETERM_LENGTH_BITS
void rb_parser_fatal(struct parser_params *p, const char *fmt,...)
#define dispatch_delayed_token(p, t)
#define IS_LABEL_POSSIBLE()
#define has_delayed_token(p)
#define set_yylval_name(x)
#define DVARS_TERMINAL_P(tbl)
#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
VALUE rb_parser_new(void)
#define RUBY_DTRACE_PARSE_HOOK(name)
@ YYSYMBOL_74_escaped_vertical_tab_
@ YYSYMBOL_keyword_module
@ YYSYMBOL_73_escaped_carriage_return_
@ YYSYMBOL_block_args_tail
@ YYSYMBOL_opt_block_args_tail
@ YYSYMBOL_modifier_unless
@ YYSYMBOL_keyword_do_LAMBDA
@ YYSYMBOL_modifier_until
@ YYSYMBOL_modifier_rescue
@ YYSYMBOL_xstring_contents
@ YYSYMBOL_p_top_expr_body
@ YYSYMBOL_block_param_def
@ YYSYMBOL_keyword__LINE__
@ YYSYMBOL_simple_numeric
@ YYSYMBOL_tSTRING_CONTENT
@ YYSYMBOL_keyword_variable
@ YYSYMBOL_regexp_contents
@ YYSYMBOL_modifier_while
@ YYSYMBOL_keyword_unless
@ YYSYMBOL_keyword_do_cond
@ YYSYMBOL_cmd_brace_block
@ YYSYMBOL_keyword__ENCODING__
@ YYSYMBOL_string_content
@ YYSYMBOL_keyword_ensure
@ YYSYMBOL_keyword_rescue
@ YYSYMBOL_f_block_optarg
@ YYSYMBOL_opt_f_block_arg
@ YYSYMBOL_keyword_defined
@ YYSYMBOL_keyword_return
@ YYSYMBOL_opt_block_param
@ YYSYMBOL_keyword__FILE__
@ YYSYMBOL_string_contents
@ YYSYMBOL_opt_paren_args
@ YYSYMBOL_keyword_do_block
@ YYSYMBOL_72_escaped_form_feed_
@ YYSYMBOL_71_escaped_horizontal_tab_
#define add_delayed_token(p, tok, end)
#define NUMPARAM_ID_P(id)
#define str_copy(_s, _p, _n)
#define SWITCH_BY_COND_TYPE(t, w, arg)
#define make_list(list, loc)
#define rb_warn1L(l, fmt, a)
void * rb_parser_malloc(struct parser_params *p, size_t size)
#define dispatch_heredoc_end(p)
#define YY_IGNORE_MAYBE_UNINITIALIZED_END
VALUE rb_io_gets_internal(VALUE io)
rb_ast_t * rb_parser_compile_string(VALUE vparser, const char *f, VALUE s, int line)
void(* rb_magic_comment_setter_t)(struct parser_params *p, const char *name, const char *val)
#define NEW_STRTERM(func, term, paren)
STATIC_ASSERT(rb_strterm_heredoc_t, sizeof(rb_strterm_heredoc_t)<=4 *SIZEOF_VALUE)
#define YY_IGNORE_USELESS_CAST_END
#define literal_flush(p, ptr)
#define yyerror(yylloc, p, msg)
struct token_info token_info
void rb_parser_printf(struct parser_params *p, const char *fmt,...)
RUBY_SYMBOL_EXPORT_BEGIN VALUE rb_parser_reg_compile(struct parser_params *p, VALUE str, int options)
YYLTYPE * rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc)
#define WARN_SPACE_CHAR(c, prefix)
#define YYLLOC_DEFAULT(Current, Rhs, N)
#define intern_cstr(n, l, en)
#define YY_REDUCE_PRINT(Rule)
rb_ast_t * rb_parser_compile_string_path(VALUE vparser, VALUE f, VALUE s, int line)
#define YY_CAST(Type, Val)
void rb_parser_set_options(VALUE vparser, int print, int loop, int chomp, int split)
#define vtable_alloc(prev)
VALUE rb_parser_set_context(VALUE vparser, const struct rb_iseq_struct *base, int main)
#define IS_lex_state_for(x, ls)
#define dispatch_scan_event(p, t)
#define NEW_QCALL(q, r, m, a, loc)
long(* rb_magic_comment_length_t)(struct parser_params *p, const char *name, long len)
#define warn_balanced(tok, op, syn)
#define RE_OPTION_ENCODING_NONE(o)
YYLTYPE * rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc)
#define set_yylval_literal(x)
#define set_yylval_str(x)
#define WARN_LOCATION(type)
rb_ast_t * rb_parser_compile_generic(VALUE vparser, VALUE(*lex_gets)(VALUE, int), VALUE fname, VALUE input, int start)
#define RUBY_INIT_YYLLOC()
#define YY_ACCESSING_SYMBOL(State)
Accessing symbol of state STATE.
#define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
#define YY_INITIAL_VALUE(Value)
#define STR_NEW3(ptr, len, e, func)
VALUE rb_parser_encoding(VALUE vparser)
int rb_reg_fragment_setenc(struct parser_params *, VALUE, int)
#define yytnamerr(yyres, yystr)
VALUE rb_parser_get_debug_output(VALUE self)
unsigned char yytype_uint8
#define YY_STACK_PRINT(Bottom, Top)
const struct kwtable * rb_reserved_word(const char *str, unsigned int len)
#define STR_NEW(ptr, len)
#define lambda_beginning_p()
#define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current)
#define YYSTACK_ALLOC_MAXIMUM
#define IS_lex_state_all(ls)
#define NUMPARAM_IDX_TO_ID(idx)
#define YY_IGNORE_USELESS_CAST_BEGIN
void rb_strterm_mark(VALUE obj)
#define rb_warn2(fmt, a, b)
void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int)
#define YYLOCATION_PRINT(File, Loc)
#define ADD2HEAP(new, cnt, ptr)
#define mixed_escape(beg, enc1, enc2)
#define RE_OPTION_ENCODING_IDX(o)
#define vtable_pop(tbl, n)
#define set_yylval_noname()
void * rb_parser_realloc(struct parser_params *p, void *ptr, size_t size)
VALUE rb_parser_set_debug_output(VALUE self, VALUE output)
#define set_yylval_node(x)
VALUE rb_parser_set_yydebug(VALUE self, VALUE flag)
VALUE rb_parser_end_seen_p(VALUE vparser)
#define RUBY_SET_YYLLOC(Current)
#define yytable_value_is_error(Yyn)
struct rb_strterm_literal_struct rb_strterm_literal_t
#define HERETERM_LENGTH_MAX
YYLTYPE * rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc)
#define YY_ATTRIBUTE_UNUSED
void rb_parser_free(struct parser_params *p, void *ptr)
PRINTF_ARGS(void rb_parser_fatal(struct parser_params *p, const char *fmt,...), 2, 3)
rb_ast_t * rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE file, int start)
#define NUMPARAM_ID_TO_IDX(id)
void rb_parser_warn_location(VALUE vparser, int warn)
#define SET_LEX_STATE(ls)
#define RUBY_SET_YYLLOC_OF_NONE(Current)
#define vtable_add(tbl, id)
unsigned short yytype_uint16
#define mixed_error(enc1, enc2)
#define rb_node_newnode(type, a1, a2, a3, loc)
#define IS_LABEL_SUFFIX(n)
#define nd_once_body(node)
#define yyerror1(loc, msg)
#define YYSTACK_RELOCATE(Stack_alloc, Stack)
size_t rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr)
#define yypact_value_is_default(Yyn)
#define flush_string_content(p, enc)
#define rb_warn0L(l, fmt)
#define rb_warn3L(l, fmt, a, b, c)
#define rb_warning1(fmt, a)
void * rb_parser_calloc(struct parser_params *p, size_t nelem, size_t size)
RUBY_FUNC_EXPORTED const unsigned int ruby_global_name_punct_bits[(0x7e - 0x20+31)/32]
VALUE rb_parser_lex_state_name(enum lex_state_e state)
#define IS_AFTER_OPERATOR()
rb_atomic_t cnt[RUBY_NSIG]
void st_free_table(st_table *tab)
st_table * st_init_numtable_with_size(st_index_t size)
st_table * st_init_numtable(void)
int st_insert(st_table *tab, st_data_t key, st_data_t value)
int st_lookup(st_table *tab, st_data_t key, st_data_t *value)
int st_foreach(st_table *tab, st_foreach_callback_func *func, st_data_t arg)
rb_code_location_t nd_loc
struct local_vars::@126 numparam
VALUE(* gets)(struct parser_params *, VALUE)
const char * ruby_sourcefile
unsigned int ruby__end__seen
VALUE(* call)(VALUE, int)
unsigned int command_start
unsigned int warn_location
union parser_params::@127::@128 gets_
struct parser_params::@127 lex
const struct rb_iseq_struct * parent_iseq
unsigned int token_info_enabled
VALUE ruby_sourcefile_string
struct local_vars * lvtbl
unsigned int ruby2_keywords
rb_code_position_t beg_pos
rb_code_position_t end_pos
union rb_strterm_literal_struct::@130 u1
union rb_strterm_literal_struct::@131 u2
union rb_strterm_literal_struct::@132 u3
union rb_strterm_literal_struct::@129 u0
rb_strterm_literal_t literal
union rb_strterm_struct::@133 u
rb_strterm_heredoc_t heredoc
struct parser_params * parser
#define is_identchar(p, e, enc)
int rb_enc_symname_type(const char *name, long len, rb_encoding *enc, unsigned int allowed_attrset)
#define STATIC_ID2SYM(id)
struct rb_strterm_struct * strterm
const struct vtable * vars
unsigned long ruby_scan_oct(const char *, size_t, size_t *)
#define scan_hex(s, l, e)
#define scan_oct(s, l, e)