47 #define YYBISON_VERSION "3.0.4"
50 #define YYSKELETON_NAME "yacc.c"
69 # error needs pure parser
72 #define YYERROR_VERBOSE 1
73 #define YYSTACK_USE_ALLOCA 0
74 #define YYLTYPE rb_code_location_t
75 #define YYLTYPE_IS_DECLARED 1
90 #ifndef WARN_PAST_SCOPE
91 # define WARN_PAST_SCOPE 0
96 #define yydebug (p->debug)
98 #define YYMALLOC(size) rb_parser_malloc(p, (size))
99 #define YYREALLOC(ptr, size) rb_parser_realloc(p, (ptr), (size))
100 #define YYCALLOC(nelem, size) rb_parser_calloc(p, (nelem), (size))
101 #define YYFREE(ptr) rb_parser_free(p, (ptr))
102 #define YYFPRINTF rb_parser_printf
103 #define YYPRINT(out, tok, val) parser_token_value_print(p, (tok), &(val))
104 #define YY_LOCATION_PRINT(File, loc) \
105 rb_parser_printf(p, "%d.%d-%d.%d", \
106 (loc).beg_pos.lineno, (loc).beg_pos.column,\
107 (loc).end_pos.lineno, (loc).end_pos.column)
108 #define YYLLOC_DEFAULT(Current, Rhs, N) \
112 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
113 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
117 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
118 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
122 #define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
123 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
124 #define RUBY_SET_YYLLOC_OF_NONE(Current) \
125 rb_parser_set_location_of_none(p, &(Current))
126 #define RUBY_SET_YYLLOC(Current) \
127 rb_parser_set_location(p, &(Current))
128 #define RUBY_INIT_YYLLOC() \
130 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
131 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
152 #define DEF_EXPR(n) EXPR_##n = (1 << EXPR_##n##_bit)
172 #define IS_lex_state_for(x, ls) ((x) & (ls))
173 #define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
174 #define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
175 #define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
177 # define SET_LEX_STATE(ls) \
180 rb_parser_trace_lex_state(p, p->lex.state, (ls), __LINE__) : \
181 (enum lex_state_e)(ls)))
187 # define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
188 # define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
189 # define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
190 # define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
191 # define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
195 #define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
196 #define COND_POP() BITSTACK_POP(cond_stack)
197 #define COND_P() BITSTACK_SET_P(cond_stack)
198 #define COND_SET(n) BITSTACK_SET(cond_stack, (n))
202 #define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
203 #define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
204 #define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
205 #define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
235 #define NUMPARAM_ID_P(id) numparam_id_p(id)
236 #define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - tNUMPARAM_1 + 1)
237 #define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 + (idx) - 1))
247 #define DVARS_INHERIT ((void*)1)
248 #define DVARS_TOPSCOPE NULL
249 #define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
330 unsigned int eofp: 1;
332 unsigned int debug: 1;
341 unsigned int past_scope_enabled: 1;
371 VALUE parsing_thread;
375 #define intern_cstr(n,l,en) rb_intern3(n,l,en)
377 #define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
378 #define STR_NEW0() rb_enc_str_new(0,0,p->enc)
379 #define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
380 #define STR_NEW3(ptr,len,e,func) parser_str_new((ptr),(len),(e),(func),p->enc)
381 #define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
414 #define yyerror0(msg) parser_yyerror(p, NULL, (msg))
415 #define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
416 #define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
417 #define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
420 #define compile_for_eval (0)
422 #define compile_for_eval (p->parent_iseq != 0)
425 #define token_column ((int)(p->lex.ptok - p->lex.pbeg))
427 #define CALL_Q_P(q) ((q) == TOKEN2VAL(tANDDOT))
428 #define NODE_CALL_Q(q) (CALL_Q_P(q) ? NODE_QCALL : NODE_CALL)
429 #define NEW_QCALL(q,r,m,a,loc) NEW_NODE(NODE_CALL_Q(q),r,m,a,loc)
431 #define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
459 #define rb_node_newnode(type, a1, a2, a3, loc) node_newnode(p, (type), (a1), (a2), (a3), (loc))
473 set_line_body(
NODE *body,
int line)
483 #define yyparse ruby_yyparse
487 #define new_nil(loc) NEW_NIL(loc)
498 static NODE *remove_begin_all(
NODE*);
499 #define value_expr(node) value_expr_gen(p, (node) = remove_begin(node))
522 static bool args_info_empty_p(
struct rb_args_info *args);
567 #define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
587 #define get_id(id) (id)
588 #define get_value(val) (val)
589 #define get_num(num) (num)
591 #define NODE_RIPPER NODE_CDECL
593 static inline int ripper_is_node_yylval(
VALUE n);
598 if (ripper_is_node_yylval(c)) c =
RNODE(c)->nd_cval;
599 add_mark_object(p, b);
600 add_mark_object(p, c);
605 ripper_is_node_yylval(
VALUE n)
610 #define value_expr(node) ((void)(node))
611 #define remove_begin(node) (node)
612 #define void_stmts(p,x) (x)
613 #define rb_dvar_defined(id, base) 0
614 #define rb_local_defined(id, base) 0
615 static ID ripper_get_id(
VALUE);
616 #define get_id(id) ripper_get_id(id)
618 #define get_value(val) ripper_get_value(val)
619 #define get_num(num) (int)get_id(num)
623 #define method_cond(p,node,loc) (node)
624 #define call_bin_op(p, recv,id,arg1,op_loc,loc) dispatch3(binary, (recv), STATIC_ID2SYM(id), (arg1))
625 #define match_op(p,node1,node2,op_loc,loc) call_bin_op(0, (node1), idEqTilde, (node2), op_loc, loc)
626 #define call_uni_op(p, recv,id,op_loc,loc) dispatch2(unary, STATIC_ID2SYM(id), (recv))
627 #define logop(p,id,node1,node2,op_loc,loc) call_bin_op(0, (node1), (id), (node2), op_loc, loc)
629 #define new_nil(loc) Qnil
677 #define dyna_var(p, id) local_var(p, id)
688 # define METHOD_NOT idNOT
690 # define METHOD_NOT '!'
693 #define idFWD_REST '*'
694 #ifdef RUBY3_KEYWORDS
695 #define idFWD_KWREST idPow
697 #define idFWD_KWREST 0
699 #define idFWD_BLOCK '&'
701 #define RE_OPTION_ONCE (1<<16)
702 #define RE_OPTION_ENCODING_SHIFT 8
703 #define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
704 #define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
705 #define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
706 #define RE_OPTION_MASK 0xff
707 #define RE_OPTION_ARG_ENCODING_NONE 32
729 #define HERETERM_LENGTH_BITS ((SIZEOF_VALUE - 1) * CHAR_BIT - 1)
736 #if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
738 # define HERETERM_LENGTH_MAX ((1U << HERETERM_LENGTH_BITS) - 1)
740 # define HERETERM_LENGTH_MAX UINT_MAX
743 #if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
753 #define STRTERM_HEREDOC IMEMO_FL_USER0
775 #define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
778 #define TOKEN2ID(tok) ( \
779 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
780 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
781 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
782 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
783 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
784 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
785 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
790 #define RIPPER_VERSION "0.1.0"
792 static inline VALUE intern_sym(
const char *
name);
806 #define dispatch0(n) ripper_dispatch0(p, TOKEN_PASTE(ripper_id_, n))
807 #define dispatch1(n,a) ripper_dispatch1(p, TOKEN_PASTE(ripper_id_, n), (a))
808 #define dispatch2(n,a,b) ripper_dispatch2(p, TOKEN_PASTE(ripper_id_, n), (a), (b))
809 #define dispatch3(n,a,b,c) ripper_dispatch3(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c))
810 #define dispatch4(n,a,b,c,d) ripper_dispatch4(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d))
811 #define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e))
812 #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))
814 #define yyparse ripper_yyparse
816 #define ID2VAL(id) STATIC_ID2SYM(id)
817 #define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
818 #define KWD2EID(t, v) ripper_new_yylval(p, keyword_##t, get_value(v), 0)
820 #define params_new(pars, opts, rest, pars2, kws, kwrest, blk) \
821 dispatch7(params, (pars), (opts), (rest), (pars2), (kws), (kwrest), (blk))
823 #define escape_Qundef(x) ((x)==Qundef ? Qnil : (x))
830 return params_new(pre_args, opt_args, rest_arg, post_args, kw_args, kw_rest_arg, escape_Qundef(block));
837 add_mark_object(p, kw_args);
838 add_mark_object(p, kw_rest_arg);
839 add_mark_object(p, block);
862 if (!
NIL_P(pre_arg)) {
888 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
897 #define new_hash(p,h,l) rb_ary_new_from_args(0)
910 return dispatch3(hshptn, constant, kw_args, kw_rest_arg);
918 kw_rest_arg = dispatch1(var_field, kw_rest_arg);
925 add_mark_object(p, kw_args);
926 add_mark_object(p, kw_rest_arg);
930 #define new_defined(p,expr,loc) dispatch1(defined, (expr))
935 #define ID2VAL(id) (id)
936 #define TOKEN2VAL(t) ID2VAL(t)
937 #define KWD2EID(t, v) keyword_##t
943 # define ifndef_ripper(x) (x)
946 # define Qnull Qundef
947 # define ifndef_ripper(x)
950 # define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
951 # define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
952 # define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
953 # define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
954 # define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
955 # define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
956 # define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
957 # define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
958 # define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
959 # define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
960 # define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
961 # define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
962 # define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
963 # define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
964 # define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
965 # define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
966 # define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
967 # define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
968 # define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
969 # define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
971 static ID id_warn, id_warning, id_gets, id_assoc;
972 # define WARN_S_L(s,l) STR_NEW(s,l)
973 # define WARN_S(s) STR_NEW2(s)
974 # define WARN_I(i) INT2NUM(i)
975 # define WARN_ID(i) rb_id2str(i)
976 # define WARN_IVAL(i) i
977 # define PRIsWARN "s"
978 # define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
979 # define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
980 # ifdef HAVE_VA_ARGS_MACRO
981 # define WARN_CALL(...) rb_funcall(__VA_ARGS__)
983 # define WARN_CALL rb_funcall
985 # define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
986 # define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
987 # ifdef HAVE_VA_ARGS_MACRO
988 # define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
990 # define WARNING_CALL rb_funcall
993 # define compile_error ripper_compile_error
995 # define WARN_S_L(s,l) s
998 # define WARN_ID(i) rb_id2name(i)
999 # define WARN_IVAL(i) NUM2INT(i)
1000 # define PRIsWARN PRIsVALUE
1001 # define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1002 # define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1003 # define WARN_CALL rb_compile_warn
1004 # define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1005 # define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1006 # define WARNING_CALL rb_compile_warning
1008 # define compile_error parser_compile_error
1016 #define WARN_EOL(tok) \
1017 (looking_at_eol_p(p) ? \
1018 (void)rb_warning0("`" tok "' at the end of line without an expression") : \
1022 #line 1023 "parse.c"
1025 # if defined __cplusplus && 201103L <= __cplusplus
1026 # define YY_NULLPTR nullptr
1028 # define YY_NULLPTR 0
1033 #ifdef YYERROR_VERBOSE
1034 # undef YYERROR_VERBOSE
1035 # define YYERROR_VERBOSE 1
1037 # define YYERROR_VERBOSE 0
1042 #ifndef YY_YY_Y_TAB_H_INCLUDED
1043 # define YY_YY_Y_TAB_H_INCLUDED
1056 # define YYTOKENTYPE
1183 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1197 #line 1196 "parse.c"
1201 # define YYSTYPE_IS_TRIVIAL 1
1202 # define YYSTYPE_IS_DECLARED 1
1206 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
1215 # define YYLTYPE_IS_DECLARED 1
1216 # define YYLTYPE_IS_TRIVIAL 1
1227 #line 1226 "parse.c"
1245 #ifdef YYTYPE_UINT16
1258 # ifdef __SIZE_TYPE__
1259 # define YYSIZE_T __SIZE_TYPE__
1260 # elif defined size_t
1261 # define YYSIZE_T size_t
1262 # elif ! defined YYSIZE_T
1263 # include <stddef.h>
1264 # define YYSIZE_T size_t
1266 # define YYSIZE_T unsigned int
1270 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
1273 # if defined YYENABLE_NLS && YYENABLE_NLS
1275 # include <libintl.h>
1276 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1280 # define YY_(Msgid) Msgid
1284 #ifndef YY_ATTRIBUTE
1285 # if (defined __GNUC__ \
1286 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
1287 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
1288 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
1290 # define YY_ATTRIBUTE(Spec)
1294 #ifndef YY_ATTRIBUTE_PURE
1295 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
1298 #ifndef YY_ATTRIBUTE_UNUSED
1299 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
1302 #if !defined _Noreturn \
1303 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
1304 # if defined _MSC_VER && 1200 <= _MSC_VER
1305 # define _Noreturn __declspec (noreturn)
1307 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
1312 #if ! defined lint || defined __GNUC__
1313 # define YYUSE(E) ((void) (E))
1318 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
1320 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1321 _Pragma ("GCC diagnostic push") \
1322 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
1323 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1324 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
1325 _Pragma ("GCC diagnostic pop")
1327 # define YY_INITIAL_VALUE(Value) Value
1329 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1330 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1331 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
1333 #ifndef YY_INITIAL_VALUE
1334 # define YY_INITIAL_VALUE(Value)
1338 #if ! defined yyoverflow || YYERROR_VERBOSE
1342 # ifdef YYSTACK_USE_ALLOCA
1343 # if YYSTACK_USE_ALLOCA
1345 # define YYSTACK_ALLOC __builtin_alloca
1346 # elif defined __BUILTIN_VA_ARG_INCR
1347 # include <alloca.h>
1349 # define YYSTACK_ALLOC __alloca
1350 # elif defined _MSC_VER
1351 # include <malloc.h>
1352 # define alloca _alloca
1354 # define YYSTACK_ALLOC alloca
1355 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1356 # include <stdlib.h>
1358 # ifndef EXIT_SUCCESS
1359 # define EXIT_SUCCESS 0
1366 # ifdef YYSTACK_ALLOC
1368 # define YYSTACK_FREE(Ptr) do { ; } while (0)
1369 # ifndef YYSTACK_ALLOC_MAXIMUM
1374 # define YYSTACK_ALLOC_MAXIMUM 4032
1377 # define YYSTACK_ALLOC YYMALLOC
1378 # define YYSTACK_FREE YYFREE
1379 # ifndef YYSTACK_ALLOC_MAXIMUM
1380 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1382 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
1383 && ! ((defined YYMALLOC || defined malloc) \
1384 && (defined YYFREE || defined free)))
1385 # include <stdlib.h>
1386 # ifndef EXIT_SUCCESS
1387 # define EXIT_SUCCESS 0
1391 # define YYMALLOC malloc
1392 # if ! defined malloc && ! defined EXIT_SUCCESS
1397 # define YYFREE free
1398 # if ! defined free && ! defined EXIT_SUCCESS
1406 #if (! defined yyoverflow \
1407 && (! defined __cplusplus \
1408 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
1409 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1420 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
1424 # define YYSTACK_BYTES(N) \
1425 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
1426 + 2 * YYSTACK_GAP_MAXIMUM)
1428 # define YYCOPY_NEEDED 1
1435 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1438 YYSIZE_T yynewbytes; \
1439 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1440 Stack = &yyptr->Stack_alloc; \
1441 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
1442 yyptr += yynewbytes / sizeof (*yyptr); \
1448 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1452 # if defined __GNUC__ && 1 < __GNUC__
1453 # define YYCOPY(Dst, Src, Count) \
1454 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
1456 # define YYCOPY(Dst, Src, Count) \
1460 for (yyi = 0; yyi < (Count); yyi++) \
1461 (Dst)[yyi] = (Src)[yyi]; \
1471 #define YYLAST 13832
1474 #define YYNTOKENS 154
1478 #define YYNRULES 757
1480 #define YYNSTATES 1241
1484 #define YYUNDEFTOK 2
1485 #define YYMAXUTOK 353
1487 #define YYTRANSLATE(YYX) \
1488 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1494 0, 2, 2, 2, 2, 2, 2, 2, 2, 71,
1495 153, 74, 72, 73, 2, 2, 2, 2, 2, 2,
1496 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1497 2, 2, 152, 140, 2, 2, 2, 138, 133, 2,
1498 148, 149, 136, 134, 146, 135, 68, 137, 2, 2,
1499 2, 2, 2, 2, 2, 2, 2, 2, 128, 151,
1500 130, 126, 129, 127, 2, 2, 2, 2, 2, 2,
1501 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1502 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1503 2, 145, 69, 150, 132, 2, 147, 2, 2, 2,
1504 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1505 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1506 2, 2, 2, 143, 131, 144, 141, 2, 88, 89,
1507 90, 91, 75, 76, 77, 78, 94, 95, 83, 82,
1508 79, 80, 81, 86, 87, 92, 93, 97, 84, 85,
1509 96, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1510 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1511 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1512 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1513 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1514 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1515 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1516 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1517 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1518 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1519 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1520 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1521 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1522 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1523 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1524 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1525 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1526 65, 66, 67, 70, 98, 99, 100, 101, 102, 103,
1527 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
1528 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1536 0, 1176, 1176, 1176, 1202, 1208, 1215, 1222, 1229, 1235,
1537 1236, 1242, 1255, 1253, 1264, 1275, 1281, 1288, 1295, 1302,
1538 1308, 1313, 1312, 1322, 1322, 1329, 1336, 1346, 1354, 1361,
1539 1369, 1377, 1389, 1401, 1411, 1425, 1426, 1434, 1442, 1451,
1540 1458, 1461, 1469, 1477, 1486, 1494, 1502, 1510, 1518, 1528,
1541 1533, 1542, 1545, 1546, 1550, 1554, 1558, 1563, 1570, 1572,
1542 1562, 1580, 1583, 1590, 1590, 1590, 1596, 1597, 1600, 1601,
1543 1610, 1620, 1630, 1639, 1650, 1657, 1664, 1671, 1678, 1686,
1544 1694, 1701, 1708, 1717, 1718, 1727, 1728, 1737, 1744, 1751,
1545 1758, 1765, 1772, 1779, 1786, 1793, 1800, 1809, 1810, 1819,
1546 1826, 1835, 1842, 1851, 1858, 1865, 1872, 1882, 1889, 1899,
1547 1906, 1913, 1923, 1930, 1937, 1944, 1951, 1958, 1965, 1972,
1548 1979, 1989, 1996, 1999, 2006, 2013, 2022, 2023, 2024, 2025,
1549 2030, 2037, 2044, 2047, 2054, 2054, 2064, 2065, 2066, 2067,
1550 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077,
1551 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087,
1552 2088, 2089, 2090, 2091, 2092, 2093, 2096, 2096, 2096, 2097,
1553 2097, 2098, 2098, 2098, 2099, 2099, 2099, 2099, 2100, 2100,
1554 2100, 2100, 2101, 2101, 2101, 2102, 2102, 2102, 2102, 2103,
1555 2103, 2103, 2103, 2104, 2104, 2104, 2104, 2105, 2105, 2105,
1556 2105, 2106, 2106, 2106, 2106, 2107, 2107, 2110, 2117, 2124,
1557 2132, 2140, 2148, 2156, 2164, 2171, 2179, 2188, 2197, 2209,
1558 2221, 2233, 2245, 2249, 2253, 2257, 2261, 2265, 2269, 2273,
1559 2277, 2281, 2285, 2289, 2293, 2297, 2298, 2302, 2306, 2310,
1560 2314, 2318, 2322, 2326, 2330, 2334, 2338, 2342, 2342, 2347,
1561 2356, 2362, 2363, 2364, 2365, 2368, 2372, 2379, 2386, 2387,
1562 2391, 2398, 2407, 2412, 2423, 2430, 2459, 2460, 2463, 2464,
1563 2465, 2469, 2476, 2485, 2493, 2500, 2508, 2516, 2520, 2520,
1564 2557, 2566, 2570, 2576, 2583, 2590, 2597, 2606, 2607, 2610,
1565 2617, 2624, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2640,
1566 2641, 2642, 2643, 2651, 2650, 2665, 2665, 2672, 2672, 2680,
1567 2688, 2695, 2702, 2709, 2717, 2724, 2731, 2738, 2745, 2745,
1568 2750, 2754, 2758, 2765, 2766, 2775, 2774, 2785, 2796, 2807,
1569 2817, 2828, 2827, 2844, 2843, 2858, 2867, 2915, 2914, 2938,
1570 2937, 2960, 2959, 2983, 2989, 2982, 3009, 3010, 3009, 3035,
1571 3042, 3049, 3056, 3065, 3072, 3078, 3095, 3101, 3107, 3113,
1572 3119, 3125, 3131, 3137, 3143, 3149, 3155, 3161, 3167, 3173,
1573 3188, 3195, 3201, 3208, 3209, 3210, 3213, 3214, 3217, 3218,
1574 3230, 3231, 3240, 3241, 3244, 3252, 3261, 3268, 3277, 3284,
1575 3291, 3298, 3305, 3314, 3322, 3331, 3335, 3339, 3343, 3347,
1576 3353, 3358, 3363, 3367, 3371, 3375, 3379, 3383, 3391, 3395,
1577 3399, 3403, 3407, 3411, 3415, 3419, 3423, 3429, 3430, 3436,
1578 3445, 3457, 3461, 3470, 3472, 3476, 3481, 3487, 3490, 3494,
1579 3498, 3502, 3487, 3526, 3534, 3544, 3549, 3555, 3565, 3579,
1580 3586, 3593, 3602, 3611, 3619, 3627, 3634, 3642, 3650, 3657,
1581 3664, 3677, 3685, 3695, 3696, 3700, 3695, 3717, 3718, 3722,
1582 3717, 3741, 3749, 3756, 3764, 3773, 3785, 3786, 3790, 3796,
1583 3797, 3799, 3800, 3801, 3789, 3814, 3815, 3818, 3819, 3827,
1584 3837, 3838, 3843, 3851, 3855, 3861, 3864, 3873, 3876, 3883,
1585 3886, 3887, 3889, 3890, 3899, 3908, 3913, 3922, 3931, 3936,
1586 3936, 3941, 3946, 3946, 3951, 3956, 3956, 3963, 3972, 3976,
1587 3985, 3989, 3993, 3997, 4001, 4004, 4008, 4017, 4021, 4025,
1588 4029, 4035, 4036, 4045, 4054, 4058, 4062, 4066, 4070, 4076,
1589 4078, 4087, 4095, 4109, 4110, 4133, 4137, 4143, 4149, 4150,
1590 4159, 4168, 4180, 4192, 4193, 4194, 4195, 4207, 4221, 4222,
1591 4223, 4224, 4225, 4226, 4227, 4228, 4229, 4237, 4236, 4249,
1592 4259, 4272, 4279, 4286, 4295, 4307, 4310, 4317, 4324, 4327,
1593 4331, 4334, 4341, 4344, 4345, 4348, 4365, 4366, 4367, 4376,
1594 4386, 4395, 4401, 4411, 4417, 4426, 4428, 4437, 4447, 4453,
1595 4462, 4471, 4481, 4487, 4497, 4503, 4513, 4523, 4542, 4548,
1596 4558, 4568, 4609, 4612, 4611, 4628, 4632, 4637, 4641, 4645,
1597 4627, 4666, 4673, 4680, 4687, 4690, 4691, 4694, 4704, 4705,
1598 4706, 4707, 4710, 4720, 4721, 4731, 4732, 4733, 4734, 4737,
1599 4738, 4739, 4740, 4741, 4744, 4745, 4746, 4747, 4748, 4749,
1600 4750, 4753, 4766, 4775, 4782, 4791, 4792, 4796, 4795, 4805,
1601 4813, 4822, 4837, 4837, 4851, 4855, 4859, 4863, 4867, 4873,
1602 4878, 4883, 4887, 4891, 4895, 4899, 4903, 4907, 4911, 4915,
1603 4919, 4923, 4927, 4931, 4935, 4940, 4946, 4955, 4963, 4971,
1604 4979, 4989, 4990, 4998, 5007, 5015, 5036, 5038, 5051, 5061,
1605 5069, 5079, 5086, 5095, 5102, 5112, 5119, 5128, 5129, 5132,
1606 5140, 5148, 5158, 5168, 5178, 5185, 5194, 5201, 5210, 5211,
1607 5214, 5222, 5232, 5233, 5236, 5246, 5250, 5256, 5261, 5261,
1608 5285, 5286, 5295, 5297, 5320, 5331, 5338, 5346, 5365, 5366,
1609 5367, 5370, 5371, 5372, 5373, 5376, 5377, 5378, 5381, 5382,
1610 5385, 5386, 5389, 5390, 5393, 5394, 5397, 5398, 5401, 5404,
1611 5407, 5408, 5409, 5412, 5413, 5416, 5417, 5421
1615 #if YYDEBUG || YYERROR_VERBOSE || 0
1618 static const char *
const yytname[] =
1620 "\"end-of-input\"",
"error",
"$undefined",
"\"`class'\"",
1621 "\"`module'\"",
"\"`def'\"",
"\"`undef'\"",
"\"`begin'\"",
1622 "\"`rescue'\"",
"\"`ensure'\"",
"\"`end'\"",
"\"`if'\"",
"\"`unless'\"",
1623 "\"`then'\"",
"\"`elsif'\"",
"\"`else'\"",
"\"`case'\"",
"\"`when'\"",
1624 "\"`while'\"",
"\"`until'\"",
"\"`for'\"",
"\"`break'\"",
"\"`next'\"",
1625 "\"`redo'\"",
"\"`retry'\"",
"\"`in'\"",
"\"`do'\"",
1626 "\"`do' for condition\"",
"\"`do' for block\"",
"\"`do' for lambda\"",
1627 "\"`return'\"",
"\"`yield'\"",
"\"`super'\"",
"\"`self'\"",
"\"`nil'\"",
1628 "\"`true'\"",
"\"`false'\"",
"\"`and'\"",
"\"`or'\"",
"\"`not'\"",
1629 "\"`if' modifier\"",
"\"`unless' modifier\"",
"\"`while' modifier\"",
1630 "\"`until' modifier\"",
"\"`rescue' modifier\"",
"\"`alias'\"",
1631 "\"`defined?'\"",
"\"`BEGIN'\"",
"\"`END'\"",
"\"`__LINE__'\"",
1632 "\"`__FILE__'\"",
"\"`__ENCODING__'\"",
"\"local variable or method\"",
1633 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
1634 "\"constant\"",
"\"class variable\"",
"tLABEL",
"\"integer literal\"",
1635 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
1636 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
1637 "\"literal content\"",
"tREGEXP_END",
"'.'",
"\"backslash\"",
1638 "\"escaped space\"",
"\"escaped horizontal tab\"",
1639 "\"escaped form feed\"",
"\"escaped carriage return\"",
1640 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
1641 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
1642 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
1643 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
1644 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
1645 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
1646 "\"**arg\"",
"\"&\"",
"\"->\"",
"\"symbol literal\"",
1647 "\"string literal\"",
"\"backtick literal\"",
"\"regexp literal\"",
1648 "\"word list\"",
"\"verbatim word list\"",
"\"symbol list\"",
1649 "\"verbatim symbol list\"",
"\"terminator\"",
"\"'}'\"",
"tSTRING_DBEG",
1650 "tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tLOWEST",
"'='",
"'?'",
"':'",
1651 "'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
1652 "tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"','",
1653 "'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
"'\\n'",
"$accept",
"program",
1654 "$@1",
"top_compstmt",
"top_stmts",
"top_stmt",
"begin_block",
1655 "bodystmt",
"$@2",
"compstmt",
"stmts",
"stmt_or_begin",
"$@3",
"stmt",
1656 "$@4",
"command_asgn",
"command_rhs",
"expr",
"@5",
"@6",
"$@7",
1657 "expr_value",
"expr_value_do",
"$@8",
"$@9",
"command_call",
1658 "block_command",
"cmd_brace_block",
"fcall",
"command",
"mlhs",
1659 "mlhs_inner",
"mlhs_basic",
"mlhs_item",
"mlhs_head",
"mlhs_post",
1660 "mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
"fitem",
"undef_list",
1661 "$@10",
"op",
"reswords",
"arg",
"$@11",
"relop",
"rel_expr",
1662 "arg_value",
"aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
1663 "opt_call_args",
"call_args",
"command_args",
"$@12",
"block_arg",
1664 "opt_block_arg",
"args",
"mrhs_arg",
"mrhs",
"primary",
"$@13",
"$@14",
1665 "$@15",
"$@16",
"$@17",
"@18",
"@19",
"$@20",
"@21",
"$@22",
"@23",
1666 "@24",
"@25",
"@26",
"primary_value",
"k_begin",
"k_if",
"k_unless",
1667 "k_while",
"k_until",
"k_case",
"k_for",
"k_class",
"k_module",
"k_def",
1668 "k_do",
"k_do_block",
"k_rescue",
"k_ensure",
"k_when",
"k_else",
1669 "k_elsif",
"k_end",
"k_return",
"then",
"do",
"if_tail",
"opt_else",
1670 "for_var",
"f_marg",
"f_marg_list",
"f_margs",
"f_rest_marg",
1671 "block_args_tail",
"opt_block_args_tail",
"block_param",
1672 "opt_block_param",
"block_param_def",
"opt_bv_decl",
"bv_decls",
"bvar",
1673 "lambda",
"@27",
"@28",
"@29",
"@30",
"$@31",
"f_larglist",
1674 "lambda_body",
"do_block",
"block_call",
"method_call",
"brace_block",
1675 "brace_body",
"@32",
"@33",
"@34",
"do_body",
"@35",
"@36",
"@37",
1676 "case_args",
"case_body",
"cases",
"p_case_body",
"@38",
"@39",
"@40",
1677 "$@41",
"$@42",
"$@43",
"p_cases",
"p_top_expr",
"p_top_expr_body",
1678 "p_expr",
"p_as",
"p_alt",
"p_lparen",
"p_lbracket",
"p_expr_basic",
1679 "@44",
"@45",
"@46",
"p_args",
"p_args_head",
"p_args_tail",
1680 "p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
"p_kw_label",
1681 "p_kwrest",
"p_kwnorest",
"p_value",
"p_primitive",
"$@47",
"p_variable",
1682 "p_var_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
1683 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
1684 "regexp",
"words",
"word_list",
"word",
"symbols",
"symbol_list",
1685 "qwords",
"qsymbols",
"qword_list",
"qsym_list",
"string_contents",
1686 "xstring_contents",
"regexp_contents",
"string_content",
"@48",
"$@49",
1687 "@50",
"@51",
"@52",
"@53",
"string_dvar",
"symbol",
"ssym",
"sym",
1688 "dsym",
"numeric",
"simple_numeric",
"user_variable",
"keyword_variable",
1689 "var_ref",
"var_lhs",
"backref",
"superclass",
"$@54",
"f_arglist",
1690 "@55",
"args_tail",
"opt_args_tail",
"f_args",
"args_forward",
1691 "f_bad_arg",
"f_norm_arg",
"f_arg_asgn",
"f_arg_item",
"f_arg",
1692 "f_label",
"f_kw",
"f_block_kw",
"f_block_kwarg",
"f_kwarg",
1693 "kwrest_mark",
"f_no_kwarg",
"f_kwrest",
"f_opt",
"f_block_opt",
1694 "f_block_optarg",
"f_optarg",
"restarg_mark",
"f_rest_arg",
1695 "blkarg_mark",
"f_block_arg",
"opt_f_block_arg",
"singleton",
"$@56",
1696 "assoc_list",
"assocs",
"assoc",
"operation",
"operation2",
"operation3",
1697 "dot_or_colon",
"call_op",
"call_op2",
"opt_terms",
"opt_nl",
"rparen",
1698 "rbracket",
"trailer",
"term",
"terms",
"none",
YY_NULLPTR
1707 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1708 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1709 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1710 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1711 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1712 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1713 315, 316, 317, 318, 319, 320, 321, 322, 46, 92,
1714 323, 9, 12, 13, 11, 132, 133, 134, 135, 140,
1715 141, 142, 139, 138, 148, 149, 143, 144, 128, 129,
1716 130, 131, 145, 146, 136, 137, 150, 147, 324, 325,
1717 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
1718 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
1719 346, 347, 348, 349, 350, 351, 61, 63, 58, 62,
1720 60, 124, 94, 38, 43, 45, 42, 47, 37, 352,
1721 33, 126, 353, 123, 125, 91, 44, 96, 40, 41,
1726 #define YYPACT_NINF -1056
1728 #define yypact_value_is_default(Yystate) \
1729 (!!((Yystate) == (-1056)))
1731 #define YYTABLE_NINF -758
1733 #define yytable_value_is_error(Yytable_value) \
1734 (!!((Yytable_value) == (-758)))
1740 -1056, 97, 3943, -1056, 9202, -1056, -1056, -1056, 8660, -1056,
1741 -1056, -1056, -1056, -1056, -1056, -1056, 9328, 9328, -1056, -1056,
1742 -1056, 5267, 4826, -1056, -1056, -1056, -1056, -41, 8515, 18,
1743 -33, 124, -1056, -1056, -1056, 3778, 4973, -1056, -1056, 4238,
1744 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, 10966, 10966,
1745 10966, 10966, 90, 6715, 9454, 9832, 10210, 8944, -1056, 8370,
1746 -1056, -1056, -1056, 72, 143, 146, 197, 1315, 11092, 10966,
1747 -1056, 6, -1056, 1265, -1056, 411, -1056, -1056, 249, 152,
1748 253, -1056, 239, 11344, -1056, 279, 1752, 377, 542, 624,
1749 -1056, 11218, 11218, -1056, -1056, 7697, 11466, 11588, 11710, 8224,
1750 9328, 48, 21, -1056, -1056, 281, -1056, -1056, -1056, -1056,
1751 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, 394, 461,
1752 -1056, 355, 498, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1753 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1754 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1755 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1756 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1757 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1758 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1759 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1760 -1056, -1056, 343, -1056, -1056, -1056, 346, 10966, 453, 6866,
1761 10966, 10966, 10966, -1056, 10966, -1056, 399, 4510, 448, -1056,
1762 -1056, 357, 723, 9, 300, 438, 547, 423, -1056, -1056,
1763 7571, -1056, 9328, 9580, -1056, -1056, 7823, -1056, 11218, 336,
1764 -1056, 430, 7017, -1056, 7168, -1056, -1056, 464, 483, 249,
1765 -1056, 740, -1056, 565, 3504, 3504, 581, 9454, -1056, 6715,
1766 549, 6, -1056, 1265, 18, 586, -1056, 1265, 18, 568,
1767 588, 640, -1056, 448, 578, 640, -1056, 18, 690, 1315,
1768 11832, 617, -1056, 790, 858, 885, 923, -1056, -1056, -1056,
1769 -1056, -1056, 362, -1056, 446, 562, 683, -1056, -1056, -1056,
1770 -1056, 694, -1056, -1056, -1056, -1056, -1056, -1056, -1056, 7949,
1771 11218, 11218, 11218, 11218, 9454, 11218, 11218, -1056, -1056, -1056,
1772 668, -1056, -1056, -1056, -1056, -1056, 10336, -1056, 6715, 9073,
1773 663, 10336, -1056, 10966, 10966, 10966, 10966, 10966, -1056, -1056,
1774 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, -1056,
1775 -1056, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966,
1776 10966, -1056, -1056, 12335, 9328, 12425, 5859, 411, 108, 108,
1777 7319, 11218, 7319, 6, -1056, 674, 758, -1056, -1056, 936,
1778 819, 53, 77, 126, 732, 827, 11218, 274, -1056, 727,
1779 940, -1056, -1056, -1056, -1056, 403, 437, 475, 517, 533,
1780 540, 543, 554, 558, -1056, -1056, -1056, 566, -1056, -1056,
1781 -1056, 13685, -1056, -1056, 11092, 11092, -1056, -1056, 629, -1056,
1782 -1056, -1056, 407, 10966, 10966, 9706, -1056, -1056, 12515, 9328,
1783 12605, 10966, 10966, 9958, -1056, 18, 718, -1056, -1056, 10966,
1784 18, -1056, 750, 18, 752, -1056, 96, -1056, -1056, -1056,
1785 -1056, -1056, 8660, -1056, 10966, 729, 757, 12515, 12605, 10966,
1786 1265, -33, 18, -1056, -1056, 8075, 754, 18, -1056, -1056,
1787 10084, -1056, -1056, 10210, -1056, -1056, -1056, 430, 963, -1056,
1788 -1056, 771, 11832, 12695, 9328, 12785, -1056, -1056, -1056, -1056,
1789 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, 824, 101,
1790 992, 141, 10966, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1791 -1056, -1056, 759, -1056, -1056, -1056, 866, -1056, 866, 10966,
1792 -1056, 773, 779, 860, -1056, 18, 11832, 781, -1056, -1056,
1793 -1056, 884, 806, 4216, -1056, -1056, -1056, 1006, 644, -1056,
1794 565, 2696, 2696, 2696, 2696, 4071, 2908, 2696, 2696, 3504,
1795 3504, 814, 814, 3389, 1310, 1310, 1335, 24, 24, 565,
1796 565, 565, 1921, 1921, 3606, 4385, 5561, 4532, -1056, 483,
1797 -1056, 18, 832, -1056, 870, -1056, -1056, 5120, 866, 922,
1798 -1056, 6010, 921, 6463, 866, 37, 866, 935, 947, 153,
1799 12875, 9328, 12965, -1056, 411, -1056, 963, -1056, -1056, -1056,
1800 13055, 9328, 13145, 5859, 11218, -1056, -1056, -1056, -1056, -1056,
1801 -1056, 3199, -1056, 4363, -1056, -1056, -1056, 8660, 10966, -1056,
1802 10966, 448, -1056, 423, 4091, 4679, 18, 655, 707, -1056,
1803 -1056, -1056, -1056, 9706, -1056, 9958, -1056, -1056, 11218, 4510,
1804 -1056, -1056, 483, 483, -1056, -1056, -6, -1056, -1056, 640,
1805 11832, 771, 57, 749, 18, 447, 519, -1056, -1056, 1173,
1806 -1056, 538, -1056, 831, -1056, -1056, 553, 843, -1056, 565,
1807 -1056, -1056, 822, -1056, -1056, -1056, -1056, 830, 10462, 9454,
1808 -1056, 771, 11832, 9454, 11092, 10966, 13235, 9328, 13325, 12268,
1809 856, 11092, 11092, -1056, 668, 848, 875, 11092, 11092, -1056,
1810 -1056, 668, -1056, -1056, -1056, 10588, 167, -1056, 817, -1056,
1811 991, -1056, -1056, -1056, -1056, -1056, -1056, 947, 866, -1056,
1812 10714, 866, 81, 177, 18, 288, 307, 7319, 6, 11218,
1813 5859, 1030, 749, -1056, 18, 866, 96, 862, 8805, 21,
1814 152, -1056, -1056, -1056, -1056, 10966, 10966, 714, 10966, 10966,
1815 868, 96, -1056, -1056, 607, -1056, -1056, -1056, -1056, -1056,
1816 -1056, -1056, -1056, -1056, -1056, -1056, -1056, 887, -1056, 887,
1817 10966, 876, -1056, 771, -1056, 4510, 5414, 5708, 18, 744,
1818 748, -1056, -1056, 2641, 2641, 534, -1056, 400, 881, -1056,
1819 975, 934, -1056, 904, -1056, -1056, 804, -1056, -1056, 267,
1820 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, 10966,
1821 -1056, -1056, -1056, -1056, -1056, -1056, 11092, -1056, -1056, -1056,
1822 -1056, -1056, 773, -1056, 938, -1056, -1056, -1056, 7319, -1056,
1823 -1056, -1056, -1056, 7319, 11218, 866, -1056, -1056, 866, -1056,
1824 -1056, 866, -1056, 10966, -1056, 63, -1056, 330, 866, 5859,
1825 6, 866, -1056, -1056, -1056, 1233, 5859, 1709, -1056, -1056,
1826 -1056, 10966, 9958, -1056, 1648, -1056, 1383, 7168, -1056, -1056,
1827 5859, 895, 756, -1056, -1056, -1056, -1056, 12268, 2069, -1056,
1828 -1056, 687, -1056, -1056, 1000, -1056, 12268, 2641, 2641, 534,
1829 400, 501, 12149, 12149, 4510, -1056, -1056, 11954, 108, -1056,
1830 -1056, 6589, -1056, 108, -1056, -1056, -1056, -1056, -1056, 10840,
1831 6161, -1056, 866, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1832 -1056, -1056, -1056, 1218, -1056, -1056, -1056, -1056, -1056, -1056,
1833 18, 18, -1056, -1056, 917, -1056, 907, 10966, -1056, 911,
1834 595, 916, 916, -1056, 919, 1015, 924, 1020, -1056, 866,
1835 6, 862, 1709, -1056, -1056, -1056, -1056, 18, 942, 949,
1836 932, 12076, -1056, 933, 916, 916, -1056, 943, 945, -1056,
1837 931, -1056, -1056, 206, 38, 117, 18, 12235, -1056, 948,
1838 -1056, -1056, 952, 954, -1056, 12268, -1056, -1056, 679, -1056,
1839 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, 18, 18,
1840 18, 18, 1060, -1056, 1049, 183, 292, 324, 5859, 1110,
1841 6010, 12149, 10966, -1056, 649, -1056, 1218, 1276, -1056, 974,
1842 18, 976, -1056, -1056, -1056, 10966, 1709, -1056, -1056, 1099,
1843 -1056, -1056, -1056, -1056, 359, -1056, -1056, 1709, -1056, -1056,
1844 1860, -1056, -1056, -1056, -1056, 5859, 18, 123, 7445, 994,
1845 -1056, 12076, 1709, -1056, 1074, 1070, 1099, -1056, -1056, -1056,
1846 1709, -1056, 1860, -1056, 1293, -1056, 988, 12268, -1056, 163,
1847 934, 990, -1056, 717, -1056, 687, 934, -1056, -1056, 730,
1848 -1056, -1056, -1056, -1056, 360, 13415, 9328, 13505, 922, -1056,
1849 817, 108, 838, 295, -1056, -1056, -1056, -1056, -1056, -1056,
1850 18, -1056, 1218, -1056, 855, -1056, -1056, -1056, 993, 996,
1851 -1056, 1091, 916, -1056, 998, -1056, 1001, -1056, 998, 866,
1852 999, 5859, 7168, -1056, 1032, -1056, 1070, -1056, 1009, 1014,
1853 -1056, 13595, -1056, 916, 1017, -1056, 1019, 1017, -1056, 710,
1854 -1056, -1056, 12268, 1023, -1056, 1026, 12268, -1056, -1056, -1056,
1855 -1056, -1056, 105, 187, 18, 371, 396, -1056, -1056, -1056,
1856 11218, 11218, 2069, -1056, -1056, 1037, 1038, 1709, -1056, 1860,
1857 -1056, -1056, 1860, -1056, 1860, -1056, -1056, -1056, -1056, 866,
1858 1042, -1056, 1709, -1056, 1860, -1056, 1013, 1040, -1056, 1860,
1859 -1056, 1860, -1056, -1056, 1293, -1056, 1023, 12268, 12268, 1023,
1860 406, -1056, -1056, -1056, -1056, 855, 855, 998, 1052, 998,
1861 998, -1056, -1056, 1017, 1053, 1017, 1017, -1056, -1056, 1023,
1862 -1056, 1038, -1056, 1860, -1056, -1056, -1056, -1056, 1860, -1056,
1863 -1056, -1056, 6312, 998, 1017, 80, -1056, -1056, -1056, -1056,
1872 2, 0, 0, 1, 0, 361, 362, 363, 0, 354,
1873 355, 356, 359, 357, 358, 360, 349, 350, 351, 352,
1874 372, 278, 278, 635, 634, 636, 637, 746, 0, 746,
1875 0, 0, 639, 638, 640, 728, 730, 631, 630, 729,
1876 633, 625, 626, 627, 628, 576, 645, 646, 0, 0,
1877 0, 0, 0, 0, 305, 757, 757, 95, 325, 596,
1878 596, 598, 600, 0, 0, 0, 0, 0, 0, 0,
1879 3, 744, 6, 9, 35, 40, 52, 67, 278, 66,
1880 0, 83, 0, 87, 97, 0, 61, 235, 250, 0,
1881 303, 0, 0, 63, 63, 744, 0, 0, 0, 0,
1882 314, 68, 323, 292, 293, 575, 577, 294, 295, 296,
1883 298, 297, 299, 574, 615, 616, 573, 623, 641, 642,
1884 300, 0, 301, 71, 5, 8, 176, 187, 177, 200,
1885 173, 193, 183, 182, 203, 204, 198, 181, 180, 175,
1886 201, 205, 206, 185, 174, 188, 192, 194, 186, 179,
1887 195, 202, 197, 196, 189, 199, 184, 172, 191, 190,
1888 171, 178, 169, 170, 166, 167, 168, 126, 128, 127,
1889 161, 162, 157, 139, 140, 141, 148, 145, 147, 142,
1890 143, 163, 164, 149, 150, 154, 158, 144, 146, 136,
1891 137, 138, 151, 152, 153, 155, 156, 159, 160, 165,
1892 131, 133, 28, 129, 130, 132, 0, 0, 0, 0,
1893 0, 0, 0, 596, 0, 273, 0, 257, 283, 81,
1894 277, 757, 0, 641, 642, 0, 301, 757, 722, 82,
1895 746, 79, 0, 757, 448, 78, 746, 747, 0, 0,
1896 23, 247, 0, 10, 0, 349, 350, 317, 449, 0,
1897 229, 0, 314, 230, 220, 221, 311, 0, 21, 0,
1898 0, 744, 17, 20, 746, 85, 16, 307, 746, 0,
1899 750, 750, 258, 0, 0, 750, 720, 746, 0, 0,
1900 0, 93, 353, 0, 103, 104, 111, 427, 620, 619,
1901 621, 618, 0, 617, 0, 0, 0, 583, 592, 588,
1902 594, 624, 56, 241, 242, 753, 754, 4, 755, 745,
1903 0, 0, 0, 0, 0, 0, 0, 364, 453, 442,
1904 72, 457, 322, 365, 457, 438, 0, 99, 0, 91,
1905 88, 0, 57, 0, 0, 0, 0, 0, 253, 254,
1906 0, 0, 0, 0, 218, 219, 0, 0, 0, 251,
1907 252, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1908 0, 740, 741, 0, 757, 0, 0, 62, 0, 0,
1909 0, 0, 0, 744, 333, 745, 0, 383, 382, 0,
1910 0, 641, 642, 301, 121, 122, 0, 0, 124, 649,
1911 0, 641, 642, 301, 341, 196, 189, 199, 184, 166,
1912 167, 168, 126, 127, 718, 343, 717, 0, 80, 743,
1913 742, 0, 324, 578, 0, 0, 134, 725, 311, 284,
1914 727, 280, 0, 0, 0, 0, 274, 282, 0, 757,
1915 0, 0, 0, 0, 275, 746, 0, 316, 279, 676,
1916 746, 269, 757, 746, 757, 268, 746, 321, 55, 25,
1917 27, 26, 0, 318, 0, 0, 0, 0, 0, 0,
1918 19, 0, 746, 309, 15, 745, 84, 746, 306, 312,
1919 752, 751, 259, 752, 261, 313, 721, 0, 110, 624,
1920 101, 96, 0, 0, 757, 0, 326, 428, 602, 622,
1921 605, 603, 597, 579, 580, 599, 581, 601, 0, 0,
1922 0, 0, 0, 756, 7, 29, 30, 31, 32, 33,
1923 53, 54, 0, 454, 453, 73, 0, 458, 0, 0,
1924 36, 288, 0, 39, 287, 746, 0, 89, 100, 51,
1925 41, 49, 0, 262, 283, 207, 37, 0, 301, 58,
1926 227, 234, 236, 237, 238, 245, 246, 239, 240, 216,
1927 217, 243, 244, 746, 231, 232, 233, 222, 223, 224,
1928 225, 226, 255, 256, 731, 733, 732, 734, 447, 278,
1929 445, 746, 731, 733, 732, 734, 446, 278, 0, 757,
1930 374, 0, 373, 0, 0, 0, 0, 331, 0, 311,
1931 0, 757, 0, 63, 339, 121, 122, 123, 647, 337,
1932 0, 757, 0, 0, 0, 344, 738, 739, 346, 731,
1933 732, 278, 42, 262, 208, 48, 215, 0, 0, 724,
1934 0, 285, 281, 757, 731, 732, 746, 731, 732, 723,
1935 315, 748, 264, 270, 265, 272, 320, 24, 0, 248,
1936 11, 34, 0, 757, 214, 22, 86, 18, 308, 750,
1937 0, 94, 735, 109, 746, 731, 732, 429, 606, 0,
1938 582, 0, 585, 0, 590, 587, 0, 0, 591, 228,
1939 451, 455, 0, 371, 452, 459, 437, 291, 0, 0,
1940 98, 92, 0, 0, 0, 0, 0, 757, 0, 0,
1941 0, 0, 0, 444, 76, 0, 450, 0, 0, 267,
1942 443, 74, 266, 304, 366, 757, 757, 565, 757, 375,
1943 757, 329, 377, 64, 376, 330, 468, 0, 0, 368,
1944 0, 0, 735, 310, 746, 731, 732, 0, 0, 0,
1945 0, 121, 122, 125, 746, 0, 746, 652, 0, 439,
1946 69, 135, 726, 286, 276, 0, 0, 450, 0, 0,
1947 757, 746, 260, 102, 450, 430, 607, 611, 612, 613,
1948 604, 614, 584, 586, 593, 589, 595, 757, 70, 757,
1949 0, 289, 38, 90, 50, 263, 731, 732, 746, 731,
1950 732, 559, 563, 0, 0, 0, 505, 499, 502, 557,
1951 0, 59, 485, 487, 489, 492, 538, 543, 544, 545,
1952 548, 549, 550, 551, 552, 554, 553, 555, 556, 0,
1953 47, 212, 46, 213, 77, 749, 0, 44, 210, 45,
1954 211, 75, 566, 567, 757, 568, 367, 369, 0, 12,
1955 14, 572, 370, 0, 0, 0, 378, 380, 0, 65,
1956 469, 0, 335, 0, 461, 0, 334, 450, 0, 0,
1957 0, 0, 450, 342, 719, 675, 0, 675, 347, 440,
1958 441, 0, 271, 319, 675, 608, 746, 0, 418, 417,
1959 0, 290, 450, 546, 547, 122, 561, 0, 0, 501,
1960 504, 0, 427, 560, 0, 60, 0, 541, 542, 0,
1961 491, 490, 0, 0, 249, 43, 209, 0, 0, 570,
1962 571, 0, 381, 0, 327, 328, 470, 332, 462, 0,
1963 0, 336, 0, 648, 338, 682, 679, 678, 677, 680,
1964 688, 697, 676, 0, 709, 698, 713, 712, 708, 674,
1965 746, 746, 681, 683, 684, 686, 660, 690, 695, 757,
1966 701, 757, 757, 706, 660, 711, 660, 0, 658, 0,
1967 0, 652, 675, 431, 434, 609, 416, 746, 0, 684,
1968 401, 692, 693, 757, 757, 757, 704, 401, 401, 399,
1969 421, 456, 460, 746, 519, 507, 746, 508, 514, 0,
1970 533, 596, 0, 525, 529, 532, 526, 528, 536, 558,
1971 486, 488, 539, 540, 562, 498, 495, 596, 746, 746,
1972 746, 746, 0, 569, 0, 641, 642, 301, 0, 757,
1973 0, 0, 0, 463, 757, 340, 0, 394, 386, 388,
1974 746, 391, 384, 650, 651, 0, 0, 667, 689, 0,
1975 655, 716, 699, 700, 0, 657, 656, 0, 670, 710,
1976 0, 672, 714, 345, 653, 0, 746, 0, 0, 0,
1977 419, 0, 407, 409, 0, 691, 0, 396, 398, 397,
1978 0, 412, 0, 414, 0, 506, 517, 0, 500, 512,
1979 523, 509, 515, 0, 503, 0, 531, 537, 535, 0,
1980 493, 494, 496, 497, 311, 0, 757, 0, 757, 13,
1981 757, 0, 477, 480, 483, 484, 464, 466, 467, 465,
1982 746, 393, 0, 685, 0, 702, 659, 687, 660, 660,
1983 696, 701, 757, 715, 660, 707, 660, 684, 660, 0,
1984 0, 0, 0, 432, 0, 420, 703, 400, 401, 401,
1985 311, 0, 694, 757, 401, 705, 401, 401, 425, 746,
1986 423, 426, 0, 520, 521, 510, 0, 516, 534, 530,
1987 524, 527, 735, 310, 746, 731, 732, 564, 379, 471,
1988 0, 0, 481, 385, 387, 389, 392, 0, 663, 0,
1989 665, 654, 0, 671, 0, 668, 673, 348, 433, 0,
1990 0, 610, 0, 404, 0, 406, 735, 310, 395, 0,
1991 413, 0, 410, 415, 0, 422, 518, 0, 0, 513,
1992 450, 472, 478, 479, 482, 0, 0, 660, 660, 660,
1993 660, 436, 435, 401, 401, 401, 401, 424, 522, 511,
1994 473, 390, 664, 0, 661, 666, 669, 405, 0, 402,
1995 408, 411, 0, 660, 401, 757, 662, 403, 475, 476,
2002 -1056, -1056, -1056, 953, -1056, 22, 743, -541, -1056, -51,
2003 -1056, 736, -1056, 115, -1056, -228, -321, -68, -1056, -1056,
2004 -1056, -32, -72, -1056, -1056, 2, -1056, -5, 735, 4,
2005 1113, -175, 26, -76, -1056, -452, -19, 2254, -362, 1108,
2006 -43, -14, -1056, -1056, 0, -1056, 3078, -1056, 1123, -1056,
2007 778, -1056, 709, 133, 601, -307, 121, -13, -1056, -283,
2008 -209, -4, -1056, -314, -25, -1056, -1056, -1056, -1056, -1056,
2009 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, 32,
2010 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
2011 -1056, -1056, -1056, -1056, -1056, 507, -1056, -296, 1267, -365,
2012 -1056, 127, -700, -1056, -1027, -1024, 200, 119, 363, 165,
2013 -1056, 454, -1056, -874, -1056, 40, 349, -1056, -1056, -1056,
2014 -1056, -1056, -1056, -1056, 495, -1056, -1056, -96, 722, -1056,
2015 -1056, -1056, 915, -1056, -1056, -1056, -1056, -698, -1056, 5,
2016 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -591,
2017 -1056, -1056, -1056, -1056, 361, -1056, -1056, -1056, -851, -1056,
2018 230, -1055, -711, -779, -1056, 168, -1056, 170, 171, -1056,
2019 -409, -1056, 366, -1056, -1056, 166, -1056, -1056, 246, 28,
2020 375, -1056, 1151, 666, 777, 842, -1056, 760, 1516, -1056,
2021 2119, 2191, -1056, -1056, -59, -1056, -1056, -229, -1056, -1056,
2022 -1056, -1056, -1056, -1056, -1056, 3, -1056, -1056, -1056, -1056,
2023 -27, 2015, 1563, 1159, 2490, 1953, -1056, -1056, 314, -1056,
2024 -390, 71, -701, 421, -1019, -433, 145, -971, 75, -404,
2025 248, 226, -1056, -1056, -214, -674, -320, -969, -991, 234,
2026 266, -1056, -616, -1056, 162, -816, -1056, -1056, -1056, 157,
2027 -396, -1056, -319, -1056, -1056, -86, -1056, -7, 23, 56,
2028 -593, -236, -66, -28, -2
2034 -1, 1, 2, 70, 71, 72, 243, 578, 901, 579,
2035 261, 262, 461, 263, 452, 74, 530, 75, 539, 689,
2036 885, 368, 370, 371, 839, 76, 77, 515, 249, 79,
2037 80, 264, 81, 82, 83, 481, 84, 216, 388, 389,
2038 200, 201, 202, 617, 567, 204, 86, 454, 359, 87,
2039 218, 269, 535, 568, 700, 440, 441, 231, 232, 220,
2040 426, 442, 523, 524, 88, 366, 268, 467, 638, 287,
2041 717, 588, 730, 728, 603, 605, 737, 738, 951, 251,
2042 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
2043 321, 324, 705, 828, 720, 833, 834, 674, 252, 581,
2044 713, 835, 836, 380, 1018, 1019, 1020, 1021, 1127, 1053,
2045 957, 867, 868, 958, 1139, 1140, 486, 487, 657, 755,
2046 864, 1047, 953, 1123, 325, 101, 102, 322, 512, 513,
2047 671, 767, 516, 517, 675, 769, 845, 721, 1099, 718,
2048 840, 906, 1011, 1201, 1220, 1232, 1240, 1091, 1092, 1070,
2049 792, 793, 892, 893, 794, 878, 881, 877, 976, 977,
2050 978, 1143, 979, 982, 983, 984, 985, 986, 987, 795,
2051 796, 882, 797, 798, 799, 706, 824, 898, 830, 103,
2052 104, 105, 106, 107, 108, 109, 498, 661, 110, 500,
2053 111, 112, 499, 501, 292, 295, 296, 492, 659, 658,
2054 756, 865, 955, 1048, 760, 113, 114, 293, 115, 116,
2055 117, 223, 224, 120, 225, 226, 599, 729, 856, 857,
2056 1106, 1027, 930, 443, 932, 933, 1117, 935, 936, 937,
2057 938, 962, 963, 939, 940, 941, 942, 943, 966, 967,
2058 944, 945, 946, 947, 948, 1030, 407, 604, 274, 444,
2059 228, 123, 642, 570, 608, 602, 411, 307, 436, 437,
2060 696, 472, 582, 375, 266
2068 124, 294, 260, 365, 583, 308, 412, 330, 203, 235,
2069 838, 205, 221, 221, 240, 410, 291, 536, 434, 841,
2070 215, 215, 372, 367, 367, 597, 125, 367, 203, 308,
2071 651, 205, 282, 747, 89, 474, 89, 629, 281, 476,
2072 301, 998, 1000, 309, 569, 1141, 577, 317, 222, 222,
2073 238, 270, 241, 272, 276, 1107, 405, 571, 282, 203,
2074 369, 754, 735, 373, 712, 320, 495, 497, 1115, 1135,
2075 302, 282, 282, 282, 681, 1164, 580, 629, -112, 265,
2076 1166, 1107, -107, 1049, 462, 89, 89, 1196, 374, 283,
2077 1066, 1199, 611, 612, 615, 827, 221, 3, 791, 203,
2078 222, 333, -113, 529, 215, 716, -116, 236, -643, 569,
2079 242, 577, 237, 999, 1001, 283, 361, 73, -116, 73,
2080 -84, 580, 626, 222, 222, 1035, 1036, 222, 379, 390,
2081 390, 847, 222, 315, 316, -112, 430, 219, 229, 643,
2082 -98, 852, 622, 1219, 362, 409, 256, 1057, 1058, 1059,
2083 622, -120, 1121, 525, 422, 234, 950, 305, 260, 306,
2084 356, 357, 358, 954, 318, 458, 643, 663, 446, 267,
2085 448, 237, 1120, 227, 227, 1141, 826, 654, -119, 1164,
2086 323, 1221, 827, -107, 1067, 872, 529, 529, 305, 851,
2087 306, 1135, 964, 456, 879, 308, -112, 485, 1115, -103,
2088 -118, 1107, -118, -107, 480, -731, -107, 667, 260, 909,
2089 -107, 319, 271, 275, 305, 1145, 306, 884, 1107, 427,
2090 664, 408, 676, -104, 297, 427, 221, -107, 221, -731,
2091 773, 445, 1095, 465, 215, 434, 215, 215, 733, 629,
2092 124, 89, 367, 367, 367, 367, 1122, 510, 511, 237,
2093 968, 1046, 479, -731, 464, 282, -116, 227, -116, 305,
2094 668, 306, 222, -523, 222, 222, 1071, 244, 222, 662,
2095 222, 662, -111, 643, 89, 317, 89, 260, 505, 506,
2096 507, 508, 703, 643, 724, 265, 973, 975, 711, 89,
2097 715, 89, 447, 592, 734, 298, 1171, 995, 299, -110,
2098 477, 975, 975, 367, 282, -113, 884, 308, 912, 1146,
2099 527, 1204, 283, -115, 1097, 949, 1098, 1188, 594, 584,
2100 466, 586, 522, -109, 468, -732, 595, 522, 520, 972,
2101 596, 504, -117, 531, -112, -732, -112, -120, -118, 585,
2102 -118, 89, 222, 222, 222, 222, 89, 222, 222, 300,
2103 622, 435, 622, 438, 265, -114, 1144, 73, 222, 237,
2104 89, 283, 445, 537, 889, 575, 587, 569, 215, 577,
2105 810, 812, 460, -119, 873, 874, 817, 819, 964, 326,
2106 778, 234, 319, 1068, -115, 327, 964, 227, 964, 227,
2107 449, 823, 318, 60, 1076, 884, 222, 233, 89, -644,
2108 450, 451, 89, 222, 89, 331, 480, 1082, 1083, -117,
2109 1109, 575, 890, 752, 744, 891, 531, 531, 222, -114,
2110 1093, 1116, 842, 876, 73, 846, -113, 445, 488, 509,
2111 575, 1144, 763, 215, -106, 1144, 1129, 763, 637, 853,
2112 427, 1162, 427, -113, 1136, -113, 537, 537, 315, 316,
2113 480, 688, 203, -108, 414, 205, 529, 282, 575, 338,
2114 339, 222, 961, 529, 529, 929, 629, 929, 926, 529,
2115 529, -635, -106, 488, 929, -120, -105, -120, 992, 993,
2116 910, 489, 445, 490, 491, 575, 1218, 1144, 215, 416,
2117 1022, 630, 927, -643, 236, 895, 632, 89, 576, 634,
2118 -635, 282, 636, 425, 1119, -634, 349, 350, 964, 418,
2119 964, -119, 488, -119, 283, 964, 222, 964, 646, 714,
2120 -112, 727, -115, 648, -115, 423, 493, 994, 490, 491,
2121 708, 618, 710, 1008, -634, 1238, 736, 431, 1010, 904,
2122 -103, 744, 905, -636, -108, 907, 965, -117, 424, -117,
2123 -746, 1208, 911, 237, 964, 914, 694, -114, 283, -114,
2124 -644, 1200, 929, 576, 701, 493, 1214, 490, 491, 433,
2125 751, 975, -636, -106, 753, 702, 690, 707, 453, 622,
2126 1179, 680, 623, 1022, 1101, -637, 595, -113, 529, 445,
2127 875, 576, 575, -106, 695, 215, -106, 415, 740, 445,
2128 -106, -639, 575, 741, 488, 215, 480, -104, -638, 702,
2129 -353, -640, 230, 89, -637, 89, 1015, 203, 576, 488,
2130 205, 427, -629, 222, -120, 282, -632, 649, 488, 1032,
2131 -639, 233, -105, 222, 606, 89, 222, -638, -353, -353,
2132 -640, 702, 333, 859, -111, -108, 432, 1033, 961, 695,
2133 -746, -629, 961, 1043, 237, -632, 961, 282, 961, 490,
2134 491, 367, 849, 607, 827, -108, 719, 988, -108, 1022,
2135 222, 1022, -108, -120, 490, 491, 848, 695, 988, 988,
2136 459, 494, 283, 490, 491, 445, 531, -353, 575, 814,
2137 762, 215, 361, 531, 531, 858, 821, 850, 463, 531,
2138 531, 522, 693, 825, 831, 765, 837, -119, 837, 1112,
2139 699, 89, -83, 1077, 283, 89, 537, 800, 469, 222,
2140 362, 363, 475, 537, 537, 576, 1159, -110, 459, 537,
2141 537, 1078, 965, -105, 470, 576, 1133, 78, 203, 78,
2142 965, 471, 965, 415, 699, 980, 478, 695, 427, 488,
2143 496, 78, 78, -105, 748, -119, -105, 695, -728, 89,
2144 -105, 222, 89, 482, 921, 869, 367, 869, 643, 364,
2145 -120, 502, 1022, 1022, 514, 693, 699, 900, 961, 1154,
2146 961, -115, 902, 488, 913, 961, 473, 961, 78, 78,
2147 750, 361, 854, 471, 772, 925, 488, 988, 774, 981,
2148 -629, 695, 903, 78, 490, 491, 749, 863, 361, 528,
2149 695, 800, 800, 861, 589, 1111, 971, -310, 531, 362,
2150 428, 576, 899, 1177, 961, 503, 78, 78, -629, -629,
2151 78, 832, 827, -117, 273, 78, 362, 457, 490, 491,
2152 -114, 1148, 1111, 697, 593, -310, -310, 698, 537, 493,
2153 1009, 490, 491, -729, 1148, 816, 1194, 598, 361, 1014,
2154 89, 988, 965, 237, 965, 89, 222, 631, 429, 965,
2155 -115, 965, 282, 640, -117, -728, 673, -629, 1160, 1161,
2156 -728, 89, -114, 1211, 1044, 429, 362, 483, 89, 970,
2157 488, 333, 887, 888, -310, -632, 633, -732, 635, 89,
2158 -98, 641, 89, 670, 679, 800, 800, 915, 965, 916,
2159 917, 918, 919, 695, 800, 800, 800, 650, 1087, -283,
2160 800, 800, 1073, -632, -632, 678, -641, 682, 683, 1004,
2161 704, 697, 684, 89, 709, 484, 282, 1031, 1079, 1031,
2162 1031, 960, 89, 660, 78, 490, 491, 996, 354, 355,
2163 356, 357, 358, -642, -641, -641, 1016, 1088, -115, 1090,
2164 716, 1031, 1031, 1031, 719, 78, 768, 78, 78, 698,
2165 -729, 78, -632, 78, 816, -729, -284, 78, -106, 78,
2166 970, -642, -642, 764, 809, 417, 1023, 1024, 419, 420,
2167 421, -301, 78, 1055, 78, 766, -117, 1124, 815, 695,
2168 934, -114, 934, -641, 361, 800, 827, 831, 361, 934,
2169 855, 959, 837, 800, 862, 1038, -108, 1041, 866, -301,
2170 -301, -105, -285, 695, 695, 880, 282, 883, 969, 1065,
2171 -642, -311, 362, 590, 884, 886, 362, 600, 897, 800,
2172 89, -286, 89, 1025, 78, 78, 78, 78, 78, 78,
2173 78, 78, 781, 1026, 1080, 1081, -735, 1029, 488, -311,
2174 -311, 78, 1034, 78, 801, 1037, 78, 1039, -301, 970,
2175 1040, 1180, 1042, 1050, 361, 1051, 1103, 89, 1052, 1056,
2176 89, 591, 1064, 1126, 445, 601, 707, 575, 837, 1060,
2177 215, 1062, 367, 367, 1072, 800, 1074, 934, -735, 78,
2178 1075, 78, 362, 686, 521, 78, 78, 78, -311, 534,
2179 1031, 665, 1114, 490, 491, 1118, 1084, 361, 222, 826,
2180 1102, 78, 1104, 614, 616, 1125, -735, -735, 1202, 1203,
2181 1130, 1031, 1061, 1063, 1142, 1134, 1147, 1137, 361, 1167,
2182 614, 616, 1169, 1033, 1172, 362, 1085, 1174, 1178, 78,
2183 78, 687, 1181, 89, 89, 1182, 1163, 920, 801, 801,
2184 1184, -731, 1195, 1189, 78, 1191, 362, 1131, 644, 1197,
2185 800, 934, 1198, -735, 800, -735, 921, 695, -731, 1168,
2186 1170, 1235, 934, 1205, 1206, 1173, 1212, 1175, -732, 1176,
2187 800, 1113, 222, 222, 1086, 455, 1113, 959, 1223, 1228,
2188 78, 647, 619, 621, 645, 959, 394, 925, 926, 377,
2189 360, 273, 739, 829, 969, 601, 1100, 1158, 1113, 78,
2190 576, 1165, 969, 870, 969, 800, 800, 757, 758, 956,
2191 759, 989, 927, 837, 1217, 860, 672, 46, 47, 518,
2192 1239, 1094, 1207, 1149, 1209, 1150, 1151, 991, 621, 1210,
2193 990, 273, 801, 801, 1157, 1089, 413, 1213, 406, 1215,
2194 666, 801, 801, 801, 89, 1045, 1216, 801, 801, 100,
2195 915, 100, 916, 917, 918, 919, 931, 1110, 1222, 1224,
2196 1225, 1226, 1132, 100, 100, 915, 1128, 916, 917, 918,
2197 919, 920, 1108, 1183, 1185, 0, 0, 677, 1233, 1190,
2198 0, 1192, 1193, 1234, 1236, 310, 311, 312, 313, 314,
2199 921, 0, 934, 0, 0, 0, 78, 0, 78, 1016,
2200 100, 100, 0, 0, 922, 1017, 78, 959, 915, 0,
2201 916, 917, 918, 919, 923, 100, 78, 0, 78, 78,
2202 924, 925, 926, 0, 969, 1138, 969, 916, 917, 918,
2203 919, 969, 801, 969, 0, 802, 0, 0, 100, 100,
2204 801, 0, 100, 0, 0, 0, 927, 100, 0, 928,
2205 0, 0, 0, 78, 41, 42, 43, 44, 1227, 1229,
2206 1230, 1231, 0, 0, 0, 0, 801, 333, 0, 0,
2207 969, 0, 0, 0, 0, 0, 742, 0, 743, 1237,
2208 811, 813, 0, 0, 346, 347, 818, 820, 0, 0,
2209 0, 621, 333, 273, 78, 0, 0, 0, 78, 78,
2210 0, 0, 78, 0, 0, 0, 78, 78, 0, 346,
2211 347, 0, 78, 78, 0, 915, 0, 916, 917, 918,
2212 919, 920, 801, 353, 354, 355, 356, 357, 358, 802,
2213 802, 0, 0, 0, 811, 813, 771, 818, 820, 0,
2214 921, 0, 78, 0, 78, 78, 803, 0, 0, 354,
2215 355, 356, 357, 358, 0, 0, 100, 0, 0, 0,
2216 0, 0, 0, 822, 923, 0, 0, 0, 0, 0,
2217 924, 925, 926, 0, 0, 0, 0, 100, 844, 100,
2218 100, 0, 0, 100, 0, 100, 0, 0, 0, 100,
2219 0, 100, 0, 0, 0, 0, 927, 801, 0, 928,
2220 0, 801, 0, 0, 100, 896, 100, 0, 0, 0,
2221 0, 804, 0, 0, 0, 0, 237, 801, 0, 0,
2222 0, 0, 0, 802, 802, 0, 0, 0, 871, 0,
2223 0, 78, 802, 802, 802, 0, 0, 0, 802, 802,
2224 803, 803, 0, 78, 0, 119, 0, 119, 78, 78,
2225 896, 0, 801, 801, 0, 0, 100, 100, 100, 100,
2226 100, 100, 100, 100, 78, 0, 0, 0, 0, 0,
2227 0, 78, 0, 100, 0, 100, 0, 0, 100, 0,
2228 0, 0, 78, 0, 0, 78, 0, 0, 0, 0,
2229 0, 0, 0, 0, 0, 0, 119, 119, 0, 0,
2230 285, 908, 0, 0, 0, 804, 804, 0, 0, 0,
2231 0, 100, 0, 100, 0, 0, 78, 100, 100, 100,
2232 273, 0, 0, 802, 0, 78, 285, 0, 0, 0,
2233 0, 802, 0, 100, 803, 803, 0, 0, 0, 382,
2234 392, 392, 392, 803, 803, 803, 0, 0, 0, 803,
2235 803, 0, 0, 0, 0, 0, 0, 802, 0, 0,
2236 0, 100, 100, 0, 0, 0, 0, 1013, 0, 0,
2237 0, 0, 0, 0, 0, 0, 100, 0, 0, 0,
2238 915, 0, 916, 917, 918, 919, 920, 0, 0, 0,
2239 0, 0, 0, 0, 0, 1028, 0, 0, 0, 804,
2240 804, 0, 0, 0, 0, 921, 0, 0, 804, 804,
2241 804, 0, 100, 802, 804, 804, 0, 0, 0, 0,
2242 0, 0, 0, 78, 0, 78, 0, 0, 0, 923,
2243 0, 100, 0, 0, 803, 924, 925, 926, 0, 0,
2244 0, 915, 803, 916, 917, 918, 919, 920, 0, 0,
2245 0, 0, 119, 0, 0, 0, 0, 332, 0, 0,
2246 78, 927, 0, 78, 928, 0, 921, 0, 803, 0,
2247 1096, 0, 0, 0, 0, 0, 952, 0, 0, 0,
2248 0, 0, 0, 1105, 0, 119, 0, 119, 802, 0,
2249 923, 0, 802, 0, 0, 0, 924, 925, 926, 804,
2250 119, 78, 119, 0, 0, 0, 0, 804, 802, 333,
2251 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
2252 344, 345, 927, 285, 803, 928, 346, 347, 100, 0,
2253 100, 0, 0, 804, 0, 0, 78, 78, 100, 0,
2254 0, 0, 0, 802, 802, 0, 0, 0, 100, 0,
2255 100, 100, 119, 0, 0, 0, 0, 119, 0, 348,
2256 0, 349, 350, 351, 352, 353, 354, 355, 356, 357,
2257 358, 119, 285, 0, 0, 78, 78, 0, 0, 0,
2258 0, 0, 0, 0, 0, 100, 0, 0, 0, 804,
2259 0, 0, 915, 0, 916, 917, 918, 919, 920, 803,
2260 0, 0, 0, 803, 0, 0, 0, 0, 0, 119,
2261 0, 0, 0, 119, 0, 119, 0, 921, 0, 803,
2262 0, 0, 0, 0, 0, 0, 100, 0, 0, 0,
2263 100, 100, 0, 0, 100, 122, 0, 122, 100, 100,
2264 0, 923, 0, 0, 100, 100, 0, 78, 925, 926,
2265 0, 0, 0, 0, 803, 803, 0, 0, 0, 0,
2266 0, 0, 0, 0, 804, 0, 0, 0, 804, 0,
2267 0, 0, 0, 927, 100, 0, 100, 100, 333, 0,
2268 0, 0, 0, 0, 804, 0, 122, 122, 0, 0,
2269 286, 0, 0, 0, 0, 346, 347, 118, 0, 118,
2270 0, 0, 0, 0, 0, 0, 0, 0, 119, 0,
2271 0, 0, 0, 0, 0, 0, 286, 0, 0, 804,
2272 804, 0, 0, 0, 0, 285, 0, 0, 0, 383,
2273 393, 393, 351, 352, 353, 354, 355, 356, 357, 358,
2274 0, 0, 0, 0, 0, 0, 0, 0, 118, 118,
2275 0, 0, 284, 0, 0, 0, 0, 0, 0, 0,
2276 0, 0, 0, 100, 0, 0, 0, 0, 0, 285,
2277 0, 0, 0, 0, 0, 100, 0, 0, 284, 0,
2278 100, 100, 23, 24, 25, 26, 0, 0, 0, 0,
2279 0, 381, 391, 391, 391, 0, 100, 0, 32, 33,
2280 34, 781, 0, 100, 0, 782, 0, 0, 41, 42,
2281 43, 44, 45, 0, 100, 0, 0, 100, 0, 0,
2282 0, 0, 0, 0, 119, 0, 119, 0, 0, 0,
2283 0, 0, 0, 0, 0, 0, 0, 0, 0, 783,
2284 784, 0, 122, 0, 0, 0, 119, 785, 100, 0,
2285 786, 0, 0, 787, 788, 0, 974, 100, 0, 789,
2286 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
2287 0, 0, 0, 0, 0, 122, 0, 122, 0, 0,
2288 0, 790, 0, 0, 0, 805, 0, 0, 279, 0,
2289 122, 0, 122, 285, 0, 0, 0, 0, 0, 0,
2290 0, 0, 0, 0, 118, 0, 0, 0, 0, 0,
2291 0, 0, 0, 286, 0, 0, 0, 0, 0, 0,
2292 0, 0, 119, 0, 0, 285, 119, 0, 0, 0,
2293 0, 0, 808, 0, 0, 0, 85, 118, 85, 118,
2294 0, 0, 122, 0, 0, 0, 0, 122, 0, 0,
2295 0, 0, 118, 0, 118, 100, 0, 100, 0, 0,
2296 0, 122, 286, 0, 538, 0, 0, 0, 0, 0,
2297 119, 0, 0, 119, 0, 284, 0, 0, 0, 805,
2298 805, 0, 0, 0, 0, 0, 0, 85, 85, 0,
2299 0, 0, 100, 0, 0, 100, 0, 0, 0, 122,
2300 0, 0, 0, 122, 118, 122, 0, 0, 0, 118,
2301 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2302 0, 0, 0, 118, 284, 0, 808, 808, 0, 0,
2303 378, 0, 0, 100, 0, 0, 0, 0, 0, 0,
2304 0, 0, 0, 0, 0, 0, 0, 538, 538, 0,
2305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2306 0, 118, 0, 0, 0, 118, 0, 118, 100, 100,
2307 0, 119, 0, 805, 805, 0, 119, 0, 0, 0,
2308 0, 0, 805, 805, 805, 0, 0, 0, 805, 805,
2309 0, 0, 119, 0, 0, 0, 0, 0, 122, 119,
2310 0, 0, 0, 0, 0, 0, 0, 100, 100, 0,
2311 119, 0, 0, 119, 0, 286, 0, 0, 0, 0,
2312 808, 808, 0, 0, 0, 0, 0, 0, 0, 808,
2313 808, 808, 0, 0, 0, 808, 808, 0, 0, 0,
2314 1006, 0, 0, 85, 119, 0, 0, 0, 0, 0,
2315 0, 0, 0, 119, 0, 0, 0, 0, 0, 286,
2316 118, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2317 0, 0, 121, 805, 121, 0, 85, 284, 85, 100,
2318 0, 805, 0, 0, 0, 0, 0, 0, 0, 0,
2319 0, 85, 0, 85, 0, 0, 0, 0, 0, 0,
2320 0, 0, 0, 0, 392, 0, 0, 805, 0, 0,
2321 0, 0, 0, 0, 122, 0, 122, 0, 0, 0,
2322 808, 284, 0, 121, 121, 0, 0, 0, 808, 0,
2323 0, 0, 0, 0, 0, 0, 122, 0, 0, 0,
2324 0, 0, 0, 85, 0, 0, 0, 0, 85, 0,
2325 0, 119, 0, 119, 808, 0, 0, 0, 0, 0,
2326 0, 0, 85, 805, 0, 532, 0, 0, 0, 0,
2327 0, 0, 0, 0, 0, 0, 118, 0, 118, 0,
2328 0, 0, 0, 286, 0, 0, 0, 0, 119, 0,
2329 0, 119, 761, 0, 392, 0, 0, 0, 118, 0,
2330 85, 0, 0, 0, 85, 0, 85, 0, 0, 0,
2331 808, 0, 122, 0, 0, 286, 122, 538, 0, 0,
2332 0, 0, 0, 0, 538, 538, 0, 0, 0, 0,
2333 538, 538, 0, 0, 0, 0, 0, 0, 805, 0,
2334 0, 0, 805, 0, 0, 284, 0, 0, 532, 532,
2335 0, 0, 0, 0, 23, 24, 25, 26, 805, 0,
2336 122, 0, 0, 122, 119, 119, 0, 0, 0, 0,
2337 32, 33, 34, 0, 118, 0, 0, 284, 118, 121,
2338 41, 42, 43, 44, 45, 808, 0, 0, 0, 808,
2339 0, 0, 0, 805, 805, 0, 0, 0, 0, 85,
2340 0, 0, 0, 0, 0, 808, 0, 0, 0, 0,
2341 0, 0, 121, 0, 121, 0, 0, 0, 0, 0,
2342 0, 0, 118, 0, 0, 118, 0, 121, 0, 121,
2343 0, 789, 59, 60, 61, 62, 63, 64, 65, 66,
2344 808, 808, 0, 0, 0, 0, 0, 0, 0, 538,
2345 0, 0, 0, 333, -758, -758, -758, -758, 338, 339,
2346 279, 122, -758, -758, 0, 0, 122, 0, 0, 0,
2347 346, 347, 0, 0, 0, 119, 0, 0, 0, 121,
2348 0, 0, 122, 0, 121, 0, 0, 0, 806, 122,
2349 0, 0, 0, 0, 0, 0, 0, 0, 121, 0,
2350 122, 121, 0, 122, 0, 349, 350, 351, 352, 353,
2351 354, 355, 356, 357, 358, 85, 0, 85, 0, 0,
2352 0, 0, 0, 118, 0, 0, 0, 0, 118, 0,
2353 1007, 0, 0, 0, 122, 0, 121, 85, 0, 0,
2354 121, 0, 121, 122, 118, 0, 0, 0, 0, 0,
2355 0, 118, 0, 0, 0, 0, 0, 0, 0, 0,
2356 807, 0, 118, 0, 0, 118, 0, 0, 0, 0,
2357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2358 0, 0, 806, 806, 121, 121, 0, 0, 0, 0,
2359 0, 0, 1005, 0, 393, 0, 118, 0, 0, 0,
2360 0, 0, 0, 0, 0, 118, 0, 0, 0, 0,
2361 0, 0, 0, 85, 0, 0, 0, 85, 532, 0,
2362 0, 0, 0, 0, 0, 532, 532, 0, 0, 0,
2363 0, 532, 532, 0, 0, 121, 0, 0, 0, 0,
2364 0, 122, 0, 122, 0, 0, 0, 0, 0, 0,
2365 0, 0, 0, 0, 807, 807, 391, 0, 0, 0,
2366 0, 85, 0, 0, 85, 333, 334, 335, 336, 337,
2367 338, 339, 340, 0, 342, 343, 806, 806, 122, 0,
2368 0, 122, 346, 347, 393, 806, 806, 806, 0, 0,
2369 0, 806, 806, 0, 0, 0, 0, 0, 0, 0,
2370 0, 0, 0, 118, 0, 118, 0, 0, 0, 0,
2371 0, 0, 0, 0, 0, 0, 0, 349, 350, 351,
2372 352, 353, 354, 355, 356, 357, 358, 0, 0, 0,
2373 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2374 118, 0, 0, 118, 0, 0, 391, 0, 807, 807,
2375 532, 121, 0, 121, 122, 122, 0, 807, 807, 807,
2376 0, 0, 85, 807, 807, 0, 0, 85, 0, 0,
2377 0, 0, 0, 121, 217, 217, 806, 0, 0, 0,
2378 0, 0, 0, 85, 806, 0, 0, 0, 0, 0,
2379 85, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2380 0, 85, 0, 0, 85, 0, 250, 253, 254, 255,
2381 806, 0, 0, 217, 217, 0, 118, 118, 0, 0,
2382 0, 0, 0, 0, 0, 0, 303, 304, 0, 0,
2383 0, 1003, 0, 0, 0, 85, 0, 0, 0, 0,
2384 0, 0, 0, 0, 85, 0, 0, 0, 807, 121,
2385 0, 0, 0, 121, 121, 0, 807, 0, 217, 0,
2386 0, 121, 121, 0, 0, 122, 806, 121, 121, 0,
2387 0, 0, 0, 0, 0, 0, 0, 0, 0, -757,
2388 0, 0, 807, 0, 0, 0, 0, -757, -757, -757,
2389 0, 0, -757, -757, -757, 0, -757, 121, 0, 0,
2390 121, 0, 0, 0, -757, -757, -757, 0, 0, 0,
2391 0, 0, 0, 0, 0, 0, -757, -757, 0, -757,
2392 -757, -757, -757, -757, 0, 0, 0, 118, 0, 0,
2393 0, 0, 0, 0, 0, 0, 0, 0, 807, 0,
2394 0, 806, 85, 0, 85, 806, 0, -757, 0, 0,
2395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2396 0, 806, 0, 0, 0, 217, 0, 0, 217, 217,
2397 217, 0, 303, 0, 0, -757, -757, 0, 0, 85,
2398 0, 0, 85, 0, 0, 0, 121, 0, 217, 0,
2399 217, 217, 0, 0, 0, 0, 806, 806, 121, -757,
2400 0, 0, 0, 121, 0, 0, 0, 0, 0, 0,
2401 0, 0, 0, 807, 0, 0, 0, 807, 0, 121,
2402 0, 0, -757, -757, 0, 0, 121, 233, -757, 0,
2403 -757, 0, -757, 807, 0, 0, 0, 121, 0, 0,
2404 121, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2405 0, 0, 0, 0, 0, 85, 85, 0, 0, 0,
2406 0, 0, 0, 0, 0, 0, 0, 0, 807, 807,
2407 0, 121, 0, 0, 0, 0, 0, 0, 0, 0,
2408 121, 0, 0, 0, 217, 0, 0, 0, 0, 533,
2409 0, 540, 541, 542, 543, 544, 0, 0, 545, 546,
2410 547, 548, 549, 550, 551, 552, 553, 0, 0, 554,
2411 555, 556, 557, 558, 559, 560, 561, 562, 563, 0,
2412 0, 0, 217, 0, 0, 0, 0, 0, 0, 0,
2413 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2414 0, 0, 0, 0, 0, 0, 333, 334, 335, 336,
2415 337, 338, 339, 340, 341, 342, 343, 344, 345, 0,
2416 0, 0, 0, 346, 347, 0, 85, 0, 0, 0,
2417 0, 0, 613, 613, 0, 0, 0, 0, 121, 0,
2418 121, 613, 217, 217, 0, 0, 0, 217, 0, 613,
2419 613, 217, 0, 0, 0, 0, 348, 255, 349, 350,
2420 351, 352, 353, 354, 355, 356, 357, 358, 0, 0,
2421 0, 0, 639, 0, 0, 121, 0, 613, 121, 0,
2422 0, 0, 237, 0, 0, 0, 0, 0, 217, 0,
2423 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
2424 0, 0, 217, 0, 0, 0, 0, 0, 0, 0,
2425 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2426 669, 333, 334, 335, 336, 337, 338, 339, 340, 341,
2427 342, 343, -758, -758, 0, 0, 0, 217, 346, 347,
2428 0, 0, 0, 0, 0, 0, -735, 0, 0, 0,
2429 0, 121, 121, 0, -735, -735, -735, 0, 0, 0,
2430 -735, -735, 0, -735, 0, 0, 0, 0, 0, 0,
2431 0, -735, -735, 349, 350, 351, 352, 353, 354, 355,
2432 356, 357, 358, -735, -735, 0, -735, -735, -735, -735,
2433 -735, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2434 0, 0, 0, 0, 0, 0, 0, 0, 0, 217,
2435 0, 0, 0, 0, -735, 0, 0, 0, 0, 217,
2436 0, 0, 0, -735, -735, -735, -735, -735, -735, -735,
2437 -735, -735, -735, -735, -735, -735, 217, 0, 217, 0,
2438 -735, -735, -735, -735, 0, 691, 0, 0, 0, 0,
2439 0, 217, 0, 217, 0, 0, 0, 0, 0, 0,
2440 0, 0, 121, 0, 0, 0, -735, 0, 0, 0,
2441 0, 0, -116, -735, 0, -735, -735, -735, -735, -735,
2442 -735, -735, -735, -735, -735, 0, 0, 0, 0, -735,
2443 -735, -735, -107, 0, 0, -735, 217, -735, 0, -735,
2444 0, 0, 613, 775, 0, 217, 0, 0, 0, 613,
2445 613, 0, 0, 0, 0, 613, 613, 0, -629, 0,
2446 0, 0, 0, 217, 0, 0, -629, -629, -629, 0,
2447 0, -629, -629, -629, 0, -629, 0, 0, 217, 0,
2448 0, 0, 0, -629, 0, -629, -629, -629, 0, 0,
2449 0, 0, 0, 0, 0, -629, -629, 0, -629, -629,
2450 -629, -629, -629, 613, 613, 0, 613, 613, 0, 0,
2451 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2452 0, 0, 0, 0, 0, 0, -629, 0, 217, 0,
2453 0, 0, 0, 0, 0, -629, -629, -629, -629, -629,
2454 -629, -629, -629, -629, -629, -629, -629, -629, 0, 0,
2455 0, 0, -629, -629, -629, -629, 0, -629, -629, 0,
2456 0, 0, 0, 0, -629, 0, 0, 894, 0, 0,
2457 0, 0, 0, 0, 613, 0, 0, 0, -629, 0,
2458 0, -629, 0, 0, -629, -629, -629, -629, -629, -629,
2459 -629, -629, -629, -629, -629, -629, -629, 0, 0, 0,
2460 0, 217, -629, -629, -629, 0, 0, -629, -629, -629,
2461 0, -629, 0, 0, 0, 0, 0, 0, 0, 613,
2462 217, 0, 0, -757, 4, 0, 5, 6, 7, 8,
2463 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
2464 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2465 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2466 0, 0, 27, 0, 0, 0, 0, 217, 28, 29,
2467 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2468 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2469 0, 0, 0, 0, 0, 217, 0, 0, 48, 49,
2470 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2471 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2472 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2473 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2474 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2475 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2476 0, 0, 67, 68, 69, 0, 0, 0, 0, 0,
2477 217, -735, 0, 0, -757, 0, -757, 0, 0, -735,
2478 -735, -735, 0, 217, -735, -735, -735, 0, -735, 0,
2479 0, 0, 0, 0, 0, 0, -735, -735, -735, -735,
2480 -735, 0, 0, 0, 0, 0, 0, 0, -735, -735,
2481 0, -735, -735, -735, -735, -735, 0, 0, 0, 0,
2482 0, 0, 0, 0, 0, 0, 0, 0, 333, 334,
2483 335, 336, 337, 338, 339, 0, 0, 342, 343, -735,
2484 0, 0, 0, 0, 217, 346, 347, 0, -735, -735,
2485 -735, -735, -735, -735, -735, -735, -735, -735, -735, -735,
2486 -735, 0, 0, 0, 0, -735, -735, -735, -735, 0,
2487 745, -735, 0, 0, 0, 0, 0, -735, 0, 0,
2488 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
2489 0, -735, 0, 0, -735, 0, 0, -116, -735, -735,
2490 -735, -735, -735, -735, -735, -735, -735, -735, -735, -735,
2491 0, 0, 0, 0, -735, -735, -735, -735, -632, 0,
2492 -735, -735, -735, 0, -735, 0, -632, -632, -632, 0,
2493 0, -632, -632, -632, 0, -632, 0, 0, 0, 0,
2494 685, 0, 0, -632, 0, -632, -632, -632, 0, 0,
2495 0, 0, 0, 0, 0, -632, -632, 0, -632, -632,
2496 -632, -632, -632, 0, 0, 0, 0, 0, 0, 0,
2497 0, 0, 0, 333, 334, 335, 336, 337, 338, 339,
2498 340, 341, 342, 343, 344, 345, -632, 0, 0, 0,
2499 346, 347, 0, 0, 0, -632, -632, -632, -632, -632,
2500 -632, -632, -632, -632, -632, -632, -632, -632, 0, 0,
2501 0, 0, -632, -632, -632, -632, 0, -632, -632, 0,
2502 0, 0, 0, 348, -632, 349, 350, 351, 352, 353,
2503 354, 355, 356, 357, 358, 0, 0, 0, -632, 0,
2504 0, -632, -257, 0, -632, -632, -632, -632, -632, -632,
2505 -632, -632, -632, -632, -632, -632, -632, 0, 0, 0,
2506 0, 0, -632, -632, -632, -736, 0, -632, -632, -632,
2507 0, -632, 0, -736, -736, -736, 0, 0, -736, -736,
2508 -736, 0, -736, 0, 0, 0, 0, 685, 0, 0,
2509 -736, -736, -736, -736, -736, 0, 0, 0, 0, 0,
2510 0, 0, -736, -736, 0, -736, -736, -736, -736, -736,
2511 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2512 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
2513 343, 344, 345, -736, 0, 0, 0, 346, 347, 0,
2514 0, 0, -736, -736, -736, -736, -736, -736, -736, -736,
2515 -736, -736, -736, -736, -736, 0, 0, 0, 0, -736,
2516 -736, -736, -736, 0, 0, -736, 0, 0, 0, 0,
2517 348, -736, 349, 350, 351, 352, 353, 354, 355, 356,
2518 357, 358, 0, 0, 0, -736, 0, 0, -736, 0,
2519 0, 0, -736, -736, -736, -736, -736, -736, -736, -736,
2520 -736, -736, -736, -736, 0, 0, 0, 0, -736, -736,
2521 -736, -736, -737, 0, -736, -736, -736, 0, -736, 0,
2522 -737, -737, -737, 0, 0, -737, -737, -737, 0, -737,
2523 0, 0, 0, 0, 0, 0, 0, -737, -737, -737,
2524 -737, -737, 0, 0, 0, 0, 0, 0, 0, -737,
2525 -737, 0, -737, -737, -737, -737, -737, 0, 0, 0,
2526 0, 0, 0, 0, 0, 0, 0, 333, 334, 335,
2527 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
2528 -737, 0, 0, 0, 346, 347, 0, 0, 0, -737,
2529 -737, -737, -737, -737, -737, -737, -737, -737, -737, -737,
2530 -737, -737, 0, 0, 0, 0, -737, -737, -737, -737,
2531 0, 0, -737, 0, 0, 0, 0, 348, -737, 349,
2532 350, 351, 352, 353, 354, 355, 356, 357, 358, 0,
2533 0, 0, -737, 0, 0, -737, 0, 0, 0, -737,
2534 -737, -737, -737, -737, -737, -737, -737, -737, -737, -737,
2535 -737, 0, 0, 0, 0, -737, -737, -737, -737, -310,
2536 0, -737, -737, -737, 0, -737, 0, -310, -310, -310,
2537 0, 0, -310, -310, -310, 0, -310, 0, 0, 0,
2538 0, 0, 0, 0, -310, 0, -310, -310, -310, 0,
2539 0, 0, 0, 0, 0, 0, -310, -310, 0, -310,
2540 -310, -310, -310, -310, 0, 0, 0, 0, 0, 0,
2541 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2542 0, 0, 0, 0, 0, 0, 0, -310, 0, 0,
2543 0, 0, 0, 0, 0, 0, -310, -310, -310, -310,
2544 -310, -310, -310, -310, -310, -310, -310, -310, -310, 0,
2545 0, 0, 0, -310, -310, -310, -310, 0, 746, -310,
2546 0, 0, 0, 0, 0, -310, 0, 0, 0, 0,
2547 0, 0, 0, 0, 0, 0, 0, 0, 0, -310,
2548 0, 0, -310, 0, 0, -118, -310, -310, -310, -310,
2549 -310, -310, -310, -310, -310, -310, -310, -310, 0, 0,
2550 0, 0, 0, -310, -310, -310, -449, 0, -310, -310,
2551 -310, 0, -310, 0, -449, -449, -449, 0, 0, -449,
2552 -449, -449, 0, -449, 0, 0, 0, 0, 0, 0,
2553 0, -449, -449, -449, -449, 0, 0, 0, 0, 0,
2554 0, 0, 0, -449, -449, 0, -449, -449, -449, -449,
2555 -449, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2557 0, 0, 0, 0, -449, 0, 0, 0, 0, 0,
2558 0, 0, 0, -449, -449, -449, -449, -449, -449, -449,
2559 -449, -449, -449, -449, -449, -449, 0, 0, 0, 0,
2560 -449, -449, -449, -449, 0, 0, -449, 0, 0, 0,
2561 0, 0, -449, 0, 0, 0, 0, 0, 0, 0,
2562 0, 0, 0, 0, 0, 0, -449, 0, 0, 0,
2563 0, 0, 0, -449, 0, -449, -449, -449, -449, -449,
2564 -449, -449, -449, -449, -449, 0, 0, 0, 0, -449,
2565 -449, -449, -449, -302, 233, -449, -449, -449, 0, -449,
2566 0, -302, -302, -302, 0, 0, -302, -302, -302, 0,
2567 -302, 0, 0, 0, 0, 0, 0, 0, -302, 0,
2568 -302, -302, -302, 0, 0, 0, 0, 0, 0, 0,
2569 -302, -302, 0, -302, -302, -302, -302, -302, 0, 0,
2570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2572 0, -302, 0, 0, 0, 0, 0, 0, 0, 0,
2573 -302, -302, -302, -302, -302, -302, -302, -302, -302, -302,
2574 -302, -302, -302, 0, 0, 0, 0, -302, -302, -302,
2575 -302, 0, 0, -302, 0, 0, 0, 0, 0, -302,
2576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2577 0, 0, 0, -302, 0, 0, -302, 0, 0, 0,
2578 -302, -302, -302, -302, -302, -302, -302, -302, -302, -302,
2579 -302, -302, 0, 0, 0, 0, 0, -302, -302, -302,
2580 -757, 0, -302, -302, -302, 0, -302, 0, -757, -757,
2581 -757, 0, 0, -757, -757, -757, 0, -757, 0, 0,
2582 0, 0, 0, 0, 0, -757, -757, -757, -757, 0,
2583 0, 0, 0, 0, 0, 0, 0, -757, -757, 0,
2584 -757, -757, -757, -757, -757, 0, 0, 0, 0, 0,
2585 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2586 0, 0, 0, 0, 0, 0, 0, 0, -757, 0,
2587 0, 0, 0, 0, 0, 0, 0, -757, -757, -757,
2588 -757, -757, -757, -757, -757, -757, -757, -757, -757, -757,
2589 0, 0, 0, 0, -757, -757, -757, -757, 0, 0,
2590 -757, 0, 0, 0, 0, 0, -757, 0, 0, 0,
2591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2592 -757, 0, 0, 0, 0, 0, 0, -757, 0, -757,
2593 -757, -757, -757, -757, -757, -757, -757, -757, -757, 0,
2594 0, 0, 0, -757, -757, -757, -757, -317, 233, -757,
2595 -757, -757, 0, -757, 0, -317, -317, -317, 0, 0,
2596 -317, -317, -317, 0, -317, 0, 0, 0, 0, 0,
2597 0, 0, -317, 0, -317, -317, 0, 0, 0, 0,
2598 0, 0, 0, 0, -317, -317, 0, -317, -317, -317,
2599 -317, -317, 0, 0, 0, 0, 0, 0, 0, 0,
2600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2601 0, 0, 0, 0, 0, -317, 0, 0, 0, 0,
2602 0, 0, 0, 0, -317, -317, -317, -317, -317, -317,
2603 -317, -317, -317, -317, -317, -317, -317, 0, 0, 0,
2604 0, -317, -317, -317, -317, 0, 0, -317, 0, 0,
2605 0, 0, 0, -317, 0, 0, 0, 0, 0, 0,
2606 0, 0, 0, 0, 0, 0, 0, -317, 0, 0,
2607 0, 0, 0, 0, -317, 0, -317, -317, -317, -317,
2608 -317, -317, -317, -317, -317, -317, 0, 0, 0, 0,
2609 0, -317, -317, -317, -735, 230, -317, -317, -317, 0,
2610 -317, 0, -735, -735, -735, 0, 0, 0, -735, -735,
2611 0, -735, 0, 0, 0, 0, 0, 0, 0, -735,
2612 -735, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2613 0, -735, -735, 0, -735, -735, -735, -735, -735, 0,
2614 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2615 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2616 0, 0, -735, 0, 0, 0, 0, 0, 0, 0,
2617 0, -735, -735, -735, -735, -735, -735, -735, -735, -735,
2618 -735, -735, -735, -735, 0, 0, 0, 0, -735, -735,
2619 -735, -735, 0, 691, 0, 0, 0, 0, 0, 0,
2620 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2621 0, 0, 0, 0, -735, 0, 0, 0, 0, 0,
2622 -116, -735, 0, -735, -735, -735, -735, -735, -735, -735,
2623 -735, -735, -735, 0, 0, 0, 0, -735, -735, -735,
2624 -735, -310, 0, -735, 0, -735, 0, -735, 0, -310,
2625 -310, -310, 0, 0, 0, -310, -310, 0, -310, 0,
2626 0, 0, 0, 0, 0, 0, -310, 0, 0, 0,
2627 0, 0, 0, 0, 0, 0, 0, 0, -310, -310,
2628 0, -310, -310, -310, -310, -310, 0, 0, 0, 0,
2629 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2630 0, 0, 0, 0, 0, 0, 0, 0, 0, -310,
2631 0, 0, 0, 0, 0, 0, 0, 0, -310, -310,
2632 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2633 -310, 0, 0, 0, 0, -310, -310, -310, -310, 0,
2634 692, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2635 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2636 0, -310, 0, 0, 0, 0, 0, -118, -310, 0,
2637 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2638 0, 0, 0, 0, 0, -310, -310, -109, -310, 0,
2639 -310, 0, -310, 0, -310, 0, -310, -310, -310, 0,
2640 0, 0, -310, -310, 0, -310, 0, 0, 0, 0,
2641 0, 0, 0, -310, 0, 0, 0, 0, 0, 0,
2642 0, 0, 0, 0, 0, -310, -310, 0, -310, -310,
2643 -310, -310, -310, 0, 0, 0, 0, 0, 0, 0,
2644 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2645 0, 0, 0, 0, 0, 0, -310, 0, 0, 0,
2646 0, 0, 0, 0, 0, -310, -310, -310, -310, -310,
2647 -310, -310, -310, -310, -310, -310, -310, -310, 0, 0,
2648 0, 0, -310, -310, -310, -310, 0, 692, 0, 0,
2649 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2650 0, 0, 0, 0, 0, 0, 0, 0, -310, 0,
2651 0, 0, 0, 0, -118, -310, 0, -310, -310, -310,
2652 -310, -310, -310, -310, -310, -310, -310, 0, 0, 0,
2653 0, 0, -310, -310, -310, 0, 0, -310, 0, -310,
2654 257, -310, 5, 6, 7, 8, 9, -757, -757, -757,
2655 10, 11, 0, 0, -757, 12, 0, 13, 14, 15,
2656 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
2657 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2658 0, 0, 0, 0, 28, 29, 258, 31, 32, 33,
2659 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2660 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2661 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2662 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2663 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2664 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2665 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
2666 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2667 0, 0, 0, 0, 0, 0, 0, 0, 67, 68,
2668 69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2669 -757, 257, -757, 5, 6, 7, 8, 9, 0, 0,
2670 -757, 10, 11, 0, -757, -757, 12, 0, 13, 14,
2671 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
2672 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
2673 0, 0, 0, 0, 0, 28, 29, 258, 31, 32,
2674 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
2675 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
2676 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
2677 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2678 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
2679 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
2680 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
2681 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2682 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
2683 68, 69, 0, 0, 0, 0, 0, 0, 0, 0,
2684 0, -757, 257, -757, 5, 6, 7, 8, 9, 0,
2685 0, -757, 10, 11, 0, 0, -757, 12, -757, 13,
2686 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
2687 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
2688 27, 0, 0, 0, 0, 0, 28, 29, 258, 31,
2689 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
2690 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
2691 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
2692 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2693 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
2694 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
2695 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
2696 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2697 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2698 67, 68, 69, 0, 0, 0, 0, 0, 0, 0,
2699 0, 0, -757, 257, -757, 5, 6, 7, 8, 9,
2700 0, 0, -757, 10, 11, 0, 0, -757, 12, 0,
2701 13, 14, 15, 16, 17, 18, 19, -757, 0, 0,
2702 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
2703 0, 27, 0, 0, 0, 0, 0, 28, 29, 258,
2704 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2705 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
2706 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
2707 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2708 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
2709 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
2710 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
2711 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2712 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2713 0, 67, 68, 69, 0, 0, 0, 0, 0, 0,
2714 0, 0, 0, -757, 257, -757, 5, 6, 7, 8,
2715 9, 0, 0, -757, 10, 11, 0, 0, -757, 12,
2716 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2717 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2718 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2719 258, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2720 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2721 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2722 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2723 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2724 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2725 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2726 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2727 257, 0, 5, 6, 7, 8, 9, 0, -757, -757,
2728 10, 11, 67, 68, 69, 12, 0, 13, 14, 15,
2729 16, 17, 18, 19, -757, 0, -757, 0, 0, 20,
2730 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2731 0, 0, 0, 0, 28, 29, 258, 31, 32, 33,
2732 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2733 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2734 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2735 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2736 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2737 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2738 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
2739 0, 0, 0, 0, 0, 0, 257, 0, 5, 6,
2740 7, 8, 9, 0, 0, 0, 10, 11, 67, 68,
2741 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2742 -757, 0, -757, 0, 0, 20, 21, 22, 23, 24,
2743 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2744 28, 29, 258, 31, 32, 33, 34, 35, 36, 37,
2745 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
2746 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2747 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
2748 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
2749 0, 0, 0, 52, 0, 0, 259, 54, 0, 55,
2750 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
2751 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2753 0, 0, 0, 0, 67, 68, 69, 0, 0, 0,
2754 0, 0, 0, 0, -757, 0, -757, 257, -757, 5,
2755 6, 7, 8, 9, 0, 0, 0, 10, 11, 0,
2756 0, 0, 12, 0, 13, 14, 15, 16, 17, 18,
2757 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
2758 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
2759 0, 28, 29, 258, 31, 32, 33, 34, 35, 36,
2760 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
2761 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2762 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
2763 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
2764 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
2765 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
2766 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
2767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2768 0, 0, 0, 0, 0, 67, 68, 69, 0, 0,
2769 0, 0, 0, 0, 0, -757, 0, -757, 4, -757,
2770 5, 6, 7, 8, 9, 0, 0, 0, 10, 11,
2771 0, 0, 0, 12, 0, 13, 14, 15, 16, 17,
2772 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
2773 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
2774 0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
2775 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
2776 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
2777 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2778 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
2779 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
2780 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
2781 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
2782 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2783 0, 0, 0, 0, 0, 0, 67, 68, 69, 0,
2784 0, -757, 0, 0, 0, 0, 0, 0, -757, 257,
2785 -757, 5, 6, 7, 8, 9, 0, 0, 0, 10,
2786 11, 0, 0, 0, 12, 0, 13, 14, 15, 16,
2787 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
2788 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
2789 0, 0, 0, 28, 29, 258, 31, 32, 33, 34,
2790 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
2791 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
2792 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
2793 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
2794 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
2795 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
2796 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
2797 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2798 0, 0, 0, 0, 0, 0, 0, 67, 68, 69,
2799 0, 0, -757, 0, 0, 0, 0, 0, 0, -757,
2800 257, -757, 5, 6, 7, 8, 9, 0, 0, -757,
2801 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
2802 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
2803 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2804 0, 0, 0, 0, 28, 29, 258, 31, 32, 33,
2805 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2806 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2807 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2808 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2809 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2810 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2811 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
2812 0, 0, 0, 0, 0, 0, 257, 0, 5, 6,
2813 7, 8, 9, 0, 0, 0, 10, 11, 67, 68,
2814 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2815 -757, 0, -757, 0, 0, 20, 21, 22, 23, 24,
2816 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2817 28, 29, 258, 31, 32, 33, 34, 35, 36, 37,
2818 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
2819 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2820 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
2821 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
2822 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
2823 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
2824 63, 64, 65, 66, 0, -757, 0, 0, 0, 0,
2825 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
2826 0, 0, 10, 11, 67, 68, 69, 12, 0, 13,
2827 14, 15, 16, 17, 18, 19, -757, 0, -757, 0,
2828 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
2829 206, 0, 0, 0, 0, 0, 0, 29, 0, 0,
2830 32, 33, 34, 35, 36, 37, 38, 39, 40, 207,
2831 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
2832 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
2833 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2834 0, 50, 51, 0, 0, 0, 0, 0, 0, 208,
2835 0, 0, 209, 54, 0, 55, 56, 0, 210, 211,
2836 212, 58, 59, 213, 61, 62, 63, 64, 65, 66,
2837 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2838 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
2839 67, 214, 69, 12, 0, 13, 14, 15, 16, 17,
2840 18, 19, 0, 0, 237, 0, 0, 20, 21, 22,
2841 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
2842 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
2843 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
2844 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
2845 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2846 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
2847 0, 0, 0, 0, 0, 208, 0, 0, 209, 54,
2848 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
2849 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
2850 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
2851 9, 0, 0, 0, 10, 11, 67, 68, 69, 12,
2852 0, 13, 14, 15, 16, 17, 18, 19, 305, 0,
2853 306, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2854 0, 0, 27, 0, 0, 0, 0, 0, 0, 29,
2855 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
2856 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2857 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2858 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2859 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2860 0, 208, 0, 0, 209, 54, 0, 55, 56, 0,
2861 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2862 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2863 0, 0, 5, 6, 7, 8, 9, 0, 0, 0,
2864 10, 11, 67, 68, 69, 12, 0, 13, 14, 15,
2865 16, 17, 18, 19, 0, 0, 237, 0, 0, 20,
2866 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2867 0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
2868 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2869 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2870 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2871 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2872 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2873 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2874 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
2875 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
2876 7, 8, 9, 0, 0, 0, 10, 11, 67, 68,
2877 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2878 503, 0, 0, 0, 0, 20, 21, 22, 23, 24,
2879 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2880 28, 29, 258, 31, 32, 33, 34, 35, 36, 37,
2881 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
2882 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2883 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
2884 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
2885 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
2886 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
2887 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2888 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2889 0, 0, 0, 0, 67, 68, 69, 0, 0, 0,
2890 0, 0, 0, 0, 0, 0, 503, 126, 127, 128,
2891 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
2892 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
2893 149, 0, 0, 0, 150, 151, 152, 395, 396, 397,
2894 398, 157, 158, 159, 0, 0, 0, 0, 0, 160,
2895 161, 162, 163, 399, 400, 401, 402, 168, 37, 38,
2896 403, 40, 0, 0, 0, 0, 0, 0, 0, 0,
2897 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
2898 171, 172, 173, 174, 175, 176, 177, 178, 0, 0,
2899 179, 180, 0, 0, 0, 0, 181, 182, 183, 184,
2900 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2901 0, 185, 186, 0, 0, 0, 0, 0, 0, 0,
2902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2903 0, 0, 0, 187, 188, 189, 190, 191, 192, 193,
2904 194, 195, 196, 0, 197, 198, 0, 0, 0, 0,
2905 0, 199, 404, 126, 127, 128, 129, 130, 131, 132,
2906 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
2907 143, 144, 145, 146, 147, 148, 149, 0, 0, 0,
2908 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
2909 0, 0, 0, 0, 0, 160, 161, 162, 163, 164,
2910 165, 166, 167, 168, 288, 289, 169, 290, 0, 0,
2911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2912 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
2913 175, 176, 177, 178, 0, 0, 179, 180, 0, 0,
2914 0, 0, 181, 182, 183, 184, 0, 0, 0, 0,
2915 0, 0, 0, 0, 0, 0, 0, 185, 186, 0,
2916 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2917 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
2918 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
2919 197, 198, 0, 0, 0, 0, 0, 199, 126, 127,
2920 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
2921 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
2922 148, 149, 0, 0, 0, 150, 151, 152, 153, 154,
2923 155, 156, 157, 158, 159, 0, 0, 0, 0, 0,
2924 160, 161, 162, 163, 164, 165, 166, 167, 168, 239,
2925 0, 169, 0, 0, 0, 0, 0, 0, 0, 0,
2926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2927 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
2928 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
2929 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2930 0, 0, 185, 186, 0, 0, 59, 0, 0, 0,
2931 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2932 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
2933 193, 194, 195, 196, 0, 197, 198, 0, 0, 0,
2934 0, 0, 199, 126, 127, 128, 129, 130, 131, 132,
2935 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
2936 143, 144, 145, 146, 147, 148, 149, 0, 0, 0,
2937 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
2938 0, 0, 0, 0, 0, 160, 161, 162, 163, 164,
2939 165, 166, 167, 168, 0, 0, 169, 0, 0, 0,
2940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2941 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
2942 175, 176, 177, 178, 0, 0, 179, 180, 0, 0,
2943 0, 0, 181, 182, 183, 184, 0, 0, 0, 0,
2944 0, 0, 0, 0, 0, 0, 0, 185, 186, 0,
2945 0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
2946 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
2947 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
2948 197, 198, 0, 0, 0, 0, 0, 199, 126, 127,
2949 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
2950 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
2951 148, 149, 0, 0, 0, 150, 151, 152, 153, 154,
2952 155, 156, 157, 158, 159, 0, 0, 0, 0, 0,
2953 160, 161, 162, 163, 164, 165, 166, 167, 168, 0,
2954 0, 169, 0, 0, 0, 0, 0, 0, 0, 0,
2955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2956 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
2957 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
2958 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2959 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
2960 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2961 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
2962 193, 194, 195, 196, 0, 197, 198, 5, 6, 7,
2963 0, 9, 199, 0, 0, 10, 11, 0, 0, 0,
2964 12, 0, 13, 14, 15, 245, 246, 18, 19, 0,
2965 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
2966 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
2967 277, 0, 0, 32, 33, 34, 35, 36, 37, 38,
2968 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
2969 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2970 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2971 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2972 0, 0, 278, 0, 0, 209, 54, 0, 55, 56,
2973 0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
2974 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
2975 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
2976 9, 0, 0, 279, 10, 11, 0, 0, 0, 12,
2977 280, 13, 14, 15, 245, 246, 18, 19, 0, 0,
2978 0, 0, 0, 20, 247, 248, 23, 24, 25, 26,
2979 0, 0, 206, 0, 0, 0, 0, 0, 0, 277,
2980 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
2981 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2982 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2984 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2985 0, 278, 0, 0, 209, 54, 0, 55, 56, 0,
2986 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2987 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2988 0, 0, 0, 0, 0, 5, 6, 7, 8, 9,
2989 0, 0, 279, 10, 11, 0, 0, 0, 12, 526,
2990 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
2991 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
2992 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
2993 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2994 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
2995 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
2996 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2997 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
2998 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
2999 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3000 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3001 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3002 11, 67, 68, 69, 12, 0, 13, 14, 15, 16,
3003 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
3004 22, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3005 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3006 35, 36, 37, 38, 39, 40, 207, 41, 42, 43,
3007 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3008 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3009 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3010 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
3011 54, 0, 55, 56, 0, 210, 211, 212, 58, 59,
3012 213, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3013 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3014 8, 9, 0, 0, 0, 10, 11, 67, 214, 69,
3015 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3016 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
3017 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
3018 29, 0, 31, 32, 33, 34, 35, 36, 37, 38,
3019 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3020 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3021 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3022 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3023 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
3024 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
3025 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3026 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3027 0, 10, 11, 67, 68, 69, 12, 0, 13, 14,
3028 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
3029 20, 21, 22, 23, 24, 25, 26, 0, 0, 206,
3030 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3031 33, 34, 35, 36, 37, 38, 39, 40, 207, 41,
3032 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3033 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3034 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3035 50, 439, 0, 0, 0, 0, 0, 0, 208, 0,
3036 0, 209, 54, 0, 55, 56, 0, 210, 211, 212,
3037 58, 59, 213, 61, 62, 63, 64, 65, 66, 0,
3038 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3039 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3040 214, 69, 12, 0, 13, 14, 15, 245, 246, 18,
3041 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3042 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3043 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3044 37, 38, 39, 40, 207, 41, 42, 43, 44, 45,
3045 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3046 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3047 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3048 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3049 55, 56, 0, 620, 211, 212, 58, 59, 213, 61,
3050 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3051 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3052 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3053 13, 14, 15, 245, 246, 18, 19, 0, 0, 0,
3054 0, 0, 20, 247, 248, 23, 24, 25, 26, 0,
3055 0, 206, 0, 0, 0, 0, 0, 0, 29, 0,
3056 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3057 207, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3058 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3059 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3060 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3061 208, 0, 0, 209, 54, 0, 55, 56, 0, 210,
3062 211, 0, 58, 59, 213, 61, 62, 63, 64, 65,
3063 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3064 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3065 11, 67, 214, 69, 12, 0, 13, 14, 15, 245,
3066 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3067 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3068 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3069 35, 36, 37, 38, 39, 40, 207, 41, 42, 43,
3070 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3071 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3072 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3073 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
3074 54, 0, 55, 56, 0, 0, 211, 212, 58, 59,
3075 213, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3076 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3077 0, 9, 0, 0, 0, 10, 11, 67, 214, 69,
3078 12, 0, 13, 14, 15, 245, 246, 18, 19, 0,
3079 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3080 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3081 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3082 39, 40, 207, 41, 42, 43, 44, 45, 46, 47,
3083 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3084 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3085 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3086 0, 0, 208, 0, 0, 209, 54, 0, 55, 56,
3087 0, 620, 211, 0, 58, 59, 213, 61, 62, 63,
3088 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3089 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3090 0, 10, 11, 67, 214, 69, 12, 0, 13, 14,
3091 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3092 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3093 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3094 33, 34, 35, 36, 37, 38, 39, 40, 207, 41,
3095 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3096 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3097 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3098 50, 51, 0, 0, 0, 0, 0, 0, 208, 0,
3099 0, 209, 54, 0, 55, 56, 0, 0, 211, 0,
3100 58, 59, 213, 61, 62, 63, 64, 65, 66, 0,
3101 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3102 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3103 214, 69, 12, 0, 13, 14, 15, 16, 17, 18,
3104 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
3105 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3106 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3107 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3108 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3109 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3110 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3111 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3112 55, 56, 0, 519, 0, 0, 58, 59, 60, 61,
3113 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3114 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3115 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3116 13, 14, 15, 245, 246, 18, 19, 0, 0, 0,
3117 0, 0, 20, 247, 248, 23, 24, 25, 26, 0,
3118 0, 206, 0, 0, 0, 0, 0, 0, 29, 0,
3119 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3120 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3121 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3123 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3124 208, 0, 0, 209, 54, 0, 55, 56, 0, 770,
3125 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3126 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3127 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3128 11, 67, 214, 69, 12, 0, 13, 14, 15, 245,
3129 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3130 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3131 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3132 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3133 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3134 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3135 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3136 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
3137 54, 0, 55, 56, 0, 519, 0, 0, 58, 59,
3138 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3139 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3140 0, 9, 0, 0, 0, 10, 11, 67, 214, 69,
3141 12, 0, 13, 14, 15, 245, 246, 18, 19, 0,
3142 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3143 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3144 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3145 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3146 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3147 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3148 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3149 0, 0, 208, 0, 0, 209, 54, 0, 55, 56,
3150 0, 843, 0, 0, 58, 59, 60, 61, 62, 63,
3151 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3152 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3153 0, 10, 11, 67, 214, 69, 12, 0, 13, 14,
3154 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3155 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3156 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3157 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3158 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3159 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3160 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3161 50, 51, 0, 0, 0, 0, 0, 0, 208, 0,
3162 0, 209, 54, 0, 55, 56, 0, 1012, 0, 0,
3163 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3164 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3165 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3166 214, 69, 12, 0, 13, 14, 15, 245, 246, 18,
3167 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3168 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3169 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3170 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3171 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3172 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3173 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3174 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3175 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
3176 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3177 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3178 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3179 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3180 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3181 0, 206, 0, 0, 0, 0, 0, 0, 29, 0,
3182 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3183 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3184 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3185 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3186 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3187 208, 0, 0, 209, 54, 0, 55, 56, 0, 0,
3188 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3189 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3190 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3191 11, 67, 214, 69, 12, 0, 13, 14, 15, 16,
3192 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
3193 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3194 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3195 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3196 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3197 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3198 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3199 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
3200 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
3201 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3202 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3203 0, 9, 0, 0, 0, 10, 11, 67, 68, 69,
3204 12, 0, 13, 14, 15, 245, 246, 18, 19, 0,
3205 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3206 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3207 277, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3208 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3210 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3212 0, 0, 278, 0, 0, 328, 54, 0, 55, 56,
3213 0, 329, 0, 0, 58, 59, 60, 61, 62, 63,
3214 64, 65, 66, 0, 0, 0, 0, 0, 0, 5,
3215 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
3216 0, 0, 12, 279, 13, 14, 15, 245, 246, 18,
3217 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3218 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3219 0, 0, 277, 0, 0, 32, 33, 34, 35, 36,
3220 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3221 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3222 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3223 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3224 0, 0, 0, 0, 376, 0, 0, 53, 54, 0,
3225 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
3226 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3227 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3228 11, 0, 0, 0, 12, 279, 13, 14, 15, 245,
3229 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3230 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3231 0, 0, 0, 0, 277, 0, 0, 32, 33, 34,
3232 384, 36, 37, 38, 385, 40, 0, 41, 42, 43,
3233 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3236 0, 0, 386, 0, 0, 0, 387, 0, 0, 209,
3237 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
3238 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3239 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3240 0, 10, 11, 0, 0, 0, 12, 279, 13, 14,
3241 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3242 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3243 0, 0, 0, 0, 0, 0, 277, 0, 0, 32,
3244 33, 34, 384, 36, 37, 38, 385, 40, 0, 41,
3245 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3246 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3247 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3248 0, 0, 0, 0, 0, 0, 0, 0, 387, 0,
3249 0, 209, 54, 0, 55, 56, 0, 0, 0, 0,
3250 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3251 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3252 0, 0, 0, 10, 11, 0, 0, 0, 12, 279,
3253 13, 14, 15, 245, 246, 18, 19, 0, 0, 0,
3254 0, 0, 20, 247, 248, 23, 24, 25, 26, 0,
3255 0, 206, 0, 0, 0, 0, 0, 0, 277, 0,
3256 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3257 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3260 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3261 278, 0, 0, 328, 54, 0, 55, 56, 0, 0,
3262 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3263 66, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3264 0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
3265 12, 279, 13, 14, 15, 245, 246, 18, 19, 0,
3266 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3267 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3268 277, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3269 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3270 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3273 0, 0, 1002, 0, 0, 209, 54, 0, 55, 56,
3274 0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
3275 64, 65, 66, 0, 0, 0, 0, 0, 0, 5,
3276 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
3277 0, 0, 12, 279, 13, 14, 15, 245, 246, 18,
3278 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3279 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3280 0, 0, 277, 0, 0, 32, 33, 34, 35, 36,
3281 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3282 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3283 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3284 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3285 0, 0, 0, 0, 1054, 0, 0, 209, 54, 0,
3286 55, 56, 23, 24, 25, 26, 58, 59, 60, 61,
3287 62, 63, 64, 65, 66, 0, 0, 0, 32, 33,
3288 34, 781, 0, 0, 0, 782, 0, 980, 41, 42,
3289 43, 44, 45, 0, 0, 279, 0, 0, 0, 0,
3290 0, 0, 0, 0, 0, 0, 921, 0, 0, 0,
3291 0, 0, 0, 0, 0, 0, 0, 0, 0, 783,
3292 784, 0, 0, 0, 0, 0, 0, 785, 0, 0,
3293 786, 0, 0, 787, 788, 0, 974, 925, 0, 789,
3294 59, 997, 61, 62, 63, 64, 65, 66, 23, 24,
3295 25, 26, 0, 0, 0, 0, 0, 0, 0, 0,
3296 0, 790, 0, 0, 32, 33, 34, 781, 279, 0,
3297 0, 782, 0, 0, 41, 42, 43, 44, 45, 0,
3298 0, 23, 24, 25, 26, 0, 0, 0, 0, 0,
3299 0, 0, 0, 0, 0, 0, 0, 32, 33, 34,
3300 781, 0, 0, 0, 782, 783, 784, 41, 42, 43,
3301 44, 45, 0, 785, 0, 0, 786, 0, 0, 787,
3302 788, 0, 1069, 0, 0, 789, 59, 60, 61, 62,
3303 63, 64, 65, 66, 0, 0, 0, 0, 783, 784,
3304 0, 0, 0, 0, 0, 0, 785, 790, 0, 786,
3305 0, 0, 787, 788, 279, 0, 0, 0, 789, 59,
3306 60, 61, 62, 63, 64, 65, 66, 564, 565, 0,
3307 0, 566, 0, 0, 0, 0, 0, 0, 0, 0,
3308 790, 0, 0, 0, 0, 0, 0, 279, 0, 0,
3309 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3310 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3311 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3312 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3313 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3314 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3315 193, 194, 195, 196, 0, 197, 198, 572, 573, 0,
3316 0, 574, 199, 233, 0, 0, 0, 0, 0, 0,
3317 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3318 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3319 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3320 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3321 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3322 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3323 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3324 193, 194, 195, 196, 0, 197, 198, 624, 565, 0,
3325 0, 625, 199, 233, 0, 0, 0, 0, 0, 0,
3326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3327 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3328 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3329 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3330 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3332 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3333 193, 194, 195, 196, 0, 197, 198, 627, 573, 0,
3334 0, 628, 199, 233, 0, 0, 0, 0, 0, 0,
3335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3336 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3337 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3338 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3339 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3340 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3341 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3342 193, 194, 195, 196, 0, 197, 198, 652, 565, 0,
3343 0, 653, 199, 233, 0, 0, 0, 0, 0, 0,
3344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3345 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3346 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3347 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3348 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3349 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3350 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3351 193, 194, 195, 196, 0, 197, 198, 655, 573, 0,
3352 0, 656, 199, 233, 0, 0, 0, 0, 0, 0,
3353 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3354 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3355 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3356 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3357 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3358 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3359 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3360 193, 194, 195, 196, 0, 197, 198, 722, 565, 0,
3361 0, 723, 199, 233, 0, 0, 0, 0, 0, 0,
3362 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3363 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3364 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3365 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3366 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3368 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3369 193, 194, 195, 196, 0, 197, 198, 725, 573, 0,
3370 0, 726, 199, 233, 0, 0, 0, 0, 0, 0,
3371 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3372 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3373 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3374 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3375 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3377 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3378 193, 194, 195, 196, 0, 197, 198, 731, 565, 0,
3379 0, 732, 199, 233, 0, 0, 0, 0, 0, 0,
3380 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3381 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3382 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3383 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3384 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3386 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3387 193, 194, 195, 196, 0, 197, 198, 609, 573, 0,
3388 0, 610, 199, 233, 0, 0, 0, 0, 0, 0,
3389 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3390 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3391 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3392 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3393 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3394 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3395 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3396 193, 194, 195, 196, 0, 197, 198, 776, 565, 0,
3397 0, 777, 199, 233, 0, 0, 0, 0, 0, 0,
3398 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3399 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3400 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3401 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3402 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3403 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3404 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3405 193, 194, 195, 196, 0, 197, 198, 779, 573, 0,
3406 0, 780, 199, 233, 0, 0, 0, 0, 0, 0,
3407 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3408 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3409 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3410 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3411 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3413 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3414 193, 194, 195, 196, 0, 197, 198, 1152, 565, 0,
3415 0, 1153, 199, 233, 0, 0, 0, 0, 0, 0,
3416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3417 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3418 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3419 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3420 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3422 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3423 193, 194, 195, 196, 0, 197, 198, 1155, 573, 0,
3424 0, 1156, 199, 233, 0, 0, 0, 0, 0, 0,
3425 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3426 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3427 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3428 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3429 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3430 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3431 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3432 193, 194, 195, 196, 0, 197, 198, 1186, 565, 0,
3433 0, 1187, 199, 233, 0, 0, 0, 0, 0, 0,
3434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3435 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3436 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3437 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3438 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3440 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3441 193, 194, 195, 196, 0, 197, 198, 609, 573, 0,
3442 0, 610, 199, 233, 0, 0, 0, 0, 0, 0,
3443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3444 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3445 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3446 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3447 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3448 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3449 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3450 193, 194, 195, 196, 0, 197, 198, 0, 0, 0,
3456 2, 60, 53, 89, 369, 71, 102, 83, 8, 22,
3457 710, 8, 16, 17, 28, 101, 59, 331, 227, 717,
3458 16, 17, 94, 91, 92, 387, 4, 95, 28, 95,
3459 482, 28, 57, 626, 2, 271, 4, 433, 57, 275,
3460 67, 892, 893, 71, 363, 1064, 365, 26, 16, 17,
3461 27, 55, 29, 55, 56, 1026, 99, 364, 83, 59,
3462 92, 654, 603, 95, 27, 78, 295, 296, 1037, 1060,
3463 68, 96, 97, 98, 526, 1102, 13, 473, 25, 53,
3464 1104, 1052, 25, 957, 259, 53, 54, 1142, 95, 57,
3465 52, 1146, 411, 414, 415, 15, 100, 0, 689, 99,
3466 68, 77, 25, 331, 100, 25, 25, 148, 99, 428,
3467 143, 430, 153, 892, 893, 83, 68, 2, 13, 4,
3468 126, 13, 429, 91, 92, 941, 942, 95, 96, 97,
3469 98, 724, 100, 37, 38, 126, 222, 16, 17, 458,
3470 146, 734, 425, 1198, 96, 97, 56, 963, 964, 965,
3471 433, 25, 29, 328, 213, 22, 857, 151, 209, 153,
3472 136, 137, 138, 864, 143, 251, 485, 66, 236, 54,
3473 238, 153, 1046, 16, 17, 1194, 9, 484, 25, 1206,
3474 28, 1205, 15, 126, 146, 778, 414, 415, 151, 730,
3475 153, 1182, 866, 244, 787, 261, 13, 283, 1167, 146,
3476 13, 1172, 25, 146, 280, 148, 149, 66, 259, 146,
3477 153, 78, 55, 56, 151, 52, 153, 100, 1189, 221,
3478 119, 100, 518, 146, 152, 227, 230, 146, 232, 148,
3479 682, 233, 1011, 261, 230, 444, 232, 233, 600, 635,
3480 242, 209, 310, 311, 312, 313, 123, 315, 316, 153,
3481 866, 952, 279, 148, 261, 280, 151, 100, 153, 151,
3482 119, 153, 230, 146, 232, 233, 977, 143, 236, 498,
3483 238, 500, 146, 592, 242, 26, 244, 328, 310, 311,
3484 312, 313, 578, 602, 591, 259, 877, 878, 584, 257,
3485 586, 259, 236, 379, 601, 152, 1112, 890, 152, 146,
3486 277, 892, 893, 371, 329, 13, 100, 373, 849, 146,
3487 329, 1162, 280, 25, 1014, 856, 1014, 1133, 386, 370,
3488 264, 372, 326, 146, 268, 148, 52, 331, 326, 870,
3489 56, 309, 25, 331, 151, 148, 153, 13, 151, 371,
3490 153, 309, 310, 311, 312, 313, 314, 315, 316, 152,
3491 633, 230, 635, 232, 328, 25, 1067, 242, 326, 153,
3492 328, 329, 364, 331, 97, 365, 373, 686, 364, 688,
3493 691, 692, 257, 13, 783, 784, 697, 698, 1052, 126,
3494 687, 248, 249, 976, 13, 146, 1060, 230, 1062, 232,
3495 54, 705, 143, 112, 985, 100, 364, 148, 366, 99,
3496 64, 65, 370, 371, 372, 126, 482, 1000, 1001, 13,
3497 1026, 411, 145, 649, 623, 148, 414, 415, 386, 13,
3498 1011, 1037, 718, 785, 309, 721, 126, 429, 66, 314,
3499 430, 1142, 661, 429, 146, 1146, 1052, 666, 452, 735,
3500 442, 146, 444, 151, 1060, 153, 414, 415, 37, 38,
3501 526, 537, 452, 146, 99, 452, 684, 482, 458, 82,
3502 83, 429, 866, 691, 692, 855, 862, 857, 109, 697,
3503 698, 68, 25, 66, 864, 151, 146, 153, 887, 888,
3504 845, 119, 484, 121, 122, 485, 1197, 1198, 484, 146,
3505 923, 435, 133, 99, 148, 816, 440, 465, 365, 443,
3506 97, 526, 446, 146, 1045, 68, 129, 130, 1182, 56,
3507 1184, 151, 66, 153, 482, 1189, 484, 1191, 462, 585,
3508 126, 593, 151, 467, 153, 126, 119, 889, 121, 122,
3509 581, 124, 583, 898, 97, 1235, 604, 99, 903, 835,
3510 146, 750, 838, 68, 25, 841, 866, 151, 100, 153,
3511 150, 1167, 848, 153, 1228, 851, 569, 151, 526, 153,
3512 99, 1154, 952, 430, 577, 119, 1182, 121, 122, 146,
3513 638, 1162, 97, 126, 650, 577, 553, 579, 148, 862,
3514 1121, 525, 425, 1016, 1017, 68, 52, 126, 816, 591,
3515 56, 458, 592, 146, 571, 591, 149, 99, 611, 601,
3516 153, 68, 602, 617, 66, 601, 682, 146, 68, 611,
3517 68, 68, 148, 581, 97, 583, 912, 617, 485, 66,
3518 617, 623, 68, 591, 126, 650, 68, 470, 66, 34,
3519 97, 148, 25, 601, 68, 603, 604, 97, 96, 97,
3520 97, 643, 77, 739, 146, 126, 99, 52, 1052, 626,
3521 149, 97, 1056, 949, 153, 97, 1060, 682, 1062, 121,
3522 122, 729, 728, 97, 15, 146, 17, 881, 149, 1102,
3523 638, 1104, 153, 126, 121, 122, 727, 654, 892, 893,
3524 99, 119, 650, 121, 122, 687, 684, 145, 688, 694,
3525 152, 687, 68, 691, 692, 738, 701, 729, 149, 697,
3526 698, 705, 569, 705, 706, 152, 708, 126, 710, 1029,
3527 577, 679, 126, 34, 682, 683, 684, 689, 150, 687,
3528 96, 97, 144, 691, 692, 592, 1091, 146, 99, 697,
3529 698, 52, 1052, 126, 146, 602, 1056, 2, 738, 4,
3530 1060, 153, 1062, 99, 611, 58, 56, 724, 750, 66,
3531 67, 16, 17, 146, 99, 126, 149, 734, 26, 727,
3532 153, 729, 730, 146, 77, 767, 834, 769, 1087, 145,
3533 126, 77, 1205, 1206, 106, 642, 643, 828, 1182, 1086,
3534 1184, 126, 833, 66, 850, 1189, 146, 1191, 53, 54,
3535 633, 68, 736, 153, 679, 108, 66, 1011, 683, 112,
3536 68, 778, 834, 68, 121, 122, 99, 751, 68, 146,
3537 787, 783, 784, 99, 56, 1029, 867, 68, 816, 96,
3538 97, 688, 824, 1119, 1228, 151, 91, 92, 96, 97,
3539 95, 14, 15, 126, 56, 100, 96, 97, 121, 122,
3540 126, 124, 1056, 99, 25, 96, 97, 99, 816, 119,
3541 901, 121, 122, 26, 124, 99, 146, 130, 68, 910,
3542 828, 1075, 1182, 153, 1184, 833, 834, 149, 145, 1189,
3543 126, 1191, 897, 144, 126, 143, 10, 145, 40, 41,
3544 148, 849, 126, 1179, 950, 145, 96, 97, 856, 866,
3545 66, 77, 88, 89, 145, 68, 146, 148, 146, 867,
3546 146, 144, 870, 144, 44, 877, 878, 52, 1228, 54,
3547 55, 56, 57, 890, 886, 887, 888, 146, 1004, 146,
3548 892, 893, 981, 96, 97, 146, 68, 146, 44, 897,
3549 8, 99, 126, 901, 13, 145, 961, 939, 997, 941,
3550 942, 866, 910, 119, 209, 121, 122, 891, 134, 135,
3551 136, 137, 138, 68, 96, 97, 101, 1008, 126, 1010,
3552 25, 963, 964, 965, 17, 230, 144, 232, 233, 99,
3553 143, 236, 145, 238, 99, 148, 146, 242, 146, 244,
3554 957, 96, 97, 152, 128, 207, 930, 931, 210, 211,
3555 212, 68, 257, 961, 259, 152, 126, 1048, 150, 976,
3556 855, 126, 857, 145, 68, 977, 15, 1009, 68, 864,
3557 148, 866, 1014, 985, 146, 944, 146, 946, 131, 96,
3558 97, 146, 146, 1000, 1001, 144, 1051, 52, 866, 973,
3559 145, 68, 96, 97, 100, 131, 96, 97, 100, 1011,
3560 1008, 146, 1010, 126, 309, 310, 311, 312, 313, 314,
3561 315, 316, 52, 146, 998, 999, 26, 146, 66, 96,
3562 97, 326, 146, 328, 689, 146, 331, 52, 145, 1046,
3563 146, 1122, 52, 131, 68, 126, 1020, 1045, 146, 146,
3564 1048, 145, 151, 1051, 1086, 145, 1088, 1087, 1090, 146,
3565 1086, 146, 1160, 1161, 146, 1067, 144, 952, 68, 364,
3566 146, 366, 96, 97, 326, 370, 371, 372, 145, 331,
3567 1112, 119, 1037, 121, 122, 1040, 56, 68, 1086, 9,
3568 146, 386, 146, 414, 415, 131, 96, 97, 1160, 1161,
3569 56, 1133, 967, 968, 146, 1060, 146, 1062, 68, 146,
3570 431, 432, 146, 52, 146, 96, 97, 146, 149, 414,
3571 415, 145, 120, 1121, 1122, 146, 1100, 58, 783, 784,
3572 146, 148, 1139, 146, 429, 146, 96, 97, 459, 146,
3573 1142, 1026, 146, 143, 1146, 145, 77, 1154, 148, 1108,
3574 1109, 1232, 1037, 146, 146, 1114, 144, 1116, 148, 1118,
3575 1162, 1029, 1160, 1161, 145, 242, 1034, 1052, 146, 146,
3576 465, 465, 424, 425, 461, 1060, 98, 108, 109, 96,
3577 87, 433, 611, 706, 1052, 145, 1016, 1090, 1056, 484,
3578 1087, 1102, 1060, 769, 1062, 1197, 1198, 54, 55, 866,
3579 57, 882, 133, 1235, 1194, 740, 514, 64, 65, 324,
3580 1235, 1011, 1167, 1075, 1169, 1075, 1075, 886, 470, 1174,
3581 884, 473, 877, 878, 1088, 1009, 105, 1182, 99, 1184,
3582 500, 886, 887, 888, 1232, 951, 1191, 892, 893, 2,
3583 52, 4, 54, 55, 56, 57, 855, 1029, 1207, 1208,
3584 1209, 1210, 1056, 16, 17, 52, 1052, 54, 55, 56,
3585 57, 58, 1026, 1128, 1129, -1, -1, 519, 1223, 1134,
3586 -1, 1136, 1137, 1228, 1233, 40, 41, 42, 43, 44,
3587 77, -1, 1167, -1, -1, -1, 581, -1, 583, 101,
3588 53, 54, -1, -1, 91, 107, 591, 1182, 52, -1,
3589 54, 55, 56, 57, 101, 68, 601, -1, 603, 604,
3590 107, 108, 109, -1, 1182, 52, 1184, 54, 55, 56,
3591 57, 1189, 977, 1191, -1, 689, -1, -1, 91, 92,
3592 985, -1, 95, -1, -1, -1, 133, 100, -1, 136,
3593 -1, -1, -1, 638, 59, 60, 61, 62, 1213, 1214,
3594 1215, 1216, -1, -1, -1, -1, 1011, 77, -1, -1,
3595 1228, -1, -1, -1, -1, -1, 618, -1, 620, 1234,
3596 691, 692, -1, -1, 94, 95, 697, 698, -1, -1,
3597 -1, 633, 77, 635, 679, -1, -1, -1, 683, 684,
3598 -1, -1, 687, -1, -1, -1, 691, 692, -1, 94,
3599 95, -1, 697, 698, -1, 52, -1, 54, 55, 56,
3600 57, 58, 1067, 133, 134, 135, 136, 137, 138, 783,
3601 784, -1, -1, -1, 745, 746, 678, 748, 749, -1,
3602 77, -1, 727, -1, 729, 730, 689, -1, -1, 134,
3603 135, 136, 137, 138, -1, -1, 209, -1, -1, -1,
3604 -1, -1, -1, 705, 101, -1, -1, -1, -1, -1,
3605 107, 108, 109, -1, -1, -1, -1, 230, 720, 232,
3606 233, -1, -1, 236, -1, 238, -1, -1, -1, 242,
3607 -1, 244, -1, -1, -1, -1, 133, 1142, -1, 136,
3608 -1, 1146, -1, -1, 257, 816, 259, -1, -1, -1,
3609 -1, 689, -1, -1, -1, -1, 153, 1162, -1, -1,
3610 -1, -1, -1, 877, 878, -1, -1, -1, 770, -1,
3611 -1, 816, 886, 887, 888, -1, -1, -1, 892, 893,
3612 783, 784, -1, 828, -1, 2, -1, 4, 833, 834,
3613 861, -1, 1197, 1198, -1, -1, 309, 310, 311, 312,
3614 313, 314, 315, 316, 849, -1, -1, -1, -1, -1,
3615 -1, 856, -1, 326, -1, 328, -1, -1, 331, -1,
3616 -1, -1, 867, -1, -1, 870, -1, -1, -1, -1,
3617 -1, -1, -1, -1, -1, -1, 53, 54, -1, -1,
3618 57, 843, -1, -1, -1, 783, 784, -1, -1, -1,
3619 -1, 364, -1, 366, -1, -1, 901, 370, 371, 372,
3620 862, -1, -1, 977, -1, 910, 83, -1, -1, -1,
3621 -1, 985, -1, 386, 877, 878, -1, -1, -1, 96,
3622 97, 98, 99, 886, 887, 888, -1, -1, -1, 892,
3623 893, -1, -1, -1, -1, -1, -1, 1011, -1, -1,
3624 -1, 414, 415, -1, -1, -1, -1, 909, -1, -1,
3625 -1, -1, -1, -1, -1, -1, 429, -1, -1, -1,
3626 52, -1, 54, 55, 56, 57, 58, -1, -1, -1,
3627 -1, -1, -1, -1, -1, 937, -1, -1, -1, 877,
3628 878, -1, -1, -1, -1, 77, -1, -1, 886, 887,
3629 888, -1, 465, 1067, 892, 893, -1, -1, -1, -1,
3630 -1, -1, -1, 1008, -1, 1010, -1, -1, -1, 101,
3631 -1, 484, -1, -1, 977, 107, 108, 109, -1, -1,
3632 -1, 52, 985, 54, 55, 56, 57, 58, -1, -1,
3633 -1, -1, 209, -1, -1, -1, -1, 25, -1, -1,
3634 1045, 133, -1, 1048, 136, -1, 77, -1, 1011, -1,
3635 1012, -1, -1, -1, -1, -1, 148, -1, -1, -1,
3636 -1, -1, -1, 1025, -1, 242, -1, 244, 1142, -1,
3637 101, -1, 1146, -1, -1, -1, 107, 108, 109, 977,
3638 257, 1086, 259, -1, -1, -1, -1, 985, 1162, 77,
3639 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
3640 88, 89, 133, 280, 1067, 136, 94, 95, 581, -1,
3641 583, -1, -1, 1011, -1, -1, 1121, 1122, 591, -1,
3642 -1, -1, -1, 1197, 1198, -1, -1, -1, 601, -1,
3643 603, 604, 309, -1, -1, -1, -1, 314, -1, 127,
3644 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3645 138, 328, 329, -1, -1, 1160, 1161, -1, -1, -1,
3646 -1, -1, -1, -1, -1, 638, -1, -1, -1, 1067,
3647 -1, -1, 52, -1, 54, 55, 56, 57, 58, 1142,
3648 -1, -1, -1, 1146, -1, -1, -1, -1, -1, 366,
3649 -1, -1, -1, 370, -1, 372, -1, 77, -1, 1162,
3650 -1, -1, -1, -1, -1, -1, 679, -1, -1, -1,
3651 683, 684, -1, -1, 687, 2, -1, 4, 691, 692,
3652 -1, 101, -1, -1, 697, 698, -1, 1232, 108, 109,
3653 -1, -1, -1, -1, 1197, 1198, -1, -1, -1, -1,
3654 -1, -1, -1, -1, 1142, -1, -1, -1, 1146, -1,
3655 -1, -1, -1, 133, 727, -1, 729, 730, 77, -1,
3656 -1, -1, -1, -1, 1162, -1, 53, 54, -1, -1,
3657 57, -1, -1, -1, -1, 94, 95, 2, -1, 4,
3658 -1, -1, -1, -1, -1, -1, -1, -1, 465, -1,
3659 -1, -1, -1, -1, -1, -1, 83, -1, -1, 1197,
3660 1198, -1, -1, -1, -1, 482, -1, -1, -1, 96,
3661 97, 98, 131, 132, 133, 134, 135, 136, 137, 138,
3662 -1, -1, -1, -1, -1, -1, -1, -1, 53, 54,
3663 -1, -1, 57, -1, -1, -1, -1, -1, -1, -1,
3664 -1, -1, -1, 816, -1, -1, -1, -1, -1, 526,
3665 -1, -1, -1, -1, -1, 828, -1, -1, 83, -1,
3666 833, 834, 33, 34, 35, 36, -1, -1, -1, -1,
3667 -1, 96, 97, 98, 99, -1, 849, -1, 49, 50,
3668 51, 52, -1, 856, -1, 56, -1, -1, 59, 60,
3669 61, 62, 63, -1, 867, -1, -1, 870, -1, -1,
3670 -1, -1, -1, -1, 581, -1, 583, -1, -1, -1,
3671 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
3672 91, -1, 209, -1, -1, -1, 603, 98, 901, -1,
3673 101, -1, -1, 104, 105, -1, 107, 910, -1, 110,
3674 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
3675 -1, -1, -1, -1, -1, 242, -1, 244, -1, -1,
3676 -1, 132, -1, -1, -1, 689, -1, -1, 139, -1,
3677 257, -1, 259, 650, -1, -1, -1, -1, -1, -1,
3678 -1, -1, -1, -1, 209, -1, -1, -1, -1, -1,
3679 -1, -1, -1, 280, -1, -1, -1, -1, -1, -1,
3680 -1, -1, 679, -1, -1, 682, 683, -1, -1, -1,
3681 -1, -1, 689, -1, -1, -1, 2, 242, 4, 244,
3682 -1, -1, 309, -1, -1, -1, -1, 314, -1, -1,
3683 -1, -1, 257, -1, 259, 1008, -1, 1010, -1, -1,
3684 -1, 328, 329, -1, 331, -1, -1, -1, -1, -1,
3685 727, -1, -1, 730, -1, 280, -1, -1, -1, 783,
3686 784, -1, -1, -1, -1, -1, -1, 53, 54, -1,
3687 -1, -1, 1045, -1, -1, 1048, -1, -1, -1, 366,
3688 -1, -1, -1, 370, 309, 372, -1, -1, -1, 314,
3689 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3690 -1, -1, -1, 328, 329, -1, 783, 784, -1, -1,
3691 96, -1, -1, 1086, -1, -1, -1, -1, -1, -1,
3692 -1, -1, -1, -1, -1, -1, -1, 414, 415, -1,
3693 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3694 -1, 366, -1, -1, -1, 370, -1, 372, 1121, 1122,
3695 -1, 828, -1, 877, 878, -1, 833, -1, -1, -1,
3696 -1, -1, 886, 887, 888, -1, -1, -1, 892, 893,
3697 -1, -1, 849, -1, -1, -1, -1, -1, 465, 856,
3698 -1, -1, -1, -1, -1, -1, -1, 1160, 1161, -1,
3699 867, -1, -1, 870, -1, 482, -1, -1, -1, -1,
3700 877, 878, -1, -1, -1, -1, -1, -1, -1, 886,
3701 887, 888, -1, -1, -1, 892, 893, -1, -1, -1,
3702 897, -1, -1, 209, 901, -1, -1, -1, -1, -1,
3703 -1, -1, -1, 910, -1, -1, -1, -1, -1, 526,
3704 465, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3705 -1, -1, 2, 977, 4, -1, 242, 482, 244, 1232,
3706 -1, 985, -1, -1, -1, -1, -1, -1, -1, -1,
3707 -1, 257, -1, 259, -1, -1, -1, -1, -1, -1,
3708 -1, -1, -1, -1, 961, -1, -1, 1011, -1, -1,
3709 -1, -1, -1, -1, 581, -1, 583, -1, -1, -1,
3710 977, 526, -1, 53, 54, -1, -1, -1, 985, -1,
3711 -1, -1, -1, -1, -1, -1, 603, -1, -1, -1,
3712 -1, -1, -1, 309, -1, -1, -1, -1, 314, -1,
3713 -1, 1008, -1, 1010, 1011, -1, -1, -1, -1, -1,
3714 -1, -1, 328, 1067, -1, 331, -1, -1, -1, -1,
3715 -1, -1, -1, -1, -1, -1, 581, -1, 583, -1,
3716 -1, -1, -1, 650, -1, -1, -1, -1, 1045, -1,
3717 -1, 1048, 659, -1, 1051, -1, -1, -1, 603, -1,
3718 366, -1, -1, -1, 370, -1, 372, -1, -1, -1,
3719 1067, -1, 679, -1, -1, 682, 683, 684, -1, -1,
3720 -1, -1, -1, -1, 691, 692, -1, -1, -1, -1,
3721 697, 698, -1, -1, -1, -1, -1, -1, 1142, -1,
3722 -1, -1, 1146, -1, -1, 650, -1, -1, 414, 415,
3723 -1, -1, -1, -1, 33, 34, 35, 36, 1162, -1,
3724 727, -1, -1, 730, 1121, 1122, -1, -1, -1, -1,
3725 49, 50, 51, -1, 679, -1, -1, 682, 683, 209,
3726 59, 60, 61, 62, 63, 1142, -1, -1, -1, 1146,
3727 -1, -1, -1, 1197, 1198, -1, -1, -1, -1, 465,
3728 -1, -1, -1, -1, -1, 1162, -1, -1, -1, -1,
3729 -1, -1, 242, -1, 244, -1, -1, -1, -1, -1,
3730 -1, -1, 727, -1, -1, 730, -1, 257, -1, 259,
3731 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
3732 1197, 1198, -1, -1, -1, -1, -1, -1, -1, 816,
3733 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
3734 139, 828, 86, 87, -1, -1, 833, -1, -1, -1,
3735 94, 95, -1, -1, -1, 1232, -1, -1, -1, 309,
3736 -1, -1, 849, -1, 314, -1, -1, -1, 689, 856,
3737 -1, -1, -1, -1, -1, -1, -1, -1, 328, -1,
3738 867, 331, -1, 870, -1, 129, 130, 131, 132, 133,
3739 134, 135, 136, 137, 138, 581, -1, 583, -1, -1,
3740 -1, -1, -1, 828, -1, -1, -1, -1, 833, -1,
3741 897, -1, -1, -1, 901, -1, 366, 603, -1, -1,
3742 370, -1, 372, 910, 849, -1, -1, -1, -1, -1,
3743 -1, 856, -1, -1, -1, -1, -1, -1, -1, -1,
3744 689, -1, 867, -1, -1, 870, -1, -1, -1, -1,
3745 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3746 -1, -1, 783, 784, 414, 415, -1, -1, -1, -1,
3747 -1, -1, 897, -1, 961, -1, 901, -1, -1, -1,
3748 -1, -1, -1, -1, -1, 910, -1, -1, -1, -1,
3749 -1, -1, -1, 679, -1, -1, -1, 683, 684, -1,
3750 -1, -1, -1, -1, -1, 691, 692, -1, -1, -1,
3751 -1, 697, 698, -1, -1, 465, -1, -1, -1, -1,
3752 -1, 1008, -1, 1010, -1, -1, -1, -1, -1, -1,
3753 -1, -1, -1, -1, 783, 784, 961, -1, -1, -1,
3754 -1, 727, -1, -1, 730, 77, 78, 79, 80, 81,
3755 82, 83, 84, -1, 86, 87, 877, 878, 1045, -1,
3756 -1, 1048, 94, 95, 1051, 886, 887, 888, -1, -1,
3757 -1, 892, 893, -1, -1, -1, -1, -1, -1, -1,
3758 -1, -1, -1, 1008, -1, 1010, -1, -1, -1, -1,
3759 -1, -1, -1, -1, -1, -1, -1, 129, 130, 131,
3760 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
3761 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3762 1045, -1, -1, 1048, -1, -1, 1051, -1, 877, 878,
3763 816, 581, -1, 583, 1121, 1122, -1, 886, 887, 888,
3764 -1, -1, 828, 892, 893, -1, -1, 833, -1, -1,
3765 -1, -1, -1, 603, 16, 17, 977, -1, -1, -1,
3766 -1, -1, -1, 849, 985, -1, -1, -1, -1, -1,
3767 856, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3768 -1, 867, -1, -1, 870, -1, 48, 49, 50, 51,
3769 1011, -1, -1, 55, 56, -1, 1121, 1122, -1, -1,
3770 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
3771 -1, 897, -1, -1, -1, 901, -1, -1, -1, -1,
3772 -1, -1, -1, -1, 910, -1, -1, -1, 977, 679,
3773 -1, -1, -1, 683, 684, -1, 985, -1, 100, -1,
3774 -1, 691, 692, -1, -1, 1232, 1067, 697, 698, -1,
3775 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
3776 -1, -1, 1011, -1, -1, -1, -1, 8, 9, 10,
3777 -1, -1, 13, 14, 15, -1, 17, 727, -1, -1,
3778 730, -1, -1, -1, 25, 26, 27, -1, -1, -1,
3779 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
3780 41, 42, 43, 44, -1, -1, -1, 1232, -1, -1,
3781 -1, -1, -1, -1, -1, -1, -1, -1, 1067, -1,
3782 -1, 1142, 1008, -1, 1010, 1146, -1, 68, -1, -1,
3783 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3784 -1, 1162, -1, -1, -1, 207, -1, -1, 210, 211,
3785 212, -1, 214, -1, -1, 96, 97, -1, -1, 1045,
3786 -1, -1, 1048, -1, -1, -1, 816, -1, 230, -1,
3787 232, 233, -1, -1, -1, -1, 1197, 1198, 828, 120,
3788 -1, -1, -1, 833, -1, -1, -1, -1, -1, -1,
3789 -1, -1, -1, 1142, -1, -1, -1, 1146, -1, 849,
3790 -1, -1, 143, 144, -1, -1, 856, 148, 149, -1,
3791 151, -1, 153, 1162, -1, -1, -1, 867, -1, -1,
3792 870, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3793 -1, -1, -1, -1, -1, 1121, 1122, -1, -1, -1,
3794 -1, -1, -1, -1, -1, -1, -1, -1, 1197, 1198,
3795 -1, 901, -1, -1, -1, -1, -1, -1, -1, -1,
3796 910, -1, -1, -1, 326, -1, -1, -1, -1, 331,
3797 -1, 333, 334, 335, 336, 337, -1, -1, 340, 341,
3798 342, 343, 344, 345, 346, 347, 348, -1, -1, 351,
3799 352, 353, 354, 355, 356, 357, 358, 359, 360, -1,
3800 -1, -1, 364, -1, -1, -1, -1, -1, -1, -1,
3801 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3802 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
3803 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
3804 -1, -1, -1, 94, 95, -1, 1232, -1, -1, -1,
3805 -1, -1, 414, 415, -1, -1, -1, -1, 1008, -1,
3806 1010, 423, 424, 425, -1, -1, -1, 429, -1, 431,
3807 432, 433, -1, -1, -1, -1, 127, 439, 129, 130,
3808 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
3809 -1, -1, 454, -1, -1, 1045, -1, 459, 1048, -1,
3810 -1, -1, 153, -1, -1, -1, -1, -1, 470, -1,
3811 -1, 473, -1, -1, -1, -1, -1, -1, -1, -1,
3812 -1, -1, 484, -1, -1, -1, -1, -1, -1, -1,
3813 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3814 502, 77, 78, 79, 80, 81, 82, 83, 84, 85,
3815 86, 87, 88, 89, -1, -1, -1, 519, 94, 95,
3816 -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
3817 -1, 1121, 1122, -1, 8, 9, 10, -1, -1, -1,
3818 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
3819 -1, 25, 26, 129, 130, 131, 132, 133, 134, 135,
3820 136, 137, 138, 37, 38, -1, 40, 41, 42, 43,
3821 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3822 -1, -1, -1, -1, -1, -1, -1, -1, -1, 591,
3823 -1, -1, -1, -1, 68, -1, -1, -1, -1, 601,
3824 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
3825 84, 85, 86, 87, 88, 89, 618, -1, 620, -1,
3826 94, 95, 96, 97, -1, 99, -1, -1, -1, -1,
3827 -1, 633, -1, 635, -1, -1, -1, -1, -1, -1,
3828 -1, -1, 1232, -1, -1, -1, 120, -1, -1, -1,
3829 -1, -1, 126, 127, -1, 129, 130, 131, 132, 133,
3830 134, 135, 136, 137, 138, -1, -1, -1, -1, 143,
3831 144, 145, 146, -1, -1, 149, 678, 151, -1, 153,
3832 -1, -1, 684, 685, -1, 687, -1, -1, -1, 691,
3833 692, -1, -1, -1, -1, 697, 698, -1, 0, -1,
3834 -1, -1, -1, 705, -1, -1, 8, 9, 10, -1,
3835 -1, 13, 14, 15, -1, 17, -1, -1, 720, -1,
3836 -1, -1, -1, 25, -1, 27, 28, 29, -1, -1,
3837 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
3838 42, 43, 44, 745, 746, -1, 748, 749, -1, -1,
3839 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3840 -1, -1, -1, -1, -1, -1, 68, -1, 770, -1,
3841 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
3842 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
3843 -1, -1, 94, 95, 96, 97, -1, 99, 100, -1,
3844 -1, -1, -1, -1, 106, -1, -1, 809, -1, -1,
3845 -1, -1, -1, -1, 816, -1, -1, -1, 120, -1,
3846 -1, 123, -1, -1, 126, 127, 128, 129, 130, 131,
3847 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
3848 -1, 843, 144, 145, 146, -1, -1, 149, 150, 151,
3849 -1, 153, -1, -1, -1, -1, -1, -1, -1, 861,
3850 862, -1, -1, 0, 1, -1, 3, 4, 5, 6,
3851 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
3852 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
3853 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
3854 -1, -1, 39, -1, -1, -1, -1, 909, 45, 46,
3855 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
3856 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
3857 -1, -1, -1, -1, -1, 937, -1, -1, 75, 76,
3858 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3859 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
3860 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
3861 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
3862 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
3863 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3864 -1, -1, 139, 140, 141, -1, -1, -1, -1, -1,
3865 1012, 0, -1, -1, 151, -1, 153, -1, -1, 8,
3866 9, 10, -1, 1025, 13, 14, 15, -1, 17, -1,
3867 -1, -1, -1, -1, -1, -1, 25, 26, 27, 28,
3868 29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
3869 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
3870 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
3871 79, 80, 81, 82, 83, -1, -1, 86, 87, 68,
3872 -1, -1, -1, -1, 1086, 94, 95, -1, 77, 78,
3873 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
3874 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
3875 99, 100, -1, -1, -1, -1, -1, 106, -1, -1,
3876 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
3877 -1, 120, -1, -1, 123, -1, -1, 126, 127, 128,
3878 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
3879 -1, -1, -1, -1, 143, 144, 145, 146, 0, -1,
3880 149, 150, 151, -1, 153, -1, 8, 9, 10, -1,
3881 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
3882 44, -1, -1, 25, -1, 27, 28, 29, -1, -1,
3883 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
3884 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
3885 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
3886 84, 85, 86, 87, 88, 89, 68, -1, -1, -1,
3887 94, 95, -1, -1, -1, 77, 78, 79, 80, 81,
3888 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
3889 -1, -1, 94, 95, 96, 97, -1, 99, 100, -1,
3890 -1, -1, -1, 127, 106, 129, 130, 131, 132, 133,
3891 134, 135, 136, 137, 138, -1, -1, -1, 120, -1,
3892 -1, 123, 146, -1, 126, 127, 128, 129, 130, 131,
3893 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
3894 -1, -1, 144, 145, 146, 0, -1, 149, 150, 151,
3895 -1, 153, -1, 8, 9, 10, -1, -1, 13, 14,
3896 15, -1, 17, -1, -1, -1, -1, 44, -1, -1,
3897 25, 26, 27, 28, 29, -1, -1, -1, -1, -1,
3898 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
3899 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3900 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
3901 87, 88, 89, 68, -1, -1, -1, 94, 95, -1,
3902 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
3903 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
3904 95, 96, 97, -1, -1, 100, -1, -1, -1, -1,
3905 127, 106, 129, 130, 131, 132, 133, 134, 135, 136,
3906 137, 138, -1, -1, -1, 120, -1, -1, 123, -1,
3907 -1, -1, 127, 128, 129, 130, 131, 132, 133, 134,
3908 135, 136, 137, 138, -1, -1, -1, -1, 143, 144,
3909 145, 146, 0, -1, 149, 150, 151, -1, 153, -1,
3910 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
3911 -1, -1, -1, -1, -1, -1, -1, 25, 26, 27,
3912 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
3913 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
3914 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
3915 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
3916 68, -1, -1, -1, 94, 95, -1, -1, -1, 77,
3917 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
3918 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
3919 -1, -1, 100, -1, -1, -1, -1, 127, 106, 129,
3920 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
3921 -1, -1, 120, -1, -1, 123, -1, -1, -1, 127,
3922 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3923 138, -1, -1, -1, -1, 143, 144, 145, 146, 0,
3924 -1, 149, 150, 151, -1, 153, -1, 8, 9, 10,
3925 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
3926 -1, -1, -1, -1, 25, -1, 27, 28, 29, -1,
3927 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
3928 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
3929 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3930 -1, -1, -1, -1, -1, -1, -1, 68, -1, -1,
3931 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
3932 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
3933 -1, -1, -1, 94, 95, 96, 97, -1, 99, 100,
3934 -1, -1, -1, -1, -1, 106, -1, -1, -1, -1,
3935 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
3936 -1, -1, 123, -1, -1, 126, 127, 128, 129, 130,
3937 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
3938 -1, -1, -1, 144, 145, 146, 0, -1, 149, 150,
3939 151, -1, 153, -1, 8, 9, 10, -1, -1, 13,
3940 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
3941 -1, 25, 26, 27, 28, -1, -1, -1, -1, -1,
3942 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
3943 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3944 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3945 -1, -1, -1, -1, 68, -1, -1, -1, -1, -1,
3946 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
3947 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
3948 94, 95, 96, 97, -1, -1, 100, -1, -1, -1,
3949 -1, -1, 106, -1, -1, -1, -1, -1, -1, -1,
3950 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
3951 -1, -1, -1, 127, -1, 129, 130, 131, 132, 133,
3952 134, 135, 136, 137, 138, -1, -1, -1, -1, 143,
3953 144, 145, 146, 0, 148, 149, 150, 151, -1, 153,
3954 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
3955 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
3956 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
3957 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
3958 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3959 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3960 -1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
3961 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
3962 87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
3963 97, -1, -1, 100, -1, -1, -1, -1, -1, 106,
3964 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3965 -1, -1, -1, 120, -1, -1, 123, -1, -1, -1,
3966 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
3967 137, 138, -1, -1, -1, -1, -1, 144, 145, 146,
3968 0, -1, 149, 150, 151, -1, 153, -1, 8, 9,
3969 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
3970 -1, -1, -1, -1, -1, 25, 26, 27, 28, -1,
3971 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
3972 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
3973 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3974 -1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
3975 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
3976 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
3977 -1, -1, -1, -1, 94, 95, 96, 97, -1, -1,
3978 100, -1, -1, -1, -1, -1, 106, -1, -1, -1,
3979 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3980 120, -1, -1, -1, -1, -1, -1, 127, -1, 129,
3981 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
3982 -1, -1, -1, 143, 144, 145, 146, 0, 148, 149,
3983 150, 151, -1, 153, -1, 8, 9, 10, -1, -1,
3984 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
3985 -1, -1, 25, -1, 27, 28, -1, -1, -1, -1,
3986 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
3987 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
3988 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3989 -1, -1, -1, -1, -1, 68, -1, -1, -1, -1,
3990 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
3991 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
3992 -1, 94, 95, 96, 97, -1, -1, 100, -1, -1,
3993 -1, -1, -1, 106, -1, -1, -1, -1, -1, -1,
3994 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
3995 -1, -1, -1, -1, 127, -1, 129, 130, 131, 132,
3996 133, 134, 135, 136, 137, 138, -1, -1, -1, -1,
3997 -1, 144, 145, 146, 0, 148, 149, 150, 151, -1,
3998 153, -1, 8, 9, 10, -1, -1, -1, 14, 15,
3999 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
4000 26, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4001 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
4002 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4003 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4004 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
4005 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
4006 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
4007 96, 97, -1, 99, -1, -1, -1, -1, -1, -1,
4008 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4009 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
4010 126, 127, -1, 129, 130, 131, 132, 133, 134, 135,
4011 136, 137, 138, -1, -1, -1, -1, 143, 144, 145,
4012 146, 0, -1, 149, -1, 151, -1, 153, -1, 8,
4013 9, 10, -1, -1, -1, 14, 15, -1, 17, -1,
4014 -1, -1, -1, -1, -1, -1, 25, -1, -1, -1,
4015 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
4016 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
4017 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4018 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
4019 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
4020 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4021 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
4022 99, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4023 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4024 -1, 120, -1, -1, -1, -1, -1, 126, 127, -1,
4025 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4026 -1, -1, -1, -1, -1, 144, 145, 146, 0, -1,
4027 149, -1, 151, -1, 153, -1, 8, 9, 10, -1,
4028 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
4029 -1, -1, -1, 25, -1, -1, -1, -1, -1, -1,
4030 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
4031 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
4032 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4033 -1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
4034 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
4035 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
4036 -1, -1, 94, 95, 96, 97, -1, 99, -1, -1,
4037 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4038 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
4039 -1, -1, -1, -1, 126, 127, -1, 129, 130, 131,
4040 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4041 -1, -1, 144, 145, 146, -1, -1, 149, -1, 151,
4042 1, 153, 3, 4, 5, 6, 7, 8, 9, 10,
4043 11, 12, -1, -1, 15, 16, -1, 18, 19, 20,
4044 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4045 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4046 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4047 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4048 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4049 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4050 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4051 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4052 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4053 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4054 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4055 -1, -1, -1, -1, -1, -1, -1, -1, 139, 140,
4056 141, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4057 151, 1, 153, 3, 4, 5, 6, 7, -1, -1,
4058 10, 11, 12, -1, 14, 15, 16, -1, 18, 19,
4059 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4060 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4061 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4062 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4063 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4064 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4065 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4066 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4067 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4068 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4069 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4070 -1, -1, -1, -1, -1, -1, -1, -1, -1, 139,
4071 140, 141, -1, -1, -1, -1, -1, -1, -1, -1,
4072 -1, 151, 1, 153, 3, 4, 5, 6, 7, -1,
4073 -1, 10, 11, 12, -1, -1, 15, 16, 17, 18,
4074 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4075 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4076 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
4077 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
4078 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4079 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4080 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4081 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4082 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
4083 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4084 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4085 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4086 139, 140, 141, -1, -1, -1, -1, -1, -1, -1,
4087 -1, -1, 151, 1, 153, 3, 4, 5, 6, 7,
4088 -1, -1, 10, 11, 12, -1, -1, 15, 16, -1,
4089 18, 19, 20, 21, 22, 23, 24, 25, -1, -1,
4090 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4091 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
4092 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4093 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4094 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4095 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4096 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4097 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4098 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4099 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4100 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4101 -1, 139, 140, 141, -1, -1, -1, -1, -1, -1,
4102 -1, -1, -1, 151, 1, 153, 3, 4, 5, 6,
4103 7, -1, -1, 10, 11, 12, -1, -1, 15, 16,
4104 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4105 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4106 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4107 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4108 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4109 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4110 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4111 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4112 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4113 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4114 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4115 1, -1, 3, 4, 5, 6, 7, -1, 9, 10,
4116 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4117 21, 22, 23, 24, 151, -1, 153, -1, -1, 30,
4118 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4119 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4120 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4121 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4122 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4123 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4124 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4125 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4126 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4127 -1, -1, -1, -1, -1, -1, 1, -1, 3, 4,
4128 5, 6, 7, -1, -1, -1, 11, 12, 139, 140,
4129 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4130 151, -1, 153, -1, -1, 30, 31, 32, 33, 34,
4131 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4132 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4133 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4134 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4135 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4136 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4137 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4138 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4139 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4140 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4141 -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
4142 -1, -1, -1, -1, 149, -1, 151, 1, 153, 3,
4143 4, 5, 6, 7, -1, -1, -1, 11, 12, -1,
4144 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
4145 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4146 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4147 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4148 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4149 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4150 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4151 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4152 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4153 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4154 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4155 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4156 -1, -1, -1, -1, -1, 139, 140, 141, -1, -1,
4157 -1, -1, -1, -1, -1, 149, -1, 151, 1, 153,
4158 3, 4, 5, 6, 7, -1, -1, -1, 11, 12,
4159 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
4160 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4161 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4162 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
4163 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4164 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4165 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4166 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4167 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4168 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
4169 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4170 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4171 -1, -1, -1, -1, -1, -1, 139, 140, 141, -1,
4172 -1, 144, -1, -1, -1, -1, -1, -1, 151, 1,
4173 153, 3, 4, 5, 6, 7, -1, -1, -1, 11,
4174 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
4175 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4176 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4177 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
4178 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4179 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4180 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4181 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4182 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4183 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4184 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4185 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4186 -1, -1, -1, -1, -1, -1, -1, 139, 140, 141,
4187 -1, -1, 144, -1, -1, -1, -1, -1, -1, 151,
4188 1, 153, 3, 4, 5, 6, 7, -1, -1, 10,
4189 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
4190 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4191 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4192 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4193 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4194 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4195 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4196 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4197 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4198 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4199 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4200 -1, -1, -1, -1, -1, -1, 1, -1, 3, 4,
4201 5, 6, 7, -1, -1, -1, 11, 12, 139, 140,
4202 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4203 151, -1, 153, -1, -1, 30, 31, 32, 33, 34,
4204 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4205 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4206 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4207 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4208 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4209 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4210 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4211 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4212 115, 116, 117, 118, -1, 120, -1, -1, -1, -1,
4213 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
4214 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
4215 19, 20, 21, 22, 23, 24, 151, -1, 153, -1,
4216 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4217 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
4218 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
4219 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4220 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4221 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4222 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4223 -1, -1, 101, 102, -1, 104, 105, -1, 107, 108,
4224 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4225 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4226 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
4227 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
4228 23, 24, -1, -1, 153, -1, -1, 30, 31, 32,
4229 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4230 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
4231 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4232 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4233 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4234 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4235 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4236 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
4237 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4238 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
4239 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
4240 -1, 18, 19, 20, 21, 22, 23, 24, 151, -1,
4241 153, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4242 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
4243 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
4244 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4245 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4246 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4247 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4248 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4249 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4250 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4251 -1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
4252 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4253 21, 22, 23, 24, -1, -1, 153, -1, -1, 30,
4254 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4255 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4256 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4257 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4258 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4259 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4260 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4261 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4262 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4263 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
4264 5, 6, 7, -1, -1, -1, 11, 12, 139, 140,
4265 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4266 151, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4267 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4268 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4269 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4270 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4271 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4272 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4273 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4274 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4275 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4276 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4277 -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
4278 -1, -1, -1, -1, -1, -1, 151, 3, 4, 5,
4279 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
4280 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
4281 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4282 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
4283 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4284 56, 57, -1, -1, -1, -1, -1, -1, -1, -1,
4285 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4286 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
4287 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
4288 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4289 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
4290 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4291 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
4292 136, 137, 138, -1, 140, 141, -1, -1, -1, -1,
4293 -1, 147, 148, 3, 4, 5, 6, 7, 8, 9,
4294 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
4295 20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
4296 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4297 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4298 50, 51, 52, 53, 54, 55, 56, 57, -1, -1,
4299 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4300 -1, -1, -1, -1, -1, 75, 76, 77, 78, 79,
4301 80, 81, 82, 83, -1, -1, 86, 87, -1, -1,
4302 -1, -1, 92, 93, 94, 95, -1, -1, -1, -1,
4303 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
4304 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4305 -1, -1, -1, -1, -1, -1, -1, -1, -1, 129,
4306 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4307 140, 141, -1, -1, -1, -1, -1, 147, 3, 4,
4308 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
4309 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
4310 25, 26, -1, -1, -1, 30, 31, 32, 33, 34,
4311 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
4312 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4313 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
4314 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4315 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4316 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4317 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4318 -1, -1, 107, 108, -1, -1, 111, -1, -1, -1,
4319 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4320 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4321 135, 136, 137, 138, -1, 140, 141, -1, -1, -1,
4322 -1, -1, 147, 3, 4, 5, 6, 7, 8, 9,
4323 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
4324 20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
4325 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4326 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4327 50, 51, 52, 53, -1, -1, 56, -1, -1, -1,
4328 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4329 -1, -1, -1, -1, -1, 75, 76, 77, 78, 79,
4330 80, 81, 82, 83, -1, -1, 86, 87, -1, -1,
4331 -1, -1, 92, 93, 94, 95, -1, -1, -1, -1,
4332 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
4333 -1, 111, -1, -1, -1, -1, -1, -1, -1, -1,
4334 -1, -1, -1, -1, -1, -1, -1, -1, -1, 129,
4335 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4336 140, 141, -1, -1, -1, -1, -1, 147, 3, 4,
4337 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
4338 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
4339 25, 26, -1, -1, -1, 30, 31, 32, 33, 34,
4340 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
4341 45, 46, 47, 48, 49, 50, 51, 52, 53, -1,
4342 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
4343 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4344 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4345 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4346 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4347 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4348 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4349 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4350 135, 136, 137, 138, -1, 140, 141, 3, 4, 5,
4351 -1, 7, 147, -1, -1, 11, 12, -1, -1, -1,
4352 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4353 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4354 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4355 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4356 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4357 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4358 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4359 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4360 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4361 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
4362 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4363 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
4364 7, -1, -1, 139, 11, 12, -1, -1, -1, 16,
4365 146, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4366 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4367 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
4368 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
4369 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4370 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4371 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4372 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4373 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4374 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4375 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4376 -1, -1, -1, -1, -1, 3, 4, 5, 6, 7,
4377 -1, -1, 139, 11, 12, -1, -1, -1, 16, 146,
4378 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4379 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4380 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
4381 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4382 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4383 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4384 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4385 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4386 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4387 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4388 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4389 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4390 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4391 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4392 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4393 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4394 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
4395 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4396 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4397 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4398 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4399 102, -1, 104, 105, -1, 107, 108, 109, 110, 111,
4400 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4401 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4402 6, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4403 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4404 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4405 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4406 46, -1, 48, 49, 50, 51, 52, 53, 54, 55,
4407 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4408 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4409 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4410 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4411 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4412 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4413 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4414 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4415 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4416 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4417 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4418 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4419 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
4420 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4421 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4422 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4423 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4424 -1, 101, 102, -1, 104, 105, -1, 107, 108, 109,
4425 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4426 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4427 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4428 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4429 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4430 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4431 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4432 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
4433 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4434 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4435 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4436 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4437 104, 105, -1, 107, 108, 109, 110, 111, 112, 113,
4438 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4439 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4440 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4441 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4442 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4443 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4444 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4445 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4446 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4447 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4448 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4449 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4450 108, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4451 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4452 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4453 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4454 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4455 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4456 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4457 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
4458 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4459 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4460 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4461 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4462 102, -1, 104, 105, -1, -1, 108, 109, 110, 111,
4463 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4464 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4465 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4466 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4467 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4468 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4469 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4470 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4471 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4472 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4473 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4474 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4475 -1, 107, 108, -1, 110, 111, 112, 113, 114, 115,
4476 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4477 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4478 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4479 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4480 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4481 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4482 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
4483 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4484 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4485 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4486 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4487 -1, 101, 102, -1, 104, 105, -1, -1, 108, -1,
4488 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4489 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4490 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4491 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4492 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4493 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4494 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4495 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4496 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4497 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4498 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4499 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4500 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4501 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4502 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4503 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4504 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4505 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4506 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4507 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4508 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4509 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4510 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4511 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4512 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4513 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4514 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4515 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4516 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4517 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4518 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4519 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4520 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4521 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4522 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4523 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4524 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4525 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4526 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4527 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4528 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4529 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4530 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4531 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4532 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4533 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4534 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4535 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4536 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4537 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4538 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4539 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4540 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4541 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4542 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4543 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4544 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4545 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4546 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4547 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4548 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4549 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4550 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4551 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4552 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4553 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4554 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4555 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4556 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4557 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4558 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4559 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4560 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4561 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4562 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4563 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
4564 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4565 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4566 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4567 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4568 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4569 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4570 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4571 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4572 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4573 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4574 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4575 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
4576 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4577 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4578 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4579 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4580 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4581 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4582 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4583 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4584 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4585 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4586 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4587 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4588 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
4589 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4590 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4591 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4592 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4593 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4594 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4595 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4596 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4597 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4598 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4599 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4600 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4601 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4602 116, 117, 118, -1, -1, -1, -1, -1, -1, 3,
4603 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
4604 -1, -1, 16, 139, 18, 19, 20, 21, 22, 23,
4605 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4606 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4607 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4608 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4609 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4610 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4611 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4612 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4613 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4614 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4615 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4616 12, -1, -1, -1, 16, 139, 18, 19, 20, 21,
4617 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4618 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4619 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4620 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4621 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4622 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4623 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4624 -1, -1, 94, -1, -1, -1, 98, -1, -1, 101,
4625 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
4626 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4627 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4628 -1, 11, 12, -1, -1, -1, 16, 139, 18, 19,
4629 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4630 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4631 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4632 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4633 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4634 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4635 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4636 -1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
4637 -1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
4638 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4639 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4640 -1, -1, -1, 11, 12, -1, -1, -1, 16, 139,
4641 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4642 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4643 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4644 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4645 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4646 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4647 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4648 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4649 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
4650 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4651 118, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4652 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
4653 16, 139, 18, 19, 20, 21, 22, 23, 24, -1,
4654 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4655 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4656 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4657 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4658 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4659 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4660 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4661 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4662 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
4663 116, 117, 118, -1, -1, -1, -1, -1, -1, 3,
4664 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
4665 -1, -1, 16, 139, 18, 19, 20, 21, 22, 23,
4666 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4667 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4668 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4669 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4670 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4671 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4672 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4673 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4674 104, 105, 33, 34, 35, 36, 110, 111, 112, 113,
4675 114, 115, 116, 117, 118, -1, -1, -1, 49, 50,
4676 51, 52, -1, -1, -1, 56, -1, 58, 59, 60,
4677 61, 62, 63, -1, -1, 139, -1, -1, -1, -1,
4678 -1, -1, -1, -1, -1, -1, 77, -1, -1, -1,
4679 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4680 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4681 101, -1, -1, 104, 105, -1, 107, 108, -1, 110,
4682 111, 112, 113, 114, 115, 116, 117, 118, 33, 34,
4683 35, 36, -1, -1, -1, -1, -1, -1, -1, -1,
4684 -1, 132, -1, -1, 49, 50, 51, 52, 139, -1,
4685 -1, 56, -1, -1, 59, 60, 61, 62, 63, -1,
4686 -1, 33, 34, 35, 36, -1, -1, -1, -1, -1,
4687 -1, -1, -1, -1, -1, -1, -1, 49, 50, 51,
4688 52, -1, -1, -1, 56, 90, 91, 59, 60, 61,
4689 62, 63, -1, 98, -1, -1, 101, -1, -1, 104,
4690 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4691 115, 116, 117, 118, -1, -1, -1, -1, 90, 91,
4692 -1, -1, -1, -1, -1, -1, 98, 132, -1, 101,
4693 -1, -1, 104, 105, 139, -1, -1, -1, 110, 111,
4694 112, 113, 114, 115, 116, 117, 118, 52, 53, -1,
4695 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
4696 132, -1, -1, -1, -1, -1, -1, 139, -1, -1,
4697 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4698 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4699 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4700 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4701 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4702 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4703 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4704 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4705 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4706 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4707 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4708 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4709 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4710 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4711 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4712 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4713 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4714 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4715 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4716 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4717 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4718 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4719 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4720 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4721 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4722 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4723 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4724 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4725 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4726 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4727 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4728 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4729 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4730 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4731 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4732 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4733 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4734 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4735 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4736 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4737 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4738 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4739 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4740 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4741 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4742 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4743 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4744 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4745 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4746 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4747 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4748 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4749 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4750 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4751 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4752 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4753 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4754 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4755 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4756 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4757 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4758 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4759 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4760 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4761 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4762 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4763 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4764 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4765 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4766 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4767 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4768 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4769 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4770 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4771 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4772 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4773 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4774 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4775 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4776 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4777 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4778 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4779 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4780 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4781 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4782 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4783 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4784 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4785 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4786 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4787 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4788 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4789 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4790 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4791 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4792 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4793 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4794 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4795 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4796 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4797 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4798 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4799 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4800 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4801 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4802 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4803 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4804 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4805 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4806 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4807 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4808 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4809 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4810 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4811 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4812 -1, 56, 147, 148, -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, 52, 53, -1,
4821 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4822 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4823 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4824 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4825 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4826 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4827 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4828 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4829 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4830 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4831 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4832 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4833 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4834 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4835 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4836 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4837 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4838 135, 136, 137, 138, -1, 140, 141, -1, -1, -1,
4846 0, 155, 156, 0, 1, 3, 4, 5, 6, 7,
4847 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
4848 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
4849 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4850 57, 59, 60, 61, 62, 63, 64, 65, 75, 76,
4851 90, 91, 98, 101, 102, 104, 105, 107, 110, 111,
4852 112, 113, 114, 115, 116, 117, 118, 139, 140, 141,
4853 157, 158, 159, 167, 169, 171, 179, 180, 182, 183,
4854 184, 186, 187, 188, 190, 191, 200, 203, 218, 233,
4855 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
4856 252, 279, 280, 333, 334, 335, 336, 337, 338, 339,
4857 342, 344, 345, 359, 360, 362, 363, 364, 365, 366,
4858 367, 368, 369, 405, 418, 159, 3, 4, 5, 6,
4859 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
4860 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
4861 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4862 45, 46, 47, 48, 49, 50, 51, 52, 53, 56,
4863 75, 76, 77, 78, 79, 80, 81, 82, 83, 86,
4864 87, 92, 93, 94, 95, 107, 108, 129, 130, 131,
4865 132, 133, 134, 135, 136, 137, 138, 140, 141, 147,
4866 194, 195, 196, 198, 199, 359, 39, 58, 98, 101,
4867 107, 108, 109, 112, 140, 183, 191, 200, 204, 210,
4868 213, 215, 233, 365, 366, 368, 369, 403, 404, 210,
4869 148, 211, 212, 148, 207, 211, 148, 153, 412, 54,
4870 195, 412, 143, 160, 143, 21, 22, 31, 32, 182,
4871 200, 233, 252, 200, 200, 200, 56, 1, 47, 101,
4872 163, 164, 165, 167, 185, 186, 418, 167, 220, 205,
4873 215, 403, 418, 204, 402, 403, 418, 46, 98, 139,
4874 146, 190, 218, 233, 365, 366, 369, 223, 54, 55,
4875 57, 194, 348, 361, 348, 349, 350, 152, 152, 152,
4876 152, 364, 179, 200, 200, 151, 153, 411, 416, 417,
4877 40, 41, 42, 43, 44, 37, 38, 26, 143, 207,
4878 211, 244, 281, 28, 245, 278, 126, 146, 101, 107,
4879 187, 126, 25, 77, 78, 79, 80, 81, 82, 83,
4880 84, 85, 86, 87, 88, 89, 94, 95, 127, 129,
4881 130, 131, 132, 133, 134, 135, 136, 137, 138, 202,
4882 202, 68, 96, 97, 145, 409, 219, 171, 175, 175,
4883 176, 177, 176, 175, 411, 417, 98, 184, 191, 233,
4884 257, 365, 366, 369, 52, 56, 94, 98, 192, 193,
4885 233, 365, 366, 369, 193, 33, 34, 35, 36, 49,
4886 50, 51, 52, 56, 148, 194, 367, 400, 210, 97,
4887 409, 410, 281, 336, 99, 99, 146, 204, 56, 204,
4888 204, 204, 348, 126, 100, 146, 214, 418, 97, 145,
4889 409, 99, 99, 146, 214, 210, 412, 413, 210, 91,
4890 209, 210, 215, 377, 403, 418, 171, 413, 171, 54,
4891 64, 65, 168, 148, 201, 157, 163, 97, 409, 99,
4892 167, 166, 185, 149, 411, 417, 413, 221, 413, 150,
4893 146, 153, 415, 146, 415, 144, 415, 412, 56, 364,
4894 187, 189, 146, 97, 145, 409, 270, 271, 66, 119,
4895 121, 122, 351, 119, 119, 351, 67, 351, 340, 346,
4896 343, 347, 77, 151, 159, 175, 175, 175, 175, 167,
4897 171, 171, 282, 283, 106, 181, 286, 287, 286, 107,
4898 179, 204, 215, 216, 217, 185, 146, 190, 146, 169,
4899 170, 179, 191, 200, 204, 206, 217, 233, 369, 172,
4900 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4901 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4902 200, 200, 200, 200, 52, 53, 56, 198, 207, 406,
4903 407, 209, 52, 53, 56, 198, 207, 406, 161, 163,
4904 13, 253, 416, 253, 163, 175, 163, 411, 225, 56,
4905 97, 145, 409, 25, 171, 52, 56, 192, 130, 370,
4906 97, 145, 409, 228, 401, 229, 68, 97, 408, 52,
4907 56, 406, 170, 200, 206, 170, 206, 197, 124, 204,
4908 107, 204, 213, 403, 52, 56, 209, 52, 56, 404,
4909 413, 149, 413, 146, 413, 146, 413, 195, 222, 200,
4910 144, 144, 406, 406, 206, 160, 413, 165, 413, 403,
4911 146, 189, 52, 56, 209, 52, 56, 272, 353, 352,
4912 119, 341, 351, 66, 119, 119, 341, 66, 119, 200,
4913 144, 284, 282, 10, 251, 288, 251, 204, 146, 44,
4914 413, 189, 146, 44, 126, 44, 97, 145, 409, 173,
4915 412, 99, 99, 207, 211, 412, 414, 99, 99, 207,
4916 208, 211, 418, 251, 8, 246, 329, 418, 163, 13,
4917 163, 251, 27, 254, 416, 251, 25, 224, 293, 17,
4918 248, 291, 52, 56, 209, 52, 56, 176, 227, 371,
4919 226, 52, 56, 192, 209, 161, 171, 230, 231, 208,
4920 211, 195, 204, 204, 214, 99, 99, 414, 99, 99,
4921 403, 171, 415, 187, 414, 273, 354, 54, 55, 57,
4922 358, 369, 152, 351, 152, 152, 152, 285, 144, 289,
4923 107, 204, 167, 189, 167, 200, 52, 56, 209, 52,
4924 56, 52, 56, 90, 91, 98, 101, 104, 105, 110,
4925 132, 303, 304, 305, 308, 323, 324, 326, 327, 328,
4926 333, 334, 337, 338, 339, 342, 344, 345, 366, 128,
4927 170, 206, 170, 206, 181, 150, 99, 170, 206, 170,
4928 206, 181, 204, 217, 330, 418, 9, 15, 247, 249,
4929 332, 418, 14, 249, 250, 255, 256, 418, 256, 178,
4930 294, 291, 251, 107, 204, 290, 251, 414, 163, 416,
4931 175, 161, 414, 251, 413, 148, 372, 373, 194, 281,
4932 278, 99, 146, 413, 274, 355, 131, 265, 266, 418,
4933 265, 204, 414, 324, 324, 56, 192, 311, 309, 414,
4934 144, 310, 325, 52, 100, 174, 131, 88, 89, 97,
4935 145, 148, 306, 307, 200, 170, 206, 100, 331, 418,
4936 163, 162, 163, 175, 251, 251, 295, 251, 204, 146,
4937 253, 251, 161, 416, 251, 52, 54, 55, 56, 57,
4938 58, 77, 91, 101, 107, 108, 109, 133, 136, 374,
4939 376, 377, 378, 379, 380, 381, 382, 383, 384, 387,
4940 388, 389, 390, 391, 394, 395, 396, 397, 398, 161,
4941 376, 232, 148, 276, 376, 356, 262, 264, 267, 380,
4942 382, 383, 385, 386, 389, 390, 392, 393, 396, 398,
4943 412, 163, 161, 303, 107, 303, 312, 313, 314, 316,
4944 58, 112, 317, 318, 319, 320, 321, 322, 388, 270,
4945 326, 308, 324, 324, 192, 414, 413, 112, 312, 317,
4946 312, 317, 98, 191, 233, 365, 366, 369, 253, 163,
4947 253, 296, 107, 204, 163, 251, 101, 107, 258, 259,
4948 260, 261, 379, 413, 413, 126, 146, 375, 204, 146,
4949 399, 418, 34, 52, 146, 399, 399, 146, 375, 52,
4950 146, 375, 52, 251, 416, 372, 376, 275, 357, 267,
4951 131, 126, 146, 263, 98, 233, 146, 399, 399, 399,
4952 146, 263, 146, 263, 151, 413, 52, 146, 414, 107,
4953 303, 316, 146, 348, 144, 146, 303, 34, 52, 348,
4954 413, 413, 414, 414, 56, 97, 145, 409, 163, 332,
4955 163, 301, 302, 303, 314, 317, 204, 256, 291, 292,
4956 260, 379, 146, 413, 146, 204, 374, 381, 394, 396,
4957 384, 388, 390, 398, 382, 391, 396, 380, 382, 161,
4958 267, 29, 123, 277, 163, 131, 233, 262, 393, 396,
4959 56, 97, 385, 390, 382, 392, 396, 382, 52, 268,
4960 269, 378, 146, 315, 316, 52, 146, 146, 124, 319,
4961 321, 322, 52, 56, 209, 52, 56, 329, 255, 253,
4962 40, 41, 146, 413, 258, 261, 259, 146, 375, 146,
4963 375, 399, 146, 375, 146, 375, 375, 251, 149, 161,
4964 163, 120, 146, 263, 146, 263, 52, 56, 399, 146,
4965 263, 146, 263, 263, 146, 412, 315, 146, 146, 315,
4966 414, 297, 175, 175, 312, 146, 146, 382, 396, 382,
4967 382, 251, 144, 382, 396, 382, 382, 269, 316, 315,
4968 298, 259, 375, 146, 375, 375, 375, 263, 146, 263,
4969 263, 263, 299, 382, 382, 163, 375, 263, 256, 293,
4976 0, 154, 156, 155, 157, 158, 158, 158, 158, 159,
4977 159, 160, 162, 161, 161, 163, 164, 164, 164, 164,
4978 165, 166, 165, 168, 167, 167, 167, 167, 167, 167,
4979 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
4980 167, 169, 169, 169, 169, 169, 169, 169, 169, 170,
4981 170, 170, 171, 171, 171, 171, 171, 172, 173, 174,
4982 171, 171, 175, 177, 178, 176, 179, 179, 180, 180,
4983 181, 182, 183, 183, 183, 183, 183, 183, 183, 183,
4984 183, 183, 183, 184, 184, 185, 185, 186, 186, 186,
4985 186, 186, 186, 186, 186, 186, 186, 187, 187, 188,
4986 188, 189, 189, 190, 190, 190, 190, 190, 190, 190,
4987 190, 190, 191, 191, 191, 191, 191, 191, 191, 191,
4988 191, 192, 192, 193, 193, 193, 194, 194, 194, 194,
4989 194, 195, 195, 196, 197, 196, 198, 198, 198, 198,
4990 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
4991 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
4992 198, 198, 198, 198, 198, 198, 199, 199, 199, 199,
4993 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
4994 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
4995 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
4996 199, 199, 199, 199, 199, 199, 199, 200, 200, 200,
4997 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4998 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4999 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
5000 200, 200, 200, 200, 200, 200, 200, 201, 200, 200,
5001 200, 202, 202, 202, 202, 203, 203, 204, 205, 205,
5002 205, 205, 206, 206, 207, 207, 208, 208, 209, 209,
5003 209, 209, 209, 210, 210, 210, 210, 210, 212, 211,
5004 213, 214, 214, 215, 215, 215, 215, 216, 216, 217,
5005 217, 217, 218, 218, 218, 218, 218, 218, 218, 218,
5006 218, 218, 218, 219, 218, 220, 218, 221, 218, 218,
5007 218, 218, 218, 218, 218, 218, 218, 218, 222, 218,
5008 218, 218, 218, 218, 218, 223, 218, 218, 218, 218,
5009 218, 224, 218, 225, 218, 218, 218, 226, 218, 227,
5010 218, 228, 218, 229, 230, 218, 231, 232, 218, 218,
5011 218, 218, 218, 233, 234, 235, 236, 237, 238, 239,
5012 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
5013 250, 251, 252, 253, 253, 253, 254, 254, 255, 255,
5014 256, 256, 257, 257, 258, 258, 259, 259, 260, 260,
5015 260, 260, 260, 261, 261, 262, 262, 262, 262, 262,
5016 263, 263, 264, 264, 264, 264, 264, 264, 264, 264,
5017 264, 264, 264, 264, 264, 264, 264, 265, 265, 266,
5018 266, 267, 267, 268, 268, 269, 269, 271, 272, 273,
5019 274, 275, 270, 276, 276, 277, 277, 278, 279, 279,
5020 279, 279, 280, 280, 280, 280, 280, 280, 280, 280,
5021 280, 281, 281, 283, 284, 285, 282, 287, 288, 289,
5022 286, 290, 290, 290, 290, 291, 292, 292, 294, 295,
5023 296, 297, 298, 299, 293, 300, 300, 301, 301, 301,
5024 302, 302, 302, 302, 302, 303, 304, 304, 305, 305,
5025 306, 307, 308, 308, 308, 308, 308, 308, 308, 309,
5026 308, 308, 310, 308, 308, 311, 308, 312, 312, 312,
5027 312, 312, 312, 312, 312, 313, 313, 314, 314, 314,
5028 314, 315, 315, 316, 317, 317, 317, 317, 317, 318,
5029 318, 319, 319, 320, 320, 321, 321, 322, 323, 323,
5030 323, 323, 323, 323, 323, 323, 323, 323, 324, 324,
5031 324, 324, 324, 324, 324, 324, 324, 325, 324, 326,
5032 327, 328, 328, 328, 329, 329, 330, 330, 330, 331,
5033 331, 332, 332, 333, 333, 334, 335, 335, 335, 336,
5034 337, 338, 339, 340, 340, 341, 341, 342, 343, 343,
5035 344, 345, 346, 346, 347, 347, 348, 348, 349, 349,
5036 350, 350, 351, 352, 351, 353, 354, 355, 356, 357,
5037 351, 358, 358, 358, 358, 359, 359, 360, 361, 361,
5038 361, 361, 362, 363, 363, 364, 364, 364, 364, 365,
5039 365, 365, 365, 365, 366, 366, 366, 366, 366, 366,
5040 366, 367, 367, 368, 368, 369, 369, 371, 370, 370,
5041 372, 372, 373, 372, 374, 374, 374, 374, 374, 375,
5042 375, 376, 376, 376, 376, 376, 376, 376, 376, 376,
5043 376, 376, 376, 376, 376, 376, 377, 378, 378, 378,
5044 378, 379, 379, 380, 381, 381, 382, 382, 383, 384,
5045 384, 385, 385, 386, 386, 387, 387, 388, 388, 389,
5046 390, 390, 391, 392, 393, 393, 394, 394, 395, 395,
5047 396, 396, 397, 397, 398, 399, 399, 400, 401, 400,
5048 402, 402, 403, 403, 404, 404, 404, 404, 405, 405,
5049 405, 406, 406, 406, 406, 407, 407, 407, 408, 408,
5050 409, 409, 410, 410, 411, 411, 412, 412, 413, 414,
5051 415, 415, 415, 416, 416, 417, 417, 418
5057 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
5058 2, 3, 0, 6, 3, 2, 1, 1, 3, 2,
5059 1, 0, 3, 0, 4, 3, 3, 3, 2, 3,
5060 3, 3, 3, 3, 4, 1, 3, 3, 5, 3,
5061 1, 3, 3, 6, 5, 5, 5, 5, 3, 1,
5062 3, 1, 1, 3, 3, 3, 2, 0, 0, 0,
5063 6, 1, 1, 0, 0, 4, 1, 1, 1, 4,
5064 3, 1, 2, 3, 4, 5, 4, 5, 2, 2,
5065 2, 2, 2, 1, 3, 1, 3, 1, 2, 3,
5066 5, 2, 4, 2, 4, 1, 3, 1, 3, 2,
5067 3, 1, 3, 1, 1, 4, 3, 3, 3, 3,
5068 2, 1, 1, 1, 4, 3, 3, 3, 3, 2,
5069 1, 1, 1, 2, 1, 3, 1, 1, 1, 1,
5070 1, 1, 1, 1, 0, 4, 1, 1, 1, 1,
5071 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5072 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5073 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5074 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5075 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5076 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5077 1, 1, 1, 1, 1, 1, 1, 3, 3, 6,
5078 5, 5, 5, 5, 4, 3, 3, 3, 2, 2,
5079 2, 2, 3, 3, 3, 3, 3, 3, 4, 2,
5080 2, 3, 3, 3, 3, 1, 3, 3, 3, 3,
5081 3, 2, 2, 3, 3, 3, 3, 0, 4, 6,
5082 1, 1, 1, 1, 1, 3, 3, 1, 1, 2,
5083 4, 2, 1, 3, 3, 3, 1, 1, 1, 1,
5084 2, 4, 2, 1, 2, 2, 4, 1, 0, 2,
5085 2, 2, 1, 1, 2, 3, 4, 1, 1, 3,
5086 4, 2, 1, 1, 1, 1, 1, 1, 1, 1,
5087 1, 1, 1, 0, 4, 0, 3, 0, 4, 3,
5088 3, 2, 3, 3, 1, 4, 3, 1, 0, 6,
5089 4, 3, 2, 1, 2, 0, 3, 6, 6, 4,
5090 4, 0, 6, 0, 5, 5, 6, 0, 6, 0,
5091 7, 0, 5, 0, 0, 7, 0, 0, 9, 1,
5092 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5093 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5094 1, 1, 1, 1, 1, 2, 1, 1, 1, 5,
5095 1, 2, 1, 1, 1, 3, 1, 3, 1, 3,
5096 5, 1, 3, 2, 1, 4, 2, 2, 2, 1,
5097 2, 0, 6, 8, 4, 6, 4, 2, 6, 2,
5098 4, 6, 2, 4, 2, 4, 1, 1, 1, 3,
5099 4, 1, 4, 1, 3, 1, 1, 0, 0, 0,
5100 0, 0, 7, 4, 1, 3, 3, 3, 2, 4,
5101 5, 5, 2, 4, 4, 3, 3, 3, 2, 1,
5102 4, 3, 3, 0, 0, 0, 5, 0, 0, 0,
5103 5, 1, 2, 3, 4, 5, 1, 1, 0, 0,
5104 0, 0, 0, 0, 11, 1, 1, 1, 3, 3,
5105 1, 2, 3, 1, 1, 1, 3, 1, 3, 1,
5106 1, 1, 1, 4, 4, 3, 4, 4, 3, 0,
5107 4, 2, 0, 4, 2, 0, 4, 1, 1, 2,
5108 3, 5, 2, 4, 1, 2, 3, 2, 4, 1,
5109 3, 1, 3, 1, 3, 1, 1, 3, 1, 1,
5110 3, 2, 1, 1, 3, 2, 1, 2, 1, 3,
5111 3, 2, 2, 1, 1, 1, 2, 2, 1, 1,
5112 1, 1, 1, 1, 1, 1, 1, 0, 3, 1,
5113 2, 2, 3, 1, 6, 1, 1, 1, 1, 2,
5114 1, 2, 1, 1, 1, 1, 1, 1, 2, 3,
5115 3, 3, 4, 0, 3, 1, 2, 4, 0, 3,
5116 4, 4, 0, 3, 0, 3, 0, 2, 0, 2,
5117 0, 2, 1, 0, 3, 0, 0, 0, 0, 0,
5118 8, 1, 1, 1, 1, 1, 1, 2, 1, 1,
5119 1, 1, 3, 1, 2, 1, 1, 1, 1, 1,
5120 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5121 1, 1, 1, 1, 1, 1, 1, 0, 4, 0,
5122 3, 3, 0, 3, 4, 2, 2, 2, 1, 2,
5123 0, 6, 8, 4, 6, 4, 6, 2, 4, 6,
5124 2, 4, 2, 4, 1, 0, 1, 1, 1, 1,
5125 1, 1, 1, 1, 1, 3, 1, 3, 1, 2,
5126 1, 2, 1, 1, 3, 1, 3, 1, 1, 2,
5127 2, 1, 3, 3, 1, 3, 1, 3, 1, 1,
5128 2, 1, 1, 1, 2, 2, 1, 1, 0, 4,
5129 1, 2, 1, 3, 3, 2, 4, 2, 1, 1,
5130 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5131 1, 1, 1, 1, 0, 1, 0, 1, 2, 2,
5132 0, 1, 1, 1, 1, 1, 2, 0
5136 #define yyerrok (yyerrstatus = 0)
5137 #define yyclearin (yychar = YYEMPTY)
5138 #define YYEMPTY (-2)
5141 #define YYACCEPT goto yyacceptlab
5142 #define YYABORT goto yyabortlab
5143 #define YYERROR goto yyerrorlab
5146 #define YYRECOVERING() (!!yyerrstatus)
5148 #define YYBACKUP(Token, Value) \
5150 if (yychar == YYEMPTY) \
5154 YYPOPSTACK (yylen); \
5160 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
5167 #define YYERRCODE 256
5174 #ifndef YYLLOC_DEFAULT
5175 # define YYLLOC_DEFAULT(Current, Rhs, N) \
5179 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
5180 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
5181 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
5182 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
5186 (Current).first_line = (Current).last_line = \
5187 YYRHSLOC (Rhs, 0).last_line; \
5188 (Current).first_column = (Current).last_column = \
5189 YYRHSLOC (Rhs, 0).last_column; \
5194 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
5202 # define YYFPRINTF fprintf
5205 # define YYDPRINTF(Args) \
5216 #ifndef YY_LOCATION_PRINT
5217 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5223 yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
5241 else if (0 <= end_col && yylocp->
first_column < end_col)
5247 # define YY_LOCATION_PRINT(File, Loc) \
5248 yy_location_print_ (File, &(Loc))
5251 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
5256 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
5260 YYFPRINTF (p, "%s ", Title); \
5261 yy_symbol_print (stderr, \
5262 Type, Value, Location, p); \
5263 YYFPRINTF (p, "\n"); \
5275 FILE *yyo = yyoutput;
5277 YYUSE (yylocationp);
5283 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
5297 yytype <
YYNTOKENS ?
"token" :
"nterm", yytname[yytype]);
5301 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, p);
5312 #define yy_stack_print(b, t) ruby_parser_yy_stack_print(b, t, p)
5315 for (; yybottom <= yytop; yybottom++)
5317 int yybot = *yybottom;
5323 # define YY_STACK_PRINT(Bottom, Top) \
5326 yy_stack_print ((Bottom), (Top)); \
5337 unsigned long int yylno = yyrline[yyrule];
5338 int yynrhs = yyr2[yyrule];
5340 YYFPRINTF (p,
"Reducing stack by rule %d (line %lu):\n",
5343 for (yyi = 0; yyi < yynrhs; yyi++)
5347 yystos[yyssp[yyi + 1 - yynrhs]],
5348 &(yyvsp[(yyi + 1) - (yynrhs)])
5349 , &(yylsp[(yyi + 1) - (yynrhs)]) , p);
5354 # define YY_REDUCE_PRINT(Rule) \
5357 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
5366 # define YYDPRINTF(Args)
5367 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
5368 # define YY_STACK_PRINT(Bottom, Top)
5369 # define YY_REDUCE_PRINT(Rule)
5375 # define YYINITDEPTH 200
5386 # define YYMAXDEPTH 10000
5393 # if defined __GLIBC__ && defined _STRING_H
5394 # define yystrlen strlen
5398 yystrlen (
const char *yystr)
5401 for (yylen = 0; yystr[yylen]; yylen++)
5409 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
5410 # define yystpcpy stpcpy
5415 yystpcpy (
char *yydest,
const char *yysrc)
5418 const char *yys = yysrc;
5420 while ((*yyd++ = *yys++) !=
'\0')
5437 yytnamerr (
char *yyres,
const char *yystr)
5442 char const *yyp = yystr;
5449 goto do_not_strip_quotes;
5453 goto do_not_strip_quotes;
5466 do_not_strip_quotes: ;
5470 return yystrlen (yystr);
5472 return yystpcpy (yyres, yystr) - yyres;
5490 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
5494 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
5524 int yyn = yypact[*yyssp];
5525 yyarg[yycount++] = yytname[yytoken];
5531 int yyxbegin = yyn < 0 ? -yyn : 0;
5533 int yychecklim =
YYLAST - yyn + 1;
5537 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
5538 if (yycheck[yyx + yyn] == yyx && yyx !=
YYTERROR
5541 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
5547 yyarg[yycount++] = yytname[yyx];
5550 if (! (yysize <= yysize1
5561 # define YYCASE_(N, S) \
5566 YYCASE_(1,
YY_(
"syntax error, unexpected %s"));
5567 YYCASE_(2,
YY_(
"syntax error, unexpected %s, expecting %s"));
5568 YYCASE_(3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
5569 YYCASE_(4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
5570 YYCASE_(5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
5575 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
5581 if (*yymsg_alloc < yysize)
5583 *yymsg_alloc = 2 * yysize;
5584 if (! (yysize <= *yymsg_alloc
5596 while ((*yyp = *yyformat) !=
'\0')
5597 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
5620 YYUSE (yylocationp);
5653 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5657 YYLTYPE yylloc = yyloc_default;
5706 char *yymsg = yymsgbuf;
5707 YYSIZE_T yymsg_alloc =
sizeof yymsgbuf;
5710 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
5716 yyssp = yyss = yyssa;
5717 yyvsp = yyvs = yyvsa;
5718 yylsp = yyls = yylsa;
5734 #line 5730 "parse.c"
5749 if (yyss + yystacksize - 1 <= yyssp)
5752 YYSIZE_T yysize = yyssp - yyss + 1;
5767 yyoverflow (
YY_(
"memory exhausted"),
5768 &yyss1, yysize *
sizeof (*yyssp),
5769 &yyvs1, yysize *
sizeof (*yyvsp),
5770 &yyls1, yysize *
sizeof (*yylsp),
5778 # ifndef YYSTACK_RELOCATE
5779 goto yyexhaustedlab;
5783 goto yyexhaustedlab;
5793 goto yyexhaustedlab;
5797 # undef YYSTACK_RELOCATE
5804 yyssp = yyss + yysize - 1;
5805 yyvsp = yyvs + yysize - 1;
5806 yylsp = yyls + yysize - 1;
5808 YYDPRINTF ((p,
"Stack size increased to %lu\n",
5809 (
unsigned long int) yystacksize));
5811 if (yyss + yystacksize - 1 <= yyssp)
5815 YYDPRINTF ((p,
"Entering state %d\n", yystate));
5831 yyn = yypact[yystate];
5841 yychar = yylex (&
yylval, &yylloc, p);
5844 if (yychar <=
YYEOF)
5846 yychar = yytoken =
YYEOF;
5847 YYDPRINTF ((p,
"Now at end of input.\n"));
5858 if (yyn < 0 ||
YYLAST < yyn || yycheck[yyn] != yytoken)
5892 yyn = yydefact[yystate];
5913 yyval = yyvsp[1-yylen];
5921 #line 1176 "parse.y"
5926 #line 5922 "parse.c"
5930 #line 1181 "parse.y"
5934 NODE *node = (yyvsp[0].node);
5937 while (node->nd_next) {
5938 node = node->nd_next;
5940 node = node->nd_head;
5942 node = remove_begin(node);
5950 #line 5946 "parse.c"
5954 #line 1203 "parse.y"
5956 (yyval.
node) = void_stmts(p, (yyvsp[-1].node));
5958 #line 5954 "parse.c"
5962 #line 1209 "parse.y"
5969 #line 5965 "parse.c"
5973 #line 1216 "parse.y"
5976 (yyval.
node) = newline_node((yyvsp[0].node));
5980 #line 5976 "parse.c"
5984 #line 1223 "parse.y"
5987 (yyval.
node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
5991 #line 5987 "parse.c"
5995 #line 1230 "parse.y"
5997 (yyval.
node) = remove_begin((yyvsp[0].node));
5999 #line 5995 "parse.c"
6003 #line 1237 "parse.y"
6005 (yyval.
node) = (yyvsp[0].node);
6007 #line 6003 "parse.c"
6011 #line 1243 "parse.y"
6020 #line 6016 "parse.c"
6024 #line 1255 "parse.y"
6025 {
if (!(yyvsp[-1].node)) {
yyerror1(&(yylsp[0]),
"else without rescue is useless");}}
6026 #line 6022 "parse.c"
6030 #line 1258 "parse.y"
6033 (yyval.
node) = new_bodystmt(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
6037 #line 6033 "parse.c"
6041 #line 1267 "parse.y"
6044 (yyval.
node) = new_bodystmt(p, (yyvsp[-2].node), (yyvsp[-1].node), 0, (yyvsp[0].node), &(yyloc));
6048 #line 6044 "parse.c"
6052 #line 1276 "parse.y"
6054 (yyval.
node) = void_stmts(p, (yyvsp[-1].node));
6056 #line 6052 "parse.c"
6060 #line 1282 "parse.y"
6067 #line 6063 "parse.c"
6071 #line 1289 "parse.y"
6074 (yyval.
node) = newline_node((yyvsp[0].node));
6078 #line 6074 "parse.c"
6082 #line 1296 "parse.y"
6085 (yyval.
node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
6089 #line 6085 "parse.c"
6093 #line 1303 "parse.y"
6095 (yyval.
node) = remove_begin((yyvsp[0].node));
6097 #line 6093 "parse.c"
6101 #line 1309 "parse.y"
6103 (yyval.
node) = (yyvsp[0].node);
6105 #line 6101 "parse.c"
6109 #line 1313 "parse.y"
6111 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
6113 #line 6109 "parse.c"
6117 #line 1317 "parse.y"
6119 (yyval.
node) = (yyvsp[0].node);
6121 #line 6117 "parse.c"
6125 #line 1322 "parse.y"
6127 #line 6123 "parse.c"
6131 #line 1323 "parse.y"
6134 (yyval.
node) =
NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6138 #line 6134 "parse.c"
6142 #line 1330 "parse.y"
6145 (yyval.
node) =
NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].id), &(yyloc));
6149 #line 6145 "parse.c"
6153 #line 1337 "parse.y"
6158 buf[1] = (
char)(yyvsp[0].node)->nd_nth;
6163 #line 6159 "parse.c"
6167 #line 1347 "parse.y"
6170 yyerror1(&(yylsp[0]),
"can't make alias for the number variables");
6175 #line 6171 "parse.c"
6179 #line 1355 "parse.y"
6182 (yyval.
node) = (yyvsp[0].node);
6186 #line 6182 "parse.c"
6190 #line 1362 "parse.y"
6193 (yyval.
node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
6194 fixpos((yyval.
node), (yyvsp[0].node));
6198 #line 6194 "parse.c"
6202 #line 1370 "parse.y"
6205 (yyval.
node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
6206 fixpos((yyval.
node), (yyvsp[0].node));
6210 #line 6206 "parse.c"
6214 #line 1378 "parse.y"
6218 (yyval.
node) =
NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node)->
nd_body, 0, &(yyloc));
6221 (yyval.
node) =
NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc));
6226 #line 6222 "parse.c"
6230 #line 1390 "parse.y"
6234 (yyval.
node) =
NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node)->
nd_body, 0, &(yyloc));
6237 (yyval.
node) =
NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc));
6242 #line 6238 "parse.c"
6246 #line 1402 "parse.y"
6250 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6251 resq =
NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc);
6252 (yyval.
node) =
NEW_RESCUE(remove_begin((yyvsp[-2].node)), resq, 0, &(yyloc));
6256 #line 6252 "parse.c"
6260 #line 1412 "parse.y"
6263 rb_warn0(
"END in method; use at_exit");
6268 NODE_SCOPE, 0 , (yyvsp[-1].node) , 0 , &(yyloc));
6274 #line 6270 "parse.c"
6278 #line 1427 "parse.y"
6282 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6286 #line 6282 "parse.c"
6290 #line 1435 "parse.y"
6294 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6298 #line 6294 "parse.c"
6302 #line 1443 "parse.y"
6305 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6307 (yyval.
node) = node_assign(p, (yyvsp[-4].node),
NEW_RESCUE((yyvsp[-2].node),
NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc)), &(yyloc));
6311 #line 6307 "parse.c"
6315 #line 1452 "parse.y"
6318 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6322 #line 6318 "parse.c"
6326 #line 1462 "parse.y"
6330 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6334 #line 6330 "parse.c"
6338 #line 1470 "parse.y"
6342 (yyval.
node) = new_op_assign(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
6346 #line 6342 "parse.c"
6350 #line 1478 "parse.y"
6354 (yyval.
node) = new_ary_op_assign(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-3]), &(yyloc));
6359 #line 6355 "parse.c"
6363 #line 1487 "parse.y"
6367 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
6371 #line 6367 "parse.c"
6375 #line 1495 "parse.y"
6379 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
6383 #line 6379 "parse.c"
6387 #line 1503 "parse.y"
6390 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-2]));
6391 (yyval.
node) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-4].node), (yyvsp[-2].
id), &loc), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
6395 #line 6391 "parse.c"
6399 #line 1511 "parse.y"
6403 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node),
ID2VAL(
idCOLON2), (yyvsp[-2].id), (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc));
6407 #line 6403 "parse.c"
6411 #line 1519 "parse.y"
6414 rb_backref_error(p, (yyvsp[-2].node));
6419 #line 6415 "parse.c"
6423 #line 1529 "parse.y"
6426 (yyval.
node) = (yyvsp[0].node);
6428 #line 6424 "parse.c"
6432 #line 1534 "parse.y"
6435 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6441 #line 6437 "parse.c"
6445 #line 1547 "parse.y"
6447 (yyval.
node) = logop(p,
idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
6449 #line 6445 "parse.c"
6453 #line 1551 "parse.y"
6455 (yyval.
node) = logop(p,
idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
6457 #line 6453 "parse.c"
6461 #line 1555 "parse.y"
6463 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
6465 #line 6461 "parse.c"
6469 #line 1559 "parse.y"
6471 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
6473 #line 6469 "parse.c"
6477 #line 1563 "parse.y"
6485 #line 6481 "parse.c"
6489 #line 1570 "parse.y"
6490 {(yyval.
tbl) = push_pvtbl(p);}
6491 #line 6487 "parse.c"
6495 #line 1572 "parse.y"
6496 {pop_pvtbl(p, (yyvsp[-1].tbl));}
6497 #line 6493 "parse.c"
6501 #line 1573 "parse.y"
6505 (yyval.
node) = new_case3(p, (yyvsp[-5].node),
NEW_IN((yyvsp[-1].node), 0, 0, &(yylsp[-1])), &(yyloc));
6509 #line 6505 "parse.c"
6513 #line 1584 "parse.y"
6516 (yyval.
node) = (yyvsp[0].node);
6518 #line 6514 "parse.c"
6522 #line 1590 "parse.y"
6524 #line 6520 "parse.c"
6528 #line 1590 "parse.y"
6530 #line 6526 "parse.c"
6534 #line 1591 "parse.y"
6536 (yyval.
node) = (yyvsp[-2].node);
6538 #line 6534 "parse.c"
6542 #line 1602 "parse.y"
6545 (yyval.
node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
6549 #line 6545 "parse.c"
6553 #line 1611 "parse.y"
6555 (yyval.
node) = (yyvsp[-1].node);
6557 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
6561 #line 6557 "parse.c"
6565 #line 1621 "parse.y"
6573 #line 6569 "parse.c"
6577 #line 1631 "parse.y"
6580 (yyvsp[-1].node)->
nd_args = (yyvsp[0].node);
6582 (yyval.
node) = (yyvsp[-1].node);
6586 #line 6582 "parse.c"
6590 #line 1640 "parse.y"
6593 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
6594 (yyvsp[-2].node)->
nd_args = (yyvsp[-1].node);
6595 (yyval.
node) = method_add_block(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6596 fixpos((yyval.
node), (yyvsp[-2].node));
6601 #line 6597 "parse.c"
6605 #line 1651 "parse.y"
6608 (yyval.
node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node),
Qnull, &(yylsp[-1]), &(yyloc));
6612 #line 6608 "parse.c"
6616 #line 1658 "parse.y"
6619 (yyval.
node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
6623 #line 6619 "parse.c"
6627 #line 1665 "parse.y"
6630 (yyval.
node) = new_command_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node),
Qnull, &(yylsp[-1]), &(yyloc));
6634 #line 6630 "parse.c"
6638 #line 1672 "parse.y"
6641 (yyval.
node) = new_command_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
6645 #line 6641 "parse.c"
6649 #line 1679 "parse.y"
6653 fixpos((yyval.
node), (yyvsp[0].node));
6657 #line 6653 "parse.c"
6661 #line 1687 "parse.y"
6664 (yyval.
node) = new_yield(p, (yyvsp[0].node), &(yyloc));
6665 fixpos((yyval.
node), (yyvsp[0].node));
6669 #line 6665 "parse.c"
6673 #line 1695 "parse.y"
6676 (yyval.
node) =
NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc));
6680 #line 6676 "parse.c"
6684 #line 1702 "parse.y"
6687 (yyval.
node) =
NEW_BREAK(ret_args(p, (yyvsp[0].node)), &(yyloc));
6691 #line 6687 "parse.c"
6695 #line 1709 "parse.y"
6698 (yyval.
node) =
NEW_NEXT(ret_args(p, (yyvsp[0].node)), &(yyloc));
6702 #line 6698 "parse.c"
6706 #line 1719 "parse.y"
6709 (yyval.
node) = (yyvsp[-1].node);
6713 #line 6709 "parse.c"
6717 #line 1729 "parse.y"
6724 #line 6720 "parse.c"
6728 #line 1738 "parse.y"
6735 #line 6731 "parse.c"
6739 #line 1745 "parse.y"
6742 (yyval.
node) =
NEW_MASGN(list_append(p, (yyvsp[-1].node),(yyvsp[0].node)), 0, &(yyloc));
6746 #line 6742 "parse.c"
6750 #line 1752 "parse.y"
6753 (yyval.
node) =
NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6757 #line 6753 "parse.c"
6761 #line 1759 "parse.y"
6768 #line 6764 "parse.c"
6772 #line 1766 "parse.y"
6779 #line 6775 "parse.c"
6783 #line 1773 "parse.y"
6790 #line 6786 "parse.c"
6794 #line 1780 "parse.y"
6801 #line 6797 "parse.c"
6805 #line 1787 "parse.y"
6812 #line 6808 "parse.c"
6816 #line 1794 "parse.y"
6823 #line 6819 "parse.c"
6827 #line 1801 "parse.y"
6834 #line 6830 "parse.c"
6838 #line 1811 "parse.y"
6841 (yyval.
node) = (yyvsp[-1].node);
6845 #line 6841 "parse.c"
6849 #line 1820 "parse.y"
6852 (yyval.
node) =
NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
6856 #line 6852 "parse.c"
6860 #line 1827 "parse.y"
6863 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
6867 #line 6863 "parse.c"
6871 #line 1836 "parse.y"
6878 #line 6874 "parse.c"
6882 #line 1843 "parse.y"
6885 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
6889 #line 6885 "parse.c"
6893 #line 1852 "parse.y"
6896 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
6900 #line 6896 "parse.c"
6904 #line 1859 "parse.y"
6907 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
6911 #line 6907 "parse.c"
6915 #line 1866 "parse.y"
6918 (yyval.
node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
6922 #line 6918 "parse.c"
6926 #line 1873 "parse.y"
6928 if ((yyvsp[-1].
id) ==
tANDDOT) {
6929 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
6932 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
6936 #line 6932 "parse.c"
6940 #line 1883 "parse.y"
6943 (yyval.
node) = attrset(p, (yyvsp[-2].node),
idCOLON2, (yyvsp[0].id), &(yyloc));
6947 #line 6943 "parse.c"
6951 #line 1890 "parse.y"
6953 if ((yyvsp[-1].
id) ==
tANDDOT) {
6954 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
6957 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
6961 #line 6957 "parse.c"
6965 #line 1900 "parse.y"
6968 (yyval.
node) = const_decl(p,
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc)), &(yyloc));
6972 #line 6968 "parse.c"
6976 #line 1907 "parse.y"
6979 (yyval.
node) = const_decl(p,
NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
6983 #line 6979 "parse.c"
6987 #line 1914 "parse.y"
6990 rb_backref_error(p, (yyvsp[0].node));
6995 #line 6991 "parse.c"
6999 #line 1924 "parse.y"
7002 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
7006 #line 7002 "parse.c"
7010 #line 1931 "parse.y"
7013 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
7017 #line 7013 "parse.c"
7021 #line 1938 "parse.y"
7024 (yyval.
node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
7028 #line 7024 "parse.c"
7032 #line 1945 "parse.y"
7035 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
7039 #line 7035 "parse.c"
7043 #line 1952 "parse.y"
7046 (yyval.
node) = attrset(p, (yyvsp[-2].node),
idCOLON2, (yyvsp[0].id), &(yyloc));
7050 #line 7046 "parse.c"
7054 #line 1959 "parse.y"
7057 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
7061 #line 7057 "parse.c"
7065 #line 1966 "parse.y"
7068 (yyval.
node) = const_decl(p,
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc)), &(yyloc));
7072 #line 7068 "parse.c"
7076 #line 1973 "parse.y"
7079 (yyval.
node) = const_decl(p,
NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
7083 #line 7079 "parse.c"
7087 #line 1980 "parse.y"
7090 rb_backref_error(p, (yyvsp[0].node));
7095 #line 7091 "parse.c"
7099 #line 1990 "parse.y"
7102 yyerror1(&(yylsp[0]),
"class/module name must be CONSTANT");
7106 #line 7102 "parse.c"
7110 #line 2000 "parse.y"
7117 #line 7113 "parse.c"
7121 #line 2007 "parse.y"
7128 #line 7124 "parse.c"
7132 #line 2014 "parse.y"
7135 (yyval.
node) =
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
7139 #line 7135 "parse.c"
7143 #line 2026 "parse.y"
7146 (yyval.
id) = (yyvsp[0].
id);
7148 #line 7144 "parse.c"
7152 #line 2031 "parse.y"
7155 (yyval.
id) = (yyvsp[0].
id);
7157 #line 7153 "parse.c"
7161 #line 2038 "parse.y"
7168 #line 7164 "parse.c"
7172 #line 2048 "parse.y"
7179 #line 7175 "parse.c"
7183 #line 2054 "parse.y"
7185 #line 7181 "parse.c"
7189 #line 2055 "parse.y"
7193 (yyval.
node) = block_append(p, (yyvsp[-3].node), undef);
7197 #line 7193 "parse.c"
7201 #line 2064 "parse.y"
7203 #line 7199 "parse.c"
7207 #line 2065 "parse.y"
7209 #line 7205 "parse.c"
7213 #line 2066 "parse.y"
7215 #line 7211 "parse.c"
7219 #line 2067 "parse.y"
7221 #line 7217 "parse.c"
7225 #line 2068 "parse.y"
7227 #line 7223 "parse.c"
7231 #line 2069 "parse.y"
7233 #line 7229 "parse.c"
7237 #line 2070 "parse.y"
7239 #line 7235 "parse.c"
7243 #line 2071 "parse.y"
7245 #line 7241 "parse.c"
7249 #line 2072 "parse.y"
7251 #line 7247 "parse.c"
7255 #line 2073 "parse.y"
7257 #line 7253 "parse.c"
7261 #line 2074 "parse.y"
7263 #line 7259 "parse.c"
7267 #line 2075 "parse.y"
7269 #line 7265 "parse.c"
7273 #line 2076 "parse.y"
7275 #line 7271 "parse.c"
7279 #line 2077 "parse.y"
7281 #line 7277 "parse.c"
7285 #line 2078 "parse.y"
7287 #line 7283 "parse.c"
7291 #line 2079 "parse.y"
7293 #line 7289 "parse.c"
7297 #line 2080 "parse.y"
7299 #line 7295 "parse.c"
7303 #line 2081 "parse.y"
7305 #line 7301 "parse.c"
7309 #line 2082 "parse.y"
7311 #line 7307 "parse.c"
7315 #line 2083 "parse.y"
7317 #line 7313 "parse.c"
7321 #line 2084 "parse.y"
7323 #line 7319 "parse.c"
7327 #line 2085 "parse.y"
7329 #line 7325 "parse.c"
7333 #line 2086 "parse.y"
7335 #line 7331 "parse.c"
7339 #line 2087 "parse.y"
7341 #line 7337 "parse.c"
7345 #line 2088 "parse.y"
7347 #line 7343 "parse.c"
7351 #line 2089 "parse.y"
7353 #line 7349 "parse.c"
7357 #line 2090 "parse.y"
7359 #line 7355 "parse.c"
7363 #line 2091 "parse.y"
7365 #line 7361 "parse.c"
7369 #line 2092 "parse.y"
7371 #line 7367 "parse.c"
7375 #line 2093 "parse.y"
7377 #line 7373 "parse.c"
7381 #line 2111 "parse.y"
7384 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
7388 #line 7384 "parse.c"
7392 #line 2118 "parse.y"
7395 (yyval.
node) = new_op_assign(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
7399 #line 7395 "parse.c"
7403 #line 2125 "parse.y"
7407 (yyval.
node) = new_ary_op_assign(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-3]), &(yyloc));
7411 #line 7407 "parse.c"
7415 #line 2133 "parse.y"
7419 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
7423 #line 7419 "parse.c"
7427 #line 2141 "parse.y"
7431 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
7435 #line 7431 "parse.c"
7439 #line 2149 "parse.y"
7443 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node),
ID2VAL(
idCOLON2), (yyvsp[-2].id), (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc));
7447 #line 7443 "parse.c"
7451 #line 2157 "parse.y"
7454 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-2]));
7455 (yyval.
node) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-4].node), (yyvsp[-2].
id), &loc), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
7459 #line 7455 "parse.c"
7463 #line 2165 "parse.y"
7466 (yyval.
node) = new_const_op_assign(p,
NEW_COLON3((yyvsp[-2].
id), &(yyloc)), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
7470 #line 7466 "parse.c"
7474 #line 2172 "parse.y"
7477 rb_backref_error(p, (yyvsp[-2].node));
7482 #line 7478 "parse.c"
7486 #line 2180 "parse.y"
7491 (yyval.
node) =
NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
7495 #line 7491 "parse.c"
7499 #line 2189 "parse.y"
7504 (yyval.
node) =
NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
7508 #line 7504 "parse.c"
7512 #line 2198 "parse.y"
7516 loc.beg_pos = (yylsp[0]).end_pos;
7517 loc.end_pos = (yylsp[0]).end_pos;
7524 #line 7520 "parse.c"
7528 #line 2210 "parse.y"
7532 loc.beg_pos = (yylsp[0]).end_pos;
7533 loc.end_pos = (yylsp[0]).end_pos;
7540 #line 7536 "parse.c"
7544 #line 2222 "parse.y"
7548 loc.beg_pos = (yylsp[-1]).beg_pos;
7549 loc.end_pos = (yylsp[-1]).beg_pos;
7556 #line 7552 "parse.c"
7560 #line 2234 "parse.y"
7564 loc.beg_pos = (yylsp[-1]).beg_pos;
7565 loc.end_pos = (yylsp[-1]).beg_pos;
7572 #line 7568 "parse.c"
7576 #line 2246 "parse.y"
7578 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7580 #line 7576 "parse.c"
7584 #line 2250 "parse.y"
7586 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7588 #line 7584 "parse.c"
7592 #line 2254 "parse.y"
7594 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7596 #line 7592 "parse.c"
7600 #line 2258 "parse.y"
7602 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7604 #line 7600 "parse.c"
7608 #line 2262 "parse.y"
7610 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7612 #line 7608 "parse.c"
7616 #line 2266 "parse.y"
7618 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7620 #line 7616 "parse.c"
7624 #line 2270 "parse.y"
7626 (yyval.
node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node),
idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)),
idUMinus, &(yylsp[-3]), &(yyloc));
7628 #line 7624 "parse.c"
7632 #line 2274 "parse.y"
7634 (yyval.
node) = call_uni_op(p, (yyvsp[0].node),
idUPlus, &(yylsp[-1]), &(yyloc));
7636 #line 7632 "parse.c"
7640 #line 2278 "parse.y"
7642 (yyval.
node) = call_uni_op(p, (yyvsp[0].node),
idUMinus, &(yylsp[-1]), &(yyloc));
7644 #line 7640 "parse.c"
7648 #line 2282 "parse.y"
7650 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7652 #line 7648 "parse.c"
7656 #line 2286 "parse.y"
7658 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7660 #line 7656 "parse.c"
7664 #line 2290 "parse.y"
7666 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7668 #line 7664 "parse.c"
7672 #line 2294 "parse.y"
7674 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7676 #line 7672 "parse.c"
7680 #line 2299 "parse.y"
7682 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7684 #line 7680 "parse.c"
7688 #line 2303 "parse.y"
7690 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7692 #line 7688 "parse.c"
7696 #line 2307 "parse.y"
7698 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7700 #line 7696 "parse.c"
7704 #line 2311 "parse.y"
7706 (yyval.
node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7708 #line 7704 "parse.c"
7712 #line 2315 "parse.y"
7714 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7716 #line 7712 "parse.c"
7720 #line 2319 "parse.y"
7722 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
7724 #line 7720 "parse.c"
7728 #line 2323 "parse.y"
7730 (yyval.
node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
7732 #line 7728 "parse.c"
7736 #line 2327 "parse.y"
7738 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7740 #line 7736 "parse.c"
7744 #line 2331 "parse.y"
7746 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7748 #line 7744 "parse.c"
7752 #line 2335 "parse.y"
7754 (yyval.
node) = logop(p,
idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7756 #line 7752 "parse.c"
7760 #line 2339 "parse.y"
7762 (yyval.
node) = logop(p,
idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7764 #line 7760 "parse.c"
7768 #line 2342 "parse.y"
7770 #line 7766 "parse.c"
7774 #line 2343 "parse.y"
7777 (yyval.
node) = new_defined(p, (yyvsp[0].node), &(yyloc));
7779 #line 7775 "parse.c"
7783 #line 2348 "parse.y"
7787 (yyval.
node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
7788 fixpos((yyval.
node), (yyvsp[-5].node));
7792 #line 7788 "parse.c"
7796 #line 2357 "parse.y"
7798 (yyval.
node) = (yyvsp[0].node);
7800 #line 7796 "parse.c"
7804 #line 2362 "parse.y"
7806 #line 7802 "parse.c"
7810 #line 2363 "parse.y"
7812 #line 7808 "parse.c"
7816 #line 2364 "parse.y"
7818 #line 7814 "parse.c"
7822 #line 2365 "parse.y"
7824 #line 7820 "parse.c"
7828 #line 2369 "parse.y"
7830 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7832 #line 7828 "parse.c"
7836 #line 2373 "parse.y"
7839 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7841 #line 7837 "parse.c"
7845 #line 2380 "parse.y"
7848 (yyval.
node) = (yyvsp[0].node);
7850 #line 7846 "parse.c"
7854 #line 2388 "parse.y"
7856 (yyval.
node) = (yyvsp[-1].node);
7858 #line 7854 "parse.c"
7862 #line 2392 "parse.y"
7865 (yyval.
node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
7869 #line 7865 "parse.c"
7873 #line 2399 "parse.y"
7876 (yyval.
node) = (yyvsp[-1].node) ?
NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
7880 #line 7876 "parse.c"
7884 #line 2408 "parse.y"
7887 (yyval.
node) = (yyvsp[0].node);
7889 #line 7885 "parse.c"
7893 #line 2413 "parse.y"
7896 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7902 #line 7898 "parse.c"
7906 #line 2424 "parse.y"
7909 (yyval.
node) = (yyvsp[-1].node);
7913 #line 7909 "parse.c"
7917 #line 2431 "parse.y"
7935 (yyval.
node) = arg_append(p, splat, new_hash(p, kwrest, &(yylsp[-1])), &(yylsp[-1]));
7937 (yyval.
node) = splat;
7939 (yyval.
node) = arg_blk_pass((yyval.
node), block);
7944 #line 7940 "parse.c"
7948 #line 2466 "parse.y"
7950 (yyval.
node) = (yyvsp[-1].node);
7952 #line 7948 "parse.c"
7956 #line 2470 "parse.y"
7959 (yyval.
node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
7963 #line 7959 "parse.c"
7967 #line 2477 "parse.y"
7970 (yyval.
node) = (yyvsp[-1].node) ?
NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
7974 #line 7970 "parse.c"
7978 #line 2486 "parse.y"
7986 #line 7982 "parse.c"
7990 #line 2494 "parse.y"
7993 (yyval.
node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node));
7997 #line 7993 "parse.c"
8001 #line 2501 "parse.y"
8004 (yyval.
node) = (yyvsp[-1].node) ?
NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
8005 (yyval.
node) = arg_blk_pass((yyval.
node), (yyvsp[0].node));
8009 #line 8005 "parse.c"
8013 #line 2509 "parse.y"
8016 (yyval.
node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
8017 (yyval.
node) = arg_blk_pass((yyval.
node), (yyvsp[0].node));
8021 #line 8017 "parse.c"
8025 #line 2520 "parse.y"
8043 #line 8039 "parse.c"
8047 #line 2538 "parse.y"
8063 (yyval.
node) = (yyvsp[0].node);
8065 #line 8061 "parse.c"
8069 #line 2558 "parse.y"
8076 #line 8072 "parse.c"
8080 #line 2567 "parse.y"
8082 (yyval.
node) = (yyvsp[0].node);
8084 #line 8080 "parse.c"
8088 #line 2571 "parse.y"
8092 #line 8088 "parse.c"
8096 #line 2577 "parse.y"
8103 #line 8099 "parse.c"
8107 #line 2584 "parse.y"
8114 #line 8110 "parse.c"
8118 #line 2591 "parse.y"
8121 (yyval.
node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
8125 #line 8121 "parse.c"
8129 #line 2598 "parse.y"
8132 (yyval.
node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
8136 #line 8132 "parse.c"
8140 #line 2611 "parse.y"
8143 (yyval.
node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
8147 #line 8143 "parse.c"
8151 #line 2618 "parse.y"
8154 (yyval.
node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
8158 #line 8154 "parse.c"
8162 #line 2625 "parse.y"
8169 #line 8165 "parse.c"
8173 #line 2644 "parse.y"
8180 #line 8176 "parse.c"
8184 #line 2651 "parse.y"
8188 #line 8184 "parse.c"
8192 #line 2656 "parse.y"
8196 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
8202 #line 8198 "parse.c"
8206 #line 2665 "parse.y"
8208 #line 8204 "parse.c"
8212 #line 2666 "parse.y"
8219 #line 8215 "parse.c"
8223 #line 2672 "parse.y"
8225 #line 8221 "parse.c"
8229 #line 2673 "parse.y"
8233 (yyval.
node) = (yyvsp[-2].node);
8237 #line 8233 "parse.c"
8241 #line 2681 "parse.y"
8245 (yyval.
node) = (yyvsp[-1].node);
8249 #line 8245 "parse.c"
8253 #line 2689 "parse.y"
8256 (yyval.
node) =
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
8260 #line 8256 "parse.c"
8264 #line 2696 "parse.y"
8271 #line 8267 "parse.c"
8275 #line 2703 "parse.y"
8282 #line 8278 "parse.c"
8286 #line 2710 "parse.y"
8289 (yyval.
node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
8294 #line 8290 "parse.c"
8298 #line 2718 "parse.y"
8305 #line 8301 "parse.c"
8309 #line 2725 "parse.y"
8312 (yyval.
node) = new_yield(p, (yyvsp[-1].node), &(yyloc));
8316 #line 8312 "parse.c"
8320 #line 2732 "parse.y"
8327 #line 8323 "parse.c"
8331 #line 2739 "parse.y"
8338 #line 8334 "parse.c"
8342 #line 2745 "parse.y"
8344 #line 8340 "parse.c"
8348 #line 2746 "parse.y"
8351 (yyval.
node) = new_defined(p, (yyvsp[-1].node), &(yyloc));
8353 #line 8349 "parse.c"
8357 #line 2751 "parse.y"
8359 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-3]), &(yyloc));
8361 #line 8357 "parse.c"
8365 #line 2755 "parse.y"
8367 (yyval.
node) = call_uni_op(p, method_cond(p,
new_nil(&(yylsp[-1])), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
8369 #line 8365 "parse.c"
8373 #line 2759 "parse.y"
8376 (yyval.
node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
8380 #line 8376 "parse.c"
8384 #line 2767 "parse.y"
8387 block_dup_check(p, (yyvsp[-1].node)->
nd_args, (yyvsp[0].node));
8388 (yyval.
node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
8392 #line 8388 "parse.c"
8396 #line 2775 "parse.y"
8398 token_info_push(p,
"->", &(yylsp[0]));
8400 #line 8396 "parse.c"
8404 #line 2779 "parse.y"
8406 (yyval.
node) = (yyvsp[0].node);
8411 #line 8407 "parse.c"
8415 #line 2789 "parse.y"
8418 (yyval.
node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
8419 fixpos((yyval.
node), (yyvsp[-4].node));
8423 #line 8419 "parse.c"
8427 #line 2800 "parse.y"
8430 (yyval.
node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
8431 fixpos((yyval.
node), (yyvsp[-4].node));
8435 #line 8431 "parse.c"
8439 #line 2810 "parse.y"
8442 (yyval.
node) =
NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc));
8443 fixpos((yyval.
node), (yyvsp[-2].node));
8447 #line 8443 "parse.c"
8451 #line 2820 "parse.y"
8454 (yyval.
node) =
NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc));
8455 fixpos((yyval.
node), (yyvsp[-2].node));
8459 #line 8455 "parse.c"
8463 #line 2828 "parse.y"
8468 #line 8464 "parse.c"
8472 #line 2834 "parse.y"
8477 (yyval.
node) =
NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
8478 fixpos((yyval.
node), (yyvsp[-4].node));
8482 #line 8478 "parse.c"
8486 #line 2844 "parse.y"
8491 #line 8487 "parse.c"
8495 #line 2850 "parse.y"
8504 #line 8500 "parse.c"
8508 #line 2861 "parse.y"
8511 (yyval.
node) = new_case3(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
8515 #line 8511 "parse.c"
8519 #line 2870 "parse.y"
8531 ID id = internal_id(p);
8533 NODE *args, *scope, *internal_var =
NEW_DVAR(
id, &(yylsp[-4]));
8536 rb_imemo_tmpbuf_set_ptr(tmpbuf, tbl);
8537 tbl[0] = 1 ; tbl[1] =
id ;
8540 switch (
nd_type((yyvsp[-4].node))) {
8544 (yyvsp[-4].node)->
nd_value = internal_var;
8547 m->nd_next = (yyvsp[-4].node);
8550 m->nd_next = node_assign(p, (yyvsp[-4].node),
NEW_FOR_MASGN(internal_var, &(yylsp[-4])), &(yylsp[-4]));
8553 m->nd_next = node_assign(p,
NEW_MASGN(
NEW_LIST((yyvsp[-4].node), &(yylsp[-4])), 0, &(yylsp[-4])), internal_var, &(yylsp[-4]));
8556 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
8559 (yyval.
node) =
NEW_FOR((yyvsp[-2].node), scope, &(yyloc));
8560 fixpos((yyval.
node), (yyvsp[-4].node));
8564 #line 8560 "parse.c"
8568 #line 2915 "parse.y"
8571 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[-1]));
8572 yyerror1(&loc,
"class definition in method body");
8578 #line 8574 "parse.c"
8582 #line 2926 "parse.y"
8585 (yyval.
node) =
NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc));
8587 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
8594 #line 8590 "parse.c"
8598 #line 2938 "parse.y"
8605 #line 8601 "parse.c"
8609 #line 2947 "parse.y"
8612 (yyval.
node) =
NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
8614 set_line_body((yyvsp[-1].node),
nd_line((yyvsp[-4].node)));
8615 fixpos((yyval.
node), (yyvsp[-4].node));
8619 p->
in_def = (yyvsp[-3].num) & 1;
8620 p->
in_class = ((yyvsp[-3].num) >> 1) & 1;
8622 #line 8618 "parse.c"
8626 #line 2960 "parse.y"
8629 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
8630 yyerror1(&loc,
"module definition in method body");
8636 #line 8632 "parse.c"
8640 #line 2971 "parse.y"
8643 (yyval.
node) =
NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
8645 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
8652 #line 8648 "parse.c"
8656 #line 2983 "parse.y"
8658 numparam_name(p,
get_id((yyvsp[0].
id)));
8663 #line 8659 "parse.c"
8667 #line 2989 "parse.y"
8672 #line 8668 "parse.c"
8676 #line 2996 "parse.y"
8679 NODE *body = remove_begin((yyvsp[-1].node));
8680 reduce_nodes(p, &body);
8681 (yyval.
node) =
NEW_DEFN((yyvsp[-5].
id), (yyvsp[-2].node), body, &(yyloc));
8683 set_line_body(body, (yylsp[-6]).beg_pos.lineno);
8687 p->
in_def = (yyvsp[-3].num) & 1;
8690 #line 8686 "parse.c"
8694 #line 3009 "parse.y"
8696 #line 8692 "parse.c"
8700 #line 3010 "parse.y"
8702 numparam_name(p,
get_id((yyvsp[0].
id)));
8703 (yyvsp[-1].num) = p->
in_def;
8710 #line 8706 "parse.c"
8714 #line 3022 "parse.y"
8717 NODE *body = remove_begin((yyvsp[-1].node));
8718 reduce_nodes(p, &body);
8719 (yyval.
node) =
NEW_DEFS((yyvsp[-7].node), (yyvsp[-4].id), (yyvsp[-2].node), body, &(yyloc));
8721 set_line_body(body, (yylsp[-8]).beg_pos.lineno);
8725 p->
in_def = (yyvsp[-5].num) & 1;
8728 #line 8724 "parse.c"
8732 #line 3036 "parse.y"
8739 #line 8735 "parse.c"
8743 #line 3043 "parse.y"
8750 #line 8746 "parse.c"
8754 #line 3050 "parse.y"
8761 #line 8757 "parse.c"
8765 #line 3057 "parse.y"
8772 #line 8768 "parse.c"
8776 #line 3066 "parse.y"
8779 (yyval.
node) = (yyvsp[0].node);
8781 #line 8777 "parse.c"
8785 #line 3073 "parse.y"
8787 token_info_push(p,
"begin", &(yyloc));
8789 #line 8785 "parse.c"
8793 #line 3079 "parse.y"
8796 token_info_push(p,
"if", &(yyloc));
8808 #line 8804 "parse.c"
8812 #line 3096 "parse.y"
8814 token_info_push(p,
"unless", &(yyloc));
8816 #line 8812 "parse.c"
8820 #line 3102 "parse.y"
8822 token_info_push(p,
"while", &(yyloc));
8824 #line 8820 "parse.c"
8828 #line 3108 "parse.y"
8830 token_info_push(p,
"until", &(yyloc));
8832 #line 8828 "parse.c"
8836 #line 3114 "parse.y"
8838 token_info_push(p,
"case", &(yyloc));
8840 #line 8836 "parse.c"
8844 #line 3120 "parse.y"
8846 token_info_push(p,
"for", &(yyloc));
8848 #line 8844 "parse.c"
8852 #line 3126 "parse.y"
8854 token_info_push(p,
"class", &(yyloc));
8856 #line 8852 "parse.c"
8860 #line 3132 "parse.y"
8862 token_info_push(p,
"module", &(yyloc));
8864 #line 8860 "parse.c"
8868 #line 3138 "parse.y"
8870 token_info_push(p,
"def", &(yyloc));
8872 #line 8868 "parse.c"
8876 #line 3144 "parse.y"
8878 token_info_push(p,
"do", &(yyloc));
8880 #line 8876 "parse.c"
8884 #line 3150 "parse.y"
8886 token_info_push(p,
"do", &(yyloc));
8888 #line 8884 "parse.c"
8892 #line 3156 "parse.y"
8894 token_info_warn(p,
"rescue", p->
token_info, 1, &(yyloc));
8896 #line 8892 "parse.c"
8900 #line 3162 "parse.y"
8902 token_info_warn(p,
"ensure", p->
token_info, 1, &(yyloc));
8904 #line 8900 "parse.c"
8908 #line 3168 "parse.y"
8910 token_info_warn(p,
"when", p->
token_info, 0, &(yyloc));
8912 #line 8908 "parse.c"
8916 #line 3174 "parse.y"
8919 int same = ptinfo_beg &&
strcmp(ptinfo_beg->
token,
"case") != 0;
8920 token_info_warn(p,
"else", p->
token_info, same, &(yyloc));
8925 token_info_setup(&e, p->
lex.
pbeg, &(yyloc));
8926 if (!e.
nonspc) *ptinfo_beg = e;
8929 #line 8925 "parse.c"
8933 #line 3189 "parse.y"
8936 token_info_warn(p,
"elsif", p->
token_info, 1, &(yyloc));
8938 #line 8934 "parse.c"
8942 #line 3196 "parse.y"
8944 token_info_pop(p,
"end", &(yyloc));
8946 #line 8942 "parse.c"
8950 #line 3202 "parse.y"
8953 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
8955 #line 8951 "parse.c"
8959 #line 3221 "parse.y"
8962 (yyval.
node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
8963 fixpos((yyval.
node), (yyvsp[-3].node));
8967 #line 8963 "parse.c"
8971 #line 3232 "parse.y"
8974 (yyval.
node) = (yyvsp[0].node);
8978 #line 8974 "parse.c"
8982 #line 3245 "parse.y"
8985 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
8986 mark_lvar_used(p, (yyval.
node));
8990 #line 8986 "parse.c"
8994 #line 3253 "parse.y"
8997 (yyval.
node) = (yyvsp[-1].node);
9001 #line 8997 "parse.c"
9005 #line 3262 "parse.y"
9012 #line 9008 "parse.c"
9016 #line 3269 "parse.y"
9019 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
9023 #line 9019 "parse.c"
9027 #line 3278 "parse.y"
9034 #line 9030 "parse.c"
9038 #line 3285 "parse.y"
9041 (yyval.
node) =
NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
9045 #line 9041 "parse.c"
9049 #line 3292 "parse.y"
9056 #line 9052 "parse.c"
9060 #line 3299 "parse.y"
9067 #line 9063 "parse.c"
9071 #line 3306 "parse.y"
9078 #line 9074 "parse.c"
9082 #line 3315 "parse.y"
9085 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
9086 mark_lvar_used(p, (yyval.
node));
9090 #line 9086 "parse.c"
9094 #line 3323 "parse.y"
9101 #line 9097 "parse.c"
9105 #line 3332 "parse.y"
9107 (yyval.
node) = new_args_tail(p, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
9109 #line 9105 "parse.c"
9113 #line 3336 "parse.y"
9115 (yyval.
node) = new_args_tail(p, (yyvsp[-1].node),
Qnone, (yyvsp[0].id), &(yylsp[-1]));
9117 #line 9113 "parse.c"
9121 #line 3340 "parse.y"
9123 (yyval.
node) = new_args_tail(p,
Qnone, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
9125 #line 9121 "parse.c"
9129 #line 3344 "parse.y"
9133 #line 9129 "parse.c"
9137 #line 3348 "parse.y"
9139 (yyval.
node) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].
id), &(yylsp[0]));
9141 #line 9137 "parse.c"
9145 #line 3354 "parse.y"
9147 (yyval.
node) = (yyvsp[0].node);
9149 #line 9145 "parse.c"
9153 #line 3358 "parse.y"
9157 #line 9153 "parse.c"
9161 #line 3364 "parse.y"
9163 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
9165 #line 9161 "parse.c"
9169 #line 3368 "parse.y"
9171 (yyval.
node) = new_args(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9173 #line 9169 "parse.c"
9177 #line 3372 "parse.y"
9179 (yyval.
node) = new_args(p, (yyvsp[-3].node), (yyvsp[-1].node),
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
9181 #line 9177 "parse.c"
9185 #line 3376 "parse.y"
9187 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9189 #line 9185 "parse.c"
9193 #line 3380 "parse.y"
9195 (yyval.
node) = new_args(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].id),
Qnone, (yyvsp[0].node), &(yyloc));
9197 #line 9193 "parse.c"
9201 #line 3384 "parse.y"
9205 (yyval.
node) = new_args(p, (yyvsp[-1].node),
Qnone,
NODE_SPECIAL_EXCESSIVE_COMMA,
Qnone, new_args_tail(p,
Qnone,
Qnone,
Qnone, &(yylsp[-1])), &(yyloc));
9209 #line 9205 "parse.c"
9213 #line 3392 "parse.y"
9215 (yyval.
node) = new_args(p, (yyvsp[-5].node),
Qnone, (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9217 #line 9213 "parse.c"
9221 #line 3396 "parse.y"
9223 (yyval.
node) = new_args(p, (yyvsp[-1].node),
Qnone,
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
9225 #line 9221 "parse.c"
9229 #line 3400 "parse.y"
9231 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node), (yyvsp[-1].id),
Qnone, (yyvsp[0].node), &(yyloc));
9233 #line 9229 "parse.c"
9237 #line 3404 "parse.y"
9239 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-5].node), (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9241 #line 9237 "parse.c"
9245 #line 3408 "parse.y"
9247 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-1].node),
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
9249 #line 9245 "parse.c"
9253 #line 3412 "parse.y"
9255 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9257 #line 9253 "parse.c"
9261 #line 3416 "parse.y"
9263 (yyval.
node) = new_args(p,
Qnone,
Qnone, (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
9265 #line 9261 "parse.c"
9269 #line 3420 "parse.y"
9271 (yyval.
node) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9273 #line 9269 "parse.c"
9277 #line 3424 "parse.y"
9281 #line 9277 "parse.c"
9285 #line 3431 "parse.y"
9289 #line 9285 "parse.c"
9293 #line 3437 "parse.y"
9302 #line 9298 "parse.c"
9306 #line 3446 "parse.y"
9311 (yyval.
node) = (yyvsp[-2].node);
9315 #line 9311 "parse.c"
9319 #line 3458 "parse.y"
9323 #line 9319 "parse.c"
9327 #line 3462 "parse.y"
9334 #line 9330 "parse.c"
9338 #line 3477 "parse.y"
9340 new_bv(p,
get_id((yyvsp[0].
id)));
9343 #line 9339 "parse.c"
9347 #line 3482 "parse.y"
9351 #line 9347 "parse.c"
9355 #line 3487 "parse.y"
9357 (yyval.
vars) = dyna_push(p);
9359 #line 9355 "parse.c"
9363 #line 3490 "parse.y"
9368 #line 9364 "parse.c"
9372 #line 3494 "parse.y"
9377 #line 9373 "parse.c"
9381 #line 3498 "parse.y"
9383 (yyval.
node) = numparam_push(p);
9385 #line 9381 "parse.c"
9389 #line 3502 "parse.y"
9393 #line 9389 "parse.c"
9397 #line 3506 "parse.y"
9403 (yyvsp[-2].node) = args_with_numbered(p, (yyvsp[-2].node), max_numparam);
9406 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9407 (yyval.
node) =
NEW_LAMBDA((yyvsp[-2].node), (yyvsp[0].node), &loc);
9413 numparam_pop(p, (yyvsp[-3].node));
9414 dyna_pop(p, (yyvsp[-6].
vars));
9416 #line 9412 "parse.c"
9420 #line 3527 "parse.y"
9423 (yyval.
node) = (yyvsp[-2].node);
9428 #line 9424 "parse.c"
9432 #line 3535 "parse.y"
9435 if (!args_info_empty_p((yyvsp[0].node)->
nd_ainfo))
9438 (yyval.
node) = (yyvsp[0].node);
9440 #line 9436 "parse.c"
9444 #line 3545 "parse.y"
9446 token_info_pop(p,
"}", &(yylsp[0]));
9447 (yyval.
node) = (yyvsp[-1].node);
9449 #line 9445 "parse.c"
9453 #line 3550 "parse.y"
9455 (yyval.
node) = (yyvsp[-1].node);
9457 #line 9453 "parse.c"
9461 #line 3556 "parse.y"
9463 (yyval.
node) = (yyvsp[-1].node);
9465 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9469 #line 9465 "parse.c"
9473 #line 3566 "parse.y"
9480 block_dup_check(p, (yyvsp[-1].node)->
nd_args, (yyvsp[0].node));
9482 (yyval.
node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9483 fixpos((yyval.
node), (yyvsp[-1].node));
9487 #line 9483 "parse.c"
9491 #line 3580 "parse.y"
9494 (yyval.
node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9498 #line 9494 "parse.c"
9502 #line 3587 "parse.y"
9505 (yyval.
node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
9509 #line 9505 "parse.c"
9513 #line 3594 "parse.y"
9516 (yyval.
node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
9520 #line 9516 "parse.c"
9524 #line 3603 "parse.y"
9527 (yyval.
node) = (yyvsp[-1].node);
9533 #line 9529 "parse.c"
9537 #line 3612 "parse.y"
9540 (yyval.
node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9545 #line 9541 "parse.c"
9549 #line 3620 "parse.y"
9552 (yyval.
node) = new_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9557 #line 9553 "parse.c"
9561 #line 3628 "parse.y"
9568 #line 9564 "parse.c"
9572 #line 3635 "parse.y"
9575 (yyval.
node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node),
ID2VAL(
idCall), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9580 #line 9576 "parse.c"
9584 #line 3643 "parse.y"
9592 #line 9588 "parse.c"
9596 #line 3651 "parse.y"
9603 #line 9599 "parse.c"
9607 #line 3658 "parse.y"
9614 #line 9610 "parse.c"
9618 #line 3665 "parse.y"
9625 fixpos((yyval.
node), (yyvsp[-3].node));
9629 #line 9625 "parse.c"
9633 #line 3678 "parse.y"
9635 (yyval.
node) = (yyvsp[-1].node);
9637 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9641 #line 9637 "parse.c"
9645 #line 3686 "parse.y"
9647 (yyval.
node) = (yyvsp[-1].node);
9649 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9653 #line 9649 "parse.c"
9657 #line 3695 "parse.y"
9658 {(yyval.
vars) = dyna_push(p);}
9659 #line 9655 "parse.c"
9663 #line 3696 "parse.y"
9668 #line 9664 "parse.c"
9672 #line 3700 "parse.y"
9674 (yyval.
node) = numparam_push(p);
9676 #line 9672 "parse.c"
9680 #line 3704 "parse.y"
9684 (yyvsp[-1].node) = args_with_numbered(p, (yyvsp[-1].node), max_numparam);
9686 (yyval.
node) =
NEW_ITER((yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9689 numparam_pop(p, (yyvsp[-2].node));
9690 dyna_pop(p, (yyvsp[-4].
vars));
9692 #line 9688 "parse.c"
9696 #line 3717 "parse.y"
9697 {(yyval.
vars) = dyna_push(p);}
9698 #line 9694 "parse.c"
9702 #line 3718 "parse.y"
9707 #line 9703 "parse.c"
9711 #line 3722 "parse.y"
9713 (yyval.
node) = numparam_push(p);
9716 #line 9712 "parse.c"
9720 #line 3727 "parse.y"
9724 (yyvsp[-1].node) = args_with_numbered(p, (yyvsp[-1].node), max_numparam);
9726 (yyval.
node) =
NEW_ITER((yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9730 numparam_pop(p, (yyvsp[-2].node));
9731 dyna_pop(p, (yyvsp[-4].
vars));
9733 #line 9729 "parse.c"
9737 #line 3742 "parse.y"
9740 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
9745 #line 9741 "parse.c"
9749 #line 3750 "parse.y"
9756 #line 9752 "parse.c"
9760 #line 3757 "parse.y"
9763 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
9764 (yyval.
node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
9768 #line 9764 "parse.c"
9772 #line 3765 "parse.y"
9775 (yyval.
node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
9779 #line 9775 "parse.c"
9783 #line 3776 "parse.y"
9786 (yyval.
node) =
NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9787 fixpos((yyval.
node), (yyvsp[-3].node));
9791 #line 9787 "parse.c"
9795 #line 3790 "parse.y"
9802 #line 9798 "parse.c"
9806 #line 3796 "parse.y"
9807 {(yyval.
tbl) = push_pvtbl(p);}
9808 #line 9804 "parse.c"
9812 #line 3797 "parse.y"
9813 {(yyval.
tbl) = push_pktbl(p);}
9814 #line 9810 "parse.c"
9818 #line 3799 "parse.y"
9819 {pop_pktbl(p, (yyvsp[-2].tbl));}
9820 #line 9816 "parse.c"
9824 #line 3800 "parse.y"
9825 {pop_pvtbl(p, (yyvsp[-4].tbl));}
9826 #line 9822 "parse.c"
9830 #line 3801 "parse.y"
9834 #line 9830 "parse.c"
9838 #line 3806 "parse.y"
9841 (yyval.
node) =
NEW_IN((yyvsp[-6].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9845 #line 9841 "parse.c"
9849 #line 3820 "parse.y"
9852 (yyval.
node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
9853 fixpos((yyval.
node), (yyvsp[0].node));
9857 #line 9853 "parse.c"
9861 #line 3828 "parse.y"
9864 (yyval.
node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
9865 fixpos((yyval.
node), (yyvsp[0].node));
9869 #line 9865 "parse.c"
9873 #line 3839 "parse.y"
9875 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
9878 #line 9874 "parse.c"
9882 #line 3844 "parse.y"
9884 (yyval.
node) = new_array_pattern(p,
Qnone,
get_value((yyvsp[-2].node)), (yyvsp[0].node), &(yyloc));
9890 #line 9886 "parse.c"
9894 #line 3852 "parse.y"
9896 (yyval.
node) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
9898 #line 9894 "parse.c"
9902 #line 3856 "parse.y"
9904 (yyval.
node) = new_hash_pattern(p,
Qnone, (yyvsp[0].node), &(yyloc));
9906 #line 9902 "parse.c"
9910 #line 3865 "parse.y"
9914 n = list_append(p,
n, (yyvsp[0].node));
9915 (yyval.
node) = new_hash(p,
n, &(yyloc));
9919 #line 9915 "parse.c"
9923 #line 3877 "parse.y"
9930 #line 9926 "parse.c"
9934 #line 3886 "parse.y"
9935 {(yyval.
tbl) = push_pktbl(p);}
9936 #line 9932 "parse.c"
9940 #line 3887 "parse.y"
9941 {(yyval.
tbl) = push_pktbl(p);}
9942 #line 9938 "parse.c"
9946 #line 3891 "parse.y"
9948 pop_pktbl(p, (yyvsp[-2].tbl));
9949 (yyval.
node) = new_array_pattern(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), &(yyloc));
9955 #line 9951 "parse.c"
9959 #line 3900 "parse.y"
9961 pop_pktbl(p, (yyvsp[-2].tbl));
9962 (yyval.
node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
9968 #line 9964 "parse.c"
9972 #line 3909 "parse.y"
9974 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
9975 (yyval.
node) = new_array_pattern(p, (yyvsp[-2].node),
Qnone, (yyval.
node), &(yyloc));
9977 #line 9973 "parse.c"
9981 #line 3914 "parse.y"
9983 pop_pktbl(p, (yyvsp[-2].tbl));
9984 (yyval.
node) = new_array_pattern(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), &(yyloc));
9990 #line 9986 "parse.c"
9994 #line 3923 "parse.y"
9996 pop_pktbl(p, (yyvsp[-2].tbl));
9997 (yyval.
node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
10003 #line 9999 "parse.c"
10007 #line 3932 "parse.y"
10009 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
10010 (yyval.
node) = new_array_pattern(p, (yyvsp[-2].node),
Qnone, (yyval.
node), &(yyloc));
10012 #line 10008 "parse.c"
10016 #line 3936 "parse.y"
10017 {(yyval.
tbl) = push_pktbl(p);}
10018 #line 10014 "parse.c"
10022 #line 3937 "parse.y"
10024 pop_pktbl(p, (yyvsp[-2].tbl));
10025 (yyval.
node) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[-1].node), &(yyloc));
10027 #line 10023 "parse.c"
10031 #line 3942 "parse.y"
10033 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
10036 #line 10032 "parse.c"
10040 #line 3946 "parse.y"
10041 {(yyval.
tbl) = push_pktbl(p);}
10042 #line 10038 "parse.c"
10046 #line 3947 "parse.y"
10048 pop_pktbl(p, (yyvsp[-2].tbl));
10049 (yyval.
node) = new_hash_pattern(p,
Qnone, (yyvsp[-1].node), &(yyloc));
10051 #line 10047 "parse.c"
10055 #line 3952 "parse.y"
10057 (yyval.
node) = new_hash_pattern_tail(p,
Qnone, 0, &(yyloc));
10058 (yyval.
node) = new_hash_pattern(p,
Qnone, (yyval.
node), &(yyloc));
10060 #line 10056 "parse.c"
10064 #line 3956 "parse.y"
10065 {(yyval.
tbl) = push_pktbl(p);}
10066 #line 10062 "parse.c"
10070 #line 3957 "parse.y"
10072 pop_pktbl(p, (yyvsp[-2].tbl));
10073 (yyval.
node) = (yyvsp[-1].node);
10075 #line 10071 "parse.c"
10079 #line 3964 "parse.y"
10083 (yyval.
node) = new_array_pattern_tail(p, pre_args, 0, 0,
Qnone, &(yyloc));
10088 #line 10084 "parse.c"
10092 #line 3973 "parse.y"
10094 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0,
Qnone, &(yyloc));
10096 #line 10092 "parse.c"
10100 #line 3977 "parse.y"
10103 (yyval.
node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, 0,
Qnone, &(yyloc));
10109 #line 10105 "parse.c"
10113 #line 3986 "parse.y"
10115 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-2].node), 1, (yyvsp[0].id),
Qnone, &(yyloc));
10117 #line 10113 "parse.c"
10121 #line 3990 "parse.y"
10123 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-4].node), 1, (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
10125 #line 10121 "parse.c"
10129 #line 3994 "parse.y"
10131 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, 0,
Qnone, &(yyloc));
10133 #line 10129 "parse.c"
10137 #line 3998 "parse.y"
10139 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, 0, (yyvsp[0].node), &(yyloc));
10141 #line 10137 "parse.c"
10145 #line 4005 "parse.y"
10147 (yyval.
node) = (yyvsp[-1].node);
10149 #line 10145 "parse.c"
10153 #line 4009 "parse.y"
10156 (yyval.
node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
10160 #line 10156 "parse.c"
10164 #line 4018 "parse.y"
10166 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[0].
id),
Qnone, &(yyloc));
10168 #line 10164 "parse.c"
10172 #line 4022 "parse.y"
10174 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
10176 #line 10172 "parse.c"
10180 #line 4026 "parse.y"
10182 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
10184 #line 10180 "parse.c"
10188 #line 4030 "parse.y"
10190 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, 0, (yyvsp[0].node), &(yyloc));
10192 #line 10188 "parse.c"
10196 #line 4037 "parse.y"
10199 (yyval.
node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
10203 #line 10199 "parse.c"
10207 #line 4046 "parse.y"
10214 #line 10210 "parse.c"
10218 #line 4055 "parse.y"
10220 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].id), &(yyloc));
10222 #line 10218 "parse.c"
10226 #line 4059 "parse.y"
10228 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
10230 #line 10226 "parse.c"
10234 #line 4063 "parse.y"
10236 (yyval.
node) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)), (yyvsp[0].
id), &(yyloc));
10238 #line 10234 "parse.c"
10242 #line 4067 "parse.y"
10244 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)),
ID2VAL(
idNil), &(yyloc));
10246 #line 10242 "parse.c"
10250 #line 4071 "parse.y"
10252 (yyval.
node) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)),
ID2VAL(
idNil), &(yyloc));
10254 #line 10250 "parse.c"
10258 #line 4079 "parse.y"
10261 (yyval.
node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
10265 #line 10261 "parse.c"
10269 #line 4088 "parse.y"
10271 error_duplicate_pattern_key(p,
get_id((yyvsp[-1].
id)), &(yylsp[-1]));
10277 #line 10273 "parse.c"
10281 #line 4096 "parse.y"
10283 error_duplicate_pattern_key(p,
get_id((yyvsp[0].
id)), &(yylsp[0]));
10285 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
10287 error_duplicate_pattern_variable(p,
get_id((yyvsp[0].
id)), &(yylsp[0]));
10289 (yyval.
node) = list_append(p,
NEW_LIST(
NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
10293 #line 10289 "parse.c"
10297 #line 4111 "parse.y"
10299 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10302 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
10303 (yyval.
id) =
SYM2ID(node->nd_lit);
10314 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
10318 #line 10314 "parse.c"
10322 #line 4134 "parse.y"
10324 (yyval.
id) = (yyvsp[0].
id);
10326 #line 10322 "parse.c"
10330 #line 4138 "parse.y"
10334 #line 10330 "parse.c"
10338 #line 4144 "parse.y"
10342 #line 10338 "parse.c"
10346 #line 4151 "parse.y"
10351 (yyval.
node) =
NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
10355 #line 10351 "parse.c"
10359 #line 4160 "parse.y"
10364 (yyval.
node) =
NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
10368 #line 10364 "parse.c"
10372 #line 4169 "parse.y"
10376 loc.beg_pos = (yylsp[0]).end_pos;
10377 loc.end_pos = (yylsp[0]).end_pos;
10384 #line 10380 "parse.c"
10388 #line 4181 "parse.y"
10392 loc.beg_pos = (yylsp[0]).end_pos;
10393 loc.end_pos = (yylsp[0]).end_pos;
10400 #line 10396 "parse.c"
10404 #line 4196 "parse.y"
10408 loc.beg_pos = (yylsp[-1]).beg_pos;
10409 loc.end_pos = (yylsp[-1]).beg_pos;
10416 #line 10412 "parse.c"
10420 #line 4208 "parse.y"
10424 loc.beg_pos = (yylsp[-1]).beg_pos;
10425 loc.end_pos = (yylsp[-1]).beg_pos;
10432 #line 10428 "parse.c"
10436 #line 4230 "parse.y"
10439 if (!((yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.
node) =
NEW_BEGIN(0, &(yyloc));
10443 #line 10439 "parse.c"
10447 #line 4237 "parse.y"
10449 token_info_push(p,
"->", &(yylsp[0]));
10451 #line 10447 "parse.c"
10455 #line 4241 "parse.y"
10457 (yyval.
node) = (yyvsp[0].node);
10462 #line 10458 "parse.c"
10466 #line 4250 "parse.y"
10469 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
10470 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
10474 #line 10470 "parse.c"
10478 #line 4260 "parse.y"
10481 NODE *
n = gettable(p, (yyvsp[0].
id), &(yyloc));
10489 #line 10485 "parse.c"
10493 #line 4273 "parse.y"
10500 #line 10496 "parse.c"
10504 #line 4280 "parse.y"
10507 (yyval.
node) =
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
10511 #line 10507 "parse.c"
10515 #line 4287 "parse.y"
10518 (yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc));
10522 #line 10518 "parse.c"
10526 #line 4298 "parse.y"
10530 (yyvsp[-3].node) ? block_append(p, node_assign(p, (yyvsp[-3].node),
NEW_ERRINFO(&(yylsp[-3])), &(yylsp[-3])), (yyvsp[-1].node)) : (yyvsp[-1].node),
10531 (yyvsp[0].node), &(yyloc));
10532 fixpos((yyval.
node), (yyvsp[-4].node)?(yyvsp[-4].node):(yyvsp[-1].node));
10536 #line 10532 "parse.c"
10540 #line 4311 "parse.y"
10547 #line 10543 "parse.c"
10551 #line 4318 "parse.y"
10554 if (!((yyval.
node) = splat_array((yyvsp[0].node)))) (yyval.
node) = (yyvsp[0].node);
10558 #line 10554 "parse.c"
10562 #line 4328 "parse.y"
10564 (yyval.
node) = (yyvsp[0].node);
10566 #line 10562 "parse.c"
10570 #line 4335 "parse.y"
10573 (yyval.
node) = (yyvsp[0].node);
10577 #line 10573 "parse.c"
10581 #line 4349 "parse.y"
10584 NODE *node = (yyvsp[0].node);
10590 node = evstr2dstr(p, node);
10592 (yyval.
node) = node;
10596 #line 10592 "parse.c"
10600 #line 4368 "parse.y"
10603 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10607 #line 10603 "parse.c"
10611 #line 4377 "parse.y"
10614 (yyval.
node) = heredoc_dedent(p, (yyvsp[-1].node));
10615 if ((yyval.
node)) nd_set_loc((yyval.
node), &(yyloc));
10619 #line 10615 "parse.c"
10623 #line 4387 "parse.y"
10626 (yyval.
node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
10630 #line 10626 "parse.c"
10634 #line 4396 "parse.y"
10636 (yyval.
node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc));
10638 #line 10634 "parse.c"
10642 #line 4402 "parse.y"
10649 #line 10645 "parse.c"
10653 #line 4411 "parse.y"
10660 #line 10656 "parse.c"
10664 #line 4418 "parse.y"
10667 (yyval.
node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
10671 #line 10667 "parse.c"
10675 #line 4429 "parse.y"
10678 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10682 #line 10678 "parse.c"
10686 #line 4438 "parse.y"
10693 #line 10689 "parse.c"
10697 #line 4447 "parse.y"
10704 #line 10700 "parse.c"
10708 #line 4454 "parse.y"
10711 (yyval.
node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
10715 #line 10711 "parse.c"
10719 #line 4463 "parse.y"
10726 #line 10722 "parse.c"
10730 #line 4472 "parse.y"
10737 #line 10733 "parse.c"
10741 #line 4481 "parse.y"
10748 #line 10744 "parse.c"
10752 #line 4488 "parse.y"
10755 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
10759 #line 10755 "parse.c"
10763 #line 4497 "parse.y"
10770 #line 10766 "parse.c"
10774 #line 4504 "parse.y"
10777 (yyval.
node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
10781 #line 10777 "parse.c"
10785 #line 4513 "parse.y"
10796 #line 10792 "parse.c"
10800 #line 4524 "parse.y"
10803 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10816 #line 10812 "parse.c"
10820 #line 4542 "parse.y"
10827 #line 10823 "parse.c"
10831 #line 4549 "parse.y"
10834 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10838 #line 10834 "parse.c"
10842 #line 4558 "parse.y"
10853 #line 10849 "parse.c"
10857 #line 4569 "parse.y"
10860 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
10862 (yyval.
node) = tail;
10865 (yyval.
node) = head;
10875 head = list_append(p,
NEW_DSTR(
Qnil, &(yyloc)), head);
10878 (yyval.
node) = list_append(p, head, tail);
10896 #line 10892 "parse.c"
10900 #line 4612 "parse.y"
10907 #line 10903 "parse.c"
10911 #line 4619 "parse.y"
10920 #line 10916 "parse.c"
10924 #line 4628 "parse.y"
10929 #line 10925 "parse.c"
10933 #line 4632 "parse.y"
10939 #line 10935 "parse.c"
10943 #line 4637 "parse.y"
10948 #line 10944 "parse.c"
10952 #line 4641 "parse.y"
10957 #line 10953 "parse.c"
10961 #line 4645 "parse.y"
10966 #line 10962 "parse.c"
10970 #line 4650 "parse.y"
10981 (yyval.
node) = new_evstr(p, (yyvsp[-1].node), &(yyloc));
10985 #line 10981 "parse.c"
10989 #line 4667 "parse.y"
10996 #line 10992 "parse.c"
11000 #line 4674 "parse.y"
11007 #line 11003 "parse.c"
11011 #line 4681 "parse.y"
11018 #line 11014 "parse.c"
11022 #line 4695 "parse.y"
11030 #line 11026 "parse.c"
11034 #line 4711 "parse.y"
11038 (yyval.
node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
11042 #line 11038 "parse.c"
11046 #line 4722 "parse.y"
11049 (yyval.
node) = (yyvsp[0].node);
11054 #line 11050 "parse.c"
11058 #line 4744 "parse.y"
11059 {(yyval.
id) =
KWD2EID(nil, (yyvsp[0].
id));}
11060 #line 11056 "parse.c"
11064 #line 4745 "parse.y"
11065 {(yyval.
id) =
KWD2EID(
self, (yyvsp[0].
id));}
11066 #line 11062 "parse.c"
11070 #line 4746 "parse.y"
11071 {(yyval.
id) =
KWD2EID(
true, (yyvsp[0].
id));}
11072 #line 11068 "parse.c"
11076 #line 4747 "parse.y"
11077 {(yyval.
id) =
KWD2EID(
false, (yyvsp[0].
id));}
11078 #line 11074 "parse.c"
11082 #line 4748 "parse.y"
11083 {(yyval.
id) =
KWD2EID(_FILE__, (yyvsp[0].
id));}
11084 #line 11080 "parse.c"
11088 #line 4749 "parse.y"
11089 {(yyval.
id) =
KWD2EID(_LINE__, (yyvsp[0].
id));}
11090 #line 11086 "parse.c"
11094 #line 4750 "parse.y"
11095 {(yyval.
id) =
KWD2EID(_ENCODING__, (yyvsp[0].
id));}
11096 #line 11092 "parse.c"
11100 #line 4754 "parse.y"
11103 if (!((yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.
node) =
NEW_BEGIN(0, &(yyloc));
11113 #line 11109 "parse.c"
11117 #line 4767 "parse.y"
11120 if (!((yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.
node) =
NEW_BEGIN(0, &(yyloc));
11124 #line 11120 "parse.c"
11128 #line 4776 "parse.y"
11131 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11135 #line 11131 "parse.c"
11139 #line 4783 "parse.y"
11142 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11146 #line 11142 "parse.c"
11150 #line 4796 "parse.y"
11155 #line 11151 "parse.c"
11159 #line 4801 "parse.y"
11161 (yyval.
node) = (yyvsp[-1].node);
11163 #line 11159 "parse.c"
11167 #line 4805 "parse.y"
11174 #line 11170 "parse.c"
11178 #line 4814 "parse.y"
11181 (yyval.
node) = (yyvsp[-1].node);
11187 #line 11183 "parse.c"
11191 #line 4823 "parse.y"
11206 #line 11202 "parse.c"
11210 #line 4837 "parse.y"
11216 #line 11212 "parse.c"
11220 #line 4843 "parse.y"
11223 (yyval.
node) = (yyvsp[-1].node);
11227 #line 11223 "parse.c"
11231 #line 4852 "parse.y"
11233 (yyval.
node) = new_args_tail(p, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
11235 #line 11231 "parse.c"
11239 #line 4856 "parse.y"
11241 (yyval.
node) = new_args_tail(p, (yyvsp[-1].node),
Qnone, (yyvsp[0].id), &(yylsp[-1]));
11243 #line 11239 "parse.c"
11247 #line 4860 "parse.y"
11249 (yyval.
node) = new_args_tail(p,
Qnone, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
11251 #line 11247 "parse.c"
11255 #line 4864 "parse.y"
11259 #line 11255 "parse.c"
11263 #line 4868 "parse.y"
11265 (yyval.
node) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].
id), &(yylsp[0]));
11267 #line 11263 "parse.c"
11271 #line 4874 "parse.y"
11273 (yyval.
node) = (yyvsp[0].node);
11275 #line 11271 "parse.c"
11279 #line 4878 "parse.y"
11283 #line 11279 "parse.c"
11287 #line 4884 "parse.y"
11289 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
11291 #line 11287 "parse.c"
11295 #line 4888 "parse.y"
11297 (yyval.
node) = new_args(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11299 #line 11295 "parse.c"
11303 #line 4892 "parse.y"
11305 (yyval.
node) = new_args(p, (yyvsp[-3].node), (yyvsp[-1].node),
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
11307 #line 11303 "parse.c"
11311 #line 4896 "parse.y"
11313 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11315 #line 11311 "parse.c"
11319 #line 4900 "parse.y"
11321 (yyval.
node) = new_args(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].id),
Qnone, (yyvsp[0].node), &(yyloc));
11323 #line 11319 "parse.c"
11327 #line 4904 "parse.y"
11329 (yyval.
node) = new_args(p, (yyvsp[-5].node),
Qnone, (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11331 #line 11327 "parse.c"
11335 #line 4908 "parse.y"
11337 (yyval.
node) = new_args(p, (yyvsp[-1].node),
Qnone,
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
11339 #line 11335 "parse.c"
11343 #line 4912 "parse.y"
11345 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node), (yyvsp[-1].id),
Qnone, (yyvsp[0].node), &(yyloc));
11347 #line 11343 "parse.c"
11351 #line 4916 "parse.y"
11353 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-5].node), (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11355 #line 11351 "parse.c"
11359 #line 4920 "parse.y"
11361 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-1].node),
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
11363 #line 11359 "parse.c"
11367 #line 4924 "parse.y"
11369 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11371 #line 11367 "parse.c"
11375 #line 4928 "parse.y"
11377 (yyval.
node) = new_args(p,
Qnone,
Qnone, (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
11379 #line 11375 "parse.c"
11383 #line 4932 "parse.y"
11385 (yyval.
node) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11387 #line 11383 "parse.c"
11391 #line 4936 "parse.y"
11395 #line 11391 "parse.c"
11399 #line 4940 "parse.y"
11404 #line 11400 "parse.c"
11408 #line 4947 "parse.y"
11415 #line 11411 "parse.c"
11419 #line 4956 "parse.y"
11422 yyerror1(&(yylsp[0]),
"formal argument cannot be a constant");
11427 #line 11423 "parse.c"
11431 #line 4964 "parse.y"
11434 yyerror1(&(yylsp[0]),
"formal argument cannot be an instance variable");
11439 #line 11435 "parse.c"
11443 #line 4972 "parse.y"
11446 yyerror1(&(yylsp[0]),
"formal argument cannot be a global variable");
11451 #line 11447 "parse.c"
11455 #line 4980 "parse.y"
11458 yyerror1(&(yylsp[0]),
"formal argument cannot be a class variable");
11463 #line 11459 "parse.c"
11467 #line 4991 "parse.y"
11469 formal_argument(p,
get_id((yyvsp[0].
id)));
11471 (yyval.
id) = (yyvsp[0].
id);
11473 #line 11469 "parse.c"
11477 #line 4999 "parse.y"
11482 (yyval.
id) = (yyvsp[0].
id);
11484 #line 11480 "parse.c"
11488 #line 5008 "parse.y"
11496 #line 11492 "parse.c"
11500 #line 5016 "parse.y"
11503 ID tid = internal_id(p);
11505 loc.beg_pos = (yylsp[-1]).beg_pos;
11506 loc.end_pos = (yylsp[-1]).beg_pos;
11508 if (dyna_in_block(p)) {
11519 #line 11515 "parse.c"
11523 #line 5039 "parse.y"
11526 (yyval.
node) = (yyvsp[-2].node);
11529 rb_discard_node(p, (yyvsp[0].node));
11533 #line 11529 "parse.c"
11537 #line 5052 "parse.y"
11540 arg_var(p, formal_argument(p,
id));
11543 (yyval.
id) = (yyvsp[0].
id);
11545 #line 11541 "parse.c"
11549 #line 5062 "parse.y"
11553 (yyval.
node) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
11557 #line 11553 "parse.c"
11561 #line 5070 "parse.y"
11569 #line 11565 "parse.c"
11573 #line 5080 "parse.y"
11576 (yyval.
node) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
11580 #line 11576 "parse.c"
11584 #line 5087 "parse.y"
11591 #line 11587 "parse.c"
11595 #line 5096 "parse.y"
11598 (yyval.
node) = (yyvsp[0].node);
11602 #line 11598 "parse.c"
11606 #line 5103 "parse.y"
11609 (yyval.
node) = kwd_append((yyvsp[-2].node), (yyvsp[0].node));
11613 #line 11609 "parse.c"
11617 #line 5113 "parse.y"
11620 (yyval.
node) = (yyvsp[0].node);
11624 #line 11620 "parse.c"
11628 #line 5120 "parse.y"
11631 (yyval.
node) = kwd_append((yyvsp[-2].node), (yyvsp[0].node));
11635 #line 11631 "parse.c"
11639 #line 5133 "parse.y"
11645 #line 11641 "parse.c"
11649 #line 5141 "parse.y"
11651 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].
id))));
11653 (yyval.
id) = (yyvsp[0].
id);
11657 #line 11653 "parse.c"
11661 #line 5149 "parse.y"
11664 (yyval.
id) = internal_id(p);
11665 arg_var(p, (yyval.
id));
11669 #line 11665 "parse.c"
11673 #line 5159 "parse.y"
11677 (yyval.
node) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
11681 #line 11677 "parse.c"
11685 #line 5169 "parse.y"
11689 (yyval.
node) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
11693 #line 11689 "parse.c"
11697 #line 5179 "parse.y"
11700 (yyval.
node) = (yyvsp[0].node);
11704 #line 11700 "parse.c"
11708 #line 5186 "parse.y"
11711 (yyval.
node) = opt_arg_append((yyvsp[-2].node), (yyvsp[0].node));
11715 #line 11711 "parse.c"
11719 #line 5195 "parse.y"
11722 (yyval.
node) = (yyvsp[0].node);
11726 #line 11722 "parse.c"
11730 #line 5202 "parse.y"
11733 (yyval.
node) = opt_arg_append((yyvsp[-2].node), (yyvsp[0].node));
11737 #line 11733 "parse.c"
11741 #line 5215 "parse.y"
11743 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].
id))));
11745 (yyval.
id) = (yyvsp[0].
id);
11749 #line 11745 "parse.c"
11753 #line 5223 "parse.y"
11756 (yyval.
id) = internal_id(p);
11757 arg_var(p, (yyval.
id));
11761 #line 11757 "parse.c"
11765 #line 5237 "parse.y"
11767 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].
id))));
11769 (yyval.
id) = (yyvsp[0].
id);
11773 #line 11769 "parse.c"
11777 #line 5247 "parse.y"
11779 (yyval.
id) = (yyvsp[0].
id);
11781 #line 11777 "parse.c"
11785 #line 5251 "parse.y"
11789 #line 11785 "parse.c"
11793 #line 5257 "parse.y"
11796 (yyval.
node) = (yyvsp[0].node);
11798 #line 11794 "parse.c"
11802 #line 5261 "parse.y"
11804 #line 11800 "parse.c"
11808 #line 5262 "parse.y"
11811 switch (
nd_type((yyvsp[-1].node))) {
11820 yyerror1(&(yylsp[-1]),
"can't define singleton method for literals");
11826 (yyval.
node) = (yyvsp[-1].node);
11830 #line 11826 "parse.c"
11834 #line 5287 "parse.y"
11837 (yyval.
node) = (yyvsp[-1].node);
11841 #line 11837 "parse.c"
11845 #line 5298 "parse.y"
11848 NODE *assocs = (yyvsp[-2].node);
11849 NODE *tail = (yyvsp[0].node);
11854 if (assocs->nd_head &&
11858 tail = tail->nd_next->nd_head->nd_head;
11860 assocs = list_concat(assocs, tail);
11862 (yyval.
node) = assocs;
11866 #line 11862 "parse.c"
11870 #line 5321 "parse.y"
11877 (yyval.
node) = list_append(p,
NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
11881 #line 11877 "parse.c"
11885 #line 5332 "parse.y"
11892 #line 11888 "parse.c"
11896 #line 5339 "parse.y"
11899 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
11900 (yyval.
node) = list_append(p,
NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
11904 #line 11900 "parse.c"
11908 #line 5347 "parse.y"
11912 !((yyvsp[0].node)->nd_head && (yyvsp[0].node)->
nd_head->nd_alen)) {
11913 static VALUE empty_hash;
11921 (yyval.
node) = list_append(p,
NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
11925 #line 11921 "parse.c"
11929 #line 5412 "parse.y"
11931 #line 11927 "parse.c"
11935 #line 5413 "parse.y"
11937 #line 11933 "parse.c"
11941 #line 5417 "parse.y"
11943 #line 11939 "parse.c"
11947 #line 5421 "parse.y"
11951 #line 11947 "parse.c"
11955 #line 11951 "parse.c"
11984 yystate = yypgoto[yyn -
YYNTOKENS] + *yyssp;
11985 if (0 <= yystate && yystate <=
YYLAST && yycheck[yystate] == *yyssp)
11986 yystate = yytable[yystate];
12005 #if ! YYERROR_VERBOSE
12008 # define YYSYNTAX_ERROR yysyntax_error (p, &yymsg_alloc, &yymsg, \
12011 char const *yymsgp =
YY_(
"syntax error");
12012 int yysyntax_error_status;
12014 if (yysyntax_error_status == 0)
12016 else if (yysyntax_error_status == 1)
12018 if (yymsg != yymsgbuf)
12024 yymsg_alloc =
sizeof yymsgbuf;
12025 yysyntax_error_status = 2;
12033 yyerror (&yylloc, p, yymsgp);
12034 if (yysyntax_error_status == 2)
12035 goto yyexhaustedlab;
12037 # undef YYSYNTAX_ERROR
12041 yyerror_range[1] = yylloc;
12043 if (yyerrstatus == 3)
12048 if (yychar <=
YYEOF)
12051 if (yychar ==
YYEOF)
12056 yydestruct (
"Error: discarding",
12057 yytoken, &
yylval, &yylloc, p);
12078 yyerror_range[1] = yylsp[1-yylen];
12096 yyn = yypact[yystate];
12102 yyn = yytable[yyn];
12112 yyerror_range[1] = *yylsp;
12113 yydestruct (
"Error: popping",
12114 yystos[yystate], yyvsp, yylsp, p);
12124 yyerror_range[2] = yylloc;
12151 #if !defined yyoverflow || YYERROR_VERBOSE
12156 yyerror (&yylloc, p,
YY_(
"memory exhausted"));
12167 yydestruct (
"Cleanup: discarding lookahead",
12168 yytoken, &
yylval, &yylloc, p);
12174 while (yyssp != yyss)
12176 yydestruct (
"Cleanup: popping",
12177 yystos[*yyssp], yyvsp, yylsp, p);
12184 #if YYERROR_VERBOSE
12185 if (yymsg != yymsgbuf)
12190 #line 5425 "parse.y"
12195 # define yylval (*p->lval)
12204 # define set_yylval_node(x) { \
12205 YYLTYPE _cur_loc; \
12206 rb_parser_set_location(p, &_cur_loc); \
12207 yylval.node = (x); \
12209 # define set_yylval_str(x) \
12211 set_yylval_node(NEW_STR(x, &_cur_loc)); \
12212 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
12214 # define set_yylval_literal(x) \
12216 set_yylval_node(NEW_LIT(x, &_cur_loc)); \
12217 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
12219 # define set_yylval_num(x) (yylval.num = (x))
12220 # define set_yylval_id(x) (yylval.id = (x))
12221 # define set_yylval_name(x) (yylval.id = (x))
12222 # define yylval_id() (yylval.id)
12224 static inline VALUE
12227 return ripper_new_yylval(p, x,
ID2SYM(x), 0);
12229 # define set_yylval_str(x) (yylval.val = add_mark_object(p, (x)))
12230 # define set_yylval_num(x) (yylval.val = ripper_new_yylval(p, (x), 0, 0))
12231 # define set_yylval_id(x) (void)(x)
12232 # define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(p, x))
12233 # define set_yylval_literal(x) add_mark_object(p, (x))
12234 # define set_yylval_node(x) (void)(x)
12235 # define yylval_id() yylval.id
12236 # define _cur_loc NULL_LOC
12239 #define set_yylval_noname() set_yylval_id(keyword_nil)
12242 #define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
12243 #define dispatch_scan_event(p, t) ((void)0)
12244 #define dispatch_delayed_token(p, t) ((void)0)
12245 #define has_delayed_token(p) (0)
12247 #define literal_flush(p, ptr) ((void)(ptr))
12249 #define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val))
12251 static inline VALUE
12252 intern_sym(
const char *
name)
12269 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t),
str);
12277 if (!ripper_has_scan_event(p))
return;
12278 add_mark_object(p, yylval_rval = ripper_scan_event_val(p, t));
12280 #define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
12286 const char *saved_tokp = p->
lex.
ptok;
12288 if (
NIL_P(p->delayed.token))
return;
12291 add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(t), p->delayed.token));
12292 p->delayed.token =
Qnil;
12296 #define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
12297 #define has_delayed_token(p) (!NIL_P(p->delayed.token))
12324 int column = 1, nonspc = 0,
i;
12326 if (*
ptr ==
'\t') {
12330 if (*
ptr !=
' ' && *
ptr !=
'\t') {
12336 ptinfo->
indent = column;
12337 ptinfo->
nonspc = nonspc;
12349 token_info_setup(ptinfo, p->
lex.
pbeg, loc);
12359 if (!ptinfo_beg)
return;
12363 token_info_warn(p,
token, ptinfo_beg, 1, loc);
12370 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
12372 if (!ptinfo_beg)
return;
12373 token_info_setup(ptinfo_end, p->
lex.
pbeg, loc);
12377 if (!same && ptinfo_beg->
indent < ptinfo_end->
indent)
return;
12379 "mismatched indentations at '%s' with '%s' at %d",
12405 else if (yylloc->beg_pos.lineno == lineno) {
12424 (yylloc->beg_pos.lineno == yylloc->end_pos.lineno &&
12425 yylloc->beg_pos.column == yylloc->end_pos.column)) {
12429 parser_show_error_line(p, yylloc);
12437 const int max_line_margin = 30;
12438 const char *
ptr, *ptr_end, *pt, *pb;
12439 const char *pre =
"", *post =
"", *pend;
12440 const char *code =
"", *caret =
"";
12447 if (!yylloc)
return;
12449 if (pend > pbeg && pend[-1] ==
'\n') {
12450 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
12454 if (lineno == yylloc->end_pos.lineno &&
12455 (pend - pbeg) > yylloc->end_pos.column) {
12456 pt = pbeg + yylloc->end_pos.column;
12459 ptr = ptr_end = pt;
12460 lim =
ptr - pbeg > max_line_margin ?
ptr - max_line_margin : pbeg;
12461 while ((lim <
ptr) && (*(
ptr-1) !=
'\n'))
ptr--;
12463 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
12464 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
12470 if (
ptr > pbeg) pre =
"...";
12472 if (ptr_end < pend) {
12474 if (ptr_end < pend) post =
"...";
12478 if (lineno == yylloc->beg_pos.lineno) {
12479 pb += yylloc->beg_pos.column;
12480 if (pb > pt) pb = pt;
12483 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
12486 if (
RTEST(errbuf)) {
12495 #define CSI_BEGIN "\033["
12496 #define CSI_SGR "m"
12506 (
int)(pt - pb), pb,
12507 (
int)(ptr_end - pt), pt,
12514 lim = pt < pend ? pt : pend;
12521 *p2++ = *
ptr++ ==
'\t' ?
'\t' :
' ';
12532 pre, (
int)
len, code, post,
12541 const char *pcur = 0, *ptok = 0;
12550 dispatch1(parse_error,
STR_NEW2(msg));
12567 vtable_size(
const struct vtable *tbl)
12593 #define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
12611 #define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
12627 if (
tbl->pos ==
tbl->capa) {
12628 tbl->capa =
tbl->capa * 2;
12633 #define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
12644 if (
tbl->pos <
n) {
12650 #define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
12654 vtable_included(
const struct vtable *
tbl,
ID id)
12659 for (
i = 0;
i <
tbl->pos;
i++) {
12660 if (
tbl->tbl[
i] ==
id) {
12674 debug_lines(
VALUE fname)
12677 CONST_ID(script_lines,
"SCRIPT_LINES__");
12713 if (!e_option_supplied(p)) {
12719 #define RUBY_DTRACE_PARSE_HOOK(name) \
12720 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
12721 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
12746 NODE *body = parser_append_options(p, tree->nd_body);
12750 tree->nd_body = prelude;
12762 if (
NIL_P(fname)) {
12782 must_be_ascii_compatible(
VALUE s)
12794 char *beg, *end, *start;
12806 if (end)
len = ++end - beg;
12815 if (
NIL_P(line))
return line;
12816 must_be_ascii_compatible(line);
12842 return yycompile(vparser, p, fname, line);
12854 must_be_ascii_compatible(s);
12855 return parser_compile_string(vparser,
f, s, line);
12877 return yycompile(vparser, p, fname, start);
12893 p->
lex.
gets = lex_generic_gets;
12898 return yycompile(vparser, p, fname, start);
12902 #define STR_FUNC_ESCAPE 0x01
12903 #define STR_FUNC_EXPAND 0x02
12904 #define STR_FUNC_REGEXP 0x04
12905 #define STR_FUNC_QWORDS 0x08
12906 #define STR_FUNC_SYMBOL 0x10
12907 #define STR_FUNC_INDENT 0x20
12908 #define STR_FUNC_LABEL 0x40
12909 #define STR_FUNC_LIST 0x4000
12910 #define STR_FUNC_TERM 0x8000
12941 #define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
12942 #define lex_eol_p(p) ((p)->lex.pcur >= (p)->lex.pend)
12943 #define lex_eol_n_p(p,n) ((p)->lex.pcur+(n) >= (p)->lex.pend)
12944 #define peek(p,c) peek_n(p, (c), 0)
12945 #define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
12946 #define peekc(p) peekc_n(p, 0)
12947 #define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
12965 #define add_delayed_token(p, tok, end) ((void)(tok), (void)(end))
13010 if (
peek(p,
'\n')) {
13017 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
13032 c = parser_cr(p, c);
13041 if (c == -1)
return;
13048 #define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
13050 #define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
13051 #define tok(p) (p)->tokenbuf
13052 #define toklen(p) (p)->tokidx
13058 while (ptr < p->
lex.pend) {
13059 int c = (
unsigned char)*
ptr++;
13060 int eol = (c ==
'\n' || c ==
'#');
13121 #define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
13124 escaped_control_code(
int c)
13150 #define WARN_SPACE_CHAR(c, prefix) \
13151 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c2))
13155 int regexp_literal,
int wide)
13161 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
13162 yyerror0(
"invalid Unicode escape");
13163 return wide && numlen > 0;
13165 if (codepoint > 0x10ffff) {
13166 yyerror0(
"invalid Unicode codepoint (too large)");
13169 if ((codepoint & 0xfffff800) == 0xd800) {
13170 yyerror0(
"invalid Unicode codepoint");
13173 if (regexp_literal) {
13176 else if (codepoint >= 0x80) {
13178 if (*encp && utf8 != *encp) {
13181 parser_show_error_line(p, &loc);
13185 tokaddmbc(p, codepoint, *encp);
13188 tokadd(p, codepoint);
13196 int term,
int symbol_literal,
int regexp_literal)
13203 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
13205 const int open_brace =
'{', close_brace =
'}';
13207 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
13209 if (
peek(p, open_brace)) {
13210 const char *second =
NULL;
13211 int c,
last = nextc(p);
13214 while (c != close_brace) {
13215 if (c ==
term)
goto unterminated;
13216 if (second == multiple_codepoints)
13218 if (regexp_literal) tokadd(p,
last);
13219 if (!tokadd_codepoint(p, encp, regexp_literal,
TRUE)) {
13226 if (
term == -1 && !second)
13227 second = multiple_codepoints;
13230 if (c != close_brace) {
13233 yyerror0(
"unterminated Unicode escape");
13236 if (second && second != multiple_codepoints) {
13246 if (regexp_literal) tokadd(p, close_brace);
13250 if (!tokadd_codepoint(p, encp, regexp_literal,
FALSE)) {
13257 #define ESCAPE_CONTROL 1
13258 #define ESCAPE_META 2
13266 switch (c = nextc(p)) {
13291 case '0':
case '1':
case '2':
case '3':
13292 case '4':
case '5':
case '6':
case '7':
13299 c = tok_hex(p, &numlen);
13300 if (numlen == 0)
return 0;
13311 if ((c = nextc(p)) !=
'-') {
13314 if ((c = nextc(p)) ==
'\\') {
13315 if (
peek(p,
'u'))
goto eof;
13316 return read_escape(p, flags|
ESCAPE_META, encp) | 0x80;
13318 else if (c == -1 || !
ISASCII(c))
goto eof;
13320 int c2 = escaped_control_code(c);
13329 else if (
ISCNTRL(c))
goto eof;
13330 return ((c & 0xff) | 0x80);
13334 if ((c = nextc(p)) !=
'-') {
13339 if ((c = nextc(p))==
'\\') {
13340 if (
peek(p,
'u'))
goto eof;
13345 else if (c == -1 || !
ISASCII(c))
goto eof;
13347 int c2 = escaped_control_code(c);
13366 else if (
ISCNTRL(c))
goto eof;
13372 yyerror0(
"Invalid escape character syntax");
13396 switch (c = nextc(p)) {
13400 case '0':
case '1':
case '2':
case '3':
13401 case '4':
case '5':
case '6':
case '7':
13404 if (numlen == 0)
goto eof;
13412 tok_hex(p, &numlen);
13413 if (numlen == 0)
return -1;
13420 if ((c = nextc(p)) !=
'-') {
13430 if ((c = nextc(p)) !=
'-') {
13442 if ((c = nextc(p)) ==
'\\') {
13445 else if (c == -1)
goto eof;
13451 yyerror0(
"Invalid escape character syntax");
13471 while (c = nextc(p),
ISALPHA(c)) {
13495 parser_show_error_line(p, &loc);
13503 int len = parser_precise_mbclen(p, p->
lex.
pcur-1);
13504 if (
len < 0)
return -1;
13512 simple_re_meta(
int c)
13515 case '$':
case '*':
case '+':
case '.':
13516 case '?':
case '^':
case '|':
13517 case ')':
case ']':
case '}':
case '>':
13525 parser_update_heredoc_indent(
struct parser_params *p,
int c)
13535 else if (c ==
'\t') {
13540 else if (c !=
'\n') {
13556 parser_show_error_line(p, &loc);
13562 const char *pos = p->
lex.
pcur;
13564 parser_mixed_error(p, enc1, enc2);
13570 int func,
int term,
int paren,
long *nest,
13574 bool erred =
false;
13576 #define mixed_error(enc1, enc2) \
13577 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
13578 #define mixed_escape(beg, enc1, enc2) \
13579 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
13581 while ((c = nextc(p)) != -1) {
13583 parser_update_heredoc_indent(p, c);
13586 if (paren && c == paren) {
13589 else if (c ==
term) {
13590 if (!nest || !*nest) {
13598 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
13603 else if (c ==
'\\') {
13635 if (c == -1)
return -1;
13641 if (c ==
term && !simple_re_meta(c)) {
13646 if ((c = tokadd_escape(p,
enc)) < 0)
13648 if (*
enc && *
enc != *encp) {
13656 c = read_escape(p, 0,
enc);
13661 else if (c !=
term && !(paren && c == paren)) {
13668 else if (!parser_isascii(p)) {
13673 else if (*
enc != *encp) {
13677 if (tokadd_mbchar(p, c) == -1)
return -1;
13688 else if (*
enc != *encp) {
13707 #define NEW_STRTERM(func, term, paren) \
13708 new_strterm((VALUE)(func), (VALUE)(paren), (VALUE)(term), 0)
13715 if (!ripper_is_node_yylval(content))
13716 content = ripper_new_yylval(p, 0, 0, content);
13727 if (
yylval.val != content)
13732 #define flush_string_content(p, enc) ((void)(enc))
13739 #define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
13740 #define SPECIAL_PUNCT(idx) ( \
13741 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
13742 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
13743 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
13744 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
13745 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
13753 #undef SPECIAL_PUNCT
13766 if ((c = *
ptr) ==
'-') {
13770 else if (is_global_name_punct(c) ||
ISDIGIT(c)) {
13775 if ((c = *
ptr) ==
'@') {
13792 #define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
13793 #define IS_END() IS_lex_state(EXPR_END_ANY)
13794 #define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
13795 #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
13796 #define IS_LABEL_POSSIBLE() (\
13797 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
13799 #define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
13800 #define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
13840 do {c = nextc(p);}
while (
ISSPACE(c));
13854 return parser_string_term(p, func);
13863 int t = parser_peek_variable_name(p);
13869 if (tokadd_string(p, func,
term, paren, "e->
u0.
nest,
13870 &
enc, &base_enc) == -1) {
13873 # define unterminated_literal(mesg) yyerror0(mesg)
13875 # define unterminated_literal(mesg) compile_error(p, mesg)
13910 int c = nextc(p),
term, func = 0, quote = 0;
13919 else if (c ==
'~') {
13939 while ((c = nextc(p)) !=
term) {
13940 if (c == -1 || c ==
'\r' || c ==
'\n') {
13941 yyerror(
NULL, p,
"unterminated here document identifier");
13948 if (!parser_is_identchar(p)) {
13951 pushback(p, indent > 0 ?
'~' :
'-');
13957 int n = parser_precise_mbclen(p, p->
lex.
pcur-1);
13958 if (
n < 0)
return 0;
13960 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
13967 yyerror(
NULL, p,
"too long here document identifier");
13977 here->
quote = quote;
14005 dedent_string(
VALUE string,
int width)
14012 for (
i = 0;
i <
len && col < width;
i++) {
14013 if (
str[
i] ==
' ') {
14016 else if (
str[
i] ==
'\t') {
14018 if (
n > width)
break;
14039 NODE *node, *str_node, *prev_node;
14041 VALUE prev_lit = 0;
14043 if (indent <= 0)
return root;
14045 if (!root)
return root;
14047 prev_node = node = str_node = root;
14051 VALUE lit = str_node->nd_lit;
14053 dedent_string(lit, indent);
14058 else if (!literal_concat0(p, prev_lit, lit)) {
14062 NODE *end = node->nd_end;
14063 node = prev_node->nd_next = node->nd_next;
14069 node->nd_end = end;
14074 while ((node = (prev_node = node)->
nd_next) != 0) {
14077 if ((str_node = node->nd_head) != 0) {
14093 if (indent <= 0)
return array;
14095 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
14115 col = dedent_string(
input, wid);
14121 whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
14130 if (
n < 0)
return FALSE;
14131 if (
n > 0 &&
ptr[
len] !=
'\n') {
14146 case '\0':
case '\004':
case '\032':
return 1;
14151 #define NUM_SUFFIX_R (1<<0)
14152 #define NUM_SUFFIX_I (1<<1)
14153 #define NUM_SUFFIX_ALL 3
14159 const char *lastp = p->
lex.
pcur;
14161 while ((c = nextc(p)) != -1) {
14206 return set_number_literal(p,
v,
type, suffix);
14223 #define dispatch_heredoc_end(p) ((void)0)
14229 int c, func, indent = 0;
14230 const char *eos, *
ptr, *ptr_end;
14241 if ((c = nextc(p)) == -1) {
14265 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
14283 else if (whole_match_p(p, eos,
len, indent)) {
14297 if (ptr_end >
ptr) {
14298 switch (ptr_end[-1]) {
14300 if (--ptr_end ==
ptr || ptr_end[-1] !=
'\r') {
14311 while (
ptr +
i < ptr_end && parser_update_heredoc_indent(p,
ptr[
i]))
14325 if (nextc(p) == -1) {
14331 }
while (!whole_match_p(p, eos,
len, indent));
14337 int t = parser_peek_variable_name(p);
14351 if ((c = tokadd_string(p, func,
'\n', 0,
NULL, &
enc, &base_enc)) == -1) {
14367 tokadd(p, nextc(p));
14373 if ((c = nextc(p)) == -1)
goto error;
14374 }
while (!whole_match_p(p, eos,
len, indent));
14398 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator",
WARN_I(c));
14408 switch (id_type(lhs)) {
14413 yyerror0(
"formal argument cannot be a constant");
14416 yyerror0(
"formal argument cannot be an instance variable");
14419 yyerror0(
"formal argument cannot be a global variable");
14422 yyerror0(
"formal argument cannot be a class variable");
14425 yyerror0(
"formal argument must be local variable");
14429 lhs = dispatch1(param_error, lhs);
14434 shadowing_lvar(p, lhs);
14441 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
14450 if (
len > 5 &&
name[nlen =
len - 5] ==
'-') {
14454 if (
len > 4 &&
name[nlen =
len - 4] ==
'-') {
14490 for (
i = 0;
i <
n; ++
i) {
14502 while (
ptr < ptr_end) {
14513 magic_comment_encoding(
struct parser_params *p,
const char *
name,
const char *val)
14515 if (!comment_at_top(p)) {
14518 parser_set_encode(p, val);
14525 case 't':
case 'T':
14530 case 'f':
case 'F':
14541 parser_set_token_info(
struct parser_params *p,
const char *
name,
const char *val)
14543 int b = parser_get_bool(p,
name, val);
14548 parser_set_compile_option_flag(
struct parser_params *p,
const char *
name,
const char *val)
14557 b = parser_get_bool(p,
name, val);
14566 # if WARN_PAST_SCOPE
14568 parser_set_past_scope(
struct parser_params *p,
const char *
name,
const char *val)
14570 int b = parser_get_bool(p,
name, val);
14571 if (b >= 0) p->past_scope_enabled = b;
14582 {
"coding", magic_comment_encoding, parser_encode_length},
14583 {
"encoding", magic_comment_encoding, parser_encode_length},
14584 {
"frozen_string_literal", parser_set_compile_option_flag},
14585 {
"warn_indent", parser_set_token_info},
14586 # if WARN_PAST_SCOPE
14587 {
"warn_past_scope", parser_set_past_scope},
14591 static const char *
14592 magic_comment_marker(
const char *
str,
long len)
14599 if (
str[
i-1] ==
'*' &&
str[
i-2] ==
'-') {
14600 return str +
i + 1;
14605 if (
i + 1 >=
len)
return 0;
14606 if (
str[
i+1] !=
'-') {
14609 else if (
str[
i-1] !=
'-') {
14613 return str +
i + 2;
14629 const char *beg, *end, *vbeg, *vend;
14630 #define str_copy(_s, _p, _n) ((_s) \
14631 ? (void)(rb_str_resize((_s), (_n)), \
14632 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
14633 : (void)((_s) = STR_NEW((_p), (_n))))
14636 if (!!(beg = magic_comment_marker(
str,
len))) {
14637 if (!(end = magic_comment_marker(beg,
str +
len - beg)))
14641 len = end - beg - 3;
14653 case '\'':
case '"':
case ':':
case ';':
14660 case '\'':
case '"':
case ':':
case ';':
14671 if (!indicator)
return FALSE;
14679 if (*
str ==
'\\') {
14705 for (
i = 0;
i <
n; ++
i) {
14706 if (s[
i] ==
'-') s[
i] =
'_';
14718 }
while (++mc < magic_comments +
numberof(magic_comments));
14729 set_file_encoding(
struct parser_params *p,
const char *
str,
const char *send)
14732 const char *beg =
str;
14736 if (send -
str <= 6)
return;
14738 case 'C':
case 'c':
str += 6;
continue;
14739 case 'O':
case 'o':
str += 5;
continue;
14740 case 'D':
case 'd':
str += 4;
continue;
14741 case 'I':
case 'i':
str += 3;
continue;
14742 case 'N':
case 'n':
str += 2;
continue;
14743 case 'G':
case 'g':
str += 1;
continue;
14744 case '=':
case ':':
14757 if (++
str >= send)
return;
14760 if (*
str !=
'=' && *
str !=
':')
return;
14766 s =
rb_str_new(beg, parser_encode_length(p, beg,
str - beg));
14782 (
unsigned char)p->
lex.
pcur[0] == 0xbb &&
14783 (
unsigned char)p->
lex.
pcur[1] == 0xbf) {
14798 #define ambiguous_operator(tok, op, syn) ( \
14799 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
14800 rb_warning0("even though it seems like "syn""))
14802 #define ambiguous_operator(tok, op, syn) \
14803 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
14805 #define warn_balanced(tok, op, syn) ((void) \
14806 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
14807 space_seen && !ISSPACE(c) && \
14808 (ambiguous_operator(tok, op, syn), 0)), \
14809 (enum yytokentype)(tok))
14815 char *point = &
str[seen_point];
14816 size_t fraclen =
len-seen_point-1;
14817 memmove(point, point+1, fraclen+1);
14825 yyerror0(
"numeric literal without digits");
14826 if (
peek(p,
'_')) nextc(p);
14828 return set_integer_literal(p,
INT2FIX(0), 0);
14834 int is_float, seen_point, seen_e, nondigit;
14837 is_float = seen_point = seen_e = nondigit = 0;
14840 if (c ==
'-' || c ==
'+') {
14847 if (c ==
'x' || c ==
'X') {
14853 if (nondigit)
break;
14860 }
while ((c = nextc(p)) != -1);
14864 if (
toklen(p) == start) {
14865 return no_digits(p);
14867 else if (nondigit)
goto trailing_uc;
14871 if (c ==
'b' || c ==
'B') {
14874 if (c ==
'0' || c ==
'1') {
14877 if (nondigit)
break;
14881 if (c !=
'0' && c !=
'1')
break;
14884 }
while ((c = nextc(p)) != -1);
14888 if (
toklen(p) == start) {
14889 return no_digits(p);
14891 else if (nondigit)
goto trailing_uc;
14895 if (c ==
'd' || c ==
'D') {
14901 if (nondigit)
break;
14908 }
while ((c = nextc(p)) != -1);
14912 if (
toklen(p) == start) {
14913 return no_digits(p);
14915 else if (nondigit)
goto trailing_uc;
14923 if (c ==
'o' || c ==
'O') {
14926 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
14927 return no_digits(p);
14930 if (c >=
'0' && c <=
'7') {
14935 if (nondigit)
break;
14939 if (c < '0' || c >
'9')
break;
14940 if (c >
'7')
goto invalid_octal;
14943 }
while ((c = nextc(p)) != -1);
14944 if (
toklen(p) > start) {
14947 if (nondigit)
goto trailing_uc;
14956 if (c >
'7' && c <=
'9') {
14960 else if (c ==
'.' || c ==
'e' || c ==
'E') {
14966 return set_integer_literal(p,
INT2FIX(0), suffix);
14972 case '0':
case '1':
case '2':
case '3':
case '4':
14973 case '5':
case '6':
case '7':
case '8':
case '9':
14979 if (nondigit)
goto trailing_uc;
14980 if (seen_point || seen_e) {
14985 if (c0 == -1 || !
ISDIGIT(c0)) {
15010 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
15015 tokadd(p, nondigit);
15019 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
15023 if (nondigit)
goto decode_num;
15040 parser_show_error_line(p, &loc);
15050 v = parse_rational(p,
tok(p),
toklen(p), seen_point);
15060 return set_number_literal(p,
v,
type, suffix);
15084 int c2 = escaped_control_code(c);
15096 if (!parser_isascii(p)) {
15097 if (tokadd_mbchar(p, c) == -1)
return 0;
15102 const char *start = p->
lex.
pcur - 1, *
ptr = start;
15104 int n = parser_precise_mbclen(p,
ptr);
15105 if (
n < 0)
return -1;
15108 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
15109 " a conditional operator, put a space after `?'",
15114 else if (c ==
'\\') {
15115 if (
peek(p,
'u')) {
15118 tokadd_utf8(p, &enc, -1, 0, 0);
15122 if (tokadd_mbchar(p, c) == -1)
return 0;
15125 c = read_escape(p, 0, &enc);
15143 const char *ptok = p->
lex.
pcur;
15151 if (c == -1 || !
ISALNUM(c)) {
15158 yyerror0(
"unknown type of %string");
15162 if (c == -1 ||
term == -1) {
15163 compile_error(p,
"unterminated quoted string meets end of file");
15213 yyerror0(
"unknown type of %string");
15217 if ((c = nextc(p)) ==
'=') {
15234 if (tokadd_mbchar(p, c) == -1)
return -1;
15236 }
while (parser_is_identchar(p));
15257 const unsigned long nth_ref_max =
15258 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
15262 if (overflow ||
n > nth_ref_max) {
15285 if (parser_is_identchar(p)) {
15317 if (parser_is_identchar(p)) {
15318 if (tokadd_mbchar(p, c) == -1)
return 0;
15341 case '1':
case '2':
case '3':
15342 case '4':
case '5':
case '6':
15343 case '7':
case '8':
case '9':
15348 }
while (c != -1 &&
ISDIGIT(c));
15356 if (!parser_is_identchar(p)) {
15359 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
15363 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
15365 parser_show_error_line(p, &loc);
15374 if (tokadd_ident(p, c))
return 0;
15376 tokenize_ident(p, last_state);
15384 if (
n < 0)
return false;
15397 while (
n > args->
pos) {
15409 register int c = nextc(p);
15421 if (c == -1 || !parser_is_identchar(p)) {
15424 if (result ==
tIVAR) {
15425 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
15428 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
15430 parser_show_error_line(p, &loc);
15438 if (result ==
tIVAR) {
15439 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
15442 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
15444 parser_show_error_line(p, &loc);
15450 if (tokadd_ident(p, c))
return 0;
15451 tokenize_ident(p, last_state);
15465 if (tokadd_mbchar(p, c) == -1)
return 0;
15467 }
while (parser_is_identchar(p));
15468 if ((c ==
'!' || c ==
'?') && !
peek(p,
'=')) {
15519 if (kw->
id[0] != kw->
id[1])
15534 else if (p->
lex.
state == EXPR_FNAME) {
15541 ident = tokenize_ident(p, last_state);
15545 lvar_defined(p, ident)) {
15555 int space_seen = 0;
15559 int fallthru =
FALSE;
15579 switch (c = nextc(p)) {
15587 case ' ':
case '\t':
case '\f':
case '\r':
15591 while ((c = nextc(p))) {
15593 case ' ':
case '\t':
case '\f':
case '\r':
15610 if (comment_at_top(p)) {
15620 c = (
IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
15628 goto normal_newline;
15633 switch (c = nextc(p)) {
15634 case ' ':
case '\t':
case '\f':
case '\r':
15645 if (
peek(p,
'.') == (c ==
'&')) {
15667 goto normal_newline;
15676 if ((c = nextc(p)) ==
'*') {
15677 if ((c = nextc(p)) ==
'=') {
15684 rb_warning0(
"`**' interpreted as argument prefix");
15702 rb_warning0(
"`*' interpreted as argument prefix");
15738 if (word_match_p(p,
"begin", 5)) {
15739 int first_p =
TRUE;
15754 if (c ==
'=' && word_match_p(p,
"end", 3)) {
15766 if ((c = nextc(p)) ==
'=') {
15767 if ((c = nextc(p)) ==
'=') {
15776 else if (c ==
'>') {
15788 int token = heredoc_identifier(p);
15800 if ((c = nextc(p)) ==
'>') {
15807 if ((c = nextc(p)) ==
'=') {
15820 if ((c = nextc(p)) ==
'=') {
15824 if ((c = nextc(p)) ==
'=') {
15863 return parse_qmark(p, space_seen);
15866 if ((c = nextc(p)) ==
'&') {
15868 if ((c = nextc(p)) ==
'=') {
15876 else if (c ==
'=') {
15881 else if (c ==
'.') {
15890 !(c ==
'\'' || c ==
'"' ||
15892 rb_warning0(
"`&' interpreted as argument prefix");
15906 if ((c = nextc(p)) ==
'|') {
15908 if ((c = nextc(p)) ==
'=') {
15949 return parse_numeric(p,
'+');
15991 if ((c = nextc(p)) ==
'.') {
15992 if ((c = nextc(p)) ==
'.') {
15994 rb_warn0(
"... at EOL, should be parenthesized?");
16004 parse_numeric(p,
'.');
16006 yyerror0(
"unexpected fraction part after numeric literal");
16009 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
16020 case '0':
case '1':
case '2':
case '3':
case '4':
16021 case '5':
case '6':
case '7':
case '8':
case '9':
16022 return parse_numeric(p, c);
16083 if ((c = nextc(p)) ==
'=') {
16090 arg_ambiguous(p,
'/');
16098 if ((c = nextc(p)) ==
'=') {
16118 if ((c = nextc(p)) !=
'@') {
16132 else if (!space_seen) {
16139 rb_warning0(
"parentheses after method name is interpreted as "
16140 "an argument list, not a decomposed argument");
16151 if ((c = nextc(p)) ==
']') {
16153 if ((c = nextc(p)) ==
'=') {
16205 if (c ==
' ')
return tSP;
16211 return parse_percent(p, space_seen, last_state);
16214 return parse_gvar(p, last_state);
16217 return parse_atmark(p, last_state);
16220 if (
was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
16235 if (!parser_is_identchar(p)) {
16236 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
16245 return parse_ident(p, c, cmd_state);
16255 t = parser_yylex(p);
16269 #define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
16278 nd_set_loc(
n, loc);
16293 nodetype(
NODE *node)
16299 nodeline(
NODE *node)
16305 newline_node(
NODE *node)
16308 node = remove_begin(node);
16337 NODE *end, *
h = head, *nd;
16339 if (tail == 0)
return head;
16341 if (
h == 0)
return tail;
16349 parser_warning(p,
h,
"unused literal ignored");
16369 parser_warning(p, tail,
"statement not reached");
16379 tail->nd_end = tail;
16381 end->nd_next = tail;
16382 h->nd_end = tail->nd_end;
16394 if (
list->nd_next) {
16401 list->nd_alen += 1;
16403 list->nd_next->nd_end =
last->nd_next;
16412 list_concat(
NODE *head,
NODE *tail)
16416 if (head->nd_next) {
16417 last = head->nd_next->nd_end;
16423 head->nd_alen += tail->nd_alen;
16424 last->nd_next = tail;
16425 if (tail->nd_next) {
16426 head->nd_next->nd_end = tail->nd_next->nd_end;
16429 head->nd_next->nd_end = tail;
16440 if (
NIL_P(tail))
return 1;
16442 compile_error(p,
"string literal encodings differ (%s / %s)",
16461 if (!head)
return tail;
16462 if (!tail)
return head;
16468 head = list_append(p, node, head);
16476 return list_append(p, head, tail);
16483 if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
16486 lit = headlast->nd_lit;
16489 lit = head->nd_lit;
16492 if (!literal_concat0(p, lit, tail->nd_lit)) {
16494 rb_discard_node(p, head);
16495 rb_discard_node(p, tail);
16498 rb_discard_node(p, tail);
16501 list_append(p, head, tail);
16507 if (!literal_concat0(p, head->nd_lit, tail->nd_lit))
16509 tail->nd_lit = head->nd_lit;
16510 rb_discard_node(p, head);
16513 else if (
NIL_P(tail->nd_lit)) {
16515 head->nd_alen += tail->nd_alen - 1;
16516 head->nd_next->nd_end->nd_next = tail->nd_next;
16517 head->nd_next->nd_end = tail->nd_next->nd_end;
16518 rb_discard_node(p, tail);
16520 else if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
16522 lit = headlast->nd_lit;
16523 if (!literal_concat0(p, lit, tail->nd_lit))
16525 tail->nd_lit =
Qnil;
16538 list_append(p, head, tail);
16550 node = list_append(p, dstr, node);
16603 if (block) block_dup_check(p, args, block);
16604 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
16605 if (block) ret = method_add_block(p, ret, block, loc);
16610 #define nd_once_body(node) (nd_type(node) == NODE_ONCE ? (node)->nd_body : node)
16615 int line = op_loc->beg_pos.lineno;
16630 const VALUE lit =
n->nd_lit;
16632 match->nd_args = reg_named_capture_assign(p, lit, loc);
16657 # if WARN_PAST_SCOPE
16663 if (vtable_included(past,
id))
return 1;
16672 #define WARN_LOCATION(type) do { \
16673 if (p->warn_location) { \
16675 VALUE file = rb_source_location(&line); \
16676 rb_warn3(type" in eval may not return location in binding;" \
16677 " use Binding#source_location instead\n" \
16678 "%"PRIsWARN":%d: warning: in `%"PRIsWARN"'", \
16679 file, WARN_I(line), rb_id2str(rb_frame_this_func())); \
16692 "%s:%d: %s block here",
16694 outer ?
"outer" :
"inner");
16695 parser_show_error_line(p, &
used->nd_loc);
16736 switch (id_type(
id)) {
16738 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
16748 if (local_id_ref(p,
id, &vidp)) {
16759 if (numparam_nested_p(p))
return 0;
16765 # if WARN_PAST_SCOPE
16786 opt_arg_append(
NODE *opt_list,
NODE *opt)
16788 NODE *opts = opt_list;
16791 while (opts->nd_next) {
16792 opts = opts->nd_next;
16795 opts->nd_next = opt;
16801 kwd_append(
NODE *kwlist,
NODE *kw)
16804 NODE *kws = kwlist;
16806 while (kws->nd_next) {
16807 kws = kws->nd_next;
16831 return list_append(p, symbols, symbol);
16850 nd_set_loc(node, loc);
16861 nd_set_loc(node, loc);
16863 if (!
NIL_P(node->nd_lit)) reg_fragment_check(p, node->nd_lit, options);
16867 if (reg_fragment_check(p, tail, options) &&
prev && !
NIL_P(
prev->nd_lit)) {
16869 if (!literal_concat0(p, lit, tail)) {
16874 rb_discard_node(p,
list->nd_head);
16875 rb_discard_node(p,
list);
16886 if (!node->nd_next) {
16918 nd_set_loc(node, loc);
16922 nd_set_loc(node, loc);
16939 if (lit ==
Qundef)
return;
16949 if (!
NIL_P(line)) {
16950 rb_warning1(
"duplicated `when' clause with line %d is ignored",
16967 if (dyna_in_block(p)) {
16970 if (local_id(p,
id))
return 1;
16984 if (ripper_is_node_yylval(re)) {
16986 re =
RNODE(re)->nd_rval;
16988 if (ripper_is_node_yylval(opt)) {
16989 options = (
int)
RNODE(opt)->nd_tag;
16990 opt =
RNODE(opt)->nd_rval;
16995 return dispatch2(regexp_literal, re, opt);
17001 static const char rb_parser_lex_state_names[][8] = {
17002 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
17003 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
17004 "LABEL",
"LABELED",
"FITEM",
17011 unsigned int mask = 1;
17012 static const char none[] =
"NONE";
17015 if ((
unsigned)state &
mask) {
17049 append_lex_state_name(from, mesg);
17051 append_lex_state_name(to, mesg);
17078 const char *
name,
int line)
17081 append_bitstack_value(stack, mesg);
17099 append_lex_state_name(p->
lex.
state, mesg);
17120 yylloc->beg_pos.lineno = sourceline;
17121 yylloc->beg_pos.column = beg_pos;
17122 yylloc->end_pos.lineno = sourceline;
17123 yylloc->end_pos.column = end_pos;
17159 v = valp->
node->nd_rval;
17166 v = valp->
node->nd_lit;
17194 if (!
id)
return -1;
17197 *
err =
"Can't change the value of self";
17200 *
err =
"Can't assign to nil";
17203 *
err =
"Can't assign to true";
17206 *
err =
"Can't assign to false";
17209 *
err =
"Can't assign to __FILE__";
17212 *
err =
"Can't assign to __LINE__";
17215 *
err =
"Can't assign to __ENCODING__";
17218 switch (id_type(
id)) {
17220 if (dyna_in_block(p)) {
17233 if (!local_id(p,
id)) local_var(p,
id);
17241 *
err =
"dynamic constant assignment";
17254 const char *
err = 0;
17272 const char *
err = 0;
17274 if (
err) lhs = assign_error(p, lhs);
17280 is_private_local_id(
ID name)
17293 if (is_private_local_id(
name))
return 1;
17294 if (dyna_in_block(p)) {
17295 if (dvar_curr(p,
name)) {
17296 yyerror0(
"duplicated argument name");
17298 else if (dvar_defined(p,
name) || local_id(p,
name)) {
17307 if (local_id(p,
name)) {
17308 yyerror0(
"duplicated argument name");
17317 shadowing_lvar_0(p,
name);
17330 if (!shadowing_lvar_0(p,
name))
return;
17364 compile_error(p,
"Can't set variable $%c", (
int)node->nd_nth);
17375 return list_append(p, node1, node2);
17377 node1->nd_head = arg_append(p, node1->nd_head, node2, loc);
17381 node1->nd_body = list_append(p,
NEW_LIST(node1->nd_body, &node1->nd_body->
nd_loc), node2);
17387 node1->nd_body = list_append(p, node1->nd_body, node2);
17397 if (!node2)
return node1;
17400 if (node1->nd_head)
17401 node1->nd_head = arg_concat(p, node1->nd_head, node2, loc);
17403 node1->nd_head =
NEW_LIST(node2, loc);
17407 node1->nd_body = list_concat(
NEW_LIST(node1->nd_body, loc), node2);
17413 node1->nd_body = list_concat(node1->nd_body, node2);
17423 if ((n1 = splat_array(
args)) != 0) {
17424 return list_append(p, n1, last_arg);
17426 return arg_append(p,
args, last_arg, loc);
17434 return list_concat(n1, rest_arg);
17436 return arg_concat(p,
args, rest_arg, loc);
17440 splat_array(
NODE* node)
17454 if (local_id_ref(p, rhs->nd_vid, &vidp)) {
17460 if (dvar_defined_ref(p, rhs->nd_vid, &vidp)) {
17466 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
17467 mark_lvar_used(p, rhs->nd_head);
17477 if (!lhs)
return 0;
17488 lhs->nd_value = rhs;
17489 nd_set_loc(lhs, loc);
17493 lhs->nd_args = arg_append(p, lhs->nd_args, rhs, loc);
17494 nd_set_loc(lhs, loc);
17508 NODE *void_node = 0, *vn;
17520 return void_node ? void_node : node;
17527 if (node->nd_body->nd_body) {
17531 return void_node ? void_node : node;
17534 while (node->nd_next) {
17535 node = node->nd_next;
17537 node = node->nd_head;
17541 node = node->nd_body;
17546 if (!node->nd_body) {
17549 else if (!node->nd_else) {
17552 vn = value_expr_check(p, node->nd_body);
17553 if (!vn)
return NULL;
17554 if (!void_node) void_node = vn;
17555 node = node->nd_else;
17560 node = node->nd_1st;
17567 mark_lvar_used(p, node);
17581 NODE *void_node = value_expr_check(p, node);
17592 const char *useless = 0;
17599 switch (node->nd_mid) {
17630 useless =
"a variable";
17633 useless =
"a constant";
17639 useless =
"a literal";
17664 useless =
"defined?";
17676 NODE *
const n = node;
17678 if (!node)
return n;
17681 while (node->nd_next) {
17682 void_expr(p, node->nd_head);
17683 node = node->nd_next;
17689 remove_begin(
NODE *node)
17691 NODE **
n = &node, *n1 = node;
17693 *
n = n1 = n1->nd_body;
17699 remove_begin_all(
NODE *node)
17701 NODE **
n = &node, *n1 = node;
17703 *
n = n1 = n1->nd_body;
17711 NODE *node = *body;
17717 #define subnodes(n1, n2) \
17718 ((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
17719 (!node->n2) ? (body = &node->n1, 1) : \
17720 (reduce_nodes(p, &node->n1), body = &node->n2, 1))
17730 *body = node = node->nd_stts;
17734 *body = node = node->nd_body;
17738 body = &node->nd_end->nd_head;
17745 body = &node->nd_body;
17754 if (node->nd_else) {
17755 body = &node->nd_resq;
17771 is_static_content(
NODE *node)
17773 if (!node)
return 1;
17776 if (!(node = node->nd_head))
break;
17779 if (!is_static_content(node->nd_head))
return 0;
17780 }
while ((node = node->nd_next) != 0);
17810 if (!node->nd_value)
return 1;
17811 if (is_static_content(node->nd_value)) {
17813 parser_warn(p, node->nd_value,
"found `= literal' in conditional, should be ==");
17824 #define SWITCH_BY_COND_TYPE(t, w, arg) \
17826 case COND_IN_OP: break; \
17827 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
17828 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
17838 if (node == 0)
return 0;
17843 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
17852 if (node == 0)
return 0;
17854 assign_in_cond(p, node);
17907 if (node == 0)
return 0;
17914 if (node == 0)
return 0;
17921 if (!
cc)
return right;
17923 return newline_node(
NEW_IF(
cc, left, right, loc));
17929 if (!
cc)
return right;
17931 return newline_node(
NEW_UNLESS(
cc, left, right, loc));
17942 NODE *node = left, *second;
17947 nd_set_line(node->nd_2nd, op_loc->beg_pos.lineno);
17968 no_blockarg(p, node);
17970 if (node->nd_next == 0) {
17971 node = node->nd_head;
17984 if (node) no_blockarg(p, node);
18028 arg_blk_pass(
NODE *node1,
NODE *node2)
18031 if (!node1)
return node2;
18032 node2->nd_head = node1;
18043 if (
args->pre_args_num)
return false;
18044 if (
args->post_args_num)
return false;
18045 if (
args->rest_arg)
return false;
18046 if (
args->opt_args)
return false;
18047 if (
args->block_arg)
return false;
18048 if (
args->kw_args)
return false;
18049 if (
args->kw_rest_arg)
return false;
18060 args->
pre_init = pre_args ? pre_args->nd_next : 0;
18063 args->
post_init = post_args ? post_args->nd_next : 0;
18073 nd_set_loc(tail, loc);
18085 rb_imemo_tmpbuf_set_ptr(tmpbuf, args);
18086 args->
imemo = tmpbuf;
18101 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
18103 NODE *kwn = kw_args;
18105 vtable_pop(vtargs, !!block + !!kw_rest_arg);
18106 required_kw_vars = kw_vars = &vtargs->
tbl[vtargs->
pos];
18110 --required_kw_vars;
18111 kwn = kwn->nd_next;
18114 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
18115 ID vid = kwn->nd_body->nd_vid;
18117 *required_kw_vars++ = vid;
18124 arg_var(p, kw_bits);
18125 if (kw_rest_arg) arg_var(p, kw_rest_arg);
18126 if (block) arg_var(p, block);
18131 else if (kw_rest_arg ==
idNil) {
18134 else if (kw_rest_arg) {
18146 if (!args) args = new_args_tail(p, 0, 0, 0, 0);
18147 args->nd_ainfo->pre_args_num = max_numparam;
18157 aryptn->nd_pconst = constant;
18178 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
18180 apinfo->
imemo = tmpbuf;
18206 hshptn->nd_pconst = constant;
18214 NODE *node, *kw_rest_arg_node;
18216 if (kw_rest_arg ==
idNil) {
18219 else if (kw_rest_arg) {
18220 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
18223 kw_rest_arg_node =
NULL;
18238 rb_warn0L(
nd_line(node),
"Pattern matching is experimental, and the behavior may change in future versions of Ruby!");
18254 nd_set_loc(node, loc);
18257 lit = node->nd_lit;
18260 nd_set_loc(node, loc);
18275 node->nd_next->nd_end = node->nd_next;
18276 node->nd_next->nd_next = 0;
18278 list_concat(*result, node);
18290 while (hash && hash->nd_head && hash->nd_next) {
18291 NODE *head = hash->nd_head;
18292 NODE *value = hash->nd_next;
18293 NODE *next = value->nd_next;
18297 st_lookup(literal_keys, (
key = head->nd_lit), &data)) {
18299 "key %+"PRIsVALUE" is duplicated and overwritten on line %d",
18300 head->nd_lit,
nd_line(head));
18301 head = ((
NODE *)data)->nd_next;
18302 head->nd_head = block_append(p, head->nd_head, value->nd_head);
18312 if (!result) result = hash;
18313 else list_concat(result, hash);
18322 if (hash) hash = remove_duplicate_keys(p, hash);
18330 if (is_private_local_id(
id)) {
18334 yyerror1(loc,
"duplicated variable name");
18348 yyerror1(loc,
"duplicated key name");
18369 ID vid = lhs->nd_vid;
18372 lhs->nd_value = rhs;
18373 nd_set_loc(lhs, loc);
18376 switch (id_type(vid)) {
18380 asgn->nd_aid = vid;
18384 else if (op ==
tANDOP) {
18385 lhs->nd_value = rhs;
18386 nd_set_loc(lhs, loc);
18392 nd_set_loc(asgn, loc);
18412 args = arg_concat(p, args, rhs, loc);
18449 yyerror1(loc,
"dynamic constant assignment");
18458 path = dispatch1(assign_error,
path);
18467 a = dispatch1(assign_error, a);
18475 return ripper_new_yylval(p,
get_id(a), dispatch1(var_field, a), 0);
18483 NODE *result = head;
18485 NODE *tmp = rescue_else ? rescue_else : rescue;
18488 result =
NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
18491 else if (rescue_else) {
18492 result = block_append(p, result, rescue_else);
18497 fixpos(result, head);
18507 if (!local->
used)
return;
18515 for (
int i = 0;
i <
cnt; ++
i) {
18517 if (is_private_local_id(
v[
i]))
continue;
18536 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
18543 # if WARN_PAST_SCOPE
18556 warn_unused_var(p, p->
lvtbl);
18559 # if WARN_PAST_SCOPE
18560 while (p->
lvtbl->past) {
18578 int cnt_args = vtable_size(p->
lvtbl->
args);
18579 int cnt_vars = vtable_size(p->
lvtbl->
vars);
18580 int cnt = cnt_args + cnt_vars;
18585 if (
cnt <= 0)
return 0;
18588 rb_imemo_tmpbuf_set_ptr(
tbl,
buf);
18591 for (
i = 0, j = cnt_args+1;
i < cnt_vars; ++
i) {
18593 if (!vtable_included(p->
lvtbl->
args,
id)) {
18599 rb_imemo_tmpbuf_set_ptr(
tbl,
buf);
18625 rb_warn1(
"`_%d' is reserved for numbered parameter; consider another name",
18632 numparam_name(p,
id);
18639 numparam_name(p,
id);
18658 if (used) used = used->
prev;
18664 else if (vtable_included(args,
id)) {
18668 int i = vtable_included(
vars,
id);
18669 if (
i && used && vidrefp) *vidrefp = &used->
tbl[
i-1];
18677 return local_id_ref(p,
id,
NULL);
18722 static const struct vtable *
18736 struct vtable *tmp = *vtblp;
18737 *vtblp = tmp->
prev;
18738 # if WARN_PAST_SCOPE
18739 if (p->past_scope_enabled) {
18741 p->
lvtbl->past = tmp;
18754 warn_unused_var(p, p->
lvtbl);
18793 if (vtable_included(args,
id)) {
18796 if ((
i = vtable_included(
vars,
id)) != 0) {
18797 if (used && vidrefp) *vidrefp = &used->
tbl[
i-1];
18802 if (!vidrefp) used = 0;
18803 if (used) used = used->
prev;
18816 return dvar_defined_ref(p,
id,
NULL);
18822 return (vtable_included(p->
lvtbl->
args,
id) ||
18830 "regexp encoding option '%c' differs from source encoding '%s'",
18876 if (c) reg_fragment_enc_error(p,
str, c);
18883 reg_fragment_setenc(p,
str, options);
18902 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
18908 const char *s = (
const char *)
name;
18920 succ =
arg->succ_block;
18922 succ = block_append(p, succ, node);
18923 arg->succ_block = succ;
18934 arg.succ_block = 0;
18938 if (!
arg.succ_block)
return 0;
18939 return arg.succ_block->nd_next;
18945 reg_fragment_setenc(p,
str, options);
18962 re = parser_reg_compile(p,
str, options);
18979 if (c) reg_fragment_enc_error(p,
str, c);
19012 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
19013 const YYLTYPE *
const LOC = &default_location;
19019 node = block_append(p, node, print);
19029 node = block_append(p, split, node);
19034 node = block_append(p, chomp, node);
19054 const ID max_id = RB_ID_SERIAL_MAX & ~0xffff;
19070 p->delayed.token =
Qnil;
19072 p->parsing_thread =
Qnil;
19082 #define parser_mark ripper_parser_mark
19083 #define parser_free ripper_parser_free
19087 parser_mark(
void *
ptr)
19117 parser_free(
void *
ptr)
19125 for (local = p->
lvtbl; local; local =
prev) {
19141 parser_memsize(
const void *
ptr)
19145 size_t size =
sizeof(*p);
19148 for (local = p->
lvtbl; local; local = local->
prev) {
19149 size +=
sizeof(*local);
19170 #undef rb_reserved_word
19175 return reserved_word(
str,
len);
19183 &parser_data_type, p);
19184 parser_initialize(p);
19201 #define rb_parser_end_seen_p ripper_parser_end_seen_p
19202 #define rb_parser_encoding ripper_parser_encoding
19203 #define rb_parser_get_yydebug ripper_parser_get_yydebug
19204 #define rb_parser_set_yydebug ripper_parser_set_yydebug
19205 #define rb_parser_get_debug_output ripper_parser_get_debug_output
19206 #define rb_parser_set_debug_output ripper_parser_set_debug_output
19207 static VALUE ripper_parser_end_seen_p(
VALUE vparser);
19208 static VALUE ripper_parser_encoding(
VALUE vparser);
19209 static VALUE ripper_parser_get_yydebug(
VALUE self);
19211 static VALUE ripper_parser_get_debug_output(
VALUE self);
19212 static VALUE ripper_parser_set_debug_output(
VALUE self,
VALUE output);
19221 ripper_error_p(
VALUE vparser)
19268 rb_parser_get_yydebug(
VALUE self)
19325 #define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
19328 #define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
19329 #define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
19330 (new)->cnt = (cnt), (ptr))
19360 if (
n->ptr ==
ptr) {
19362 if (
n->cnt)
n->cnt =
cnt;
19365 }
while ((
n =
n->next) !=
NULL);
19377 while ((
n = *prev) !=
NULL) {
19378 if (
n->ptr ==
ptr) {
19423 count_char(
const char *
str,
int c)
19426 while (
str[
n] == c) ++
n;
19440 if (*yystr ==
'"') {
19441 size_t yyn = 0, bquote = 0;
19442 const char *yyp = yystr;
19448 bquote = count_char(yyp+1,
'`') + 1;
19449 if (yyres)
memcpy(&yyres[yyn], yyp, bquote);
19457 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
19458 if (yyres)
memcpy(yyres + yyn, yyp, bquote);
19464 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
19465 if (yyres)
memcpy(yyres + yyn, yyp, 3);
19470 goto do_not_strip_quotes;
19473 goto do_not_strip_quotes;
19476 if (*++yyp !=
'\\')
19477 goto do_not_strip_quotes;
19493 do_not_strip_quotes: ;
19496 if (!yyres)
return strlen(yystr);
19498 return (
YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
19503 #ifdef RIPPER_DEBUG
19508 if (x ==
Qfalse)
return x;
19509 if (x ==
Qtrue)
return x;
19510 if (x ==
Qnil)
return x;
19528 x = ((
NODE *)x)->nd_rval;
19542 #define validate(x) ((x) = get_value(x))
19571 return rb_funcall(p->value, mid, 3, a, b, c);
19581 return rb_funcall(p->value, mid, 4, a, b, c, d);
19592 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
19605 return rb_funcall(p->value, mid, 7, a, b, c, d, e,
f, g);
19614 if (
nd_type(nd) != NODE_RIPPER)
return 0;
19619 ripper_get_value(
VALUE v)
19626 return nd->nd_rval;
19654 "gets returned %"PRIsVALUE" (expected String or nil)",
19671 &parser_data_type, p);
19676 #define ripper_initialized_p(r) ((r)->lex.input != 0)
19697 p->
lex.
gets = ripper_lex_io_get;
19700 p->
lex.
gets = ripper_lex_get_generic;
19708 if (
NIL_P(fname)) {
19716 parser_initialize(p);
19726 ripper_parse0(
VALUE parser_v)
19733 ripper_yyparse((
void*)p);
19740 ripper_ensure(
VALUE parser_v)
19745 p->parsing_thread =
Qnil;
19756 ripper_parse(
VALUE self)
19761 if (!ripper_initialized_p(p)) {
19764 if (!
NIL_P(p->parsing_thread)) {
19771 rb_ensure(ripper_parse0,
self, ripper_ensure,
self);
19784 ripper_column(
VALUE self)
19790 if (!ripper_initialized_p(p)) {
19793 if (
NIL_P(p->parsing_thread))
return Qnil;
19805 ripper_filename(
VALUE self)
19810 if (!ripper_initialized_p(p)) {
19824 ripper_lineno(
VALUE self)
19829 if (!ripper_initialized_p(p)) {
19832 if (
NIL_P(p->parsing_thread))
return Qnil;
19843 ripper_state(
VALUE self)
19848 if (!ripper_initialized_p(p)) {
19851 if (
NIL_P(p->parsing_thread))
return Qnil;
19862 ripper_token(
VALUE self)
19868 if (!ripper_initialized_p(p)) {
19871 if (
NIL_P(p->parsing_thread))
return Qnil;
19877 #ifdef RIPPER_DEBUG
19912 ripper_init_eventids1();
19913 ripper_init_eventids2();
19925 InitVM_ripper(
void)
19947 #ifdef RIPPER_DEBUG
19958 <% @exprs.each
do |expr, desc| -%>
19962 ripper_init_eventids1_table(Ripper);
19963 ripper_init_eventids2_table(Ripper);